/* Text-only entrance: no canvas filters, layout changes or loading gate. */
.intro-line{display:block;padding:.04em 0 .08em;margin:-.04em 0 -.08em}
.intro-line-inner{display:block}
.intro-title .intro-line,.intro-title .intro-line-inner:not(.accent-line){color:inherit;background:none;-webkit-text-fill-color:currentColor}
.intro-title .accent-line{color:#9ab9e8;background:linear-gradient(110deg,#f2f8ff,#7dafed 50%,#71e5e1);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.js-reveal .reveal{transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1)}
.hero .reveal,.js-reveal .hero .reveal:not(.visible){opacity:1;transform:none;filter:none}
/* CSS begins at first paint, avoiding a visible-then-hidden JavaScript flash.
   Backwards fill holds each stagger's start; final styles remain ordinary CSS. */
@keyframes hero-text-reveal{
  from{opacity:0;transform:translateY(20px)}
  to{opacity:1;transform:translateY(0)}
}
.hero .eyebrow,.hero .intro-line-inner,.hero .hero-copy,.hero .hero-proof>div{
  animation:hero-text-reveal .76s cubic-bezier(.22,1,.36,1) backwards;
}
.hero .eyebrow{animation-duration:.6s}
.hero .intro-line:nth-child(1) .intro-line-inner{animation-delay:.08s}
.hero .intro-line:nth-child(2) .intro-line-inner{animation-delay:.16s}
.hero .intro-line:nth-child(3) .intro-line-inner{animation-delay:.24s}
.hero .hero-copy{animation-delay:.34s}
.hero .hero-proof>div{animation-duration:.6s;animation-delay:.42s}
.hero .hero-proof>div:nth-child(2){animation-delay:.48s}
.hero .hero-proof>div:nth-child(3){animation-delay:.54s}
.hero-text-reveal-off .hero .eyebrow,
.hero-text-reveal-off .hero .intro-line-inner,
.hero-text-reveal-off .hero .hero-copy,
.hero-text-reveal-off .hero .hero-proof>div{animation:none}
@media(prefers-reduced-motion:reduce){.js-reveal .reveal:not(.visible){opacity:1;transform:none;filter:none}}
