/* ARM · motion layer. Everything here is additive and reduced-motion safe. */

/* scroll progress */
.fx-prog{position:fixed;top:0;left:0;right:0;height:2px;z-index:80;background:transparent;pointer-events:none}
.fx-prog i{display:block;height:100%;width:100%;transform:scaleX(0);transform-origin:0 50%;background:linear-gradient(90deg,var(--pop),var(--blue-bright));will-change:transform}

/* word reveal */
.fx-w{display:inline-block;overflow:hidden;vertical-align:top}
.fx-w>span{display:inline-block;transform:translateY(105%);opacity:0;transition:transform .78s cubic-bezier(.19,1,.22,1),opacity .5s ease;transition-delay:calc(var(--i,0) * 42ms)}
.fx-in .fx-w>span{transform:none;opacity:1}

/* kinetic hero type: tracks tighter as the hero leaves */
.b-hero .display{letter-spacing:calc(-0.035em - (var(--fx-scrub,0) * 0.022em));will-change:letter-spacing}

/* audience marquee */
.b-strip-row.fx-marquee{display:flex;flex-wrap:nowrap;gap:0;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.fx-track{display:flex;flex:none;gap:0;will-change:transform}
.fx-track span{display:inline-flex;align-items:center;white-space:nowrap;padding-inline:1.6rem}
.fx-track span::after{content:"";width:5px;height:5px;border-radius:50%;background:var(--pop);margin-left:1.6rem;opacity:0.55}

/* cursor spotlight on dark surfaces */
.fx-spot{position:relative;isolation:isolate}
.fx-spot::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;border-radius:inherit;opacity:0;transition:opacity .4s ease;background:radial-gradient(340px circle at var(--mx,50%) var(--my,50%),rgba(59,130,255,0.18),transparent 68%)}
.fx-spot.is-hot::before{opacity:1}
.fx-spot>*{position:relative;z-index:1}

/* film grain on the navy bands */
.section.dark::after,.cta-card::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;opacity:0.4;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E")}
.cta-card{overflow:hidden}

/* magnetic buttons */
.btn.fx-mag{will-change:transform;transition:transform .34s cubic-bezier(.19,1,.22,1),background .18s ease,color .18s ease}

/* pointer tilt on the coaching cards */
.feat-card.fx-tilt{transform-style:preserve-3d;transition:transform .5s cubic-bezier(.19,1,.22,1),box-shadow .5s ease}

@media (prefers-reduced-motion:reduce){
  .fx-w>span{transform:none;opacity:1;transition:none}
  .fx-track{transform:none!important}
  .b-hero .display{letter-spacing:-0.035em}
  .section.dark::after,.cta-card::after{display:none}
}
