/* ProbaLab — Design DNA
   Direction : Bauhaus / geometric, academic-but-friendly, LIGHT — a "math lab" visual language
   Layout    : strict 12-col grid broken deliberately; numbered index + bento; ≥2 asymmetric 60/40 splits; varied widths (full-bleed / boxed / narrow)
   Type      : Sora (geometric display) / IBM Plex Sans (body) / IBM Plex Mono (numbers, formulas, topic labels) — fluid clamp scale
   Color     : base #FBF7F0 / surface #F1EAD9 / ink #1A1A1A / accent cobalt #1D4ED8 · vermilion #E14434 + yellow #F5B400 as small geometric/diagram accents only (60-30-10)
   Motion    : geometric shapes assemble/rotate slightly on scroll; numbers count up (transform/opacity only, reduced-motion stills all)
   Signature : pure geometric shapes (circle/triangle/square) + dot-distribution & CSS/SVG bar diagrams + mono number/formula chips
   Hero-bg   : hand-placed geometric shapes over a faint dot grid + generated abstract dot-scatter — never flat, never raw stock */

/* ---------- tokens ---------- */
:root{
  --base:#FBF7F0;
  --surface:#F1EAD9;
  --surface-2:#EAE0CC;
  --ink:#1A1A1A;
  --ink-soft:#454138;
  --line:#D8CDB6;
  --accent:#1D4ED8;      /* cobalt — working accent */
  --accent-ink:#153ba6;  /* darker cobalt for text-on-light links */
  --vermilion:#E14434;
  --yellow:#F5B400;
  --white:#ffffff;

  --maxw:1180px;
  --narrow:66ch;

  /* spacing scale */
  --s1:.5rem; --s2:1rem; --s3:1.5rem; --s4:2.25rem; --s5:3.5rem; --s6:5.5rem; --s7:8rem;

  /* fluid type */
  --fs-mega:clamp(2.9rem,1.4rem + 6.6vw,6.4rem);
  --fs-h1:clamp(2.3rem,1.4rem + 3.6vw,4rem);
  --fs-h2:clamp(1.8rem,1.2rem + 2.2vw,2.9rem);
  --fs-h3:clamp(1.25rem,1rem + 1vw,1.6rem);
  --fs-lead:clamp(1.1rem,1rem + .5vw,1.35rem);
  --fs-body:1.05rem;
  --fs-sm:.9rem;
  --fs-mono:.82rem;

  --radius:3px;   /* strict, near-square Bauhaus corners */
  --shadow:0 2px 0 var(--line);
  --shadow-lift:8px 8px 0 rgba(26,26,26,.08);

  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --display:"Sora",var(--sans);
  --mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;background:var(--base);color:var(--ink);
  font-family:var(--sans);font-size:var(--fs-body);line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent-ink);text-underline-offset:3px}
h1,h2,h3,h4{font-family:var(--display);line-height:1.08;text-wrap:balance;font-weight:700;letter-spacing:-.01em}
p{text-wrap:pretty}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:clamp(1.1rem,4vw,2.5rem)}
.narrow{max-width:var(--narrow);margin-inline:auto}
.mono{font-family:var(--mono)}
.eyebrow{font-family:var(--mono);font-size:var(--fs-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* geometric chip: mono number/formula */
.chip{display:inline-flex;align-items:center;gap:.4em;font-family:var(--mono);font-size:var(--fs-mono);
  padding:.28em .6em;border:1.5px solid var(--ink);border-radius:var(--radius);background:var(--white);
  letter-spacing:.02em}
.chip--accent{border-color:var(--accent);color:var(--accent-ink)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  font-family:var(--mono);font-weight:500;font-size:.92rem;letter-spacing:.02em;
  padding:.85em 1.5em;border-radius:var(--radius);border:2px solid var(--ink);
  background:var(--white);color:var(--ink);cursor:pointer;text-decoration:none;
  transition:transform .16s ease, box-shadow .16s ease}
.btn:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--ink)}
.btn--accent{background:var(--accent);border-color:var(--accent);color:#fff}
.btn--accent:hover{box-shadow:4px 4px 0 var(--accent-ink)}
.btn--lg{padding:1.05em 2em;font-size:1rem}
.btn--ghost{background:transparent}

/* ---------- header / nav ---------- */
.site-header{position:sticky;top:0;z-index:50;background:color-mix(in oklch,var(--base) 88%,transparent);
  backdrop-filter:blur(8px);border-bottom:2px solid var(--ink)}
.nav{display:flex;align-items:center;gap:var(--s3);padding-block:.9rem}
.brand{display:inline-flex;align-items:center;gap:.55rem;font-family:var(--display);font-weight:800;
  font-size:1.28rem;letter-spacing:-.02em;color:var(--ink);text-decoration:none}
.brand .glyph{width:22px;height:22px;position:relative;flex:none}
.brand .glyph::before{content:"";position:absolute;inset:0;border:2.5px solid var(--accent);border-radius:50%}
.brand .glyph::after{content:"";position:absolute;left:50%;top:50%;width:7px;height:7px;
  transform:translate(-50%,-50%);background:var(--vermilion)}
.nav-links{display:flex;gap:.4rem;margin-left:auto;list-style:none;padding:0;margin-block:0}
.nav-links a{font-family:var(--mono);font-size:.82rem;color:var(--ink);text-decoration:none;
  padding:.5em .7em;border-radius:var(--radius);letter-spacing:.01em}
.nav-links a:hover,.nav-links a.active{background:var(--surface);color:var(--accent-ink)}
.nav-cta{margin-left:.4rem}
.nav-toggle{display:none;margin-left:auto;background:var(--white);border:2px solid var(--ink);
  border-radius:var(--radius);width:44px;height:44px;cursor:pointer;align-items:center;justify-content:center}
.nav-toggle span,.nav-toggle span::before,.nav-toggle span::after{content:"";display:block;width:20px;height:2px;background:var(--ink);position:relative}
.nav-toggle span::before{position:absolute;top:-6px}
.nav-toggle span::after{position:absolute;top:6px}

/* ---------- section rhythm ---------- */
section{padding-block:var(--s6)}
.section-head{display:flex;flex-direction:column;gap:.7rem;margin-bottom:var(--s4)}
.section-head h2{font-size:var(--fs-h2)}
.section-head p{max-width:60ch;color:var(--ink-soft);font-size:var(--fs-lead);margin:0}

/* ---------- HERO ---------- */
.hero{position:relative;overflow:hidden;padding-block:clamp(3rem,7vw,6rem) var(--s6)}
.hero-bg{position:absolute;inset:0;z-index:0}
.hero-bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}
.hero-bg::before{content:"";position:absolute;inset:0;
  background-image:radial-gradient(circle,color-mix(in oklch,var(--ink) 16%,transparent) 1.4px,transparent 1.6px);
  background-size:26px 26px;opacity:.5;
  -webkit-mask-image:linear-gradient(120deg,#000,transparent 78%);mask-image:linear-gradient(120deg,#000,transparent 78%)}
.hero-bg::after{content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,var(--base) 34%,color-mix(in oklch,var(--base) 55%,transparent))}
.hero-shapes{position:absolute;inset:0;z-index:1;pointer-events:none}
.hero-shapes .sh{position:absolute;opacity:0}
.hero-shapes .in .sh,.hero-shapes.in .sh{opacity:1}
.sh-circle{width:clamp(130px,15vw,210px);aspect-ratio:1;border:13px solid var(--accent);border-radius:50%;
  top:9%;right:7%;transition:opacity .6s ease,transform .8s cubic-bezier(.2,.7,.3,1);transform:scale(.6) rotate(-20deg)}
.sh-tri{width:0;height:0;border-left:52px solid transparent;border-right:52px solid transparent;
  border-bottom:92px solid var(--vermilion);right:24%;bottom:12%;
  transition:opacity .6s ease .1s,transform .8s cubic-bezier(.2,.7,.3,1) .1s;transform:translateY(24px) rotate(12deg)}
.sh-sq{width:clamp(44px,5.5vw,72px);aspect-ratio:1;background:var(--yellow);right:13%;top:50%;
  transition:opacity .6s ease .18s,transform .8s cubic-bezier(.2,.7,.3,1) .18s;transform:rotate(24deg) scale(.5)}
@media (max-width:900px){
  .sh-tri{right:14%;bottom:6%}
  .sh-sq{top:auto;bottom:26%;right:8%}
}
.hero-shapes.in .sh-circle{transform:scale(1) rotate(0)}
.hero-shapes.in .sh-tri{transform:translateY(0) rotate(0)}
.hero-shapes.in .sh-sq{transform:rotate(0) scale(1)}
.hero-inner{position:relative;z-index:2;max-width:min(680px,94%)}
.hero .eyebrow{display:inline-block;padding:.32em .7em;background:var(--white);border:1.5px solid var(--accent);
  border-radius:var(--radius);color:var(--accent-ink)}
.hero h1{font-size:clamp(2.15rem,1.3rem + 3.1vw,3.7rem);margin:var(--s3) 0 var(--s3);max-width:16ch}
.hero h1 .u{color:var(--accent-ink);position:relative;white-space:nowrap}
.hero h1 .u::after{content:"";position:absolute;left:0;right:0;bottom:.04em;height:.16em;background:var(--yellow);z-index:-1;border-radius:1px}
.hero-lead{font-size:var(--fs-lead);color:var(--ink-soft);max-width:54ch;margin:0 0 var(--s4)}
.hero-cta{display:flex;flex-wrap:wrap;gap:var(--s2)}
.hero-meta{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:var(--s4)}

/* dot-distribution mini diagram (SVG-ish via css) */
.distro{display:flex;gap:6px;align-items:flex-end;margin-top:var(--s3);
  padding-top:var(--s2);border-bottom:1.5px solid var(--ink)}
.distro span{flex:1;min-width:9px;background:var(--accent);border-radius:1px 1px 0 0;opacity:.9;
  transform-origin:bottom;transform:scaleY(0);transition:transform .7s cubic-bezier(.2,.7,.3,1)}
.distro span:nth-child(1){transition-delay:.02s}
.distro span:nth-child(2){transition-delay:.06s}
.distro span:nth-child(3){transition-delay:.1s}
.distro span:nth-child(4){transition-delay:.14s;background:var(--accent);opacity:.75}
.distro span:nth-child(5){transition-delay:.18s;background:var(--vermilion);opacity:.85}
.distro span:nth-child(6){transition-delay:.22s;background:var(--vermilion);opacity:.7}
.distro span:nth-child(7){transition-delay:.26s;background:var(--yellow)}
.chart.in .distro span{transform:scaleY(1)}

/* ---------- numbered module index ---------- */
.modules{background:var(--surface)}
.mod-list{border-top:2px solid var(--ink)}
.mod{display:grid;grid-template-columns:5.5rem 1fr minmax(0,26ch);gap:var(--s3);
  padding:var(--s4) 0;border-bottom:2px solid var(--ink);align-items:start}
.mod .num{font-family:var(--mono);font-size:clamp(1.6rem,1rem + 2vw,2.6rem);color:var(--accent-ink);font-weight:500}
.mod h3{font-size:var(--fs-h3);margin:0 0 .4rem}
.mod p{margin:0;color:var(--ink-soft)}
.mod .topics{display:flex;flex-wrap:wrap;gap:.4rem;align-self:center}
.mod .topics .chip{background:var(--base)}

/* ---------- sample lesson 60/40 asymmetric ---------- */
.lesson{background:var(--base)}
.lesson-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:clamp(1.5rem,4vw,3.5rem);align-items:center}
.lesson-copy h2{font-size:var(--fs-h2);margin-top:0}
.lesson-copy .formula{font-family:var(--mono);background:var(--ink);color:var(--base);
  padding:.9rem 1.1rem;border-radius:var(--radius);display:inline-block;margin:var(--s2) 0;font-size:.95rem}
.lesson-copy .formula b{color:var(--yellow);font-weight:400}
/* drop-rate bar chart */
.chart{background:var(--surface);border:2px solid var(--ink);border-radius:var(--radius);padding:var(--s3);
  box-shadow:var(--shadow-lift)}
.chart-title{font-family:var(--mono);font-size:var(--fs-mono);text-transform:uppercase;letter-spacing:.1em;
  color:var(--ink-soft);margin-bottom:var(--s3)}
.bar{display:grid;grid-template-columns:6.5rem 1fr auto;gap:.7rem;align-items:center;margin-bottom:.75rem;font-family:var(--mono);font-size:.8rem}
.bar .track{height:16px;background:var(--base);border:1.5px solid var(--ink);border-radius:2px;overflow:hidden}
.bar .fill{height:100%;background:var(--accent);width:var(--w,50%);transform-origin:left;
  transform:scaleX(0);transition:transform .9s cubic-bezier(.2,.7,.3,1)}
.chart.in .fill{transform:scaleX(1)}
.bar:nth-child(3) .fill{background:var(--vermilion)}
.bar:nth-child(4) .fill{background:var(--yellow)}
.bar .pct{color:var(--ink);font-weight:600}

/* ---------- how it's taught: bento ---------- */
.taught{background:var(--surface-2)}
.bento{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:minmax(120px,auto);gap:var(--s2)}
.cell{background:var(--base);border:2px solid var(--ink);border-radius:var(--radius);padding:var(--s3);
  display:flex;flex-direction:column;gap:.6rem}
.cell h3{margin:0;font-size:var(--fs-h3)}
.cell p{margin:0;color:var(--ink-soft);font-size:.98rem}
.cell .mark{font-family:var(--mono);font-size:var(--fs-mono);color:var(--accent-ink);letter-spacing:.1em;text-transform:uppercase}
.cell--wide{grid-column:span 2}
.cell--tall{grid-row:span 2}
.cell--accent{background:var(--accent);color:#fff;border-color:var(--accent)}
.cell--accent p,.cell--accent .mark{color:color-mix(in oklch,#fff 82%,var(--accent))}
.cell--img{padding:0;overflow:hidden}
.cell--img img{width:100%;height:100%;object-fit:cover}

/* ---------- instructor editorial two-column w/ hanging labels ---------- */
.instructor{background:var(--base)}
.editorial{display:grid;grid-template-columns:9rem 1fr;gap:var(--s4);align-items:start}
.editorial .hang{font-family:var(--mono);font-size:var(--fs-mono);text-transform:uppercase;letter-spacing:.1em;
  color:var(--accent-ink);text-align:right;padding-top:.3rem}
.editorial .body h2{margin-top:0;font-size:var(--fs-h2)}
.instr-media{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3);align-items:start;margin-top:var(--s4)}
.instr-media img{border:2px solid var(--ink);border-radius:var(--radius)}
.instr-facts{display:flex;flex-direction:column;gap:var(--s2)}
.instr-facts .f{border-left:3px solid var(--accent);padding-left:var(--s2)}
.instr-facts .f b{font-family:var(--mono);color:var(--accent-ink);display:block;font-size:1.4rem}
.instr-facts .f span{font-size:.9rem;color:var(--ink-soft)}

/* ---------- testimonials: geometric quote blocks ---------- */
.voices{background:var(--base)}
.voice-grid{display:grid;grid-template-columns:1.05fr .95fr 1fr;gap:var(--s4) var(--s3);align-items:start}
.voice{position:relative;margin:0;background:var(--white);border:2px solid var(--ink);border-radius:var(--radius);
  padding:var(--s4) var(--s3) var(--s3);box-shadow:var(--shadow-lift)}
/* asymmetric stagger — not a flat 3-col */
.voice.v--a{margin-top:1.4rem}
.voice.v--b{margin-top:0;transform:translateY(-.6rem)}
.voice.v--c{margin-top:2.6rem}
/* the accent shape holding the avatar */
.voice .v-shape{position:absolute;top:-2.1rem;left:var(--s3);width:74px;height:74px;flex:none;
  display:grid;place-items:center;background:var(--accent);overflow:hidden}
.voice .v-shape img{width:100%;height:100%;object-fit:cover}
/* card A — circle (cobalt) */
.v--circle .v-shape{border-radius:50%;background:var(--accent)}
.v--circle .v-shape img{border-radius:50%}
/* card B — triangle (vermilion): shape clipped to a triangle, avatar sits within */
.v--tri .v-shape{background:var(--vermilion);width:84px;height:74px;
  clip-path:polygon(50% 0,100% 100%,0 100%)}
.v--tri .v-shape img{clip-path:polygon(50% 14%,90% 100%,10% 100%);object-position:center 30%}
/* card C — square (yellow) */
.v--sq .v-shape{background:var(--yellow);border-radius:2px}
.v--sq .v-shape img{border-radius:1px}
/* a small mono quote glyph so the shape reads as a badge, not just a photo */
.voice::before{content:"“";position:absolute;top:.6rem;right:1rem;font-family:var(--display);
  font-size:2.6rem;line-height:1;color:var(--line)}
.v--circle::before{color:color-mix(in oklch,var(--accent) 34%,var(--base))}
.v--tri::before{color:color-mix(in oklch,var(--vermilion) 34%,var(--base))}
.v--sq::before{color:color-mix(in oklch,var(--yellow) 60%,var(--base))}
.voice blockquote{margin:1.9rem 0 var(--s3)}
.voice blockquote p{margin:0;color:var(--ink);font-size:1rem;line-height:1.6}
.voice figcaption{border-top:2px solid var(--ink);padding-top:var(--s2);display:flex;flex-direction:column;gap:.2rem}
.voice figcaption b{font-family:var(--display);font-weight:700;font-size:1.02rem}
.voice .v-role{font-size:var(--fs-mono);color:var(--accent-ink);letter-spacing:.01em}
.v--tri .v-role{color:color-mix(in oklch,var(--vermilion) 82%,var(--ink))}
@media (max-width:860px){
  .voice-grid{grid-template-columns:1fr 1fr}
  .voice.v--c{grid-column:1 / -1;max-width:34rem;margin-top:1.6rem}
}
@media (max-width:560px){
  .voice-grid{grid-template-columns:1fr;gap:var(--s5)}
  .voice.v--a,.voice.v--c{margin-top:1.4rem}
  .voice.v--b{transform:none;margin-top:1.4rem}
  .voice.v--c{max-width:none}
}

/* ---------- pricing ---------- */
.pricing{background:var(--ink);color:var(--base)}
.pricing .section-head h2{color:var(--base)}
.pricing .section-head p{color:color-mix(in oklch,var(--base) 78%,var(--ink))}
.plans{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3)}
.plan{background:var(--base);color:var(--ink);border-radius:var(--radius);padding:var(--s4);
  display:flex;flex-direction:column;gap:var(--s2);position:relative;border:2px solid var(--base)}
.plan--feature{border-color:var(--yellow);box-shadow:10px 10px 0 rgba(245,180,0,.35)}
.plan .tag{position:absolute;top:-.9rem;left:var(--s4);font-family:var(--mono);font-size:.72rem;
  background:var(--vermilion);color:#fff;padding:.3em .7em;border-radius:var(--radius);letter-spacing:.06em}
.plan h3{margin:0;font-size:var(--fs-h3)}
.plan .price{font-family:var(--display);font-size:clamp(2.2rem,1.4rem + 2.6vw,3.2rem);font-weight:800;line-height:1}
.plan .price small{font-family:var(--mono);font-size:.9rem;font-weight:400;color:var(--ink-soft)}
.plan ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}
.plan li{position:relative;padding-left:1.5rem;font-size:.98rem}
.plan li::before{content:"■";position:absolute;left:0;color:var(--accent);font-size:.7rem;top:.35rem}
.plan .btn{margin-top:auto}

/* ---------- FAQ: open geometric Q&A blocks (math-lab) ---------- */
.faq{background:var(--surface)}
.qa-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s3)}
.qa{position:relative;display:grid;grid-template-columns:auto 1fr;gap:var(--s3);
  background:var(--base);border:2px solid var(--ink);border-radius:var(--radius);
  padding:var(--s3) var(--s3) var(--s3) var(--s3);align-items:start}
/* Bauhaus shape bullet holder */
.qa-mark{width:2.6rem;height:2.6rem;flex:none;display:grid;place-items:center;margin-top:.15rem}
.qa-shape{width:1.5rem;height:1.5rem;display:block}
/* circle · cobalt */
.qa--circle .qa-shape{background:var(--accent);border-radius:50%}
/* triangle · vermilion */
.qa--tri .qa-shape{width:0;height:0;background:none;
  border-left:.85rem solid transparent;border-right:.85rem solid transparent;
  border-bottom:1.45rem solid var(--vermilion)}
/* square · yellow */
.qa--sq .qa-shape{background:var(--yellow);border-radius:2px}
.qa-body{min-width:0}
.qa-num{display:block;color:var(--accent-ink);font-size:.82rem;letter-spacing:.1em;margin-bottom:.3rem}
.qa--tri .qa-num{color:color-mix(in oklch,var(--vermilion) 82%,var(--ink))}
.qa--sq .qa-num{color:color-mix(in oklch,var(--yellow) 55%,var(--ink))}
.qa h3{margin:0 0 .5rem;font-size:1.15rem;line-height:1.25}
.qa p{margin:0;color:var(--ink-soft);font-size:.98rem}
.qa a{color:var(--accent-ink);font-weight:600}
/* accent bar on the left edge, colored per shape */
.qa::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;border-radius:var(--radius) 0 0 var(--radius)}
.qa--circle::before{background:var(--accent)}
.qa--tri::before{background:var(--vermilion)}
.qa--sq::before{background:var(--yellow)}
@media (max-width:760px){.qa-grid{grid-template-columns:1fr}}

/* ---------- enrollment form ---------- */
.enroll{background:var(--base)}
.enroll-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(1.5rem,4vw,4rem);align-items:start}
.enroll-copy h2{font-size:var(--fs-h2);margin-top:0}
.enroll-copy .summary{background:var(--surface);border:2px solid var(--ink);border-radius:var(--radius);
  padding:var(--s3);margin-top:var(--s3)}
.enroll-copy .summary .row{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.9rem;
  padding:.4rem 0;border-bottom:1px dashed var(--line)}
.enroll-copy .summary .row:last-child{border-bottom:0}
form.lead{background:var(--surface);border:2px solid var(--ink);border-radius:var(--radius);padding:clamp(1.3rem,3vw,2.2rem);box-shadow:var(--shadow-lift)}
form.lead .field{margin-bottom:var(--s3)}
form.lead label{display:block;font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-soft);margin-bottom:.4rem}
form.lead input,form.lead select,form.lead textarea{width:100%;font-family:var(--sans);font-size:1rem;
  padding:.8em .9em;background:var(--white);border:2px solid var(--ink);border-radius:var(--radius);color:var(--ink)}
form.lead textarea{min-height:110px;resize:vertical}
form.lead .btn{width:100%}
.form-note{font-size:.85rem;color:var(--ink-soft);margin-top:var(--s2)}
#formStatus{margin-top:var(--s2);font-family:var(--mono);font-size:.85rem}
#formStatus.error{color:var(--vermilion)}
.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* ---------- footer ---------- */
.site-footer{background:var(--ink);color:color-mix(in oklch,var(--base) 82%,var(--ink));padding-block:var(--s5) var(--s4)}
.foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:var(--s4)}
.site-footer .brand{color:var(--base)}
.site-footer .brand .glyph::before{border-color:var(--yellow)}
.site-footer address{font-style:normal;margin-top:var(--s2);font-size:.92rem;line-height:1.7}
.site-footer a{color:color-mix(in oklch,var(--base) 82%,var(--ink))}
.site-footer a:hover{color:var(--base)}
.site-footer h4{font-family:var(--mono);font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;
  color:var(--yellow);margin:0 0 var(--s2)}
.site-footer ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.45rem;font-size:.92rem}
.foot-note{margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid color-mix(in oklch,var(--base) 30%,var(--ink));
  display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);justify-content:space-between;font-size:.82rem;
  font-family:var(--mono);color:color-mix(in oklch,var(--base) 65%,var(--ink))}
.edu-note{max-width:70ch;font-family:var(--sans);font-size:.85rem;line-height:1.6;margin-top:var(--s2)}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.7,.3,1)}
.reveal.in{opacity:1;transform:none}

/* ---------- doc / legal pages ---------- */
.doc{max-width:74ch;padding-block:clamp(2.5rem,6vw,var(--s6))}
/* geometric page header: shape accent + cobalt kicker */
.doc-head{position:relative;padding-left:calc(1.5rem + var(--s3));margin-bottom:var(--s4);
  border-bottom:2px solid var(--ink);padding-bottom:var(--s3)}
.doc-head::before{content:"";position:absolute;left:0;top:.35rem;width:1.5rem;height:1.5rem;
  background:var(--accent);border-radius:50%}
.doc-head.dh--tri::before{width:0;height:0;background:none;border-radius:0;
  border-left:.85rem solid transparent;border-right:.85rem solid transparent;border-bottom:1.5rem solid var(--vermilion)}
.doc-head.dh--sq::before{background:var(--yellow);border-radius:2px}
.doc-head .kicker{font-family:var(--mono);font-size:var(--fs-mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent-ink);display:block;margin-bottom:.5rem}
.doc h1{font-size:var(--fs-h1);margin:0 0 .35rem}
.doc .updated{font-family:var(--mono);font-size:.82rem;color:var(--ink-soft);margin:0}
.doc-head .updated{margin-top:.35rem}
/* mono-numbered sections */
.doc h2{font-size:var(--fs-h3);margin-top:var(--s4);color:var(--accent-ink);
  display:flex;gap:.7rem;align-items:baseline}
.doc h2 .n{font-family:var(--mono);font-size:.9rem;font-weight:500;color:var(--ink-soft);flex:none}
.doc .lead-para{font-size:var(--fs-lead);color:var(--ink);line-height:1.6}
.doc .lead-para em{font-style:italic;color:var(--accent-ink)}
.doc p,.doc li{color:var(--ink-soft)}
.doc a{color:var(--accent-ink)}
.doc .back-home{display:inline-block;margin-top:var(--s5);font-family:var(--mono);font-size:.9rem;
  border-top:1px solid var(--line);padding-top:var(--s3);width:100%}
.doc address{font-style:normal;background:var(--surface);border:2px solid var(--ink);border-radius:var(--radius);
  padding:var(--s3);line-height:1.9;box-shadow:var(--shadow-lift)}
.doc address strong{font-family:var(--display);font-size:1.05rem}
/* contact info tiles */
.contact-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--s2);margin:var(--s3) 0}
.contact-tiles .ct{background:var(--surface);border:2px solid var(--ink);border-radius:var(--radius);
  padding:var(--s3);position:relative}
.contact-tiles .ct .ct-k{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--accent-ink);display:block;margin-bottom:.4rem}
.contact-tiles .ct .ct-v{font-size:.98rem;color:var(--ink);line-height:1.5}
.contact-tiles .ct .ct-v a{color:var(--ink);text-decoration:none;border-bottom:2px solid var(--accent)}
.contact-tiles .ct .ct-v a:hover{color:var(--accent-ink)}
.contact-tiles .ct::after{content:"";position:absolute;top:var(--s3);right:var(--s3);width:.7rem;height:.7rem;
  background:var(--accent);border-radius:50%}
.contact-tiles .ct:nth-child(2)::after{background:var(--vermilion);border-radius:0;
  width:0;height:0;border-left:.4rem solid transparent;border-right:.4rem solid transparent;border-bottom:.7rem solid var(--vermilion)}
.contact-tiles .ct:nth-child(3)::after{background:var(--yellow);border-radius:2px}
.contact-tiles .ct:nth-child(4)::after{background:var(--ink);border-radius:50%}

/* thank-you */
.ty{min-height:66vh;display:flex;align-items:center;text-align:left}
.ty .mark{width:70px;height:70px;position:relative;margin-bottom:var(--s3)}
.ty .mark::before{content:"";position:absolute;inset:0;border:5px solid var(--accent);border-radius:50%}
.ty .mark::after{content:"";position:absolute;left:50%;top:50%;width:22px;height:11px;
  border-left:5px solid var(--vermilion);border-bottom:5px solid var(--vermilion);
  transform:translate(-50%,-65%) rotate(-45deg)}
.ty h1{font-size:var(--fs-h1);margin:0 0 var(--s2)}
.ty p{max-width:60ch;color:var(--ink-soft)}

/* ---------- responsive ---------- */
@media (max-width:1024px){
  .bento{grid-template-columns:repeat(2,1fr)}
  .cell--tall{grid-row:auto}
}
@media (max-width:860px){
  .lesson-grid{grid-template-columns:1fr}
  .enroll-grid{grid-template-columns:1fr}
  .plans{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr 1fr}
  .editorial{grid-template-columns:1fr}
  .editorial .hang{text-align:left}
}
@media (max-width:768px){
  .nav-links,.nav-cta{display:none}
  .nav-links.open{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;
    background:var(--base);border-bottom:2px solid var(--ink);padding:var(--s2);gap:.2rem}
  .nav-links.open a{padding:.8em}
  .nav-toggle{display:flex}
  .mod{grid-template-columns:3.2rem 1fr}
  .mod .topics{grid-column:1 / -1}
  .instr-media{grid-template-columns:1fr}
}
@media (max-width:560px){
  .bento{grid-template-columns:1fr}
  .cell--wide{grid-column:auto}
  .foot-grid{grid-template-columns:1fr}
  .hero-cta{flex-direction:column}
  .hero-cta .btn{width:100%}
  .hero h1{font-size:clamp(2.4rem,7vw + 1rem,3.2rem)}
  .hero h1 .u{white-space:normal}
  .hero-meta .chip{font-size:.74rem}
  section{padding-block:var(--s5)}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important}
  .reveal,.sh,.bar .fill,.distro span{opacity:1!important;transform:none!important}
  .chart .fill{transform:scaleX(1)!important}
  .distro span{transform:scaleY(1)!important}
  .btn:hover{transform:none}
}
