.world-scene{background-size:cover;background-position:center;animation:none;will-change:opacity}
.world-scene.active{animation:scene-breath 24s ease-in-out infinite alternate}
.world-light{background:radial-gradient(ellipse at 6% 25%,var(--scene-accent,#ffd780),transparent 23%),radial-gradient(ellipse at 96% 68%,var(--scene-accent,#ffd780),transparent 20%);opacity:.16;animation:scene-lights 5s ease-in-out infinite alternate;filter:none}
.phone[data-weather=aurora] .world-light{inset:-8% -35% 45%;background:repeating-linear-gradient(110deg,transparent 0 11%,#87edce77 14%,#8995ef55 19%,transparent 25%);filter:blur(14px);opacity:.4;transform-origin:top;animation:scene-aurora 14s ease-in-out infinite alternate;mask-image:linear-gradient(#000,transparent)}
.phone[data-weather=tide] .world-light{inset:20% 0 0;background:repeating-linear-gradient(0deg,transparent 0 35px,#81d8df22 37px,transparent 40px);opacity:.23;filter:none;animation:scene-reflections 9s ease-in-out infinite alternate;mask-image:linear-gradient(transparent,#000 25%,transparent 90%)}
.world-motes{position:absolute;inset:0;pointer-events:none;opacity:.8}.world-motes i{position:absolute;left:var(--side);top:var(--y);width:3px;height:3px;border-radius:50%;background:var(--scene-accent);box-shadow:0 0 8px 2px var(--scene-accent);opacity:0;animation:scene-twinkle var(--speed) var(--delay) ease-in-out infinite}
.phone[data-weather=fireflies] .world-motes i{animation-name:scene-firefly;width:4px;height:4px}
.phone[data-weather=embers] .world-motes i{animation-name:scene-ember;width:2px;height:4px}
.world-mist{position:absolute;left:-20%;right:-20%;height:35%;bottom:0;background:radial-gradient(ellipse at 25% 85%,#b5e2ec22,transparent 55%),radial-gradient(ellipse at 75% 90%,#e1edf222,transparent 50%);opacity:0;pointer-events:none}
.phone[data-weather=mist] .world-mist{opacity:.6;animation:scene-mist 19s ease-in-out infinite alternate}
.world-comet{display:none;position:absolute;left:85%;top:8%;width:80px;height:2px;transform:rotate(-24deg);background:linear-gradient(90deg,transparent,#fff4d8);filter:drop-shadow(0 0 4px #dcefff);animation:scene-comet 13s linear infinite;pointer-events:none}
.phone[data-weather=stars] .world-comet{display:block}
.scenery-sleep .world *{animation-play-state:paused!important}
@keyframes scene-breath{from{transform:scale(1.015) translateY(-.3%)}to{transform:scale(1.045) translateY(.3%)}}
@keyframes scene-lights{from{opacity:.09}to{opacity:.21}}
@keyframes scene-aurora{from{transform:skewX(-12deg) translateX(-5%);opacity:.3}to{transform:skewX(14deg) translateX(6%);opacity:.48}}
@keyframes scene-reflections{from{transform:translateY(-8px) scaleX(.96);opacity:.13}to{transform:translateY(10px) scaleX(1.04);opacity:.25}}
@keyframes scene-twinkle{0%,100%{opacity:.12;transform:scale(.6)}45%{opacity:.8;transform:scale(1.15)}60%{opacity:.35;transform:scale(.9)}}
@keyframes scene-firefly{0%,100%{opacity:.1;transform:translate(0,0)}40%{opacity:.8;transform:translate(8px,-16px)}70%{opacity:.4;transform:translate(-6px,-8px)}}
@keyframes scene-ember{0%{opacity:0;transform:translateY(12px) scale(.7)}20%{opacity:.6}75%{opacity:.3}100%{opacity:0;transform:translate(5px,-55px) scale(.4)}}
@keyframes scene-mist{from{transform:translateX(-7%) scaleY(.8)}to{transform:translateX(7%) scaleY(1.15)}}
@keyframes scene-comet{0%,86%{opacity:0;transform:translate(0,0) rotate(-24deg)}88%{opacity:.8}96%,100%{opacity:0;transform:translate(-380px,140px) rotate(-24deg)}}
@media(prefers-reduced-motion:reduce){.world-scene.active,.world-light,.world-motes i,.world-mist,.world-comet{animation:none!important;transition:none!important}.world-motes i{opacity:.25}.world-comet{display:none!important}.world-scene.active{transform:none}}
