/* ============================================================
   Summer IA Intensive — Omniscience
   Design tokens drawn from omniscience.education brand
   ============================================================ */

:root {
  /* Surfaces */
  --canvas: #FAF8F2;
  --canvas-alt: #F0F0E9;
  --canvas-warm: #ebebe2;

  /* Ink */
  --ink: #0C0F18;
  --ink-2: #161922;
  --muted: #4b5268;
  --mute-2: #838385;

  /* Accents */
  /* Warm watercolour palette — re-aligned to the student-IA illustration.
     The "green/lime/yellow/mint" names are kept for backwards-compat with
     existing component styles; their values are now image-warm tones. */
  --accent-green: #DD6B3D;       /* base CTA — warm coral-orange (bio-diagram tone) */
  --accent-lime: #EA8050;        /* lighter coral-orange for hover */
  --accent-mint-pale: #FCE4DE;   /* pale rose wash (was pale mint) */
  --accent-purple: #6B3FB0;      /* jewel violet */
  --accent-magenta: #D94560;     /* coral rose */
  --accent-orange: #f58515;      /* warm amber */
  --accent-yellow: #F5C76E;      /* warm amber-yellow (was electric) */

  /* Borders */
  --border: rgba(12, 15, 24, 0.08);
  --border-strong: rgba(12, 15, 24, 0.16);

  /* Brand-aligned deep surface — used on full-bleed feature strips
     (CTA strip). Cooler aubergine, not pure black, drawn from
     the Omniscience brand poster's dark surface. */
  --surface-deep: #1A0F2E;

  /* Typography */
  --font-display: 'Newsreader', Georgia, 'Times New Roman', serif;
  --font-body: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  /* Radii */
  --r-pill: 999px;
  --r-card: 20px;
  --r-chip: 12px;
  --r-input: 8px;

  /* Layout */
  --max-w: 1200px;
  --gutter: 24px;
  --toc-w: 240px;
  --toc-gap: 64px;
  --section-py: 80px;
  --section-py-mobile: 48px;

  /* Motion — small vocabulary applied consistently. Each curve has a job. */
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);     /* outbound — hover, reveal */
  --ease-in-out-quart: cubic-bezier(0.76, 0, 0.24, 1);/* two-sided — state changes */
  --ease-out-soft: cubic-bezier(0.32, 0.72, 0, 1);    /* gentle decel — header, panels */
  --dur-fast: 180ms;
  --dur-base: 260ms;
  --dur-slow: 600ms;
}

/* ============================================================ Reset */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; padding: 0; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: 88px;
  /* `clip` (not `hidden`) avoids making <html> a scroll container, which would
     break position: sticky for descendants like the TOC sidebar. */
  overflow-x: clip;
}

body {
  background: var(--canvas);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 17px;
  font-weight: 400;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: clip;
  width: 100%;
  /* Cleaner text rendering — kerning + standard ligatures across the page. */
  font-feature-settings: 'kern', 'liga';
  text-rendering: optimizeLegibility;
}

img, svg { display: block; max-width: 100%; }
button { font: inherit; cursor: pointer; }

/* Hanging punctuation lifts the first quote/dash into the margin. Safari only,
   silently ignored elsewhere — pure progressive enhancement. */
p, blockquote { hanging-punctuation: first allow-end last; }

/* Branded text selection. */
::selection {
  background: rgba(107, 63, 176, 0.18);
  color: var(--ink);
}

/* ============================================================ Typography */
h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--ink-2);
  /* Avoid orphaned last words on display headings. Modern browsers; degrades
     to the default greedy line-break elsewhere. */
  text-wrap: balance;
}
/* Newsreader is a variable font; opsz makes display sizes render with thinner,
   higher-contrast strokes the way real serif typography does in print. */
h1 {
  font-size: clamp(2.5rem, 4vw + 1.25rem, 4.25rem);
  margin-bottom: 1.25rem;
  font-variation-settings: 'opsz' 60;
  color: var(--accent-purple);
}
h2 {
  font-size: clamp(1.875rem, 2.5vw + 0.75rem, 2.75rem);
  margin-bottom: 1rem;
  font-variation-settings: 'opsz' 36;
  color: var(--accent-purple);
}
h3 {
  font-size: clamp(1.125rem, 0.75vw + 0.875rem, 1.375rem);
  font-weight: 600;
  margin-bottom: 0.75rem;
  font-variation-settings: 'opsz' 24;
}

p { max-width: 70ch; }
p + p { margin-top: 1rem; }

a { color: var(--accent-purple); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { color: var(--ink); }
a[aria-disabled="true"] { color: var(--mute-2); pointer-events: none; }

ul { padding-left: 1.25rem; }
ul li { margin-bottom: 0.4rem; }

.eyebrow {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 1.25rem;
}

/* ============================================================ Skip link */
.skip-link {
  position: absolute;
  top: -40px;
  left: 8px;
  background: var(--ink);
  color: var(--canvas);
  padding: 8px 16px;
  border-radius: 4px;
  z-index: 100;
  text-decoration: none;
  font-size: 14px;
}
.skip-link:focus { top: 8px; }

/* ============================================================ Header / Nav (liquid glass) */
/* Floating Liquid-Glass pill — the bar detaches from the page edges and sits
   as a translucent capsule. Heavy backdrop blur + saturation gives the
   characteristic vibrancy; the layered inner shadows fake the refraction
   at the glass edge; the ::before pseudo-element adds a specular sheen
   that catches light along the top. */
.site-header {
  position: sticky;
  top: 14px;
  z-index: 50;
  margin: 14px auto 0;
  max-width: calc(min(1280px, 100% - 32px));
  border-radius: 100px;
  /* Bright glass rim — light bending across the curved edge of the dome.  */
  border: 1px solid rgba(255, 255, 255, 0.5);
  /* Very low alpha so the page reads through; the slight white tint
     shifts the blurred content brighter, like a frosted dome with a
     small amount of milk-glass thickness. */
  background: rgba(255, 255, 255, 0.16);
  /* Heavy saturation + brightness push = the dome acts as a lens that
     amplifies whatever colour is under it, rather than greying it out. */
  backdrop-filter: blur(22px) saturate(220%) brightness(1.08);
  -webkit-backdrop-filter: blur(22px) saturate(220%) brightness(1.08);
  /* The 3D feel comes from a stacked set of shadows:
     1. Two outer drop shadows — soft + slightly tight — for the glass
        casting onto the page below.
     2. Bright TOP bevel inset (highlight where light catches the dome).
     3. Dark BOTTOM bevel inset (shadow on the underside of the dome).
     4. Thin BRIGHT bottom lip — the surface-tension highlight along
        the rim where light wraps around the curved underside.
     5. Side bevels for the rounded ends of the pill.                  */
  box-shadow:
    /* outer drop shadows */
    0 22px 50px rgba(12, 15, 24, 0.11),
    0 8px 18px rgba(12, 15, 24, 0.07),
    0 2px 4px rgba(12, 15, 24, 0.04),
    /* top bright bevel */
    inset 0 2px 0 rgba(255, 255, 255, 0.95),
    inset 0 6px 10px -2px rgba(255, 255, 255, 0.45),
    /* bottom dark inner shadow — the dome's underside */
    inset 0 -10px 16px -6px rgba(20, 18, 14, 0.08),
    inset 0 -3px 4px -2px rgba(20, 18, 14, 0.06),
    /* bottom surface-tension lip — bright line at the rim catching light */
    inset 0 -2px 0 -1px rgba(255, 255, 255, 0.7),
    /* side bevels for the pill's curved ends */
    inset 3px 0 6px -2px rgba(255, 255, 255, 0.4),
    inset -3px 0 6px -2px rgba(255, 255, 255, 0.4);
  isolation: isolate;
  transition:
    background-color var(--dur-base) var(--ease-out-soft),
    box-shadow      var(--dur-base) var(--ease-out-soft),
    border-color    var(--dur-base) var(--ease-out-soft),
    backdrop-filter var(--dur-base) var(--ease-out-soft);
}

/* Specular sheen — diagonal hot-spot near the upper-left + soft top
   highlight band. Mimics light catching the curve of a glass dome. */
.site-header::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background:
    /* hot-spot in the upper-left — the brightest reflection */
    radial-gradient(
      ellipse 65% 90% at 22% -10%,
      rgba(255, 255, 255, 0.65) 0%,
      rgba(255, 255, 255, 0) 60%
    ),
    /* secondary milder hot-spot upper-right for symmetry */
    radial-gradient(
      ellipse 50% 70% at 80% -10%,
      rgba(255, 255, 255, 0.35) 0%,
      rgba(255, 255, 255, 0) 65%
    ),
    /* general top-to-bottom highlight catching the upper half of the dome */
    linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.5) 0%,
      rgba(255, 255, 255, 0.08) 35%,
      rgba(255, 255, 255, 0) 65%
    );
  pointer-events: none;
  z-index: -1;
}

/* Bottom underside — soft luminous rim that reads as the surface-tension
   meniscus where the curved glass meets the page. */
.site-header::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 55%;
  border-radius: inherit;
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(255, 255, 255, 0) 40%,
    rgba(255, 255, 255, 0.06) 75%,
    rgba(255, 255, 255, 0.22) 100%
  );
  pointer-events: none;
  z-index: -1;
}

.site-header.is-scrolled {
  background: rgba(255, 255, 255, 0.26);
  backdrop-filter: blur(26px) saturate(220%) brightness(1.06);
  -webkit-backdrop-filter: blur(26px) saturate(220%) brightness(1.06);
  border-color: rgba(255, 255, 255, 0.6);
  box-shadow:
    0 26px 60px rgba(12, 15, 24, 0.15),
    0 10px 24px rgba(12, 15, 24, 0.09),
    0 3px 6px rgba(12, 15, 24, 0.05),
    inset 0 2px 0 rgba(255, 255, 255, 0.98),
    inset 0 6px 10px -2px rgba(255, 255, 255, 0.5),
    inset 0 -10px 16px -6px rgba(20, 18, 14, 0.10),
    inset 0 -3px 4px -2px rgba(20, 18, 14, 0.07),
    inset 0 -2px 0 -1px rgba(255, 255, 255, 0.75),
    inset 3px 0 6px -2px rgba(255, 255, 255, 0.45),
    inset -3px 0 6px -2px rgba(255, 255, 255, 0.45);
}
.nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 64px;
  gap: 24px;
}
/* Tighter padding when the nav lives inside the floating pill */
.site-header .shell.nav {
  max-width: none;
  padding-left: 28px;
  padding-right: 12px;
}
.brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
  line-height: 1;
  color: var(--ink);
}
.brand:hover { color: var(--ink); }
.brand:hover .omni-symbol,
.brand:hover .omni-wordmark { opacity: 1; }
.nav-links {
  display: flex;
  gap: 32px;
  list-style: none;
  padding: 0;
  margin: 0;
}
.nav-links a {
  color: var(--ink);
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
}
.nav-links a:hover { color: var(--accent-purple); }

/* Center the nav-links group relative to the header bar using a 3-column
   grid (1fr auto 1fr). This keeps the link cluster at the geometric centre
   regardless of how wide the brand or actions sides are, while letting
   nav-links keep its natural content width (no shrink-to-fit wrapping).
   Desktop only — mobile rules below handle <=880px. */
@media (min-width: 881px) {
  .nav {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
  }
  .nav > .brand { justify-self: start; }
  .nav > .nav-links { justify-self: center; }
  .nav > .nav-actions { justify-self: end; }
}

/* Right-side CTA cluster: secondary "Book a call" + primary "Apply" */
.nav-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}
/* Compact button variant used inside the nav */
.btn-sm {
  padding: 9px 16px;
  font-size: 13.5px;
}

/* Hamburger trigger — visible only at narrow widths, replaces .nav-links there. */
.nav-toggle {
  display: none;
  background: none;
  border: none;
  padding: 8px;
  cursor: pointer;
  width: 40px;
  height: 40px;
}
.nav-toggle-bar {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--ink);
  margin: 4px auto;
  transition: transform 200ms ease, opacity 200ms ease;
}
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(1) {
  transform: translateY(6px) rotate(45deg);
}
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(2) {
  opacity: 0;
}
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(3) {
  transform: translateY(-6px) rotate(-45deg);
}

@media (max-width: 880px) {
  .nav-toggle { display: block; }
  .nav { position: relative; }
  /* Off-screen by default; positioned as a slide-down panel under the pill.
     A small top gap keeps it visually detached from the floating pill, and
     it shares the same liquid-glass treatment so the design language reads
     consistently. */
  .nav-links {
    display: none;
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    right: 0;
    z-index: 60;
    flex-direction: column;
    gap: 16px;
    padding: 20px 24px;
    background: rgba(250, 248, 242, 0.78);
    backdrop-filter: blur(28px) saturate(180%);
    -webkit-backdrop-filter: blur(28px) saturate(180%);
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: 28px;
    box-shadow:
      0 12px 36px rgba(12, 15, 24, 0.12),
      inset 0 1px 0 rgba(255, 255, 255, 0.65);
  }
  /* Open state — driven by the trigger's aria-expanded */
  .site-header:has(.nav-toggle[aria-expanded="true"]) .nav-links {
    display: flex;
  }
  .nav-links a { font-size: 16px; padding: 4px 0; }
}

/* At narrow widths the wordmark + hamburger + Apply CTA can't all fit on one
   line. Tighten gap and Apply padding; full wordmark-hiding rule is below the
   .omni-wordmark base rule so it wins on source order without !important. */
@media (max-width: 480px) {
  .nav { gap: 12px; }
  .site-header .btn-primary { padding: 11px 18px; font-size: 14px; }
  /* "Book a call" gets too tight alongside the hamburger + Apply CTA;
     drop it from the top bar — users can still reach Calendly from
     the in-page "Book a 15-minute conversation" CTA further down. */
  .nav-actions .btn-outline { display: none; }
}

/* ============================================================ Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  border: none;
  padding: 13px 26px;
  border-radius: var(--r-pill);
  font-weight: 600;
  text-decoration: none;
  font-size: 15px;
  line-height: 1;
  transition: transform 0.15s ease, background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
  white-space: nowrap;
}
.btn-primary { background: var(--accent-green); color: #fff; }
.btn-primary:hover {
  background: var(--accent-lime);
  transform: translateY(-2px);
  color: #fff;
}
.btn-outline { background: transparent; color: var(--ink); border: 1.5px solid var(--ink); }
.btn-outline:hover { background: var(--ink); color: var(--canvas); }
.btn-arrow::after { content: "→"; font-weight: 400; }

/* ============================================================ Layout shells */
.shell {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

section {
  padding: var(--section-py-mobile) 0;
}
@media (min-width: 720px) {
  section { padding: var(--section-py) 0; }
}

/* Two-column page-grid: sticky TOC + content (when a .toc child is present);
   single column otherwise. The :has() selector lets the landing page reuse
   .page-grid for its content-only layout without a separate class. */
.page-grid {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 0 var(--gutter);
  display: grid;
  grid-template-columns: 1fr;
}
@media (min-width: 1024px) {
  .page-grid:has(> .toc) {
    grid-template-columns: var(--toc-w) 1fr;
    gap: var(--toc-gap);
  }
}
/* CSS Grid items default to min-width: auto, which lets a wide child (e.g. the
   marquee track at width:max-content) push the column past its 1fr allocation
   and overflow the page. Reset to 0 so the column respects its grid track. */
.page-grid > .toc,
.page-grid > .page-content { min-width: 0; }
.page-content > section { padding: 56px 0; }
.page-content > section:first-child { padding-top: 72px; }
@media (max-width: 1023px) {
  .page-grid {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .toc { display: none; }
}

/* ============================================================ Hero */
.hero {
  position: relative;
  padding-top: 96px;
  padding-bottom: 96px;
  /* Painterly washes echoing the watercolour palette — warm violet, coral
     rose, and amber. Mint kept as a quiet supporting note. */
  background:
    radial-gradient(ellipse 60vw 40vh at 95% 22%, rgba(217,  69,  96, 0.20), transparent 62%),
    radial-gradient(ellipse 55vw 38vh at  8% 18%, rgba(107,  63, 176, 0.18), transparent 60%),
    radial-gradient(ellipse 50vw 35vh at  5% 82%, rgba(245, 199, 110, 0.14), transparent 60%),
    radial-gradient(ellipse 80vw 30vh at 50% -8%, rgba(245, 133,  21, 0.12), transparent 65%);
  overflow: hidden;
}
@media (max-width: 720px) {
  .hero { padding-top: 64px; padding-bottom: 64px; }
}

/* ============================================================ Vector field canvas */
#vector-field {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  /* `width/height: 100%` references the initial containing block (viewport) without
     the scrollbar over-extension that 100vw/100vh would cause. `inset: 0` alone is
     not enough — <canvas> has an intrinsic 300×150 size that browsers fall back to
     if no explicit dimensions are set. */
}
.hero-content { max-width: 820px; position: relative; }
.hero-subhead {
  font-size: clamp(1.0625rem, 0.5vw + 1rem, 1.25rem);
  color: var(--muted);
  max-width: 60ch;
  margin-bottom: 2rem;
}
.hero-stats {
  display: flex;
  gap: 36px;
  margin: 2rem 0;
  flex-wrap: wrap;
}
.stat-num {
  font-family: var(--font-display);
  font-size: clamp(1.75rem, 1.5vw + 1rem, 2.25rem);
  color: var(--ink);
  display: block;
  line-height: 1;
}
.stat-label {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-top: 6px;
  display: block;
}
.cohort-pills {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 2rem;
}
.cohort-pill {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  background: var(--canvas-alt);
  padding: 8px 16px;
  border-radius: var(--r-pill);
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--ink);
  text-decoration: none;
  border: 1px solid var(--border);
  transition: background 0.15s ease, border-color 0.15s ease;
}
.cohort-pill:hover {
  background: var(--canvas);
  border-color: var(--ink);
  color: var(--ink);
}
.hero-ctas {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

/* ============================================================ TOC */
.toc {
  position: sticky;
  top: 96px;
  align-self: start;
  font-size: 14px;
  padding-top: 72px;
  /* Opaque background so content scrolling past doesn't bleed through. */
  background: var(--canvas);
  padding-bottom: 24px;
}
.toc-title {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--mute-2);
  margin-bottom: 1rem;
  font-weight: 500;
}
.toc ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.toc li { margin-bottom: 2px; }
.toc a {
  display: block;
  padding: 7px 14px;
  color: var(--muted);
  text-decoration: none;
  border-left: 2px solid transparent;
  font-size: 13.5px;
  line-height: 1.4;
  transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}
.toc a:hover { color: var(--ink); }
.toc a.is-active {
  color: var(--ink);
  border-left-color: var(--accent-green);
  font-weight: 500;
  background: rgba(27, 252, 143, 0.06);
}

/* ============================================================ Subjects */
.subjects-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  margin-top: 2rem;
}
@media (max-width: 720px) { .subjects-grid { grid-template-columns: 1fr; } }
.subject-card {
  background: var(--canvas-alt);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  padding: 28px;
  transition: background 0.2s ease, transform 0.2s ease;
}
.subject-card:hover { background: var(--canvas-warm); transform: translateY(-2px); }
.subject-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.subject-list li {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  font-size: 0.95rem;
  color: var(--ink);
}
.chip {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 10.5px;
  padding: 2px 8px;
  border-radius: var(--r-chip);
  background: var(--canvas);
  color: var(--ink);
  border: 1px solid var(--border);
  letter-spacing: 0.04em;
  font-weight: 500;
}

/* ============================================================ Subject picker
   Multi-select chips + a 3×2 schedule grid (3 cohorts × morning/afternoon).
   Picking a chip toggles it; a second pick in the same slot swaps the first
   (since a student can't be in two subjects at the same time). The grid
   visually shows which half-days the student would attend across the summer. */
.subject-picker {
  display: grid;
  gap: 24px;
  margin-top: 2rem;
}
.subject-picker-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
/* Chip — generic container styles. Two flavours:
   • .subject-chip-single  — STEM EE: the chip is itself a <button> (one slot, no level).
   • .subject-chip-dual    — subject + HL/SL segmented toggle.
   Selection state is driven by aria-pressed on either the chip (single) or on
   one of the inner level buttons (dual; matched with :has()). */
.subject-chip {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--canvas-alt);
  border: 1.5px solid var(--border);
  border-radius: var(--r-pill);
  font-size: 14px;
  font-weight: 500;
  color: var(--ink);
  transition: background var(--dur-fast) var(--ease-out-soft),
              border-color var(--dur-fast) var(--ease-out-soft),
              color var(--dur-fast) var(--ease-out-soft),
              transform var(--dur-fast) var(--ease-out-soft);
}
.subject-chip-single {
  cursor: pointer;
  padding: 7px 16px;
  /* Inherit only font-family (override the <button> UA default) — keep the
     font-size: 14px set on .subject-chip. `font: inherit` would have wiped it. */
  font-family: inherit;
  font-weight: 500;
  min-height: 41px;
}
.subject-chip-single:hover {
  background: var(--canvas-warm);
  border-color: var(--border-strong);
  transform: translateY(-1px);
}
.subject-chip-single[aria-pressed="true"] {
  background: var(--accent-green);
  border-color: var(--accent-green);
  color: #fff;
}

.subject-chip-dual {
  padding: 5px 6px 5px 14px;
  min-height: 41px;
}
.subject-chip-dual:hover {
  border-color: var(--border-strong);
}
/* If any inner level is pressed, the whole chip turns into the "selected"
   colour. JS adds .is-selected on the chip so we don't rely on :has() —
   Chrome's :has() invalidation can miss attribute changes on the initial-
   render chips here. */
.subject-chip-dual.is-selected {
  background: var(--accent-green);
  border-color: var(--accent-green);
  color: #fff;
}

.subject-chip-name {
  font-weight: 500;
  white-space: nowrap;
}

/* Subject chip icons — small 16px SVGs that sit before the subject name.
   currentColor inherits from the chip's text colour so they auto-adapt
   when the chip is selected (text turns white, icon turns white). */
.subject-chip-icon {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  display: inline-block;
  transition: transform var(--dur-base) var(--ease-out-expo);
}
.subject-chip:hover .subject-chip-icon { transform: scale(1.12) rotate(-4deg); }
.subject-chip-dual.is-selected .subject-chip-icon,
.subject-chip-single[aria-pressed="true"] .subject-chip-icon { transform: scale(1.08); }

.subject-chip-levels {
  display: inline-flex;
  background: rgba(12, 15, 24, 0.06);
  border-radius: var(--r-pill);
  padding: 2px;
  gap: 2px;
}
.subject-chip-dual.is-selected .subject-chip-levels {
  background: rgba(255, 255, 255, 0.20);
}
.subject-chip-level {
  appearance: none;
  background: transparent;
  border: none;
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  padding: 4px 9px;
  border-radius: var(--r-pill);
  color: var(--ink);
  cursor: pointer;
  transition: background var(--dur-fast) var(--ease-out-soft),
              color var(--dur-fast) var(--ease-out-soft);
}
.subject-chip-level:hover {
  background: rgba(12, 15, 24, 0.08);
}
.subject-chip-dual.is-selected .subject-chip-level {
  color: rgba(255, 255, 255, 0.65);
}
.subject-chip-dual.is-selected .subject-chip-level:hover {
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
}
/* The actively-pressed level pill: pop in white-on-coral so it reads as the
   active state. Selector matches the parent specificity (which sets the muted
   white text) so this wins for the active pill specifically. */
.subject-chip-dual.is-selected .subject-chip-level[aria-pressed="true"],
.subject-chip-dual.is-selected .subject-chip-level[aria-pressed="true"]:hover {
  background: #fff;
  color: var(--accent-green);
}

/* 3×2 schedule grid */
.subject-schedule {
  display: grid;
  gap: 6px;
}
.subject-schedule-row {
  display: grid;
  grid-template-columns: minmax(150px, 1.1fr) 2fr 2fr;
  gap: 8px;
  align-items: stretch;
}
.subject-schedule-head { padding: 0 0 2px; }
.subject-schedule-slot-label {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(12, 15, 24, 0.55);
  padding: 6px 14px;
}
.subject-schedule-cohort {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 14px 14px;
  background: rgba(12, 15, 24, 0.04);
  border-radius: var(--r-chip);
}
.subject-schedule-cohort-num {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.65;
}
.subject-schedule-cohort-dates {
  font-size: 13px;
  font-weight: 600;
  margin-top: 2px;
}
.subject-schedule-cell {
  background: rgba(12, 15, 24, 0.025);
  border: 1.5px dashed rgba(12, 15, 24, 0.12);
  border-radius: var(--r-chip);
  padding: 14px 16px;
  font-size: 14px;
  font-weight: 500;
  min-height: 80px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
  text-align: left;
  transition: background var(--dur-fast) var(--ease-out-soft),
              border-color var(--dur-fast) var(--ease-out-soft),
              color var(--dur-fast) var(--ease-out-soft);
}
.subject-schedule-track {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.2;
}
.subject-schedule-track-sub {
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.05em;
  opacity: 0.55;
  margin-left: 4px;
}
.subject-schedule-cell .cohort-progress {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}
.subject-schedule-cell .cohort-progress-text {
  margin-top: 6px;
  font-size: 10px;
}
.subject-schedule-cell.is-active {
  background: var(--accent-green);
  color: #fff;
  border-color: var(--accent-green);
  border-style: solid;
  align-items: center;
  text-align: center;
}
.subject-schedule-subject {
  font-size: 15px;
  font-weight: 600;
}
.subject-schedule-cohort.is-attending {
  background: rgba(221, 107, 61, 0.12);
}

.subject-picker-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 14px;
  padding-top: 4px;
}
.subject-picker-summary {
  color: rgba(12, 15, 24, 0.7);
  font-size: 14.5px;
  margin: 0;
  max-width: 60ch;
}

@media (max-width: 720px) {
  .subject-schedule-head { display: none; }
  .subject-schedule-row {
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "cohort cohort"
      "morning afternoon";
    background: rgba(12, 15, 24, 0.02);
    border: 1px solid var(--border);
    border-radius: var(--r-card);
    padding: 8px;
  }
  .subject-schedule-row .subject-schedule-cohort {
    grid-area: cohort;
    background: transparent;
    padding: 6px 6px 0;
    flex-direction: row;
    gap: 10px;
    align-items: baseline;
  }
  .subject-schedule-row .subject-schedule-cohort.is-attending { background: transparent; }
  .subject-schedule-row .subject-schedule-cell[data-slot="morning"] { grid-area: morning; }
  .subject-schedule-row .subject-schedule-cell[data-slot="afternoon"] { grid-area: afternoon; }
  .subject-schedule-cell::after {
    content: attr(data-slot);
    display: none;
  }
}

/* ============================================================ Cohorts / Schedule */
.cohort-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-top: 2rem;
}
@media (max-width: 880px) { .cohort-grid { grid-template-columns: 1fr; } }
.cohort-card {
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  padding: 28px;
  background: var(--canvas);
  display: flex;
  flex-direction: column;
}
.cohort-num {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent-purple);
  margin-bottom: 0.5rem;
  font-weight: 500;
}
.cohort-dates {
  font-family: var(--font-display);
  font-size: 1.5rem;
  color: var(--ink);
  margin-bottom: 1.5rem;
  line-height: 1.2;
}
.cohort-slot {
  padding: 14px 0;
  border-top: 1px solid var(--border);
}
.cohort-slot-label {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
  display: block;
  margin-bottom: 4px;
}
.cohort-slot-subject { font-size: 1rem; color: var(--ink); }
.cohort-hours {
  margin-top: 1rem;
  padding-top: 14px;
  border-top: 1px solid var(--border);
  font-family: var(--font-mono);
  font-size: 11.5px;
  color: var(--mute-2);
}
.cohort-progress {
  margin-top: auto;
  padding-top: 18px;
  border-top: 1px solid var(--border);
}
/* Per-slot progress bars sit inside .cohort-slot — no extra divider needed
   (the slot already has its own border-top). */
.cohort-slot .cohort-progress {
  margin-top: 12px;
  padding-top: 0;
  border-top: 0;
}
.cohort-progress-bar {
  position: relative;
  height: 4px;
  background: var(--canvas-alt);
  border-radius: 2px;
  overflow: hidden;
}
.cohort-progress-bar::after {
  content: '';
  position: absolute;
  inset: 0 auto 0 0;
  width: calc(var(--filled, 0) / 15 * 100%);
  background: var(--accent-green);
  border-radius: inherit;
}
.cohort-progress-text {
  display: block;
  margin-top: 8px;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--mute-2);
}

/* ============================================================ Plan section (full-width, hosts picker) */
.plan-section {
  padding: 80px 0 96px;
}
@media (max-width: 720px) {
  .plan-section { padding: 56px 0 72px; }
}
.plan-section h2 { margin-bottom: 0.5rem; }
.plan-intro {
  color: var(--muted);
  max-width: 60ch;
  margin: 0 0 0.5rem;
}

.plan-included {
  margin-top: 56px;
  padding-top: 32px;
  border-top: 1px solid var(--border);
}
.plan-included-title {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
  margin: 0 0 16px;
}
.plan-included-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px 32px;
  font-size: 0.95rem;
  color: var(--ink);
}
@media (max-width: 720px) { .plan-included-list { grid-template-columns: 1fr; } }
.plan-included-list li {
  padding-left: 22px;
  position: relative;
  margin: 0;
}
.plan-included-list li::before {
  content: "✓";
  position: absolute;
  left: 0;
  color: var(--accent-green);
  font-weight: 700;
}

/* ============================================================ Plan / Picker */
.picker {
  margin-top: 2rem;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 32px;
  align-items: start;
  width: 100%;
}
@media (max-width: 880px) { .picker { grid-template-columns: 1fr; } }

.picker-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  width: 100%;
}
@media (max-width: 540px) { .picker-grid { grid-template-columns: 1fr; } }

.picker-card {
  width: 100%;
  justify-self: stretch;
}

.picker-card {
  background: var(--canvas-alt);
  border: 1.5px solid var(--border);
  border-radius: var(--r-card);
  padding: 18px 18px 18px 18px;
  cursor: pointer;
  font: inherit;
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 6px;
  position: relative;
  transition: border-color 0.15s ease, background 0.15s ease, transform 0.15s ease;
  min-height: 110px;
}
.picker-card:hover:not(.is-disabled):not(.is-selected) {
  border-color: var(--ink);
  transform: translateY(-1px);
}
.picker-card:focus-visible {
  outline: 2px solid var(--accent-purple);
  outline-offset: 2px;
}
.picker-card.is-selected {
  border-color: var(--accent-green);
  background: var(--accent-mint-pale);
}
.picker-card.is-disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.picker-eyebrow {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent-purple);
  font-weight: 500;
  display: block;
}
.picker-subject {
  font-family: var(--font-display);
  font-size: 1.125rem;
  color: var(--ink);
  line-height: 1.25;
  display: block;
}
.picker-meta {
  font-family: var(--font-mono);
  font-size: 11.5px;
  color: var(--muted);
  display: block;
  margin-top: 2px;
}
.picker-check {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--accent-green);
  color: var(--ink);
  display: none;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
}
.picker-card.is-selected .picker-check { display: flex; }

.picker-summary {
  background: var(--canvas);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  padding: 24px;
  position: sticky;
  top: 96px;
}
.picker-empty {
  color: var(--muted);
  font-size: 0.95rem;
  margin: 0;
}
.picker-result h3 {
  margin: 0 0 1rem;
  font-size: 11px;
  font-family: var(--font-mono);
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}
.picker-selected {
  list-style: none;
  padding: 0;
  margin: 0 0 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.picker-selected li {
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.picker-selected li:last-child { border-bottom: none; padding-bottom: 0; }
.picker-li-cohort {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--accent-purple);
}
.picker-li-subject {
  font-family: var(--font-display);
  font-size: 1.0625rem;
  color: var(--ink);
}
.picker-li-dates {
  font-size: 0.8125rem;
  color: var(--muted);
  font-family: var(--font-mono);
}
.picker-pricing {
  border-top: 1px solid var(--border);
  padding-top: 16px;
  margin-bottom: 1.25rem;
}
.picker-price-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 0.9375rem;
  margin-bottom: 8px;
  color: var(--ink);
}
.picker-discount { color: var(--accent-purple); font-weight: 500; }
.picker-total-row {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 600;
  margin-top: 12px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
  color: var(--ink);
}
.picker-fee {
  font-size: 12px;
  color: var(--mute-2);
  margin: 8px 0 0;
}
.picker-apply {
  display: inline-flex;
  width: 100%;
  justify-content: center;
}

/* ============================================================ Deadlines timeline
   Even visual spacing between the 4 milestones; the progress fill (and the
   "now" marker) are positioned using a time-aware percentage computed by JS,
   so the marker sits inside the segment that matches today's actual date. */
.timeline {
  --track-h: 4px;
  --dot-d: 18px;
  --progress: 0;
  position: relative;
  margin-top: 2rem;
  padding: 18px var(--dot-d) 96px;
  max-width: 920px;
}
.timeline-track {
  position: relative;
  height: var(--track-h);
  background: rgba(12, 15, 24, 0.10);
  border-radius: var(--r-pill);
}
.timeline-fill {
  position: absolute;
  inset: 0 auto 0 0;
  width: calc(var(--progress) * 100%);
  background: var(--accent-orange);
  border-radius: inherit;
  transition: width 1200ms var(--ease-out-expo);
}
.timeline-now {
  position: absolute;
  top: 50%;
  left: calc(var(--progress) * 100%);
  transform: translate(-50%, -50%);
  z-index: 2;
  pointer-events: none;
}
.timeline-now::before {
  content: '';
  display: block;
  width: 14px;
  height: 14px;
  background: var(--accent-orange);
  border: 3px solid var(--canvas);
  border-radius: 50%;
  box-shadow: 0 0 0 2px var(--accent-orange);
  animation: timeline-now-pulse 2.4s ease-in-out infinite;
}
.timeline-now-label {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--canvas);
  background: var(--accent-orange);
  white-space: nowrap;
  padding: 4px 8px;
  border-radius: var(--r-chip);
  box-shadow: 0 2px 8px rgba(245, 133, 21, 0.25);
}
.timeline-now-label::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 4px solid transparent;
  border-top-color: var(--accent-orange);
}
@keyframes timeline-now-pulse {
  0%, 100% { box-shadow: 0 0 0 2px var(--accent-orange), 0 0 0 0 rgba(245, 133, 21, 0.45); }
  50%       { box-shadow: 0 0 0 2px var(--accent-orange), 0 0 0 10px rgba(245, 133, 21, 0); }
}

.timeline-milestones {
  list-style: none;
  padding: 0;
  margin: 0;
  position: absolute;
  inset: 18px var(--dot-d) auto var(--dot-d);
  height: var(--track-h);
}
.timeline-milestone {
  position: absolute;
  top: 50%;
  left: calc(var(--position, 0) * 100%);
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  z-index: 1;
  width: 0;
}
.timeline-marker {
  display: block;
  width: var(--dot-d);
  height: var(--dot-d);
  background: var(--canvas);
  border: 2px solid rgba(12, 15, 24, 0.15);
  border-radius: 50%;
  position: relative;
  transition: background var(--dur-base) var(--ease-out-soft),
              border-color var(--dur-base) var(--ease-out-soft);
}
.timeline-milestone.is-past .timeline-marker {
  background: var(--accent-orange);
  border-color: var(--accent-orange);
}
.timeline-milestone.is-past .timeline-marker::after {
  content: '';
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='4.5 9 7.5 12 13.5 5.5'/></svg>") center/12px no-repeat;
}
.timeline-date,
.timeline-label,
.timeline-note {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  white-space: nowrap;
}
.timeline-date {
  top: calc(100% + 12px);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--accent-orange);
}
.timeline-label {
  top: calc(100% + 34px);
  font-size: 14px;
  font-weight: 500;
  color: var(--ink);
}
.timeline-note {
  top: calc(100% + 58px);
  font-size: 11px;
  color: var(--muted);
  font-style: italic;
  white-space: normal;
  max-width: 160px;
  line-height: 1.35;
}

/* Vertical timeline at narrow widths — track runs top→bottom, milestones stack. */
@media (max-width: 720px) {
  .timeline {
    padding: 0 0 0 36px;
    max-width: none;
    margin-top: 1.5rem;
  }
  .timeline-track {
    position: absolute;
    left: 9px;
    top: 6px;
    bottom: 6px;
    width: var(--track-h);
    height: auto;
  }
  .timeline-fill {
    inset: 0 0 auto 0;
    width: 100%;
    height: calc(var(--progress) * 100%);
    transition: height 1200ms var(--ease-out-expo);
  }
  .timeline-now {
    top: calc(var(--progress) * 100%);
    left: 9px;
    transform: translate(-50%, -50%);
  }
  .timeline-now-label {
    bottom: auto;
    left: calc(100% + 10px);
    top: 50%;
    transform: translateY(-50%);
  }
  .timeline-now-label::after {
    top: 50%;
    left: -4px;
    transform: translateY(-50%);
    border: 4px solid transparent;
    border-top-color: transparent;
    border-right-color: var(--accent-orange);
  }
  .timeline-milestones {
    position: relative;
    inset: auto;
    height: auto;
    padding-top: 6px;
  }
  .timeline-milestone {
    position: relative;
    top: auto;
    left: auto;
    transform: none;
    width: 100%;
    align-items: flex-start;
    text-align: left;
    margin-bottom: 32px;
    padding-left: 30px;
  }
  .timeline-milestone:last-child { margin-bottom: 6px; }
  .timeline-marker {
    position: absolute;
    left: -27px;
    top: 4px;
  }
  .timeline-date,
  .timeline-label,
  .timeline-note {
    position: static;
    transform: none;
    white-space: normal;
    text-align: left;
    max-width: none;
    width: 100%;
    display: block;
  }
  .timeline-date { font-size: 11px; margin-bottom: 4px; }
  .timeline-label { font-size: 15px; }
  .timeline-note { font-size: 12px; margin-top: 6px; }
}

/* ============================================================ Investment / pricing */
.pricing-tiers {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin: 2.5rem 0 1.5rem;
}
@media (max-width: 800px) {
  .pricing-tiers { grid-template-columns: 1fr; }
}
.pricing-card {
  background: var(--canvas);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 26px 26px 24px;
  position: relative;
  display: flex;
  flex-direction: column;
}
.pricing-card.is-popular {
  border-color: var(--accent-purple);
  background: linear-gradient(180deg, var(--canvas) 0%, rgba(107, 63, 176, 0.05) 100%);
  box-shadow: 0 8px 24px rgba(107, 63, 176, 0.08);
}
.pricing-flag {
  position: absolute;
  top: -10px;
  left: 22px;
  background: var(--accent-purple);
  color: #fff;
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 500;
  padding: 4px 10px;
  border-radius: 999px;
}
.pricing-eyebrow {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent-purple);
  font-weight: 500;
  margin-bottom: 14px;
  display: block;
}
.pricing-price {
  font-family: var(--font-display);
  font-size: clamp(2rem, 1.5vw + 1.4rem, 2.4rem);
  font-weight: 500;
  color: var(--ink-2);
  margin: 0 0 6px;
  font-variation-settings: 'opsz' 28;
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}
.pricing-save {
  /* Hardcoded green — `--accent-green` is misnamed (defined as coral #DD6B3D),
     so referencing it makes the save pill coral-on-coral and invisible.
     Proper token rename is v2 design-system work; this is the v1.5 hotfix. */
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #2f9162;
  background: rgba(47, 145, 98, 0.10);
  padding: 3px 8px;
  border-radius: 999px;
  font-weight: 500;
  white-space: nowrap;
}
.pricing-unit {
  font-family: var(--font-mono);
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0.02em;
  color: var(--mute-2);
  white-space: nowrap;
}
.pricing-meta {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--mute-2);
  letter-spacing: 0.02em;
  margin: 0 0 14px;
}
.pricing-body {
  color: var(--muted);
  font-size: 0.9375rem;
  line-height: 1.55;
  margin: 0;
}

.pricing-included {
  background: var(--canvas-alt);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 22px 26px 24px;
  margin-top: 1.5rem;
}
.pricing-included-title {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
  display: block;
  margin-bottom: 14px;
}
.pricing-included ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px 28px;
}
@media (max-width: 600px) {
  .pricing-included ul { grid-template-columns: 1fr; }
}
.pricing-included li {
  position: relative;
  padding-left: 26px;
  font-size: 0.9375rem;
  color: var(--ink);
  line-height: 1.45;
}
.pricing-included li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 3px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--accent-purple);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'><path d='M4 8.2l2.4 2.4 5.2-5.4' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-position: center;
}

.pricing-note {
  margin-top: 1.25rem;
  font-size: 0.875rem;
  color: var(--mute-2);
  line-height: 1.5;
}

/* ============================================================ Location */
.location-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  margin-top: 2rem;
}
@media (max-width: 880px) { .location-grid { grid-template-columns: 1fr; gap: 24px; } }
.location-block h3 {
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 500;
  margin: 0 0 12px;
}
.location-block p { margin: 0 0 0.75rem; }
.location-block address { font-style: normal; }
.location-list {
  padding-left: 1.1em;
  line-height: 1.65;
}
.location-list li { margin-bottom: 8px; }
/* Location — full-width watercolour campus illustration below the intro.
   On wider viewports the figure breaks out ~10% past the column on each
   side so the image reads as a feature rather than an inline thumbnail. */
.location-image {
  margin: 2.5rem -10% 1.5rem;
  position: relative;
  isolation: isolate;
  background: var(--canvas);
}
@media (max-width: 1024px) {
  .location-image { margin: 2.5rem 0 1.5rem; }
}
.location-image img {
  display: block;
  width: 100%;
  height: auto;
  mix-blend-mode: multiply;
}

/* "What is the IA Intensive?" — body copy + full-width watercolour student.
   The cutout PNG has alpha-transparent edges, so no blend-mode trick needed. */
.programme-image {
  margin: 2.5rem 0 0.5rem;
  position: relative;
  isolation: isolate;
}
.programme-image img {
  display: block;
  width: 100%;
  height: auto;
}

/* ============================================================ How to Apply */
.apply-row {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 40px;
  margin-top: 2rem;
}
@media (max-width: 880px) { .apply-row { grid-template-columns: 1fr; gap: 24px; } }
.callout {
  background: var(--canvas-alt);
  border-radius: var(--r-card);
  padding: 28px 28px 28px 32px;
  border: 1px solid var(--border);
  border-left: 4px solid var(--accent-magenta);
  margin: 2.5rem 0;
}
.callout h3 { margin: 0 0 0.5rem; }
.callout p { margin: 0; }

/* ============================================================ Activities */
.kw-chip {
  background: var(--accent-mint-pale);
  padding: 1px 8px;
  border-radius: 4px;
  font-weight: 500;
  white-space: nowrap;
}

/* ============================================================ Advantage cards */
.advantage-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  margin-top: 2rem;
}
@media (max-width: 880px) { .advantage-grid { grid-template-columns: 1fr; } }
.advantage-card {
  background: var(--canvas-alt);
  border-radius: var(--r-card);
  padding: 32px;
  border: 1px solid var(--border);
}
/* Was a coloured disk; now hosts an inline SVG. Colour passes through via
   `color` (inline on each card) and the SVGs render with currentColor. */
.advantage-icon {
  width: 48px;
  height: 48px;
  margin-bottom: 1.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
}
.advantage-icon svg {
  width: 100%;
  height: 100%;
  overflow: visible;
}

/* Per-card hover animations. Icons sit in this order:
   1 compass  ·  2 rubric  ·  3 hub+spokes  ·  4 speech bubble (AI)
   5 clipboard+check  ·  6 timeline continuation */

/* Card 1 (compass — pre-programme diagnostic): needle rotates as if
   calibrating to your situation. */
.advantage-card-1 .advantage-compass-needle {
  transform-origin: 24px 24px;
  transition: transform 700ms var(--ease-out-expo);
}
.advantage-card-1:hover .advantage-compass-needle {
  transform: rotate(58deg);
}

/* Card 2 (rubric — five IB criteria): check dots scale sequentially top-to-
   bottom on hover, as if each criterion is being ticked off. */
.advantage-card-2 .advantage-rubric-checks circle {
  transform-origin: center;
  transition: transform 360ms var(--ease-out-expo);
  transition-delay: calc(var(--i) * 80ms);
}
.advantage-card-2:hover .advantage-rubric-checks circle {
  transform: scale(1.3);
}
.advantage-card-2 .advantage-rubric {
  transition: opacity var(--dur-base) var(--ease-out-expo);
  opacity: 0.7;
}
.advantage-card-2:hover .advantage-rubric { opacity: 1; }

/* Card 3 (hub + spokes — workshops + 1:1 access): outer dots ripple outward
   sequentially on hover, spokes brighten. */
.advantage-card-3 .advantage-outers circle {
  transform-origin: 24px 24px;
  transition: transform 420ms var(--ease-out-expo);
  transition-delay: calc(var(--i) * 70ms);
}
.advantage-card-3:hover .advantage-outers circle { transform: scale(1.35); }
.advantage-card-3 .advantage-spokes {
  transition: opacity var(--dur-base) var(--ease-out-expo);
}
.advantage-card-3:hover .advantage-spokes { opacity: 0.85; }

/* Card 4 (speech bubble — AI use): the bubble nudges up and tilts. */
.advantage-card-4 .advantage-bubble {
  transform-origin: 24px 18px;
  transition: transform var(--dur-base) var(--ease-out-expo);
}
.advantage-card-4:hover .advantage-bubble {
  transform: translateY(-2px) rotate(-4deg);
}

/* Card 5 (clipboard + check — examiner-marked drafts + score prediction):
   the check badge gently pops in. */
.advantage-card-5 .advantage-check {
  transform-origin: 36px 36px;
  transition: transform var(--dur-base) var(--ease-out-expo);
}
.advantage-card-5:hover .advantage-check {
  transform: scale(1.18) rotate(-6deg);
}

/* Card 6 (continuation — programme doesn't end Day 10): dashed line offset
   animates rightward (time passing), open autumn dot fills in. */
.advantage-card-6 .advantage-tail-line {
  transition: stroke-dashoffset 1000ms linear;
}
.advantage-card-6:hover .advantage-tail-line { stroke-dashoffset: -12; }
.advantage-card-6 .advantage-tail-dot {
  transform-origin: 43px 24px;
  transition: transform 380ms var(--ease-out-expo),
              fill var(--dur-base) var(--ease-out-soft);
}
.advantage-card-6:hover .advantage-tail-dot {
  transform: scale(1.25);
  fill: currentColor;
}

/* ============================================================ How-it-works
   Three-act layout: 3 pillar cards → five-stage arc visualization → outputs
   callout → CTA. The pillars sit in a tighter 3-column grid (the generic
   .advantage-grid is 2-col; this override gives this section its own rhythm). */
.how-pillars.advantage-grid {
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
@media (max-width: 960px) {
  .how-pillars.advantage-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 720px) {
  .how-pillars.advantage-grid { grid-template-columns: 1fr; }
}


/* Outputs — the climax. Refined typography + inline coral check badges so
   each item reads as a concrete deliverable instead of a bullet point. */
.how-outputs {
  margin-top: 48px;
  padding: 32px 36px;
  background: var(--canvas-alt);
  border-radius: var(--r-card);
  border: 1px solid var(--border);
  position: relative;
}
.how-outputs-eyebrow {
  display: block;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent-magenta);
  margin-bottom: 10px;
}
.how-outputs h3 {
  font-family: var(--font-serif);
  font-size: 1.5rem;
  font-weight: 500;
  margin: 0 0 22px;
  color: var(--ink);
  line-height: 1.2;
}
.how-outputs ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 32px;
}
.how-outputs li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  color: var(--ink);
  font-size: 1rem;
  line-height: 1.5;
}
.how-outputs-check {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  color: var(--accent-magenta);
  margin-top: 2px;
}

/* CTA — closes the section. Aligned left at desktop, full-width on mobile. */
.how-cta {
  margin-top: 36px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 18px;
  max-width: 720px;
}
.how-cta p {
  color: var(--muted);
  font-size: 0.96rem;
  margin: 0;
}

/* Responsive: vertical stack on narrow widths. The arc stages become rows
   with the circle on the left and the name + days inline next to it. */
@media (max-width: 880px) {
  .how-arc { padding: 28px 22px 24px; }
  .how-arc-row { grid-template-columns: 1fr; gap: 14px; }
  .how-arc-row::before {
    left: 22px;
    right: auto;
    top: 22px;
    bottom: 22px;
    width: 2px;
    height: auto;
    background: linear-gradient(
      to bottom,
      transparent 0%,
      var(--accent-magenta) 6%,
      var(--accent-magenta) 94%,
      transparent 100%
    );
  }
  .how-arc-stage {
    flex-direction: row;
    text-align: left;
    align-items: center;
    gap: 16px;
  }
  .how-arc-stage-num { width: 44px; height: 44px; flex-shrink: 0; }
  .how-arc-stage-name { font-size: 16px; flex: 1; }
  .how-arc-stage-days { white-space: nowrap; }
}
@media (max-width: 720px) {
  .how-outputs { padding: 24px 22px; }
  .how-outputs ul { grid-template-columns: 1fr; }
}

/* ============================================================ Tools banner (marquee) */
.tools-banner {
  padding: 56px 0;
  /* Break out of the page-grid right column so the marquee spans the full viewport,
     regardless of how far the parent column is offset from the viewport edges. */
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
}
.logo-marquee {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
  position: relative;
  /* fade out the edges so logos don't pop in/out hard */
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
.logo-marquee-track {
  display: flex;
  width: max-content;
  animation: logo-marquee 50s linear infinite;
  align-items: center;
}
.logo-marquee:hover .logo-marquee-track {
  animation-play-state: paused;
}
.logo-item {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  padding: 0 44px;
  opacity: 0.82;
  transition: opacity 0.2s ease;
}
.logo-item:hover { opacity: 1; }
.logo-item img {
  height: 56px;
  width: auto;
  max-width: 200px;
  display: block;
  object-fit: contain;
}
@keyframes logo-marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .logo-marquee-track { animation: none; }
}

/* ============================================================ Testimonial */
.testimonial-block {
  border-left: 3px solid var(--accent-magenta);
  padding-left: 28px;
  margin: 3rem 0 1rem;
  max-width: 760px;
}
.testimonial-quote {
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(1.375rem, 1.5vw + 0.875rem, 1.875rem);
  line-height: 1.35;
  color: var(--ink);
  margin: 0 0 1rem;
  font-weight: 400;
}
.testimonial-attr {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--muted);
  letter-spacing: 0.06em;
  font-weight: 500;
}

/* ============================================================ Cost & Aid */
.cost-row {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 40px;
  align-items: start;
  margin-top: 2rem;
}
@media (max-width: 880px) { .cost-row { grid-template-columns: 1fr; gap: 24px; } }
.price-block {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 1.5vw + 1rem, 2rem);
  line-height: 1.4;
  color: var(--ink);
  margin: 0 0 0.75rem;
}
.price-num { font-weight: 600; }
.price-label {
  font-size: 0.875rem;
  font-family: var(--font-body);
  color: var(--muted);
  font-weight: 400;
}
.price-divider { color: var(--mute-2); margin: 0 10px; font-weight: 300; }
.price-fee { font-size: 1rem; color: var(--muted); margin-top: 1rem; }
.included-list { padding-left: 20px; line-height: 1.85; }

/* ============================================================ CTA strip */
.cta-strip {
  background: var(--surface-deep);
  color: var(--canvas);
  padding: 56px 24px;
  position: relative;
  overflow: hidden;
}
/* Brand lens accent on the dark feature strip — same magenta+mint pairing
   as the hero, but at a much smaller scale so it reads as quiet ornament. */
.cta-strip::before,
.cta-strip::after {
  content: '';
  position: absolute;
  pointer-events: none;
  border-radius: 50%;
  filter: blur(56px);
  opacity: 0.35;
}
.cta-strip::before {
  width: 280px; height: 180px;
  left: -80px; top: -60px;
  background: var(--accent-magenta);
}
.cta-strip::after {
  width: 320px; height: 200px;
  right: -100px; bottom: -80px;
  background: var(--accent-green);
}
.cta-strip-inner { position: relative; z-index: 1; }
.cta-strip-inner {
  max-width: var(--max-w);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}
.cta-strip h2 {
  color: var(--canvas);
  margin: 0;
  font-size: clamp(1.5rem, 1.5vw + 1rem, 2rem);
}

/* ============================================================ FAQ */
.faq-list {
  display: flex;
  flex-direction: column;
  margin-top: 2rem;
  max-width: 820px;
}
.faq-item {
  border-top: 1px solid var(--border);
  padding: 22px 0;
}
.faq-item:last-child { border-bottom: 1px solid var(--border); }
.faq-item summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  font-family: var(--font-display);
  font-size: clamp(1.0625rem, 0.4vw + 1rem, 1.25rem);
  color: var(--ink);
  font-weight: 500;
  line-height: 1.3;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: "";
  width: 18px;
  height: 18px;
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"><path d="M9 2v14M2 9h14" stroke="%234b5268" stroke-width="1.5" stroke-linecap="round"/></svg>');
  background-size: contain;
  flex-shrink: 0;
  transition: transform 0.2s ease;
}
.faq-item[open] summary::after { transform: rotate(45deg); }
.faq-body {
  padding-top: 12px;
  color: var(--muted);
  max-width: 70ch;
}

/* ============================================================ Apply form */
.apply-section {
  background: var(--canvas-alt);
  padding: 80px 24px;
}
.apply-shell {
  max-width: 820px;
  margin: 0 auto;
}

.form-header { margin-bottom: 2.5rem; }
.form-header .eyebrow { margin-bottom: 0.75rem; display: inline-block; }
.form-header h2 { margin-bottom: 0.75rem; }
.form-lede {
  color: var(--muted);
  max-width: 62ch;
  margin: 0;
}

/* Progress indicator */
.progress { margin-bottom: 3rem; }
.progress-track { position: relative; }
.progress-steps {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  position: relative;
  z-index: 1;
  padding: 0;
  margin: 0;
  list-style: none;
}
.progress-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  position: relative;
}
.progress-num {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--canvas);
  border: 1.5px solid var(--border-strong, var(--border));
  color: var(--mute-2);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 500;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.progress-label {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--mute-2);
  font-weight: 500;
  transition: color 0.2s ease;
}
.progress-step.is-done .progress-num {
  background: var(--accent-purple);
  border-color: var(--accent-purple);
  color: #fff;
}
.progress-step.is-done .progress-label { color: var(--muted); }
.progress-step.is-current .progress-num {
  background: var(--canvas);
  border-color: var(--accent-purple);
  color: var(--accent-purple);
  box-shadow: 0 0 0 4px rgba(107, 63, 176, 0.12);
}
.progress-step.is-current .progress-label {
  color: var(--accent-purple);
  font-weight: 600;
}
.progress-track::before,
.progress-fill {
  content: "";
  position: absolute;
  top: 14px;
  left: calc((100% / 5 / 2));
  right: calc((100% / 5 / 2));
  height: 1.5px;
  background: var(--border-strong, var(--border));
  z-index: 0;
}
.progress-fill {
  background: var(--accent-purple);
  right: auto;
  width: calc((100% - 100% / 5) * (var(--filled, 1) - 1) / 4);
  transition: width 0.3s ease;
}
.progress-mobile-label {
  display: none;
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 0;
}
@media (max-width: 720px) {
  .progress-steps,
  .progress-track::before,
  .progress-fill { display: none; }
  .progress-mobile-label { display: block; }
  .progress-mobile-label span { color: var(--accent-purple); font-weight: 600; }
}

/* Step containers */
.step {
  background: var(--canvas);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  padding: 40px 36px;
  position: relative;
  animation: stepIn 0.3s ease-out;
}
.step[hidden] { display: none; }
@keyframes stepIn {
  from { opacity: 0; transform: translateX(16px); }
  to { opacity: 1; transform: translateX(0); }
}
@media (max-width: 600px) {
  .step { padding: 28px 22px; border-radius: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .step { animation: none; }
}

.step-heading {
  color: var(--ink-2);
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 1.5vw + 1rem, 2rem);
  font-weight: 500;
  margin-bottom: 0.5rem;
  font-variation-settings: 'opsz' 28;
}
.step-sub {
  color: var(--muted);
  margin-bottom: 2rem;
  font-size: 1.0625rem;
  max-width: 60ch;
}

.step-nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--border);
}
@media (max-width: 480px) {
  .step-nav { flex-direction: column-reverse; align-items: stretch; }
  .step-nav .btn { width: 100%; justify-content: center; }
}

/* Multi-row subject picker in Step 1 */
.subjects-block-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.subjects-block-head .form-block-title { margin-bottom: 0; }
.picks-preview-edit {
  font-family: var(--font-body);
  font-size: 12px;
  color: var(--accent-purple);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.picks-preview-edit:hover { color: var(--ink); }

.subject-rows {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 12px;
}
.subject-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: end;
  gap: 12px;
  padding: 14px;
  background: var(--canvas-alt);
  border: 1px solid var(--border);
  border-radius: 12px;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.subject-row.has-conflict {
  border-color: var(--accent-magenta);
  background: rgba(181, 21, 245, 0.04);
}
.subject-row label.field {
  margin: 0;
}
.subject-row-meta {
  display: flex;
  flex-direction: column;
  gap: 2px;
  align-items: flex-start;
  padding-bottom: 12px;
}
.subject-row-meta-label {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--mute-2);
}
.subject-row-meta-value {
  font-family: var(--font-mono);
  font-size: 12.5px;
  color: var(--accent-purple);
  font-weight: 500;
}
.subject-row-meta-value.is-empty { color: var(--mute-2); }
.subject-row-remove {
  background: transparent;
  border: 1px solid var(--border);
  color: var(--mute-2);
  width: 32px;
  height: 32px;
  border-radius: 8px;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 8px;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.subject-row-remove:hover {
  background: var(--canvas);
  border-color: var(--ink);
  color: var(--ink);
}
.subject-row-remove[disabled] {
  opacity: 0.35;
  cursor: not-allowed;
}
@media (max-width: 600px) {
  .subject-row {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "select remove"
      "meta meta";
  }
  .subject-row > label.field { grid-area: select; }
  .subject-row-meta { grid-area: meta; padding-bottom: 0; flex-direction: row; gap: 8px; align-items: baseline; }
  .subject-row-remove { grid-area: remove; }
}
.subjects-empty, .subjects-conflict {
  font-size: 13px;
  margin: 8px 0 0;
}
.subjects-empty { color: var(--mute-2); }
.subjects-conflict { color: var(--accent-magenta); }

.btn-add {
  margin-top: 4px;
}
.btn-ghost {
  background: transparent;
  color: var(--accent-purple);
  border: 1.5px dashed rgba(107, 63, 176, 0.4);
  padding: 10px 18px;
  font-size: 14px;
}
.btn-ghost:hover { background: rgba(107, 63, 176, 0.06); border-style: solid; }

/* Payment section at end of review */
.payment-section {
  margin-top: 1.5rem;
  background: var(--canvas);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 26px 28px;
  position: relative;
  overflow: hidden;
}
.payment-section::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--accent-orange, #dd6b3d), var(--accent-magenta, #b515f5));
}
.payment-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.payment-eyebrow {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent-orange, #dd6b3d);
  font-weight: 500;
}
.payment-required {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  padding: 2px 8px;
  border: 1px solid var(--border);
  border-radius: 999px;
}
.payment-amount-row {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 14px;
}
.payment-amount {
  font-family: var(--font-display);
  font-size: clamp(2rem, 1.5vw + 1.6rem, 2.5rem);
  font-weight: 500;
  color: var(--ink-2);
  font-variation-settings: 'opsz' 28;
}
.payment-amount-meta {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--mute-2);
  letter-spacing: 0.04em;
}
.payment-body {
  color: var(--muted);
  margin: 0 0 14px;
  line-height: 1.55;
  font-size: 0.9375rem;
}
.payment-body strong { color: var(--ink); font-weight: 500; }
.payment-trust {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  padding-top: 12px;
  border-top: 1px dashed var(--border);
}
.payment-trust-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--mute-2);
  font-family: var(--font-mono);
  letter-spacing: 0.02em;
}
@media (max-width: 600px) {
  .payment-section { padding: 22px 20px; }
}

/* Review card */
.review-card {
  background: var(--canvas-alt);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 0;
  overflow: hidden;
  margin-bottom: 1.5rem;
}
.review-section { padding: 22px 24px; border-bottom: 1px solid var(--border); }
.review-section:last-child { border-bottom: none; }
.review-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.review-section-title {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent-purple);
  font-weight: 500;
}
.review-edit {
  background: transparent;
  border: none;
  color: var(--accent-purple);
  font-family: var(--font-body);
  font-size: 12px;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
  padding: 2px 4px;
}
.review-edit:hover { color: var(--ink); }
.review-row {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 16px;
  padding: 4px 0;
  font-size: 0.9375rem;
}
@media (max-width: 560px) {
  .review-row { grid-template-columns: 1fr; gap: 2px; padding: 6px 0; }
}
.review-row dt {
  color: var(--mute-2);
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding-top: 2px;
}
.review-row dd { color: var(--ink); margin: 0; word-break: break-word; }
.review-empty { color: var(--mute-2); font-style: italic; font-size: 0.875rem; }
.review-chip {
  display: inline-block;
  background: var(--canvas);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 2px 8px;
  font-family: var(--font-mono);
  font-size: 11px;
  margin: 0 4px 4px 0;
  color: var(--ink);
}

#apply-form { margin-top: 1rem; }

.form-block {
  margin-bottom: 32px;
  padding-bottom: 32px;
  border-bottom: 1px solid var(--border);
}
.form-block:last-of-type {
  border-bottom: none;
  padding-bottom: 0;
  margin-bottom: 24px;
}
.form-block-title {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 20px;
  font-weight: 500;
}
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
@media (max-width: 600px) { .form-grid { grid-template-columns: 1fr; } }
.form-grid-full { grid-column: 1 / -1; }

label.field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.field-label {
  font-size: 13px;
  color: var(--ink);
  font-weight: 500;
}
.field-required::after { content: " *"; color: var(--accent-magenta); }
.field-optional {
  color: var(--mute-2);
  font-weight: 400;
  font-size: 12px;
}

input, select, textarea {
  font: inherit;
  font-size: 15px;
  padding: 12px 14px;
  background: var(--canvas);
  border: 1px solid var(--border);
  border-radius: var(--r-input);
  color: var(--ink);
  width: 100%;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--accent-purple);
  box-shadow: 0 0 0 3px rgba(107, 63, 176, 0.15);
}
textarea { resize: vertical; min-height: 130px; line-height: 1.55; }

input[type="file"] {
  padding: 10px 12px;
  font-size: 14px;
  cursor: pointer;
  background: var(--canvas);
}
input[type="file"]::file-selector-button {
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  padding: 6px 14px;
  margin-right: 12px;
  border-radius: var(--r-pill);
  border: 1px solid var(--ink);
  background: transparent;
  color: var(--ink);
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
input[type="file"]::file-selector-button:hover {
  background: var(--ink);
  color: var(--canvas);
}

.field-help {
  font-size: 12px;
  color: var(--mute-2);
  margin-top: 4px;
  line-height: 1.5;
}

select {
  appearance: none;
  -webkit-appearance: none;
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 8"><path d="M1 1l5 5 5-5" stroke="%234b5268" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>');
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 11px;
  padding-right: 36px;
}

.field-error {
  color: var(--accent-magenta);
  font-size: 12px;
  display: none;
  margin-top: 4px;
}
label.field.has-error input,
label.field.has-error select,
label.field.has-error textarea {
  border-color: var(--accent-magenta);
}
label.field.has-error .field-error { display: block; }

.checkbox-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-top: 8px;
}
.checkbox-row input {
  width: 18px;
  height: 18px;
  margin-top: 3px;
  flex-shrink: 0;
  accent-color: var(--accent-purple);
}
.checkbox-row label {
  font-size: 14px;
  color: var(--muted);
  cursor: pointer;
  line-height: 1.5;
}
.checkbox-row.has-error { color: var(--accent-magenta); }
.checkbox-row.has-error label { color: var(--accent-magenta); }

/* Cloudflare Turnstile widget container — breathing room between the
   payment-trust row above and the form-error / submit row below. The widget
   draws its own chrome. */
.turnstile-row {
  margin-top: 24px;
}

.form-error {
  margin-top: 24px;
  padding: 14px 16px;
  border: 1px solid var(--accent-magenta);
  background: rgba(181, 21, 245, 0.06);
  color: var(--accent-magenta);
  border-radius: 8px;
  font-size: 14px;
  line-height: 1.4;
}
.form-error[hidden] { display: none; }

.payment-banner {
  margin-bottom: 2rem;
  padding: 14px 18px;
  border-radius: 10px;
  font-size: 15px;
  line-height: 1.5;
  border: 1px solid transparent;
}
.payment-banner[hidden] { display: none; }
.payment-banner.is-success {
  background: var(--accent-mint-pale);
  border-color: var(--accent-green);
  color: var(--ink);
}
.payment-banner.is-cancelled {
  background: rgba(255, 153, 0, 0.08);
  border-color: rgba(255, 153, 0, 0.55);
  color: var(--ink);
}
.payment-banner.is-pending {
  background: rgba(99, 102, 241, 0.08);
  border-color: rgba(99, 102, 241, 0.45);
  color: var(--ink);
}

.honeypot {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  opacity: 0;
}

.form-success {
  background: var(--accent-mint-pale);
  border: 1px solid var(--accent-green);
  border-radius: var(--r-card);
  padding: 36px;
  text-align: center;
  display: none;
}
.form-success.is-visible { display: block; }
.form-success h3 { margin: 0 0 0.75rem; }
.form-success p { margin: 0 auto; color: var(--ink); }

/* ============================================================ Related */
.related-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-top: 2rem;
}
@media (max-width: 720px) { .related-grid { grid-template-columns: 1fr; } }
.related-card {
  background: var(--canvas);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  padding: 28px;
  text-decoration: none;
  color: var(--ink);
  transition: background 0.2s ease, transform 0.2s ease;
  display: block;
}
.related-card:hover {
  background: var(--canvas-alt);
  color: var(--ink);
  transform: translateY(-2px);
}
.related-card .eyebrow { color: var(--accent-purple); margin-bottom: 0; margin-top: 0.75rem; }

/* ============================================================ Footer */
.site-footer {
  background: var(--canvas);
  border-top: 1px solid var(--border);
  padding: 64px 24px 32px;
}
.footer-inner {
  max-width: var(--max-w);
  margin: 0 auto;
}
.footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 48px;
  margin-bottom: 48px;
}
@media (max-width: 880px) { .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; } }
.footer-brand-block { grid-column: span 1; }
@media (max-width: 880px) { .footer-brand-block { grid-column: span 2; } }
.footer-brand-block .brand { font-size: 16px; }
.footer-tagline {
  font-family: var(--font-display);
  font-style: italic;
  color: var(--muted);
  margin-top: 12px;
  max-width: 320px;
  font-size: 1rem;
}
.footer-col h4 {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
  margin: 0 0 16px;
}
.footer-col ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.footer-col li { margin-bottom: 8px; }
.footer-col a {
  color: var(--ink);
  text-decoration: none;
  font-size: 14px;
}
.footer-col a:hover { color: var(--accent-purple); }
.footer-bottom {
  padding-top: 32px;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: var(--mute-2);
  font-family: var(--font-mono);
  flex-wrap: wrap;
  gap: 16px;
}


/* ============================================================ Omniscience brand assets (PNG, white original) */
.omni-symbol {
  display: inline-block;
  background: url('data:image/png;base64,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') center/contain no-repeat;
}
.omni-wordmark {
  display: inline-block;
  background: url('data:image/png;base64,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') left center/contain no-repeat;
}
/* Light-background variants: invert the white logo to black */
.omni-symbol.dark, .omni-wordmark.dark { filter: invert(1); opacity: 0.85; }

/* Sizing for header & footer brand */
.brand .omni-symbol { width: 28px; height: 28px; background-size: contain; background-repeat: no-repeat; background-position: center; }
.brand .omni-wordmark { width: 138px; height: 18px; background-size: contain; background-repeat: no-repeat; background-position: left center; }
.footer-brand-block .brand .omni-symbol { width: 24px; height: 24px; }
.footer-brand-block .brand .omni-wordmark { width: 120px; height: 16px; }

/* Hide the wordmark on very narrow viewports so the header logo + hamburger +
   Apply CTA all fit. Placed after the .brand .omni-wordmark sizing rule above
   so it wins on source order without needing !important. */
@media (max-width: 480px) {
  .brand .omni-wordmark { display: none; }
}

/* ============================================================
   Programme detail page (/programme/)
   ============================================================ */

/* Lighter hero variant — no price line, no cohort pills */
.hero-detail {
  padding-top: 120px;
  padding-bottom: 64px;
  position: relative;
  /* Quieter lens echo than the landing hero — single mint+purple pair so the
     detail page still feels like the sober "documentation" surface it is. */
  background:
    radial-gradient(ellipse 70vw 32vh at 90% 18%, rgba( 95, 27,  252, 0.06), transparent 60%),
    radial-gradient(ellipse 50vw 28vh at  8% 92%, rgba( 27, 252,  143, 0.05), transparent 60%);
  overflow: hidden;
}
.hero-detail h1 {
  font-size: clamp(2rem, 4vw, 3rem);
  margin-bottom: 1.25rem;
}
.back-link {
  display: block;
  width: max-content;
  font-family: var(--font-mono);
  font-size: 11.5px;
  letter-spacing: 0.06em;
  color: var(--muted);
  text-decoration: none;
  margin-bottom: 24px;
  transition: color 0.15s ease;
}
.back-link:hover { color: var(--ink); }

/* Five-stage methodology */
.stage-list {
  list-style: none;
  padding: 0;
  margin: 2rem 0 0;
  display: grid;
  gap: 16px;
}
.stage-item {
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  padding: 24px 28px;
  background: var(--canvas);
  display: grid;
  grid-template-columns: max-content 1fr;
  grid-template-rows: auto auto auto;
  column-gap: 24px;
  row-gap: 4px;
}
.stage-item .stage-num {
  grid-column: 1;
  grid-row: 1 / 4;
  align-self: start;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent-purple);
  padding-top: 6px;
}
.stage-item h3 {
  grid-column: 2;
  grid-row: 1;
  margin: 0;
  font-size: 1.5rem;
  line-height: 1.2;
}
.stage-item .stage-days {
  grid-column: 2;
  grid-row: 2;
  font-family: var(--font-mono);
  font-size: 11.5px;
  color: var(--mute-2);
  margin: 0;
}
.stage-item p:last-child {
  grid-column: 2;
  grid-row: 3;
  margin: 0.5rem 0 0;
  color: var(--muted);
}
@media (max-width: 720px) {
  .stage-item { grid-template-columns: 1fr; }
  .stage-item .stage-num { grid-column: 1; grid-row: 1; padding-top: 0; margin-bottom: 4px; }
  .stage-item h3 { grid-column: 1; grid-row: 2; }
  .stage-item .stage-days { grid-column: 1; grid-row: 3; }
  .stage-item p:last-child { grid-column: 1; grid-row: 4; }
}

/* Ten-day arc placeholder list (replaced by interactive arc later) */
.day-list {
  list-style: none;
  padding: 0;
  margin: 2rem 0 0;
  display: grid;
  gap: 1px;
  background: var(--border);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  overflow: hidden;
}
.day-row {
  display: grid;
  grid-template-columns: 80px 140px 1fr;
  align-items: center;
  gap: 16px;
  padding: 14px 22px;
  background: var(--canvas);
}
.day-num {
  font-family: var(--font-mono);
  font-size: 11.5px;
  letter-spacing: 0.06em;
  color: var(--mute-2);
}
.day-stage {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 2px 10px;
  border-radius: var(--r-pill);
  background: var(--canvas-alt);
  color: var(--ink);
  display: inline-block;
  width: max-content;
}
.day-row[data-stage="brainstorm"] .day-stage   { background: rgba(245,133,21,0.12); color: #b45e0e; }
.day-row[data-stage="plan"] .day-stage         { background: rgba(95,27,252,0.10); color: var(--accent-purple); }
.day-row[data-stage="research"] .day-stage     { background: rgba(27,252,143,0.18); color: #0a7a4a; }
.day-row[data-stage="draft"] .day-stage        { background: rgba(181,21,245,0.10); color: var(--accent-magenta); }
.day-row[data-stage="presentation"] .day-stage { background: rgba(233,252,27,0.32); color: #6a6800; }
.day-focus { color: var(--ink); font-size: 0.95rem; }
@media (max-width: 720px) {
  .day-row { grid-template-columns: 1fr; gap: 4px; padding: 12px 16px; }
}

/* Workshops list */
.workshop-list {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0;
  display: grid;
  gap: 12px;
}
.workshop-list li {
  padding: 14px 18px;
  background: var(--canvas-alt);
  border-radius: 12px;
  font-size: 0.97rem;
  color: var(--ink);
}
.workshop-list strong {
  font-family: var(--font-mono);
  font-size: 11.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent-purple);
  font-weight: 500;
  margin-right: 12px;
}

/* Tools provisioned (definition list) */
.tool-list {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 14px 32px;
  margin: 2rem 0;
  padding: 28px;
  background: var(--canvas-alt);
  border-radius: var(--r-card);
}
.tool-list dt {
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--ink);
  align-self: start;
  padding-top: 2px;
}
.tool-list dd {
  margin: 0;
  color: var(--muted);
  font-size: 0.97rem;
  line-height: 1.55;
}
@media (max-width: 720px) {
  .tool-list { grid-template-columns: 1fr; gap: 4px 0; padding: 20px; }
  .tool-list dt { padding-top: 12px; }
  .tool-list dt:first-child { padding-top: 0; }
}

/* Time allocation horizontal bars */
.time-list {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0 0;
  display: grid;
  gap: 10px;
}
.time-row {
  display: grid;
  grid-template-columns: 1fr max-content max-content;
  align-items: center;
  gap: 16px;
  position: relative;
  padding: 14px 18px;
  background: var(--canvas-alt);
  border-radius: 8px;
  overflow: hidden;
  isolation: isolate;
}
.time-bar {
  position: absolute;
  inset: 0 auto 0 0;
  width: calc(var(--share, 0) * 1%);
  background: rgba(107, 63, 176, 0.12);
  z-index: -1;
}
.time-label { font-size: 0.95rem; color: var(--ink); font-weight: 500; }
.time-amount {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: 0.04em;
  color: var(--muted);
  white-space: nowrap;
}
.time-share {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: 0.04em;
  color: var(--accent-purple);
  font-weight: 500;
  min-width: 50px;
  text-align: right;
}

/* After-Day-10 list */
.after-list {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.after-list li {
  padding: 24px 28px;
  background: var(--canvas);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
}
.after-list h3 {
  margin: 0 0 10px;
  font-size: 1.2rem;
}
.after-list p { margin: 0; color: var(--muted); font-size: 0.97rem; line-height: 1.6; }
@media (max-width: 720px) { .after-list { grid-template-columns: 1fr; } }

/* Parent communication two-column */
.parent-comms {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  margin-top: 1.5rem;
}
.parent-comms h3 {
  margin: 0 0 8px;
  font-size: 1.2rem;
}
.parent-comms p { margin: 0; color: var(--muted); font-size: 0.97rem; line-height: 1.6; }
@media (max-width: 720px) { .parent-comms { grid-template-columns: 1fr; gap: 20px; } }

/* Programme policies table */
.policies-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 1.5rem;
  background: var(--canvas);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  overflow: hidden;
}
.policies-table th,
.policies-table td {
  padding: 14px 22px;
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--border);
  font-size: 0.97rem;
  line-height: 1.55;
}
.policies-table tr:last-child th,
.policies-table tr:last-child td { border-bottom: none; }
.policies-table th {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--mute-2);
  font-weight: 500;
  width: 200px;
  background: var(--canvas-alt);
}
.policies-table td { color: var(--ink); }
@media (max-width: 720px) {
  .policies-table th, .policies-table td { padding: 12px 16px; }
  .policies-table th { width: 130px; font-size: 10px; }
}

/* Final CTA strip — two-button variant */
.cta-strip-actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}
.cta-strip-actions .btn-outline {
  border-color: var(--canvas);
  color: var(--canvas);
}
.cta-strip-actions .btn-outline:hover {
  background: var(--canvas);
  color: var(--ink);
}

/* TOC cross-page link styling */
.toc ul .toc-out {
  font-weight: 500;
  color: var(--accent-purple);
  border-top: 1px solid var(--border);
  padding-top: 14px;
  margin-top: 6px;
  display: block;
}
.toc ul .toc-out:hover { color: var(--ink); }

/* FAQ "read more" link below the compact list */
.faq-more {
  margin-top: 1.25rem;
  font-size: 0.95rem;
}
.faq-more a {
  color: var(--accent-purple);
  text-decoration: none;
  border-bottom: 1px solid currentColor;
}
.faq-more a:hover { color: var(--ink); }

/* ============================================================
   Ten-day arc (Shape A) — interactive timeline on /programme/
   ============================================================ */
.arc-instructions {
  color: var(--mute-2);
  font-size: 0.9em;
}

.arc-container {
  margin: 2rem 0 0;
  padding: 28px;
  background: var(--canvas);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
}

/* Stage band — 5 colour blocks above the timeline, fr-weighted by day count */
.arc-stage-band {
  display: grid;
  grid-template-columns: 2fr 3fr 2fr 2fr 1fr; /* 2/3/2/2/1 = 10 */
  gap: 6px;
  margin-bottom: 28px;
}

.arc-stage-block {
  padding: 12px 14px;
  border-radius: 10px;
  text-align: center;
  background: var(--canvas-alt);
  color: var(--muted);
  opacity: 0.55;
  transition: opacity 0.18s ease, transform 0.18s ease;
  position: relative;
  overflow: hidden;
}

.arc-stage-block::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--stage-bg, transparent);
  opacity: 0.22;
  pointer-events: none;
  border-radius: inherit;
}

.arc-stage-block[data-stage="brainstorm"]   { --stage-bg: var(--accent-orange);  color: #b45e0e; }
.arc-stage-block[data-stage="plan"]         { --stage-bg: var(--accent-purple);  color: var(--accent-purple); }
.arc-stage-block[data-stage="research"]     { --stage-bg: var(--accent-green);   color: #0a7a4a; }
.arc-stage-block[data-stage="draft"]        { --stage-bg: var(--accent-magenta); color: var(--accent-magenta); }
.arc-stage-block[data-stage="presentation"] { --stage-bg: var(--accent-yellow);  color: #6a6800; }

.arc-container[data-active-stage="brainstorm"]   .arc-stage-block[data-stage="brainstorm"],
.arc-container[data-active-stage="plan"]         .arc-stage-block[data-stage="plan"],
.arc-container[data-active-stage="research"]     .arc-stage-block[data-stage="research"],
.arc-container[data-active-stage="draft"]        .arc-stage-block[data-stage="draft"],
.arc-container[data-active-stage="presentation"] .arc-stage-block[data-stage="presentation"] {
  opacity: 1;
  transform: translateY(-2px);
}

.arc-stage-name {
  display: block;
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  position: relative;
}
.arc-stage-days {
  display: block;
  font-family: var(--font-mono);
  font-size: 10px;
  margin-top: 4px;
  opacity: 0.75;
  position: relative;
}

/* Day timeline — 10 dots equally spaced */
.arc-timeline {
  display: grid;
  grid-template-columns: repeat(10, 1fr);
  gap: 4px;
  margin-bottom: 32px;
  position: relative;
  padding: 8px 0;
}
.arc-timeline::before {
  content: '';
  position: absolute;
  left: 18px;
  right: 18px;
  top: 50%;
  height: 1px;
  background: var(--border-strong);
  z-index: 0;
}
.arc-dot {
  position: relative;
  z-index: 1;
  background: var(--canvas);
  border: 1px solid var(--border-strong);
  border-radius: 50%;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: transform 0.15s ease, background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
  margin: 0 auto;
  padding: 0;
  color: var(--ink);
}
.arc-dot:hover {
  transform: scale(1.12);
  border-color: var(--ink);
}
.arc-dot:focus-visible {
  outline: 2px solid var(--accent-purple);
  outline-offset: 3px;
}
.arc-dot.is-active {
  background: var(--ink);
  color: var(--canvas);
  border-color: var(--ink);
  transform: scale(1.18);
}
.arc-dot-num {
  font-family: var(--font-mono);
  font-size: 13px;
  font-weight: 500;
  line-height: 1;
}

/* Detail panel */
.arc-panel {
  padding: 24px 28px;
  background: var(--canvas-alt);
  border-radius: 14px;
  min-height: 200px;
}
.arc-panel:focus { outline: none; }
.arc-panel-header {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 8px;
  flex-wrap: wrap;
}
.arc-panel-day {
  font-family: var(--font-mono);
  font-size: 11.5px;
  letter-spacing: 0.06em;
  color: var(--accent-purple);
  font-weight: 500;
  text-transform: uppercase;
}
.arc-panel-stage {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 3px 10px;
  border-radius: var(--r-pill);
  background: var(--canvas);
  color: var(--ink);
}
.arc-panel-headline {
  margin: 0 0 16px;
  font-size: 1.35rem;
  font-weight: 500;
  line-height: 1.3;
  color: var(--ink);
}
.arc-panel-blocks {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  margin-bottom: 18px;
}
.arc-panel-block-label {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--mute-2);
  margin: 0 0 10px;
}
.arc-panel-blocks ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.arc-panel-blocks li {
  padding: 4px 0 4px 14px;
  font-size: 0.95rem;
  color: var(--ink);
  line-height: 1.55;
  position: relative;
}
.arc-panel-blocks li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.85em;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--accent-purple);
}
.arc-panel-output {
  margin: 12px 0 0;
  padding-top: 14px;
  border-top: 1px solid var(--border);
  font-size: 0.95rem;
  color: var(--muted);
  display: flex;
  gap: 12px;
  align-items: baseline;
  flex-wrap: wrap;
}
.arc-panel-output strong {
  color: var(--ink);
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 500;
  flex-shrink: 0;
}

@media (max-width: 880px) {
  .arc-container { padding: 20px; }
  .arc-panel-blocks { grid-template-columns: 1fr; gap: 18px; }
}

@media (max-width: 720px) {
  .arc-stage-band { grid-template-columns: 1fr 1fr; gap: 4px; }
  .arc-stage-block { padding: 8px 10px; }
  .arc-stage-block[data-stage="presentation"] { grid-column: 1 / -1; }
  .arc-timeline { grid-template-columns: repeat(5, 1fr); gap: 12px 6px; }
  .arc-timeline::before { display: none; }
  .arc-dot { width: 32px; height: 32px; }
}

@media (prefers-reduced-motion: reduce) {
  .arc-dot, .arc-stage-block { transition: none; }
}

/* ============================================================
   Polish layer — subtle craft details. Applied last so they win
   specificity ties without disturbing earlier section ordering.
   ============================================================ */

/* Tabular numerals on numeric readouts so digits never jitter when they
   change (progress text counting up; price totals; time-share %). */
.stat-num,
.cohort-progress-text,
.time-amount,
.time-share,
.deadline-pill,
.picker-base,
.picker-total,
.picker-discount-amount,
.picker-fee,
.cohort-dates,
.day-num,
.arc-dot-num,
.arc-panel-day {
  font-variant-numeric: tabular-nums;
}

/* Unified focus ring across the site. Branded, calm, visible. */
:focus-visible {
  outline: 2px solid var(--accent-purple);
  outline-offset: 3px;
  border-radius: 4px;
}
/* Anchors and buttons can keep their natural shape; rounded ring above them. */
a:focus-visible,
button:focus-visible {
  outline-offset: 3px;
}
/* Don't show an outline ring on the cohort pills / btn pills (rounded-full),
   give them a soft glow instead so the ring follows the shape. */
.cohort-pill:focus-visible,
.btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(107, 63, 176, 0.28);
}

/* Card hover-lift — softer + deeper two-layer shadow with -3px lift. */
.subject-card,
.advantage-card,
.cohort-card,
.stage-item,
.after-list li {
  transition:
    transform    var(--dur-base) var(--ease-out-expo),
    box-shadow   var(--dur-base) var(--ease-out-expo),
    border-color var(--dur-base) var(--ease-out-expo);
  will-change: transform;
}
.subject-card:hover,
.advantage-card:hover,
.cohort-card:hover,
.stage-item:hover,
.after-list li:hover {
  transform: translateY(-3px);
  box-shadow:
    0 1px 0 rgba(12, 15, 24, 0.04),
    0 4px 12px -6px rgba(12, 15, 24, 0.08),
    0 18px 36px -14px rgba(12, 15, 24, 0.14);
  border-color: var(--border-strong);
}

/* ============================================================ Motion polish */

/* Subject chip — brief bounce on press (and on toggle). The keyframe runs
   when aria-pressed flips to "true" via the JS click handler. */
@keyframes chip-press-bounce {
  0%   { transform: scale(1); }
  40%  { transform: scale(1.06); }
  100% { transform: scale(1); }
}
.subject-chip-level[aria-pressed="true"],
.subject-chip-single[aria-pressed="true"] {
  animation: chip-press-bounce 300ms var(--ease-out-expo);
}

/* Subject schedule cell — when selected, briefly pop then settle. Decoupled
   from the bg/border transition so the scale lands clean. */
@keyframes schedule-cell-pop {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.025); }
  100% { transform: scale(1); }
}
.subject-schedule-cell.is-active {
  animation: schedule-cell-pop 320ms var(--ease-out-expo);
}

/* Outcome check-marks — stroke-draw on reveal. Each check's stroke is hidden
   via dashoffset; when its containing <li> becomes part of an .is-revealed
   stagger row, the offset transitions to 0 (the check "writes" itself in). */
.how-outputs-check path {
  stroke-dasharray: 14;
  stroke-dashoffset: 14;
  transition: stroke-dashoffset 600ms var(--ease-out-expo);
}
:where(.js-reveal) [data-reveal-stagger].is-revealed > * .how-outputs-check path,
.how-outputs-check.is-drawn path {
  stroke-dashoffset: 0;
  transition-delay: calc(var(--reveal-index, 0) * 80ms + 280ms);
}
@media (prefers-reduced-motion: reduce) {
  .how-outputs-check path {
    stroke-dashoffset: 0;
    transition: none;
  }
}

/* Cohort pills in the hero — micro lift + tilt on hover. */
.cohort-pill {
  transition:
    transform var(--dur-fast) var(--ease-out-expo),
    background-color var(--dur-fast) var(--ease-out-soft),
    color var(--dur-fast) var(--ease-out-soft);
}
.cohort-pill:hover {
  transform: translateY(-1px) rotate(-0.5deg);
}

@media (prefers-reduced-motion: reduce) {
  .subject-chip-level[aria-pressed="true"],
  .subject-chip-single[aria-pressed="true"],
  .subject-schedule-cell.is-active {
    animation: none;
  }
  .cohort-pill:hover { transform: none; }
}

/* Scroll-reveal — only active when JS is available. The :where() keeps
   specificity at 0 so per-element styles win without effort.
   Refined motion: larger translate (14px) + subtle scale (0.985→1) so reveals
   carry a touch more weight than a flat fade-up. */
:where(.js-reveal) [data-reveal] {
  opacity: 0;
  transform: translateY(14px) scale(0.985);
  transition:
    opacity   var(--dur-slow) var(--ease-out-expo),
    transform var(--dur-slow) var(--ease-out-expo);
}
:where(.js-reveal) [data-reveal].is-revealed {
  opacity: 1;
  transform: none;
}

/* Stagger: children of a reveal-stagger container animate sequentially.
   The --reveal-index is set per child below; up to 12 children supported.
   Slightly larger inter-child delay (80ms) so the cascade reads as motion. */
:where(.js-reveal) [data-reveal-stagger] > * {
  opacity: 0;
  transform: translateY(14px) scale(0.985);
  transition:
    opacity   var(--dur-slow) var(--ease-out-expo) calc(var(--reveal-index, 0) * 80ms),
    transform var(--dur-slow) var(--ease-out-expo) calc(var(--reveal-index, 0) * 80ms);
}
:where(.js-reveal) [data-reveal-stagger].is-revealed > * {
  opacity: 1;
  transform: none;
}
[data-reveal-stagger] > *:nth-child(1)  { --reveal-index: 0; }
[data-reveal-stagger] > *:nth-child(2)  { --reveal-index: 1; }
[data-reveal-stagger] > *:nth-child(3)  { --reveal-index: 2; }
[data-reveal-stagger] > *:nth-child(4)  { --reveal-index: 3; }
[data-reveal-stagger] > *:nth-child(5)  { --reveal-index: 4; }
[data-reveal-stagger] > *:nth-child(6)  { --reveal-index: 5; }
[data-reveal-stagger] > *:nth-child(7)  { --reveal-index: 6; }
[data-reveal-stagger] > *:nth-child(8)  { --reveal-index: 7; }
[data-reveal-stagger] > *:nth-child(9)  { --reveal-index: 8; }
[data-reveal-stagger] > *:nth-child(10) { --reveal-index: 9; }
[data-reveal-stagger] > *:nth-child(11) { --reveal-index: 10; }
[data-reveal-stagger] > *:nth-child(12) { --reveal-index: 11; }

@media (prefers-reduced-motion: reduce) {
  :where(.js-reveal) [data-reveal],
  :where(.js-reveal) [data-reveal-stagger] > * {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* Cohort progress bars — animate fill from 0 to its target on scroll-in.
   Override the static rule from earlier in the file by binding to
   --filled-display, which the JS swaps in once the bar is in view. */
.cohort-progress-bar::after {
  width: calc(var(--filled-display, 0) / 15 * 100%);
  transition: width 1200ms var(--ease-out-expo);
}
@media (prefers-reduced-motion: reduce) {
  .cohort-progress-bar::after { transition: none; }
}

/* TOC active-link indicator — a 16px vertical accent bar that slides between
   active TOC items as the user scrolls. Hidden until first activation.
   The .toc rule above already sets position: sticky, which is a positioning
   context for the absolutely-positioned indicator. */
.toc-indicator {
  position: absolute;
  left: -10px;
  top: 0;
  width: 2px;
  height: 16px;
  border-radius: 2px;
  background: var(--accent-purple);
  transform: translateY(var(--toc-y, 0)) scaleY(0);
  transform-origin: top center;
  transition:
    transform var(--dur-base) var(--ease-in-out-quart),
    opacity   var(--dur-fast) var(--ease-out-soft);
  opacity: 0;
  pointer-events: none;
}
.toc-indicator.is-visible {
  opacity: 1;
  transform: translateY(var(--toc-y, 0)) scaleY(1);
}
@media (max-width: 1023px) { .toc-indicator { display: none; } }
@media (prefers-reduced-motion: reduce) {
  .toc-indicator { transition: opacity var(--dur-fast); }
}

/* ============================================================
   Brand layer — grain + eyebrow accent dot
   Drawn from the Omniscience identity (duall.studio):
   tactile grain on every surface; brand-coloured dot
   prefix on every eyebrow rotating by section type.
   ============================================================ */

/* Page-wide grain. A turbulence-generated SVG noise tile at ~2.5% opacity,
   fixed-position above the canvas vector field but below the content. The
   blend mode makes the grain tint cream surfaces slightly and add tooth to
   the dark feature strips, instead of being a flat overlay. ~3 KB inline. */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: 0.04;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  background-size: 240px 240px;
}
@media (prefers-reduced-motion: reduce) {
  /* keep grain — it's static and helpful for tactile feel */
}

/* Eyebrow accent dot. Every eyebrow gets a 5px coloured dot prefix.
   Default colour is purple; sections that override --accent-dot pick
   up that colour instead. The dot is set inline with the text so it
   participates in line-height naturally. */
.eyebrow {
  --accent-dot: var(--accent-purple);
}
.eyebrow::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--accent-dot);
  margin-right: 10px;
  vertical-align: 1px;
  /* Soft halo so the dot reads as a brand "lens" element rather than a bullet */
  box-shadow: 0 0 8px color-mix(in srgb, var(--accent-dot) 60%, transparent);
}

/* Per-section accent rotation. Sections without a data-accent fall back
   to purple. Hero is mapped explicitly because it has no parent <section>
   with id; everything else maps by section id. */
.hero .eyebrow                 { --accent-dot: var(--accent-magenta); }

/* Landing page sections */
section[data-accent="purple"]  .eyebrow { --accent-dot: var(--accent-purple); }
section[data-accent="mint"]    .eyebrow { --accent-dot: var(--accent-green); }
section[data-accent="magenta"] .eyebrow { --accent-dot: var(--accent-magenta); }
section[data-accent="orange"]  .eyebrow { --accent-dot: var(--accent-orange); }
section[data-accent="yellow"]  .eyebrow { --accent-dot: var(--accent-yellow); }
section[data-accent="lime"]    .eyebrow { --accent-dot: var(--accent-lime); }

/* Dark feature strips — eyebrow dot needs to brighten, not blend, on aubergine */
.cta-strip .eyebrow::before {
  box-shadow: 0 0 12px color-mix(in srgb, var(--accent-dot) 75%, transparent);
}
