@keyframes character-float{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-13px) rotate(1deg)}}
@keyframes mouse-scroll{0%,100%{transform:translateY(0);opacity:.4}50%{transform:translateY(4px);opacity:1}}
@keyframes star-burst{0%{transform:translate(0,0) rotate(0) scale(.5);opacity:0}20%{opacity:1}100%{transform:translate(var(--tx),var(--ty)) rotate(var(--rot)) scale(.2);opacity:0}}
@keyframes train-move{0%,100%{left:38px;bottom:28px}45%{left:190px;bottom:28px}55%{left:190px;bottom:90px}90%{left:38px;bottom:90px}}
@keyframes ribbon-drift{0%{transform:translateX(0)}100%{transform:translateX(-30%)}}
@keyframes enter-card{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes caption-pulse{0%{opacity:0;transform:translateY(5px)}100%{opacity:1;transform:translateY(0)}}
@keyframes sparkle-turn{0%,100%{transform:rotate(0) scale(1)}50%{transform:rotate(35deg) scale(.8)}}
@keyframes modal-in{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
:root{overflow-x:clip}.reveal{opacity:1;transform:none}.js-ready .reveal{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease),transform .8s var(--ease)}.js-ready .reveal.visible{opacity:1;transform:none}.hero-copy{animation:enter-card .9s var(--ease) both}.orbit-stage{animation:enter-card 1.2s .15s var(--ease) both}.orbit-star{animation:sparkle-turn 8s ease-in-out infinite}.star-two{animation-delay:-3s}.hero-character img{transition:filter .4s}.orbit-caption #orbit-caption.changed{animation:caption-pulse .35s var(--ease)}.note-card.entering{animation:enter-card .5s var(--ease) both;animation-delay:var(--delay,0ms)}.note-dialog[open]{animation:modal-in .3s var(--ease)}.life-panel.switching>img{opacity:.25;transform:scale(1.04)}.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation:none!important;transition:none!important}.motion-paused{scroll-behavior:auto}.motion-paused .reveal{opacity:1!important;transform:none!important;transition:none!important}.motion-paused .hero-character{transform:translateX(-50%)!important}.motion-paused .cursor-glow{display:none}.motion-paused .burst-star{display:none}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js-ready .reveal{opacity:1;transform:none}.hero-character{transform:translateX(-50%)!important}.cursor-glow{display:none}}
