/* ============================================================
   human-analyzer — standalone showcase
   No external fonts, no CDN, no chart library. Pure SVG + CSS + vanilla JS.
   Design tokens are shadcn-inspired: a slate-950 dark surface, HSL-derived
   accents, and a per-framework hue so the whole site is colour-coded by domain.
   ============================================================ */
:root{
  /* neutral surface — shadcn slate-950 family */
  --bg:#070b16;
  --bg-2:#0b1120;
  --panel:rgba(20,28,48,.62);
  --panel-solid:#121a2e;
  --stroke:rgba(120,150,210,.16);
  --stroke-2:rgba(120,150,210,.28);
  --txt:#e8edf9;
  --txt-dim:#9aa6c4;
  --txt-faint:#6b779a;
  /* per-FRAMEWORK accents — one hue per framework (colour-coded by domain). */
  --mat:#d97706;       /* amber   — MAT  (Materials · ingest) */
  --psy:#8b5cf6;       /* violet  — PSY  (Psychology · clinical) */
  --cre:#ec4899;       /* rose    — CRE  (Content · create) */
  --gro:#10b981;       /* emerald — GRO  (Growth · trajectory) */
  --evl:#0ea5e9;       /* sky     — EVL  (Evaluation · score) */
  --orc:#6366f1;       /* indigo  — ORC  (Orchestration · the bus) */
  --com:#64748b;       /* slate   — COM  (Common · utility) */
  /* functional accents for meta / reference guides (var names kept stable so the
     reused component library maps cleanly). */
  --spec:#38bdf8;      /* cyan    — cheatsheet / spec */
  --rel:#34d399;       /* emerald — glossary / relations */
  --crit:#fb5e7e;      /* rose    — gates / privacy (danger) */
  --tel:#a78bfa;       /* violet  — architecture / distribution (telemetry) */
  --gold:#fbbf24;      /* gold    — journey / catalog / finder (highlight) */
  --ok:#34d399; --warn:#fbbf24; --bad:#fb5e7e;
  --r:18px;
  --radius:.6rem;      /* shadcn-style radius alias */
  --maxw:1120px;
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scrollbar-gutter:stable;background:#070b16;color-scheme:dark}/* reserve scrollbar space so short<->tall pages don't shift horizontally; dark canvas + color-scheme kill the white flash between page navigations */
body{
  margin:0;background:var(--bg);color:var(--txt);
  font-family:"Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,Helvetica,Arial,system-ui,sans-serif;
  /* overflow-x:clip (not hidden) — clip horizontal overflow WITHOUT making <body> a
     scroll container, which would make the sticky sidebar + TOC jitter on scroll. */
  line-height:1.6;overflow-x:clip;-webkit-font-smoothing:antialiased;
}
/* bilingual toggle: hide the other language */
body.lang-en .vi{display:none !important}
body.lang-vi .en{display:none !important}

a{color:var(--spec);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{line-height:1.18;margin:0 0 .4em;font-weight:700;letter-spacing:-.01em}
code,.mono{font-family:"JetBrains Mono","SF Mono",ui-monospace,Menlo,Consolas,monospace}
code{background:rgba(120,150,210,.12);padding:.12em .42em;border-radius:6px;font-size:.86em;color:#cfe3ff;border:1px solid var(--stroke)}
section{position:relative;padding:96px 24px;}
.wrap{max-width:var(--maxw);margin:0 auto;position:relative;z-index:2}
.eyebrow{display:inline-block;font-size:.74rem;letter-spacing:.28em;text-transform:uppercase;font-weight:700;color:var(--txt-faint);margin-bottom:14px}
.lead{font-size:1.12rem;color:var(--txt-dim);max-width:62ch}
.muted{color:var(--txt-dim)}
.faint{color:var(--txt-faint)}

/* ---- background mesh ---- */
.bgfx{position:fixed;inset:0;z-index:0;pointer-events:none}
#net{position:fixed;inset:0;z-index:0;opacity:.55}
.glow{position:fixed;border-radius:50%;filter:blur(120px);opacity:.32;z-index:0;pointer-events:none}
.glow.g1{width:560px;height:560px;background:#1d4ed8;top:-160px;left:-120px}
.glow.g2{width:520px;height:520px;background:#7c3aed;top:38%;right:-180px}
.glow.g3{width:480px;height:480px;background:#0f766e;bottom:-160px;left:30%}
/* frosted-glass panels over the 3D hero — translucent --panel surfaces get a blur
   so the animated background reads through them as glass. Layout unchanged.
   Blur kept small (3px): a larger radius samples the bright constellation past the
   card edge and paints a visible halo ring just inside the border (a double-border look). */
.card,.callout,.honest,.stat,.faq details,.cs-more,.wu,.hero-ex{
  -webkit-backdrop-filter:blur(3px) saturate(115%); backdrop-filter:blur(3px) saturate(115%)}

/* ===================== NAV ===================== */
/* The top bar is .app-header (styled below); the only <nav> on a page is the right-rail
   TOC, which must stay fully transparent over the 3D background and carry no blur of its
   own (a blur here repaints every scroll frame and reads as jitter). So: no bare nav{} rule. */
.nav-in{max-width:var(--maxw);margin:0 auto;display:flex;align-items:center;gap:18px;padding:12px 24px}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:-.02em}
.brand .dot{width:11px;height:11px;border-radius:50%;background:conic-gradient(from 0deg,var(--spec),var(--rel),var(--crit),var(--tel),var(--spec));box-shadow:0 0 14px var(--spec)}
.nav-links{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
.nav-links a{color:var(--txt-dim);font-size:.86rem;font-weight:600;padding:7px 11px;border-radius:9px;transition:.2s}
.nav-links a:hover{color:var(--txt);background:rgba(120,150,210,.12);text-decoration:none}
.langtoggle{display:flex;border:1px solid var(--stroke-2);border-radius:10px;overflow:hidden;font-weight:700;font-size:.8rem}
.langtoggle button{background:transparent;color:var(--txt-faint);border:0;padding:7px 12px;cursor:pointer;transition:.2s;font-family:inherit}
.langtoggle button.active{background:linear-gradient(135deg,var(--spec),#6366f1);color:#04122a}
@media(max-width:820px){.nav-links{display:none}}

/* ===================== HERO ===================== */
.hero{padding:120px 24px 80px;text-align:center;overflow:hidden}
.hero h1{font-size:clamp(2.5rem,7vw,4.6rem);margin-bottom:.2em;font-weight:800;letter-spacing:-.03em}
.hero h1 .grad{background:linear-gradient(110deg,var(--spec) 5%,#818cf8 40%,var(--crit) 70%,var(--gold) 98%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.verbs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:22px 0 8px}
.verbs span{font-size:.84rem;font-weight:700;letter-spacing:.04em;padding:6px 14px;border-radius:999px;border:1px solid var(--stroke-2);color:var(--txt-dim);background:var(--panel)}
.verbs span b{color:var(--txt)}
.hero .lead{margin:18px auto 0;text-align:center;font-size:1.16rem}
.hero-badges{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:38px}
.sb{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:14px;border:1px solid var(--stroke);background:var(--panel);min-width:200px;text-align:left;transition:.25s var(--ease)}
.sb:hover{transform:translateY(-4px);border-color:var(--ac)}
.sb .ic{width:34px;height:34px;flex:none}
.sb .nm{font-weight:800;font-size:.94rem}
.sb .vr{font-size:.74rem;color:var(--txt-faint);font-family:monospace}
.sb .ac-dot{width:8px;height:8px;border-radius:50%;background:var(--ac);box-shadow:0 0 10px var(--ac);margin-left:auto}
.scroll-cue{margin-top:54px;display:inline-flex;flex-direction:column;align-items:center;gap:6px;color:var(--txt-faint);font-size:.76rem;letter-spacing:.2em;text-transform:uppercase}
.scroll-cue .arrow{width:22px;height:22px;border-right:2px solid var(--txt-faint);border-bottom:2px solid var(--txt-faint);transform:rotate(45deg);animation:bob 1.8s var(--ease) infinite}
@keyframes bob{0%,100%{transform:rotate(45deg) translate(0,0);opacity:.4}50%{transform:rotate(45deg) translate(4px,4px);opacity:1}}

/* ===================== PIPELINE ===================== */
.pipe-stage{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:30px}
.pstation{position:relative;padding:20px 16px;border-radius:16px;border:1px solid var(--stroke);background:var(--panel);overflow:hidden;transition:.3s var(--ease)}
.pstation:hover{transform:translateY(-5px);border-color:var(--ac);box-shadow:0 18px 40px -22px var(--ac)}
.pstation::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 80% at 50% 0,var(--ac),transparent 60%);opacity:.10}
.pstation .num{font-family:monospace;font-size:.72rem;color:var(--ac);font-weight:700;letter-spacing:.1em}
.pstation h4{margin:8px 0 4px;font-size:1.02rem}
.pstation p{font-size:.82rem;color:var(--txt-dim);margin:0}
.pstation .role{display:inline-block;margin-top:10px;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--txt-faint);font-weight:700}
@media(max-width:820px){.pipe-stage{grid-template-columns:1fr 1fr}}
.pipe-upstream{display:flex;flex-wrap:wrap;align-items:center;gap:9px 14px;margin-top:24px;padding:12px 16px;border:1px dashed var(--stroke);border-radius:14px;opacity:.68}
.pipe-upstream .up-tag{flex:none;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--txt-faint);font-weight:700;border:1px solid var(--stroke);border-radius:999px;padding:3px 10px}
.pipe-upstream .up-chips{display:flex;flex-wrap:wrap;gap:6px}
.pipe-upstream .up-chips code{font-size:.76rem;color:var(--txt-dim);background:var(--panel);border:1px solid var(--stroke);border-radius:7px;padding:2px 8px}
.pipe-upstream .up-note{flex:1 1 240px;min-width:200px;margin:0;font-size:.78rem;color:var(--txt-faint)}
.loopnote{margin-top:14px;display:flex;align-items:center;gap:10px;justify-content:center;font-size:.84rem;color:var(--txt-dim)}
.loopnote svg{flex:none}

/* ===================== SKILL SECTIONS ===================== */
.skill-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:8px}
.skill-head .badge{flex:none;width:64px;height:64px;border-radius:18px;display:grid;place-items:center;border:1px solid var(--stroke-2);background:var(--panel)}
.skill-head .ttl h2{margin:0;font-size:clamp(1.7rem,3.6vw,2.5rem)}
.skill-head .ttl .who{font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ac)}
.skill-head .ver{margin-left:auto;font-family:monospace;font-size:.8rem;color:var(--txt-faint);border:1px solid var(--stroke);border-radius:999px;padding:5px 12px;align-self:center}
.divider{height:1px;background:linear-gradient(90deg,transparent,var(--ac),transparent);opacity:.4;margin:0 0 34px}

.cards{display:grid;gap:16px}
.grid-2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:860px){.grid-2,.grid-3{grid-template-columns:1fr}}
.card{background:var(--panel);border:1px solid var(--stroke);border-radius:var(--r);padding:22px;position:relative;transition:.3s var(--ease)}
.card:hover{border-color:var(--stroke-2)}
.card h3{font-size:1.06rem;display:flex;align-items:center;gap:9px}
.card h3 .pin{width:9px;height:9px;border-radius:3px;background:var(--ac)}
.card p{font-size:.9rem;color:var(--txt-dim);margin:.3em 0 0}

/* flag chips */
.chipgroup{margin-top:8px}
.chipgroup h4{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-faint);margin:18px 0 9px}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{font-family:monospace;font-size:.78rem;padding:6px 11px;border-radius:9px;border:1px solid var(--stroke);background:rgba(120,150,210,.06);color:#cfe0ff;transition:.18s;cursor:default}
.chip:hover{border-color:var(--ac);color:#fff;transform:translateY(-2px);box-shadow:0 8px 18px -10px var(--ac)}
.chip .x{color:var(--txt-faint)}

/* spec hierarchy tree (reused for standards / DEC) */
.tree{display:flex;flex-direction:column;gap:0;margin-top:6px}
.tnode{display:flex;align-items:center;gap:14px;padding:12px 16px;border-radius:13px;border:1px solid var(--stroke);background:var(--panel-solid);position:relative;transition:.3s var(--ease)}
.tnode:hover{transform:translateX(6px);border-color:var(--spec)}
.tnode .tg{font-family:monospace;font-size:.7rem;font-weight:700;padding:4px 9px;border-radius:7px;letter-spacing:.06em;flex:none}
.tnode .tt{font-weight:700;font-size:.96rem}
.tnode .td{font-size:.8rem;color:var(--txt-dim)}
.tnode .cnt{margin-left:auto;font-size:.72rem;color:var(--txt-faint);font-family:monospace}
.tconn{height:20px;width:2px;margin-left:32px;background:linear-gradient(180deg,var(--spec),transparent)}
.lvl-v{--c:#818cf8}.lvl-b{--c:#38bdf8}.lvl-p{--c:#22d3ee}.lvl-e{--c:#2dd4bf}.lvl-s{--c:#34d399}
.tnode .tg{background:color-mix(in srgb,var(--c) 18%,transparent);color:var(--c);border:1px solid color-mix(in srgb,var(--c) 40%,transparent)}

/* views grid */
.views{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;margin-top:6px}
.view{padding:11px 10px;border-radius:11px;border:1px solid var(--stroke);background:var(--panel-solid);text-align:center;font-size:.78rem;font-weight:600;color:var(--txt-dim);transition:.2s;cursor:default;position:relative}
.view:hover{color:#fff;border-color:var(--spec);transform:translateY(-3px);background:rgba(56,189,248,.08)}
.view .vt{display:block;font-size:.62rem;color:var(--txt-faint);font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:3px}

/* gate cards + verdict triple */
.gate{border-left:3px solid var(--gold);background:linear-gradient(90deg,rgba(251,191,36,.08),transparent);border-radius:0 13px 13px 0;padding:16px 18px;margin-top:12px}
.gate b{color:var(--gold)}
.tri{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.tri span{font-size:.76rem;padding:5px 12px;border-radius:8px;border:1px solid var(--stroke-2);font-weight:700}
.tri .keep{color:var(--ok);border-color:rgba(52,211,153,.4)}
.tri .change{color:var(--warn);border-color:rgba(251,191,36,.4)}
.tri .hybrid{color:var(--bad);border-color:rgba(251,94,126,.4)}

/* ===== four-lens / quad grid ===== */
.lenses{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:6px}
@media(max-width:860px){.lenses{grid-template-columns:1fr 1fr}}
.lens{padding:18px 15px;border-radius:15px;border:1px solid var(--stroke);background:var(--panel);position:relative;overflow:hidden;transition:.3s var(--ease)}
.lens:hover{transform:translateY(-5px)}
.lens .lic{width:40px;height:40px;margin-bottom:10px}
.lens h4{margin:0 0 4px;font-size:1rem}
.lens .fw{font-size:.74rem;color:var(--txt-faint);font-family:monospace;line-height:1.5}
.lens.p{--lc:#f472b6}.lens.t{--lc:#fb923c}.lens.m{--lc:#facc15}.lens.c{--lc:#a78bfa}
.lens::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--lc)}

/* autonomy dial (reused voice-dial chrome) */
.dial-wrap{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;align-items:stretch;margin-top:6px}
@media(max-width:860px){.dial-wrap{grid-template-columns:1fr}}
.dial-readout{border:1px solid var(--stroke);border-radius:15px;padding:20px;background:var(--panel);-webkit-backdrop-filter:blur(3px) saturate(115%);backdrop-filter:blur(3px) saturate(115%);min-height:180px;display:flex;flex-direction:column;justify-content:center}
.dial-readout .lv{font-size:2.2rem;font-weight:800;font-family:monospace;line-height:1;margin-bottom:12px}
.dial-readout .nm{font-weight:800;font-size:1.05rem;margin:.2em 0}
.dial-readout .ds{font-size:.86rem;color:var(--txt-dim)}
.dial-readout .alias{font-family:monospace;font-size:.74rem;color:var(--rel)}
.dangertag{display:inline-block;align-self:flex-start;margin-top:10px;font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:4px 10px;border-radius:7px}
.dangertag.safe{color:var(--ok);background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.3)}
.dangertag.danger{color:var(--bad);background:rgba(251,94,126,.12);border:1px solid rgba(251,94,126,.35)}

.floor{margin-top:16px;border:1px dashed rgba(251,94,126,.4);border-radius:13px;padding:14px 18px;background:rgba(251,94,126,.05)}
.floor b{color:var(--crit)}

/* ===== flow steps (per-phase loop / hard-mode pipeline) ===== */
.flowline{display:flex;align-items:stretch;gap:0;margin-top:8px;flex-wrap:wrap}
.fstep{flex:1;min-width:120px;border:1px solid var(--stroke);background:var(--panel);border-radius:13px;padding:14px 12px;text-align:center;position:relative;transition:.3s var(--ease)}
.fstep:hover{border-color:var(--ac,var(--rel));transform:translateY(-4px)}
.fstep .fi{width:30px;height:30px;margin:0 auto 8px}
.fstep .fn{font-weight:700;font-size:.84rem}
.fstep .fd{font-size:.7rem;color:var(--txt-faint);margin-top:2px}
.farrow{display:flex;align-items:center;color:var(--ac,var(--rel));font-size:1.2rem;padding:0 2px}
@media(max-width:780px){.farrow{transform:rotate(90deg)}}
.drop-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.drop-list .d{font-family:monospace;font-size:.76rem;padding:5px 11px;border-radius:8px;border:1px solid rgba(251,94,126,.3);background:rgba(251,94,126,.07);color:#ffb3c2}
.drop-list .d::before{content:"⊘ ";color:var(--crit)}
.deterministic{display:flex;gap:18px;flex-wrap:wrap;margin-top:8px}
.deterministic .dt{font-family:monospace;font-size:.78rem;color:var(--txt-dim);padding:6px 12px;border-radius:8px;background:var(--panel-solid);border:1px solid var(--stroke)}
.deterministic .dt b{color:var(--rel)}

/* ===== three-tier hooks ===== */
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:6px}
@media(max-width:780px){.tiers{grid-template-columns:1fr}}
.tier{border:1px solid var(--stroke);border-radius:15px;padding:18px;background:var(--panel-solid);position:relative;overflow:hidden;transition:.3s var(--ease)}
.tier:hover{transform:translateY(-4px);border-color:var(--tc)}
.tier::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--tc)}
.tier .tn{font-family:monospace;font-weight:800;font-size:.92rem;color:var(--tc)}
.tier .tdf{display:inline-block;margin:8px 0;font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:3px 9px;border-radius:7px;border:1px solid var(--stroke-2);color:var(--txt-dim)}
.tier .tx{font-size:.82rem;color:var(--txt-dim)}
.tier.telemetry{--tc:#a78bfa}.tier.nudge{--tc:#fbbf24}.tier.compliance{--tc:#fb5e7e}

/* lens grid (telemetry) */
.lensgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:6px}
@media(max-width:860px){.lensgrid{grid-template-columns:repeat(2,1fr)}}
.lcell{padding:13px 12px;border-radius:12px;border:1px solid var(--stroke);background:var(--panel-solid);transition:.2s;position:relative}
.lcell:hover{border-color:var(--tel);background:rgba(167,139,250,.07);transform:translateY(-3px)}
.lcell .ln{font-family:monospace;font-weight:700;font-size:.82rem;color:var(--tel)}
.lcell .lds{font-size:.72rem;color:var(--txt-faint);margin-top:3px}
.lcell.absent{opacity:.55}
.lcell.absent .ln{color:var(--txt-faint)}
.bars{margin-top:8px}
.bar{display:flex;align-items:center;gap:10px;margin:8px 0;font-size:.82rem}
.bar .bl{width:150px;font-family:monospace;color:var(--txt-dim);flex:none}
.bar .bt{flex:1;height:12px;border-radius:999px;background:rgba(120,150,210,.12);overflow:hidden}
.bar .bf{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--tel),#6366f1);width:0;transition:width 1.1s var(--ease)}
.bar .bv{font-family:monospace;color:var(--txt-faint);width:46px;text-align:right;flex:none;font-size:.78rem}
.honest{margin-top:16px;border:1px solid rgba(167,139,250,.3);border-radius:13px;padding:16px 18px;background:rgba(167,139,250,.05)}
.honest .h{font-weight:800;color:var(--tel);display:flex;align-items:center;gap:8px}
.honest ul{margin:.5em 0 0;padding-left:1.1em;font-size:.86rem;color:var(--txt-dim)}

/* state machine row (claims FSM) */
.fsm{display:flex;align-items:center;gap:0;flex-wrap:wrap;margin-top:6px}
.fsm .st{font-family:monospace;font-weight:700;font-size:.8rem;padding:8px 13px;border-radius:10px;border:1px solid var(--stroke-2);background:var(--panel-solid);color:var(--txt)}
.fsm .st.free{color:var(--txt-dim)}
.fsm .st.claimed{color:var(--rel);border-color:rgba(52,211,153,.4)}
.fsm .st.reclaim{color:var(--gold);border-color:rgba(251,191,36,.4)}
.fsm .ar{color:var(--tel);padding:0 8px;font-family:monospace;font-size:.72rem;display:flex;flex-direction:column;align-items:center}
.fsm .ar small{color:var(--txt-faint);font-size:.6rem}
@media(max-width:680px){.fsm{flex-direction:column;align-items:stretch}.fsm .ar{transform:rotate(90deg)}}

/* ===== the rig ===== */
.rig{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:8px}
@media(max-width:860px){.rig{grid-template-columns:1fr}}
.rcell{border:1px solid var(--stroke);border-radius:15px;padding:18px;background:var(--panel)}
.rcell .rt{font-weight:800;font-size:.96rem;display:flex;align-items:center;gap:9px}
.rcell .rn{font-family:monospace;font-size:.72rem;color:var(--gold);background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:7px;padding:2px 8px;margin-left:auto}
.rcell ul{margin:.6em 0 0;padding-left:1.05em;font-size:.84rem;color:var(--txt-dim)}
.rcell code{font-size:.76rem}

/* feature stat strip */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:30px}
@media(max-width:780px){.stats{grid-template-columns:1fr 1fr}}
.stat{text-align:center;padding:20px 14px;border-radius:15px;border:1px solid var(--stroke);background:var(--panel)}
.stat .n{font-size:2.4rem;font-weight:800;font-family:monospace;background:linear-gradient(120deg,var(--spec),var(--tel));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;line-height:1}
.stat .l{font-size:.78rem;color:var(--txt-dim);margin-top:6px}

/* reveal animation */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* footer */
footer{padding:60px 24px 50px;border-top:1px solid var(--stroke);background:var(--bg-2);position:relative;z-index:2}
.foot-in{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:30px}
@media(max-width:780px){.foot-in{grid-template-columns:1fr}}
footer h4{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-faint)}
footer a{color:var(--txt-dim);display:block;font-size:.88rem;padding:3px 0}
footer a:hover{color:var(--spec)}
.lic{font-size:.82rem;color:var(--txt-faint);margin-top:14px;max-width:46ch}
.sectitle{font-size:clamp(1.5rem,3.2vw,2.1rem);margin-bottom:10px}
/* breathing room between sections on detail pages. Sections start with either an
   .eyebrow (Step N) or the .sectitle directly; give whichever leads the gap, and
   collapse it when a sectitle follows its own eyebrow so the pair stays tight. */
body.view-guide .sectitle,body.view-guide .eyebrow{margin-top:48px}
body.view-guide .eyebrow+.sectitle{margin-top:6px}
.callout{display:flex;gap:14px;align-items:flex-start;padding:16px 18px;border-radius:13px;border:1px solid var(--stroke);background:var(--panel);margin-top:16px}
.callout .ci{font-size:1.4rem;flex:none}

/* ===================== MULTIPAGE / ROUTER CHROME ===================== */
[hidden]{display:none !important}
.nav-links a.navlink.active{color:var(--txt);background:rgba(120,150,210,.16)}
/* breadcrumb on skill pages */
.crumb{max-width:var(--maxw);margin:0 auto;padding:16px 24px 0;display:flex;gap:9px;align-items:center;font-size:.82rem;color:var(--txt-faint)}
.crumb a{color:var(--txt-dim)}
.crumb a:hover{color:var(--spec)}
.crumb .sep{opacity:.55}
.crumb .cur{color:var(--txt);font-weight:600}
/* per-skill footer nav (prev · hub · next) */
.skill-nav{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:40px;margin-bottom:64px;padding-top:26px;border-top:1px solid var(--stroke)}
.skill-nav a{flex:1;border:1px solid var(--stroke);background:var(--panel);border-radius:13px;padding:14px 16px;transition:.25s var(--ease);color:var(--txt-dim)}
.skill-nav a:hover{border-color:var(--ac,var(--spec));color:var(--txt);text-decoration:none;transform:translateY(-3px)}
.skill-nav a.nx{text-align:right}
.skill-nav a.hb{flex:0 0 auto;text-align:center;font-weight:700}
.skill-nav .k{display:block;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-faint);margin-bottom:3px}
.skill-nav .v{font-family:monospace;font-weight:700}
@media(max-width:680px){.skill-nav{flex-direction:column}.skill-nav a{width:100%}}

/* ===================== WORKED-EXAMPLE HEROES (per-skill pages) ===================== */
.hero-ex{border:1px solid var(--stroke-2);border-radius:18px;padding:24px;margin-top:18px;
  background:radial-gradient(120% 140% at 50% -10%,rgba(120,150,210,.07),transparent 60%),var(--panel)}
.hero-ex .xlabel{display:inline-flex;align-items:center;gap:8px;font-size:.7rem;font-weight:800;
  letter-spacing:.18em;text-transform:uppercase;color:var(--ac,var(--spec));margin-bottom:6px}
.hero-ex .xlabel::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ac,var(--spec));box-shadow:0 0 9px var(--ac,var(--spec))}
.realtag{display:inline-flex;align-items:center;gap:6px;font-size:.66rem;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;padding:4px 9px;border-radius:7px;color:var(--rel);background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.3)}
.realtag.sample{color:var(--gold);background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.3)}

/* "type this in Claude Code" line above a result terminal */
.cmdline{margin-top:12px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.84rem;color:var(--txt-faint)}
.cmdline code{font-size:.82rem;color:var(--txt);background:var(--panel);border:1px solid var(--stroke);border-radius:8px;padding:3px 9px}

/* terminal block for real captured stdout */
.term{margin-top:14px;border:1px solid var(--stroke);border-radius:13px;background:#05080f;overflow:hidden;box-shadow:0 16px 40px -28px #000}
.term .tbar{display:flex;align-items:center;gap:7px;padding:9px 13px;border-bottom:1px solid var(--stroke);background:rgba(120,150,210,.05)}
.term .tbar i{width:11px;height:11px;border-radius:50%;display:inline-block}
.term .tbar i:nth-child(1){background:#fb5e7e}.term .tbar i:nth-child(2){background:#fbbf24}.term .tbar i:nth-child(3){background:#34d399}
.term .tcmd{margin-left:8px;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.74rem;color:var(--txt-faint)}
.term pre{margin:0;padding:16px 18px;overflow:auto;max-height:480px;font-family:"JetBrains Mono",ui-monospace,monospace;
  font-size:.78rem;line-height:1.6;color:#cfe3ff;white-space:pre;tab-size:2}
.term pre::-webkit-scrollbar{height:9px;width:9px}.term pre::-webkit-scrollbar-thumb{background:var(--stroke-2);border-radius:9px}
.term pre b{color:#fff}
.term.blocked{box-shadow:0 16px 40px -28px #000,0 0 0 1px rgba(251,94,126,.3) inset}

/* live traceability walk (real pipeline ids) */
.walk{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:14px}
@media(max-width:860px){.walk{grid-template-columns:1fr 1fr}}
.wstep{border:1px solid var(--stroke);border-radius:12px;padding:13px;background:var(--panel-solid);cursor:default;transition:.25s var(--ease);position:relative}
.wstep:hover,.wstep.on{border-color:var(--c);transform:translateY(-3px);box-shadow:0 14px 30px -22px var(--c)}
.wstep .wtag{font-family:monospace;font-size:.64rem;font-weight:700;letter-spacing:.05em;color:var(--c);background:color-mix(in srgb,var(--c) 16%,transparent);border:1px solid color-mix(in srgb,var(--c) 38%,transparent);border-radius:6px;padding:3px 7px;display:inline-block}
.wstep .wt{font-weight:700;font-size:.84rem;margin-top:8px}
.wstep .wd{font-size:.72rem;color:var(--txt-dim);margin-top:3px}
.wstep.v{--c:#818cf8}.wstep.b{--c:#38bdf8}.wstep.p{--c:#22d3ee}.wstep.e{--c:#2dd4bf}.wstep.s{--c:#34d399}

/* autonomy stepper buttons (reused) */
.fstep-bar{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px}
.fstep-bar button{flex:1;min-width:90px;font-family:monospace;font-weight:700;font-size:.86rem;padding:11px 6px;border-radius:10px;
  border:1px solid var(--stroke);background:var(--panel-solid);color:var(--txt-dim);cursor:pointer;transition:.18s;position:relative}
.fstep-bar button:hover{color:#fff;border-color:var(--rel)}
.fstep-bar button.on{background:linear-gradient(135deg,var(--rel),#059669);color:#04221a;border-color:transparent}
.fstep-bar button.dgr::after{content:"!";position:absolute;top:3px;right:6px;font-size:.6rem;color:var(--gold)}

/* format tabs (telemetry: same lens, multiple formats) */
.fmt-tabs{display:flex;gap:6px;margin-top:14px;flex-wrap:wrap}
.fmt-tabs button{font-family:monospace;font-weight:700;font-size:.8rem;padding:9px 15px;border-radius:9px;
  border:1px solid var(--stroke);background:var(--panel-solid);color:var(--txt-dim);cursor:pointer;transition:.18s}
.fmt-tabs button:hover{color:#fff;border-color:var(--tel)}
.fmt-tabs button.on{background:linear-gradient(135deg,var(--tel),#6366f1);color:#fff;border-color:transparent}
.fmt-pane{display:none}.fmt-pane.on{display:block}

/* secret/kept strip (reused for safety filter on release-equiv & approval) */
.strip{display:grid;grid-template-columns:1fr;gap:10px;margin-top:14px}
.striprow{display:flex;align-items:center;gap:12px;padding:11px 15px;border-radius:11px;border:1px solid var(--stroke);background:var(--panel-solid);font-family:monospace;font-size:.82rem}
.striprow .fn{flex:1;color:var(--txt)}
.striprow .vb{font-size:.7rem;font-weight:700;letter-spacing:.06em;padding:3px 9px;border-radius:7px;flex:none}
.striprow.kept .vb{color:var(--ok);background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.3)}
.striprow.drop .vb{color:var(--bad);background:rgba(251,94,126,.12);border:1px solid rgba(251,94,126,.35)}
.striprow.drop .fn{color:var(--txt-faint);text-decoration:line-through}
.striprow .rule{font-size:.7rem;color:var(--txt-faint);flex:none}

/* when-to-use two-up */
.whenuse{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
@media(max-width:760px){.whenuse{grid-template-columns:1fr}}
.whenuse .wu{border:1px solid var(--stroke);border-radius:13px;padding:16px 18px;background:var(--panel)}
.whenuse .wu.yes{border-left:3px solid var(--ok)}
.whenuse .wu.no{border-left:3px solid var(--bad)}
.whenuse .wu h4{font-size:.82rem;letter-spacing:.04em;margin-bottom:8px}
.whenuse .wu.yes h4{color:var(--ok)}.whenuse .wu.no h4{color:var(--bad)}
.whenuse .wu ul{margin:0;padding-left:1.05em;font-size:.85rem;color:var(--txt-dim);line-height:1.7}

/* mode/profile table */
.modetable{width:100%;border-collapse:collapse;margin-top:14px;font-size:.86rem}
.modetable th,.modetable td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--stroke)}
.modetable th{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--txt-faint);font-weight:700}
.modetable td:first-child{font-family:monospace;font-weight:700;color:var(--ac,var(--spec))}
.modetable tr:hover td{background:rgba(120,150,210,.05)}

/* ===================== DOCS: SLIM HEADER ===================== */
:root{--hh:58px;--side-w:264px;--toc-w:212px}
.app-header{position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);
  background:linear-gradient(180deg,rgba(7,11,22,.92),rgba(7,11,22,.66));border-bottom:1px solid var(--stroke)}
.app-header-in{max-width:1280px;margin:0 auto;display:flex;align-items:center;gap:14px;padding:12px 24px}
.app-header .brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:-.02em;color:var(--txt)}
.app-header .brand:hover{text-decoration:none}
.app-header-right{margin-left:auto;display:flex;align-items:center;gap:12px}
.btn-guides{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:.86rem;color:var(--txt-dim);
  padding:8px 14px;border-radius:10px;border:1px solid var(--stroke-2);background:var(--panel);transition:.2s}
.btn-guides:hover{border-color:var(--spec);color:#fff;text-decoration:none;transform:translateY(-1px)}
.btn-guides.active{color:var(--txt);background:rgba(120,150,210,.16)}
.btn-guides svg{width:16px;height:16px;flex:none}
.side-toggle{display:none;align-items:center;justify-content:center;width:42px;height:42px;border-radius:10px;
  border:1px solid var(--stroke-2);background:var(--panel);color:var(--txt);cursor:pointer;flex:none}
.side-toggle svg{width:20px;height:20px}

/* ===================== DOCS: LAYOUT + SIDEBAR ===================== */
.docs-layout{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:var(--side-w) minmax(0,1fr);
  gap:36px;padding:0 24px;align-items:start}
.docs-side{position:sticky;top:var(--hh);align-self:start;max-height:calc(100dvh - var(--hh));
  overflow-y:auto;padding:24px 6px 48px}
.docs-side::-webkit-scrollbar{width:9px}.docs-side::-webkit-scrollbar-thumb{background:var(--stroke-2);border-radius:9px}
.docs-main{min-width:0}
/* right "On this page" TOC — built by showcase.js; the third column only
   appears when JS finds >=1 section heading (adds .has-toc) on a wide screen. */
.toc{display:none}
.toc .toc-h{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--txt-faint);
  font-weight:800;padding:0 10px 8px}
.toc a{display:block;padding:5px 10px;color:var(--txt-faint);border-left:2px solid var(--stroke);
  line-height:1.4;font-size:.82rem;transition:.15s}
.toc a:hover{color:var(--txt);text-decoration:none;border-left-color:var(--stroke-2)}
.toc a.active{color:var(--txt);border-left-color:var(--spec);font-weight:600}
@media(min-width:1201px){
  /* reserve the 3-column geometry for EVERY docs page (TOC column included) so the
     main content keeps one constant width — landing <-> guide navigation never jumps */
  .docs-layout{max-width:1340px;grid-template-columns:var(--side-w) minmax(0,1fr) var(--toc-w)}
  .docs-layout.has-toc .toc{display:block;position:sticky;top:var(--hh);align-self:start;
    max-height:calc(100dvh - var(--hh));overflow-y:auto;padding:24px 0 48px}
}
body.view-home .toc{display:none}
body.view-home .docs-layout{display:block;max-width:none;padding:0}
body.view-home .docs-side{display:none}
/* guides landing: per-category overview blocks */
.cat-ov{margin-top:32px}
.cat-ov .cat-intro{margin:2px 0 14px}
/* glossary: 4-column term table — top-aligned, definitions allowed to breathe */
.modetable.gloss{font-size:.83rem}
.modetable.gloss th,.modetable.gloss td{vertical-align:top;padding:10px 12px}
.modetable.gloss td:first-child{white-space:nowrap}
.modetable.gloss td:nth-child(2){color:var(--txt-dim);font-family:inherit;font-weight:400}
.modetable.gloss td:nth-child(3),.modetable.gloss td:last-child{font-size:.78rem;color:var(--txt-faint)}
.modetable.gloss .x{display:block;margin-top:2px}
/* the 4-column glossary table is the one table wide enough to clip on a phone
   (body is overflow-x:hidden) — let it scroll horizontally instead of losing a column */
@media(max-width:680px){.modetable.gloss{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}}
/* cheatsheet: progressive-disclosure groups */
.cs-more{margin-top:14px;border:1px solid var(--stroke);border-radius:13px;background:var(--panel);overflow:hidden}
.cs-more>summary{cursor:pointer;list-style:none;padding:13px 16px;font-weight:700;font-size:.9rem;color:var(--txt);display:flex;align-items:center;gap:10px}
.cs-more>summary::-webkit-details-marker{display:none}
.cs-more>summary::before{content:"+";color:var(--spec);font-weight:800;font-size:1.1rem;flex:none}
.cs-more[open]>summary::before{content:"–"}
.cs-more>summary:hover{background:rgba(120,150,210,.06)}
.cs-more .modetable{margin:0 16px 16px}
/* finder: tie-breaker rules list */
.tielist{margin:.2em 0 0;padding-left:1.1em;font-size:.88rem;color:var(--txt-dim);line-height:1.75}
.tielist li{margin-bottom:7px}
.tielist li:last-child{margin-bottom:0}
/* skill tier badges (catalog) + persona group tags (voice).
   Named .ttag — NOT .tier — so they never collide with the hook-tier cards
   (.tier in the rig/vision pages), which would otherwise inherit the pill radius. */
.ttag,.ptag{display:inline-block;font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;
  padding:2px 7px;border-radius:999px;vertical-align:middle;margin-left:6px;border:1px solid}
.ttag.workflow{color:#7dd3fc;border-color:rgba(125,211,252,.4);background:rgba(125,211,252,.10)}
.ttag.knowledge{color:#a7f3d0;border-color:rgba(167,243,208,.35);background:rgba(167,243,208,.08)}
.ttag.gate{color:#fda4af;border-color:rgba(253,164,175,.42);background:rgba(253,164,175,.10)}
.ptag.base{color:var(--txt-faint);border-color:var(--stroke);background:transparent}
.ptag.work{color:#7dd3fc;border-color:rgba(125,211,252,.4);background:rgba(125,211,252,.10)}
.ptag.fun{color:#fcd34d;border-color:rgba(252,211,77,.4);background:rgba(252,211,77,.10)}
/* universal-harm floor IN/OUT cells (voice) */
.keepish{color:#34d399;font-weight:700}
.outish{color:#fb7185;font-weight:800;letter-spacing:.05em}
/* tighten the marketing section rhythm when content sits in the reading column */
body.view-guide section{padding:34px 0}
body.view-guide .docs-main .wrap{max-width:none;margin:0}
body.view-guide .crumb{max-width:none;padding:18px 0 0}

.side-cat{margin:20px 0 6px;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--txt-faint);font-weight:800;padding:0 12px}
.side-link{display:block;padding:8px 12px;border-radius:9px;font-size:.9rem;color:var(--txt-dim);font-weight:600;
  border-left:2px solid transparent;transition:.18s}
.side-link:hover{color:var(--txt);background:rgba(120,150,210,.10);text-decoration:none}
.side-link.active{color:var(--txt);background:rgba(120,150,210,.14);border-left-color:var(--spec)}
.side-link.side-top{margin-bottom:4px;font-weight:700}

/* hero / funnel call-to-action buttons */
.cta-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:26px}
.hero .cta-row{justify-content:center}
.btn-cta{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:.95rem;
  padding:13px 22px;border-radius:12px;transition:.22s var(--ease)}
.btn-cta.primary{color:#04122a;background:linear-gradient(135deg,var(--spec),#6366f1);border:1px solid transparent}
.btn-cta.primary:hover{text-decoration:none;transform:translateY(-2px);box-shadow:0 18px 40px -20px var(--spec)}
.btn-cta.ghost{color:var(--txt);background:var(--panel);border:1px solid var(--stroke-2)}
.btn-cta.ghost:hover{text-decoration:none;border-color:var(--spec);color:#fff;transform:translateY(-2px)}

/* card-as-link (guides landing) */
a.card{color:inherit;text-decoration:none;display:block}
a.card:hover{text-decoration:none;border-color:var(--ac,var(--stroke-2));transform:translateY(-3px);
  box-shadow:0 18px 40px -28px var(--ac,#000)}

/* numbered "how to run it" steps */
.steps{counter-reset:step;margin-top:14px;display:flex;flex-direction:column;gap:12px}
.steps .step{position:relative;padding:14px 16px 14px 58px;border:1px solid var(--stroke);
  border-radius:13px;background:var(--panel-solid)}
.steps .step::before{counter-increment:step;content:counter(step);position:absolute;left:14px;top:14px;
  width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-family:monospace;font-weight:800;
  font-size:.85rem;color:var(--ac,var(--spec));background:color-mix(in srgb,var(--ac,var(--spec)) 16%,transparent);
  border:1px solid color-mix(in srgb,var(--ac,var(--spec)) 38%,transparent)}
.steps .step h4{margin:0 0 3px;font-size:.96rem}
.steps .step p{margin:0;font-size:.86rem;color:var(--txt-dim)}
.steps .step code{font-size:.8rem}

/* FAQ (native <details>, no JS) */
.faq{margin-top:16px;display:flex;flex-direction:column;gap:10px}
.faq details{border:1px solid var(--stroke);border-radius:13px;background:var(--panel);overflow:hidden}
.faq summary{cursor:pointer;list-style:none;padding:15px 18px;font-weight:700;font-size:.95rem;color:var(--txt);
  display:flex;align-items:center;gap:10px;transition:.18s}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"+";color:var(--ac,var(--spec));font-weight:800;font-size:1.15rem;flex:none;
  width:16px;text-align:center}
.faq details[open] summary::before{content:"–"}
.faq summary:hover{background:rgba(120,150,210,.06)}
.faq .fa{padding:0 18px 16px 44px;color:var(--txt-dim);font-size:.9rem;line-height:1.7}
.faq .fa code{font-size:.82rem}

/* mobile drawer */
.scrim{display:none;position:fixed;inset:0;z-index:60;background:rgba(3,6,14,.6)}
body.side-open .scrim{display:block}
@media(max-width:900px){
  .docs-layout{display:block;padding:0 18px}
  body.view-guide .side-toggle{display:inline-flex}
  .docs-side{position:fixed;top:0;left:0;bottom:0;z-index:70;width:284px;height:100dvh;max-height:none;
    background:var(--bg-2);border-right:1px solid var(--stroke);padding:20px 10px 48px;
    transform:translateX(-102%);transition:transform .25s var(--ease)}
  body.side-open .docs-side{transform:none}
  body.view-home .docs-side{display:none}
}

/* ===================== KEYBOARD FOCUS ===================== */
a:focus-visible,button:focus-visible,summary:focus-visible,
.side-link:focus-visible,.btn-guides:focus-visible,.side-toggle:focus-visible,
.btn-cta:focus-visible,.langtoggle button:focus-visible,a.card:focus-visible{
  outline:2px solid var(--spec);outline-offset:2px;border-radius:8px}
.faq summary:focus-visible{outline:2px solid var(--spec);outline-offset:-2px}

/* ===================== REDUCED MOTION ===================== */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  html{scroll-behavior:auto}
  .reveal{opacity:1 !important;transform:none !important}
  .scroll-cue .arrow{animation:none !important}
  #net{display:none}            /* decorative constellation — drop entirely */
  .bar .bf{transition:none !important}
}
