/* =====================================================
   BLAKE DOWDALL - blakedowdall.com
   Shared Stylesheet
   ===================================================== */
/* Self-hosted Bebas Neue (renders identically offline + in sandboxed preview panes) */
@font-face {
  font-family: 'Bebas Neue';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/bebas-neue-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Bebas Neue';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/bebas-neue-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  /* Primary brand colors - from BD logo */
  --bd-blue-bright: #4AAFE3;
  --bd-blue-mid:    #2B88C6;
  --bd-blue-core:   #2B7BBC;
  --bd-blue-navy:   #2A3990;
  --bd-black:       #231F20;
  --bd-white:       #FFFFFF;
  --bd-gray:        #818285;

  /* Extended palette */
  --bd-surface:     #1A1718;
  --bd-surface-alt: #2D2A2B;

  /* Logo gradient */
  --bd-gradient: linear-gradient(90deg, #4AAFE3 0%, #2B88C6 25%, #2B7BBC 50%, #2A3990 100%);

  /* Backward-compatible aliases */
  --black:    var(--bd-black);
  --black-2:  var(--bd-surface);
  --black-3:  var(--bd-surface-alt);
  --black-4:  var(--bd-surface-alt);
  --white:    var(--bd-white);
  --gold:     var(--bd-blue-core);
  --gold-lt:  var(--bd-blue-bright);
  --gold-dk:  var(--bd-blue-navy);
  --gold-10:  rgba(43,123,188,0.10);
  --gold-20:  rgba(43,123,188,0.20);

  /* White opacities */
  --w80:      rgba(255,255,255,0.80);
  --w70:      rgba(255,255,255,0.70);
  --w60:      rgba(255,255,255,0.60);
  --w45:      rgba(255,255,255,0.45);
  --w40:      rgba(255,255,255,0.40);
  --w30:      rgba(255,255,255,0.30);
  --w25:      rgba(255,255,255,0.25);
  --w20:      rgba(255,255,255,0.20);
  --w10:      rgba(255,255,255,0.10);
  --w08:      rgba(255,255,255,0.08);
  --w05:      rgba(255,255,255,0.05);

  /* Typography */
  --font-display: 'Bebas Neue', sans-serif;
  --font-block:   'Barlow Semi Condensed', sans-serif;
  --font-body:    'DM Sans', sans-serif;
  --font-stat:    'Barlow Condensed', sans-serif;

  --nav-h:   90px;
  --sec-pad: clamp(80px, 10vw, 140px);
  --gutter:  clamp(20px, 4vw, 60px);
  --max-w:   1200px;

  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --ease-inout:  cubic-bezier(0.45, 0, 0.55, 1);
  --ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);

  /* Interaction timing scale (hover / focus / press feedback) */
  --dur-fast:   120ms;   /* active / press feedback */
  --dur-quick:  200ms;   /* default hover micro-interaction */
  --dur-snap:   280ms;   /* hover on larger elements / button fills */
  --dur-layout: 420ms;   /* richer hover, e.g. gradient morph */
  --dur-slow:   0.8s;    /* deliberate, cinematic hover (buttons, news rows) */
}

/* ---- Reset ---- */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; }
body {
  background: var(--black);
  color: var(--white);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.65;
  /* clip (not hidden) prevents a horizontal scrollbar WITHOUT making
     <body> a scroll container - hidden breaks position:sticky and
     shifts window scroll events (e.g. the sponsors sticky stage). */
  overflow-x: clip;
}
img  { display: block; max-width: 100%; }
a    { color: inherit; text-decoration: none; }
button { cursor: pointer; font-family: inherit; border: none; background: none; }

/* ---- Keyboard focus ring ---- */
/* Subtle, on-brand outline. Shows only for keyboard navigation
   (:focus-visible), never on mouse click. */
:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
  border-radius: 2px;
}
:focus:not(:focus-visible) { outline: none; }

/* ---- Container ---- */
.container {
  width: 100%;
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

/* ---- Section labels & titles ---- */
.sec-label {
  display: block;
  font-size: clamp(0.58rem, 0.75vw, 0.68rem);
  font-weight: 400;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 14px;
}
.sec-title {
  font-family: var(--font-display);
  font-size: clamp(2.8rem, 5.5vw, 5.2rem);
  font-weight: 700;
  line-height: 0.95;
  letter-spacing: 0.04em;
  color: var(--white);
}
.sec-title em { font-style: normal; color: var(--gold); }

/* ---- Buttons ---- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: clamp(0.6rem, 0.82vw, 0.72rem);
  font-weight: 400;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 14px 30px;
  border: 1px solid var(--w20);
  color: var(--white);
  position: relative;
  overflow: hidden;
  transition: border-color var(--dur-slow) var(--ease-out), color var(--dur-slow) var(--ease-out);
}
.btn::after {
  content: '';
  position: absolute; inset: 0;
  background: var(--white);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--dur-slow) var(--ease-out);
  z-index: 0;
}
.btn:hover { border-color: var(--white); color: var(--black); }
.btn:hover::after { transform: scaleX(1); }
.btn:active { transform: scale(0.97); transition: transform var(--dur-fast) var(--ease-out); }
.btn > * { position: relative; z-index: 1; }

.btn-gold {
  border-color: var(--bd-blue-core);
  color: var(--bd-blue-core);
}
.btn-gold::after { background: var(--bd-blue-core); }
.btn-gold:hover   { color: var(--bd-black); border-color: var(--bd-blue-core); }

/* Section rule */
.gold-rule {
  width: 36px;
  height: 1px;
  background: var(--bd-blue-core);
  margin: 24px 0 36px;
}

/* ============================================================
   Navigation — Liquid Glass v5 (shadow-bevel model)
   ------------------------------------------------------------
   This build adopts the reference "liquid glass" button's exact
   construction:

     • NO CSS `border`. The visible rim is built from a stack of
       inset box-shadows with negative spread. Each pair creates a
       razor-thin highlight at the rounded corner.
     • Lighting is asymmetric — the BOTTOM-RIGHT corner is the bright
       one (alpha 0.85), top-left is almost dark (0.09). This is the
       signature look of the reference; it reads as a convex surface
       lit from outside rather than as a frame with a top highlight.
     • Backdrop runs through the SVG distortion via `backdrop-filter:
         url(#liquid-glass-distortion)`. Displacement amplitude is now
         50 (was 22). What's behind the nav visibly ripples.
     • Border-radius bumped to 9999px — a fully circular pill end-cap.
   ============================================================ */
.site-nav {
  position: fixed;
  /* Vertical slide is driven by `top` (hidden well above the viewport
     by default → 17px when visible). Horizontal centering is anchored
     by `left: 50%` + `transform: translateX(-50%)` and STAYS that way
     throughout the transition — so the pill only ever moves straight
     down from top-center, never diagonally from a corner. */
  top: -140px;
  left: 50%;
  transform: translateX(-50%);
  opacity: 0;
  z-index: 500;
  height: 66px;
  width: 55%;
  min-width: 420px;
  max-width: 900px;
  margin: 0;
  display: flex;
  align-items: center;
  padding: 0 var(--gutter);
  border-radius: 9999px;
  background: transparent;

  /* Faint continuous outline so the pill reads as a defined shape even on
     busy backdrops. The shadow-bevel stack below sits just inside this
     border and adds the directional glass-rim highlights on top. */
  border: 1px solid rgba(255,255,255,0.18);

  box-shadow:
    /* === OUTER ATMOSPHERIC SHADOWS === */
    /* Very fine surrounding glow */
    0 0 8px  rgba(0,0,0,0.03),
    /* Close-in soft shadow */
    0 2px 6px rgba(0,0,0,0.08),
    /* Atmospheric outer halo */
    0 0 12px rgba(0,0,0,0.15),
    /* Big floating drop shadow */
    0 14px 44px -6px rgba(0,0,0,0.55),
    0 4px  14px 0    rgba(0,0,0,0.24),

    /* === INSET BEVEL — the rim itself === */
    /* Subtle top-left rim (dim corner) — alpha 0.09 */
    inset 3px 3px 0.5px -3.5px rgba(255,255,255,0.09),
    /* BRIGHT bottom-right rim — alpha 0.85, the signature highlight */
    inset -3px -3px 0.5px -3.5px rgba(255,255,255,0.85),
    /* Soft 1px sub-rim on top-left */
    inset 1px 1px 1px -0.5px rgba(255,255,255,0.6),
    /* Soft 1px sub-rim on bottom-right */
    inset -1px -1px 1px -0.5px rgba(255,255,255,0.6),
    /* Inner atmospheric edge glow (6px) */
    inset 0 0 6px 6px rgba(255,255,255,0.12),
    /* Tighter inner edge glow (2px) */
    inset 0 0 2px 2px rgba(255,255,255,0.06);
}

/* The glass material layer. Nearly transparent — the visible "glass"
   appearance comes from the bevel-shadow stack on .site-nav above,
   not from a coloured fill here. This pseudo only owns the backdrop
   distortion. */
.site-nav::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  overflow: hidden;
  pointer-events: none;

  /* Whisper-thin tint just for body — nothing strong enough to read
     as colour, but enough to keep text legibility predictable over
     varied backdrops. */
  background: rgba(255,255,255,0.02);

  /* Combined chain: light blur + saturation/brightness lift +
     the SVG displacement. All run as ONE backdrop-filter so the
     browser can pipeline them as a single GPU pass. */
  backdrop-filter:         blur(2px) saturate(1.4) brightness(1.05) url(#liquid-glass-distortion);
  -webkit-backdrop-filter: blur(2px) saturate(1.4) brightness(1.05) url(#liquid-glass-distortion);

  isolation: isolate;
}

/* `.scrolled` retained as a no-op so the JS scroll listener doesn't error. */
.site-nav.scrolled,
.site-nav.scrolled::before { /* intentionally empty */ }
.site-nav.visible      { top: 17px; opacity: 1; }
.site-nav.always-show  { top: 17px !important; opacity: 1 !important; }
/* Transitions only enabled after first paint so the nav doesn't flash
   in from off-screen on initial page load. The slide is driven by `top`
   (vertical) + `opacity` — `transform` is fixed at translateX(-50%) so
   horizontal centering doesn't animate. */
.site-nav.transitions-ready {
  transition:
    top       0.6s cubic-bezier(.2,.7,.2,1),
    opacity   0.5s cubic-bezier(.2,.7,.2,1),
    width 0.5s var(--ease-out),
    height 0.5s var(--ease-out),
    border-radius 0.5s var(--ease-out),
    border-color 0.5s var(--ease-out),
    background 0.5s var(--ease-out),
    box-shadow 0.5s var(--ease-out);
}

/* Mobile: drop the 55% pill and let the nav span the viewport width */
@media (max-width: 760px) {
  .site-nav {
    width: calc(100% - 32px);
    min-width: 0;
    max-width: none;
    height: 60px;
  }
  /* roomier tap target for burger-menu links on phones */
  .nav-links a { padding: 11px 0; }
}

.nav-logo {
  display: flex;
  align-items: center;
  margin-right: auto;
  text-decoration: none;
  flex-shrink: 0;
}
.nav-logo-img {
  height: 48px;
  width: auto;
  display: block;
}

/* ============================================================
   Burger menu — centered floating panel (modal-style)
   ------------------------------------------------------------
   The menu is ALWAYS rendered (not display:none) so the open/close
   animation has something to interpolate. Hidden state uses
   visibility:hidden + opacity:0 + a tiny translate/scale; open state
   restores everything. The visibility transition is delayed only on
   close (320ms) so the element stays interactive during the fade-out.
   ============================================================ */
.nav-links {
  display: flex;
  flex-direction: column;
  list-style: none;
  position: fixed;
  top: 86px;              /* 17 nav-top + 56 nav-height + 13 gap */
  left: 50%;
  width: calc(100% - 32px);
  max-width: 380px;
  z-index: 499;
  gap: 0;
  padding: 14px 22px 18px;
  border-radius: 24px;

  /* Hidden state */
  visibility: hidden;
  opacity: 0;
  transform: translateX(-50%) translateY(-12px) scale(0.94);
  transform-origin: top center;
  pointer-events: none;

  /* Whisper-thin glass body — bevel stack does the visible work */
  background: rgba(255,255,255,0.02);

  /* Same shadow-bevel as the nav pill, with a deeper drop-shadow
     since this panel floats further from the surface. */
  box-shadow:
    /* Outer atmospherics */
    0 0 8px  rgba(0,0,0,0.03),
    0 2px 6px rgba(0,0,0,0.08),
    0 0 12px rgba(0,0,0,0.15),
    /* Deep modal drop shadow */
    0 24px 64px -12px rgba(0,0,0,0.70),
    0 8px 24px 0    rgba(0,0,0,0.35),
    /* Inset bevel — matches the nav's signature lighting */
    inset 3px 3px 0.5px -3.5px rgba(255,255,255,0.09),
    inset -3px -3px 0.5px -3.5px rgba(255,255,255,0.85),
    inset 1px 1px 1px -0.5px rgba(255,255,255,0.6),
    inset -1px -1px 1px -0.5px rgba(255,255,255,0.6),
    inset 0 0 6px 6px rgba(255,255,255,0.12),
    inset 0 0 2px 2px rgba(255,255,255,0.06);

  /* Slightly heavier blur than the nav pill so menu text stays
     readable over warped backdrop content */
  backdrop-filter:         blur(18px) saturate(1.5) brightness(1.05) url(#liquid-glass-distortion);
  -webkit-backdrop-filter: blur(18px) saturate(1.5) brightness(1.05) url(#liquid-glass-distortion);

  max-height: calc(100vh - 110px);
  overflow-y: auto;

  /* Hidden-state transition: fade out, then snap visibility hidden */
  transition:
    opacity    260ms var(--ease-out),
    transform  320ms cubic-bezier(0.16, 1, 0.3, 1),
    visibility 0s 320ms;
}

.nav-links.open {
  visibility: visible;
  opacity: 1;
  transform: translateX(-50%) translateY(0) scale(1);
  pointer-events: auto;

  /* Open-state transition: visibility immediate, then fade in */
  transition:
    opacity    260ms var(--ease-out),
    transform  320ms cubic-bezier(0.16, 1, 0.3, 1),
    visibility 0s    0s;
}

/* ============================================================
   Backdrop overlay shown behind the open menu.
   Injected by nav.js at body-start. Fades opacity in/out only —
   no layout impact, no click-through (pointer-events flips with
   visibility).
   ============================================================ */
.nav-backdrop {
  position: fixed;
  inset: 0;
  z-index: 498;                 /* below menu (499) + nav (500) */
  background: rgba(0,0,0,0);
  pointer-events: none;
  transition: background 280ms var(--ease-out);
}
.nav-backdrop.is-visible {
  background: rgba(0,0,0,0.6);
  pointer-events: auto;
}
.nav-links li {
  border-bottom: 1px solid var(--w05);
}
.nav-links a {
  display: block;
  font-family: var(--font-block);
  font-size: clamp(1rem, 4.5vw, 1.55rem);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--w60);
  padding: 7px 0;
  transition: color var(--dur-quick) var(--ease-out), transform var(--dur-quick) var(--ease-out);
}
.nav-links a:hover,
.nav-links a.active { color: var(--white); transform: translateX(8px); }
.nav-links a:active { color: var(--white); }

/* ── "Partner with Blake"  - gradient button (vanilla CSS port) ── */

/* Animatable @property declarations  - required for smooth gradient transitions */
@property --gb-pos-x   { syntax: '<percentage>'; initial-value: 11.14%;              inherits: false; }
@property --gb-pos-y   { syntax: '<percentage>'; initial-value: 140%;                inherits: false; }
@property --gb-spr-x   { syntax: '<percentage>'; initial-value: 150%;                inherits: false; }
@property --gb-spr-y   { syntax: '<percentage>'; initial-value: 180.06%;             inherits: false; }
@property --gb-c1      { syntax: '<color>';       initial-value: #000;               inherits: false; }
@property --gb-c2      { syntax: '<color>';       initial-value: #02081c;            inherits: false; }
@property --gb-c3      { syntax: '<color>';       initial-value: #102e5a;            inherits: false; }
@property --gb-c4      { syntax: '<color>';       initial-value: #2A3990;            inherits: false; }
@property --gb-c5      { syntax: '<color>';       initial-value: #2B7BBC;            inherits: false; }
@property --gb-ba      { syntax: '<angle>';       initial-value: 20deg;              inherits: false; }
@property --gb-bc1     { syntax: '<color>';       initial-value: hsla(210,75%,60%,0.22); inherits: false; }
@property --gb-bc2     { syntax: '<color>';       initial-value: hsla(210,75%,45%,0.75); inherits: false; }
@property --gb-s1      { syntax: '<percentage>'; initial-value: 37.35%;             inherits: false; }
@property --gb-s2      { syntax: '<percentage>'; initial-value: 61.36%;             inherits: false; }
@property --gb-s3      { syntax: '<percentage>'; initial-value: 78.42%;             inherits: false; }
@property --gb-s4      { syntax: '<percentage>'; initial-value: 89.52%;             inherits: false; }
@property --gb-s5      { syntax: '<percentage>'; initial-value: 100%;               inherits: false; }

.nav-links .nav-partner-item {
  border-bottom: none;
  margin-top: 10px;
  padding: 6px 0 14px;
  display: flex;
  align-items: center;
}

.nav-links .nav-partner-item a {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  padding: 13px 32px !important;
  border-radius: 11px;
  position: relative;
  overflow: hidden;
  border: none;
  cursor: pointer;

  /* Radial gradient background  - animates via @property on hover */
  background: radial-gradient(
    var(--gb-spr-x) var(--gb-spr-y) at var(--gb-pos-x) var(--gb-pos-y),
    var(--gb-c1) var(--gb-s1),
    var(--gb-c2) var(--gb-s2),
    var(--gb-c3) var(--gb-s3),
    var(--gb-c4) var(--gb-s4),
    var(--gb-c5) var(--gb-s5)
  ) !important;

  /* Smooth transitions for every animated property */
  transition:
    --gb-pos-x var(--dur-layout), --gb-pos-y var(--dur-layout),
    --gb-spr-x var(--dur-layout), --gb-spr-y var(--dur-layout),
    --gb-c1 var(--dur-layout), --gb-c2 var(--dur-layout), --gb-c3 var(--dur-layout), --gb-c4 var(--dur-layout), --gb-c5 var(--dur-layout),
    --gb-ba var(--dur-layout), --gb-bc1 var(--dur-layout), --gb-bc2 var(--dur-layout),
    --gb-s1 var(--dur-layout), --gb-s2 var(--dur-layout), --gb-s3 var(--dur-layout), --gb-s4 var(--dur-layout), --gb-s5 var(--dur-layout),
    transform var(--dur-snap) var(--ease-out);

  color: #fff !important;
  font-size: clamp(0.98rem, 2.6vw, 1.2rem) !important;
  letter-spacing: 0.1em;
  margin-top: 0;
}

.nav-links .nav-partner-item a:active {
  transform: translateY(-2px) scale(0.97) !important;
  transition: transform var(--dur-fast) var(--ease-out);
}

/* Gradient border via mask-composite exclude */
.nav-links .nav-partner-item a::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(var(--gb-ba), var(--gb-bc1), var(--gb-bc2));
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: destination-out;
  mask-composite: exclude;
  pointer-events: none;
  transition: --gb-ba var(--dur-layout), --gb-bc1 var(--dur-layout), --gb-bc2 var(--dur-layout);
}

/* Hover  - gradient shifts + lift */
.nav-links .nav-partner-item a:hover {
  --gb-pos-x: 0%;
  --gb-pos-y: 91.51%;
  --gb-spr-x: 120.24%;
  --gb-spr-y: 103.18%;
  --gb-c1: #4AAFE3;
  --gb-c2: #2B88C6;
  --gb-c3: #2B7BBC;
  --gb-c4: #102e5a;
  --gb-c5: #000;
  --gb-ba: 190deg;
  --gb-bc1: hsla(205, 90%, 88%, 0.18);
  --gb-bc2: hsla(205, 85%, 75%, 0.65);
  --gb-s1: 0%;
  --gb-s2: 8.8%;
  --gb-s3: 21.44%;
  --gb-s4: 71.34%;
  --gb-s5: 85.76%;
  transform: translateY(-2px) !important;
  padding-left: 32px !important;
  color: #fff !important;
}

/* Remove the standalone CTA button  - now lives in the dropdown */

/* Burger  - always visible */
.nav-burger {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 6px;
  background: none;
  border: none;
  cursor: pointer;
  margin-left: auto;
}
.nav-burger {
  transition: transform 160ms var(--ease-out);
}
.nav-burger:active { transform: scale(0.92); }
.nav-burger span {
  display: block;
  width: 26px; height: 2px;
  background: var(--w60);
  transition: background 0.6s, transform 0.7s var(--ease-out), opacity 0.5s;
  transform-origin: center;
}
/* Animate to × when open */
.nav-burger.open span:nth-child(1) { transform: translateY(8px) rotate(45deg); background: var(--white); }
.nav-burger.open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.nav-burger.open span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); background: var(--white); }

/* ---- Footer ---- */
.site-footer {
  background: var(--black);
  border-top: 1px solid var(--w08);
}
.footer-inner {
  max-width: var(--max-w);
  margin: 0 auto;
  display: grid;
  /* brand | navigate | get-in-touch | social rail (thin, auto-width) */
  grid-template-columns: 1.6fr 1.3fr 1.3fr auto;
  align-items: start;
  gap: clamp(28px, 4vw, 56px);
  padding: clamp(48px, 7vw, 80px) var(--gutter) clamp(40px, 5vw, 64px);
}
.footer-logo {
  display: block;
  margin-bottom: 16px;
}
.footer-logo-img {
  height: 44px;
  width: auto;
  display: block;
}
/* ---- Footer newsletter signup ---- */
.footer-news {
  margin-top: 26px;
  max-width: 290px;
}
.footer-news-label {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--white);
  margin-bottom: 8px;
}
.footer-news-sub {
  font-size: 0.76rem;
  line-height: 1.6;
  color: var(--w60);
  margin-bottom: 14px;
}
.footer-news-row {
  display: flex;
  border: 1px solid var(--w10);
  background: var(--w05);
  transition: border-color 0.4s var(--ease-out);
}
.footer-news-row:focus-within { border-color: var(--gold); }
.footer-news-input {
  flex: 1;
  min-width: 0;
  background: transparent;
  border: none;
  outline: none;
  padding: 12px 14px;
  font-family: var(--font-body);
  font-size: 0.82rem;
  color: var(--white);
}
.footer-news-input::placeholder { color: var(--w30); }
.footer-news-btn {
  flex-shrink: 0;
  width: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--gold);
  color: var(--black);
  transition: background var(--dur-quick) var(--ease-out);
}
.footer-news-btn:hover { background: var(--gold-lt); }
.footer-news-msg {
  margin-top: 10px;
  font-size: 0.75rem;
  line-height: 1.5;
  display: none;
}
.footer-news-msg.show { display: block; }
.footer-news-msg.ok  { color: var(--gold-lt); }
.footer-news-msg.err { color: #e0795f; }
.footer-col-label {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--white);
  margin-bottom: 18px;
}
.footer-nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  columns: 2;
  column-gap: 16px;
  gap: 8px;
}
.footer-nav ul li {
  break-inside: avoid;
  margin-bottom: 10px;
}
.footer-nav ul a {
  display: inline-flex;
  align-items: center;
  font-size: 0.8rem;
  color: var(--w45);
  text-decoration: none;
  transition: color var(--dur-quick) var(--ease-out);
  position: relative;
}
.footer-nav ul a::before {
  content: '';
  display: inline-block;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--w25);
  flex-shrink: 0;
  margin-right: 0;
  max-width: 0;
  opacity: 0;
  transition: max-width 0.25s var(--ease-out), margin-right 0.25s var(--ease-out), opacity 0.25s var(--ease-out), background 0.25s var(--ease-out);
}
.footer-nav ul a:hover {
  color: var(--white);
}
.footer-nav ul a:hover::before {
  max-width: 5px;
  margin-right: 8px;
  opacity: 1;
  background: var(--bd-blue-bright);
}
/* Vertical social rail - icon-only, no heading */
.footer-follow ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.footer-follow ul li { margin-bottom: 0; }
.footer-follow ul a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.1);
  color: var(--w45);
  text-decoration: none;
  transition: color 0.2s, border-color 0.2s, transform 0.2s;
}
.footer-follow ul a:hover {
  color: var(--white);
  border-color: rgba(255,255,255,0.35);
  transform: translateY(-2px);
}
.footer-follow ul a:active {
  transform: translateY(0) scale(0.95);
  transition: transform 120ms var(--ease-out);
}
.footer-email-link:active { opacity: 0.8; }
.footer-follow ul a svg {
  width: 15px;
  height: 15px;
  fill: currentColor;
  flex-shrink: 0;
}
.footer-email-link {
  display: inline-block;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--bd-blue-bright);
  text-decoration: none;
  letter-spacing: 0.03em;
  border-bottom: 1px solid rgba(74, 175, 227, 0.3);
  padding-bottom: 2px;
  transition: color 0.2s, border-color 0.2s;
}
.footer-email-link:hover {
  color: var(--white);
  border-color: rgba(255,255,255,0.3);
}
.footer-bottom {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 20px var(--gutter);
  border-top: 1px solid var(--w05);
}
.footer-copy {
  font-size: 0.6rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--w20);
}

/* ---- Page header (inner pages) ---- */
.page-hero {
  padding-top: calc(var(--nav-h) + clamp(60px, 8vw, 100px));
  padding-bottom: clamp(60px, 8vw, 100px);
  padding-left: var(--gutter);
  padding-right: var(--gutter);
  border-bottom: 1px solid var(--w05);
}
.page-hero-inner {
  max-width: var(--max-w);
  margin: 0 auto;
}

/* ---- Magnetic elements ---- */
/* Uses CSS standalone `translate` (Transforms Level 2) so it composes
   independently with transform: scale() on :active states */
[data-magnetic] {
  will-change: translate;
}

/* ---- Spotlight card border ---- */
/* magnetic.js sets local cursor vars on each [data-spotlight] wrapper so the   */
/* outline follows the pointer inside each card instead of using viewport space. */
[data-spotlight] {
  --spot-x: -9999;
  --spot-y: -9999;
  --spot-xp: 0.5;
  --spotlight-opacity: 0;
  --spotlight-reveal: 1;
  --spotlight-border-size: 1px;
}
[data-spotlight].spotlight-active {
  --spotlight-opacity: 1;
}
[data-spotlight] > .sp-card::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  z-index: 2;
  opacity: calc(var(--spotlight-opacity, 0) * var(--spotlight-reveal, 1));
  background-image: radial-gradient(
    190px 190px at calc(var(--spot-x, -9999) * 1px) calc(var(--spot-y, -9999) * 1px),
    rgba(74, 175, 227, 1) 0%,
    rgba(74, 175, 227, 0.95) 14%,
    rgba(43, 136, 198, 0.56) 28%,
    rgba(43, 123, 188, 0.12) 44%,
    transparent 58%
  );
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-position: 50% 50%;
  padding: var(--spotlight-border-size);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite: exclude;
  transition:
    opacity 0.2s var(--ease-out),
    filter 0.2s var(--ease-out);
  filter: brightness(1.05);
}
.sponsors-card-grid--reveal.is-animating .sp-card-glow--reveal > .sp-card::after {
  --spotlight-reveal: 0;
  transition:
    opacity 0.72s var(--ease-out),
    filter 0.72s var(--ease-out);
  transition-delay: var(--card-stagger, 0ms);
}
.sponsors-card-grid--reveal.is-animating .sp-card-glow--reveal.is-visible > .sp-card::after {
  --spotlight-reveal: 1;
}
[data-spotlight].spotlight-active > .sp-card::after,
[data-spotlight].sp-card-glow--reveal:hover > .sp-card::after { filter: brightness(1.18); }

/* ---- Scroll fade-up ---- */
.fade-up {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.75s var(--ease-out), transform 0.75s var(--ease-out);
}
.fade-up.in-view { opacity: 1; transform: translateY(0); }
.fade-up.delay-1 { transition-delay: 0.1s; }
.fade-up.delay-2 { transition-delay: 0.2s; }
.fade-up.delay-3 { transition-delay: 0.3s; }
.fade-up.delay-4 { transition-delay: 0.4s; }

/* ---- Background paths  - z-index layering ---- */
/* bgp-wrap is position:fixed; z-index:0  - sections/footer at z-index:1 sit above it.
   Sections without an explicit background-color are transparent, so paths show through. */
section,
.page-hero,
.site-footer {
  position: relative;
  z-index: 1;
}

/* ---- Responsive ---- */
@media (max-width: 900px) {
  .footer-inner { grid-template-columns: 1fr 1fr; }
  /* social rail switches to a horizontal row once the footer wraps */
  .footer-follow ul { flex-direction: row; flex-wrap: wrap; }
}
@media (max-width: 540px) {
  .footer-inner { grid-template-columns: 1fr; }
  /* enlarge social icon tap targets to the 44px guideline on phones */
  .footer-follow ul a { width: 44px; height: 44px; }
  .footer-follow ul a svg { width: 18px; height: 18px; }
}

/* ===== index.html — block 1 ===== */
/* =====================================================
   HERO v5 — portal entrance redesign
   ===================================================== */
/* clip (not hidden) blocks a horizontal scrollbar without turning the
   root/body into a scroll container - hidden breaks position:sticky
   and stops window scroll events firing (sponsors sticky stage). */
html { overflow-x: clip; }
body { overflow-x: clip; }

.hero {
  position: relative;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  cursor: none;
  background: #000;
  flex-shrink: 0;
}

.img-base {
  position: absolute;
  /* Container is just slightly larger than viewport so parallax translate
     (~8px) can shift the image without exposing edges. With background-size:
     cover at this minimal buffer, the image is scaled the LEAST amount
     necessary to fill the viewport — i.e. maximum zoom-out while still
     covering the full section. */
  inset: -9%;
  width: 118%;
  height: 118%;
  background: url('images/2026_NETWORKR_SRO_MEDIA-8744.webp') center center / cover no-repeat;
  background-color: #000;
  z-index: 1;
  will-change: transform;
}

.hero-scrim {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  opacity: 0;
  transition: opacity 1.4s cubic-bezier(.2,.7,.2,1);
  background:
    linear-gradient(rgba(0,0,0,0.18), rgba(0,0,0,0.18)),
    linear-gradient(
      to top,
      rgba(0,0,0,.88) 0%,
      rgba(0,0,0,.55) 25%,
      rgba(0,0,0,.20) 50%,
      rgba(0,0,0,.05) 72%,
      rgba(0,0,0,0)   90%
    );
}
.hero-scrim.show { opacity: 1; }
.hero-scrim::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to right, rgba(0,0,0,.48) 0%, rgba(0,0,0,.10) 38%, rgba(0,0,0,0) 60%);
}
.hero-scrim::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(0,0,0,.72) 0%,
    rgba(0,0,0,.42) 22%,
    rgba(0,0,0,.15) 42%,
    rgba(0,0,0,0)   62%
  );
}

#revealCanvas { position: absolute; inset: -3%; width: 106%; height: 106%; z-index: 3; pointer-events: none; }
#introVeil    { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 4; pointer-events: none; }
#echoCanvas   { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 5; pointer-events: none; }
#gridCanvas   { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; }

.cursor-ring-wrap {
  position: fixed;
  pointer-events: none;
  z-index: 11;
  transform: translate(-50%,-50%);
  opacity: 0;
  transition: opacity .4s ease;
}
.cursor-ring-wrap svg { display: block; }

/* UI overlay + sequenced float-in from outer edges */
.ui-overlay {
  position: absolute;
  inset: 0;
  z-index: 10;
  pointer-events: none;
  padding: clamp(22px,3vw,48px);
}
.ui-overlay > * { pointer-events: auto; }

/* All UI elements start invisible with a smooth float-in transition */
.ui-overlay > *,
.scroll-hint,
.cta-shop-wrap {
  opacity: 0;
  transition:
    opacity 1.1s cubic-bezier(.2,.7,.2,1),
    transform 1.1s cubic-bezier(.2,.7,.2,1);
}

/* Directional starting transforms — elements float in from their outer edge */
.name-block        { transform: translateX(-60px); }            /* top-left → from left */
.cta-shop-wrap     { transform: translateX(-60px); }            /* bottom-left → from left */
.nav-link-hero     { transform: translateX(60px); }             /* top-right → from right */
.info-block        { transform: translateX(60px); }             /* right → from right */
.achievement-badge { transform: translateX(60px); }             /* bottom-right → from right */
.socials-hero      { transform: translateX(60px); }                  /* right edge, docked above info block */
.scroll-hint       { transform: translateX(-50%) translateY(32px); } /* bottom-center → from below */

/* Settled state */
.ui-overlay.show .name-block,
.ui-overlay.show .nav-link-hero,
.ui-overlay.show .info-block,
.ui-overlay.show .achievement-badge,
.cta-shop-wrap.show {
  opacity: 1;
  transform: translateX(0);
}
.ui-overlay.show .socials-hero {
  opacity: 1;
  transform: translateX(0);
}
.scroll-hint.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* Snappier sequence — staggered float-ins start almost immediately */
.ui-overlay.show .name-block        { transition-delay: .00s; }
.ui-overlay.show .nav-link-hero     { transition-delay: .10s; }
.ui-overlay.show .info-block        { transition-delay: .18s; }
.ui-overlay.show .achievement-badge { transition-delay: .22s; }
.ui-overlay.show .socials-hero      { transition-delay: .26s; }
.cta-shop-wrap.show                 { transition-delay: .14s; }
.scroll-hint.show                   { transition-delay: .42s; }

/* Top-right "My Story" pill */
.nav-link-hero {
  position: absolute;
  top: clamp(22px,3vw,48px);
  right: clamp(22px,3vw,48px);
  font-family: 'DM Sans', sans-serif;
  font-size: .78rem;
  letter-spacing: .4em;
  text-transform: uppercase;
  color: #fff;
  text-decoration: none;
  padding: 12px 22px;
  border: 1px solid rgba(255,255,255,.3);
  border-radius: 999px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  background: rgba(0,0,0,.18);
  transition: background var(--dur-quick) var(--ease-out), border-color var(--dur-quick) var(--ease-out);
}
.nav-link-hero:hover { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.55); }

/* Right-edge socials — docked above the info-block / champion line */
.socials-hero {
  position: absolute;
  right: clamp(22px,3vw,48px);
  top: auto;
  left: auto;
  /* Sits directly above the info-block (which is at bottom: ~22vh) */
  bottom: clamp(240px, 32vh, 360px);
  display: flex;
  flex-direction: column;
  gap: 18px;
  align-items: center;
}
.socials-hero a {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  color: #fff;
  opacity: .65;
  transition: opacity .25s, transform .25s;
  filter: none;
}
.socials-hero a:hover { opacity: 1; transform: scale(1.1); }
.socials-hero a:active { transform: scale(0.95); transition: transform 120ms var(--ease-out); }
.socials-hero a svg { width: 22px; height: 22px; fill: currentColor; filter: drop-shadow(0 1px 4px rgba(0,0,0,.9)); }
.socials-hero a.instagram-hero svg { width: 22px; height: 22px; filter: drop-shadow(0 1px 4px rgba(0,0,0,.9)); }

/* Name block top-left */
.name-block {
  position: absolute;
  top: clamp(28px,4.5vh,68px);
  left: clamp(22px,3.5vw,56px);
  pointer-events: none;
}
.name-block .first {
  display: block;
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(1.75rem,3.7vw,3.7rem);
  font-weight: 400;
  line-height: 1;
  letter-spacing: .45em;
  text-transform: uppercase;
  color: rgba(255,255,255,.94);
  margin-bottom: clamp(8px,1.2vh,18px);
  text-shadow:
    0 4px 14px rgba(0,0,0,.85),
    0 2px 6px  rgba(0,0,0,.7);
}
.name-block .last {
  display: block;
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(5rem,14vw,14.5rem);
  font-weight: 400;
  line-height: .86;
  letter-spacing: .02em;
  color: #fff;
  text-shadow:
    0 8px 28px rgba(0,0,0,.85),
    0 4px 12px rgba(0,0,0,.75),
    0 2px 4px  rgba(0,0,0,.6);
}
.name-block .tagline {
  display: block;
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 400;
  font-size: clamp(.78rem,1.15vw,1.05rem);
  letter-spacing: .3em;
  text-transform: uppercase;
  color: rgba(255,255,255,.72);
  margin-top: 14px;
  text-shadow:
    0 3px 10px rgba(0,0,0,.85),
    0 1px 4px  rgba(0,0,0,.7);
}

/* Info block (sits above badge, bottom-right) */
.info-block {
  position: absolute;
  right: clamp(22px,3.5vw,56px);
  bottom: clamp(152px,22vh,230px);
  left: auto;
  top: auto;
  text-align: right;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.info-block span {
  font-family: 'DM Sans', sans-serif;
  font-weight: 300;
  font-size: clamp(.72rem,.9vw,.85rem);
  letter-spacing: .28em;
  text-transform: uppercase;
  color: rgba(255,255,255,.5);
  text-shadow: 0 2px 8px rgba(0,0,0,.85);
}

/* Achievement badge bottom-right */
.achievement-badge {
  position: absolute;
  right: clamp(22px,3.5vw,56px);
  bottom: clamp(72px,11vh,120px);
  left: auto;
  top: auto;
  text-align: right;
  display: flex;
  flex-direction: column;
  gap: 6px;
  font: inherit;
  letter-spacing: normal;
  text-transform: none;
  line-height: 1;
  color: inherit;
  text-shadow: none;
}
.achievement-badge .line-champ {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 600;
  font-size: clamp(.88rem,1.18vw,1.08rem);
  letter-spacing: .24em;
  text-transform: uppercase;
  color: rgba(255,255,255,.92);
  text-shadow: 0 3px 10px rgba(0,0,0,.85), 0 1px 4px rgba(0,0,0,.7);
}
.achievement-badge .line-stat {
  font-family: 'DM Sans', sans-serif;
  font-weight: 300;
  font-size: clamp(.72rem,.92vw,.85rem);
  letter-spacing: .22em;
  text-transform: uppercase;
  color: rgba(255,255,255,.55);
  text-shadow: 0 2px 8px rgba(0,0,0,.85);
}

/* Bottom-center scroll hint */
.scroll-hint {
  position: absolute;
  bottom: clamp(22px,3vw,44px);
  left: 50%;
  right: auto;
  top: auto;
  transform: translateX(-50%) translateY(14px);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  pointer-events: none;
  z-index: 9;
}
.scroll-hint.show { transform: translateX(-50%) translateY(0); }
.scroll-hint span {
  font-family: 'DM Sans', sans-serif;
  font-size: .65rem;
  letter-spacing: .38em;
  text-transform: uppercase;
  color: rgba(255,255,255,.32);
}
.scroll-arrow {
  width: 1px;
  height: 32px;
  background: linear-gradient(to bottom, rgba(255,255,255,.45), transparent);
  animation: scrollPulse 2s ease-in-out infinite;
}
@keyframes scrollPulse {
  0%, 100% { opacity: .2; transform: scaleY(.5) translateY(-4px); }
  50%      { opacity: 1; transform: scaleY(1) translateY(0); }
}

/* CTA — Continue to Store (bottom-left, breathing pill) */
.cta-shop-wrap {
  position: absolute;
  bottom: clamp(72px,11vh,120px);
  left: clamp(22px,3.5vw,56px);
  z-index: 10;
  display: inline-block;
}
.cta-shop {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 16px 28px 16px 32px;
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 500;
  font-size: clamp(.95rem,1.2vw,1.15rem);
  letter-spacing: .36em;
  text-transform: uppercase;
  color: #fff;
  text-decoration: none;
  background: rgba(10,10,10,.55);
  border: 1px solid rgba(255,255,255,.35);
  border-radius: 999px;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  position: relative;
  isolation: isolate;
  transition: background var(--dur-slow) var(--ease-out), border-color var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out), letter-spacing var(--dur-slow) var(--ease-out);
  text-shadow: 0 2px 10px rgba(0,0,0,.7);
}
.cta-shop::before {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: 999px;
  z-index: -1;
  pointer-events: none;
  box-shadow:
    0 0 32px 4px rgba(255,255,255,.06),
    0 8px 32px rgba(0,0,0,.5);
  transition: box-shadow var(--dur-slow) var(--ease-out);
}
.cta-shop:hover {
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.7);
  transform: translateY(-1px);
  letter-spacing: .4em;
}
.cta-shop:hover::before {
  box-shadow:
    0 0 48px 8px rgba(255,255,255,.16),
    0 12px 36px rgba(0,0,0,.55);
}
.cta-shop .cta-arrow { width: 14px; height: 14px; transition: transform var(--dur-slow) var(--ease-out); }
.cta-shop:hover .cta-arrow { transform: translateX(4px); }

.cta-shop-pulse {
  position: absolute;
  inset: -12px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.18);
  pointer-events: none;
  animation: ctaPulse 3.2s ease-in-out infinite;
}
@keyframes ctaPulse {
  0%, 100% { transform: scale(1);    opacity: .5;  }
  50%      { transform: scale(1.07); opacity: .15; }
}

/* Mobile */
@media (max-width: 768px) {
  .cursor-ring-wrap { display: none; }
  .hero { cursor: auto; }
  .scroll-hint { display: none; }
  .achievement-badge { display: none; }
  .socials-hero { display: none; }
  .info-block { display: none; }
  .name-block { top: clamp(18px,3vh,32px); }
  .name-block .first {
    font-size: clamp(1.3rem,5vw,2.2rem);
    letter-spacing: .3em;
    margin-bottom: 6px;
  }
  .name-block .last  { font-size: clamp(4.5rem,18vw,8.5rem); }
  .name-block .tagline {
    font-size: .55rem;
    letter-spacing: .22em;
    margin-top: 10px;
  }
  /* Smaller hero "My Story" pill on mobile, sat high so it clears the name */
  .nav-link-hero {
    top: 14px;
    font-size: .56rem;
    letter-spacing: .16em;
    padding: 9px 14px;
  }
  .cta-shop {
    font-size: .7rem;
    padding: 12px 20px;
    letter-spacing: .28em;
  }
  .cta-shop-wrap { bottom: clamp(80px,14vh,120px); }
}

/* =====================================================
   ACHIEVEMENTS SECTION
   ===================================================== */
.achievements {
  padding: var(--sec-pad) 0;
  position: relative;
  overflow: hidden;
}
.achievements::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold-20), transparent);
}

.ach-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  margin-top: 56px;
  border: 1px solid var(--w05);
}
.ach-card {
  padding: 40px 32px;
  border-right: 1px solid var(--w05);
  position: relative;
  overflow: hidden;
  transition: background 0.8s;
}
.ach-card:last-child { border-right: none; }
.ach-card::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 2px;
  background: var(--gold);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 1s var(--ease-out);
}
.ach-card:hover { background: var(--w05); }
.ach-card:hover::after { transform: scaleX(1); }

.ach-num {
  font-family: var(--font-block);
  font-size: clamp(3.5rem, 6.5vw, 6.5rem);
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.02em;
  color: var(--white);
  margin-bottom: 8px;
}
.ach-num sup {
  font-size: 0.45em;
  vertical-align: super;
  color: var(--gold);
  letter-spacing: 0;
}
.ach-label {
  font-size: 0.65rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--w60);
  margin-bottom: 12px;
}
.ach-desc {
  font-size: 0.82rem;
  color: var(--w60);
  line-height: 1.5;
}

/* Key achievement strip */
.ach-strip {
  margin-top: 1px;
  padding: 28px 32px;
  background: var(--gold-10);
  border: 1px solid var(--gold-20);
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
}
.ach-strip-icon {
  width: 40px; height: 40px;
  border: 1px solid var(--gold);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: var(--gold);
  font-size: 1.1rem;
}
.ach-strip-text strong {
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-style: italic;
  color: var(--gold-lt);
  display: block;
}
.ach-strip-text span {
  font-size: 0.72rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--w60);
}

@media (max-width: 860px) {
  .ach-grid { grid-template-columns: repeat(2, 1fr); }
  .ach-card:nth-child(2) { border-right: none; }
}
@media (max-width: 480px) {
  .ach-grid { grid-template-columns: 1fr; }
  .ach-card { border-right: none; border-bottom: 1px solid var(--w05); }
}

/* =====================================================
   MY STORY SECTION
   ===================================================== */
.my-story {
  padding: clamp(40px, 5vw, 80px) 0 0;
  background: var(--black-2);
  overflow: hidden;
  position: relative;
}
.my-story::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--w10), transparent);
}

/* =====================================================
   SPONSORS STRIP
   ===================================================== */
.sponsors-strip {
  padding: clamp(8px, 1.5vw, 20px) 0 var(--sec-pad);
  position: relative;
}
.sponsors-strip::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--w10), transparent);
}

.sponsors-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 32px;
  margin-bottom: 48px;
  flex-wrap: wrap;
}

.sponsors-card-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-bottom: 32px;
  perspective: 1200px;
}
/* -- Sponsor card - shared with partner page -- */
.sp-card-glow {
  position: relative;
  border-radius: 14px;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  overflow: visible;
  will-change: transform, opacity, filter;
}
.sponsors-card-grid--reveal.is-animating .sp-card-glow--reveal {
  opacity: 0;
  filter: saturate(0.72) brightness(0.82);
  transform: translate3d(0, 28px, 0) scale(0.965);
  transition:
    opacity 0.72s var(--ease-out),
    transform 0.72s var(--ease-out),
    filter 0.72s var(--ease-out);
  transition-delay: var(--card-stagger, 0ms);
}
.sponsors-card-grid--reveal.is-animating .sp-card-glow--reveal.is-visible {
  opacity: 1;
  filter: saturate(1) brightness(1);
  transform: translate3d(0, 0, 0) scale(1);
}
/* .sp-card-glow::before — replaced by [data-spotlight]::before/::after in style.css */
.sp-card-glow > .sp-card { flex: 1; position: relative; z-index: 0; }
.sp-card {
  position: relative;
  isolation: isolate;
  border-radius: 14px;
  background: var(--black-2);
  border: 1px solid rgba(255,255,255,0.06);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 198px;
  padding: 28px 20px 22px;
  text-decoration: none;
  overflow: visible;           /* allow logo to scale beyond card edge on hover */
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.04),
    0 24px 46px -36px rgba(0,0,0,0.9);
  transition:
    transform 0.22s var(--ease-out),
    border-color 0.35s var(--ease-out),
    background 0.35s var(--ease-out),
    box-shadow 0.35s var(--ease-out);
  cursor: pointer;
}
.sp-card > * { position: relative; z-index: 1; }
.sp-card:hover {
  background: #252223;
  border-color: rgba(255,255,255,0.11);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.05),
    0 28px 52px -38px rgba(0,0,0,0.94);
  transform: translateY(-2px);
}
.sp-card:active {
  transform: scale(0.988);
  transition-duration: 140ms;
}
.sp-card-logo {
  width: 100%;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 0;
}
.sp-card-logo img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  opacity: 0.9;
  transition: transform 0.35s var(--ease-out), opacity 0.3s var(--ease-out), filter 0.35s var(--ease-out);
}
/* Per-logo size normalisation — keeps all logos visually similar weight */
/* Use img.sp-logo-* to beat .sp-card-logo img specificity (0,1,1) */
img.sp-logo-nzp        { max-width: 70%; }
img.sp-logo-civiltrain { max-width: 60%; max-height: 72%; }
img.sp-logo-teamdh     { max-width: 62%; }
img.sp-logo-ggl        { --logo-scale: 1; transform: scale(var(--logo-scale)); }
.sp-card-glow.is-visible .sp-card-logo img {
  opacity: 1;
  filter: none;
  transform: scale(calc(var(--logo-scale, 1) * 1.03));
}
.sp-card-glow .sp-card:hover .sp-card-logo img {
  opacity: 1;
  filter:
    drop-shadow(0 6px 18px rgba(0,0,0,0.55))
    drop-shadow(0 0 14px rgba(255,255,255,0.10));
  transform: scale(calc(var(--logo-scale, 1) * 1.05)) translateY(-3px);
}
.sp-card-blurb {
  font-size: 0.6rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--w60);
  text-align: center;
  transition: color 0.3s var(--ease-out), opacity 0.3s var(--ease-out), transform 0.3s var(--ease-out);
}
.sp-card-glow.is-visible .sp-card-blurb,
.sp-card:hover .sp-card-blurb {
  color: rgba(255,255,255,0.56);
}
.sp-visit-tag {
  position: absolute;
  bottom: 10px;
  left: 12px;
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 0.6rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--w60);
  opacity: 0;
  transform: translateY(4px);
  transition: opacity 0.25s var(--ease-out), transform 0.25s var(--ease-out), color 0.25s var(--ease-out);
}
.sp-card:hover .sp-visit-tag { opacity: 1; transform: translateY(0); color: rgba(255,255,255,0.78); }

@media (max-width: 860px) { .sponsors-card-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) {
  .sponsors-card-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .sp-card { min-height: 182px; padding: 22px 16px 18px; }
}
@media (prefers-reduced-motion: reduce) {
  .sponsors-card-grid--reveal .sp-card-glow,
  .sponsors-card-grid--reveal .sp-card-glow.is-visible {
    opacity: 1;
  }
  .sponsors-card-grid--reveal .sp-card-glow,
  .sponsors-card-grid--reveal .sp-card-glow.is-visible,
  .sp-card,
  .sp-card::before,
  .sp-card-logo img,
  .sp-card-blurb,
  .sp-visit-tag {
    transition: none !important;
    transform: none !important;
    filter: none !important;
  }
}

/* ---- Testimonials ---- */
.testimonials-section { background: var(--black-2); padding: clamp(60px, 8vw, 100px) 0; }
.testimonials-header { text-align: center; margin-bottom: clamp(40px, 5vw, 60px); }
.testimonials-inner {
  display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 5vw, 72px);
  max-width: 960px; margin: 0 auto; align-items: center;
}

/* Left: stacked photo cards */
.tst-images {
  position: relative; height: clamp(300px, 38vw, 460px);
  /* overflow visible so rotated cards can peek outside */
  overflow: visible;
}
.tst-img {
  position: absolute; inset: 14px; border-radius: 20px; overflow: hidden;
  transition: transform 0.55s cubic-bezier(0.4,0,0.2,1), opacity 0.5s ease;
}
.tst-img img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Right: text panel */
.tst-text { display: flex; flex-direction: column; justify-content: space-between; min-height: clamp(260px, 34vw, 400px); }
.tst-slide { display: none; flex-direction: column; flex: 1; }
.tst-slide.active { display: flex; }

.tst-name {
  font-family: var(--font-display); font-size: clamp(1.8rem, 3vw, 2.6rem);
  color: var(--white); line-height: 1.05; margin: 0 0 6px;
}
.tst-role { font-size: 0.78rem; letter-spacing: 0.16em; color: var(--bd-blue-bright); text-transform: uppercase; margin-bottom: 24px; }
.tst-quote {
  font-family: var(--font-body); font-size: clamp(0.9rem, 1.3vw, 1rem);
  line-height: 1.85; color: var(--w70); font-style: italic; margin: 0 0 28px;
}
.tst-photo-note { font-size: 0.62rem; letter-spacing: 0.12em; color: var(--w30); font-style: italic; margin-bottom: 16px; margin-top: -16px; }

.tst-controls { display: flex; gap: 12px; margin-top: auto; padding-top: 20px; }
.testimonial-arrow {
  background: none; border: 1px solid rgba(255,255,255,0.18);
  color: var(--w60); width: 38px; height: 38px; border-radius: 50%;
  font-size: 1rem; cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: border-color 0.3s, color 0.3s;
}
.testimonial-arrow:hover { border-color: var(--gold); color: var(--gold); }
.testimonial-arrow:active { transform: scale(0.92); }

@media (max-width: 680px) {
  .testimonials-inner { grid-template-columns: 1fr; gap: 32px; }
  .tst-images {
    height: auto;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    margin-bottom: 8px;
  }
  .tst-text { min-height: unset; }
  .tst-quote { font-size: 0.88rem; }
  /* 44px tap target for the carousel arrows on phones */
  .testimonial-arrow { width: 44px; height: 44px; }
}
@keyframes wordIn {
  from { opacity: 0; filter: blur(6px); transform: translateY(5px); }
  to   { opacity: 1; filter: blur(0);   transform: translateY(0); }
}
.tst-word {
  display: inline-block;
  opacity: 0;
  animation: wordIn 0.25s ease forwards;
}

/* =====================================================
   SOCIALS FEED
   ===================================================== */
.socials-feed { background: var(--black); padding: clamp(100px, 14vw, 160px) 0 clamp(60px, 8vw, 90px); position: relative; isolation: isolate; }
.socials-feed-heading { text-align: center; margin-bottom: clamp(16px, 2.5vw, 28px); }
.socials-feed-heading .sec-title { margin-bottom: 0; }
.socials-fan {
  position: relative;
  height: clamp(300px, 42vw, 520px);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: clamp(40px, 6vw, 64px);
}
.socials-fan-card {
  position: absolute;
  width: clamp(120px, 16vw, 200px);
  height: clamp(180px, 24vw, 300px);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 12px 40px rgba(0,0,0,0.55);
  transform-origin: bottom center;
  transition: transform 0.4s cubic-bezier(0.4,0,0.2,1), box-shadow 0.3s;
}
.socials-fan-card img { width: 100%; height: 100%; object-fit: cover; display: block; }
.socials-fan-card:hover {
  box-shadow: 0 20px 60px rgba(0,0,0,0.7);
  z-index: 20 !important;
  transform: var(--hover-transform) !important;
}
.socials-icons {
  display: flex;
  justify-content: center;
  gap: clamp(20px, 4vw, 44px);
  align-items: center;
}
.socials-icons a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: clamp(44px, 6vw, 60px);
  height: clamp(44px, 6vw, 60px);
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.12);
  color: var(--w70);
  transition: color 0.25s, border-color 0.25s, transform 0.25s;
  text-decoration: none;
}
.socials-icons a svg { width: clamp(18px, 2.4vw, 24px); height: clamp(18px, 2.4vw, 24px); fill: currentColor; }
.socials-icons a:hover { color: var(--gold); border-color: var(--gold); transform: translateY(-3px); }
.socials-icons a:active { transform: translateY(0) scale(0.95); transition: transform 120ms var(--ease-out); }

/* =====================================================
   NEWSLETTER CTA
   ===================================================== */
.newsletter {
  padding: var(--sec-pad) 0;
  background: var(--black-3);
  position: relative;
  overflow: hidden;
}
.newsletter-title-row {
  display: flex;
  align-items: center;
  gap: clamp(14px, 2vw, 24px);
  margin-bottom: 0;
}
.newsletter-title-row .sec-title { margin-bottom: 0; }
.newsletter-bd-logo {
  height: clamp(48px, 7vw, 80px);
  width: auto;
  opacity: 0.9;
  flex-shrink: 0;
}
.newsletter-inner {
  max-width: 620px;
  position: relative;
  z-index: 1;
}
.newsletter-body {
  font-size: clamp(0.85rem, 1.1vw, 0.95rem);
  color: var(--w60);
  margin-bottom: 36px;
  line-height: 1.7;
}

/* Mailchimp form wrapper - matches site styles */
.mc-form-wrap {
  display: flex;
  gap: 0;
  max-width: 460px;
}
.mc-form-wrap input[type="email"] {
  flex: 1;
  background: var(--w05);
  border: 1px solid var(--w20);
  border-right: none;
  color: var(--white);
  font-family: var(--font-body);
  font-size: 0.85rem;
  padding: 14px 20px;
  outline: none;
  transition: border-color 0.6s;
}
.mc-form-wrap input[type="email"]::placeholder { color: var(--w40); }
.mc-form-wrap input[type="email"]:focus { border-color: var(--gold); }
.mc-form-wrap button[type="submit"] {
  font-family: var(--font-body);
  font-size: 0.66rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--black);
  background: var(--gold);
  border: 1px solid var(--gold);
  padding: 14px 24px;
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--dur-quick) var(--ease-out), color var(--dur-quick) var(--ease-out);
}
.mc-form-wrap button[type="submit"]:hover {
  background: var(--gold-lt);
}
.mc-form-wrap button[type="submit"]:active {
  transform: scale(0.97);
}
/* Newsletter feedback message (set by nav.js) */
.mc-msg {
  margin-top: 14px;
  font-size: 0.82rem;
  line-height: 1.5;
  display: none;
}
.mc-msg.show { display: block; }
.mc-msg.ok  { color: var(--gold-lt); }
.mc-msg.err { color: #e0795f; }

.mc-note {
  margin-top: 12px;
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  color: var(--w20);
}

@media (max-width: 540px) {
  .mc-form-wrap { flex-direction: column; }
  .mc-form-wrap input[type="email"] { border-right: 1px solid var(--w20); }
}

/* ===== index.html — block 2 ===== */
/* =====================================================
   MY STORY - TRIGGER
   ===================================================== */
.my-story { background: var(--black); }

/* -- Story trigger row - text left, image right (parallax) --
   Note: do NOT add min-height: 100% here. When .my-story is the
   containing block (6000+px after the dropdown opens), the 100%
   reference inflates this row by ~650px, creating a huge empty
   gap between the trigger title and the first timeline entry. */
.story-trigger-row {
  display: flex;
  align-items: stretch;
  gap: 0;
}
.story-trig-words {
  flex: 1 1 auto;
}
.story-trigger-img {
  flex: 1 1 50%;
  position: relative;
  overflow: hidden;
  border-radius: 18px;
  align-self: flex-start;
  height: clamp(280px, 36vh, 420px);
  margin: 0;
  margin-right: calc(-1 * var(--gutter));
}
.story-trigger-img img {
  position: absolute;
  top: -12%;
  left: 0;
  width: 100%;
  height: 124%;
  object-fit: cover;
  opacity: 0.8;
  will-change: transform;
  transition: opacity 0.6s;
}
.story-trigger-img img:hover {
  opacity: 1;
}
@media (max-width: 700px) {
  .story-trigger-row {
    flex-direction: column;
    align-items: flex-start;
  }
  .story-trigger-img {
    flex: none;
    width: 100%;
    height: 280px;
    margin: 24px 0 0;
    margin-right: 0;
    border-radius: 14px;
  }
  .story-trigger-img img {
    top: -15%;
    height: 130%;
  }
}

/* -- Trigger container -- */
.story-trigger {
  padding: clamp(24px, 4vw, 56px) 0 0;
  background: var(--black);
  border-top: 1px solid var(--w05);
  border-bottom: 1px solid rgba(255,255,255,0);
  transition: border-color 0.8s;
}

/* Inner button - only the words are interactive */
.story-trig-words {
  display: block;
  width: fit-content;
  cursor: pointer;
  outline: none;
  user-select: none;
}
.story-trig-words:focus-visible { outline: 2px solid var(--gold); outline-offset: 8px; }
/* Quick press feedback when the story is opened from the hero "My Story" link */
@keyframes storyPress {
  0%   { transform: scale(1); }
  38%  { transform: scale(0.965); }
  100% { transform: scale(1); }
}
.story-trig-words.story-pressed { animation: storyPress 340ms var(--ease-out); }

/* Label */
.story-trig-label { transition: opacity 0.8s; }
.story-trig-words:hover .story-trig-label,
.story-trigger.open    .story-trig-label { opacity: 0.5; }

/* -- Elevated title -- */
.story-trig-title {
  font-family: var(--font-display);
  font-size: clamp(5.5rem, 16vw, 14rem);
  line-height: 0.88;
  letter-spacing: 0.03em;
  display: flex;
  flex-direction: column;
  margin: 14px 0 28px;
  user-select: none;
}

/* "My" - white, raised extrusion downward */
.strig-my {
  display: block;
  color: var(--white);
  text-shadow:
    0 2px 0 rgba(220,220,220,0.8),
    0 4px 0 rgba(170,170,170,0.6),
    0 6px 0 rgba(110,110,110,0.5),
    0 8px 0 rgba(60,60,60,0.4),
    0 10px 0 rgba(20,20,20,0.4),
    0 14px 24px rgba(0,0,0,0.5);
  transition: color var(--dur-layout) var(--ease-out), text-shadow var(--dur-layout) var(--ease-out);
}

/* "Story" - blue, deep extruded shadow */
.strig-story {
  display: block;
  font-style: normal;
  color: var(--gold);
  text-shadow:
    0 2px 0 #3a9ad4,
    0 4px 0 #2b7bbc,
    0 6px 0 #2468a0,
    0 8px 0 #1c5584,
    0 10px 0 #144268,
    0 12px 0 #0c2f4c,
    0 16px 28px rgba(0,0,0,0.6);
  transition: color var(--dur-layout) var(--ease-out), text-shadow var(--dur-layout) var(--ease-out);
}

/* Hover -> flat grey (both words) */
.story-trig-words:hover .strig-my,
.story-trig-words:hover .strig-story {
  color: rgba(255,255,255,0.28);
  text-shadow: none;
}

/* Open -> keep flat (don't re-elevate while content is visible) */
.story-trigger.open .strig-my,
.story-trigger.open .strig-story {
  color: rgba(255,255,255,0.22);
  text-shadow: none;
}

/* -- Hint row -- styled as a clear pill-button so the "My Story"
   block unmistakably reads as an interactive trigger -- */
.story-trig-hint {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--gold-lt);
  padding: 13px 24px;
  border: 1px solid var(--gold-20);
  background: var(--gold-10);
  border-radius: 100px;
  opacity: 1;
  transform: translateY(0);
  transition: opacity 0.7s, transform 0.7s var(--ease-out),
              background var(--dur-slow) var(--ease-out), border-color var(--dur-slow) var(--ease-out),
              color var(--dur-slow) var(--ease-out);
  pointer-events: none;
}
/* lights up when the trigger is hovered */
.story-trig-words:hover .story-trig-hint {
  background: var(--gold);
  border-color: var(--gold);
  color: var(--black);
}
.story-trigger.open  .story-trig-hint { opacity: 0; }

.story-trig-arrow {
  display: flex;
  transition: transform 0.6s var(--ease-out);
}
/* gentle bob draws the eye to the control; pauses once expanded */
.story-trigger:not(.open) .story-trig-arrow {
  animation: storyHintBob 1.7s var(--ease-inout) infinite;
}
@keyframes storyHintBob {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(4px); }
}
.story-trigger.open .story-trig-arrow { transform: rotate(180deg); }

/* =====================================================
   MY STORY - COLLAPSIBLE
   ===================================================== */
.story-collapse {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.8s var(--ease-out);
}
.story-collapse.open {
  max-height: 7000px;   /* larger than any realistic content */
}

/* =====================================================
   MY STORY - SCROLL TIMELINE
   ===================================================== */
.stl-outer {
  background: var(--black);
  padding: clamp(0px, 0.5vw, 8px) 0 clamp(60px, 8vw, 120px);
}

/* Entries container - position:relative anchor for the line */
.stl-entries {
  position: relative;
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 var(--gutter) 40px;
}

/* ---- Vertical line ---- */
.stl-line {
  position: absolute;
  left: calc(var(--gutter) + 32px);
  top: 0;
  bottom: 0;
  width: 2px;
  overflow: hidden;
 -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 3%, black 97%, transparent 100%);
          mask-image: linear-gradient(to bottom, transparent 0%, black 3%, black 97%, transparent 100%);
}
.stl-line-bg {
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,0.08);
}
.stl-line-fill {
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 0;
  opacity: 0;
  background: linear-gradient(to bottom, transparent 0%, var(--gold) 12%, var(--gold));
  border-radius: 999px;
  transition: height 0.08s linear, opacity 0.5s;
  /* Blue glow — matches the --gold (blue) fill colour */
  box-shadow:
    0 0 14px 4px rgba(43, 123, 188, 0.55),
    0 0 6px  2px rgba(43, 123, 188, 0.85);
}

/* ---- Each timeline row ---- */
.stl-entry {
  display: flex;
  gap: clamp(12px, 2.5vw, 40px);
  padding-top: clamp(36px, 5vw, 72px);
}
/* First entry sits flush against the top — no extra gap above the
   first timeline image when the dropdown opens. (Uses :first-of-type
   because .stl-line is the literal first-child of .stl-entries.) */
.stl-entries .stl-entry:first-of-type { padding-top: 0; }

/* ---- Left sticky column (dot + year) ---- */
.stl-sticky {
  position: sticky;
  /* 50vh keeps the dot parked at the vertical centre of the screen,
     where the scroll-driven fill tip also tracks (see stlFill JS). */
  top: 50vh;
  align-self: flex-start;
  flex-shrink: 0;
  width: clamp(200px, 22vw, 260px);
  display: flex;
  flex-direction: row;
  align-items: center;
  z-index: 10;
  background: var(--black);
}

/* ---- Right content column ---- ensure it sits below sticky ---- */
.stl-content {
  position: relative;
  z-index: 1;
  padding-top: clamp(6px, 1vw, 14px);
}

/* Dot ring - margin-left: 12px pushes center to 32px from entry left */
.stl-dot-ring {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--black);
  border: 1.5px solid rgba(255,255,255,0.12);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-left: 12px;
  position: relative;
  z-index: 2;
  transition: border-color 0.9s var(--ease-out), box-shadow 0.9s;
}
.stl-dot-core {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  border: 1.5px solid rgba(255,255,255,0.2);
  transition: background 0.9s var(--ease-out), border-color 0.9s;
}

/* Active state - gold dot + glow */
.stl-entry.stl-active .stl-dot-ring {
  border-color: var(--gold);
  box-shadow: 0 0 0 4px var(--gold-10);
}
.stl-entry.stl-active .stl-dot-core {
  background: var(--gold);
  border-color: var(--gold);
}

/* Year label next to dot */
.stl-year-label {
  padding-left: clamp(10px, 1.5vw, 20px);
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 3.5vw, 3.2rem);
  line-height: 1;
  letter-spacing: 0.04em;
  color: rgba(255,255,255,0.10);
  transition: color 0.9s var(--ease-out);
  white-space: nowrap;
}
.stl-entry.stl-active .stl-year-label {
  color: var(--gold);
}

/* ---- Right content column ---- */
.stl-content {
  flex: 1;
  min-width: 0;
  padding-bottom: 40px;
}

/* Mobile-only year heading */
.stl-year-mobile {
  display: none;
  font-family: var(--font-display);
  font-size: 2.2rem;
  letter-spacing: 0.04em;
  color: var(--gold);
  margin-bottom: 12px;
}

.stl-series {
  display: block;
  font-size: 0.6rem;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 18px;
}

.stl-body {
  font-size: clamp(0.88rem, 1.15vw, 1rem);
  color: var(--w60);
  line-height: 1.9;
  max-width: 560px;
  margin-bottom: 32px;
  transition: color 0.9s;
}
.stl-entry.stl-active .stl-body {
  color: var(--w80);
}

.stl-photo {
  max-width: 540px;
  border-radius: 3px;
  overflow: hidden;
  aspect-ratio: 16/9;
  background: var(--black-3);
}
.stl-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: grayscale(30%) brightness(0.75);
  transform: translateY(var(--py, 0px)) scale(1.04);
  transition: filter 1.2s var(--ease-out), transform 1.2s var(--ease-out);
}
.stl-entry.stl-active .stl-photo img {
  filter: grayscale(0%) brightness(1);
  transform: translateY(var(--py, 0px)) scale(1);
}

/* End-of-timeline CTA -> full About page (uses the shared .btn component) */
.stl-readmore {
  display: flex;
  justify-content: center;
  padding-top: clamp(30px, 5vw, 64px);
}

/* ---- Mobile ---- */
@media (max-width: 680px) {
  .stl-sticky {
    width: 40px;
  }
  .stl-year-label { display: none; }
  .stl-year-mobile { display: block; }
  .stl-dot-ring { margin-left: 0; }
  /* Re-center line on dot: dot center = var(--gutter) + 20px */
  .stl-line { left: calc(var(--gutter) + 20px); }
}

/* ===== Shared form rules (partner.html + contact.html) ===== */
.form-title {
  font-family: var(--font-block);
  font-size: clamp(1.4rem, 2.2vw, 1.9rem);
  letter-spacing: 0.04em;
  color: var(--white);
  margin-bottom: 6px;
}
.form-subtitle {
  font-size: 0.8rem;
  color: var(--w60);
  margin-bottom: 28px;
  line-height: 1.5;
}
.form-group { margin-bottom: 18px; }
.form-label {
  display: block;
  font-size: 0.58rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--w60);
  margin-bottom: 7px;
}
.form-input,
.form-textarea {
  width: 100%;
  background-color: var(--black-3);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  color: var(--white);
  font-family: var(--font-body);
  font-size: 0.88rem;
  padding: 12px 16px;
  outline: none;
  transition: border-color 0.18s ease-out, background-color 0.18s ease-out;
  appearance: none;
  -webkit-appearance: none;
}
.form-input::placeholder,
.form-textarea::placeholder { color: var(--w20); }
.form-input:focus,
.form-textarea:focus {
  border-color: var(--gold);
  background-color: var(--black-4);
}
.form-textarea { resize: vertical; line-height: 1.6; }
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.form-success {
  display: none;
  padding: 16px 20px;
  background: var(--gold-10);
  border: 1px solid var(--gold-20);
  border-radius: 10px;
  margin-top: 14px;
}
.form-success p { font-size: 0.82rem; color: var(--gold-lt); }
.form-success.show { display: block; }
/* Inline form error (mirrors .form-success; red-tinted) */
.form-error {
  display: none;
  padding: 16px 20px;
  background: rgba(224,78,78,0.10);
  border: 1px solid rgba(224,78,78,0.32);
  border-radius: 10px;
  margin-top: 14px;
}
.form-error p { font-size: 0.82rem; color: #F0918B; }
.form-error.show { display: block; }
.form-note {
  margin-top: 16px;
  font-size: 0.6rem;
  letter-spacing: 0.1em;
  color: var(--w20);
  line-height: 1.6;
  text-align: center;
}

/* Mobile: lift form fields to 16px so iOS doesn't pinch-zoom on focus.
   Scoped to small screens — desktop sizing is unchanged. */
@media (max-width: 600px) {
  .form-input,
  .form-textarea,
  .mc-form-wrap input[type="email"] { font-size: 16px; }
}

/* =====================================================
   NEWS / PRESS  (numbered headline list — homepage + blog)
   ===================================================== */
.news-section { padding: var(--sec-pad) 0; }

.news-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px 40px;
  flex-wrap: wrap;
  margin-bottom: 36px;
}
.news-title {
  font-family: var(--font-display);
  font-size: clamp(1.9rem, 4vw, 3rem);
  font-weight: 700;
  line-height: 1.04;
  letter-spacing: 0.02em;
  color: var(--white);
  margin: 8px 0 0;
}
.news-title em { font-style: normal; color: var(--gold); }
.news-intro {
  font-size: clamp(0.85rem, 1.1vw, 0.95rem);
  color: var(--w60);
  max-width: 460px;
  line-height: 1.7;
  margin-top: 14px;
}
.news-view-all {
  font-size: 0.62rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  transition: gap var(--dur-quick) var(--ease-out);
}
.news-view-all::after { content: '\2192'; }
.news-view-all:hover { gap: 14px; }

/* List */
.news-list { border-top: 1px solid var(--w10); }
.news-item {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: clamp(16px, 3vw, 38px);
  padding: 22px clamp(6px, 1.5vw, 16px);
  border-bottom: 1px solid var(--w10);
  transition: background var(--dur-slow) var(--ease-out);
}
.news-item:hover { background: var(--w05); }
.news-num {
  font-family: var(--font-display);
  font-size: clamp(1.3rem, 2.4vw, 1.9rem);
  line-height: 1;
  color: var(--w25);
  transition: color var(--dur-slow) var(--ease-out);
}
.news-item:hover .news-num { color: var(--gold); }
.news-meta {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.news-source {
  font-size: 0.55rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold);
  background: var(--gold-10);
  border: 1px solid var(--gold-20);
  padding: 4px 9px;
}
.news-date {
  font-size: 0.6rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--w60);
}
.news-headline {
  font-family: var(--font-display);
  font-size: clamp(1.05rem, 1.9vw, 1.55rem);
  font-weight: 700;
  line-height: 1.18;
  letter-spacing: 0.01em;
  color: var(--white);
  transition: color var(--dur-slow) var(--ease-out);
}
.news-item:hover .news-headline { color: var(--gold-lt); }
.news-arrow {
  font-size: 1.05rem;
  color: var(--w30);
  transition: color var(--dur-slow) var(--ease-out),
              transform var(--dur-slow) var(--ease-out);
}
.news-item:hover .news-arrow { color: var(--gold); transform: translate(3px, -3px); }

/* View-more (blog page): hidden items + toggle button */
.news-item.news-hidden { display: none; }
.news-list.news-expanded .news-item.news-hidden { display: grid; }
.news-more-wrap { margin-top: 30px; text-align: center; }
.news-more {
  font-size: 0.62rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--white);
  padding: 13px 30px;
  border: 1px solid var(--w20);
  background: none;
  transition: border-color var(--dur-quick) var(--ease-out),
              color var(--dur-quick) var(--ease-out),
              background var(--dur-quick) var(--ease-out);
}
.news-more:hover { border-color: var(--gold); color: var(--gold); background: var(--gold-10); }

@media (max-width: 560px) {
  .news-item { grid-template-columns: auto 1fr; gap: 16px; }
  .news-arrow { display: none; }
}

/* =====================================================
   SITE LOADER  (CSS/SVG spinner, fades out on window load)
   ===================================================== */
#site-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--black);
  transition: opacity 0.45s var(--ease-out), visibility 0s linear 0.45s;
}
#site-loader.site-loader--done {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.site-loader-spin {
  animation: sl-rotate 1s linear infinite;
}
.sl-track { stroke: var(--w08); }
.sl-arc {
  stroke: var(--gold);
  stroke-linecap: round;
  stroke-dasharray: 126;
  animation: sl-dash 1.6s var(--ease-inout) infinite;
}
@keyframes sl-rotate { to { transform: rotate(360deg); } }
@keyframes sl-dash {
  0%, 100% { stroke-dashoffset: 113; }
  50%      { stroke-dashoffset: 38; }
}

/* =====================================================
   CUSTOM SELECT  (replaces native <select> on the forms —
   animated chevron + gap-free options panel)
   ===================================================== */
.cselect { position: relative; }
.cselect-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  background-color: var(--black-3);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  color: var(--white);
  font-family: var(--font-body);
  font-size: 0.88rem;
  text-align: left;
  padding: 12px 16px;
  cursor: pointer;
  transition: border-color 0.18s ease-out, background-color 0.18s ease-out;
}
.cselect-trigger:hover { border-color: rgba(255,255,255,0.18); }
.cselect-trigger:focus-visible { border-color: var(--gold); }
/* Open: highlight + flatten the bottom edge so the panel connects seamlessly */
.cselect.is-open .cselect-trigger {
  background-color: var(--black-4);
  border-color: var(--gold);
  border-bottom-color: transparent;
  border-radius: 10px 10px 0 0;
}
.cselect-value {
  flex: 1;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.cselect-value.is-placeholder { color: var(--w60); }
.cselect-chevron {
  flex-shrink: 0;
  width: 12px;
  height: 8px;
  color: var(--w60);
  transition: transform var(--dur-quick) var(--ease-out), color 0.18s ease-out;
}
.cselect.is-open .cselect-chevron { transform: rotate(180deg); color: var(--gold); }

/* Options panel — sits flush against the trigger, no gap */
.cselect-panel {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  z-index: 50;
  max-height: 264px;
  overflow-y: auto;
  background: var(--black-3);
  border: 1px solid var(--gold);
  border-top: none;
  border-radius: 0 0 10px 10px;
  display: none;
}
.cselect.is-open .cselect-panel { display: block; }
.cselect-option {
  padding: 11px 16px;
  font-size: 0.86rem;
  color: var(--w70);
  cursor: pointer;
  transition: background 0.12s ease-out, color 0.12s ease-out;
}
.cselect-option.is-active {
  background: var(--gold-10);
  color: var(--white);
}
.cselect-option[aria-selected="true"] { color: var(--gold-lt); }

/* =====================================================
   LATEST NEWS — distinct editorial band (HOMEPAGE ONLY)
   Scoped to .news-home so the blog page's news list is
   left untouched.
   ===================================================== */
.news-home {
  /* a recessed band with hairline edges — frames the section
     so it reads as deliberate, not background noise */
  background: var(--black-2);
  border-top: 1px solid var(--w10);
  border-bottom: 1px solid var(--w10);
}
.news-home .news-head { align-items: center; }

/* "View all news" becomes a clear bordered CTA */
.news-home .news-view-all {
  padding: 12px 22px;
  border: 1px solid var(--gold-20);
  background: var(--gold-10);
  color: var(--gold-lt);
  transition: background var(--dur-quick) var(--ease-out),
              border-color var(--dur-quick) var(--ease-out),
              gap var(--dur-quick) var(--ease-out);
}
.news-home .news-view-all:hover {
  background: var(--gold-20);
  border-color: var(--gold);
}

/* roomier rows + big editorial index numbers as the anchor */
.news-home .news-item {
  padding: 30px clamp(8px, 2vw, 22px);
  gap: clamp(20px, 3.5vw, 48px);
}
.news-home .news-num {
  font-size: clamp(2.2rem, 4.4vw, 3.4rem);
  color: var(--gold);
}
.news-home .news-item:hover .news-num { color: var(--gold-lt); }
.news-home .news-headline {
  font-size: clamp(1.25rem, 2.3vw, 2rem);
}
