/* Weather stays at the window; washes tie the painted room, plants and objects together. */
.room-atmosphere { position:absolute; inset:0; pointer-events:none; z-index:4; overflow:hidden; border-radius:inherit; }
.room-window-weather { position:absolute; z-index:0; pointer-events:none; left:97px; top:43px; width:282px; height:284px; clip-path:ellipse(49% 49% at 50% 50%); mask-image:linear-gradient(90deg,#000 0 60px,transparent 61px 68px,#000 69px 113px,transparent 114px 121px,#000 122px 151px,transparent 152px 161px,#000 162px 205px,transparent 206px 214px,#000 215px),linear-gradient(180deg,#000 0 54px,transparent 55px 63px,#000 64px 93px,transparent 94px 102px,#000 103px 160px,transparent 161px 169px,#000 170px 207px,transparent 208px 216px,#000 217px); mask-composite:intersect; }
.room-window-weather>span { position:absolute; inset:0; opacity:0; transition:opacity 3s ease; }
.window-sky { background:linear-gradient(#64788788,#adbcc844); mix-blend-mode:multiply; }
.window-clouds { inset:-20%!important; background:radial-gradient(ellipse at 25% 30%,#e6e9e9a0,transparent 35%),radial-gradient(ellipse at 70% 58%,#6d809c66,transparent 40%); filter:blur(12px); animation:window-cloud-drift 35s ease-in-out infinite alternate; }
.window-rain { inset:-50px!important; background:repeating-linear-gradient(106deg,transparent 0 30px,#e1f0ff80 31px,transparent 33px 64px); background-size:79px 95px; mask-image:repeating-linear-gradient(0deg,#000 0 13px,transparent 14px 42px); transform:rotate(7deg); animation:window-rain-fall 1.4s linear infinite; }
.window-snow { inset:-50px!important; background:radial-gradient(circle,#ffffffec 0 2px,transparent 3px) 0 0 / 64px 83px,radial-gradient(circle,#fff9 0 1px,transparent 2.5px) 31px 29px / 91px 113px; animation:window-snow-fall 13s linear infinite; }
.window-stars { background:radial-gradient(circle at 22% 20%,#f9f2d9 0 1px,transparent 2px),radial-gradient(circle at 64% 32%,#f9f2d9 0 1px,transparent 2px),radial-gradient(circle at 35% 63%,#f9f2d9 0 1.5px,transparent 2.5px),radial-gradient(circle at 78% 71%,#f9f2d9 0 1px,transparent 2px); animation:window-stars-glow 18s ease-in-out infinite alternate; }
.room-light-beam { position:absolute; left:-70px; top:220px; width:900px; height:510px; background:linear-gradient(119deg,transparent 15%,#fff3b530 31%,#ffe79e14 43%,transparent 58%); transform-origin:15% 0; animation:room-sun-drift 38s ease-in-out infinite alternate; transition:opacity 3s; }
.room-moving-shadows { position:absolute; left:30px; top:350px; width:760px; height:300px; background:repeating-linear-gradient(90deg,transparent 0 63px,#574e3828 64px 72px,transparent 73px 124px),repeating-linear-gradient(0deg,transparent 0 64px,#574e3820 65px 72px,transparent 73px 105px); mask-image:linear-gradient(120deg,transparent,#0009 25%,#0005 55%,transparent 90%); filter:blur(5px); transform-origin:0 0; animation:room-shadow-drift 32s ease-in-out infinite alternate; transition:opacity 3s; }
.room-weather-wash { background:#71818b; mix-blend-mode:multiply; }
.room-scene-caption { position:absolute; z-index:6; right:24px; top:26px; padding:6px 10px; border-radius:14px; background:#fff7e4c9; color:#666d53; font-size:10px; pointer-events:none; }
.plant-room[data-weather="cloud"] .window-sky,.plant-room[data-weather="fog"] .window-sky,.plant-room[data-weather="rain"] .window-sky,.plant-room[data-weather="storm"] .window-sky { opacity:.65; }
.plant-room[data-weather="cloud"] .window-clouds,.plant-room[data-weather="fog"] .window-clouds,.plant-room[data-weather="rain"] .window-clouds,.plant-room[data-weather="storm"] .window-clouds { opacity:.8; }
.plant-room[data-weather="rain"] .window-rain,.plant-room[data-weather="storm"] .window-rain { opacity:.7; }
.plant-room[data-weather="snow"] .window-snow { opacity:.9; }
.plant-room[data-weather="snow"] .window-sky { opacity:.55; background:#c8d3d988; mix-blend-mode:screen; }
.plant-room[data-weather="fog"] .window-clouds { opacity:1; filter:blur(20px); }
.plant-room[data-weather="cloud"] .room-weather-wash { opacity:.20; }
.plant-room[data-weather="rain"] .room-weather-wash,.plant-room[data-weather="fog"] .room-weather-wash { opacity:.30; }
.plant-room[data-weather="storm"] .room-weather-wash { opacity:.43; }
.plant-room[data-weather="snow"] .room-weather-wash { opacity:.20; background:#95b5cc; }
.plant-room:not([data-weather="sun"]) .room-moving-shadows { opacity:.28; }
.plant-room:not([data-weather="sun"]) .room-light-beam { opacity:.3; }
.plant-room[data-period="night"] .room-light-beam { opacity:.15; background:linear-gradient(119deg,transparent,#b9dcfa55,transparent 60%); }
.plant-room[data-period="night"] .room-moving-shadows { opacity:.16; }
.plant-room[data-period="night"] .room-scene-caption { background:#e7e7d9d9; color:#36455a; }
.room-decoration[data-decoration="sleepy-cat"] .decor-art { transform-origin:50% 99%; animation:cat-sleep-breathe 6s ease-in-out infinite; }
.room-decoration[data-decoration="watering-can"] .decor-art { transform-origin:67% 98%; animation:watering-can-settle 24s ease-in-out infinite; }
.room-pot-shadow { animation:pot-shadow-drift 21s ease-in-out infinite alternate; transform-origin:center; }
@keyframes window-cloud-drift { to { transform:translateX(22px); } }
@keyframes window-rain-fall { to { background-position:-24px 95px; mask-position:0 42px; } }
@keyframes window-snow-fall { to { background-position:28px 166px,51px 255px; } }
@keyframes window-stars-glow { to { filter:brightness(.7); } }
@keyframes room-sun-drift { from { transform:rotate(calc(var(--sun-angle) - 2deg)); } to { transform:translateX(12px) rotate(calc(var(--sun-angle) + 2deg)); } }
@keyframes room-shadow-drift { from { transform:skewX(-29deg) rotate(-9deg) translateX(-6px); } to { transform:skewX(-26deg) rotate(-7deg) translateX(7px); } }
@keyframes cat-sleep-breathe { 0%,100% { transform:scale(1,1); } 50% { transform:scale(1.008,1.018); } }
@keyframes watering-can-settle { 0%,78%,100% { transform:rotate(0); } 85% { transform:rotate(.65deg); } 92% { transform:rotate(-.35deg); } }
@keyframes pot-shadow-drift { to { transform:translateX(2px) scaleX(1.07); opacity:.78; } }
body.room-paused .plant-room *,body.room-manual-pause .plant-room *,.plant-room[data-motion="false"] * { animation-play-state:paused!important; }
@media(prefers-reduced-motion:reduce) { .plant-room * { animation:none!important; transition:none!important; } }

.room-shelf { z-index:1; }

/* Independent breeze layers: these persist through every clock/weather update. */
.room-window-charm { position:absolute; left:312px; top:86px; width:42px; height:82px; pointer-events:none; }
.room-window-charm-swing { display:block; width:100%; height:100%; background:url('../assets/rain-charm.png') 49.603175% 94.69697% / 196.923077% 152.380952% no-repeat; transform-origin:50% 0; --charm-sway:calc(3deg + var(--wind-sway,0deg)); animation:room-charm-breeze var(--wind-duration,8s) ease-in-out -2s infinite; }
.plant-room[data-space="outdoors"] .room-window-charm { left:815px; top:10px; }
.plant-room[data-space="outdoors"] .room-window-weather { left:58px; top:9px; width:802px; height:215px; clip-path:none; mask-image:none; }
@keyframes room-charm-breeze { 0%,100% { transform:rotate(calc(-1 * var(--charm-sway,3deg))); } 48% { transform:rotate(var(--charm-sway,3deg)); } }

@media(prefers-reduced-motion:reduce) { .plant-room .tree-shadow-branch,.plant-room .room-window-charm-swing { animation:none; } }

/* Soft dappled washes extend from the window onto the painted floor. */
.room-shadow-overlay { position:absolute; inset:0; z-index:5; overflow:hidden; pointer-events:none; opacity:.36; mix-blend-mode:color-dodge; transition:opacity 3s; }
.room-shadow-drift { position:absolute; left:0; top:130px; width:1000px; height:432px; background:url('../assets/window-filtered-light.svg') left top / 1000px 432px no-repeat; transform-origin:245px 200px; animation:garden-filtered-light 9s ease-in-out -4.5s infinite alternate; will-change:transform; pointer-events:none; }
.room-shade-overlay.room-shadow-overlay { mix-blend-mode:multiply; opacity:.23; }
.room-shade-drift { background:#66704d; mask:url('../assets/window-filtered-light.svg') left top / 1000px 432px no-repeat; animation-delay:-9s; animation-duration:12s; }
.plant-room:not([data-weather="sun"]) .room-shadow-overlay { opacity:.22; }
.plant-room[data-weather="rain"] .room-shadow-overlay,.plant-room[data-weather="storm"] .room-shadow-overlay,.plant-room[data-weather="fog"] .room-shadow-overlay { opacity:.13; }
.plant-room[data-period="dawn"] .room-shadow-overlay,.plant-room[data-period="dusk"] .room-shadow-overlay { opacity:.18; }
.plant-room[data-period="night"] .room-shadow-overlay { opacity:.07; filter:hue-rotate(145deg) saturate(.5); }
.plant-room[data-space="outdoors"] .room-shadow-drift { top:90px; left:70px; }
.room-light-beam { display:none; }
@keyframes garden-filtered-light { from { transform:translate(-22px,-3px) rotate(-1deg); opacity:.7; } to { transform:translate(22px,5px) rotate(1deg); opacity:1; } }
@media(prefers-reduced-motion:reduce) { .room-shadow-drift { animation:none!important; } }

.room-weather-wash { position:absolute; inset:0; opacity:0; transition:opacity 3s ease; background:#71818b; mix-blend-mode:multiply; }

/* Separate paintings preserve the architecture and keep warm indoor lights at night. */
.plant-room { background-image:url('../assets/garden-room-day-v2.png'); }
.plant-room[data-period="dawn"],.plant-room[data-period="dusk"] { background-image:url('../assets/garden-room-twilight-v2.png'); }
.plant-room[data-period="night"] { background-image:url('../assets/garden-room-night-v2.png'); }
.plant-room[data-space="outdoors"] { background-image:url('../assets/garden-balcony-day-v2.png'); }
.plant-room[data-space="outdoors"][data-period="dawn"],.plant-room[data-space="outdoors"][data-period="dusk"] { background-image:url('../assets/garden-balcony-twilight-v2.png'); }
.plant-room[data-space="outdoors"][data-period="night"] { background-image:url('../assets/garden-balcony-night-v2.png'); }
/* Colour adjustment preserves alpha and the existing wilt animation. */
.plant-room[data-period="night"] .room-plant-art,.plant-room[data-period="night"] .decor-art,.plant-room[data-period="night"] .shelf-plank { filter:brightness(.88) sepia(.12) saturate(.88); }
.plant-room[data-period="dawn"] .room-plant-art,.plant-room[data-period="dusk"] .room-plant-art { filter:brightness(.96) sepia(.06); }
.plant-room[data-period="night"] .room-weather-wash { opacity:.08; }
.plant-room[data-weather="rain"] .window-rain,.plant-room[data-weather="storm"] .window-rain { opacity:.9; }
.window-rain { background:repeating-linear-gradient(103deg,transparent 0 27px,#b3cbd3b3 28px,#e5edf0b3 29px,transparent 30px 58px); background-size:73px 95px; filter:drop-shadow(.4px 0 .3px #455c7066); }
.window-snow { filter:drop-shadow(0 1px .5px #6a829c80); }
.plant-room[data-weather="storm"] .window-rain { animation-duration:.85s; }

.plant-room:not([data-space="outdoors"]) .room-window-weather { mask-image:url("../assets/room-window-mask.svg"); mask-size:100% 100%; mask-composite:add; }
.plant-room[data-period="night"] .window-clouds { opacity:.24; }

/* Keep the painted night exterior dark; precipitation remains a separate layer. */
.plant-room[data-period="night"] .window-sky,.plant-room[data-period="night"] .window-clouds { opacity:0; }

/* Night fireflies share the precipitation mask, behind the wooden window frame. */
.window-fireflies { display:none; }
.plant-room[data-period="night"] .window-fireflies { display:block; opacity:.88; }
.window-firefly { position:absolute; width:8px; height:8px; animation:window-firefly-flight var(--fly-duration) ease-in-out var(--fly-delay) infinite; }
.window-firefly b { display:block; width:100%; height:100%; border-radius:50%; background:radial-gradient(circle,#fff4b9 0 8%,#dfe795b3 18%,#b7ce6845 39%,transparent 72%); filter:blur(.25px); animation:window-firefly-glow calc(var(--fly-duration) * .57) ease-in-out var(--fly-delay) infinite; }
.plant-room[data-period="night"][data-weather="storm"] .window-fireflies { opacity:.4; }
@keyframes window-firefly-flight { 0%,100% { transform:translate(0,0); } 32% { transform:translate(var(--fly-dx),var(--fly-dy)); } 68% { transform:translate(var(--fly-ex),var(--fly-ey)); } }
@keyframes window-firefly-glow { 0%,100% { opacity:.22; transform:scale(.75); } 35% { opacity:.95; transform:scale(1.15); } 72% { opacity:.42; transform:scale(.9); } }
