/* Animation only. No layout, copy, colors, paths, crops or responsive rules change. */
.ambient-shell,.stage-wrap,.photo-drift,.glyph{transform-box:fill-box;transform-origin:center}
.motion-on.art-ready .ambient-shell.in-view{animation:ambient-float var(--float-time,5s) ease-in-out var(--float-phase,0s) infinite}
@keyframes ambient-float{0%,100%{translate:0 0}25%{translate:var(--float-x,8px) var(--float-y,-18px)}50%{translate:0 calc(var(--float-y,-18px)*.45)}75%{translate:calc(var(--float-x,8px)*-.5) calc(var(--float-y,-18px)*-.3)}}
.lively.motion-on [data-motion=float].in-view{animation:soft-breathe 4.6s ease-in-out var(--loop-delay,0s) infinite}
@keyframes soft-breathe{0%,100%{scale:1;opacity:1}50%{scale:1.075;opacity:.85}}
.lively.motion-on [data-motion=guide].in-view{animation:guide-bounce 2.2s ease-in-out infinite}
@keyframes guide-bounce{0%,18%,100%{translate:0 0}38%{translate:0 24px}55%{translate:0 0}70%{translate:0 13px}85%{translate:0 0}}
.motion-on.art-ready .photo-drift.in-view{animation:photo-breathe var(--photo-time,8s) ease-in-out var(--photo-phase,0s) infinite}
@keyframes photo-breathe{0%,100%{scale:1;translate:0 0;rotate:0deg}35%{scale:1.018;translate:0 -10px;rotate:var(--photo-lean,.4deg)}70%{scale:1.008;translate:0 5px;rotate:calc(var(--photo-lean,.4deg)*-.5)}}
.lively.motion-on.art-ready .part-entry.in-view{animation:photo-arrive 1.3s cubic-bezier(.175,.885,.32,1.12) var(--entry-delay,0s) both,part-opacity .5s ease-out var(--entry-delay,0s) both}
@keyframes photo-arrive{0%{translate:var(--entry-x,0%) var(--entry-y,0%);scale:.96}60%{translate:0 -8px;scale:1.015}80%{translate:0 3px;scale:.997}100%{translate:0 0;scale:1}}
.motion-on:not(.art-ready) .glyph,.motion-on:not(.art-ready) .stage-wrap,.motion-on [data-sequence]:not(.in-view) .glyph,.motion-on .stage-wrap:not(.in-view){opacity:0}
.motion-on.art-ready [data-sequence].in-view>.glyph{animation:glyph-pop .6s cubic-bezier(.175,.885,.32,1.275) var(--glyph-delay,0s) both}
@keyframes glyph-pop{0%{opacity:0;translate:0 45px;scale:.84}65%{opacity:1;translate:0 -6px;scale:1.04}100%{opacity:1;translate:0 0;scale:1}}
.motion-on.art-ready .stage-wrap.in-view[data-stage=spring]{animation:stage-spring 1.5s ease-out var(--stage-delay,0s) both}
@keyframes stage-spring{0%{opacity:0;scale:.5 .65;translate:0 24px}30%{opacity:1;scale:1.08 1.13;translate:0 -8px}47%{scale:.98 .94;translate:0 4px}65%{scale:1.012 1.035;translate:0 -2px}82%{scale:1 .99;translate:0 0}100%{opacity:1;scale:1;translate:0 0}}
.motion-on.art-ready .stage-wrap.in-view[data-stage=script]{animation:script-land 1.1s cubic-bezier(.175,.885,.32,1.275) var(--stage-delay,0s) both}
@keyframes script-land{0%{opacity:0;scale:.7;rotate:-12deg;translate:-30px 20px}65%{opacity:1;scale:1.04;rotate:2deg;translate:0 0}100%{opacity:1;scale:1;rotate:0deg;translate:0 0}}
.motion-on.art-ready .stage-wrap.in-view[data-stage=rise]{animation:stage-rise .8s cubic-bezier(.16,1,.3,1) var(--stage-delay,0s) both}
@keyframes stage-rise{from{opacity:0;translate:0 40px}to{opacity:1;translate:0 0}}
body.motion-off .ambient-shell,body.motion-off .photo-drift,body.motion-off .glyph,body.motion-off .stage-wrap{animation:none;opacity:1;scale:1;rotate:0deg;translate:0 0}
body.document-hidden .original-lp *{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.ambient-shell,.photo-drift,.glyph,.stage-wrap{animation:none!important;opacity:1!important;scale:1!important;rotate:0deg!important;translate:0 0!important}}
.motion-on.art-ready [data-sequence][data-gate]:not(.gate-ready)>.glyph,.motion-on.art-ready .stage-wrap[data-gate]:not(.gate-ready){animation:none;opacity:0}

/* Keep animation positions when the parent case page is being read. */
body.embed-paused *,body.embed-paused *::before,body.embed-paused *::after{animation-play-state:paused!important}
