/* Calendar decoration stays separate from the city geometry and brand palette. */
.season-scene{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}.season-branch{position:absolute;right:-12px;top:-20px;width:clamp(240px,31vw,490px);aspect-ratio:1.5;background:url('/assets/seasons-v16.webp') 100% 0/200% 200% no-repeat;transform-origin:100% 0;animation:seasonSway 13s ease-in-out infinite alternate;filter:drop-shadow(0 4px 8px #193e4910)}[data-season=spring] .season-branch{background-position:0 0}[data-season=winter] .season-branch{background-position:0 100%}[data-holiday=christmas] .season-branch{background-position:100% 100%}[data-season=summer] .season-scene{display:none}.season-scene i{position:absolute;top:-25px;left:calc(48% + var(--i)*4.4%);width:8px;height:12px;background:#c4672b;border-radius:80% 0 70% 10%;opacity:0;animation:seasonFall calc(14s + var(--i)*.8s) calc(var(--i)*-2.9s) linear infinite}.season-scene i:nth-child(3n){background:#dca13c;width:6px;height:9px}[data-season=spring] .season-scene i{background:#eab4c2;border-radius:80% 15% 70% 30%;width:7px;height:10px}[data-season=winter] .season-scene i{background:#fff;border-radius:50%;width:4px;height:4px;box-shadow:0 0 4px #fff7}.city-hero[data-mood=night] .season-branch{filter:brightness(.6)}[data-holiday=christmas] .city-hero[data-mood=night] .season-branch{filter:brightness(.85)}.scene-paused .season-scene *{animation-play-state:paused!important}@keyframes seasonSway{from{rotate:-1deg}to{rotate:1deg}}@keyframes seasonFall{0%{transform:translate3d(30px,-10px,0) rotate(0);opacity:0}10%{opacity:.65}80%{opacity:.55}100%{transform:translate3d(-150px,650px,0) rotate(290deg);opacity:0}}
@media(max-width:600px){.season-branch{width:230px;right:-45px;top:-10px;opacity:.8}.season-scene i{left:calc(60% + var(--i)*3.3%);width:5px;height:8px}.season-scene i:nth-child(n+8){display:none}}
@media(prefers-reduced-motion:reduce){.season-scene *{animation:none!important}.season-scene i{display:none}}
/* Review tools are temporary, and never persist a visitor's selection. */
.season-review{position:absolute;right:5%;bottom:26px;z-index:8;background:#f4f1e8ed;color:var(--ink);border:1px solid #193e4940;padding:8px 14px;font-size:12px;box-shadow:0 4px 20px #193e4910}.season-review summary{cursor:pointer;font-weight:700}.season-review>div{display:flex;gap:12px;align-items:end;padding:12px 0 3px}.season-review label{display:grid;gap:4px}.season-review select{max-width:145px;background:var(--paper);border:1px solid var(--line);padding:5px;font-size:12px}.season-review button{border:0;background:var(--ink);color:var(--paper);padding:7px 10px;font-size:12px}.season-branch{width:clamp(220px,26vw,390px);opacity:.86}.brand-mascot.hero-guide{width:175px!important;height:210px!important;right:15%;top:24%;bottom:auto;filter:drop-shadow(0 3px 5px #fff9) drop-shadow(0 9px 12px #193e4945)}
.season-scene i{left:var(--leaf-left,80%);animation-name:seasonScatter;animation-duration:var(--leaf-duration,21s);animation-delay:var(--leaf-delay,-5s);width:var(--leaf-size,7px);height:calc(var(--leaf-size,7px)*1.4)}@keyframes seasonScatter{0%{transform:translate3d(0,-20px,0) rotate(0deg);opacity:0}8%{opacity:.6}32%{transform:translate3d(var(--leaf-sway,40px),190px,0) rotate(75deg)}65%{transform:translate3d(var(--leaf-drift,-80px),410px,0) rotate(210deg);opacity:.45}85%,100%{transform:translate3d(var(--leaf-end,-150px),730px,0) rotate(340deg);opacity:0}}
@media(max-width:750px){.brand-mascot.hero-guide{width:110px!important;height:132px!important;top:auto;bottom:29%;right:7%}.season-review{right:auto;left:6%;bottom:22px;max-width:88%;padding:5px 10px}.season-review>div{gap:7px;flex-wrap:wrap}.season-branch{width:190px;right:-40px;opacity:.7}.hero-scroll{bottom:90px}}
@media(max-width:750px){.season-review{width:280px;max-width:88vw;box-sizing:border-box}.season-review label{min-width:0;flex:1}.season-review select{width:100%;max-width:100%}.season-review button{flex-basis:100%}}
/* The whole painted city now changes with the season, keeping fixed infrastructure geometry. */
.city-background{transition:filter 2s,opacity .8s ease!important}.season-branch{display:none}[data-holiday=christmas] .season-branch{display:block;width:clamp(180px,20vw,280px);opacity:.8}.season-review{right:16%}[data-season=winter] .season-scene i{width:var(--leaf-size,4px);height:var(--leaf-size,4px);opacity:.7}
@media(max-width:750px){.season-review{right:auto;width:210px}.season-review>div{gap:6px}[data-holiday=christmas] .season-branch{width:165px;opacity:.65}}
@media(prefers-reduced-motion:reduce){.city-background{transition:none!important}}
/* Small seasonal edge details remain secondary to the full city panorama. */
.season-branch,[data-holiday=christmas] .season-branch{display:block;width:190px;right:-70px;top:-45px;opacity:.68;animation-duration:16s}.city-hero[data-mood=night] .city-background[data-scene=christmas-night]{filter:none!important}.holiday-glow{position:absolute;width:3px;height:3px;border-radius:50%;translate:-50% -50%;background:#fff0b8;box-shadow:0 0 5px 2px #ffd27b60,0 0 13px 4px #ffd27b20;opacity:0;pointer-events:none;transition:opacity 1.8s}.holiday-glow:first-of-type{width:4px;height:4px}[data-holiday=christmas] .city-hero[data-mood=night] .holiday-glow{animation:holidayWarmth var(--holiday-duration,6s) var(--holiday-delay,0s) ease-in-out infinite alternate}[data-holiday=christmas] .city-hero[data-mood=sunset] .holiday-glow{opacity:.3}@keyframes holidayWarmth{from{opacity:.28}to{opacity:.7}}.scene-paused .holiday-glow,.motion-off .holiday-glow{animation-play-state:paused!important}@media(max-width:750px){.season-branch,[data-holiday=christmas] .season-branch{width:140px;right:-60px;top:-32px;opacity:.58}}@media(prefers-reduced-motion:reduce){[data-holiday=christmas] .city-hero[data-mood=night] .holiday-glow{animation:none;opacity:.55}}
/* Preserve the painted Christmas light falloff instead of veiling the park tree. */
[data-holiday=christmas] .city-hero .hero-shade{background:linear-gradient(180deg,#f4f1e8bd 0%,#f4f1e880 36%,#f4f1e818 65%,transparent 82%)}[data-holiday=christmas] .city-hero[data-mood=night] .hero-shade{background:linear-gradient(180deg,#193e4940,#193e4918 50%,transparent 75%)}
/* Protect the copy locally; keep the park tree and river illumination visible below. */
[data-holiday=christmas] .hero-copy:before{content:'';position:absolute;pointer-events:none;z-index:-1;left:2%;top:32px;width:min(760px,62vw);height:480px;background:radial-gradient(ellipse at 35% 45%,#f4f1e8fa 0%,#f4f1e8f2 42%,#f4f1e8c9 63%,#f4f1e830 78%,transparent 92%);filter:blur(14px)}[data-holiday=christmas] .city-hero[data-mood=night] .hero-copy:before{background:radial-gradient(ellipse at 35% 45%,#193e49fa 0%,#193e49f2 42%,#193e49d9 63%,#193e4950 78%,transparent 92%)}[data-holiday=christmas] .hero-copy p,[data-holiday=christmas] .hero-copy .hero-link{text-shadow:0 1px 3px #f4f1e8a0}[data-holiday=christmas] .city-hero[data-mood=night] .hero-copy p,[data-holiday=christmas] .city-hero[data-mood=night] .hero-copy .hero-link{text-shadow:0 1px 4px #193e49}.hero-scroll{bottom:24px}@media(max-width:750px){[data-holiday=christmas] .hero-copy:before{left:-5%;top:5px;width:110%;height:440px;filter:blur(10px)}.hero-scroll{bottom:24px}}
