/* Short, finite transitions: no flashing or permanently moving headings. */
.text-motion .motion-word{display:inline-block;vertical-align:baseline;opacity:0;transform:translate3d(0,.55em,0) rotate(1.5deg);filter:blur(5px);transition:opacity .8s ease,transform .9s cubic-bezier(.16,1,.3,1),filter .8s ease;transition-delay:var(--word-delay,0ms)}
.text-motion.text-entered .motion-word{opacity:1;transform:translate3d(0,0,0);filter:blur(0)}
.text-motion.text-entered{animation:heading-tint 3.8s ease .2s both}
.text-motion em,.hero h1.text-motion em{background:none;color:var(--purple);-webkit-text-fill-color:currentColor}
.text-motion.text-entered em{animation:accent-tint 4.6s ease .4s both}
.intro-enter{animation:intro-enter .9s cubic-bezier(.16,1,.3,1) var(--intro-delay,0ms) both}
.js-motion .reveal .copy-enter,.js-motion .copy-enter.reveal{opacity:0;transform:translateY(14px);transition:opacity .85s ease .3s,transform .85s ease .3s}
.js-motion .reveal.visible .copy-enter,.js-motion .copy-enter.reveal.visible{opacity:1;transform:translateY(0)}
@keyframes heading-tint{0%{color:#f3f1f8}42%{color:#d1b6ff}100%{color:#f3f1f8}}
@keyframes accent-tint{0%{color:#f0e8ff}35%{color:#a883f5}68%{color:#d4b4ff}100%{color:#b69aff}}
@keyframes intro-enter{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.text-motion .motion-word,.intro-enter,.js-motion .reveal .copy-enter,.js-motion .copy-enter.reveal{opacity:1!important;transform:none!important;filter:none!important;transition:none!important;animation:none!important}.text-motion.text-entered,.text-motion.text-entered em{animation:none!important}.text-motion em{color:var(--purple)}}
@media(forced-colors:active){.text-motion em,.hero h1.text-motion em{color:CanvasText;-webkit-text-fill-color:CanvasText}}

/* Opacity-only entrance preserves native line layout and avoids scroll-time repositioning. */
.text-motion{opacity:0;transition:opacity .65s ease}
.text-motion.text-entered{opacity:1}
@media(prefers-reduced-motion:reduce){.text-motion{opacity:1;transition:none}}
