/* 四时竹舍：同一幅内联矢量场景，实景换季与分层光影。 */
.app{--sky:#f5f8bc;--sky-top:#c5e8a0;--sky-bottom:#fff2ad;--room-wall:#29493e;--wall-wash:#557659;--ceiling:#426449;--floor:#b6a66e;--wood:#a38650;--wood-light:#d5ba78;--wood-dark:#28402f;--leaf:#357d37;--far-leaf:#9dbd57;--outside-ground:#96b34e;--light:#fff3b5;--light-opacity:.3;--sun-opacity:.4;--moon-opacity:0;--lamp-opacity:.12;--forest-deep:#145428;--forest-mid:#4b922f;--forest-far:#b0d078;--forest-ground:#60933e;--forest-period-filter:brightness(1) saturate(1.13);--forest-weather-filter:brightness(1);--furniture-filter:brightness(1);--ray-shift:0deg}
.backdrop .room-scene{position:absolute;inset:0;width:100%;height:100%;object-position:50% 50%;opacity:1;filter:none;pointer-events:none;user-select:none;overflow:hidden}
.backdrop::after{display:none}.window-frame-overlay{position:fixed;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}.room-scene #outside-slot{filter:var(--forest-period-filter) var(--forest-weather-filter);transition:filter 1.5s}.room-scene #furniture-slot{filter:var(--furniture-filter);transition:filter 1.5s}.room-scene path,.room-scene stop{transition:fill 1.8s,stop-color 1.8s}.room-scene .seasonal{display:none}.app[data-season="spring"] .seasonal.spring,.app[data-season="summer"] .seasonal.summer,.app[data-season="autumn"] .seasonal.autumn,.app[data-season="winter"] .seasonal.winter{display:inline}
.app[data-season="spring"]{--forest-deep:#226432;--forest-mid:#64a343;--forest-far:#bddb86;--forest-ground:#7aa84a;--sky:#f6f5c4}
.app[data-season="summer"]{--forest-deep:#104f2b;--forest-mid:#398631;--forest-far:#92bf66;--forest-ground:#4c8334;--sky:#e0f3ba}
.app[data-season="autumn"]{--forest-deep:#355e26;--forest-mid:#6d8c30;--forest-far:#c5c872;--forest-ground:#9d953f;--sky:#ffedb5}
.app[data-season="winter"]{--forest-deep:#295d4e;--forest-mid:#588b6b;--forest-far:#a0c3ad;--forest-ground:#94b5a5;--sky:#dceef0}
.app[data-period="dawn"]{--sky:#e7d6bd;--sky-top:#aab4cc;--sky-bottom:#f5d8a3;--wall-wash:#526a65;--room-wall:#294744;--light:#f9cdaa;--sun-opacity:.19;--lamp-opacity:.36;--forest-period-filter:brightness(.88) saturate(.95);--ray-shift:-3deg}
.app[data-period="morning"]{--light:#fff0a8;--sun-opacity:.43;--lamp-opacity:.08;--ray-shift:-2deg}
.app[data-period="noon"]{--light:#ffffd8;--sun-opacity:.5;--light-opacity:.34;--forest-period-filter:brightness(1.04) saturate(1.18);--ray-shift:1deg}
.app[data-period="afternoon"]{--light:#ffe79a;--sun-opacity:.47;--light-opacity:.35;--ray-shift:3deg}
.app[data-period="sunset"]{--sky:#ffd89b;--sky-top:#dbb177;--sky-bottom:#ffc777;--room-wall:#404a32;--wall-wash:#7c874c;--ceiling:#54613a;--floor:#c19b57;--wood:#b38749;--wood-light:#e3b96e;--wood-dark:#3c4527;--light:#ffd078;--sun-opacity:.55;--light-opacity:.4;--lamp-opacity:.45;--forest-period-filter:brightness(.98) saturate(1.25) sepia(.12);--ray-shift:5deg}
.app[data-period="dusk"]{--sky:#b2aec4;--sky-top:#636ba6;--sky-bottom:#b7a6af;--room-wall:#263b47;--wall-wash:#465974;--ceiling:#2d465a;--floor:#71858b;--wood:#6f7d72;--wood-light:#a9af8d;--wood-dark:#1c333d;--light:#ffd384;--light-opacity:.12;--sun-opacity:0;--moon-opacity:.35;--lamp-opacity:.7;--forest-period-filter:brightness(.68) saturate(.95) hue-rotate(18deg);--furniture-filter:brightness(.85) saturate(.95)}
.app[data-period="night"]{--sky:#193651;--sky-top:#173456;--sky-bottom:#477996;--room-wall:#163449;--wall-wash:#275574;--ceiling:#23465c;--floor:#547990;--wood:#4f777b;--wood-light:#8aaca3;--wood-dark:#132e40;--light:#ffcf77;--light-opacity:.09;--sun-opacity:0;--moon-opacity:.82;--lamp-opacity:.85;--forest-period-filter:brightness(.45) saturate(.98) hue-rotate(24deg);--furniture-filter:brightness(.72) saturate(.94);--ray-shift:-1deg}
.app[data-weather="cloudy"]{--forest-weather-filter:brightness(.83) saturate(.94);--light-opacity:.12;--sun-opacity:.13}.app[data-weather="rain"]{--forest-weather-filter:brightness(.74) saturate(.97);--light-opacity:.07;--sun-opacity:.05}.app[data-weather="snow"]{--forest-weather-filter:brightness(.96) saturate(.94);--light-opacity:.14;--sun-opacity:.14}.app[data-period="dusk"][data-weather],.app[data-period="night"][data-weather]{--sun-opacity:0}
.bamboo-sway{transform-box:fill-box;transform-origin:40% 78%;animation:bamboo-breeze 7.8s ease-in-out infinite alternate}.bamboo-sway:nth-of-type(3n){animation-delay:-3.1s;animation-duration:9.3s}.bamboo-sway:nth-of-type(2n){animation-delay:-5.7s;animation-duration:6.7s}.bamboo-sway-soft{transform-box:fill-box;transform-origin:50% 90%;animation:bamboo-soft 11s ease-in-out infinite alternate}.forest-light{animation:forest-shimmer 8s ease-in-out infinite alternate}
.room-scene #sunbeams{transform-origin:50px 22px;animation:light-drift 16s ease-in-out infinite alternate}.room-scene #moonbeams{transform-origin:50px 22px;animation:moon-drift 21s ease-in-out infinite alternate}.room-scene #sunbeams>path{animation:ray-shimmer 6s ease-in-out infinite alternate}.room-scene #sunbeams>path:nth-child(2){animation-delay:-3s}.room-scene #lamp-glow>ellipse{transform-origin:1104px 249px;animation:lamp-breathe 5s ease-in-out infinite alternate}.app[data-season="summer"] #f-fan-blades{animation:fan-turn 1.2s linear infinite;transform-origin:795px 560px}
@keyframes bamboo-breeze{from{transform:rotate(-1.8deg) translateX(-2px)}to{transform:rotate(2deg) translateX(3px)}}@keyframes bamboo-soft{from{transform:rotate(-.6deg)}to{transform:rotate(1deg)}}@keyframes forest-shimmer{from{opacity:.5}to{opacity:.95}}@keyframes light-drift{from{transform:translate(-13px,-3px) rotate(calc(var(--ray-shift) - 1.4deg))}to{transform:translate(18px,6px) rotate(calc(var(--ray-shift) + 1.5deg))}}@keyframes moon-drift{from{transform:translateX(-10px) rotate(-.8deg)}to{transform:translateX(12px) rotate(1.2deg)}}@keyframes ray-shimmer{from{opacity:.66}to{opacity:1}}@keyframes lamp-breathe{from{opacity:.76;transform:scale(.985)}to{opacity:1;transform:scale(1.035)}}@keyframes fan-turn{to{transform:rotate(360deg)}}
#weather-canvas{position:fixed;inset:0;z-index:1;display:block;width:100%;height:100%;pointer-events:none;user-select:none}.app.motion-paused #weather-canvas,.app.reduced-motion #weather-canvas{visibility:hidden}.app.motion-paused .room-scene *,.app.reduced-motion .room-scene *{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){#weather-canvas{visibility:hidden}.room-scene *{animation:none!important;transition:none!important}}
