/* ============================================================
   WSH 26 INTERSCHOOL — Core stylesheet
   Westminster School Dubai · Oct 10–11, 2026
   ============================================================ */

/* ---------- 1. Tokens ---------- */
:root{
  --ink:#07080B;
  --ink-2:#0B0D12;
  --ink-3:#101318;
  --line:rgba(255,255,255,.09);
  --line-2:rgba(255,255,255,.16);
  --fg:#EEF0F5;
  --fg-dim:#9AA1AE;
  --fg-faint:#5E6673;

  --blue:#4C7DFF;
  --cyan:#4FE3FF;
  --lime:#C9F24E;
  --violet:#8B5CF6;

  --glow-cyan:rgba(79,227,255,.35);

  --font-display:'Space Grotesk','Segoe UI',system-ui,sans-serif;
  --font-body:'Inter','Segoe UI',system-ui,sans-serif;
  --font-mono:'JetBrains Mono','SF Mono',Consolas,ui-monospace,monospace;

  --pad:clamp(20px,5vw,72px);
  --maxw:1360px;
  --r:14px;
  --ease:cubic-bezier(.16,1,.3,1);
}

/* ---------- 2. Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;
  background:var(--ink);
  color:var(--fg);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
h1,h2,h3,h4{margin:0;font-family:var(--font-display);font-weight:600;letter-spacing:-.03em;line-height:1.02}
p{margin:0}
ul,ol{margin:0;padding:0}
::selection{background:var(--lime);color:#000}

::-webkit-scrollbar{width:10px}
::-webkit-scrollbar-track{background:var(--ink)}
::-webkit-scrollbar-thumb{background:#1B2029;border-radius:99px;border:3px solid var(--ink)}
::-webkit-scrollbar-thumb:hover{background:#2A313D}

/* ---------- 3. Layout primitives ---------- */
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad)}
.section{position:relative;padding-block:clamp(80px,11vw,168px)}
.section--tight{padding-block:clamp(56px,7vw,100px)}

.eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--fg-faint);
}
.eyebrow::before{content:"";width:22px;height:1px;background:currentColor;opacity:.6}
.eyebrow--dot::before{
  width:6px;height:6px;border-radius:99px;background:var(--lime);
  box-shadow:0 0 12px var(--lime);opacity:1;animation:pulse 2.4s var(--ease) infinite;
}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}

.h-xl{font-size:clamp(40px,7.2vw,104px)}
.h-lg{font-size:clamp(32px,5vw,68px)}
.h-md{font-size:clamp(24px,3.2vw,40px)}
.h-sm{font-size:clamp(19px,2vw,25px)}
.lede{font-size:clamp(16px,1.4vw,19px);color:var(--fg-dim);max-width:62ch;line-height:1.65}
.mono{font-family:var(--font-mono);font-size:12.5px;letter-spacing:.06em;color:var(--fg-faint)}
.grad{
  background:linear-gradient(96deg,var(--fg) 12%,var(--cyan) 48%,var(--blue) 78%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.dim{color:var(--fg-dim)}

/* ---------- 4. Fixed overlays ---------- */
.grain{
  position:fixed;inset:-120%;z-index:9000;pointer-events:none;opacity:.038;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grainShift 7s steps(6) infinite;
}
@keyframes grainShift{
  0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}
  60%{transform:translate(-2%,-2%)}80%{transform:translate(3%,1%)}100%{transform:translate(0,0)}
}
.scan{
  position:fixed;inset:0;z-index:8998;pointer-events:none;opacity:.5;
  background:repeating-linear-gradient(to bottom,rgba(255,255,255,.022) 0 1px,transparent 1px 3px);
  mix-blend-mode:overlay;
}
.vignette{
  position:fixed;inset:0;z-index:8997;pointer-events:none;
  background:radial-gradient(120% 90% at 50% 0%,transparent 40%,rgba(0,0,0,.55) 100%);
}
.progress{
  position:fixed;top:0;left:0;height:2px;width:100%;z-index:9100;transform:scaleX(0);
  transform-origin:0 50%;
  background:linear-gradient(90deg,var(--blue),var(--cyan),var(--lime));
  box-shadow:0 0 18px var(--glow-cyan);
}

.cursor,.cursor-dot{position:fixed;top:0;left:0;z-index:9500;pointer-events:none;border-radius:99px;will-change:transform}
.cursor{width:34px;height:34px;border:1px solid var(--line-2);margin:-17px 0 0 -17px;
  transition:width .35s var(--ease),height .35s var(--ease),background .35s var(--ease),border-color .35s var(--ease),opacity .3s}
.cursor-dot{width:4px;height:4px;background:var(--fg);margin:-2px 0 0 -2px}
.cursor.is-hot{width:62px;height:62px;margin:-31px 0 0 -31px;background:rgba(201,242,78,.1);border-color:var(--lime)}
@media (hover:none),(max-width:900px){.cursor,.cursor-dot{display:none}}

.loader{
  position:fixed;inset:0;z-index:9800;background:var(--ink);
  display:flex;align-items:flex-end;justify-content:space-between;
  padding:var(--pad);transition:opacity .7s var(--ease),visibility .7s;
}
.loader.done{opacity:0;visibility:hidden}
.loader__mark{font-family:var(--font-display);font-size:clamp(48px,12vw,140px);letter-spacing:-.05em;line-height:.9}
.loader__num{font-family:var(--font-mono);font-size:clamp(40px,10vw,110px);color:var(--fg-faint);letter-spacing:-.04em}
.loader__bar{position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--lime);box-shadow:0 0 20px var(--lime)}

/* ---------- 5. Nav ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:8000;
  transition:background .45s var(--ease),border-color .45s var(--ease);
  border-bottom:1px solid transparent;
}
.nav.stuck{
  background:rgba(7,8,11,.72);backdrop-filter:blur(16px) saturate(160%);
  -webkit-backdrop-filter:blur(16px) saturate(160%);border-bottom-color:var(--line);
}
.nav__in{display:flex;align-items:center;justify-content:space-between;gap:24px;height:74px}
.brand{display:flex;align-items:center;gap:11px;font-family:var(--font-display);font-weight:600;letter-spacing:-.02em;font-size:17px}
.brand__glyph{
  width:26px;height:26px;border:1px solid var(--line-2);border-radius:7px;display:grid;place-items:center;
  font-family:var(--font-mono);font-size:10px;color:var(--lime);
  background:linear-gradient(150deg,rgba(76,125,255,.22),transparent);
  box-shadow:inset 0 0 14px rgba(79,227,255,.18);
}
.brand__sub{font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;color:var(--fg-faint);text-transform:uppercase;padding-left:9px;border-left:1px solid var(--line);margin-left:2px}
@media (max-width:600px){.brand__sub{display:none}}

.nav__links{display:flex;align-items:center;gap:4px;list-style:none}
@media (max-width:980px){.nav__links{display:none}}
.nav__link{
  position:relative;padding:9px 15px;border-radius:99px;font-size:13.5px;color:var(--fg-dim);
  transition:color .3s var(--ease),background .3s var(--ease);
}
.nav__link::after{
  content:"";position:absolute;left:15px;right:15px;bottom:5px;height:1px;background:var(--lime);
  transform:scaleX(0);transform-origin:0 50%;transition:transform .45s var(--ease);
}
.nav__link:hover{color:var(--fg)}
.nav__link:hover::after{transform:scaleX(1)}
.nav__link.active{color:var(--fg);background:rgba(255,255,255,.05)}
.nav__link.active::after{transform:scaleX(1);background:var(--cyan)}
.nav__cta{margin-left:10px}
@media (max-width:980px){.nav__cta{display:none}}

.burger{display:none;width:44px;height:44px;border:1px solid var(--line);border-radius:11px;place-items:center}
@media (max-width:980px){.burger{display:grid}}
.burger span{display:block;width:17px;height:1.5px;background:var(--fg);transition:transform .4s var(--ease),opacity .3s}
.burger span+span{margin-top:5px}
body.menu-open .burger span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
body.menu-open .burger span:nth-child(2){opacity:0}
body.menu-open .burger span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}

.drawer{
  position:fixed;inset:0;z-index:7900;background:var(--ink);
  padding:110px var(--pad) var(--pad);
  display:flex;flex-direction:column;justify-content:space-between;
  clip-path:inset(0 0 100% 0);transition:clip-path .8s var(--ease);
}
body.menu-open .drawer{clip-path:inset(0 0 0 0)}
.drawer__list{list-style:none;display:flex;flex-direction:column;gap:2px}
.drawer__list a{
  display:flex;align-items:baseline;gap:16px;padding:14px 0;border-bottom:1px solid var(--line);
  font-family:var(--font-display);font-size:clamp(30px,9vw,54px);letter-spacing:-.035em;
  opacity:0;transform:translateY(28px);transition:opacity .6s var(--ease),transform .6s var(--ease),color .3s;
}
body.menu-open .drawer__list a{opacity:1;transform:none}
.drawer__list li:nth-child(1) a{transition-delay:.14s}
.drawer__list li:nth-child(2) a{transition-delay:.2s}
.drawer__list li:nth-child(3) a{transition-delay:.26s}
.drawer__list li:nth-child(4) a{transition-delay:.32s}
.drawer__list li:nth-child(5) a{transition-delay:.38s}
.drawer__list a:hover{color:var(--lime)}
.drawer__list i{font-family:var(--font-mono);font-size:11px;font-style:normal;color:var(--fg-faint)}
.drawer__foot{display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between;padding-top:24px;border-top:1px solid var(--line)}

/* ---------- 6. Buttons ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:12px;
  padding:15px 26px;border-radius:99px;border:1px solid var(--line-2);
  font-family:var(--font-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  overflow:hidden;isolation:isolate;transition:color .4s var(--ease),border-color .4s var(--ease),transform .3s var(--ease);
  will-change:transform;
}
.btn span{position:relative;z-index:2}
.btn::before{
  content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;
  background:linear-gradient(100deg,var(--lime),#8FE04B);
  transform:translateY(101%);transition:transform .55s var(--ease);
}
.btn:hover::before{transform:translateY(0)}
.btn:hover{color:#06070A;border-color:transparent}
.btn--solid{background:var(--fg);color:#06070A;border-color:transparent}
.btn--solid::before{background:linear-gradient(100deg,var(--lime),var(--cyan))}
.btn--ghost{color:var(--fg-dim)}
.btn--sm{padding:11px 19px;font-size:11px}
.btn__arrow{position:relative;z-index:2;transition:transform .45s var(--ease)}
.btn:hover .btn__arrow{transform:translateX(4px)}

/* ---------- 7. Hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden}
#heroCanvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;opacity:.85}
.hero__aura{position:absolute;z-index:0;pointer-events:none;filter:blur(90px);opacity:.5}
.hero__aura--a{width:52vw;height:52vw;left:-12vw;top:2vw;background:radial-gradient(circle,rgba(76,125,255,.55),transparent 62%)}
.hero__aura--b{width:44vw;height:44vw;right:-8vw;top:24vw;background:radial-gradient(circle,rgba(79,227,255,.34),transparent 64%)}
.hero__aura--c{width:30vw;height:30vw;left:38vw;top:-6vw;background:radial-gradient(circle,rgba(201,242,78,.16),transparent 66%)}
.hero__grid{
  position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.45;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:clamp(60px,7vw,110px) clamp(60px,7vw,110px);
  mask-image:radial-gradient(90% 70% at 50% 40%,#000 20%,transparent 80%);
  -webkit-mask-image:radial-gradient(90% 70% at 50% 40%,#000 20%,transparent 80%);
}
.hero__in{position:relative;z-index:2;width:100%;padding-top:clamp(102px,13vh,138px)}
.hero__meta{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;margin-bottom:clamp(18px,2.8vw,34px)}
.chip{
  display:inline-flex;align-items:center;gap:9px;padding:7px 14px;border:1px solid var(--line);
  border-radius:99px;background:rgba(255,255,255,.03);backdrop-filter:blur(8px);
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-dim);
}
.chip b{color:var(--fg);font-weight:500}
.chip__dot{width:5px;height:5px;border-radius:99px;background:var(--lime);box-shadow:0 0 10px var(--lime);animation:pulse 2s infinite}

.hero__title{
  font-size:clamp(42px,min(12.4vw,18.6vh),182px);line-height:.86;letter-spacing:-.055em;font-weight:600;
  margin-bottom:clamp(18px,2.4vw,30px);
}
.hero__title .ln{display:block;overflow:hidden}
.hero__title .stroke{color:transparent;-webkit-text-stroke:1.2px rgba(238,240,245,.42)}
.hero__title em{font-style:normal;
  background:linear-gradient(96deg,var(--cyan),var(--blue) 55%,var(--violet));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero__bottom{
  display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(24px,4vw,64px);align-items:end;
  padding-bottom:clamp(24px,3.2vw,46px);
}
@media (max-width:860px){.hero__bottom{grid-template-columns:1fr;gap:28px}}
.hero__cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.hero__facts{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.fact{background:var(--ink);padding:15px 16px}
.fact__k{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:8px}
.fact__v{font-family:var(--font-display);font-size:clamp(18px,2vw,24px);letter-spacing:-.02em}
.fact__v small{font-size:12px;color:var(--fg-dim);font-family:var(--font-body);letter-spacing:0}

.scrollcue{
  position:absolute;right:var(--pad);bottom:clamp(28px,4vw,52px);z-index:3;
  display:flex;align-items:center;gap:10px;
  font-family:var(--font-mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--fg-faint);
}
@media (max-width:860px){.scrollcue{display:none}}
.scrollcue__line{width:1px;height:52px;background:linear-gradient(var(--fg-faint),transparent);position:relative;overflow:hidden}
.scrollcue__line::after{content:"";position:absolute;inset:0;background:var(--lime);animation:cue 2.2s var(--ease) infinite}
@keyframes cue{0%{transform:translateY(-100%)}60%,100%{transform:translateY(100%)}}

/* ---------- 8. Countdown ---------- */
.count{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border-block:1px solid var(--line)}
.count__cell{background:var(--ink);padding:clamp(18px,3vw,34px) clamp(12px,2vw,26px);text-align:center;position:relative;overflow:hidden}
.count__cell::after{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--glow-cyan),transparent);opacity:0;transition:opacity .5s}
.count__cell:hover::after{opacity:1}
.count__n{font-family:var(--font-display);font-size:clamp(34px,6.4vw,86px);letter-spacing:-.05em;line-height:1;
  font-variant-numeric:tabular-nums;background:linear-gradient(180deg,var(--fg),#7A8492);-webkit-background-clip:text;background-clip:text;color:transparent}
.count__l{font-family:var(--font-mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--fg-faint);margin-top:10px}

/* ---------- 9. Marquee / 3D roller ---------- */
.marquee{position:relative;overflow:hidden;padding-block:clamp(16px,2.2vw,26px);border-block:1px solid var(--line);background:var(--ink-2)}
.marquee__track{display:flex;width:max-content;animation:slide 34s linear infinite;will-change:transform}
.marquee:hover .marquee__track{animation-play-state:paused}
.marquee__item{
  display:flex;align-items:center;gap:clamp(22px,3vw,44px);padding-right:clamp(22px,3vw,44px);
  font-family:var(--font-display);font-size:clamp(22px,3.4vw,44px);letter-spacing:-.03em;white-space:nowrap;color:var(--fg-dim);
}
.marquee__item i{font-style:normal;color:var(--lime);font-size:.55em;transform:translateY(-.1em)}
.marquee__item b{font-weight:600;color:var(--fg)}
@keyframes slide{to{transform:translate3d(-50%,0,0)}}
.marquee--rev .marquee__track{animation-direction:reverse;animation-duration:44s}

/* True 3D cylinder roller */
.roller{display:inline-block;height:1.35em;overflow:hidden;vertical-align:-.32em;perspective:900px;position:relative;color:var(--lime)}
.roller__stage{position:relative;height:100%;width:100%;transform-style:preserve-3d;transition:transform 1s var(--ease)}
.roller__face{position:absolute;inset:0;display:flex;align-items:center;white-space:nowrap;backface-visibility:hidden}
.roller__probe{position:absolute;visibility:hidden;white-space:nowrap;pointer-events:none;left:0;top:0}

/* ---------- 10. Cards / grids ---------- */
.grid{display:grid;gap:clamp(14px,1.6vw,22px)}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
@media (max-width:1000px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:680px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}

.card{
  position:relative;background:linear-gradient(168deg,rgba(255,255,255,.045),rgba(255,255,255,.012));
  border:1px solid var(--line);border-radius:var(--r);padding:clamp(22px,2.4vw,34px);
  overflow:hidden;isolation:isolate;
  transition:border-color .5s var(--ease),transform .5s var(--ease);
}
.card::before{
  content:"";position:absolute;inset:-1px;border-radius:inherit;z-index:-1;opacity:0;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%),rgba(79,227,255,.16),transparent 62%);
  transition:opacity .5s var(--ease);
}
.card:hover{border-color:var(--line-2)}
.card:hover::before{opacity:1}
.card__i{
  width:40px;height:40px;border-radius:11px;display:grid;place-items:center;margin-bottom:20px;
  border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--cyan);
}
.card__n{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.2em;color:var(--fg-faint);margin-bottom:14px}
.card h3{margin-bottom:11px}
.card p{color:var(--fg-dim);font-size:15px}

[data-tilt]{transform-style:preserve-3d;transition:transform .6s var(--ease)}
[data-tilt] .lift{transform:translateZ(38px)}
[data-tilt] .lift-sm{transform:translateZ(18px)}

/* Track (pathway) cards */
.track{
  position:relative;display:flex;flex-direction:column;min-height:clamp(400px,46vw,520px);
  border:1px solid var(--line);border-radius:18px;overflow:hidden;padding:clamp(24px,2.6vw,38px);
  background:var(--ink-2);isolation:isolate;
  transition:transform .7s var(--ease),border-color .5s var(--ease);
}
.track__bg{position:absolute;inset:0;z-index:-2;transition:transform 1.1s var(--ease)}
.track--a .track__bg{background:radial-gradient(90% 70% at 12% 8%,rgba(76,125,255,.30),transparent 60%),radial-gradient(70% 60% at 90% 100%,rgba(139,92,246,.22),transparent 62%)}
.track--b .track__bg{background:radial-gradient(90% 70% at 88% 8%,rgba(201,242,78,.22),transparent 60%),radial-gradient(70% 60% at 8% 100%,rgba(79,227,255,.22),transparent 62%)}
.track:hover .track__bg{transform:scale(1.09)}
.track__mesh{
  position:absolute;inset:0;z-index:-1;opacity:.35;
  background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);
  background-size:44px 44px;
  mask-image:linear-gradient(180deg,#000,transparent 75%);
  -webkit-mask-image:linear-gradient(180deg,#000,transparent 75%);
}
.track__tag{
  align-self:flex-start;font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  padding:7px 13px;border:1px solid var(--line-2);border-radius:99px;background:rgba(0,0,0,.35);backdrop-filter:blur(6px);
}
.track__no{
  position:absolute;right:clamp(18px,2vw,30px);top:clamp(14px,1.6vw,22px);
  font-family:var(--font-display);font-size:clamp(70px,10vw,140px);line-height:1;letter-spacing:-.06em;
  color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.13);pointer-events:none;
}
.track__body{margin-top:auto}
.track h3{font-size:clamp(27px,3.4vw,44px);margin:22px 0 14px}
.track p{color:var(--fg-dim);max-width:46ch;font-size:15.5px}
.track__list{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.track__list li{
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  padding:6px 11px;border:1px solid var(--line);border-radius:7px;color:var(--fg-dim);background:rgba(0,0,0,.28);
}

/* ---------- 11. Split heading + reveal ---------- */
.split .word{display:inline-block;overflow:hidden;vertical-align:top}
.split .word > span{display:inline-block;transform:translateY(105%);transition:transform .95s var(--ease)}
.split.in .word > span{transform:none}
.split .word:nth-child(2) > span{transition-delay:.05s}
.split .word:nth-child(3) > span{transition-delay:.1s}
.split .word:nth-child(4) > span{transition-delay:.15s}
.split .word:nth-child(5) > span{transition-delay:.2s}
.split .word:nth-child(6) > span{transition-delay:.25s}
.split .word:nth-child(7) > span{transition-delay:.3s}
.split .word:nth-child(8) > span{transition-delay:.35s}
.split .word:nth-child(n+9) > span{transition-delay:.4s}

[data-reveal]{opacity:0;transform:translateY(30px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
[data-reveal="fade"]{transform:none}
[data-reveal="left"]{transform:translateX(-34px)}
[data-reveal="scale"]{transform:scale(.965)}
[data-reveal].in{opacity:1;transform:none}
[data-delay="1"]{transition-delay:.09s}
[data-delay="2"]{transition-delay:.18s}
[data-delay="3"]{transition-delay:.27s}
[data-delay="4"]{transition-delay:.36s}
[data-delay="5"]{transition-delay:.45s}
[data-delay="6"]{transition-delay:.54s}

/* ---------- 12. Section headers ---------- */
.shead{display:grid;grid-template-columns:1fr auto;gap:clamp(20px,4vw,60px);align-items:end;margin-bottom:clamp(34px,4.4vw,64px)}
@media (max-width:820px){.shead{grid-template-columns:1fr}}
.shead__l{max-width:64ch}
.shead .eyebrow{margin-bottom:20px}

/* ---------- 13. Numbered rows ---------- */
.rows{border-top:1px solid var(--line)}
.row{
  display:grid;grid-template-columns:80px 1.1fr 1.6fr;gap:clamp(16px,3vw,44px);
  padding:clamp(24px,3vw,42px) 0;border-bottom:1px solid var(--line);
  position:relative;transition:padding-left .6s var(--ease);
}
@media (max-width:820px){.row{grid-template-columns:1fr;gap:12px}}
.row::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:var(--lime);transform:scaleX(0);transform-origin:0 50%;transition:transform .7s var(--ease)}
.row:hover::after{transform:scaleX(1)}
.row:hover{padding-left:clamp(0px,1.4vw,20px)}
.row__n{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;color:var(--fg-faint);padding-top:8px}
.row__t{font-family:var(--font-display);font-size:clamp(21px,2.5vw,32px);letter-spacing:-.03em}
.row__d{color:var(--fg-dim);font-size:15.5px;max-width:64ch}

/* ---------- 14. Accordion ---------- */
.acc{border-top:1px solid var(--line)}
.acc__item{border-bottom:1px solid var(--line)}
.acc__btn{width:100%;display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;padding:clamp(18px,2.2vw,28px) 0;text-align:left}
.acc__no{font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);letter-spacing:.16em}
.acc__t{font-family:var(--font-display);font-size:clamp(17px,1.9vw,23px);letter-spacing:-.02em;transition:color .35s}
.acc__item.open .acc__t{color:var(--lime)}
.acc__ic{position:relative;width:16px;height:16px}
.acc__ic::before,.acc__ic::after{content:"";position:absolute;background:var(--fg-dim);transition:transform .45s var(--ease),background .3s}
.acc__ic::before{left:0;right:0;top:7.5px;height:1.5px}
.acc__ic::after{top:0;bottom:0;left:7.5px;width:1.5px}
.acc__item.open .acc__ic::after{transform:scaleY(0)}
.acc__item.open .acc__ic::before{background:var(--lime)}
.acc__panel{overflow:hidden;height:0;transition:height .6s var(--ease)}
.acc__inner{padding:0 0 clamp(20px,2.4vw,30px) 46px;color:var(--fg-dim);font-size:15.5px;max-width:76ch}
@media (max-width:680px){.acc__inner{padding-left:0}}
.acc__inner ul{list-style:none;margin-top:12px;display:grid;gap:9px}
.acc__inner li{padding-left:20px;position:relative}
.acc__inner li::before{content:"";position:absolute;left:2px;top:.62em;width:6px;height:6px;border:1px solid var(--cyan);border-radius:2px;transform:rotate(45deg)}
.acc__inner p + p{margin-top:12px}

/* ---------- 15. Terminal / notes ---------- */
.term{
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#06070A;
  box-shadow:0 40px 90px -50px rgba(0,0,0,.9),inset 0 1px 0 rgba(255,255,255,.05);
}
.term__bar{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.025)}
.term__dot{width:9px;height:9px;border-radius:99px;background:#2A313D}
.term__dot:nth-child(1){background:#FF5F57}.term__dot:nth-child(2){background:#FEBC2E}.term__dot:nth-child(3){background:#28C840}
.term__ttl{font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);margin-left:8px}
.term__body{padding:clamp(18px,2.2vw,26px);font-family:var(--font-mono);font-size:13px;line-height:1.9;overflow-x:auto}
.term__body .p{color:var(--lime)}
.term__body .c{color:var(--fg)}
.term__body .o{color:var(--fg-dim)}
.term__body .k{color:var(--cyan)}
.caret{display:inline-block;width:8px;height:14px;background:var(--lime);vertical-align:-2px;animation:blink 1.05s steps(2) infinite}
@keyframes blink{0%,50%{opacity:1}51%,100%{opacity:0}}

.note{
  display:flex;gap:16px;align-items:flex-start;padding:clamp(18px,2.2vw,26px);
  border:1px solid rgba(201,242,78,.28);border-radius:var(--r);
  background:linear-gradient(120deg,rgba(201,242,78,.07),rgba(201,242,78,.015));
}
.note--warn{border-color:rgba(255,138,76,.3);background:linear-gradient(120deg,rgba(255,138,76,.07),transparent)}
.note__i{flex:none;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;border:1px solid var(--line-2);color:var(--lime);font-family:var(--font-mono);font-size:13px}
.note--warn .note__i{color:#FF8A4C}
.note b{color:var(--fg)}
.note p{color:var(--fg-dim);font-size:15px}

/* ---------- 16. People ---------- */
.person{position:relative;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--ink-2);transition:border-color .5s var(--ease)}
.person:hover{border-color:var(--line-2)}
.person__img{
  position:relative;aspect-ratio:4/5;display:grid;place-items:center;overflow:hidden;
  background:radial-gradient(120% 90% at 50% 0%,rgba(76,125,255,.24),transparent 60%),linear-gradient(180deg,#12161D,#0A0C10);
}
.person__img::after{
  content:"";position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:26px 26px;opacity:.6;
  mask-image:radial-gradient(70% 60% at 50% 45%,#000,transparent 78%);
  -webkit-mask-image:radial-gradient(70% 60% at 50% 45%,#000,transparent 78%);
}
.person__init{
  position:relative;z-index:2;font-family:var(--font-display);font-size:clamp(26px,3.2vw,42px);letter-spacing:-.03em;
  text-align:center;padding-inline:14px;line-height:1.1;
  color:transparent;-webkit-text-stroke:1px rgba(238,240,245,.5);transition:color .6s var(--ease);
}
.person:hover .person__init{color:rgba(201,242,78,.9);-webkit-text-stroke-color:transparent}
.person__body{padding:20px}
.person__role{font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--cyan);margin-bottom:9px}
.person__name{font-family:var(--font-display);font-size:19px;letter-spacing:-.02em}
.person__meta{font-size:13.5px;color:var(--fg-dim);margin-top:7px}
.person__tag{
  position:absolute;top:14px;left:14px;z-index:3;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.18em;
  text-transform:uppercase;padding:5px 10px;border-radius:99px;border:1px solid var(--line-2);
  background:rgba(6,7,10,.6);backdrop-filter:blur(8px);color:var(--fg-dim);
}

/* ---------- 17. Steps ---------- */
.steps{counter-reset:s;display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.step{background:var(--ink);padding:clamp(22px,2.6vw,34px);transition:background .5s var(--ease)}
.step:hover{background:var(--ink-3)}
.step__n{counter-increment:s;font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;color:var(--lime);margin-bottom:16px;display:block}
.step__n::before{content:"0" counter(s) " / "}
.step h3{font-size:20px;margin-bottom:10px}
.step p{color:var(--fg-dim);font-size:15px}

/* ---------- 18. CTA band ---------- */
.cta{position:relative;overflow:hidden;border-top:1px solid var(--line)}
.cta__aura{position:absolute;inset:0;z-index:0;opacity:.75;
  background:radial-gradient(60% 120% at 50% 118%,rgba(76,125,255,.4),transparent 62%),
             radial-gradient(40% 90% at 82% 0%,rgba(201,242,78,.13),transparent 60%)}
.cta__in{position:relative;z-index:2;text-align:center;padding-block:clamp(74px,10vw,148px)}
.cta__title{font-size:clamp(42px,9vw,132px);letter-spacing:-.055em;line-height:.9}
.cta__row{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:clamp(28px,4vw,46px)}

/* ---------- 19. Footer ---------- */
.foot{border-top:1px solid var(--line);background:var(--ink-2)}
.foot__top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:clamp(24px,3vw,48px);padding-block:clamp(46px,6vw,80px)}
@media (max-width:900px){.foot__top{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.foot__top{grid-template-columns:1fr}}
.foot h4{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--fg-faint);font-weight:400;margin-bottom:18px}
.foot ul{list-style:none;display:grid;gap:11px}
.foot ul a{color:var(--fg-dim);font-size:14.5px;transition:color .3s,padding-left .4s var(--ease)}
.foot ul a:hover{color:var(--lime);padding-left:6px}
.foot__mark{font-family:var(--font-display);font-size:clamp(30px,4vw,44px);letter-spacing:-.04em;line-height:1;margin-bottom:16px}
.foot__bot{display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;padding-block:24px;border-top:1px solid var(--line)}
.foot__bot p{font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);letter-spacing:.04em}

/* ---------- 20. Interior page header ---------- */
.phead{position:relative;padding-top:clamp(130px,16vw,190px);padding-bottom:clamp(40px,5vw,72px);overflow:hidden}
.phead__aura{position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(70% 90% at 8% 0%,rgba(76,125,255,.22),transparent 62%),
             radial-gradient(50% 80% at 92% 10%,rgba(79,227,255,.12),transparent 60%)}
.phead__grid{position:absolute;inset:0;z-index:0;opacity:.5;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:78px 78px;
  mask-image:linear-gradient(180deg,#000,transparent 88%);
  -webkit-mask-image:linear-gradient(180deg,#000,transparent 88%)}
.phead__in{position:relative;z-index:2}
.phead h1{font-size:clamp(44px,9vw,124px);letter-spacing:-.05em;line-height:.9;margin-block:22px 24px}
.crumb{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-faint)}
.crumb a:hover{color:var(--lime)}
.phead__meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}

/* ---------- 21. Misc ---------- */
.tbd{
  display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:#FFB86C;padding:5px 11px;border:1px dashed rgba(255,184,108,.4);border-radius:99px;
}
.kv{display:grid;grid-template-columns:auto 1fr;gap:14px 26px;font-size:15px}
@media (max-width:560px){.kv{grid-template-columns:1fr;gap:4px 0}.kv dd{margin-bottom:14px}}
.kv dt{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--fg-faint);padding-top:4px}
.kv dd{margin:0;color:var(--fg)}
.stack{display:grid;gap:clamp(14px,1.6vw,22px)}
.center{text-align:center}
.mt-s{margin-top:16px}.mt-m{margin-top:28px}.mt-l{margin-top:clamp(34px,4vw,56px)}
.link-u{border-bottom:1px solid var(--line-2);transition:border-color .3s,color .3s}
.link-u:hover{color:var(--lime);border-color:var(--lime)}
.side-note{border-left:1px solid var(--line);padding-left:22px}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  [data-reveal]{opacity:1;transform:none}
  .split .word > span{transform:none}
}

/* ---------- 22. Hero entrance (fires when .loaded lands on body) ----------
   The pre-animation state is scoped to html.anim-ready, which an inline <head>
   script sets. If scripting is off, or main.js fails to load, the hero is never
   hidden in the first place. html.anim-done is the hard failsafe. */
.hero__title .ln > span{display:block}
html.anim-ready .hero__title .ln > span{transform:translateY(108%);transition:transform 1.25s var(--ease)}
html.anim-ready .hero__meta,html.anim-ready .hero__bottom,html.anim-ready .scrollcue{
  opacity:0;transform:translateY(22px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
body.loaded .hero__title .ln:nth-child(1) > span{transition-delay:.06s}
body.loaded .hero__title .ln:nth-child(2) > span{transition-delay:.16s}
body.loaded .hero__title .ln:nth-child(3) > span{transition-delay:.26s}
body.loaded .hero__title .ln > span{transform:none}
body.loaded .hero__meta{opacity:1;transform:none;transition-delay:.1s}
body.loaded .hero__bottom{opacity:1;transform:none;transition-delay:.46s}
body.loaded .scrollcue{opacity:1;transform:none;transition-delay:.7s}
@media (prefers-reduced-motion:reduce){
  .hero__title .ln > span{transform:none}
  .hero__meta,.hero__bottom,.scrollcue{opacity:1;transform:none}
}

/* ---------- 23. Utilities / no-JS fallback ---------- */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.no-js .loader{display:none}
.no-js [data-reveal],.no-js .split .word > span{opacity:1;transform:none}
.no-js .hero__title .ln > span,.no-js .hero__meta,.no-js .hero__bottom,.no-js .scrollcue{opacity:1;transform:none}
.no-js .roller{height:auto}

/* ---------- 24. Hero kinetic roller line ---------- */
.hero__roller{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:.5em;
  font-family:var(--font-display);font-size:clamp(18px,2.5vw,34px);
  letter-spacing:-.025em;margin-bottom:clamp(14px,2vw,28px);
}
.hero__roller-k{color:var(--fg-faint)}
.hero__roller .roller{color:var(--lime)}
body.loaded .hero__roller{opacity:1;transform:none;transition-delay:.36s}
html.anim-ready .hero__roller{opacity:0;transform:translateY(20px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
html.anim-done .hero__title .ln > span,
html.anim-done .hero__meta,html.anim-done .hero__bottom,
html.anim-done .scrollcue,html.anim-done .hero__roller{
  opacity:1 !important;transform:none !important;transition:none !important}
@media (prefers-reduced-motion:reduce){.hero__roller{opacity:1;transform:none}}

/* ---------- 25. Small-screen hero tuning ---------- */
@media (max-width:700px){
  /* the facts grid already carries venue + team size — keep the chip row to two */
  .hero__meta .chip:nth-child(n+3){display:none}
  #heroCanvas{opacity:.42}
  .hero__grid{opacity:.3}
  .hero__in{padding-top:clamp(96px,12vh,120px)}
  .hero__cta{margin-top:20px}
  .hero__title .stroke{-webkit-text-stroke-width:1px}
  .hero__roller{font-size:clamp(19px,5.4vw,26px)}
}
@media (max-width:420px){
  .hero__facts{grid-template-columns:1fr 1fr}
  .fact__v{font-size:16px}
}

/* ---------- 26. Schedule ---------- */
.sched{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(18px,2.4vw,32px)}
@media (max-width:900px){.sched{grid-template-columns:1fr}}
.sched__day{
  border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--ink-2);
  display:flex;flex-direction:column;
}
.sched__head{
  display:flex;align-items:baseline;justify-content:space-between;gap:14px;
  padding:clamp(18px,2vw,26px);border-bottom:1px solid var(--line);
  background:linear-gradient(120deg,rgba(76,125,255,.14),transparent 70%);
}
.sched__day:nth-child(2) .sched__head{background:linear-gradient(120deg,rgba(201,242,78,.12),transparent 70%)}
.sched__n{font-family:var(--font-display);font-size:clamp(22px,2.4vw,30px);letter-spacing:-.03em}
.sched__date{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--fg-faint)}
.sched__list{list-style:none;display:grid}
.sched__row{
  display:grid;grid-template-columns:112px 1fr;gap:16px;align-items:baseline;
  padding:13px clamp(18px,2vw,26px);border-bottom:1px solid var(--line);
  transition:background .4s var(--ease),padding-left .4s var(--ease);
}
.sched__row:last-child{border-bottom:0}
.sched__row:hover{background:rgba(255,255,255,.03)}
@media (max-width:480px){.sched__row{grid-template-columns:1fr;gap:3px}}
.sched__t{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.04em;color:var(--fg-faint);font-variant-numeric:tabular-nums}
.sched__e{font-size:14.5px;color:var(--fg-dim)}
.sched__row--key .sched__e{color:var(--fg);font-weight:500}
.sched__row--key .sched__t{color:var(--cyan)}
.sched__row--flag{background:rgba(201,242,78,.05)}
.sched__row--flag .sched__e{color:var(--lime);font-weight:500}
.sched__row--flag .sched__t{color:var(--lime)}
