/* Scene art stays behind the original high-resolution, unaltered island. */
.background-elements .scenery-panorama,.scenery-stars{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
body[data-scenery="waterfalls"] .background-elements :is(.distant-island,.tree-island,.floating-rock,.sun-rays){display:none}
body[data-scenery="waterfalls"] .background-elements .cloud{opacity:.28}
body[data-scenery="clouds"] .background-elements :is(.distant-island,.tree-island,.floating-rock){display:none}
body[data-scenery="clouds"] .background-elements .cloud{width:min(70vw,1000px);opacity:.9}
body[data-scenery="isles"] .distant-island{width:clamp(160px,23vw,350px);height:42vh;left:1%;top:12%}
body[data-scenery="isles"] .tree-island{width:clamp(160px,24vw,380px);height:42vh;right:1%;bottom:7%}
body[data-scenery="isles"] .floating-rock{width:clamp(70px,9vw,150px);height:26vh;right:23%;top:8%}
body[data-scenery="stars"] .background-elements :is(.sun-rays,.floating-rock){display:none}
body[data-scenery="stars"] .background-elements .cloud{opacity:.3}
.scenery-fieldset{border:0;padding:0;margin:18px 0;min-width:0}.scenery-fieldset legend{font-size:16px;font-weight:700}.scenery-fieldset p{font-size:14px;line-height:1.7;margin:7px 0 12px}.scenery-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.scenery-options button{padding:0 0 10px;border:1px solid #72b5b5;border-radius:12px;overflow:hidden;background:#effffa;color:#174c53;min-height:94px;text-align:center;display:flex;flex-direction:column;gap:7px;align-items:center;font-size:14px;line-height:1.5}.scenery-options img{width:100%;height:60px;object-fit:cover;background:linear-gradient(#4aa4c6,#cae8ef)}.scenery-options [data-scenery-choice="stars"] img{filter:brightness(.25) saturate(1.5)}.scenery-options [aria-pressed="true"]{outline:3px solid #267e7a;outline-offset:2px;background:#d6f4df}.scenery-options button:focus-visible{outline:3px solid #775ca2;outline-offset:3px}
/* Only the observer's visible budget runs, and source-alpha masks keep light on art. */
.world-item.life-managed>img,.world-item.life-managed::before,.world-item.life-managed>.living-surface{animation:none!important}
.world-item.life-managed>.living-surface{display:none}
.world-item.life-managed:not(.life-active)::before{display:none}
.world-item.life-managed.life-active.swaying>img{transform-origin:50% var(--life-root,92%);animation:life-tree var(--life-duration,9s) ease-in-out infinite var(--life-direction,alternate)!important;animation-delay:var(--life-phase,0s)!important}
.world-item.life-managed.life-active.flower-sway>img{transform-origin:50% var(--life-root,92%);animation:life-flower var(--life-duration,9s) ease-in-out infinite var(--life-direction,alternate)!important;animation-delay:var(--life-phase,0s)!important}
.world-item.life-managed.life-active.floating>img{animation:life-crystal-float var(--life-duration,9s) ease-in-out infinite!important;animation-delay:var(--life-phase,0s)!important}
.life-glints{position:absolute;inset:0;pointer-events:none;mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;z-index:3}
.life-glints i{position:absolute;left:calc(29% + var(--g)*21%);top:calc(26% + var(--g)*17%);width:14%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff9c7e0 0,#bbffff88 16%,#85f7ff00 68%);opacity:0;animation:life-glint var(--life-duration,9s) ease-in-out infinite;animation-delay:calc(var(--life-phase,0s) + var(--g)*1.1s)}
.life-water i{top:calc(53% + var(--g)*12%);width:18%;background:radial-gradient(circle,#fff 0,#d8ffff90 15%,#91e9ff00 65%)}.life-lantern i{background:radial-gradient(circle,#fff1b7 0,#ffd66780 16%,#ffd56c00 65%)}
@keyframes life-tree{0%,18%{transform:rotate(-.45deg) skewX(-.25deg)}68%,100%{transform:rotate(.55deg) skewX(.2deg)}}
@keyframes life-flower{0%,25%{transform:rotate(-.45deg)}65%,100%{transform:rotate(.6deg)}}
@keyframes life-crystal-float{0%,100%{transform:translateY(0) rotate(-.6deg)}50%{transform:translateY(-2px) rotate(.6deg)}}
@keyframes life-glint{0%,12%,35%,100%{opacity:0;transform:scale(.65)}22%{opacity:.82;transform:scale(1.15)}}
.garden-reveal{position:absolute;z-index:2100;width:0;height:0;pointer-events:none;color:#fff4bd}
.reveal-ring{position:absolute;left:0;top:0;width:var(--reveal-width);height:calc(var(--reveal-width)*.55);border:1.5px solid currentColor;border-radius:50%;box-shadow:0 0 8px #d9ffff70;animation:reveal-ring 1.7s ease-out both;animation-delay:var(--reveal-delay)}
.reveal-particle{position:absolute;left:0;top:-5px;font:16px/1 Georgia,serif;animation:reveal-particle 1.65s ease-out both;animation-delay:calc(var(--reveal-delay) + var(--n)*.06s);text-shadow:0 0 4px #fff8}
.reveal-bloom{color:#d8ff9d}.reveal-bloom .reveal-particle:nth-child(even){color:#ffdf9d}.reveal-water{color:#b8f9ff}.reveal-landmark{color:#ffe8a3}.reveal-landmark .reveal-ring{border-width:2px;animation-duration:2.1s}.reveal-landmark .reveal-particle{font-size:21px;animation-duration:2s}
@keyframes reveal-ring{0%{opacity:0;transform:translate(-50%,-50%) scale(.55)}20%{opacity:.8}100%{opacity:0;transform:translate(-50%,-50%) scale(1.45)}}
@keyframes reveal-particle{0%{opacity:0;transform:translate(-50%,-50%) scale(.25)}20%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.6) rotate(40deg)}}
body.reduced-motion :is(.life-glints,.garden-reveal),body[data-effects="off"] :is(.life-glints,.garden-reveal),body[data-graphics-level="battery"] :is(.life-glints,.garden-reveal),.photo-mode :is(.life-glints,.garden-reveal,.completion-label){display:none}
body.reduced-motion .world-item.life-managed>img,body[data-effects="off"] .world-item.life-managed>img,body[data-graphics-level="battery"] .world-item.life-managed>img{animation:none!important}
@media(prefers-reduced-motion:reduce){.life-glints,.garden-reveal{display:none}.world-item.life-managed>img{animation:none!important}}
@media(max-width:700px),(max-width:1400px) and (any-pointer:coarse){.scenery-options{grid-template-columns:repeat(2,minmax(0,1fr))}.scenery-options button{min-height:98px}.scenery-options img{height:60px}}
