/* $YPOP motion — Linea-inspired (MIT), brand colors kept.
   Animate transform/opacity only. One ease. Reduced-motion safe. */
:root{
  --motion-ease:cubic-bezier(.2,.7,.2,1);
  --motion-dur:.7s;
  --motion-dur-fast:.5s;
  --motion-dur-slow:.9s;
}

/* Progressive enhancement — content visible until JS opts into motion */
html:not([data-ypop-motion]) .reveal,
html:not([data-ypop-motion]) .reveal-stagger > *,
html:not([data-ypop-motion]) .reveal-left,
html:not([data-ypop-motion]) .reveal-scale,
html:not([data-ypop-motion]) .partners.reveal .marquee,
html:not([data-ypop-motion]) .motion-lines .line__in,
html:not([data-ypop-motion]) .path-step,
html:not([data-ypop-motion]) .path-panel{
  opacity:1!important;
  transform:none!important;
  transition:none!important;
  pointer-events:auto!important;
}
html:not([data-ypop-motion]) .path-panel{
  position:relative!important;
  min-height:100%;
}
html:not([data-ypop-motion]) .path-phone .phone-screen{
  display:flex;flex-direction:column;gap:0;overflow:auto;
}
html:not([data-ypop-motion]) .path-panel + .path-panel{
  border-top:1px solid rgba(255,255,255,.08);
}


/* ---------- Reveals: FAIL-OPEN ----------
   Content is visible by default. JS opts elements into .is-waiting only
   briefly, then .in / .is-in. Legacy site.css .reveal{opacity:0} is overridden.
*/
.reveal,
.reveal-stagger > *,
.motion-lines .line__in{
  opacity:1;
  transform:none;
}
/* Kill legacy site.css hide unless we explicitly arm waiting */
html[data-ypop-motion] .reveal{opacity:1;transform:none}
html[data-ypop-motion] .reveal.is-waiting{
  opacity:0;
  transform:translate3d(0,22px,0);
  transition:opacity var(--motion-dur) var(--motion-ease), transform var(--motion-dur) var(--motion-ease);
  transition-delay:calc(var(--i,0) * 70ms);
  will-change:opacity,transform;
}
html[data-ypop-motion] .reveal.is-waiting.reveal-left{transform:translate3d(-18px,0,0)}
html[data-ypop-motion] .reveal.is-waiting.reveal-scale{transform:translate3d(0,16px,0) scale(.985)}
html[data-ypop-motion] .reveal.in,
html[data-ypop-motion] .reveal.is-waiting.in{
  opacity:1;transform:none;
}

html[data-ypop-motion] .reveal-stagger.is-waiting > *{
  opacity:0;
  transform:translate3d(0,18px,0);
  transition:opacity var(--motion-dur) var(--motion-ease), transform var(--motion-dur) var(--motion-ease);
  transition-delay:calc(var(--i,0) * 80ms);
  will-change:opacity,transform;
}
html[data-ypop-motion] .reveal-stagger.in > *,
html[data-ypop-motion] .reveal-stagger.is-waiting.in > *{
  opacity:1;transform:none;
}

/* Heading line mask — only hide while waiting */
.motion-lines{display:block}
.motion-lines .line{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}
/* After the rise, stop clipping — Safari/wider glyphs were cutting path headlines mid-word */
.motion-lines.is-in .line,
.motion-lines.in .line,
html[data-ypop-revealed] .motion-lines .line,
.reveal.in .motion-lines .line{overflow:visible}
.motion-lines .line__in{display:block;transform:none}
html[data-ypop-motion] .motion-lines.is-waiting .line__in{
  transform:translate3d(0,110%,0);
  transition:transform var(--motion-dur-slow) var(--motion-ease);
  transition-delay:calc(var(--i,0) * 90ms);
  will-change:transform;
}
html[data-ypop-motion] .motion-lines.is-in .line__in,
html[data-ypop-motion] .motion-lines.in .line__in,
html[data-ypop-motion] .reveal.in .motion-lines .line__in{
  transform:none;
}

/* After fail-open timeout, force everything visible */
html[data-ypop-revealed] .reveal,
html[data-ypop-revealed] .reveal-stagger > *,
html[data-ypop-revealed] .motion-lines .line__in,
html[data-ypop-revealed] .path-panel.is-active{
  opacity:1!important;transform:none!important;
}

/* ---------- Sheet band rise (scroll-driven when live) ---------- */
.sheet{
  transform-origin:50% 0%;
}
[data-ypop-live] .sheet:not(.sheet-hero):not(#who):not(#path):not(.path){
  animation-name:ypop-sheet-settle;
  animation-timeline:view();
  animation-range:entry 0% entry 40%;
  animation-timing-function:linear;
  animation-fill-mode:both;
}
/* Sticky/pinned sheets must not get scroll-driven transforms — fights position:sticky */
#who.sheet, #path.sheet, .path.sheet{animation:none!important;transform:none;opacity:1}
@media (hover:none), (pointer:coarse){
  [data-ypop-live] .sheet:not(.sheet-hero){animation:none!important;transform:none;opacity:1}
  [data-ypop-live] .path-step{animation:none!important}
}
@keyframes ypop-sheet-settle{
  0%{transform:translate3d(0,28px,0);opacity:.92}
  100%{transform:none;opacity:1}
}

/* ---------- Nav pill on scroll ---------- */
.site-header .bar{
  transition:background-color .35s var(--motion-ease), box-shadow .35s var(--motion-ease), border-color .35s var(--motion-ease);
  /* Isolate frosted layer — no paint containment: it clipped the Who's $YPOP for dropdown */
  transform:translate3d(0,0,0);
  contain:layout style;
  overflow:visible;
  will-change:auto;
}
html.is-scrolled .site-header .bar{
  background:color-mix(in srgb,var(--ob) 88%,transparent)!important;
  border-color:color-mix(in srgb,var(--ww) 22%,transparent);
  box-shadow:0 18px 40px -20px rgba(0,0,0,.55);
}
html[data-theme="light"].is-scrolled .site-header .bar{
  background:color-mix(in srgb,var(--brand-ww) 90%,transparent)!important;
  box-shadow:0 18px 40px -22px rgba(16,17,16,.18);
}

/* ---------- Hover lifts (subtle, transform only) ---------- */
@media (hover:hover) and (pointer:fine){
  .who-card,.who-place,.card,.fcard,.fstep,.cta,.niche-photo,.niche-feature{
    transition:transform var(--motion-dur-fast) var(--motion-ease), border-color .25s var(--motion-ease), box-shadow .35s var(--motion-ease);
  }
  .who-card:hover,.who-place:hover,.card:hover,.fcard:hover,.cta:hover{
    transform:translate3d(0,-3px,0);
  }
  .btn:hover{transform:translate3d(0,-1px,0)}
  .btn:active{transform:scale(.98)}
}

/* ---------- Parallax targets ---------- */
[data-parallax]{
  transition:none;
  backface-visibility:hidden;
}
[data-parallax].is-parallaxing{will-change:transform}
@media (max-width:900px), (hover:none), (pointer:coarse){
  [data-parallax]{transform:none!important;will-change:auto!important}
}

/* ---------- Sticky golden-path phone scrub ---------- */
.path{
  --path-phone-h:36rem;
}
.path .path-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:clamp(2rem,5vw,4.5rem);
  align-items:start;
  margin-top:clamp(2rem,4vw,3rem);
}
.path-steps{
  list-style:none;
  margin:0;padding:0;
  display:flex;flex-direction:column;
}
[data-ypop-motion] .path-step{
  min-height:min(20vh,11rem);
  display:flex;flex-direction:column;justify-content:center;
  gap:.45rem;
  padding:1.1rem 0 1.1rem 1.2rem;
  border-left:2px solid color-mix(in srgb,var(--ww) 12%,transparent);
  opacity:.34;
  transform:translate3d(0,8px,0);
  transition:opacity var(--motion-dur) var(--motion-ease), transform var(--motion-dur) var(--motion-ease), border-color var(--motion-dur) var(--motion-ease);
}
.path-step{
  min-height:min(20vh,11rem);
  display:flex;flex-direction:column;justify-content:center;
  gap:.45rem;
  padding:1.1rem 0 1.1rem 1.2rem;
  border-left:2px solid color-mix(in srgb,var(--ww) 12%,transparent);
}
.path-step.is-active,
.path-step.is-done{
  opacity:1;
  transform:none;
  border-left-color:var(--lime);
}
.path-step.is-done:not(.is-active){opacity:.55}
.path-step .n{
  font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent-text);
}
.path-step h3{
  font-size:clamp(22px,2.4vw,32px);font-weight:600;letter-spacing:-.035em;line-height:1.1;
}
.path-step p{font-size:15.5px;color:var(--mut);max-width:32rem;line-height:1.55}

.path-aside{position:relative;min-height:100%}
.path-sticky{
  position:sticky;
  top:calc(50vh - (var(--path-phone-h) / 2));
  display:flex;flex-direction:column;align-items:center;gap:14px;
  padding:8px 0 24px;
}
.path-phone .phone{
  width:17.5rem;height:35rem;border-radius:2.75rem;padding:.65rem;
  background:#0c0c0d;
  box-shadow:var(--shadow-lift),0 0 0 1px rgba(255,255,255,.08) inset,0 0 0 1.5px #2a2b2a,0 0 40px rgba(175,229,4,.1);
  transform-origin:50% 60%;
  transition:transform var(--motion-dur-slow) var(--motion-ease);
}
.path.is-exit .path-phone .phone{transform:scale(.86) rotate(-4deg)}
.path-phone .phone-screen{
  position:relative;width:100%;height:100%;border-radius:2.15rem;overflow:hidden;
  background:#0e0f0e;color:var(--brand-ww);
}
.path-panel{
  position:absolute;inset:0;
  display:flex;flex-direction:column;justify-content:flex-end;
  padding:1.35rem 1.1rem 1.5rem;
  background:
    radial-gradient(160px 140px at 88% 6%,rgba(175,229,4,.22),transparent 70%),
    linear-gradient(180deg,#121312,#0d0e0d);
}
[data-ypop-motion] .path-panel{
  opacity:0;
  transform:translate3d(0,14px,0);
  transition:opacity var(--motion-dur) var(--motion-ease), transform var(--motion-dur) var(--motion-ease);
  pointer-events:none;
}
[data-ypop-motion] .path-panel.is-active,
.path-panel.is-active{opacity:1!important;transform:none!important;pointer-events:auto}
[data-ypop-motion] .path-panel:not(.is-active){opacity:0!important;pointer-events:none!important}
.path-panel .scard{
  width:100%;aspect-ratio:1.586;border-radius:14px;margin-bottom:1.2rem;padding:14px 16px;
  display:flex;flex-direction:column;justify-content:space-between;
  background:linear-gradient(135deg,#2a2b2a,#0a0a0a);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 18px 40px rgba(0,0,0,.45);
  transform:rotate(-6deg);
  /* restrained lift — no glow overload */
}
.path-panel .scard .top{display:flex;justify-content:flex-end;font-weight:800;font-style:italic;font-size:20px}
.path-panel .scard .bot{display:flex;justify-content:space-between;align-items:flex-end;font-size:11px}
.path-panel .scard .visa{font-weight:900;font-style:italic;font-size:22px}
.path-panel h4{font-size:1.25rem;letter-spacing:-.03em;font-weight:600;margin:0 0 .35rem;line-height:1.15}
.path-panel .panel-body{font-size:.82rem;color:#c3c6bc;margin:0 0 .9rem;line-height:1.45}
.path-panel .chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:.85rem}
.path-panel .mini{
  font-size:11px;font-weight:600;padding:5px 10px;border-radius:999px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);color:#d8dbd0;
}
.path-panel .mini.on{background:var(--lime);color:#101110;border-color:transparent}
.path-panel .amt{font-size:1.75rem;font-weight:700;letter-spacing:-.04em;margin:.15rem 0 .55rem}
.path-panel .amt span{color:var(--lime)}
.path-panel .bar{
  height:6px;border-radius:99px;background:rgba(255,255,255,.1);overflow:hidden;margin-top:.35rem
}
.path-panel .bar > i{display:block;height:100%;width:62%;background:var(--lime);border-radius:99px}
.path-note{font-size:12px;color:var(--mut);text-align:center}

/* Path step emphasis is JS-driven (.is-active) — no scroll timeline (avoids double-drive) */
@keyframes ypop-path-in{0%{opacity:.28;transform:translate3d(0,10px,0)}100%{opacity:1;transform:none}}
@keyframes ypop-path-out{0%{opacity:1}100%{opacity:.4}}

/* iPad / tablet: keep two-column sticky phone (do NOT kill sticky) */
@media (max-width:1023px) and (min-width:43.76rem){
  .path .path-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.75rem}
  .path-phone .phone{width:15.25rem;height:30.5rem}
  .path-step{min-height:min(22vh,12rem);padding:1.25rem 0 1.25rem 1.1rem}
  .path-sticky{top:calc(50svh - 15.25rem)}
}

/* Mobile ≤700px — Linea #calls dock: steps scroll, phone sticky at bottom */
@media (max-width:43.75rem){
  .path{--path-phone-w:min(58vw, 14.25rem); --path-phone-h:calc(var(--path-phone-w) * 2)}
  .path .path-grid{
    grid-template-columns:1fr;
    gap:0;
    margin-top:1.25rem;
  }
  /* Overlap list + aside in one cell so sticky phone pins over scrolling steps */
  .path-aside,
  .path-steps{grid-area:1 / 1}
  .path-aside{
    z-index:2;
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    pointer-events:none;
    min-height:100%;
    align-self:stretch;
  }
  .path-sticky{
    position:sticky;
    top:auto;
    bottom:max(0.5rem, env(safe-area-inset-bottom, 0px));
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:0;
    padding:0;
    pointer-events:none;
    /* no transform on sticky */
  }
  .path-phone{pointer-events:auto}
  .path-phone .phone{
    width:var(--path-phone-w) !important;
    height:var(--path-phone-h) !important;
    min-height:0 !important;
    border-radius:2.35rem;
    padding:0.55rem;
    transform:none!important; /* never blank via exit tilt on mobile */
  }
  .path-phone .phone-screen{border-radius:1.85rem}
  .path.is-exit .path-phone .phone{transform:none!important}
  .path-note{display:none}

  .path-steps{
    position:relative;
    z-index:1;
    /* room under last steps so they can scroll above the docked phone */
    padding-bottom:calc(var(--path-phone-h) + 3.25rem);
  }
  .path-step,
  [data-ypop-motion] .path-step{
    min-height:78svh !important;
    justify-content:flex-start;
    padding:1.35rem 0 2rem 1.15rem !important;
    opacity:.28;
    transform:none; /* opacity-only on mobile for stability */
    border-left-width:2px;
  }
  .path-step.is-active{
    opacity:1;
    border-left-color:var(--lime);
  }
  .path-step.is-done:not(.is-active){
    opacity:.38;
    border-left-color:color-mix(in srgb,var(--lime) 55%, transparent);
  }
  .path-step h3{font-size:clamp(1.35rem, 6.2vw, 1.65rem)}
  .path-step p{font-size:0.95rem; max-width:34ch}
  .path-step .n{font-size:11px}

  /* Panels: always paint active content; size type for smaller phone */
  .path-panel{
    padding:1.05rem 0.9rem 1.15rem;
  }
  .path-panel h4{font-size:1.05rem}
  .path-panel .panel-body{font-size:.75rem}
  .path-panel .amt{font-size:1.45rem}
  .path-panel .scard{margin-bottom:0.85rem;padding:12px 14px}
  .path-panel .scard .top{font-size:16px}
  .path-panel .scard .visa{font-size:18px}

  /* Fail-safe: if no is-active somehow, first panel still shows */
  .path-phone .phone-screen > .path-panel:first-child{
    opacity:1;
  }
  [data-ypop-motion] .path-phone .phone-screen > .path-panel:first-child:not(.is-active){
    opacity:0!important;
  }
  [data-ypop-motion] .path-panel.is-active{
    opacity:1!important;
    transform:none!important;
  }
}

/* Film / photo soft settle */
.film-frame,.income-frame,.niche-photo,.who-card .who-media{
  overflow:hidden;
}
.film-frame img,.film-frame video,
.income-frame img,.income-frame video,
.niche-photo img,
.who-card .who-media img{
  transform:translate3d(0,0,0);
}

/* Typographic rhythm polish where templated */
.sheet .sec-head{margin-bottom:clamp(1.5rem,3vw,2.25rem)}
.sheet .label{letter-spacing:.12em}
.home-hero-copy h1{max-width:14ch}

/* Reduced motion: show finished state, no motion */
@media (prefers-reduced-motion:reduce){
  .reveal,.reveal-stagger > *,.reveal-left,.reveal-scale,.motion-lines .line__in,
  .reveal.is-waiting,.reveal-stagger.is-waiting > *,.motion-lines.is-waiting .line__in{
    opacity:1!important;transform:none!important;transition:none!important;
  }
  [data-ypop-live] .sheet:not(.sheet-hero),
  [data-ypop-live] .path-step{animation:none!important}
  .path-step{opacity:1;transform:none}
  .path-panel{opacity:1;transform:none;position:relative;min-height:100%}
  .path-phone .phone-screen{display:flex;flex-direction:column;gap:0;overflow:auto}
  .path-panel + .path-panel{border-top:1px solid rgba(255,255,255,.08)}
  .path.is-exit .path-phone .phone{transform:none}
  [data-parallax]{transform:none!important}
  .who-card:hover,.card:hover,.fcard:hover,.cta:hover,.btn:hover{transform:none}
}

/* Phone UI is always dark — keep lime readable inside panels even in light theme */
.path-panel .lime,.path-panel .g{color:var(--lime)!important}
.path-panel .amt span{color:var(--lime)!important}

/* ========== Who rail — Linea room-mode horizontal scrub ========== */
#who.sheet{
  overflow-x:clip;
  --space-sheet:clamp(2.75rem,5vw,4.5rem);
}
#path.sheet{--space-sheet:clamp(2.75rem,5vw,4.5rem)}

/* Partners band lives inside the closing sheet — no orphan empty sheet */
.partners-band{
  overflow:clip;
  margin:0 0 clamp(1.35rem,2.5vw,2rem);
  padding:0;
  scroll-margin-top:5.5rem;
}
#partners{scroll-margin-top:5.5rem}
.partners-band .marquee{margin:0}

.who-rail__head{
  display:grid;
  grid-template-columns:minmax(0,6fr) minmax(0,5fr);
  gap:1.25rem clamp(1.5rem,4vw,4rem);
  align-items:end;
  margin-bottom:clamp(0.75rem,2vw,1.25rem);
}
.who-rail__title{
  margin:0;
  font-size:clamp(2.75rem,6vw,5.5rem);
  letter-spacing:-.045em;
  line-height:.96;
  max-width:10ch;
  font-weight:700;
}
.who-rail__aside{display:flex;flex-direction:column;gap:.75rem;max-width:30rem}
.who-rail__kicker{
  margin:0;
  font-size:clamp(1.15rem,2vw,1.55rem);
  font-weight:650;
  letter-spacing:-.03em;
  line-height:1.25;
  color:var(--ww);
}
.who-rail__pill{display:none!important}
.who-rail__lead{
  margin:0;
  max-width:30rem;
  font-size:clamp(1rem,1.35vw,1.125rem);
  color:var(--mut);
}
.who-rail__pill{
  display:flex;align-items:center;gap:.5rem;
  width:fit-content;margin:0 auto 1.25rem;
  padding:.45rem .9rem;border-radius:999px;
  background:color-mix(in srgb,var(--ob) 72%,transparent);
  border:1px solid color-mix(in srgb,var(--ww) 12%,transparent);
  color:var(--mut);font-size:12.5px;font-weight:600;letter-spacing:.02em;
}
.who-rail__pill i{
  width:.5rem;height:.5rem;border-radius:50%;background:var(--lime);flex:none;
}
.who-rail__hold{position:relative}
.who-rail__stage{position:relative}
.who-rail__track{
  display:flex;
  gap:clamp(0.85rem,1.8vw,1.35rem);
  width:max-content;
  padding-inline:max(1rem, calc((100vw - var(--wrap, 88rem)) / 2));
  will-change:transform;
}
.who-place{
  flex:none;
  width:clamp(15.5rem,28vw,22rem);
  display:flex;flex-direction:column;gap:.85rem;
  color:inherit;text-decoration:none;
  border-radius:var(--radius-card,28px);
  transition:transform var(--motion-dur-fast) var(--motion-ease);
}
.who-place__media{
  position:relative;overflow:hidden;
  aspect-ratio:3/4.15;
  border-radius:var(--radius-card,28px);
  background:var(--soft);
  box-shadow:var(--shadow-lift);
}
.who-place__media img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;display:block;
  transform:scale(1.04);
  transition:transform var(--motion-dur-slow) var(--motion-ease);
}
.who-place:hover .who-place__media img{transform:scale(1.08)}
.who-place__media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(16,17,16,.35),transparent 28%,transparent 55%,rgba(16,17,16,.55));
  pointer-events:none;
}
.who-place__tag{
  position:absolute;z-index:2;top:.85rem;left:.85rem;
  padding:.35rem .7rem;border-radius:999px;
  background:color-mix(in srgb,var(--ob) 78%,transparent);
  color:#F7F8F2;font-size:12px;font-weight:600;
  border:1px solid rgba(255,255,255,.1);
  backdrop-filter:blur(8px);
}
.who-place__body{display:flex;flex-direction:column;gap:.35rem;padding:0 .15rem}
.who-place__body .t{font-size:1.05rem;font-weight:700;letter-spacing:-.02em}
.who-place__body .d{font-size:.9rem;color:var(--mut);line-height:1.4}
.who-place__body .go{margin-top:.25rem;font-size:.85rem;font-weight:700;color:var(--accent-text)}

/* Scroll-driven who-rail — all viewports (incl. iPad/touch/phone).
   Sticky stage has NO transform. Track alone gets translate3d from JS. */
[data-ypop-motion] #who:not(.who-rail--static) .who-rail__hold{
  height:calc(100svh + var(--who-travel, 0px) * 1.2);
}
[data-ypop-motion] #who:not(.who-rail--static) .who-rail__stage{
  position:sticky;
  top:0;
  display:flex;flex-direction:column;justify-content:flex-start;
  min-height:100svh;
  padding:5.25rem 0 2rem;
  overflow:clip;
  transform:none; /* never transform a sticky ancestor */
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
}
[data-ypop-motion] #who:not(.who-rail--static) .who-rail__track{
  display:flex;
  width:max-content;
  max-width:none;
  overflow:visible;
  transform:translate3d(0,0,0);
  will-change:transform;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  /* no scroll-snap / overflow-x — vertical scroll drives X */
  scroll-snap-type:none;
}

@media (max-width:700px){
  .who-rail__head{grid-template-columns:1fr;gap:.85rem;margin-bottom:1rem}
  .who-rail__title{max-width:none;font-size:clamp(2.1rem,9vw,2.75rem)}
  [data-ypop-motion] #who:not(.who-rail--static) .who-rail__stage{
    padding:4.5rem 0 1.25rem;
  }
  #who:not(.who-rail--static) .who-place{width:min(78vw,20rem)}
  .who-rail__pill{margin-bottom:1rem}
}

/* Reduced-motion / static: vertical stack — never manual side-scroll */
#who.who-rail--static .who-rail__hold{height:auto!important}
#who.who-rail--static .who-rail__stage{
  position:relative!important;min-height:0!important;padding:0 0 1rem;overflow:visible;
  transform:none!important;
}
#who.who-rail--static .who-rail__track{
  display:flex;flex-direction:column;align-items:stretch;
  width:100%;max-width:min(22rem,100%);
  margin-inline:max(1rem, calc((100vw - var(--wrap, 88rem)) / 2));
  gap:1rem;
  overflow:visible;transform:none!important;will-change:auto!important;
  padding-inline:0;padding-bottom:.5rem;
}
#who.who-rail--static .who-place{width:100%;max-width:22rem}

@media (prefers-reduced-motion:reduce){
  .who-place__media img,.who-place:hover .who-place__media img{transform:none!important;transition:none!important}
}

/* Path step min-heights are owned by the sticky-path block above (desktop / iPad / mobile dock). */

/* ========== Partners marquee — large, even, theme-legible ========== */
.partners{
  overflow:clip!important;
  isolation:isolate;
  z-index:1;
}
.partners .wrap{overflow:hidden}
.marquee{
  /* Shared logo height → natural widths ~140–180px at desktop */
  --logo-h:clamp(88px,9vw,128px);
  --gap:clamp(40px,5vw,72px);
  --band-pad:clamp(1.75rem,3.5vw,2.75rem);
  overflow:hidden!important;
  padding:var(--band-pad) 0;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);
}
.marquee-track{
  align-items:center;
  gap:var(--gap)!important;
  padding-right:var(--gap);
}
.marquee-track li{
  flex:none;
  width:auto;
  height:var(--logo-h);
  min-width:0;
  max-width:none;
  padding:0!important;
  margin:0;
  display:flex;align-items:center;justify-content:center;
  background:transparent!important;
  box-shadow:none!important;
  border-radius:0!important;
}
.marquee-track img{
  display:block;
  height:100%!important;
  max-height:100%!important;
  width:auto!important;
  max-width:min(200px,42vw)!important;
  object-fit:contain;
  object-position:center;
  opacity:1!important;
}
/* Optical size tweaks — still height-locked, no empty min-width boxes */
.marquee-track .logo-nvidia img{max-width:min(220px,48vw)!important}
.marquee-track .logo-ibm img{max-width:min(200px,46vw)!important}
.marquee-track .logo-proto img{max-width:min(200px,46vw)!important}
.marquee-track .logo-league img{max-width:min(190px,44vw)!important}
.marquee-track .logo-skull img{max-width:min(120px,28vw)!important}
.partners-band .marquee,
.partners .marquee{
  transform:none!important;
  transition:opacity var(--motion-dur) var(--motion-ease);
}
[data-ypop-motion] .reveal .partners-band .marquee{opacity:0}
[data-ypop-motion] .reveal.in .partners-band .marquee{opacity:1}
@media (max-width:900px){
  .marquee{--logo-h:clamp(72px,10vw,100px);--gap:clamp(36px,5vw,56px)}
}
@media (max-width:560px){
  .marquee{--logo-h:clamp(56px,15vw,78px);--gap:clamp(28px,7vw,40px);--band-pad:1.5rem}
}
.partners .marquee-track li{margin:0}

/* Path phone — always show active panel content (never blank shell) */
.path-phone .phone-screen{
  color:#F7F8F2 !important;
}
.path-panel.is-active{
  opacity:1 !important;
  transform:none !important;
  pointer-events:auto !important;
  z-index:2;
}
.path-panel[aria-hidden="true"]:not(.is-active){
  opacity:0;
  z-index:1;
}
/* iPad only — do not override ≤700px Linea dock sizes */
@media (max-width:1023px) and (min-width:43.76rem){
  .path-sticky{display:flex;justify-content:center}
  .path-phone .phone{width:15.25rem;height:30.5rem}
  .path-phone .phone-screen{min-height:100%}
}
@media (max-width:43.75rem){
  .path-phone .phone,
  .path-phone .phone-screen{min-height:0}
  .path-sticky{display:flex;justify-content:center}
}


/* ========== Pitch taglines — Linea-scale sticky sequence ========== */
/* ========== Pitch — big two-tone headlines on pinned split panel ========== */
.pitch-band{
  --space-sheet:clamp(1rem,2.5vw,1.75rem);
  padding-block:clamp(1.25rem,3vw,2.25rem);
  overflow-x:clip;
  isolation:isolate;
}
.pitch-hold{position:relative}
.pitch-stage{
  position:relative;
  transform:none;
  display:flex;flex-direction:column;
  justify-content:center;
  gap:1rem;
}
.pitch-panels{
  --pitch-split:0.5;
  position:relative;
  width:min(1180px, calc(100% - 2 * max(1rem, 3vw)));
  margin-inline:auto;
  height:clamp(26rem, 72svh, 42rem);
  border-radius:1.75rem;
  overflow:hidden;
  box-shadow:
    0 0 0 1px rgba(255,255,255,.04) inset,
    0 28px 64px -28px rgba(0,0,0,.55);
  background:#101110;
}
.pitch-half{
  position:absolute;top:0;bottom:0;
  overflow:hidden;
  /* never transform sticky ancestors — halves are fine to size */
}
.pitch-half--dark{
  left:0;
  width:calc((1 - var(--pitch-split)) * 100%);
  background:#101110;
  color:#F7F8F2;
}
.pitch-half--lime{
  right:0;
  width:calc(var(--pitch-split) * 100%);
  background:#AFE504;
  color:#101110;
}
/* Full-panel-width copy inside each clipped half → seamless two-tone wipe */
.pitch-copy{
  position:absolute;
  top:0;bottom:0;
  display:flex;flex-direction:column;
  justify-content:center;
  padding:clamp(1.75rem,3.5vw,3rem) clamp(1.35rem,3.5vw,2.75rem);
  box-sizing:border-box;
  /* width + left set in px by JS so both copies align */
}
.pitch-half--dark .pitch-copy{color:#F7F8F2}
.pitch-half--dark .pitch-line .em{color:#AFE504}
.pitch-half--lime .pitch-copy{color:#101110}
.pitch-half--lime .pitch-line .em{color:#101110}

.pitch-item{
  position:absolute;
  left:50%;
  right:auto;
  width:min(42rem, 72%);
  top:50%;
  margin:0;
  opacity:0;
  transform:translate3d(-50%,calc(-50% + 36px),0);
  pointer-events:none;
  will-change:opacity,transform;
  text-align:left;
}
.pitch-item.is-active{
  opacity:1;
  transform:translate3d(-50%,-50%,0);
  pointer-events:auto;
}
.pitch-item.is-done{
  opacity:0;
  transform:translate3d(-50%,calc(-50% - 32px),0);
}
.pitch-line{
  margin:0;
  font-size:clamp(2.5rem, 5.8vw, 5.5rem); /* ~40 → 88px */
  font-weight:700;
  letter-spacing:-.045em;
  line-height:1.02;
  max-width:none;
}
.pitch-line .em{font-style:normal}
.pitch-sub{
  margin:.85rem 0 0;
  font-size:clamp(1.05rem,1.5vw,1.35rem);
  font-weight:500;
  letter-spacing:-.015em;
  line-height:1.35;
  max-width:28ch;
  opacity:.72;
}
.pitch-half--dark .pitch-sub{color:rgba(247,248,242,.72);opacity:1}
.pitch-half--lime .pitch-sub{color:rgba(16,17,16,.62);opacity:1}

.pitch-progress{
  width:min(1180px, calc(100% - 2 * max(1rem, 3vw)));
  margin-inline:auto;
  display:flex;justify-content:center;
}
.pitch-progress__bars{display:flex;gap:.4rem;width:min(11rem,42vw)}
.pitch-progress__bars i{
  flex:1;height:3px;border-radius:99px;
  background:rgba(247,248,242,.18);
  transition:background .35s var(--motion-ease,cubic-bezier(.2,.7,.2,1));
}
html[data-theme="light"] .pitch-progress__bars i,
html.light .pitch-progress__bars i{background:rgba(16,17,16,.14)}
.pitch-progress__bars i.is-on{background:#AFE504}

/* Sticky pin — all devices */
[data-ypop-motion] .pitch-band:not(.pitch-band--static) .pitch-hold{
  height:calc(100svh * 3.6);
}
[data-ypop-motion] .pitch-band:not(.pitch-band--static) .pitch-stage{
  position:sticky;top:0;
  min-height:100svh;
  padding:clamp(4.5rem,7vw,5.75rem) 0 clamp(1.1rem,2.5vw,1.75rem);
  transform:none;
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
}

/* Mobile: stack lime on top, dark below — still big type, dual clip via vertical split */
@media (max-width:47.99rem){
  .pitch-panels{
    height:min(78svh, 38rem);
    width:calc(100% - 2 * max(1rem, 4.2vw));
    border-radius:1.5rem;
  }
  .pitch-half--dark{
    left:0;right:0;top:auto;bottom:0;
    width:auto!important;
    height:calc((1 - var(--pitch-split)) * 100%);
  }
  .pitch-half--lime{
    left:0;right:0;top:0;bottom:auto;
    width:auto!important;
    height:calc(var(--pitch-split) * 100%);
  }
  .pitch-line{
    font-size:clamp(2.4rem, 10.8vw, 2.75rem); /* ~38–44px */
    max-width:none;
  }
  .pitch-sub{font-size:1.05rem;max-width:26ch}
  .pitch-copy{
    padding:1.25rem 1.15rem;
  }
  .pitch-item{
    left:50%;
    width:min(18.5rem, calc(100% - 2rem));
  }
  [data-ypop-motion] .pitch-band:not(.pitch-band--static) .pitch-hold{
    height:calc(100svh * 3.85);
  }
  [data-ypop-motion] .pitch-band:not(.pitch-band--static) .pitch-stage{
    padding:4.15rem 0 .85rem;
  }
}

/* Static / reduced-motion: lime panel with stacked big headlines */
.pitch-band.pitch-band--static .pitch-hold{height:auto!important}
.pitch-band.pitch-band--static .pitch-stage{
  position:relative!important;min-height:0!important;padding:0!important;
}
.pitch-band.pitch-band--static .pitch-panels{
  height:auto;display:block;background:#AFE504;padding:1.75rem 1.35rem 2rem;
  --pitch-split:1;
}
.pitch-band.pitch-band--static .pitch-half--dark{display:none}
.pitch-band.pitch-band--static .pitch-half--lime{
  position:relative;inset:auto;width:auto!important;height:auto!important;
}
.pitch-band.pitch-band--static .pitch-copy{
  position:relative;inset:auto;width:auto!important;transform:none!important;
  left:auto!important;padding:0;
  display:flex;flex-direction:column;gap:1.75rem;
}
.pitch-band.pitch-band--static .pitch-item{
  position:relative!important;left:auto!important;right:auto!important;top:auto!important;
  opacity:1!important;transform:none!important;
}
.pitch-band.pitch-band--static .pitch-progress{margin-top:.75rem}

@media (prefers-reduced-motion:reduce){
  .pitch-band .pitch-hold{height:auto!important}
  .pitch-band .pitch-stage{position:relative!important;min-height:0!important;padding:0}
  .pitch-item{opacity:1!important;transform:none!important;position:relative!important;top:auto!important}
}

/* Theme-aware logo variants — white marks on dark, black on light */
.marquee-track .logo-on-light{display:none!important}
.marquee-track .logo-on-dark{display:block!important}
html[data-theme="light"] .marquee-track .logo-on-dark,
html.light .marquee-track .logo-on-dark{display:none!important}
html[data-theme="light"] .marquee-track .logo-on-light,
html.light .marquee-track .logo-on-light{display:block!important}
.marquee-track li{position:relative}

/* ========== Linea layout polish: problem / path / film ========== */
#problem .block{
  display:grid;
  grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  gap:1.5rem clamp(2rem,4vw,4rem);
  align-items:end;
}
#problem .block > h2{grid-column:1;max-width:14em;margin:0}
#problem .block > .lede{grid-column:2;max-width:30rem;margin:0;color:var(--mut)}
#problem .block > .band,
#problem .block > .flow,
#problem .block > .miss{grid-column:1 / -1}
@media (max-width:47.99rem){
  #problem .block{grid-template-columns:1fr;gap:1rem}
  #problem .block > h2,#problem .block > .lede{grid-column:1;max-width:none}
  #problem .flow{gap:.75rem}
  #problem .fstep{padding:1rem}
}

/* Path mobile dock owned by ≤43.75rem block above — keep sticky pin only as belt-and-suspenders */
@media (max-width:43.75rem){
  [data-ypop-motion] #path .path-sticky{
    position:sticky;bottom:max(0.5rem, env(safe-area-inset-bottom, 0px));top:auto;
  }
  #path .path-step,
  [data-ypop-motion] #path .path-step{
    min-height:78svh !important;
  }
  #path .path-phone .phone{
    width:min(58vw, 14.25rem) !important;
    height:calc(min(58vw, 14.25rem) * 2) !important;
  }
}

/* Film / CTA bands — Linea start rhythm */
.film-block{
  padding-block:clamp(3.5rem,8vw,6rem);
}
.film-block h2{
  font-size:clamp(2rem,5.5vw,3.5rem);
  letter-spacing:-.04em;line-height:1.05;
  max-width:16ch;
}
@media (max-width:47.99rem){
  .film-block h2{font-size:clamp(1.85rem,8.5vw,2.5rem);max-width:12ch}
}

/* Sheet vertical rhythm closer to Linea space-2 */
.sheet-a,.sheet-b,.sheet-c{
  padding-block:clamp(4rem,9vw,7.5rem);
}
.sheet-hero{padding-bottom:clamp(2.5rem,5vw,4rem)}
