/* One expo-out token for all responsive interaction. */
[data-reveal]{opacity:1;transform:none}
[data-reveal].is-in{animation:snag-reveal 600ms var(--ease) both}
[data-reveal].is-in>:not(.beam-flow):not(.rail-scroll):not(.snag-lottie){animation:snag-reveal 600ms var(--ease) var(--reveal-delay,0ms) both}
@keyframes snag-reveal{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.snag-number{font-variant-numeric:tabular-nums;font-feature-settings:'tnum';display:inline-block}
.snag-digit{display:inline-block;width:1ch;height:1.2em;line-height:1.2;overflow:hidden;vertical-align:bottom}
.snag-digit-reel{display:flex;flex-direction:column}.snag-digit-reel>span{display:block;height:1.2em}
.snag-digit-reel.up{animation:snag-digit-up 480ms var(--ease) both}.snag-digit-reel.down{animation:snag-digit-down 480ms var(--ease) both}
@keyframes snag-digit-up{from{transform:translateY(0)}to{transform:translateY(-50%)}}
@keyframes snag-digit-down{from{transform:translateY(-50%)}to{transform:translateY(0)}}
.rarity-read{animation:read-breathe 4s var(--ease) infinite}@keyframes read-breathe{0%,100%{opacity:1}50%{opacity:.82}}
.rail-piece{animation:rail-swing 600ms var(--ease) var(--reveal-delay,0ms) both}.rail-section.is-in .rail-piece{animation-name:rail-swing-reveal}
@keyframes rail-swing{from{transform:rotate(-7deg);opacity:0}to{transform:rotate(0);opacity:1}}@keyframes rail-swing-reveal{from{transform:rotate(-7deg);opacity:0}to{transform:rotate(0);opacity:1}}
[data-draw]{transform-box:fill-box;transform-origin:left;transform:scaleX(1)}.rule-item[open] [data-draw]{animation:rule-draw 650ms var(--ease) both}.rule-item [data-draw]:nth-child(2){animation-delay:80ms}.rule-item [data-draw]:nth-child(3){animation-delay:160ms}@keyframes rule-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.beam-horizontal .beam-dash{animation:beam-across 2.4s var(--ease) infinite}.beam-vertical .beam-dash{animation:beam-down 2.4s var(--ease) infinite}
@keyframes beam-across{from{transform:translateX(150px);opacity:0}15%{opacity:1}85%{opacity:1}to{transform:translateX(650px);opacity:0}}@keyframes beam-down{from{transform:translateY(60px);opacity:0}15%{opacity:1}85%{opacity:1}to{transform:translateY(420px);opacity:0}}
.how-strip.is-firing .beam-dash{animation-duration:560ms;animation-iteration-count:1}.how-strip.is-firing .beam-piece .beam-art{animation:piece-pop 480ms var(--ease) 360ms both}@keyframes piece-pop{from{transform:scale(.86);opacity:.65}to{transform:scale(1);opacity:1}}
.marquee-track{animation:piece-drift 90s linear infinite}.marquee-track:nth-child(2){animation-duration:110s;animation-direction:reverse}@keyframes piece-drift{to{transform:translateX(-50%)}}
#pieceMarquee:hover .marquee-track,#pieceMarquee:focus-within .marquee-track,.motion-paused .marquee-track,.motion-paused .beam-dash,.motion-paused .rarity-read{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}
 [data-reveal],.tilt-tile,[data-draw]{transform:none!important;opacity:1!important}.tile-sheen::after{transform:none!important}.snag-digit-reel.up{transform:translateY(-50%)}.snag-digit-reel.down{transform:translateY(0)}
 .marquee-track{display:block;width:100%;transform:none!important}.marquee-set{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));padding:0;gap:8px}.marquee-set[data-marquee-copy]{display:none}.marquee-tile{width:100%}.beam-dash{display:none}
}

.is-offscreen .marquee-track,.is-offscreen .beam-dash{animation-play-state:paused}
