/* Room coordinates keep seasonal pieces attached to the scene while exploring. */
.room-seasons{position:absolute;inset:0;pointer-events:none}
.season-pumpkins,.season-tree,.season-stair,.season-floating-lanterns{z-index:12}
.season-tree{z-index:13}
.season-mantel{z-index:8}
.room #roomPet{z-index:14!important}
.room[data-theme="wizard"]>.wizard-details{z-index:9}
.room[data-space="grand"][data-theme="wizard"]>.wizard-details{z-index:9}
.room-seasons svg{display:block;width:100%;height:100%;overflow:visible}
.room-seasons [hidden]{display:none!important}
.season-pumpkins{position:absolute;left:52%;top:77%;width:17%;height:13%;display:flex;align-items:flex-end;filter:drop-shadow(2px 4px 3px #34220b55)}
.season-pumpkins span{display:block;width:45%;height:100%}
.season-pumpkins span:nth-child(2){width:35%;height:70%;margin-left:-9%}
.season-pumpkins span:nth-child(3){width:29%;height:55%;margin-left:-8%}
.room[data-space="classic"][data-style="realistic"] .season-pumpkins{left:24%;top:69%;width:14%;height:12%}
.season-floor-leaves{position:absolute;left:3%;top:88%;width:94%;height:10%;z-index:6;filter:drop-shadow(1px 2px 1px #3c261650)}
.season-mantel{position:absolute;left:36%;top:60%;width:28%;height:10%;filter:drop-shadow(1px 2px 2px #17231866)}
.room[data-style="realistic"] .season-mantel{top:50.5%;left:calc(50% - var(--photo-width,100%)*.14);width:calc(var(--photo-width,100%)*.28)}
.season-tree{position:absolute;left:2%;top:53%;width:19%;height:43%;filter:drop-shadow(3px 5px 4px #14241866)}
.room[data-space="classic"][data-style="realistic"] .season-tree{left:23%;top:34%;height:43%}
.season-tree-light,.season-garland-light{filter:drop-shadow(0 0 3px var(--bulb-color,#ffca63)) drop-shadow(0 0 7px var(--bulb-color,#ffbe50));animation:season-light-glow var(--glow-duration,3s) ease-in-out var(--glow-delay,0s) infinite alternate}
.season-bulb-halo{opacity:.3;filter:blur(1.8px);animation:season-halo-glow var(--glow-duration,3s) ease-in-out var(--glow-delay,0s) infinite alternate}
.season-tree-star{filter:drop-shadow(0 0 4px #ffdf82)}
.season-stair{position:absolute;inset:0;filter:drop-shadow(1px 2px 1px #13241466)}
.season-floating-lanterns{position:absolute;inset:0}
.season-floating-lanterns>span{position:absolute;left:var(--lantern-x);top:var(--lantern-y);width:5%;height:8%;animation:season-lantern-float 4.8s ease-in-out var(--lantern-delay) infinite alternate;filter:drop-shadow(0 0 7px #ffa83c55)}
.season-lantern-face{filter:drop-shadow(0 0 2px #fff7be) drop-shadow(0 0 6px #ffb943);animation:season-lantern-flicker 2.7s ease-in-out infinite}
.season-lantern-inner-glow{opacity:.25;filter:blur(5px);animation:season-lantern-flicker 2.7s ease-in-out infinite}
.season-lantern-photo{animation:season-photo-lantern-flicker 2.7s ease-in-out infinite}
.immersive-space #room .season-tree{left:17%;top:29%;width:15%;height:36%}
.immersive-space #room .season-pumpkins{left:61%;top:54%;width:11%;height:9%}
.immersive-space #room .season-door-pumpkins{left:5%;top:85%;width:11%;height:10%}
.immersive-space #room .season-mantel{left:43.5%;top:43.8%;width:13%;height:6%}
.immersive-space #room .season-floor-leaves{top:84%;height:12%}
.immersive-space.shelf-focus-view .room-seasons{display:none}
.room[data-space="grand"] .season-tree{left:76%;top:58%;width:16%;height:23%}
.room.is-large-trial .season-tree{left:72%;top:55%;width:19%;height:30%}
.room.is-large-trial .season-bulb-halo{opacity:.14;filter:blur(.7px)}
.room.is-large-trial :is(.season-tree-light,.season-garland-light){filter:drop-shadow(0 0 2px var(--bulb-color,#ffca63))}
.room[data-space="grand"] .season-pumpkins{left:34%;top:65.5%;width:13%;height:7%}
.room[data-space="grand"] .season-mantel{left:39%;top:55.2%;width:22%;height:5%}
.room[data-space="grand"] .season-floor-leaves{top:77%;height:20%}
.room[data-space="grand"] .season-floating-lanterns{height:40%}
.room[data-style="illustrated"] .season-pumpkins,.room[data-style="illustrated"] .season-tree{filter:drop-shadow(1px 2px 1px #34220b33)}
@keyframes season-lantern-float{from{transform:translateY(-5px) rotate(-3deg)}to{transform:translateY(7px) rotate(3deg)}}
@keyframes season-light-glow{from{opacity:.5;filter:drop-shadow(0 0 2px var(--bulb-color,#ffca63))}to{opacity:1;filter:drop-shadow(0 0 5px var(--bulb-color,#ffe6a0)) drop-shadow(0 0 10px var(--bulb-color,#ffbe50))}}
@keyframes season-halo-glow{from{opacity:.12}to{opacity:.6}}
@keyframes season-lantern-flicker{0%,100%{opacity:.85}23%{opacity:1}47%{opacity:.7}66%{opacity:.95}82%{opacity:.8}}
@keyframes season-photo-lantern-flicker{0%,100%{filter:brightness(1) drop-shadow(0 0 2px #ffb94366)}35%{filter:brightness(1.16) drop-shadow(0 0 6px #ffc95eaa)}68%{filter:brightness(.96) drop-shadow(0 0 3px #ffb94377)}}
/* The 3D scene suppresses all motion by default; these decorations opt in. */
@media(prefers-reduced-motion:no-preference){
  .immersive-space #room .season-floating-lanterns>span{animation:season-lantern-float 4.8s ease-in-out var(--lantern-delay) infinite alternate!important}
  .immersive-space #room .season-lantern-face,.immersive-space #room .season-lantern-inner-glow{animation:season-lantern-flicker 2.7s ease-in-out infinite!important}
  .immersive-space #room .season-lantern-photo{animation:season-photo-lantern-flicker 2.7s ease-in-out infinite!important}
  .immersive-space #room .season-tree-light,.immersive-space #room .season-garland-light{animation:season-light-glow var(--glow-duration,3s) ease-in-out var(--glow-delay,0s) infinite alternate!important}
  .immersive-space #room .season-bulb-halo{animation:season-halo-glow var(--glow-duration,3s) ease-in-out var(--glow-delay,0s) infinite alternate!important}
}
@media(prefers-reduced-motion:reduce){.room-seasons *{animation:none!important}.season-bulb-halo{opacity:.35}}

/* Keep foreground scatter in front of the seating rather than on its arms. */
.room[data-space="grand"] .season-floor-leaves{left:27%;width:68%;top:88%;height:9%}

/* Outdoor seasons are independent of indoor decorations. All layers are
   clipped by the existing glass and never intercept books or room controls. */
.season-scenery{position:absolute;inset:0;z-index:5;background:inherit;border-radius:inherit;overflow:hidden;pointer-events:none!important;isolation:isolate}
.season-scenery-tint{position:absolute;inset:0;background:inherit;border-radius:inherit;pointer-events:none}
.season-scenery[data-season=fall][data-time=day]>.season-scenery-tint{filter:url(#scenery-fall-day)}
.season-scenery[data-season=fall][data-time=night]>.season-scenery-tint{filter:url(#scenery-fall-night)}
.season-scenery[data-season=winter][data-time=day]>.season-scenery-tint{filter:url(#scenery-winter-day)}
.season-scenery[data-season=winter][data-time=night]>.season-scenery-tint{filter:url(#scenery-winter-night)}
.season-scenery-ground{position:absolute;inset:62% 0 0;pointer-events:none;opacity:.7}
[data-season=winter]>.season-scenery-ground{background:radial-gradient(ellipse at 12% 90%,#eef6fc 0 24%,transparent 26%),radial-gradient(ellipse at 85% 93%,#e5eff8 0 30%,transparent 33%),linear-gradient(transparent 10%,#e6f0f855 70%,#eef5f9aa);mask-image:linear-gradient(transparent,#000 65%)}
[data-season=fall]>.season-scenery-ground{background:radial-gradient(ellipse at 18% 90%,#b7702688,transparent 38%),radial-gradient(ellipse at 80% 95%,#d4893888,transparent 42%)}
.season-scenery-weather{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.season-scenery-weather>i{position:absolute;left:var(--weather-x);top:-10%;width:var(--weather-size);height:var(--weather-size);animation:scenery-weather-fall var(--weather-speed) linear var(--weather-delay) infinite;pointer-events:none}
[data-season=winter]>.season-scenery-weather>i{border-radius:50%;background:#fff;box-shadow:0 0 2px #e0efffaa;opacity:.8}
[data-season=fall]>.season-scenery-weather>i{height:calc(var(--weather-size)*1.5);border-radius:70% 0 70% 0;background:#d89035;box-shadow:inset 1px 0 #7e491b66;opacity:.8}
[data-season=fall]>.season-scenery-weather>i:nth-child(3n){background:#b85629}
[data-season=fall]>.season-scenery-weather>i:nth-child(3n + 1){background:#d8aa43}
[data-time=night]>.season-scenery-weather,[data-time=night]>.season-scenery-ground{filter:brightness(.65) saturate(.75)}
.season-scenery-atrium{mask:url('assets/season-atrium-glass.svg') center/100% 100% no-repeat}
.season-scenery-atrium>.season-scenery-ground{inset:40% 0 30%}
.grand-library.is-focused .season-scenery{display:none}
/* Suppress the old year-round drifting leaves while winter snow is selected. */
[data-scenery-season=winter] :is(.woodland-leaf,.small-window-motion i){display:none!important}
@keyframes scenery-weather-fall{0%{transform:translate(0,-5px) rotate(0);opacity:0}10%{opacity:.8}90%{opacity:.7}100%{transform:translate(calc(var(--weather-sway)*32px),110cqh) rotate(260deg);opacity:0}}
.season-scenery{container-type:size}
@media(prefers-reduced-motion:reduce){.season-scenery-weather{display:none}.season-scenery-weather>i{animation:none;will-change:auto}}
.season-scenery-atrium{mask-mode:luminance}
.belle-stained-glass>.season-scenery{background:transparent}
.belle-stained-glass>.season-scenery>.season-scenery-tint{display:none}
[data-scenery-season=fall][data-scenery-time=day] .belle-stained-glass>svg{filter:url(#scenery-fall-day)}
[data-scenery-season=fall][data-scenery-time=night] .belle-stained-glass>svg{filter:url(#scenery-fall-night)}
[data-scenery-season=winter][data-scenery-time=day] .belle-stained-glass>svg{filter:url(#scenery-winter-day)}
[data-scenery-season=winter][data-scenery-time=night] .belle-stained-glass>svg{filter:url(#scenery-winter-night)}
/* Seasonal artwork already includes ice, snow and leaf piles. */
.season-scenery[data-artwork=true]>.season-scenery-tint{filter:none!important}
.season-scenery[data-artwork=true]>.season-scenery-ground{display:none}
.season-scenery[data-room-artwork=true]>.season-scenery-tint{display:none}
.grand-library[data-theme=classic]:is([data-scenery-season=fall],[data-scenery-season=winter]) .trial-window{background-image:none!important}
/* New seasonal landscapes sit behind Belle's rose glass instead of replacing
   its leadwork. The translucent panes retain the rose motif over the garden. */
.belle-stained-glass:has(>.season-scenery[data-artwork=true]){background:transparent}
.belle-stained-glass:has(>.season-scenery[data-artwork=true])>svg{position:absolute;inset:0;z-index:7;opacity:.3;filter:none!important}
.belle-stained-glass>.season-scenery[data-artwork=true]{background-position:center;background-size:cover}
.grand-library:is([data-scenery-season=fall],[data-scenery-season=winter]) .trial-window{background-image:none!important}
[data-scenery-season=winter] :is(.grand-outdoor-water,.wizard-window-water,.elderwood-water,.rose-water){display:none!important}
[data-scenery-season=winter] .grand-boat-dock{display:none!important}
.grand-panorama-layer>.grand-outdoor-riders{z-index:6}
.trial-room-spatial[data-theme=wizard] .trial-window>.season-scenery{z-index:0}
.trial-room-spatial[data-theme=wizard] .trial-window .wizard-riders{z-index:1}
.trial-room-spatial[data-theme=wizard] .trial-window::before{z-index:2}
.belle-stained-glass:has(>.season-scenery[data-artwork=true]){filter:none!important}
