.weather-objects{position:absolute;inset:0;z-index:2;pointer-events:none;display:none}
.scene[data-room="weather"] .weather-objects:not([hidden]){display:block}
.weather-objects[hidden]{display:none!important}
/* Keep the entire kitten in front of the pillar-masked weather effects. */
.scene[data-room="weather"] .scene-art{z-index:auto}
.scene[data-room="weather"] .cat-rig{z-index:3}
.scene[data-room="weather"] .layer-background{transition:filter 850ms ease}
.scene[data-room="weather"][data-weather-state="sun"] .layer-background{filter:brightness(1.1) saturate(1.15)}
.scene[data-room="weather"][data-weather-state="cloud"] .layer-background{filter:brightness(.91) saturate(.88)}
.scene[data-room="weather"][data-weather-state="rain"] .layer-background{filter:brightness(.73) saturate(.74) hue-rotate(7deg)}
.scene[data-room="weather"][data-weather-state="wind"] .layer-background{filter:brightness(.96) saturate(1.02)}
.weather-atmosphere,.weather-sunlight,.weather-sun-rays,.weather-shade,.weather-rainfall,.weather-breeze,.weather-puddles,.weather-wind-lines{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.weather-atmosphere{z-index:0;mask-image:url("assets/weather/outdoor-mask.svg");-webkit-mask-image:url("assets/weather/outdoor-mask.svg");mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat}
.weather-sunlight{background:linear-gradient(115deg,#fff1b040,transparent 40%,#ffe78840),radial-gradient(ellipse at 83% 12%,#fff5aa99 0%,#ffe6a04d 46%,transparent 80%);opacity:0;transition:opacity 850ms ease;mix-blend-mode:soft-light}
.weather-sky-sun{position:absolute;left:78%;top:7%;width:11%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 40% 35%,#fff6ae,#ffd95c 65%,#ffca4a);box-shadow:0 0 2cqw 1.2cqw #ffec876b,0 0 8cqw 5cqw #ffe99338;opacity:0;transform:translateY(-4cqw) scale(.8);transition:opacity 850ms ease,transform 1.2s cubic-bezier(.2,.7,.35,1)}
.weather-sun-rays{background:conic-gradient(from 195deg at 83% 13%,transparent 0deg,#fff3b557 9deg,transparent 17deg,transparent 25deg,#fff3bf5c 32deg,transparent 40deg,transparent 48deg,#fff5c648 56deg,transparent 65deg,transparent 72deg,#fff8cd55 78deg,transparent 85deg,transparent 360deg);opacity:0;transition:opacity 1s ease;transform-origin:83% 13%}
.weather-shade{background:linear-gradient(#688ba252,#6e8eaa18 65%,transparent);opacity:0;transition:opacity 850ms ease}
.weather-objects[data-effect="sun"] .weather-sunlight,.weather-objects[data-effect="sun"] .weather-sun-rays{opacity:1}
.weather-objects[data-effect="sun"] .weather-sky-sun{opacity:1;transform:translateY(0) scale(1)}
.weather-objects[data-effect="sun"] .weather-sun-rays{animation:weather-ray-shift 11s ease-in-out infinite}
.weather-objects[data-effect="cloud"] .weather-shade{opacity:.27}
.weather-objects[data-effect="rain"] .weather-shade{opacity:1}
.weather-cloudfield{position:absolute;left:0;top:0;width:100%;height:62%;overflow:hidden;opacity:0;transform:translateY(-4cqw);transition:opacity 900ms ease,transform 1.4s ease,filter 900ms ease;pointer-events:none}
.weather-cloud-bank{position:absolute;display:block;width:115%;height:110%;object-fit:fill;pointer-events:none;user-select:none}
.weather-cloud-bank-a{left:-7%;top:-17%}
.weather-cloud-bank-b{left:-24%;top:-22%;width:138%;opacity:.58;transform:scaleX(-1)}
.weather-objects:is([data-effect="cloud"],[data-effect="rain"],[data-effect="wind"]) .weather-cloudfield{opacity:1;transform:translateY(0)}
.weather-objects[data-effect="cloud"] .weather-cloud-bank-a{animation:weather-sky-drift 26s ease-in-out infinite alternate}
.weather-objects[data-effect="cloud"] .weather-cloud-bank-b{animation:weather-sky-drift 33s ease-in-out -8s infinite alternate-reverse}
.weather-objects[data-effect="rain"] .weather-cloudfield{filter:brightness(.53) saturate(.6);height:65%}
.weather-objects[data-effect="rain"] .weather-cloud-bank-a{animation:weather-sky-drift 18s ease-in-out infinite alternate}
.weather-objects[data-effect="rain"] .weather-cloud-bank-b{opacity:.85;animation:weather-sky-drift 23s ease-in-out -7s infinite alternate-reverse}
.weather-objects[data-effect="wind"] .weather-cloudfield{opacity:.83;filter:brightness(.97)}
.weather-objects[data-effect="wind"] .weather-cloud-bank-a{animation:weather-cloud-gust 9s linear infinite}
.weather-objects[data-effect="wind"] .weather-cloud-bank-b{animation:weather-cloud-gust 12s linear -5s infinite}
.weather-toy{position:absolute;width:14%;height:21%;padding:0;border:0;background:transparent;pointer-events:auto;transform:translate(-50%,-50%);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;z-index:2;border-radius:32%}
.weather-toy-art{position:absolute;inset:-4% 6% 20%;display:block;transform-origin:50% 58%;pointer-events:none;filter:drop-shadow(0 .3cqw .22cqw #70583522)}
.weather-toy-art img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none}
.weather-word{position:absolute;left:50%;bottom:0;transform:translateX(-50%);min-width:70%;padding:.3cqw .9cqw .4cqw;border-radius:1.5cqw;background:linear-gradient(#fff6dd,#f8e6c7);box-shadow:0 .18cqw .25cqw #835e2925,inset 0 .06cqw .12cqw #fff9ea;color:#655040;font-size:2.1cqw;font-weight:800;line-height:1.1;pointer-events:none}
.weather-cloud .weather-toy-art{inset:0 0 18%}
.weather-rain .weather-toy-art{inset:-8% 1% 18%}
.weather-wind .weather-toy-art{inset:auto;left:8%;bottom:20%;width:84%;aspect-ratio:1;height:auto}
.weather-wind .weather-toy-art img{position:absolute;inset:0}
.weather-pinwheel-handle{position:absolute;left:45.1%;top:40%;width:7.7%;height:52%;border-radius:0 0 50% 50%;background:linear-gradient(90deg,#c9863c,#f2bd79 48%,#d6954d);box-shadow:inset -.35cqw 0 .4cqw #b8772d35;pointer-events:none}
.weather-wind-leaf-left{clip-path:inset(58% 77% 21% 0)}
.weather-wind-leaf-right{clip-path:inset(20% 0 61% 78%)}
.weather-pinwheel-rotor{clip-path:polygon(19% 0,77.5% 0,77.5% 70%,53% 70%,53% 59.3%,44.8% 59.3%,44.8% 70%,23.5% 70%,19% 58%);transform-origin:49.5% 41.7%}
.weather-playing .weather-word{box-shadow:0 .18cqw .3cqw #835e2930,inset 0 .06cqw .12cqw #fff9ea,0 0 1.2cqw #fff4b97d;background:linear-gradient(#fffbe9,#ffeab8)}
.weather-wind.weather-playing .weather-toy-art{animation:weather-wind-sway 1.4s ease-in-out infinite}
.weather-wind.weather-playing .weather-pinwheel-rotor{animation:weather-pinwheel-spin 1.15s linear infinite}
.weather-rainfall,.weather-puddles{opacity:0;transition:opacity 650ms ease;mask-image:linear-gradient(90deg,transparent 18%,#000 34%);-webkit-mask-image:linear-gradient(90deg,transparent 18%,#000 34%)}
.weather-objects[data-effect="rain"] .weather-rainfall,.weather-objects[data-effect="rain"] .weather-puddles{opacity:1}
.weather-falling-drop{position:absolute;left:var(--drop-x);top:var(--drop-y);width:.2cqw;height:2.9cqw;border-radius:70%;background:linear-gradient(transparent,#d2edffaa 18%,#a8d6efcc 75%,transparent);opacity:0;pointer-events:none}
.weather-foreground-drop{width:.48cqw;height:.85cqw;border-radius:65% 55% 70% 10%;background:linear-gradient(140deg,#dbf3ffbf,#87c6e8a8);box-shadow:inset .08cqw .09cqw #edfbff6b}
.weather-objects[data-effect="rain"] .weather-falling-drop{animation:weather-drop var(--drop-speed) linear var(--drop-delay) infinite}
.weather-ripple{position:absolute;width:2.5cqw;height:.7cqw;border:.12cqw solid #c9e8f2bb;border-radius:50%;opacity:0;pointer-events:none;background:#a8d3e41a}
.weather-objects[data-effect="rain"] .weather-ripple{animation:weather-ripple 1.65s ease-out var(--ripple-delay) infinite}
.weather-breeze,.weather-wind-lines{opacity:0;transition:opacity 550ms ease;mask-image:linear-gradient(90deg,transparent 21%,#000 35%);-webkit-mask-image:linear-gradient(90deg,transparent 21%,#000 35%)}
.weather-objects[data-effect="wind"] .weather-breeze,.weather-objects[data-effect="wind"] .weather-wind-lines{opacity:1}
.weather-flying-leaf{position:absolute;left:-7%;top:var(--leaf-y);width:var(--leaf-size);height:calc(var(--leaf-size) * .52);background:linear-gradient(145deg,#d3db89,#699f54);border-radius:0 85% 0 85%;box-shadow:inset -.08cqw -.08cqw #63965b77,0 .1cqw .15cqw #294f2420;opacity:0;pointer-events:none}
.weather-flying-leaf:nth-child(3n){background:linear-gradient(145deg,#e2ca72,#b38a49)}
.weather-objects[data-effect="wind"] .weather-flying-leaf{animation:weather-leaf var(--leaf-speed) linear var(--leaf-delay) infinite}
.weather-wind-lines i{position:absolute;left:-15%;width:12cqw;height:2.4cqw;border-top:.15cqw solid #ffffff82;border-radius:50%;opacity:0}
.weather-objects[data-effect="wind"] .weather-wind-lines i{animation:weather-gust 3.5s linear var(--gust-delay) infinite}
.weather-garden-sprig{position:absolute;right:7%;top:53%;width:8%;height:15%;transform-origin:50% 100%;pointer-events:none}
.weather-garden-sprig-two{right:1%;top:57%;transform:scale(.72);opacity:.8}
.weather-garden-sprig:before{content:"";position:absolute;left:48%;top:12%;width:4%;height:82%;border-radius:100%;background:#7d9c62}
.weather-garden-sprig i{position:absolute;left:18%;top:22%;width:36%;height:24%;border-radius:65% 10% 65% 10%;background:linear-gradient(145deg,#b3c47c,#7b9a56);transform:rotate(17deg)}
.weather-garden-sprig i:nth-child(2){left:51%;top:34%;transform:rotate(78deg)}
.weather-garden-sprig i:nth-child(3){left:19%;top:51%;transform:rotate(10deg)}
.weather-garden-sprig i:nth-child(4){left:50%;top:63%;transform:rotate(79deg)}
.weather-garden-sprig i:nth-child(5){left:36%;top:1%;transform:rotate(-23deg)}
.weather-objects[data-effect="wind"] .weather-garden-sprig{animation:weather-plant 1.65s ease-in-out infinite}
.weather-objects[data-effect="wind"] .weather-garden-sprig-two{animation-delay:-.55s}
.weather-objects[data-active="false"] *{animation-play-state:paused!important}
@keyframes weather-ray-shift{0%,100%{transform:rotate(-2deg);opacity:.8}50%{transform:rotate(3deg);opacity:1}}
@keyframes weather-sky-drift{0%{translate:-4% 0}100%{translate:7% 1%}}
@keyframes weather-cloud-gust{0%{translate:-100% 0}100%{translate:100% 0}}
@keyframes weather-wind-sway{0%,100%{transform:rotate(-3deg)}48%{transform:rotate(6deg)}}
@keyframes weather-pinwheel-spin{to{transform:rotate(360deg)}}
@keyframes weather-drop{0%{opacity:0;transform:translate(1.4cqw,-4cqw) rotate(15deg)}12%{opacity:.85}83%{opacity:.72}100%{opacity:0;transform:translate(-4.5cqw,26cqw) rotate(15deg)}}
@keyframes weather-ripple{0%{opacity:0;transform:scale(.12)}15%{opacity:.7}75%{opacity:.5}100%{opacity:0;transform:scale(1.65)}}
@keyframes weather-leaf{0%{opacity:0;transform:translate(-5cqw,0) rotate(-25deg)}9%{opacity:.9}46%{transform:translate(45cqw,-4cqw) rotate(var(--leaf-turn));opacity:.95}90%{opacity:.85}100%{opacity:0;transform:translate(116cqw,3cqw) rotate(calc(var(--leaf-turn) + 220deg))}}
@keyframes weather-gust{0%{opacity:0;transform:translateX(-5cqw)}15%{opacity:.75}75%{opacity:.5}100%{opacity:0;transform:translateX(125cqw)}}
@keyframes weather-plant{0%,100%{rotate:-5deg}48%{rotate:11deg}}
@media(prefers-reduced-motion:reduce){.weather-objects *{animation:none!important;transition:none!important}.scene[data-room="weather"] .layer-background{transition:none}.weather-feedback-static .weather-playing .weather-toy-art{filter:drop-shadow(0 0 .65cqw #fff1a7b0) brightness(1.06)}.weather-objects[data-effect="rain"] .weather-falling-drop:nth-child(3n){opacity:.7;transform:rotate(15deg)}.weather-objects[data-effect="rain"] .weather-ripple:nth-child(2n){opacity:.55}.weather-objects[data-effect="wind"] .weather-flying-leaf:nth-child(3n){opacity:.8;left:70%;transform:rotate(var(--leaf-turn))}.weather-objects[data-effect="wind"] .weather-cloud-bank-a{translate:0 0}}

