/* =====================================================================
   ungovernable.tech — cypherpunk field manual.
   Dark phosphor terminal by default, paper theme opt-in. Condensed
   display, serif prose, mono metadata. Self-hosted fonts (OFL 1.1).
   Motifs used with restraint: faint grid, PGP armour, hex dumps,
   corner brackets, one blinking block cursor.
   ===================================================================== */

/* ---------- fonts ---------- */
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 400 800; font-stretch: 66%; font-display: swap; src: url(/assets/fonts/archivo-w66-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 400 800; font-stretch: 80%; font-display: swap; src: url(/assets/fonts/archivo-w80-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 400 800; font-stretch: 100%; font-display: swap; src: url(/assets/fonts/archivo-w100-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 400 800; font-stretch: 66%; font-display: swap; src: url(/assets/fonts/archivo-w66-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 400 800; font-stretch: 80%; font-display: swap; src: url(/assets/fonts/archivo-w80-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 400 800; font-stretch: 100%; font-display: swap; src: url(/assets/fonts/archivo-w100-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url(/assets/fonts/ibm-plex-mono-400-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url(/assets/fonts/ibm-plex-mono-400-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url(/assets/fonts/ibm-plex-mono-500-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url(/assets/fonts/ibm-plex-mono-500-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 600; font-display: swap; src: url(/assets/fonts/ibm-plex-mono-600-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 600; font-display: swap; src: url(/assets/fonts/ibm-plex-mono-600-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Source Serif 4'; font-style: italic; font-weight: 400; font-display: swap; src: url(/assets/fonts/source-serif-4-400-italic-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Source Serif 4'; font-style: italic; font-weight: 400; font-display: swap; src: url(/assets/fonts/source-serif-4-400-italic-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Source Serif 4'; font-style: normal; font-weight: 400; font-display: swap; src: url(/assets/fonts/source-serif-4-400-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Source Serif 4'; font-style: normal; font-weight: 400; font-display: swap; src: url(/assets/fonts/source-serif-4-400-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

@font-face{font-family:'Archivo Fallback';src:local('Arial'),local('Liberation Sans'),local('Helvetica');size-adjust:102%;ascent-override:86.1%;descent-override:20.6%;line-gap-override:0%}
@font-face{font-family:'Source Serif Fallback';src:local('Times New Roman'),local('Liberation Serif'),local('Times');size-adjust:107.5%;ascent-override:96.4%;descent-override:31.2%;line-gap-override:0%}
@font-face{font-family:'IBM Plex Mono Fallback';src:local('Courier New'),local('Liberation Mono'),local('Courier');size-adjust:100%;ascent-override:102.5%;descent-override:27.5%;line-gap-override:0%}

/* ---------- tokens ----------
   Dark is the default and the hero; light is an opt-in paper theme.
   Contrast pairs are asserted by scripts/contrast_check.py. */
:root{
  color-scheme:dark;
  --bg:#0a0d0b; --surface:#0f1411; --raised:#141b17;
  --line:#1e2a23; --line-2:#2b3a31;
  --ink:#dfe7e1; --ink-2:#b3c0b7; --muted:#85948a; --prose:#d3dcd6;
  --signal:#3cff8f; --signal-dim:#1f6b44; --signal-ink:#04120a;
  --amber:#ffb627; --cyan:#7cd4ff; --red:#ff6b5e; --red-ink:#2a0906; --grey:#9aa59e;
  --grid-line:rgba(60,255,143,.05);
  --scan:rgba(4,18,10,.4);
  --shadow:rgba(0,0,0,.5);
  --display:'Archivo','Archivo Fallback','Arial Narrow',system-ui,sans-serif;
  --serif:'Source Serif 4','Source Serif Fallback','Iowan Old Style',Georgia,serif;
  --mono:'IBM Plex Mono','IBM Plex Mono Fallback',ui-monospace,'SF Mono',Consolas,monospace;
  --hdr:56px; --measure:68ch;
}
:root[data-theme="dark"]{color-scheme:dark}
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#f1f0ea; --surface:#e9e8df; --raised:#e0ded0;
  --line:#d3d1c2; --line-2:#c2c0b0;
  --ink:#0c110e; --ink-2:#2f3a33; --muted:#55625a; --prose:#1a231e;
  --signal:#0b6f3d; --signal-dim:#6fae8f; --signal-ink:#f4f3ec;
  --amber:#8a5800; --cyan:#0a5f8a; --red:#b3261e; --red-ink:#ffffff; --grey:#566059;
  --grid-line:rgba(12,17,14,.06);
  --scan:rgba(12,17,14,.12);
  --shadow:rgba(28,32,26,.25);
}

/* ---------- base ---------- */
[hidden]{display:none!important}
*{box-sizing:border-box}
html{scroll-padding-top:calc(var(--hdr) + 16px)}
body{background:var(--bg);color:var(--ink);margin:0;
  font:400 16px/1.6 var(--mono);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
::selection{background:var(--signal);color:var(--signal-ink)}
:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
a{color:var(--ink)}
.gut{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.wrap{max-width:1240px;margin-inline:auto}
@media (min-width:900px){
  .gut{padding-left:max(28px,env(safe-area-inset-left,0px));padding-right:max(28px,env(safe-area-inset-right,0px))}
}
.skip{position:absolute;left:-9999px;top:0;background:var(--signal);color:var(--signal-ink);
  padding:.5rem .8rem;z-index:100;font:600 .8rem var(--mono)}
.skip:focus{left:8px;top:8px}
.off-label{position:absolute;left:-9999px}

/* ---------- shared bits ---------- */
.label{font:500 .7rem/1.4 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.more:hover{color:var(--signal)}
.kicker{font:500 .74rem/1.5 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.kicker .k-idx,.k-idx{color:var(--signal);margin-right:.55em}

/* block cursor — blinks only when motion is allowed */
.cursor{display:inline-block;width:.55em;height:1.02em;background:var(--signal);
  margin-left:.16em;vertical-align:-.14em;flex:none;animation:blink 1.1s steps(2,start) infinite}
@keyframes blink{50%{opacity:0}}

/* readiness meter (small inner element; badges carry the weight) */
.m{display:inline-flex;align-items:flex-end;gap:2px;height:12px;flex:none}
.m i{display:block;width:4px;background:var(--line-2)}
.m i:nth-child(1){height:24%}.m i:nth-child(2){height:42%}.m i:nth-child(3){height:60%}
.m i:nth-child(4){height:80%}.m i:nth-child(5){height:100%}
.m i.on{background:var(--signal)}
.m i.hollow{background:none;border:1px solid var(--muted);width:3px}
.m i.bang{width:auto;height:auto;background:none;border:0;color:var(--red);
  font:700 .78rem/1 var(--mono)}
.m.lg{height:24px;gap:4px}.m.lg i{width:8px}.m.lg i.bang{font-size:1.3rem}

/* readiness badges */
.bdg{display:inline-flex;align-items:baseline;gap:.3em;flex:none;
  font:600 .72rem/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;
  padding:3px 8px;border:1px solid;white-space:nowrap}
.bdg i{font-style:normal}
.bdg-battle-tested{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}
.bdg-usable{color:var(--signal);border-color:var(--signal)}
.bdg-experimental{color:var(--amber);border-color:var(--amber)}
.bdg-research{color:var(--cyan);border-color:var(--cyan)}
.bdg-historical{color:var(--grey);border-color:var(--grey);border-style:dashed}
.bdg-cautionary{background:var(--red);border-color:var(--red);color:var(--red-ink)}
.bdg-lg{font-size:.8rem;padding:5px 11px}

/* pillar glyphs and generative art */
.glyph{color:var(--muted);flex:none}
.cipher-svg rect,.identicon-svg rect{fill:var(--signal)}

/* ---------- header ---------- */
.hdr{position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--line)}
@supports ((-webkit-backdrop-filter:blur(8px)) or (backdrop-filter:blur(8px))){
  .hdr{background:color-mix(in srgb,var(--bg) 90%,transparent);
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
}
.hdr .in{display:flex;align-items:center;gap:1.5rem;height:var(--hdr)}
.wordmark{display:flex;align-items:center;gap:.55rem;text-decoration:none;color:var(--ink)}
.wordmark:hover .wm{color:var(--signal)}
.wordmark .mark{display:block;flex:none}
.wm{font:600 1.02rem/1 var(--mono);color:var(--ink)}
.wm small{font:500 .66rem/1 var(--mono);color:var(--muted);letter-spacing:.05em}
.nav{display:flex;gap:1.25rem;font:500 .72rem/1 var(--mono);letter-spacing:.09em;text-transform:uppercase}
.nav a{text-decoration:none;padding-block:.45rem;border-bottom:2px solid transparent;color:var(--ink-2)}
.nav a:hover{color:var(--ink);border-color:var(--line-2)}
.nav a[aria-current="page"]{color:var(--signal);border-color:var(--signal)}
.hdr .tools{margin-left:auto;display:flex;align-items:center;gap:.55rem}
.sbtn{display:flex;align-items:center;gap:.5rem;border:1px solid var(--line-2);
  background:var(--surface);padding:.42rem .55rem .42rem .7rem;
  font:500 .74rem/1 var(--mono);letter-spacing:.03em;color:var(--muted);text-decoration:none}
.sbtn:hover{border-color:var(--signal);color:var(--ink)}
.sbtn .pr{color:var(--signal);font-weight:600}
.sbtn kbd{font:500 .6rem/1 var(--mono);border:1px solid var(--line-2);color:var(--muted);
  padding:.14rem .3rem;background:var(--bg)}
.sbtn .k2{display:none}
@media (min-width:1180px){.sbtn .k2{display:inline-block}}
.ibtn{width:2.35rem;height:2.35rem;display:none;place-items:center;border:1px solid var(--line-2);
  color:var(--ink-2);background:var(--surface)}
.ibtn:hover{border-color:var(--signal);color:var(--signal)}
#theme-toggle{display:grid}
#theme-toggle .ic-sun{display:none}
:root[data-theme="light"] #theme-toggle .ic-sun{display:block}
:root[data-theme="light"] #theme-toggle .ic-moon{display:none}
@media (max-width:1020px){.nav{display:none}.sbtn{display:none}.ibtn{display:grid}}

/* ---------- texture (hero and page headers only) ---------- */
.tex{position:relative}
.tex::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background-image:
    linear-gradient(to right,var(--grid-line) 1px,transparent 1px),
    linear-gradient(to bottom,var(--grid-line) 1px,transparent 1px);
  background-size:32px 32px}
.tex>*{position:relative;z-index:1}
/* scanlines: decorative panels only, never over body text */
.scan{position:relative}
.scan::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(to bottom,var(--scan) 0 1px,transparent 1px 3px)}

/* ---------- hero ---------- */
.hero{padding-block:2.8rem 2.6rem;border-bottom:1px solid var(--line)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:2.6rem}
.epigraph{font:400 .86rem/1.65 var(--mono);color:var(--ink-2);max-width:56ch;
  margin:0 0 1.7rem;border-left:2px solid var(--signal);padding-left:.95rem}
.epigraph a{color:var(--ink-2);text-decoration:underline;
  text-decoration-color:var(--signal-dim);text-underline-offset:3px}
.epigraph a:hover{color:var(--signal);text-decoration-color:var(--signal)}
.hero h1{font:800 clamp(2.6rem,5vw,5.2rem)/0.94 var(--display);font-stretch:66%;
  text-transform:uppercase;letter-spacing:-.015em;margin:0 0 1.3rem;max-width:21ch}
.hero h1 .hl{color:var(--signal)}
.hero .lede{font:400 1.14rem/1.65 var(--serif);color:var(--ink-2);max-width:38rem;margin:0 0 1.7rem}
.bigsearch{display:flex;align-items:center;gap:.65rem;border:1px solid var(--line-2);
  background:var(--surface);padding:.85rem .95rem;text-decoration:none;color:var(--muted);
  font:400 .95rem/1.4 var(--mono);max-width:34rem}
.bigsearch:hover{border-color:var(--signal);color:var(--ink)}
.bigsearch .pr{color:var(--signal);font-weight:600;flex:none}
.bigsearch .bs-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bigsearch .cursor{height:.95em}
.bigsearch kbd,.filter kbd{font:500 .64rem/1 var(--mono);border:1px solid var(--line-2);
  color:var(--muted);padding:.12rem .32rem;background:var(--bg);flex:none}
.stats{font:500 .72rem/1.7 var(--mono);letter-spacing:.04em;color:var(--muted);margin:1.05rem 0 0}
/* armour panel (decorative, aria-hidden) */
.hero-r{display:none;position:relative}
@media (min-width:720px){.hero-r{display:block}}
@media (min-width:1024px){
  .hero-grid{grid-template-columns:minmax(0,1fr) 440px;gap:3.2rem;align-items:start}
}
.armour{position:relative;border:1px solid var(--line-2);background:var(--surface);
  padding:1rem 1rem 1.05rem;font:400 .62rem/1.85 var(--mono);color:var(--muted);overflow:hidden}
.armour .a-line{display:block;white-space:nowrap;overflow:hidden;text-overflow:clip}
.armour .a-head{color:var(--ink-2)}
.armour .a-meta{color:var(--signal);opacity:.8;margin-bottom:.5rem}
.hr-row{display:grid;grid-template-columns:118px minmax(0,1fr);gap:.8rem;margin-top:.8rem}
.cipher{width:118px;height:118px;padding:6px;background:var(--surface);border:1px solid var(--line-2)}
.cipher .cipher-svg{display:block;width:100%;height:100%}
.hexdump{margin:0;padding:.6rem .75rem;border:1px solid var(--line);background:var(--surface);
  font:400 .6rem/1.85 var(--mono);color:var(--muted);overflow:hidden;align-self:stretch}
.hexdump span{display:block;white-space:pre;overflow:hidden}

/* ---------- sections / cards ---------- */
.band{padding-block:1.9rem;border-bottom:1px solid var(--line)}
.band-h{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;
  gap:.5rem 1rem;margin-bottom:1.1rem}
.band-h h2,.sec-h{font:600 .82rem/1.3 var(--mono);letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink)}
.band-h h2::before,.hub .sec-h::before{content:"//";color:var(--signal);margin-right:.6rem}
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:2.6rem}
@media (max-width:860px){.cols2{grid-template-columns:1fr;gap:1.9rem}}

/* hairline-grid cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:0;
  border-top:1px solid var(--line);border-left:1px solid var(--line)}
.card{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.cards.stack{grid-template-columns:1fr}
.card{position:relative;display:grid;gap:.45rem;align-content:start;
  padding:1.05rem 1.05rem 1.15rem;background:var(--bg);text-decoration:none}
.card:hover{background:var(--surface)}
.card b{font:700 1.06rem/1.2 var(--display);color:var(--ink)}
.card:hover b,.card:focus-visible b,.pcell:hover b,.pcell:focus-visible b{color:var(--signal)}
.card p{font:400 .92rem/1.5 var(--serif);color:var(--ink-2)}
.card .meta{font:400 .72rem/1.55 var(--mono);color:var(--muted)}
.card .label{color:var(--muted)}
.card .label-start{color:var(--signal)}
.card-first{background:var(--surface);box-shadow:inset 0 0 0 1px var(--signal)}
.card-first:hover{box-shadow:inset 0 0 0 1px var(--signal),0 0 0 1px var(--signal)}
.card.wide{grid-template-columns:minmax(0,1fr)}
@media (max-width:640px){.cards{grid-template-columns:1fr}}

/* ---------- pillar grid ---------- */
.pgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;
  border-top:1px solid var(--line);border-left:1px solid var(--line)}
.pcell{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
@media (max-width:1100px){.pgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:840px){.pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:540px){.pgrid{grid-template-columns:1fr}}
.pcell{position:relative;display:grid;gap:.35rem;align-content:start;
  text-align:left;text-decoration:none;padding:1.05rem .95rem 1.15rem;
  background:var(--bg);transition:transform .15s ease}
.pcell:hover,.pcell:focus-visible{background:var(--surface);
  box-shadow:0 0 0 1px var(--signal);transform:translateY(-2px)}
.pcell:hover .glyph,.pcell:focus-visible .glyph{color:var(--signal)}
/* corner brackets */
.pcell::before,.pcell::after{content:"";position:absolute;width:10px;height:10px;
  border:0 solid var(--signal);opacity:0;transition:opacity .15s}
.pcell::before{top:5px;left:5px;border-top-width:2px;border-left-width:2px}
.pcell::after{bottom:5px;right:5px;border-bottom-width:2px;border-right-width:2px}
.pcell:hover::before,.pcell:hover::after,
.pcell:focus-visible::before,.pcell:focus-visible::after{opacity:1}
.pc-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.2rem}
.pnum{font:600 .68rem/1.4 var(--mono);color:var(--signal);letter-spacing:.1em}
.pcell b{font:700 1.1rem/1.15 var(--display)}
.pq{font:italic 400 .85rem/1.45 var(--serif);color:var(--ink-2)}
.pmeta{font:400 .7rem/1.5 var(--mono);color:var(--muted);margin-top:.3rem}

/* ---------- rows ---------- */
.rows{display:grid;border-top:1px solid var(--line)}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1rem;
  padding:.58rem .15rem;border-bottom:1px solid var(--line);text-decoration:none}
.row:hover{background:var(--surface)}
.row .nm{flex:1;min-width:0;font:400 1rem/1.35 var(--serif);color:var(--ink)}
.row:hover .nm{text-decoration:underline;text-decoration-color:var(--signal);
  text-underline-offset:3px}
.row .nm small,.row .nm .also{display:block;font:400 .7rem/1.55 var(--mono);
  color:var(--muted);margin-top:.1rem}
.row .ty{font:500 .66rem/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);flex:none}

/* ---------- readiness spectrum ---------- */
.spec{display:block;height:12px;margin-bottom:1.1rem}
.spec svg{display:block;width:100%;height:12px}
.sg-battle-tested{fill:var(--signal)}
.sg-usable{fill:var(--signal);opacity:.65}
.sg-experimental{fill:var(--amber)}
.sg-research{fill:var(--cyan)}
.sg-historical{fill:var(--grey)}
.sg-cautionary{fill:var(--red)}
.spec a:focus-visible rect{stroke:var(--ink);stroke-width:2}
.scale{display:grid;border:1px solid var(--line)}
.scale a{display:grid;grid-template-columns:max-content minmax(0,1fr) auto;gap:1rem;
  align-items:center;padding:.72rem .9rem;border-bottom:1px solid var(--line);text-decoration:none}
.scale a:last-child{border-bottom:0}
.scale a:hover,.scale a:focus-visible{background:var(--surface);box-shadow:inset 2px 0 0 var(--signal)}
.scale b{font:700 .95rem/1.2 var(--display);display:block}
.scale p{font:400 .84rem/1.4 var(--serif);color:var(--ink-2);margin:.1rem 0 0}
.scale .n{font:500 .74rem/1 var(--mono);color:var(--muted);display:inline-flex;
  align-items:center;gap:.35rem}
.chev{font:400 1rem var(--mono);color:var(--muted)}

/* ---------- page headers ---------- */
.crumbs{display:flex;flex-wrap:wrap;gap:.4rem;font:400 .74rem/1.6 var(--mono);
  color:var(--muted);padding-top:1.1rem}
.crumbs a{text-decoration:none;color:var(--muted)}
.crumbs a:hover{color:var(--signal)}
.crumbs .here{color:var(--ink-2)}
.page-head{display:grid;gap:.8rem;padding-block:1.2rem 1.7rem;border-bottom:1px solid var(--line)}
.page-head h1{font:800 clamp(2.1rem,4.6vw,3.3rem)/0.96 var(--display);font-stretch:66%;
  text-transform:uppercase;letter-spacing:-.01em}
.page-head .dek{font:400 1.12rem/1.55 var(--serif);color:var(--ink-2);max-width:46rem}
.page-head .who{font:400 .9rem/1.5 var(--serif);color:var(--muted);max-width:46rem}
/* pillar header band */
.ph-band{grid-template-columns:minmax(0,1fr) auto;gap:2.6rem;align-items:start}
@media (max-width:900px){.ph-band{grid-template-columns:1fr}}
.ph-band h1{max-width:20ch}
.ph-l{display:grid;gap:1rem;align-content:start;padding-block:.4rem}
.ph-r{display:grid;grid-template-columns:auto auto;align-items:end;gap:.7rem;padding-top:.3rem}
.ident-wrap{padding:.5rem;border:1px solid var(--line-2);background:var(--surface)}
.ident-wrap .identicon-svg{display:block;width:150px;height:150px}
.p-icon{display:grid;place-items:center;width:64px;height:64px;order:-1;
  border:1px solid var(--signal-dim);background:var(--bg);color:var(--signal)}
.ph-r .hexline{grid-column:1 / -1;text-align:right;max-width:236px;justify-self:end}
@media (max-width:900px){.ph-r{justify-content:start}.ph-r .hexline{text-align:left;justify-self:start}}
.hexline{font:400 .6rem/1.5 var(--mono);color:var(--muted);letter-spacing:.02em;margin:0}

/* ---------- entry header ---------- */
.ahead{display:grid;gap:.9rem;padding-block:1.2rem 1.6rem;border-bottom:1px solid var(--line)}
.kind{display:flex;flex-wrap:wrap;gap:.35rem .55rem;
  font:600 .68rem/1.7 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.ktag{color:var(--ink-2)}
.ktag-k{color:var(--signal)}
.ahead h1{font:800 clamp(1.9rem,4.4vw,3.3rem)/1.02 var(--display);font-stretch:80%;
  letter-spacing:-.005em;max-width:30ch}
.ahead h1,.page-head h1,.ahead .dek,.page-head .dek,.page-head .kicker{margin:0}
.ahead .aka{font:italic 400 .92rem/1.5 var(--serif);color:var(--muted);margin:0}
.ahead .dek{font:italic 400 1.22rem/1.5 var(--serif);color:var(--ink-2);max-width:42rem;margin:0}
.meta{display:flex;flex-wrap:wrap;gap:.4rem 1.3rem;align-items:center;
  font:400 .74rem/1.7 var(--mono);color:var(--muted)}
.meta b{color:var(--ink);font-weight:500}
.meta .ktag{border:1px solid var(--line-2);padding:.18rem .5rem;color:var(--ink-2)}
.meta a{color:var(--signal)}

/* ---------- entry three-column layout ---------- */
.mono-grid{display:grid;grid-template-columns:190px minmax(0,1fr) 300px;gap:2.6rem;
  padding-block:1.8rem}
.mono-grid.no-toc{grid-template-columns:minmax(0,1fr) 300px}
@media (max-width:1240px){
  .mono-grid{grid-template-columns:minmax(0,1fr) 300px}
  .toc{grid-column:1/-1;position:static;max-height:none;overflow:visible;
    border-bottom:1px solid var(--line);padding-bottom:.8rem}
}
@media (max-width:1000px){
  .mono-grid,.mono-grid.no-toc{grid-template-columns:minmax(0,1fr)}
  .glance{position:static;max-height:none}
}
/* contents: plain sticky column on wide screens, <details> up top when narrow */
.toc{position:sticky;top:calc(var(--hdr) + 1.4rem);align-self:start;
  max-height:calc(100vh - var(--hdr) - 2.8rem);overflow-y:auto;scrollbar-width:thin}
.toc summary{display:flex;align-items:center;gap:.5rem;cursor:pointer;list-style:none;
  font:600 .68rem/1.5 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.toc summary::-webkit-details-marker{display:none}
.toc summary::after{content:"+";margin-left:auto;color:var(--signal);font-weight:600;font-size:.85rem}
.toc[open] summary::after{content:"−"}
.toc summary:hover{color:var(--ink)}
.toc-l{display:grid;gap:.05rem;margin-top:.55rem}
.toc a{text-decoration:none;padding:.32rem 0 .32rem .75rem;border-left:2px solid var(--line-2);
  color:var(--muted);font:400 .73rem/1.45 var(--mono)}
.toc a:hover{color:var(--ink)}
.toc a.on{border-color:var(--signal);color:var(--signal)}

/* ---------- prose ---------- */
.prose{font:400 1.125rem/1.7 var(--serif);color:var(--prose);max-width:var(--measure);
  counter-reset:sec}
.prose>*{min-width:0}
.prose h2{position:relative;display:flex;gap:.7rem;align-items:baseline;
  font:700 1.5rem/1.15 var(--display);font-stretch:80%;color:var(--ink);
  margin:2.2rem 0 .9rem;counter-increment:sec}
.prose h2::before{content:"§ " counter(sec,decimal-leading-zero);
  font:600 .72rem/1 var(--mono);color:var(--signal);letter-spacing:.06em;
  flex:none;transform:translateY(-.2em)}
.prose h2.nx{display:block;counter-increment:none}
.prose h2.nx::before{content:none}
.prose h2 .anchor-link{position:absolute;right:0;top:.25em;font:500 .78rem var(--mono);
  border:0;background:none;color:var(--muted);opacity:0;cursor:pointer;padding:.2rem .3rem}
.prose h2:hover .anchor-link,.prose h2 .anchor-link:focus-visible{opacity:1}
.prose h3{font:700 1.13rem/1.3 var(--display);font-stretch:80%;margin-top:1.7rem;color:var(--ink)}
.prose h4{font:600 .98rem/1.35 var(--display);font-stretch:80%;color:var(--ink)}
.prose p,.prose li{color:var(--prose)}
.prose strong{color:var(--ink);font-weight:600}
.prose a{color:var(--signal);text-decoration:underline;text-decoration-thickness:1px;
  text-underline-offset:3px}
.prose a:hover{text-decoration-thickness:2px}
.prose a[href^="http"]::after{content:"\2197";font:600 .72em var(--mono);
  vertical-align:.55em;margin-left:.15em;color:var(--muted);text-decoration:none}
.prose ul,.prose ol{margin:0;padding-left:1.35rem;display:grid;gap:.4rem}
.prose blockquote{margin:0;border-left:3px solid var(--signal);
  padding:.1rem 0 .1rem 1.05rem;color:var(--muted);font-style:italic}
.prose blockquote p{color:inherit}
.prose hr{border:0;border-top:1px solid var(--line-2);margin:.7rem 0}
.prose code{font:500 .84em var(--mono);background:var(--raised);border:1px solid var(--line);
  padding:.08em .32em;overflow-wrap:anywhere}
/* terminal code panels */
.prose pre{position:relative;background:var(--surface);border:1px solid var(--line-2);
  padding:2.55rem 1rem .95rem;overflow-x:auto;font:400 .8rem/1.6 var(--mono);color:var(--ink-2)}
.prose pre::before{content:"";position:absolute;top:0;left:0;right:0;height:1.75rem;
  border-bottom:1px solid var(--line-2);
  background:
    radial-gradient(circle 2.5px at 14px 50%,var(--signal-dim) 97%,transparent),
    radial-gradient(circle 2.5px at 30px 50%,var(--signal-dim) 97%,transparent),
    radial-gradient(circle 2.5px at 46px 50%,var(--signal) 97%,transparent),
    repeating-linear-gradient(to bottom,var(--scan) 0 1px,transparent 1px 3px),
    var(--raised)}
.prose pre code{background:none;border:0;padding:0;font-size:1em}
.prose img{max-width:100%;height:auto}
.prose mark{background:var(--signal);color:var(--signal-ink);padding:0 .15em}
.prose aside.callout{border:1px solid var(--line-2);border-left:3px solid var(--signal);
  padding:.8rem 1rem;background:var(--surface);font-size:.98rem}
.prose aside.callout .callout-title{font:600 .78rem var(--mono);text-transform:uppercase;
  letter-spacing:.07em;color:var(--signal);margin-bottom:.3rem}
.prose aside.callout p{margin:.2rem 0}
.prose .footnote{font-size:.9em}
.prose sup a{font:600 .68rem var(--mono)}
.prose dl{display:grid;grid-template-columns:minmax(0,1fr);gap:.2rem;margin:0}

/* tables: mono header, zebra rows, existing scroll wrapper */
.tw{overflow-x:auto}
.tw table{border-collapse:collapse;width:100%;min-width:32rem;
  font:400 .92rem/1.5 var(--serif)}
.tw th{font:500 .64rem/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);text-align:left;padding:.55rem .65rem .5rem 0;
  border-bottom:1px solid var(--line-2)}
.tw td{padding:.5rem .65rem .5rem 0;border-bottom:1px solid var(--line);
  vertical-align:top;color:var(--ink-2)}
.tw tbody tr:nth-child(even){background:var(--surface)}
.tw td:first-child{color:var(--ink)}
.tw tr:last-child td{border-bottom:0}
.tw td code{white-space:nowrap}
.tw .ta-r,.ta-r{text-align:right}
.tw .ta-l,.ta-l{text-align:left}
.tw .ta-c,.ta-c{text-align:center}

/* ---------- related / chips / history ---------- */
.related-sec{margin-top:2.2rem}
.related-sec h2{font:600 .8rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.08em}
.chips{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin-top:1.5rem}
.chip{font:500 .74rem/1 var(--mono);border:1px solid var(--line-2);padding:.35rem .6rem;
  text-decoration:none;background:var(--surface)}
.chip:hover{border-color:var(--signal);color:var(--signal)}
.history{margin-top:2.2rem;border:1px solid var(--line-2);padding:1rem 1.1rem;background:var(--surface)}
.history h2{font:600 .8rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.08em;
  margin-bottom:.6rem}
.history .dl{grid-template-columns:9rem 1fr}
.dl{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:0;margin:0;font-size:.92rem}
.dl dt,.dl dd{margin:0;padding:.42rem 0;border-bottom:1px solid var(--line)}
.dl dt{font:500 .66rem/2.1 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.dl dd{font:400 .95rem/1.5 var(--serif);color:var(--ink-2)}
.dl dd:last-child,.dl dt:last-child{border-bottom:0}
@media (max-width:520px){.dl,.history .dl{grid-template-columns:1fr}
  .dl dt{border-bottom:0;padding-bottom:0;line-height:1.6}}

/* ---------- at a glance (terminal readout) ---------- */
.glance{position:sticky;top:calc(var(--hdr) + 1.4rem);
  max-height:calc(100vh - var(--hdr) - 2.8rem);overflow-y:auto;scrollbar-width:thin}
.glance-in{border:1px solid var(--line-2);background:var(--surface)}
.g-bar{display:flex;align-items:center;gap:.6rem;padding:.5rem .85rem;
  border-bottom:1px solid var(--line-2);background:var(--raised);
  font:500 .7rem/1.4 var(--mono);color:var(--muted);letter-spacing:.03em}
.g-dots{display:inline-flex;gap:5px}
.g-dots i{width:7px;height:7px;background:var(--signal-dim);display:block}
.g-dots i:first-child{background:var(--signal)}
.g-body{padding:.85rem .9rem .95rem}
.glance .grade{display:grid;gap:.5rem;padding-bottom:.75rem;
  border-bottom:1px solid var(--line);margin-bottom:.75rem}
.glance .grade p{font:400 .78rem/1.5 var(--serif);color:var(--ink-2);margin:0}
.glance .def{font:italic 400 .9rem/1.5 var(--serif);color:var(--ink-2);
  padding-bottom:.7rem;border-bottom:1px solid var(--line);margin:0 0 .35rem}
.glance .dl{margin-top:.2rem;grid-template-columns:6.6rem minmax(0,1fr)}
.glance .dl dd{font-size:.88rem}

/* ---------- briefings ---------- */
.dated{border:1px solid var(--amber);border-left:3px solid var(--amber);
  padding:.75rem .95rem;margin-top:1.4rem;max-width:var(--measure);background:var(--surface)}
.dated .d-line{font:600 .7rem/1.6 var(--mono);letter-spacing:.08em;
  text-transform:uppercase;color:var(--amber);margin:0 0 .3rem}
.dated p{font:400 .9rem/1.5 var(--serif);color:var(--ink-2);margin:0}
.pn{display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;margin-top:2.4rem;
  border-top:1px solid var(--line);padding-top:1rem}
.pn a,.pn .pn-hub{text-decoration:none;display:grid;gap:.2rem;padding:.4rem .2rem}
.pn a:hover b,.pn a:hover .pn-t{text-decoration:underline;text-underline-offset:3px}
.pn .label{font-size:.62rem}
.pn .pn-t{font:400 .92rem/1.35 var(--serif);color:var(--ink-2)}
.pn .pn-hub{justify-items:center}
.pn a:last-child{justify-items:end;text-align:right}
@media (max-width:640px){.pn{grid-template-columns:1fr}.pn a:last-child{justify-items:start;text-align:left}}

/* ---------- paths ---------- */
.steps{list-style:none;margin:1.7rem 0 0;padding:0;border-top:1px solid var(--line)}
.steps li{display:grid;grid-template-columns:3rem minmax(0,1fr);gap:1rem;
  padding:1rem .2rem;border-bottom:1px solid var(--line)}
.steps li:hover{background:var(--surface)}
.steps .step-n{font:600 1.05rem/1.6 var(--mono);color:var(--muted)}
.steps li:hover .step-n{color:var(--signal)}
.step-t{font:700 1.08rem/1.25 var(--display);font-stretch:80%;text-decoration:none;color:var(--ink)}
.step-t:hover{text-decoration:underline;text-underline-offset:3px;
  text-decoration-color:var(--signal)}
.step-meta{display:block;font:500 .66rem var(--mono);letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);margin:.28rem 0 .3rem}
.steps p{font:400 .95rem/1.55 var(--serif);color:var(--ink-2);max-width:46rem}

/* ---------- directory ---------- */
.filter{display:flex;align-items:center;gap:.6rem;border:1px solid var(--line-2);
  background:var(--surface);padding:.65rem .9rem;max-width:30rem;margin-top:.5rem}
.filter svg{color:var(--signal);flex:none}
.filter input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);
  font:400 .9rem var(--mono);outline:none}
.filter input::placeholder{color:var(--muted)}
.dsec{padding-block:1.6rem;border-bottom:1px solid var(--line)}
.dsec .sec-h{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem}
.sec-h{padding-bottom:.5rem}
.sec-h a{text-decoration:none;color:var(--ink)}
.sec-h a:hover{color:var(--signal)}
.sec-h .count{font:400 .68rem var(--mono);color:var(--muted);letter-spacing:.05em;margin-left:.7rem}
.hub .sec-h{border-bottom:2px solid var(--line)}
.dsub h3{font:600 .76rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.08em;
  color:var(--ink-2);margin:1.1rem 0 .5rem}
.links{list-style:none;margin:0;padding:0}
.links li{padding:.44rem 0;border-bottom:1px solid var(--line);
  font:400 .8rem/1.6 var(--mono);color:var(--ink-2)}
.links li:last-child{border-bottom:0}
.links a{font:500 .8rem/1.6 var(--mono);color:var(--ink);text-decoration:underline;
  text-decoration-color:var(--line-2);text-underline-offset:3px}
.links a:hover{color:var(--signal);text-decoration-color:var(--signal)}
.links .ldesc{color:var(--ink-2)}
.links .lnote{display:block;font:400 .72rem/1.6 var(--mono);color:var(--amber)}
.tag{display:inline-block;font:600 .6rem/1 var(--mono);letter-spacing:.06em;
  text-transform:uppercase;border:1px solid currentColor;padding:.06rem .35rem;
  margin-left:.45rem;vertical-align:.14em}
.tag-defunct{color:var(--red)}
.tag-archived{color:var(--muted)}
.tag-caution{color:var(--amber)}
.empty-dir{padding:2rem 0;font:400 .95rem/1.6 var(--mono);color:var(--muted)}
.more-links{padding-top:.9rem;font:400 .8rem var(--mono)}
.more-links a{color:var(--signal)}

/* ---------- glossary ---------- */
.az{display:flex;flex-wrap:wrap;margin-top:.6rem}
.az a{width:2rem;height:2rem;display:grid;place-items:center;border:1px solid var(--line-2);
  margin:0 -1px -1px 0;font:600 .76rem var(--mono);text-decoration:none;color:var(--ink-2)}
.az a:hover{background:var(--signal);color:var(--signal-ink);border-color:var(--signal)}
.gsec .letter{font:800 1.6rem/1 var(--display);font-stretch:66%;color:var(--ink-2);
  padding:1.2rem 0 .4rem;border-bottom:1px solid var(--line)}
.gloss{margin:.6rem 0 0}
.gterm{display:grid;grid-template-columns:11rem minmax(0,1fr);gap:1.2rem;
  padding:.65rem 0;border-bottom:1px solid var(--line)}
.gterm:target{background:var(--surface)}
.gterm dt{font:700 .95rem/1.4 var(--display);font-stretch:80%}
.gterm dd{margin:0;font:400 .95rem/1.55 var(--serif);color:var(--ink-2)}
.gterm .see{display:block;margin-top:.3rem;font:400 .74rem var(--mono);color:var(--muted)}
.gterm .see a{color:var(--signal)}
@media (max-width:640px){.gterm{grid-template-columns:1fr;gap:.15rem}}

/* ---------- hub ---------- */
.hub{display:grid;gap:2.2rem;padding-block:1.7rem 3.4rem}
.hub section{display:grid;gap:.6rem}
.hub .rows{border-top:1px solid var(--line)}

/* ---------- 404 ---------- */
.nf{display:grid;gap:1rem;padding-block:3.6rem 5rem;min-height:45vh;
  align-content:center;justify-items:start}
.nf .err{color:var(--red)}
.nf h1{font:800 clamp(2.2rem,6vw,3.6rem)/0.95 var(--display);font-stretch:66%;
  text-transform:uppercase;letter-spacing:-.01em}
.nf .dek{font:400 1.08rem/1.55 var(--serif);color:var(--ink-2);max-width:36rem}
.nf .bigsearch{margin-top:.6rem}
.nf-pillars{list-style:none;margin:1.4rem 0 0;padding:0;columns:2;column-gap:2.5rem;
  font:400 .8rem/2 var(--mono);max-width:40rem}
.nf-pillars li{padding:.22rem 0;break-inside:avoid}
.nf-pillars a{text-decoration:none;color:var(--ink-2);border-bottom:1px solid var(--line-2)}
.nf-pillars a:hover{color:var(--signal);border-color:var(--signal)}
@media (max-width:520px){.nf-pillars{columns:1}}

/* ---------- footer ---------- */
.foot{border-top:2px solid var(--line);margin-top:2.4rem;padding-block:1.8rem 2.6rem}
.closing{padding-block:1.4rem 1.9rem;border-bottom:1px solid var(--line);margin-bottom:2rem}
.closing-t{font:800 clamp(1.9rem,4.6vw,3.4rem)/1 var(--display);font-stretch:66%;
  text-transform:uppercase;letter-spacing:-.01em;margin:0}
.closing-t::after{content:"";display:inline-block;width:.5em;height:.82em;
  background:var(--signal);margin-left:.18em;animation:blink 1.1s steps(2,start) infinite}
.closing-by{font:400 .8rem/1.6 var(--mono);color:var(--muted);margin:.8rem 0 0}
.closing-by a{color:var(--ink-2);text-decoration:underline;
  text-decoration-color:var(--line-2);text-underline-offset:3px}
.closing-by a:hover{color:var(--signal);text-decoration-color:var(--signal)}
.foot .in{display:grid;grid-template-columns:2.2fr 1fr 1fr 1fr;gap:2rem}
.foot .mission p{font:400 .9rem/1.6 var(--serif);color:var(--ink-2);
  max-width:30rem;margin-top:.75rem}
.foot ul{list-style:none;margin:.55rem 0 0;padding:0;display:grid;gap:.3rem}
.foot ul a{font:400 .78rem/1.7 var(--mono);text-decoration:none;color:var(--ink-2)}
.foot ul a:hover{color:var(--signal)}
.foot .base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.6rem 2rem;
  margin-top:2rem;padding-top:1rem;border-top:1px solid var(--line);
  font:400 .7rem/1.7 var(--mono);color:var(--muted)}
.foot .trackers{display:inline-flex;align-items:center;gap:.5rem;color:var(--ink-2)}
.foot .trackers i{width:7px;height:7px;background:var(--signal);display:inline-block;flex:none}
.fp{font:400 .68rem/1.7 var(--mono);letter-spacing:.1em}
.fp-l{color:var(--ink-2);text-transform:uppercase;margin-right:.5rem}
.foot .base a{color:var(--ink-2);text-decoration:underline;text-underline-offset:2px}
.foot .base a:hover{color:var(--signal)}
@media (max-width:960px){.foot .in{grid-template-columns:1fr 1fr 1fr}.foot .mission{grid-column:1/-1}}
@media (max-width:620px){.foot .in{grid-template-columns:1fr 1fr}}

/* ---------- overlays (search palette / menu) ---------- */
.scrim{position:fixed;inset:0;background:rgba(4,7,5,.62);z-index:60}
.sheet{position:fixed;left:0;right:0;top:0;z-index:62;display:grid;justify-items:center;
  padding:calc(12vh + env(safe-area-inset-top,0px)) 16px 0}
.sheet .panel{width:min(720px,100%);background:var(--surface);border:1px solid var(--signal);
  display:grid;max-height:78vh;box-shadow:0 24px 64px var(--shadow)}
.sp-in{display:flex;align-items:center;gap:.7rem;padding:.9rem 1rem;
  border-bottom:1px solid var(--line-2)}
.sp-p{color:var(--signal);font:600 1.02rem/1 var(--mono);flex:none}
.sheet input{width:100%;min-width:0;border:0;background:transparent;color:var(--ink);
  font:400 1rem/1.4 var(--mono);outline:none;caret-color:var(--signal)}
.sheet input::placeholder{color:var(--muted)}
.sheet .res{overflow-y:auto;max-height:60vh}
.sheet .res .row{padding-inline:1rem}
.sheet .res .row.sel,.sheet .res .row:hover{background:var(--raised);
  box-shadow:inset 2px 0 0 var(--signal)}
.sheet .res .empty-dir{padding:1.1rem 1rem}
.sheet .hint{font:400 .66rem/1.6 var(--mono);color:var(--muted);padding:.55rem 1rem;
  border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:1rem}
.mnav{display:grid}
.mnav a{display:block;padding:.95rem 1.2rem;border-bottom:1px solid var(--line);
  font:500 .92rem/1.3 var(--mono);text-decoration:none;color:var(--ink)}
.mnav a:last-child{border-bottom:0}
.mnav a:hover{background:var(--raised);color:var(--signal)}
.mnav a::before{content:"> ";color:var(--signal)}

/* ---------- motion / perf ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition:none!important;animation:none!important}
}
.band,.foot,.pgrid,.rows{content-visibility:auto;contain-intrinsic-size:auto 500px}
.rows{contain-intrinsic-size:auto 56px}

/* ---------- what's possible map ---------- */
.ident-wrap .cipher-svg{display:block;width:150px;height:150px;color:var(--signal)}
.possible{padding-block:1.6rem}
.pos-intro{font:400 1.02rem/1.6 var(--serif);color:var(--ink-2);max-width:var(--measure)}
.pos-controls{display:flex;flex-wrap:wrap;gap:.45rem;margin:1.5rem 0 .4rem;
  padding-bottom:1.2rem;border-bottom:1px solid var(--line)}
.pos-chip{font:600 .72rem/1 var(--mono);letter-spacing:.04em;color:var(--ink-2);
  background:var(--surface);border:1px solid var(--line-2);padding:.5rem .7rem;
  cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.pos-chip:hover{color:var(--signal);border-color:var(--signal-dim)}
.pos-chip[aria-pressed="true"]{background:var(--signal);border-color:var(--signal);
  color:var(--signal-ink)}
.pos-chip:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.scn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,21rem),1fr));
  gap:0;border-top:1px solid var(--line);border-left:1px solid var(--line);
  margin-top:1.4rem}
.scn{border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:1.15rem 1.2rem 1rem;display:flex;flex-direction:column;gap:.55rem;
  background:var(--bg)}
.scn:hover{background:var(--surface)}
.scn-h{display:flex;gap:.6rem;align-items:baseline}
.scn-idx{font:600 .72rem/1.4 var(--mono);color:var(--signal);letter-spacing:.08em;flex:none}
.scn h2{font:700 1.12rem/1.18 var(--display);color:var(--ink);margin:0}
.scn:hover h2{color:var(--signal)}
.scn-dek{font:400 .9rem/1.5 var(--serif);color:var(--ink-2)}
.scn-blocks{list-style:none;margin:.25rem 0 .2rem;padding:0;display:flex;
  flex-direction:column;border-top:1px solid var(--line)}
.scn-blocks li{border-bottom:1px solid var(--line)}
.scn-blocks a{display:flex;align-items:center;gap:.6rem;padding:.45rem .1rem;
  font:400 .86rem/1.3 var(--mono);color:var(--ink-2)}
.scn-blocks a:hover,.scn-blocks a:focus-visible{color:var(--signal)}
.scn-blocks .sb-n{font:600 .7rem/1 var(--mono);color:var(--signal-dim);flex:none}
.scn-blocks .sb-t{flex:1 1 auto;min-width:0}
.scn-blocks .bdg{flex:none}
.scn-pills{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto;padding-top:.5rem}
.scn-pill{display:inline-flex;align-items:center;gap:.3rem;font:600 .66rem/1 var(--mono);
  letter-spacing:.03em;color:var(--muted);border:1px solid var(--line);
  padding:.3rem .45rem}
.scn-pill .glyph{width:15px;height:15px;flex:none}
.scn-pill:hover{color:var(--signal);border-color:var(--signal-dim)}
.scn[hidden]{display:none}
.pos-foot{font:400 .9rem/1.6 var(--serif);color:var(--muted);margin-top:1.6rem;
  max-width:var(--measure)}
.pos-foot kbd{font:600 .72rem/1 var(--mono);border:1px solid var(--line-2);
  padding:.15em .4em;color:var(--ink-2)}
@media (max-width:540px){.scn-grid{grid-template-columns:1fr}}

/* home: what's possible call-to-action */
.possible-cta{position:relative;display:grid;gap:.5rem;align-content:start;
  padding:1.4rem 1.5rem;background:var(--surface);
  box-shadow:inset 0 0 0 1px var(--signal-dim)}
.possible-cta:hover{box-shadow:inset 0 0 0 1px var(--signal)}
.possible-cta .label{color:var(--signal)}
.possible-cta b{font:800 clamp(1.3rem,2.4vw,1.8rem)/1.08 var(--display);
  font-stretch:80%;color:var(--ink);max-width:28ch}
.possible-cta:hover b{color:var(--signal)}
.possible-cta p{font:400 1rem/1.55 var(--serif);color:var(--ink-2);max-width:60ch}
.possible-cta .meta{font:600 .74rem/1.5 var(--mono);color:var(--muted);letter-spacing:.04em}
