/* ============================================================
   IRONPULSE — motion layer
   Aggressive and kinetic: countdown intro, blend-mode cursor,
   pinned horizontal programs, velocity skew. Progressive — the
   site works from style.css alone.
   ============================================================ */

html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }

/* GSAP takes over CSS-driven entrances */
.has-motion .rv { opacity: 1; transform: none; transition: none; }
.has-motion .kinetic .ch { animation: none; transform: none; }
.has-motion .marquee-track { animation: none; }
.has-motion .btn { transition: background .2s; }
.has-motion .btn:hover { transform: none; }
.has-motion .plan { transition: border-color .3s; }
.has-motion .plan:hover { transform: none; }

/* ---------- countdown intro ---------- */
.countdown { display: none; }
.has-motion .countdown { position: fixed; inset: 0; z-index: 300; display: grid; place-items: center; background: #000; overflow: hidden; cursor: pointer; }
.countdown span { grid-area: 1 / 1; font-family: var(--display); font-size: clamp(10rem, 40vw, 34rem); line-height: 1; color: var(--white); opacity: 0; }
.countdown .go { color: #000; z-index: 2; }
.cd-wipe { grid-area: 1 / 1; place-self: stretch; background: var(--lime); transform: scaleY(0); transform-origin: bottom; z-index: 1; }

/* ---------- blend-mode cursor (mouse only) ---------- */
.cursor { display: none; }
@media (hover: hover) and (pointer: fine) {
  .has-motion .cursor { display: grid; place-items: center; position: fixed; left: 0; top: 0; z-index: 250; width: 22px; height: 22px; margin: -11px 0 0 -11px; border-radius: 50%; background: #fff; mix-blend-mode: difference; pointer-events: none; transition: width .3s var(--snap), height .3s var(--snap), margin .3s var(--snap); }
  .has-motion .cursor.grow { width: 70px; height: 70px; margin: -35px 0 0 -35px; }
  .has-motion .cursor.label { width: 96px; height: 96px; margin: -48px 0 0 -48px; mix-blend-mode: normal; background: var(--lime); }
  .cursor span { font: 800 .8rem var(--body); text-transform: uppercase; letter-spacing: .08em; color: #000; opacity: 0; }
  .has-motion .cursor.label span { opacity: 1; }
  .has-motion .prog, .has-motion .coach { cursor: none; }
}

/* ---------- programs as a pinned horizontal track ---------- */
@media (min-width: 961px) {
  .has-motion .programs { overflow: hidden; min-height: 100vh; display: flex; flex-direction: column; justify-content: center; }
  .has-motion .prog-grid { display: flex; width: max-content; gap: 1.2rem; background: none; border: 0; }
  .has-motion .prog { width: min(34vw, 480px); min-height: 52vh; border: 1px solid var(--line); }
  .has-motion .prog h3 { font-size: clamp(2.4rem, 4vw, 4rem); }
}

/* skew target */
.skewable { will-change: transform; }

/* scramble text keeps width steady */
.nav-links a { font-variant-numeric: tabular-nums; }
