/* =========================================================
   PROFYN ACADEMY - design tokens
   Palette: "Forest Ledger". One accent (deep forest), one
   neutral family (cool sage-grey). Semantic colors are used
   only for real state (quiz correct / incorrect).
   Radius system: cards 10px, controls 6px, pills full.
   ========================================================= */
:root{
  color-scheme: light;

  --paper:        #edefea;
  --paper-sunk:   #e4e7e0;
  --surface:      #f8f9f6;
  --surface-hi:   #ffffff;

  --ink:          #131711;
  --ink-2:        #4a5145;
  --ink-3:        #62685e;

  --line:         #d4d8ce;
  --line-strong:  #bcc2b4;

  --accent:       #1f4d34;
  --accent-hover: #163a27;
  --accent-ink:   #f6f8f4;
  --accent-wash:  rgba(31,77,52,.08);
  --accent-edge:  rgba(31,77,52,.24);

  --ok:           #2f6b43;
  --ok-wash:      rgba(47,107,67,.12);
  --bad:          #9c3324;
  --bad-wash:     rgba(156,51,36,.12);

  --shadow-sm: 0 1px 2px rgba(19,23,17,.05), 0 1px 1px rgba(19,23,17,.04);
  --shadow-md: 0 4px 16px -4px rgba(19,23,17,.10), 0 2px 6px -2px rgba(19,23,17,.06);
  --shadow-lg: 0 20px 48px -14px rgba(19,23,17,.18), 0 6px 16px -8px rgba(19,23,17,.08);

  --r-lg: 10px;
  --r-md: 6px;
  --r-full: 999px;

  --z-grain: 90;
  --z-nav: 60;
  --z-panel: 70;
  --z-toast: 80;

  --shell: 1200px;
  --gut: 24px;

  --ease: cubic-bezier(.16,1,.3,1);
  --dur: .28s;

  --font-display: 'Bricolage Grotesque', 'Instrument Sans', system-ui, sans-serif;
  --font-text: 'Instrument Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, monospace;
}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme: dark;
    --paper:        #12140f;
    --paper-sunk:   #0c0e0a;
    --surface:      #1a1d16;
    --surface-hi:   #22261c;
    --ink:          #e9ebe3;
    --ink-2:        #a7ad9e;
    --ink-3:        #878f7e;
    --line:         #2b2f26;
    --line-strong:  #3e4337;
    --accent:       #86c199;
    --accent-hover: #9ed0ae;
    --accent-ink:   #0e1a12;
    --accent-wash:  rgba(134,193,153,.11);
    --accent-edge:  rgba(134,193,153,.28);
    --ok:           #86c199;
    --ok-wash:      rgba(134,193,153,.14);
    --bad:          #e08a7a;
    --bad-wash:     rgba(224,138,122,.14);
    --shadow-sm: 0 1px 2px rgba(0,0,0,.4);
    --shadow-md: 0 4px 16px -4px rgba(0,0,0,.5), 0 2px 6px -2px rgba(0,0,0,.35);
    --shadow-lg: 0 20px 48px -14px rgba(0,0,0,.62), 0 6px 16px -8px rgba(0,0,0,.4);
  }
}

:root[data-theme="dark"]{
  color-scheme: dark;
  --paper:        #12140f;
  --paper-sunk:   #0c0e0a;
  --surface:      #1a1d16;
  --surface-hi:   #22261c;
  --ink:          #e9ebe3;
  --ink-2:        #a7ad9e;
  --ink-3:        #878f7e;
  --line:         #2b2f26;
  --line-strong:  #3e4337;
  --accent:       #86c199;
  --accent-hover: #9ed0ae;
  --accent-ink:   #0e1a12;
  --accent-wash:  rgba(134,193,153,.11);
  --accent-edge:  rgba(134,193,153,.28);
  --ok:           #86c199;
  --ok-wash:      rgba(134,193,153,.14);
  --bad:          #e08a7a;
  --bad-wash:     rgba(224,138,122,.14);
  --shadow-sm: 0 1px 2px rgba(0,0,0,.4);
  --shadow-md: 0 4px 16px -4px rgba(0,0,0,.5), 0 2px 6px -2px rgba(0,0,0,.35);
  --shadow-lg: 0 20px 48px -14px rgba(0,0,0,.62), 0 6px 16px -8px rgba(0,0,0,.4);
}

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box;}
*{margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
@media (prefers-reduced-motion: no-preference){ html{scroll-behavior:smooth;} }

body{
  font-family:var(--font-text);
  background:var(--paper);
  color:var(--ink);
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  font-variant-numeric:tabular-nums;
  overflow-x:hidden;
}

img,svg,video{display:block;max-width:100%;}
img{height:auto;}
[hidden]{display:none !important;}
.ic{width:1em;height:1em;fill:currentColor;flex-shrink:0;display:inline-block;vertical-align:-.125em;}
a{color:inherit;text-decoration:none;}
button,input,select,textarea{font:inherit;color:inherit;}
button{background:none;border:none;cursor:pointer;}
ul,ol{list-style:none;}
::selection{background:var(--accent);color:var(--accent-ink);}

:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
  border-radius:2px;
}

/* ---------- grain: fixed, non-scrolling, pointer-events none ---------- */
.grain{
  position:fixed; inset:0; z-index:var(--z-grain);
  pointer-events:none; opacity:.28; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E");
}
:root[data-theme="dark"] .grain{mix-blend-mode:screen;opacity:.16;}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .grain{mix-blend-mode:screen;opacity:.16;}
}

/* ---------- skip link ---------- */
.skip{
  position:absolute; left:16px; top:-100px; z-index:100;
  background:var(--accent); color:var(--accent-ink);
  padding:12px 18px; border-radius:var(--r-md); font-weight:600;
  transition:top .2s var(--ease);
}
.skip:focus{top:16px;}

/* ---------- typography ---------- */
h1,h2,h3,h4{
  font-family:var(--font-display);
  font-weight:700;
  letter-spacing:-.028em;
  line-height:1.05;
  text-wrap:balance;
  color:var(--ink);
}
p{text-wrap:pretty;}

.display{font-size:clamp(2.6rem,6.2vw,4.5rem);line-height:.98;letter-spacing:-.038em;}
.h-xl{font-size:clamp(2rem,4.4vw,3.1rem);letter-spacing:-.032em;}
.h-lg{font-size:clamp(1.6rem,3vw,2.25rem);}
.h-md{font-size:clamp(1.2rem,2vw,1.45rem);letter-spacing:-.02em;}
.h-sm{font-size:1.06rem;letter-spacing:-.015em;}

.lede{font-size:clamp(1.05rem,1.6vw,1.22rem);color:var(--ink-2);line-height:1.55;max-width:52ch;}
.body-2{color:var(--ink-2);font-size:.95rem;line-height:1.65;max-width:65ch;}
.meta{
  font-family:var(--font-mono);
  font-size:.7rem; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink-3); font-weight:500;
}
.eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--font-mono); font-size:.7rem; font-weight:500;
  letter-spacing:.14em; text-transform:uppercase; color:var(--accent);
  padding:6px 12px; border:1px solid var(--accent-edge);
  border-radius:var(--r-full); background:var(--accent-wash);
}
.num{font-family:var(--font-mono);font-weight:500;font-variant-numeric:tabular-nums;}
.accent-word{color:var(--accent);}

/* ---------- layout ---------- */
.shell{width:100%;max-width:var(--shell);margin-inline:auto;padding-inline:var(--gut);}
.shell-wide{width:100%;max-width:1420px;margin-inline:auto;padding-inline:var(--gut);}
.band{padding-block:clamp(56px,8vw,104px);}
.band-tight{padding-block:clamp(40px,5vw,64px);}
.band-sunk{background:var(--paper-sunk);border-block:1px solid var(--line);}
.rule{height:1px;background:var(--line);border:0;}

.sec-head{display:flex;flex-direction:column;gap:14px;margin-bottom:clamp(28px,4vw,48px);max-width:60ch;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:9px;
  font-family:var(--font-text); font-weight:600; font-size:.92rem;
  letter-spacing:-.005em; white-space:nowrap;
  padding:12px 20px; border-radius:var(--r-md);
  border:1px solid transparent; background:var(--accent); color:var(--accent-ink);
  transition:background var(--dur) var(--ease), transform .12s var(--ease),
             box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease),
             color var(--dur) var(--ease), opacity var(--dur) var(--ease);
  box-shadow:var(--shadow-sm);
}
.btn .ic{font-size:1.05em;line-height:1;}
.btn:hover{background:var(--accent-hover);box-shadow:var(--shadow-md);}
.btn:active{transform:translateY(1px);box-shadow:var(--shadow-sm);}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none;}

.btn-2{background:transparent;color:var(--ink);border-color:var(--line-strong);box-shadow:none;}
.btn-2:hover{background:var(--surface-hi);border-color:var(--ink-3);box-shadow:var(--shadow-sm);}

.btn-ghost{background:transparent;color:var(--ink-2);border-color:transparent;box-shadow:none;padding-inline:12px;}
.btn-ghost:hover{background:var(--accent-wash);color:var(--ink);box-shadow:none;}

.btn-lg{padding:15px 26px;font-size:1rem;}
.btn-sm{padding:9px 15px;font-size:.82rem;}
.btn-block{width:100%;}
.btn.is-busy{pointer-events:none;opacity:.72;}

.link-arrow{
  display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:.9rem;
  color:var(--accent);border-bottom:1px solid transparent;padding-bottom:2px;
  transition:border-color var(--dur) var(--ease),gap var(--dur) var(--ease);
}
.link-arrow:hover{border-bottom-color:var(--accent);gap:11px;}

/* ---------- surfaces ---------- */
.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease),
             transform var(--dur) var(--ease), background var(--dur) var(--ease);
}
.card-hover:hover{border-color:var(--line-strong);box-shadow:var(--shadow-md);transform:translateY(-3px);}

.tag{
  display:inline-block; font-family:var(--font-mono); font-size:.66rem;
  letter-spacing:.09em; text-transform:uppercase; font-weight:500;
  padding:4px 9px; border-radius:var(--r-md);
  background:var(--accent-wash); color:var(--accent); border:1px solid var(--accent-edge);
}
.tag-quiet{background:transparent;color:var(--ink-3);border-color:var(--line);}

/* Unified image grade - no grayscale-to-color hover gimmick */
.shot{position:relative;overflow:hidden;background:var(--paper-sunk);}
.shot img{width:100%;height:100%;object-fit:cover;filter:saturate(.72) contrast(1.04);transition:transform .6s var(--ease);}
.shot::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 46%,rgba(19,23,17,.34));pointer-events:none;}
.shot-flat::after{display:none;}
.card-hover:hover .shot img,.rail-card:hover .shot img{transform:scale(1.035);}

/* ---------- motion: scroll reveal ----------
   The hidden state is scoped to .js so the page is fully readable when
   JavaScript is unavailable or IntersectionObserver never fires. Content
   must never depend on script to be visible. */
.js .reveal{opacity:0;transform:translateY(16px);}
@media (prefers-reduced-motion: no-preference){
  .js .reveal{transition:opacity .62s var(--ease),transform .62s var(--ease);transition-delay:calc(var(--i,0) * 70ms);}
}
.js .reveal.in{opacity:1;transform:none;}
@media (prefers-reduced-motion: reduce){
  .js .reveal{opacity:1;transform:none;transition:none;}
  .shot img{transition:none;}
}

/* =========================================================
   NAVIGATION - single line, 68px, sticky
   ========================================================= */
.nav{
  position:sticky; top:0; z-index:var(--z-nav);
  background:color-mix(in srgb, var(--paper) 86%, transparent);
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid var(--line);
  transition:box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.nav.stuck{box-shadow:var(--shadow-sm);border-bottom-color:var(--line-strong);}
.nav-in{
  max-width:1420px;margin-inline:auto;padding:0 var(--gut);
  height:68px;display:flex;align-items:center;justify-content:space-between;gap:20px;
}
.brand{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.brand .brand-mark{width:30px;height:30px;flex-shrink:0;object-fit:contain;}
.foot-logo{width:132px;height:auto;margin-bottom:6px;}
.cert-logo{width:96px;height:auto;margin:0 auto 18px;}
.brand-name{
  font-family:var(--font-display);font-weight:700;font-size:1.14rem;
  letter-spacing:-.03em;color:var(--ink);
}
.nav-links{display:flex;align-items:center;gap:4px;}
.nav-link{
  font-size:.88rem;font-weight:500;color:var(--ink-2);
  padding:8px 13px;border-radius:var(--r-md);
  transition:color var(--dur) var(--ease),background var(--dur) var(--ease);
}
.nav-link:hover{color:var(--ink);background:var(--accent-wash);}
.nav-link[aria-current="page"]{color:var(--accent);background:var(--accent-wash);font-weight:600;}
.nav-right{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.nav-toggle{
  display:none;width:40px;height:40px;align-items:center;justify-content:center;
  border:1px solid var(--line-strong);border-radius:var(--r-md);color:var(--ink);font-size:1.2rem;
}
.nav-panel{display:none;}

@media (max-width:1000px){
  .nav-links{display:none;}
  .nav-toggle{display:inline-flex;}
  .nav-panel{
    display:block;position:fixed;inset:68px 0 auto 0;z-index:var(--z-panel);
    background:var(--paper);border-bottom:1px solid var(--line);
    padding:12px var(--gut) 22px;box-shadow:var(--shadow-lg);
    transform:translateY(-8px);opacity:0;pointer-events:none;
    transition:opacity .22s var(--ease),transform .22s var(--ease);
  }
  .nav-panel.open{opacity:1;transform:none;pointer-events:auto;}
  .nav-panel a{
    display:flex;align-items:center;gap:12px;padding:14px 6px;
    border-bottom:1px solid var(--line);font-weight:500;color:var(--ink);
  }
  .nav-panel a:last-of-type{border-bottom:0;}
  .nav-panel > a:last-of-type{border-bottom:1px solid var(--line);}
  .np-account a,.np-account button{display:flex;align-items:center;gap:12px;width:100%;padding:14px 6px;border-bottom:1px solid var(--line);font-weight:500;color:var(--ink);text-align:left;font-size:1rem;}
  .np-account > :last-child{border-bottom:0;}
  .np-account .ic{color:var(--ink-3);font-size:1.15rem;}
  .nav-account > .nav-link{display:none;}
  .nav-panel a .ic{color:var(--ink-3);font-size:1.15rem;}
}
@media (max-width:520px){
  .foot-logo{width:116px;}
  .nav-cta-label{display:none;}
  .nav-right .btn{padding-inline:14px;}
}

/* ---------- page switching ---------- */
.page{display:none;}
.page.active{display:block;}
@media (prefers-reduced-motion: no-preference){
  .page.active{animation:pageIn .34s var(--ease);}
}
@keyframes pageIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

/* =========================================================
   HOME - hero (asymmetric split)
   ========================================================= */
.hero{
  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:clamp(32px,5vw,72px);align-items:center;
  padding-block:clamp(48px,7vw,88px) clamp(56px,8vw,100px);
}
.hero-copy{display:flex;flex-direction:column;align-items:flex-start;gap:22px;}
.hero h1{font-size:clamp(2.7rem,6vw,4.4rem);line-height:.97;letter-spacing:-.042em;}
.hero .lede{max-width:44ch;}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;}
.hero-art{position:relative;}
.hero-art .shot{border-radius:var(--r-lg);aspect-ratio:4/3;box-shadow:var(--shadow-lg);border:1px solid var(--line);}
.hero-quote{
  position:absolute;left:-115px;bottom:-52px;max-width:220px;
  background:var(--surface-hi);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:16px 18px;box-shadow:var(--shadow-lg);
}
.hero-quote p{font-size:.9rem;line-height:1.5;color:var(--ink);}
.hero-quote .meta{margin-top:9px;display:block;}

@media (max-width:900px){
  .hero{grid-template-columns:1fr;gap:34px;}
  .hero-art .shot{aspect-ratio:4/3;}
  .hero-quote{position:static;max-width:none;margin-top:14px;}
}

/* ---------- metrics + sponsor band (own section, not in hero) ---------- */
.figures{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border-block:1px solid var(--line);}
.figure{background:var(--paper-sunk);padding:26px 20px;display:flex;flex-direction:column;gap:4px;}
.figure b{font-family:var(--font-display);font-size:clamp(1.7rem,3vw,2.3rem);font-weight:700;letter-spacing:-.03em;line-height:1;}
.sponsor{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;
  padding:18px 0;text-align:center;
}
@media (max-width:760px){ .figures{grid-template-columns:repeat(2,1fr);} }

/* ---------- pillars: asymmetric bento, 3 items = 3 cells ---------- */
.pillars{display:grid;grid-template-columns:1.32fr 1fr;grid-template-rows:auto auto;gap:16px;}
.pillar{
  position:relative;overflow:hidden;border-radius:var(--r-lg);
  border:1px solid var(--line);padding:28px;
  display:flex;flex-direction:column;justify-content:flex-end;gap:10px;min-height:200px;
  transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
}
.pillar:hover{border-color:var(--line-strong);transform:translateY(-3px);box-shadow:var(--shadow-md);}
.pillar p{font-size:.93rem;line-height:1.6;max-width:44ch;}
.pillar .pill-ico{font-size:1.5rem;margin-bottom:auto;}

/* cell A - image ground, spans both rows */
.pillar-a{grid-row:span 2;min-height:400px;color:#f2f4ef;border-color:transparent;}
.pillar-a img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.6) contrast(1.05);}
.pillar-a::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(19,23,17,.28) 0%,rgba(19,23,17,.86) 78%);}
.pillar-a > *{position:relative;z-index:1;}
.pillar-a h3,.pillar-a p,.pillar-a .pill-ico{color:#f2f4ef;}
.pillar-a p{color:rgba(242,244,239,.82);}
.pillar-a .tag{background:rgba(242,244,239,.14);border-color:rgba(242,244,239,.3);color:#f2f4ef;}

/* cell B - accent tint */
.pillar-b{background:var(--accent);border-color:transparent;color:var(--accent-ink);}
.pillar-b h3{color:var(--accent-ink);}
.pillar-b p{color:color-mix(in srgb,var(--accent-ink) 78%, transparent);}
.pillar-b .pill-ico{color:var(--accent-ink);}

/* cell C - plain surface */
.pillar-c{background:var(--surface);}
.pillar-c p{color:var(--ink-2);}
.pillar-c .pill-ico{color:var(--accent);}

@media (max-width:820px){
  .pillars{grid-template-columns:1fr;}
  .pillar-a{grid-row:auto;min-height:300px;}
}

/* ---------- course rail: horizontal scroll-snap ---------- */
.rail-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:26px;}
.rail{
  display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding-bottom:16px;margin-inline:calc(var(--gut) * -1);padding-inline:var(--gut);
  scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;
}
.rail::-webkit-scrollbar{height:6px;}
.rail::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--r-full);}
.rail::-webkit-scrollbar-track{background:transparent;}
.rail-card{
  flex:0 0 272px;scroll-snap-align:start;overflow:hidden;
  display:flex;flex-direction:column;cursor:pointer;text-align:left;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease);
}
.rail-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-md);transform:translateY(-3px);}
.rail-card .shot{height:132px;}
.rail-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1;}
.rail-body h3{font-size:1.02rem;line-height:1.2;}
.rail-body p{font-size:.85rem;color:var(--ink-2);line-height:1.5;flex:1;}
.rail-foot{display:flex;gap:14px;padding-top:10px;border-top:1px solid var(--line);}

/* ---------- full-bleed feature band ---------- */
.feature-band{position:relative;overflow:hidden;border-block:1px solid var(--line);}
.feature-band > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.5) contrast(1.05);}
.feature-band::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(19,23,17,.92) 0%,rgba(19,23,17,.74) 46%,rgba(19,23,17,.34) 100%);}
.feature-inner{position:relative;z-index:1;padding-block:clamp(64px,9vw,116px);}
.feature-inner h2,.feature-inner p,.feature-inner .figure-row b{color:#f2f4ef;}
.feature-inner p{color:rgba(242,244,239,.8);}
.feature-inner .eyebrow{color:#cfe3d6;border-color:rgba(207,227,214,.34);background:rgba(207,227,214,.12);}
.feature-inner .btn-2{color:#f2f4ef;border-color:rgba(242,244,239,.4);}
.feature-inner .btn-2:hover{background:rgba(242,244,239,.12);border-color:#f2f4ef;}
.feature-copy{max-width:540px;display:flex;flex-direction:column;align-items:flex-start;gap:20px;}
.figure-row{display:flex;gap:34px;flex-wrap:wrap;}
.figure-row div{display:flex;flex-direction:column;gap:2px;}
.figure-row b{font-family:var(--font-display);font-size:1.7rem;font-weight:700;letter-spacing:-.03em;}
.figure-row span{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(242,244,239,.62);}

/* ---------- editorial numbered list (episodes preview) ---------- */
.ed-list{border-top:1px solid var(--line);}
.ed-row{
  display:grid;grid-template-columns:64px 1fr auto;gap:20px;align-items:center;
  padding:22px 8px;border-bottom:1px solid var(--line);
  transition:background var(--dur) var(--ease),padding-inline var(--dur) var(--ease);
}
.ed-row:hover{background:var(--surface);padding-inline:16px 8px;}
.ed-row .idx{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-3);}
.ed-row h3{font-size:1.08rem;margin-bottom:4px;}
.ed-row p{font-size:.88rem;color:var(--ink-2);max-width:62ch;}
.ed-row .go{color:var(--accent);font-size:1.15rem;flex-shrink:0;}
@media (max-width:660px){
  .ed-row{grid-template-columns:40px 1fr;gap:14px;}
  .ed-row .go{display:none;}
}

/* ---------- closing CTA band ---------- */
.close-band{text-align:center;display:flex;flex-direction:column;align-items:center;gap:22px;max-width:640px;margin-inline:auto;}

/* =========================================================
   PAGE HEADERS
   ========================================================= */
.p-head{padding-block:clamp(44px,6vw,74px) clamp(24px,3vw,36px);display:flex;flex-direction:column;gap:16px;align-items:flex-start;}
.p-head h1{font-size:clamp(2.2rem,5vw,3.4rem);letter-spacing:-.038em;}

/* ---------- filters ---------- */
.filters{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:26px;}
.chip{
  font-family:var(--font-mono);font-size:.72rem;letter-spacing:.07em;text-transform:uppercase;
  padding:8px 14px;border-radius:var(--r-full);border:1px solid var(--line-strong);
  color:var(--ink-2);background:transparent;
  transition:all var(--dur) var(--ease);
}
.chip:hover{border-color:var(--ink-3);color:var(--ink);}
.chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);}

/* ---------- course grid ---------- */
.grid-courses{display:grid;grid-template-columns:repeat(auto-fill,minmax(288px,1fr));gap:20px;}
.course{overflow:hidden;display:flex;flex-direction:column;cursor:pointer;text-align:left;padding:0;}
.course .shot{height:150px;}
.course-body{padding:18px 20px 20px;display:flex;flex-direction:column;gap:9px;flex:1;}
.course-body h3{font-size:1.08rem;line-height:1.2;}
.course-body p{font-size:.88rem;color:var(--ink-2);line-height:1.55;flex:1;}
.course-foot{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding-top:13px;margin-top:4px;border-top:1px solid var(--line);
}
.course-foot .meta{display:flex;gap:12px;}
.course-foot .go{color:var(--accent);font-size:1.1rem;transition:transform var(--dur) var(--ease);}
.course:hover .course-foot .go{transform:translateX(4px);}
.diff{position:absolute;top:12px;left:12px;z-index:1;background:rgba(19,23,17,.72);color:#f2f4ef;border:0;backdrop-filter:blur(6px);}

.empty{
  text-align:center;padding:64px 24px;border:1px dashed var(--line-strong);
  border-radius:var(--r-lg);display:flex;flex-direction:column;align-items:center;gap:12px;
}
.empty .ic{font-size:2rem;color:var(--ink-3);}


/* ---------- course catalogue ---------- */
.vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
.toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:16px;}
.search{position:relative;flex:1 1 260px;display:flex;align-items:center;}
.search > .ic{position:absolute;left:14px;color:var(--ink-3);font-size:1.05rem;pointer-events:none;}
.search input{width:100%;padding:12px 42px;border:1px solid var(--line-strong);border-radius:var(--r-md);
  background:var(--surface-hi);color:var(--ink);font-size:.92rem;}
.search input::placeholder{color:var(--ink-3);}
.search input::-webkit-search-cancel-button{display:none;}
.search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash);}
.search button{position:absolute;right:9px;display:grid;place-items:center;padding:6px;border-radius:var(--r-full);color:var(--ink-3);font-size:.95rem;}
.search button:hover{color:var(--ink);background:var(--accent-wash);}
.lvl{display:flex;gap:6px;flex-wrap:wrap;}
.cats{display:flex;gap:8px;overflow-x:auto;padding-bottom:14px;scrollbar-width:thin;
  scrollbar-color:var(--line-strong) transparent;margin-inline:calc(var(--gut)*-1);padding-inline:var(--gut);}
.cats::-webkit-scrollbar{height:5px;}
.cats::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--r-full);}
.cat-chip{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;padding:9px 15px;
  border-radius:var(--r-full);border:1px solid var(--line-strong);background:transparent;
  font-size:.83rem;font-weight:500;color:var(--ink-2);
  transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease);}
.cat-chip:hover{border-color:var(--ink-3);color:var(--ink);}
.cat-chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);}
.cat-chip .ic{font-size:1.02rem;}
.cat-chip .n{font-family:var(--font-mono);font-size:.72rem;opacity:.72;}
.count{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin-bottom:18px;}
.grid-courses{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;}
.ccard{display:flex;flex-direction:column;gap:9px;text-align:left;padding:22px;cursor:pointer;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease);}
.ccard:hover{border-color:var(--line-strong);box-shadow:var(--shadow-md);transform:translateY(-3px);}
.cc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.cc-cat{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:.65rem;
  letter-spacing:.08em;text-transform:uppercase;font-weight:500;color:var(--accent);}
.cc-cat .ic{font-size:1rem;}
.ccard h3{font-size:1.05rem;line-height:1.28;letter-spacing:-.02em;}
.ccard p{font-size:.875rem;color:var(--ink-2);line-height:1.55;flex:1;}
.cc-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:14px;margin-top:5px;border-top:1px solid var(--line);}
.cc-meta{display:flex;gap:13px;}
.cc-meta .meta{display:inline-flex;align-items:center;gap:5px;}
.cc-cta{display:inline-flex;align-items:center;gap:6px;font-size:.81rem;font-weight:600;color:var(--accent);}
.cc-cta .ic{transition:transform var(--dur) var(--ease);}
.ccard:hover .cc-cta .ic{transform:translateX(3px);}
.rail .ccard{flex:0 0 300px;scroll-snap-align:start;}
@media (max-width:520px){ .grid-courses{grid-template-columns:1fr;} .rail .ccard{flex:0 0 84vw;} }

/* =========================================================
   COURSE DETAIL
   ========================================================= */
.crumb{display:flex;align-items:center;gap:8px;padding-top:28px;font-size:.84rem;color:var(--ink-3);}
.crumb a{color:var(--ink-2);display:inline-flex;align-items:center;gap:6px;}
.crumb a:hover{color:var(--accent);}
.crumb .now{color:var(--ink);font-weight:500;}

.cd-grid{display:grid;grid-template-columns:280px minmax(0,1fr);gap:clamp(24px,3.5vw,48px);padding-block:28px clamp(56px,8vw,96px);align-items:start;}
.cd-side{position:sticky;top:92px;}
.cd-prog{margin-bottom:18px;}
.cd-prog .bar{height:3px;background:var(--line);border-radius:var(--r-full);overflow:hidden;margin-top:9px;}
.cd-prog .bar span{display:block;height:100%;background:var(--accent);border-radius:var(--r-full);transition:width .45s var(--ease);}
.cd-list{display:flex;flex-direction:column;max-height:min(58vh,520px);overflow-y:auto;padding-right:4px;border-top:1px solid var(--line);}
.cd-item{
  display:flex;align-items:center;gap:11px;text-align:left;width:100%;
  padding:12px 8px;border-bottom:1px solid var(--line);
  font-size:.88rem;color:var(--ink-2);line-height:1.35;
  transition:background var(--dur) var(--ease),color var(--dur) var(--ease);
}
.cd-item:hover{background:var(--surface);color:var(--ink);}
.cd-item[aria-current="true"]{color:var(--accent);font-weight:600;background:var(--accent-wash);}
.cd-item .n{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-3);flex-shrink:0;width:20px;}
.cd-item[aria-current="true"] .n{color:var(--accent);}
.cd-item .done{margin-left:auto;color:var(--ok);font-size:1rem;flex-shrink:0;}
.cd-exam{margin-top:18px;}

.cd-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(24px,3.5vw,44px);}
.cd-panel h1{font-size:clamp(1.5rem,3vw,2.05rem);margin-bottom:8px;}
.lesson-kicker{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin-top:6px;}
.lesson-body h3{font-size:1.12rem;margin-top:26px;letter-spacing:-.02em;}
.lesson-body{margin-top:24px;display:flex;flex-direction:column;gap:18px;}
.lesson-body p{font-size:1rem;line-height:1.75;color:var(--ink-2);max-width:68ch;}
.lesson-body p strong{color:var(--ink);font-weight:600;}
.lesson-actions{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:32px;padding-top:24px;border-top:1px solid var(--line);}

.quiz-q{font-size:1.12rem;font-weight:600;line-height:1.45;margin-bottom:22px;max-width:62ch;}
.opt{
  display:flex;align-items:center;gap:13px;width:100%;text-align:left;
  padding:15px 17px;border:1px solid var(--line);border-radius:var(--r-md);
  background:var(--surface-hi);margin-bottom:10px;font-size:.95rem;line-height:1.45;
  transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease);
}
.opt:hover:not(.correct):not(.wrong){border-color:var(--ink-3);background:var(--accent-wash);}
.opt .key{
  font-family:var(--font-mono);font-size:.74rem;flex-shrink:0;
  width:24px;height:24px;display:grid;place-items:center;
  border:1px solid var(--line-strong);border-radius:var(--r-full);color:var(--ink-3);
}
.opt.sel{border-color:var(--accent);background:var(--accent-wash);}
.opt.sel .key{border-color:var(--accent);background:var(--accent);color:var(--accent-ink);}
.opt.correct{border-color:var(--ok);background:var(--ok-wash);}
.opt.correct .key{border-color:var(--ok);background:var(--ok);color:var(--paper);}
.opt.wrong{border-color:var(--bad);background:var(--bad-wash);}
.opt.wrong .key{border-color:var(--bad);background:var(--bad);color:var(--paper);}
.opt .mark{margin-left:auto;font-size:1.1rem;flex-shrink:0;}
.opt.correct .mark{color:var(--ok);}
.opt.wrong .mark{color:var(--bad);}

.why{
  margin-top:22px;padding:20px 22px;border-radius:var(--r-md);
  background:var(--accent-wash);border:1px solid var(--accent-edge);
}
.why h3{font-size:.94rem;margin-bottom:7px;color:var(--accent);}
.why p{font-size:.94rem;line-height:1.65;color:var(--ink-2);}

.notes{margin-top:22px;border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;background:var(--surface);}
.notes-head{display:flex;align-items:center;gap:10px;margin-bottom:6px;}
.notes-head .ic{color:var(--accent);font-size:1.2rem;}
.notes textarea{
  width:100%;min-height:110px;resize:vertical;margin-top:14px;
  padding:13px 15px;border:1px solid var(--line);border-radius:var(--r-md);
  background:var(--surface-hi);font-size:.94rem;line-height:1.6;
}
.notes textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash);}
.notes-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;}

.result{text-align:center;padding:26px 0;display:flex;flex-direction:column;align-items:center;gap:16px;}
.result .badge-ico{font-size:3rem;color:var(--accent);}
.result.fail .badge-ico{color:var(--bad);}
.result h3{font-size:clamp(1.5rem,3vw,2rem);}
.result p{max-width:46ch;color:var(--ink-2);}
.result .form-row{width:100%;max-width:340px;text-align:left;}

.exam-q{margin-bottom:34px;}
.exam-progress{position:sticky;top:84px;z-index:2;background:var(--surface);padding:10px 0 12px;margin-bottom:22px;border-bottom:1px solid var(--line);}
.exam-progress > span{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);}
.exam-progress .bar{height:3px;background:var(--line);border-radius:var(--r-full);overflow:hidden;margin-top:8px;}
.exam-progress .bar span{display:block;height:100%;background:var(--accent);transition:width .3s var(--ease);}
.exam-score{font-family:var(--font-display);font-size:2rem;font-weight:700;letter-spacing:-.03em;color:var(--accent);}
.result.fail .exam-score{color:var(--bad);}
.exam-q .qn{margin-bottom:10px;display:block;}

/* =========================================================
   FORMS
   ========================================================= */
.form-row{display:flex;flex-direction:column;gap:7px;margin-bottom:18px;}
.form-row label{font-size:.82rem;font-weight:600;color:var(--ink);}
.form-row .hint{font-size:.78rem;color:var(--ink-3);}
.input,.select,textarea.input{
  width:100%;padding:13px 15px;border:1px solid var(--line-strong);border-radius:var(--r-md);
  background:var(--surface-hi);color:var(--ink);font-size:.95rem;
  transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
}
.input::placeholder{color:var(--ink-3);}
.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash);}
.select{appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%2362685e' stroke-width='1.6'%3E%3Cpath d='m1 1.5 5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 15px center;padding-right:38px;}
.form-row.bad .input,.form-row.bad .select{border-color:var(--bad);}
.err{font-size:.8rem;color:var(--bad);display:none;align-items:center;gap:5px;}
.form-row.bad .err{display:flex;}
.form-2col{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;}
@media (max-width:640px){ .form-2col{grid-template-columns:1fr;} }

/* =========================================================
   PRACTICE (question bank)
   ========================================================= */
.topics{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;}
.topic{
  display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;
  padding:20px 22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
}
.topic:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow-md);}
.topic h3{font-size:1.02rem;margin-bottom:3px;}
.topic .go{color:var(--accent);font-size:1.15rem;flex-shrink:0;transition:transform var(--dur) var(--ease);}
.topic:hover .go{transform:translateX(4px);}

.practice{max-width:760px;}
.back{display:inline-flex;align-items:center;gap:7px;font-size:.86rem;font-weight:500;color:var(--ink-2);margin-bottom:22px;}
.back:hover{color:var(--accent);}
.pr-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(24px,3.5vw,40px);}
.pr-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:20px;flex-wrap:wrap;}
.pr-card h2{font-size:clamp(1.25rem,2.4vw,1.6rem);line-height:1.3;margin-bottom:26px;}

/* =========================================================
   WORKSHOPS
   ========================================================= */
.ws-hero{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,56px);align-items:center;padding-bottom:clamp(40px,6vw,72px);}
.ws-hero .shot{border-radius:var(--r-lg);aspect-ratio:4/3;border:1px solid var(--line);box-shadow:var(--shadow-lg);}
.ws-where{display:flex;align-items:center;gap:14px;padding:16px 18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);}
.ws-where .ic{font-size:1.5rem;color:var(--accent);flex-shrink:0;}
@media (max-width:860px){ .ws-hero{grid-template-columns:1fr;} }

.agenda{border-top:1px solid var(--line);}
.session{
  display:grid;grid-template-columns:88px 1fr auto;gap:24px;align-items:center;
  padding:24px 8px;border-bottom:1px solid var(--line);
  transition:background var(--dur) var(--ease);
}
.session:hover{background:var(--surface);}
.s-date{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;
  padding:12px 6px;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface-hi);
}
.s-date .m{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;color:var(--accent);}
.s-date .d{font-family:var(--font-display);font-size:1.7rem;font-weight:700;line-height:1.1;letter-spacing:-.03em;}
.s-main h3{font-size:1.12rem;margin-bottom:6px;}
.s-meta{display:flex;gap:16px;flex-wrap:wrap;}
.s-right{text-align:right;display:flex;flex-direction:column;gap:6px;align-items:flex-end;}
.s-spots{font-family:var(--font-mono);font-size:.78rem;color:var(--accent);font-weight:500;}
.s-done{font-family:var(--font-mono);font-size:.78rem;font-weight:600;color:var(--bad);text-transform:uppercase;letter-spacing:.06em;}
.session.is-done .s-date{opacity:.55;}
.session.is-done h3{opacity:.7;}
@media (max-width:760px){
  .session{grid-template-columns:70px 1fr;gap:16px;}
  .s-right{grid-column:2;align-items:flex-start;text-align:left;}
}

.signup{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,52px);align-items:start;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(28px,4vw,48px);}
.signup ul{display:flex;flex-direction:column;gap:11px;margin-top:20px;}
.signup li{display:flex;align-items:center;gap:11px;font-size:.92rem;color:var(--ink-2);}
.signup li .ic{color:var(--accent);font-size:1.1rem;flex-shrink:0;}
@media (max-width:820px){ .signup{grid-template-columns:1fr;} }

/* =========================================================
   LISTEN (audio archive)
   ========================================================= */
.listen{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:clamp(28px,4vw,52px);align-items:start;}
.ep{
  display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;
  padding:20px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  margin-bottom:12px;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
}
.ep:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm);}
.ep-n{
  width:46px;height:46px;display:grid;place-items:center;flex-shrink:0;
  border-radius:var(--r-md);background:var(--accent-wash);border:1px solid var(--accent-edge);
  font-family:var(--font-mono);font-size:.88rem;font-weight:600;color:var(--accent);
}
.ep h3{font-size:1.02rem;margin-bottom:4px;display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.ep p{font-size:.87rem;color:var(--ink-2);max-width:60ch;margin-bottom:6px;}
@media (max-width:900px){ .listen{grid-template-columns:1fr;} }
@media (max-width:600px){
  .ep{grid-template-columns:auto 1fr;}
  .ep > .btn{grid-column:2;justify-self:start;}
}
.side-card{background:var(--accent);color:var(--accent-ink);border-radius:var(--r-lg);padding:26px;position:sticky;top:92px;}
.side-card h3{color:var(--accent-ink);font-size:1.2rem;margin-bottom:8px;}
.side-card p{font-size:.9rem;color:color-mix(in srgb,var(--accent-ink) 78%,transparent);margin-bottom:18px;line-height:1.6;}
.side-card label{color:var(--accent-ink);}
.side-card .input{background:color-mix(in srgb,var(--accent-ink) 96%,transparent);color:#131711;border-color:transparent;}
.side-card .input::placeholder{color:#7a8174;}
.side-card .btn{background:var(--accent-ink);color:var(--accent);}
.side-card .btn:hover{background:color-mix(in srgb,var(--accent-ink) 88%,var(--accent));}
.side-card .err{color:#ffd9d2;}

/* =========================================================
   JOIN + CERTIFICATES
   ========================================================= */
.join{max-width:600px;margin-inline:auto;padding-block:clamp(44px,6vw,76px) clamp(64px,9vw,110px);}
.join-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(26px,4vw,42px);}

.pass{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,52px);align-items:start;padding-block:clamp(40px,6vw,68px) 0;}
@media (max-width:900px){ .pass{grid-template-columns:1fr;} }
.stats{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:24px;}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;}
.stat.wide{grid-column:span 2;}
.stat .ic{font-size:1.4rem;color:var(--accent);margin-bottom:10px;display:block;}
.stat b{font-family:var(--font-display);font-size:1.9rem;font-weight:700;letter-spacing:-.03em;display:block;line-height:1.1;}
.press{display:flex;align-items:center;gap:16px;margin-top:14px;padding:20px 22px;background:var(--accent);color:var(--accent-ink);border-radius:var(--r-lg);}
.press .ic{font-size:1.7rem;flex-shrink:0;}
.press b{font-family:var(--font-display);font-size:1.1rem;font-weight:700;display:block;}
.press span{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.11em;text-transform:uppercase;opacity:.76;}

.cert{
  background:var(--surface-hi);border:1px solid var(--line-strong);border-radius:var(--r-lg);
  padding:clamp(30px,4vw,52px);text-align:center;position:relative;overflow:hidden;
}
.cert::before{
  content:"";position:absolute;inset:12px;border:1px solid var(--line);border-radius:4px;pointer-events:none;
}
.cert > *{position:relative;}
.cert .seal{font-size:2.4rem;color:var(--accent);margin-bottom:14px;display:block;}
.cert h2{font-size:clamp(1.3rem,2.6vw,1.75rem);margin-bottom:22px;}
.cert .said{font-size:.88rem;color:var(--ink-3);margin-bottom:12px;}
.cert .who{
  font-family:var(--font-display);font-size:clamp(1.5rem,3.4vw,2.1rem);font-weight:700;
  letter-spacing:-.03em;padding-bottom:12px;margin-bottom:14px;
  border-bottom:1px solid var(--ink);display:inline-block;padding-inline:24px;
}
.cert .for{font-size:.94rem;color:var(--ink-2);max-width:36ch;margin:0 auto 26px;line-height:1.6;}
.cert .track-name{font-family:var(--font-display);font-size:1.3rem;font-weight:700;color:var(--accent);margin-bottom:28px;letter-spacing:-.02em;}
.cert-foot{display:flex;justify-content:space-between;gap:20px;padding-top:16px;border-top:1px solid var(--line);text-align:left;}
.cert-foot .r{text-align:right;}
.cert-foot b{display:block;font-family:var(--font-mono);font-size:.82rem;font-weight:500;color:var(--ink);margin-top:3px;}

.cert-page{max-width:720px;margin-inline:auto;padding-block:clamp(36px,5vw,60px) clamp(64px,9vw,110px);}
.cert-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:30px;}

/* =========================================================
   FOOTER
   ========================================================= */
.foot{background:var(--paper-sunk);border-top:1px solid var(--line);padding-block:clamp(44px,6vw,66px) 28px;margin-top:0;}
.foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:36px;padding-bottom:38px;}
.foot-brand p{font-size:.9rem;color:var(--ink-2);max-width:34ch;margin-top:10px;}
.foot h4{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);font-weight:500;margin-bottom:14px;}
.foot li{margin-bottom:9px;}
.foot li a{font-size:.9rem;color:var(--ink-2);transition:color var(--dur) var(--ease);}
.foot li a:hover{color:var(--accent);}
.foot-bottom{
  display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  padding-top:22px;border-top:1px solid var(--line);
}
.foot-bottom p{font-size:.82rem;color:var(--ink-3);}
.theme{display:flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface);}
.theme button{
  font-family:var(--font-mono);font-size:.66rem;letter-spacing:.09em;text-transform:uppercase;
  padding:6px 12px;border-radius:var(--r-full);color:var(--ink-3);
  transition:background var(--dur) var(--ease),color var(--dur) var(--ease);
}
.theme button:hover{color:var(--ink);}
.theme button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);}
@media (max-width:760px){ .foot-top{grid-template-columns:1fr 1fr;} .foot-brand{grid-column:span 2;} }

/* ---------- toast ---------- */
.toast{
  position:fixed;right:20px;bottom:20px;z-index:var(--z-toast);max-width:340px;
  background:var(--ink);color:var(--paper);border-radius:var(--r-lg);
  padding:15px 18px;box-shadow:var(--shadow-lg);
  transform:translateY(150%);opacity:0;pointer-events:none;
  transition:transform .38s var(--ease),opacity .38s var(--ease);
}
.toast.show{transform:none;opacity:1;}
.toast h4{font-size:.9rem;color:var(--paper);margin-bottom:3px;}
.toast p{font-size:.85rem;opacity:.76;line-height:1.5;}
@media (max-width:520px){ .toast{left:16px;right:16px;max-width:none;} }

/* ---------- print: certificates only ---------- */
@media print{
  .grain,.nav,.nav-panel,.foot,.toast,.skip,.cert-actions,.crumb{display:none !important;}
  body{background:#fff;color:#000;}
  .page{display:none !important;}
  .page.active{display:block !important;animation:none;}
  .pass{grid-template-columns:1fr;}
  .stats,.press,.pass > div:first-child{display:none !important;}
  .cert{border:1px solid #000;box-shadow:none;page-break-inside:avoid;}
  .reveal{opacity:1 !important;transform:none !important;}
}

/* =========================================================
   TEAM
   ========================================================= */
.team{padding-bottom:clamp(36px,5vw,56px);}
.team .h-lg{margin-bottom:20px;}
.team-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;max-width:820px;}
.person{display:flex;align-items:center;gap:18px;padding:22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);}
.avatar{width:68px;height:68px;flex-shrink:0;display:grid;place-items:center;border-radius:18px;
  background:var(--accent-wash);border:1px solid var(--accent-edge);color:var(--accent);
  font-family:var(--font-display);font-weight:700;font-size:1.35rem;letter-spacing:-.02em;}
.avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit;}
.person h3{font-size:1.15rem;margin-bottom:5px;}
.person .role{font-family:var(--font-mono);font-size:.74rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2);}
.team-contact{padding-top:28px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px;}

/* =========================================================
   SIGN UP AND LOG IN
   ========================================================= */
.auth-wrap{max-width:460px;margin-inline:auto;padding-block:clamp(40px,6vw,72px) clamp(56px,8vw,96px);}
.auth-head{align-items:center;text-align:center;padding-top:0;}
.auth-head .lede{text-align:center;}
.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(22px,4vw,34px);display:flex;flex-direction:column;gap:18px;}
/* Google's own button spec: neutral fill, grey stroke, the four-colour G */
.btn-google{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;
  padding:12px 18px;border-radius:var(--r-md);border:1px solid #747775;background:#ffffff;color:#1f1f1f;
  font-family:var(--font-text);font-weight:600;font-size:.94rem;
  transition:background var(--dur) var(--ease),box-shadow var(--dur) var(--ease);}
.btn-google:hover{background:#f7f8f8;box-shadow:var(--shadow-sm);}
.btn-google:active{background:#eef0f1;}
.btn-google .g-logo{width:18px;height:18px;flex-shrink:0;}
.btn-google.is-busy{opacity:.65;pointer-events:none;}
:root[data-theme="dark"] .btn-google{background:#131314;border-color:#8e918f;color:#e3e3e3;}
:root[data-theme="dark"] .btn-google:hover{background:#1f1f20;}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .btn-google{background:#131314;border-color:#8e918f;color:#e3e3e3;}
  :root:not([data-theme="light"]) .btn-google:hover{background:#1f1f20;}
}
.auth-or{display:flex;align-items:center;gap:12px;color:var(--ink-3);font-size:.8rem;}
.auth-or::before,.auth-or::after{content:"";flex:1;height:1px;background:var(--line);}
.label-row{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.text-btn{font-size:.82rem;font-weight:600;color:var(--accent);padding:2px 0;border-bottom:1px solid transparent;transition:border-color var(--dur) var(--ease);}
.text-btn:hover{border-bottom-color:var(--accent);}
.form-error{font-size:.86rem;line-height:1.5;color:var(--bad);background:var(--bad-wash);
  border:1px solid color-mix(in srgb,var(--bad) 34%,transparent);border-radius:var(--r-md);padding:10px 12px;margin-bottom:14px;}
.auth-note{display:flex;gap:10px;align-items:flex-start;font-size:.84rem;line-height:1.5;color:var(--ink-2);
  background:var(--accent-wash);border:1px solid var(--accent-edge);border-radius:var(--r-md);padding:10px 12px;}
.auth-note .ic{color:var(--accent);margin-top:2px;font-size:1rem;}
.auth-legal{font-size:.8rem;color:var(--ink-3);text-align:center;line-height:1.55;}
.auth-legal a,.auth-switch a{color:var(--accent);font-weight:600;}
.auth-switch{text-align:center;margin-top:18px;font-size:.9rem;color:var(--ink-2);}

/* ---------- account menu ---------- */
.nav-account{display:flex;align-items:center;gap:6px;}
.acct{position:relative;}
.acct-btn{display:grid;place-items:center;padding:2px;border-radius:var(--r-full);border:1px solid var(--line-strong);transition:border-color var(--dur) var(--ease);}
.acct-btn:hover,.acct-btn[aria-expanded="true"]{border-color:var(--accent);}
.avatar-sm{width:32px;height:32px;border-radius:var(--r-full);display:grid;place-items:center;overflow:hidden;
  background:var(--accent);color:var(--accent-ink);font-family:var(--font-display);font-weight:700;font-size:.8rem;}
.avatar-sm img{width:100%;height:100%;object-fit:cover;}
.acct-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:236px;max-width:300px;z-index:var(--z-panel);
  background:var(--surface-hi);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:6px;}
.acct-who{padding:10px 12px 12px;border-bottom:1px solid var(--line);margin-bottom:4px;display:flex;flex-direction:column;gap:2px;min-width:0;}
.acct-who b{font-size:.92rem;}
.acct-who span{font-size:.8rem;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.acct-menu [role="menuitem"]{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border-radius:var(--r-md);font-size:.88rem;color:var(--ink);text-align:left;}
.acct-menu [role="menuitem"]:hover,.acct-menu [role="menuitem"]:focus-visible{background:var(--accent-wash);}
.acct-menu .ic{color:var(--ink-3);}

/* ---------- progress on course cards and in the course ---------- */
.ccard{position:relative;overflow:hidden;}
.cc-bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--line);}
.cc-bar span{display:block;height:100%;background:var(--accent);}
.ccard.is-done .cc-cta{color:var(--ok);}
.cd-passed{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;font-size:.84rem;color:var(--ok);font-weight:600;}

/* =========================================================
   MY LEARNING
   ========================================================= */
.guest-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  padding:20px 22px;margin-bottom:28px;background:var(--accent-wash);border:1px solid var(--accent-edge);border-radius:var(--r-lg);}
.guest-banner p{font-size:.9rem;color:var(--ink-2);margin-top:4px;max-width:52ch;}
.guest-cta{display:flex;gap:10px;flex-wrap:wrap;}
.ln-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:34px;}
.ln-stats:empty,.ln-section:empty{display:none;}
.ln-section{margin-bottom:38px;}
.ln-section .h-md{margin-bottom:16px;}
.ln-certs{display:flex;flex-direction:column;gap:12px;}
.cert-row{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
  padding:18px 20px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);}
.cert-row-main{display:flex;flex-direction:column;gap:6px;min-width:0;}
.cert-row h3{font-size:1.02rem;line-height:1.3;}
.cert-row-cta{display:flex;gap:8px;flex-wrap:wrap;}
.ln-account{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:22px;border-top:1px solid var(--line);}
@media (max-width:640px){ .ln-stats{grid-template-columns:1fr;} }

/* ---------- course page on phones and small tablets: stack, with a compact lesson list ---------- */
@media (max-width:860px){
  .cd-grid{grid-template-columns:minmax(0,1fr);gap:22px;}
  .cd-side{position:static;}
  .cd-list{max-height:232px;}
  .cd-panel{padding:22px 18px;}
}
