/* ==========================================================================
   naijaOS — Practical intelligence for living and working in Nigeria
   Design system: terminal-on-paper. Field manual + public intelligence desk.
   ========================================================================== */

/* ---- TOKENS -------------------------------------------------------------- */
:root {
  /* Colour */
  --paper:      #f4f1e9;   /* warm newsprint */
  --paper-2:    #ece7d9;   /* panel tint */
  --paper-3:    #e3ddcc;   /* deeper panel / hover */
  --ink:        #16140d;   /* near-black, warm */
  --ink-soft:   #5c574a;   /* secondary text */
  --ink-faint:  #8a8473;   /* captions, disabled */
  --signal:     #11704a;   /* institutional green */
  --signal-2:   #0c5236;   /* darker green */
  --warn:       #a52415;   /* oxblood warning red */
  --warn-tint:  #f3e6e2;   /* warn wash */
  --rule:       #16140d;   /* hairline = ink */
  --rule-soft:  rgba(22,20,13,.16);

  /* Type */
  --f-serif: 'Newsreader', Georgia, 'Times New Roman', serif;
  --f-sans:  'Archivo', 'Helvetica Neue', Arial, sans-serif;
  --f-mono:  'IBM Plex Mono', 'SFMono-Regular', Menlo, Consolas, monospace;

  /* Scale (mobile-first) */
  --step--1: 0.78rem;
  --step-0:  1rem;
  --step-1:  1.18rem;
  --step-2:  1.42rem;
  --step-3:  1.78rem;
  --step-4:  2.25rem;
  --step-5:  2.9rem;

  /* Spacing */
  --s-1: 0.35rem;
  --s-2: 0.65rem;
  --s-3: 1rem;
  --s-4: 1.5rem;
  --s-5: 2.25rem;
  --s-6: 3.25rem;
  --s-7: 4.75rem;

  /* Frame */
  --bw: 1.5px;             /* primary border weight */
  --maxw: 1140px;          /* wide grids */
  --readw: 720px;          /* prose */
  --pad: 1.15rem;          /* gutter */
}

@media (min-width: 760px){
  :root{
    --step-4: 2.6rem;
    --step-5: 3.6rem;
    --pad: 1.6rem;
  }
}

/* ---- RESET --------------------------------------------------------------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } *{ animation:none!important; transition:none!important; } }
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--f-serif); font-size:var(--step-0); line-height:1.62;
  font-synthesis:none; text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }
h1,h2,h3,h4{ margin:0; line-height:1.12; font-weight:600; }
p{ margin:0 0 1em; }
ul,ol{ margin:0 0 1em; padding-left:1.2em; }
hr{ border:0; border-top:var(--bw) solid var(--ink); margin:var(--s-5) 0; }

/* ---- UTILITY ------------------------------------------------------------- */
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad); }
.read{ max-width:var(--readw); }
.mono{ font-family:var(--f-mono); }
.sans{ font-family:var(--f-sans); }
.eyebrow{
  font-family:var(--f-mono); font-size:var(--step--1); letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-soft);
}
.skip{ position:absolute; left:-999px; top:0; background:var(--ink); color:var(--paper); padding:.5rem .9rem; z-index:200; }
.skip:focus{ left:.5rem; top:.5rem; }
:focus-visible{ outline:2.5px solid var(--signal); outline-offset:2px; }

/* ---- STATUS BAR ---------------------------------------------------------- */
.statusbar{
  background:var(--ink); color:var(--paper);
  font-family:var(--f-mono); font-size:.7rem; letter-spacing:.12em;
  text-transform:uppercase;
}
.statusbar__inner{
  display:flex; align-items:center; gap:1.1rem; height:34px; overflow:hidden;
  white-space:nowrap;
}
.statusbar__live{ display:inline-flex; align-items:center; gap:.45rem; color:#fff; }
.dot{
  width:7px; height:7px; border-radius:50%; background:var(--signal);
  box-shadow:0 0 0 0 rgba(34,197,94,.6); animation:pulse 2.4s infinite;
}
@keyframes pulse{
  0%{ box-shadow:0 0 0 0 rgba(28,160,100,.55); }
  70%{ box-shadow:0 0 0 7px rgba(28,160,100,0); }
  100%{ box-shadow:0 0 0 0 rgba(28,160,100,0); }
}
.statusbar__sep{ opacity:.4; }
.statusbar__meta{ opacity:.82; }
.statusbar .hide-sm{ display:none; }
@media (min-width:680px){ .statusbar .hide-sm{ display:inline; } }

/* ---- MASTHEAD ------------------------------------------------------------ */
.masthead{
  position:sticky; top:0; z-index:100; background:var(--paper);
  border-bottom:var(--bw) solid var(--ink);
}
.masthead__inner{ display:flex; align-items:center; justify-content:space-between; gap:1rem; min-height:60px; }
.wordmark{
  font-family:var(--f-sans); font-weight:800; font-size:1.32rem; letter-spacing:-.02em;
  text-decoration:none; color:var(--ink); display:inline-flex; align-items:baseline; gap:.05em;
}
.wordmark b{ color:var(--signal); font-weight:800; }
.wordmark .reg{ font-family:var(--f-mono); font-size:.6rem; letter-spacing:.1em; color:var(--ink-faint); transform:translateY(-.6em); }
.nav{ display:none; }
.nav a{
  font-family:var(--f-sans); font-weight:600; font-size:.86rem; letter-spacing:.01em;
  text-decoration:none; color:var(--ink); padding:.4rem 0; position:relative;
}
.nav a[aria-current="page"]{ color:var(--signal); }
.nav a:hover{ color:var(--signal); }
.nav__list{ display:flex; gap:1.35rem; align-items:center; }
.menu-btn{
  font-family:var(--f-mono); font-size:.72rem; letter-spacing:.12em; text-transform:uppercase;
  background:var(--ink); color:var(--paper); border:none; padding:.55rem .8rem; cursor:pointer;
}
.menu-btn:hover{ background:var(--signal-2); }
@media (min-width:900px){
  .nav{ display:block; }
  .menu-btn{ display:none; }
}
/* mobile drawer */
.drawer{
  display:none; border-bottom:var(--bw) solid var(--ink); background:var(--paper-2);
}
.drawer.open{ display:block; }
.drawer a{
  display:block; padding:.95rem var(--pad); border-top:1px solid var(--rule-soft);
  font-family:var(--f-sans); font-weight:600; text-decoration:none; color:var(--ink);
}
.drawer a:first-child{ border-top:none; }
.drawer a span{ font-family:var(--f-mono); font-size:.7rem; color:var(--ink-faint); float:right; }

/* ---- SIGNAL PANEL (signature) ------------------------------------------- */
.signal{ border:var(--bw) solid var(--ink); background:var(--paper); }
.signal__head{
  display:flex; align-items:center; justify-content:space-between;
  padding:.5rem .85rem; border-bottom:var(--bw) solid var(--ink); background:var(--ink); color:var(--paper);
  font-family:var(--f-mono); font-size:.68rem; letter-spacing:.13em; text-transform:uppercase;
}
.signal__head .dot{ background:var(--signal); }
.signal__grid{ display:grid; grid-template-columns:repeat(2,1fr); }
@media (min-width:560px){ .signal__grid{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:880px){ .signal__grid{ grid-template-columns:repeat(6,1fr); } }
.cell{
  padding:.8rem .85rem; border-right:1px solid var(--rule-soft); border-top:1px solid var(--rule-soft);
}
.cell:nth-child(-n+2){ border-top:none; }
@media (min-width:560px){ .cell:nth-child(-n+3){ border-top:none; } }
@media (min-width:880px){ .cell:nth-child(-n+6){ border-top:none; } .cell:last-child{ border-right:none; } }
.cell__label{ font-family:var(--f-mono); font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft); }
.cell__val{ font-family:var(--f-mono); font-weight:600; font-size:1.32rem; line-height:1.1; margin:.18rem 0 .1rem; }
.cell__trend{ font-family:var(--f-mono); font-size:.66rem; letter-spacing:.04em; }
.up{ color:var(--warn); }     /* rising cost = bad */
.down{ color:var(--signal); }
.flat{ color:var(--ink-faint); }
.signal__foot{
  padding:.5rem .85rem; border-top:var(--bw) solid var(--ink);
  font-family:var(--f-mono); font-size:.64rem; letter-spacing:.04em; color:var(--ink-soft);
  display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap;
}

/* ---- HERO ---------------------------------------------------------------- */
.hero{ border-bottom:var(--bw) solid var(--ink); }
.hero__grid{ display:grid; gap:var(--s-5); padding-block:var(--s-5) var(--s-5); }
@media (min-width:980px){ .hero__grid{ grid-template-columns:1.45fr 1fr; gap:var(--s-6); align-items:start; } }
.hero h1{
  font-family:var(--f-serif); font-weight:500; font-size:var(--step-5);
  letter-spacing:-.015em; line-height:1.03; margin-bottom:var(--s-3);
}
.hero__deck{ font-size:var(--step-1); color:var(--ink-soft); max-width:36ch; }
.hero__thesis{
  margin-top:var(--s-4); padding-top:var(--s-3); border-top:1px solid var(--rule-soft);
  font-family:var(--f-mono); font-size:.82rem; line-height:1.65; color:var(--ink);
}
.hero__thesis b{ color:var(--signal-2); }
.hero__routes{ display:flex; flex-wrap:wrap; gap:.55rem; margin-top:var(--s-4); }

/* ---- BUTTONS / TAGS ------------------------------------------------------ */
.btn{
  font-family:var(--f-mono); font-size:.72rem; letter-spacing:.1em; text-transform:uppercase;
  text-decoration:none; border:var(--bw) solid var(--ink); padding:.55rem .85rem;
  display:inline-flex; align-items:center; gap:.4rem; color:var(--ink); background:var(--paper);
  transition:background .15s,color .15s;
}
.btn:hover{ background:var(--ink); color:var(--paper); }
.btn--solid{ background:var(--ink); color:var(--paper); }
.btn--solid:hover{ background:var(--signal-2); border-color:var(--signal-2); }
.tag{
  font-family:var(--f-mono); font-size:.6rem; letter-spacing:.1em; text-transform:uppercase;
  border:1px solid var(--ink); padding:.16rem .4rem; color:var(--ink); display:inline-block;
}
.tag--signal{ background:var(--signal); color:#fff; border-color:var(--signal); }
.tag--warn{ background:var(--warn); color:#fff; border-color:var(--warn); }
.tag--soon{ color:var(--ink-faint); border-color:var(--rule-soft); }

/* ---- SECTION SCAFFOLD ---------------------------------------------------- */
.section{ padding-block:var(--s-6); border-bottom:var(--bw) solid var(--ink); }
.section--tight{ padding-block:var(--s-5); }
.section__head{
  display:flex; align-items:baseline; justify-content:space-between; gap:1rem;
  margin-bottom:var(--s-4); flex-wrap:wrap;
}
.section__title{ font-family:var(--f-sans); font-weight:800; font-size:var(--step-2); letter-spacing:-.01em; }
.section__num{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.13em; color:var(--ink-soft); text-transform:uppercase; }
.section__more{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.06em; text-decoration:none; color:var(--signal-2); border-bottom:1px solid currentColor; padding-bottom:1px; }

/* ---- SYSTEM GRID --------------------------------------------------------- */
.grid{ display:grid; gap:0; border:var(--bw) solid var(--ink); }
.grid--sys{ grid-template-columns:1fr; }
@media (min-width:620px){ .grid--sys{ grid-template-columns:1fr 1fr; } }
@media (min-width:980px){ .grid--sys{ grid-template-columns:repeat(4,1fr); } }
.syscard{
  display:flex; flex-direction:column; gap:.5rem; padding:1.05rem 1.1rem 1.2rem;
  text-decoration:none; color:var(--ink); background:var(--paper);
  border-right:1px solid var(--rule-soft); border-top:1px solid var(--rule-soft);
  min-height:148px; transition:background .15s;
}
.syscard:hover{ background:var(--paper-2); }
.syscard.is-soon{ cursor:default; }
.syscard.is-soon:hover{ background:var(--paper); }
.syscard__id{ font-family:var(--f-mono); font-size:.66rem; letter-spacing:.13em; color:var(--ink-soft); text-transform:uppercase; display:flex; justify-content:space-between; align-items:center; }
.syscard__name{ font-family:var(--f-sans); font-weight:800; font-size:1.16rem; letter-spacing:-.01em; }
.syscard__desc{ font-size:.92rem; color:var(--ink-soft); line-height:1.5; }
.syscard__go{ margin-top:auto; font-family:var(--f-mono); font-size:.66rem; letter-spacing:.08em; color:var(--signal-2); }
/* remove stray top borders on first row */
.grid--sys .syscard:nth-child(-n+1){ border-top:none; }
@media (min-width:620px){ .grid--sys .syscard:nth-child(-n+2){ border-top:none; } }
@media (min-width:980px){ .grid--sys .syscard:nth-child(-n+4){ border-top:none; } }

/* ---- LISTS OF CARDS (briefings / playbooks / field) ---------------------- */
.cards{ display:grid; gap:0; border:var(--bw) solid var(--ink); }
@media (min-width:760px){ .cards--2{ grid-template-columns:1fr 1fr; } }
@media (min-width:760px){ .cards--3{ grid-template-columns:repeat(3,1fr); } }
.card{
  display:flex; flex-direction:column; gap:.5rem; padding:1.1rem 1.15rem 1.2rem;
  text-decoration:none; color:var(--ink); background:var(--paper);
  border-top:1px solid var(--rule-soft); border-right:1px solid var(--rule-soft);
  transition:background .15s;
}
.card:hover{ background:var(--paper-2); }
.card:first-child{ border-top:none; }
.cards--2 .card:nth-child(-n+2),
.cards--3 .card:nth-child(-n+3){ border-top:none; }
.card__meta{ font-family:var(--f-mono); font-size:.64rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft); display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; }
.card__title{ font-family:var(--f-serif); font-weight:500; font-size:1.24rem; line-height:1.18; letter-spacing:-.01em; }
.card__dek{ font-size:.92rem; color:var(--ink-soft); line-height:1.5; }
.card__go{ margin-top:auto; font-family:var(--f-mono); font-size:.66rem; letter-spacing:.08em; color:var(--signal-2); padding-top:.3rem; }
.card.is-soon{ color:var(--ink-faint); }
.card.is-soon .card__title{ color:var(--ink-soft); }

/* field card list variant — compact, before/after read */
.field{ border-left:3px solid var(--signal); }
.field .card__title::before{ content:""; }

/* ---- FILTER TABS --------------------------------------------------------- */
.tabs{ display:flex; gap:0; border:var(--bw) solid var(--ink); margin-bottom:var(--s-4); overflow-x:auto; }
.tab{
  font-family:var(--f-mono); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase;
  background:var(--paper); color:var(--ink); border:none; border-right:1px solid var(--rule-soft);
  padding:.7rem 1rem; cursor:pointer; white-space:nowrap;
}
.tab:last-child{ border-right:none; }
.tab[aria-selected="true"]{ background:var(--ink); color:var(--paper); }
.tab:hover:not([aria-selected="true"]){ background:var(--paper-2); }

/* ==========================================================================
   ARTICLE / BRIEFING / PLAYBOOK / FIELD CARD
   ========================================================================== */
.doc{ padding-block:var(--s-5) var(--s-6); }
.doc__head{ border-bottom:var(--bw) solid var(--ink); padding-bottom:var(--s-4); margin-bottom:var(--s-5); }
.doc__kicker{
  font-family:var(--f-mono); font-size:.7rem; letter-spacing:.13em; text-transform:uppercase;
  color:var(--ink-soft); display:flex; flex-wrap:wrap; gap:.5rem 1rem; align-items:center; margin-bottom:var(--s-3);
}
.doc__kicker .sys{ color:var(--signal-2); }
.doc h1.doc__title{
  font-family:var(--f-serif); font-weight:500; font-size:var(--step-4); letter-spacing:-.015em;
  line-height:1.06; margin-bottom:var(--s-3);
}
.doc__deck{ font-size:var(--step-1); color:var(--ink-soft); max-width:42ch; line-height:1.5; }
.doc__byline{
  margin-top:var(--s-3); font-family:var(--f-mono); font-size:.7rem; letter-spacing:.06em;
  color:var(--ink-faint); display:flex; gap:1rem; flex-wrap:wrap;
}

/* table of contents */
.toc{
  border:var(--bw) solid var(--ink); padding:0; margin-bottom:var(--s-5); background:var(--paper-2);
}
.toc__label{ font-family:var(--f-mono); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:var(--paper); background:var(--ink); padding:.45rem .8rem; }
.toc__list{ list-style:none; margin:0; padding:.3rem 0; display:flex; flex-wrap:wrap; }
.toc__list a{
  font-family:var(--f-mono); font-size:.74rem; letter-spacing:.02em; text-decoration:none; color:var(--ink-soft);
  padding:.4rem .8rem; display:inline-flex; gap:.4rem; align-items:baseline;
}
.toc__list a .n{ color:var(--ink-faint); }
.toc__list a:hover{ color:var(--ink); }
.toc__list a.active{ color:var(--signal-2); }
@media (min-width:760px){ .toc__list{ flex-direction:column; flex-wrap:nowrap; } }

/* prose body */
.prose{ max-width:var(--readw); }
.prose h2{
  font-family:var(--f-sans); font-weight:800; font-size:var(--step-2); letter-spacing:-.01em;
  margin:var(--s-6) 0 var(--s-3); scroll-margin-top:88px; display:flex; align-items:baseline; gap:.6rem;
}
.prose h2 .s{ font-family:var(--f-mono); font-size:.8rem; color:var(--signal-2); font-weight:400; }
.prose h3{ font-family:var(--f-sans); font-weight:700; font-size:var(--step-1); margin:var(--s-5) 0 var(--s-2); }
.prose p{ font-size:1.06rem; line-height:1.7; }
.prose > p:first-of-type::first-letter,
.prose .dropcap::first-letter{
  font-family:var(--f-serif); font-weight:600; float:left; font-size:3.4em; line-height:.78;
  padding:.05em .12em 0 0; color:var(--ink);
}
.prose a{ color:var(--signal-2); text-underline-offset:3px; }

/* numbered breakdown rows */
.rows{ border:var(--bw) solid var(--ink); margin:var(--s-4) 0; }
.row{ display:grid; grid-template-columns:auto 1fr; gap:.9rem; padding:.9rem 1rem; border-top:1px solid var(--rule-soft); }
.row:first-child{ border-top:none; }
.row__n{ font-family:var(--f-mono); font-weight:600; font-size:.95rem; color:var(--signal-2); }
.row__b strong{ font-family:var(--f-sans); }
.row__b p{ margin:.25rem 0 0; font-size:.98rem; color:var(--ink-soft); line-height:1.55; }

/* data panel */
.panel{ border:var(--bw) solid var(--ink); margin:var(--s-4) 0; background:var(--paper); }
.panel__head{ background:var(--ink); color:var(--paper); font-family:var(--f-mono); font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; padding:.5rem .85rem; display:flex; justify-content:space-between; gap:1rem; }
.panel__body{ padding:.4rem .85rem .9rem; }
.panel__row{ display:flex; justify-content:space-between; gap:1rem; padding:.55rem 0; border-top:1px solid var(--rule-soft); font-family:var(--f-mono); font-size:.86rem; }
.panel__row:first-child{ border-top:none; }
.panel__row .k{ color:var(--ink-soft); }
.panel__row .v{ font-weight:600; }
.panel__note{ font-family:var(--f-mono); font-size:.64rem; color:var(--ink-faint); padding:.5rem .85rem; border-top:1px solid var(--rule-soft); }

/* reality check */
.reality{
  border:var(--bw) solid var(--warn); border-left-width:5px; background:var(--warn-tint);
  margin:var(--s-4) 0; padding:1rem 1.1rem;
}
.reality__label{ font-family:var(--f-mono); font-size:.66rem; letter-spacing:.13em; text-transform:uppercase; color:var(--warn); font-weight:600; margin-bottom:.35rem; }
.reality p{ margin:0; font-size:1rem; line-height:1.6; }
.reality p + p{ margin-top:.6rem; }

/* thesis block */
.thesis{
  border-top:var(--bw) solid var(--ink); border-bottom:var(--bw) solid var(--ink);
  padding:var(--s-5) 0; margin:var(--s-6) 0;
}
.thesis p{
  font-family:var(--f-serif); font-weight:400; font-size:var(--step-3); line-height:1.32;
  letter-spacing:-.01em; margin:0; max-width:24ch;
}
.thesis .eyebrow{ display:block; margin-bottom:var(--s-3); }

/* pull quote */
.pull{ font-family:var(--f-serif); font-style:italic; font-size:var(--step-2); line-height:1.4; color:var(--signal-2); margin:var(--s-4) 0; padding-left:1rem; border-left:3px solid var(--signal); }

/* checklist */
.check{ list-style:none; padding:0; margin:var(--s-3) 0; border:var(--bw) solid var(--ink); }
.check li{ display:flex; gap:.7rem; padding:.7rem 1rem; border-top:1px solid var(--rule-soft); font-size:.98rem; }
.check li:first-child{ border-top:none; }
.check li::before{ content:"□"; font-family:var(--f-mono); color:var(--signal-2); font-size:1.1rem; line-height:1.3; }

/* definition / who-this-is-for blocks (playbook + field card) */
.spec{ border:var(--bw) solid var(--ink); margin:var(--s-4) 0; }
.spec__row{ display:grid; grid-template-columns:1fr; border-top:1px solid var(--rule-soft); }
@media (min-width:620px){ .spec__row{ grid-template-columns:170px 1fr; } }
.spec__row:first-child{ border-top:none; }
.spec__k{ font-family:var(--f-mono); font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft); padding:.85rem 1rem .2rem; background:var(--paper-2); }
@media (min-width:620px){ .spec__k{ padding:.85rem 1rem; } }
.spec__v{ padding:.2rem 1rem .85rem; font-size:.98rem; line-height:1.55; }
@media (min-width:620px){ .spec__v{ padding:.85rem 1rem; border-left:1px solid var(--rule-soft); } }
.spec__v.warn{ color:var(--warn); }

/* routes out */
.routes{ display:grid; gap:0; border:var(--bw) solid var(--ink); margin-top:var(--s-3); }
@media (min-width:680px){ .routes{ grid-template-columns:1fr 1fr; } }
.route{
  text-decoration:none; color:var(--ink); padding:1rem 1.1rem; background:var(--paper);
  border-top:1px solid var(--rule-soft); border-right:1px solid var(--rule-soft); transition:background .15s;
  display:flex; flex-direction:column; gap:.25rem;
}
.route:hover{ background:var(--paper-2); }
.route:first-child,.routes .route:nth-child(2){ border-top:none; }
@media (max-width:679px){ .routes .route:nth-child(2){ border-top:1px solid var(--rule-soft); } }
.route__k{ font-family:var(--f-mono); font-size:.64rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft); }
.route__t{ font-family:var(--f-sans); font-weight:700; font-size:1.02rem; }
.route__t::after{ content:" →"; color:var(--signal-2); }

/* closing aphorism */
.aphorism{ text-align:center; padding:var(--s-6) var(--pad); border-bottom:var(--bw) solid var(--ink); }
.aphorism p{ font-family:var(--f-serif); font-style:italic; font-size:var(--step-3); line-height:1.35; max-width:26ch; margin:0 auto; }

/* ---- EDITORIAL DISCLAIMER ------------------------------------------------ */
.disclaimer{
  border:1px solid var(--rule-soft); background:var(--paper-2); padding:1rem 1.1rem; margin:var(--s-4) 0;
  font-family:var(--f-mono); font-size:.76rem; line-height:1.6; color:var(--ink-soft);
}
.disclaimer b{ color:var(--ink); }

/* ---- FOOTER -------------------------------------------------------------- */
.footer{ background:var(--ink); color:var(--paper); }
.footer__grid{ display:grid; gap:var(--s-4); padding-block:var(--s-6) var(--s-5); }
@media (min-width:720px){ .footer__grid{ grid-template-columns:1.4fr 1fr 1fr 1fr; } }
.footer h4{ font-family:var(--f-mono); font-size:.66rem; letter-spacing:.13em; text-transform:uppercase; color:#cfc9b8; margin-bottom:.7rem; }
.footer a{ display:block; text-decoration:none; color:var(--paper); opacity:.86; font-size:.92rem; padding:.22rem 0; }
.footer a:hover{ opacity:1; color:#9ee0bf; }
.footer__brand .wordmark{ color:var(--paper); }
.footer__brand .wordmark b{ color:#3fbf85; }
.footer__brand p{ opacity:.7; font-size:.9rem; max-width:34ch; margin-top:.6rem; }
.footer__base{
  border-top:1px solid rgba(255,255,255,.18); padding-block:1.1rem var(--s-5);
  font-family:var(--f-mono); font-size:.66rem; letter-spacing:.04em; color:#a9a392;
  display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap;
}

/* ---- PAGE INTRO (system / sources / editorial headers) ------------------- */
.pagehead{ border-bottom:var(--bw) solid var(--ink); padding-block:var(--s-5) var(--s-5); }
.pagehead h1{ font-family:var(--f-serif); font-weight:500; font-size:var(--step-4); letter-spacing:-.015em; line-height:1.06; margin:var(--s-3) 0; max-width:18ch; }
.pagehead__deck{ font-size:var(--step-1); color:var(--ink-soft); max-width:46ch; line-height:1.5; }

/* small toast for soon links */
.toast{
  position:fixed; left:50%; bottom:1.2rem; transform:translateX(-50%) translateY(140%);
  background:var(--ink); color:var(--paper); font-family:var(--f-mono); font-size:.74rem;
  letter-spacing:.04em; padding:.7rem 1rem; border:1px solid var(--signal); z-index:300;
  opacity:0; pointer-events:none; transition:transform .25s ease, opacity .25s ease;
}
.toast.show{ transform:translateX(-50%) translateY(0); opacity:1; pointer-events:auto; }
