/* PUZRU Galaxy v6: game-specific 1.5s cinematic transitions; NO moving circle or rotating arc. */
.puzru-scene{position:fixed;inset:0;z-index:2147483600;isolation:isolate;overflow:hidden;display:grid;place-items:center;color:var(--scene-accent);background:#080d18;opacity:1;pointer-events:all;contain:layout paint;}
.puzru-scene:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 55% 43% at 50% 48%,color-mix(in srgb,var(--scene-accent) 12%,#0e1522),#080d18 85%);pointer-events:none;}
.puzru-scene .scene-halo{position:absolute;width:min(70vw,400px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--scene-accent) 13%,transparent),transparent 68%);filter:blur(22px);opacity:0;transform:scale(.65);}
.puzru-scene.is-playing .scene-halo{animation:galaxyHalo 1.45s ease-in-out both}
@keyframes galaxyHalo{0%{opacity:0;transform:scale(.65)}45%{opacity:.85}100%{opacity:.35;transform:scale(1.1)}}
.puzru-scene .scene-content{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;width:min(72vw,330px);}
.puzru-scene .scene-visual{width:clamp(168px,48vw,240px);aspect-ratio:1;display:grid;place-items:center;opacity:0;transform:translateY(12px) scale(.94)}
.puzru-scene.is-playing .scene-visual{animation:galaxyEnter 1.45s cubic-bezier(.22,.7,.18,1) both}
@keyframes galaxyEnter{0%{opacity:0;transform:translateY(12px) scale(.94)}24%{opacity:1;transform:translateY(0) scale(1)}90%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:1;transform:translateY(0) scale(1)}}
.puzru-scene .scene-visual svg{display:block;width:100%;height:100%;overflow:hidden;}
.puzru-scene .scene-text{text-align:center;display:flex;flex-direction:column;align-items:center;gap:5px;white-space:nowrap;opacity:0;transform:translateY(8px)}
.puzru-scene.is-playing .scene-text{animation:galaxyCaption 1.42s ease both}
@keyframes galaxyCaption{0%,15%{opacity:0;transform:translateY(8px)}35%,100%{opacity:1;transform:translateY(0)}}
.puzru-scene .scene-text small{font:750 10px/1.1 system-ui,sans-serif;letter-spacing:3px;color:#9faac4;}
.puzru-scene .scene-text strong{font:900 clamp(26px,8vw,36px)/1.12 system-ui,sans-serif;letter-spacing:-1.1px;color:#f5f7ff;}
.puzru-scene .scene-progress{width:min(180px,46vw);height:2px;background:#ffffff16;border-radius:10px;overflow:hidden;margin-top:6px;}
.puzru-scene .scene-progress i{display:block;width:100%;height:100%;border-radius:10px;background:var(--scene-accent);transform:scaleX(0);transform-origin:left center;box-shadow:0 0 12px var(--scene-accent);}
.puzru-scene.is-playing .scene-progress i{animation:galaxyProgress 1.43s linear both}
@keyframes galaxyProgress{to{transform:scaleX(1)}}
/* Time: twelve independent fixed-position markers illuminate in sequence. */
.world-scene-time .time-ticks line{opacity:.2;}
.world-scene-time.is-playing .time-ticks line{animation:timePulse .7s ease-out both;animation-delay:calc(.16s + var(--n)*.048s)}
@keyframes timePulse{0%{opacity:.18;stroke-width:1.6}65%{opacity:1;stroke-width:3.2}100%{opacity:.72;stroke-width:2.1}}
.world-scene-time .time-heart{transform-origin:80px 80px;}
.world-scene-time.is-playing .time-heart{animation:timeHeart 1.3s ease-in-out both}
@keyframes timeHeart{0%,100%{transform:scale(1)}48%{transform:scale(1.18)}}
/* Shape: two static geometric figures glide into a single clean alignment. */
.world-scene-shape .shape-first{transform:translate(-12px,9px) scale(.91);transform-origin:80px 80px;opacity:.38}
.world-scene-shape .shape-second{transform:translate(14px,-10px) scale(1.06);transform-origin:80px 80px;opacity:.28}
.world-scene-shape.is-playing .shape-first{animation:shapeAlign 1.12s cubic-bezier(.18,.85,.22,1) .12s both}
.world-scene-shape.is-playing .shape-second{animation:shapeTrace 1.12s cubic-bezier(.18,.85,.22,1) .12s both}
@keyframes shapeAlign{0%{transform:translate(-12px,9px) scale(.91);opacity:.38}70%,100%{transform:translate(0,0) scale(1);opacity:.9}}
@keyframes shapeTrace{0%{transform:translate(14px,-10px) scale(1.06);opacity:.28}70%,100%{transform:translate(0,0) scale(1);opacity:.95}}
/* Sound: bars breathe independently, with no translated or rotated parent graphics. */
.world-scene-sound .sound-bars line{transform-box:fill-box;transform-origin:center;}
.world-scene-sound.is-playing .sound-bars line{animation:soundWave 1.18s ease-in-out .12s both;animation-delay:calc(.08s + var(--i)*.055s)}
@keyframes soundWave{0%{transform:scaleY(.27);opacity:.28}40%{transform:scaleY(1);opacity:1}67%{transform:scaleY(.56);opacity:.8}100%{transform:scaleY(.84);opacity:1}}
/* Spectrum: six color nodes fade in one by one, never moving outside their fixed positions. */
.world-scene-spectrum .spectrum-petals circle{opacity:0;transform-box:fill-box;transform-origin:center}
.world-scene-spectrum.is-playing .spectrum-petals circle{animation:spectrumBloom .8s ease-out both;animation-delay:calc(.14s + var(--i)*.085s)}
@keyframes spectrumBloom{0%{opacity:0;transform:scale(.55)}75%,100%{opacity:1;transform:scale(1)}}
.world-scene-spectrum .spectrum-center{opacity:.45}.world-scene-spectrum.is-playing .spectrum-center{animation:centerAwake 1s ease-out .24s both}
@keyframes centerAwake{from{opacity:.45}to{opacity:1}}
/* Hub: the four tiles converge to a four-world mark without any arc animation. */
.world-scene-all .senses-tiles rect{opacity:0;transform-box:fill-box;transform-origin:center}
.world-scene-all.is-playing .senses-tiles rect{animation:tileArrive .85s cubic-bezier(.18,.78,.24,1) both;animation-delay:calc(.16s + var(--i)*.11s)}
@keyframes tileArrive{0%{opacity:0;transform:scale(.45)}100%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.puzru-scene *{animation:none!important;transition:none!important}.puzru-scene .scene-halo{opacity:.25!important}.puzru-scene .scene-visual,.puzru-scene .scene-text{opacity:1!important;transform:none!important}.puzru-scene .scene-progress i{transform:scaleX(1)!important}.world-scene-spectrum .spectrum-petals circle,.world-scene-all .senses-tiles rect{opacity:1!important;transform:none!important}}
