/* Motion Pass 01. Static layout, original illustration and hit geometry are untouched.
   The score owns these entrances; suppress earlier competing CSS timelines. */
body.motion-polish{--motion-strike:cubic-bezier(.7,0,.16,1);--motion-lock:cubic-bezier(.12,.9,.18,1)}
body.motion-polish #main.enter .v2-hero .hero-copy,
body.motion-polish #main.enter .v2-hero .art,
body.motion-polish #main.enter .v2-title-make,
body.motion-polish #main.enter .v2-title-your,
body.motion-polish #main.enter .v2-title-own,
body.motion-polish #main.enter .hero-cut,
body.motion-polish #main.enter .frost-character-body,
body.motion-polish #main.enter .frost-character-front{animation:none!important}
/* These stay at their composed HOME positions beneath the existing stable exit. */
body.motion-polish.gate-home-arrival #main .v2-hero-description,
body.motion-polish.gate-home-arrival #main .v2-cta,
body.motion-polish.gate-home-arrival #main .chiqi-response-slot,
body.motion-polish.gate-home-arrival #main .v2-hero-top,
body.motion-polish.gate-home-arrival #main .hero-bottom,
body.motion-polish.gate-home-arrival>header{animation:none!important}
body.motion-polish #drawer.opening{animation:none!important;translate:0 0;clip-path:none}
body.motion-polish #drawer.opening .menu-paper-layer,
body.motion-polish #drawer.opening .menu-red-layer,
body.motion-polish #drawer.opening .menu-word,
body.motion-polish #drawer.opening .poster-heading>span,
body.motion-polish #drawer .composition-live,
body.motion-polish #drawer .poster-snap .digit-upper,
body.motion-polish #drawer .poster-snap .digit-lower,
body.motion-polish #drawer .poster-snap .device-heart,
body.motion-polish #drawer .poster-snap .composition-character{animation:none!important}
body.motion-polish #drawer .composition-digit,
body.motion-polish #drawer .composition-anchor{transition:none}
body.motion-polish #drawer a:before{transition:transform 110ms var(--motion-strike)}
body.motion-polish #drawer a.poster-selected .fr-arrow{translate:3px -3px;transition:translate 110ms var(--motion-lock)}
body.motion-polish #drawer a .menu-word{transition:transform 110ms var(--motion-lock)}
/* Individual translate/scale preserve original SVG transforms and paper rotations. */
#intro.mp-bridge #ready .archive-figure,
#intro.mp-bridge #ready .archive-figure-front,
#intro.mp-bridge #ready .archive-command,
#intro.mp-bridge #ready .archive-command-shadow{transform-box:view-box;transform-origin:50% 50%}
/* No persistent will-change surfaces, filters, rAF loops, particles or new overlays. */
@media(prefers-reduced-motion:reduce){body.motion-polish #drawer a:before,body.motion-polish #drawer .menu-word,body.motion-polish #drawer .fr-arrow{transition:none!important}}
body.motion-polish.reduced #drawer a:before,body.motion-polish.reduced #drawer .menu-word,body.motion-polish.reduced #drawer .fr-arrow{transition:none!important}
