/* Physical, decorative details. The rack remains the only foreground hit target. */
.season-layer{position:absolute;inset:0;z-index:6;pointer-events:none;user-select:none}
.season-layer *{pointer-events:none}
.season-prop{position:absolute;object-fit:contain;height:auto;filter:drop-shadow(4px 7px 4px #3e392527);transform-origin:50% 100%;animation:season-arrive 1s ease-out both}
.christmas-tree{width:29%;left:-14.5%;bottom:3.3%}
.harvest-crate{width:21%;left:-7%;bottom:3%}
.season-garland{position:absolute;left:12%;width:76%;top:18.2%;height:4.7%;overflow:visible;filter:drop-shadow(0 2px 1px #0006)}
.season-bulb{filter:drop-shadow(0 0 2px #ffe29d);animation:season-glow 4.5s ease-in-out var(--delay) infinite alternate}
.season-hangers{position:absolute;top:18.1%;left:13.4%;width:73.2%;display:flex;justify-content:space-around;filter:drop-shadow(0 2px 1px #372d2938)}
.season-hangers:before{content:'';position:absolute;top:0;left:0;right:0;height:6px;border-top:1px solid #7d6a46;border-radius:50%}
.season-hanger{position:relative;width:5.2%;max-width:30px;display:flex;align-items:center;flex-direction:column;transform-origin:top center;animation:season-sway 7s ease-in-out calc(var(--i) * -1.3s) infinite alternate}
.season-hanger>span{display:block;height:var(--cord);width:1px;background:#8c7550}
.season-hanger>svg{width:100%;overflow:visible}
.season-drift{position:absolute;inset:6% -1% 4%;overflow:hidden;contain:strict;mask-image:linear-gradient(transparent,#000 10%,#000 87%,transparent);-webkit-mask-image:linear-gradient(transparent,#000 10%,#000 87%,transparent)}
.season-particle{position:absolute;left:var(--x);top:-20px;width:var(--size);height:var(--size);animation:season-fall var(--duration) linear var(--delay) infinite;opacity:0}
.season-particle.snow{background:#dfebe7;border-radius:50%;box-shadow:0 0 3px #d2e2dd;opacity:.8}
.season-particle.confetti{background:#b99c60;border-radius:1px;max-width:4px;max-height:8px}
.season-particle.confetti:nth-child(3n){background:#943f33}
.season-particle>svg{width:100%;height:100%}
.season-layer[data-paused=true] *,.season-layer[data-paused=true] .season-bulb,body:has(dialog[open]) .season-layer *{animation-play-state:paused!important}
.season-layer[data-paused=true] .season-drift{visibility:hidden}
.season-layer[data-paused=true] .season-prop{animation:none}
.season-preview-notice{display:flex;justify-content:center;align-items:center;gap:12px;font-size:10px;color:#7b735d;margin:-10px 0 21px}
.season-preview-notice[hidden]{display:none}
.season-preview-notice button{background:none;border:0;border-bottom:1px solid #b3a78c;padding:2px 0;font-size:10px}
.season-dialog{width:min(480px,calc(100vw - 36px));height:fit-content;border-radius:3px}
.season-dialog .dialog-header{padding:20px 24px}
.season-dialog .dialog-header h2{font-size:20px}
.season-settings-body{padding:6px 26px 27px}
.season-settings-body>p{font-size:13px;line-height:1.65;color:#6b7366}
.season-settings-body label{display:block;font-size:11px;margin-top:23px;margin-bottom:9px;font-weight:bold}
.season-settings-body select{display:block;width:100%;padding:12px 10px;border:1px solid #b6bfab;background:#fffef9;color:#304332;border-radius:2px;font-size:13px}
.season-settings-body #season-status{font-size:11px;min-height:38px}
.season-settings-body .button-secondary{width:100%;font-size:11px}
.season-settings-body .season-fineprint{font-size:10px;margin:16px 0 0}
@keyframes season-sway{from{transform:rotate(-3deg)}to{transform:rotate(3deg)}}
@keyframes season-glow{from{opacity:.65}to{opacity:1}}
@keyframes season-arrive{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:translateY(0)}}
@keyframes season-fall{0%{transform:translate3d(0,0,0) rotate(0);opacity:0}12%{opacity:.8}85%{opacity:.6}100%{transform:translate3d(var(--drift),750px,0) rotate(130deg);opacity:0}}
@media(max-width:900px) and (min-width:601px){.christmas-tree{width:21%;left:-6%}.harvest-crate{width:18%;left:-3%}}
@media(max-width:600px){
  .christmas-tree{width:15%;left:-.3%;bottom:3.5%}
  .harvest-crate{width:14.4%;left:-.1%;bottom:3.5%}
  .season-garland{top:calc((100vw - 14px)*.182);height:calc((100vw - 14px)*.047)}
  .season-hangers{top:calc((100vw - 14px)*.181)}
  .season-hanger{width:5%;max-width:18px}
  .season-hanger>span{height:calc(var(--cord)*.4)}
  .season-drift{inset:4% 0 4%}
  .season-preview-notice{font-size:9px;margin-top:-9px}
  .season-dialog{margin:auto;max-height:calc(100dvh - 36px)}
  .season-dialog .dialog-header{padding:17px 20px}
  .season-dialog .dialog-header h2{font-size:18px}
  footer{row-gap:14px}footer>div{gap:7px}
}
@media(prefers-reduced-motion:reduce){.season-layer *{animation:none!important}.season-drift{display:none}}
