/* RWA — Real World Animal Exchange :: terminal stylesheet
   Layout law: nothing is repeat(N,1fr). Every grid has a dominant cell.

   DIFFERENTIATION (vs bedrock, the other RWA project):
     bedrock = warm stone ground, serif headlines, static tabular dossier.
     RWA     = cool cyan-slate ground, no serif, live board that moves.
   Ground moved off the shared near-black (#080a09 vs bedrock #0b0c0a) into
   a cool blue-teal register. Amber is retired here — it belongs to slabstat. */

:root{
  /* ── ground: cool cyan-slate, deliberately NOT bedrock's warm stone ──
   * Pixel audit of the first pass measured 92.2% of the frame inside a
   * SINGLE luminance bucket — the same defect bedrock was fixed for. The
   * ladder below spans five buckets (0-4) so raised surfaces actually read
   * as raised instead of as one flat teal field. */
  --sunk:#03090d;      /* recessed wells, table gutters  · bucket 0 */
  --bg:#071820;        /* page ground                    · bucket 1 */
  --panel:#0f2932;     /* raised panel                   · bucket 1 */
  --head:#143440;      /* panel header                   · bucket 2 */
  --panel-2:#1c4553;   /* panel hover / active row       · bucket 2 */
  --line:#275766;      /* hairline                       · bucket 3 */
  --line-2:#3a7182;    /* emphasised divider             · bucket 4 */

  /* ── ink: measured against every surface it lands on ─────────────────
   * --txt-3 carries labels and disclosure copy, so it must clear AA 4.5 on
   * the LIGHTEST surface it sits on (--panel-2 #1c4553). Measured:
   *   #8aa5b0 = 3.99:1 (fail) → #9ab4be = 4.76:1 (pass). */
  --txt:#e4eef2;
  --txt-2:#c2d4dc;
  --txt-3:#9ab4be;

  /* ── state: direction colours stay, they encode meaning ── */
  --up:#38d878;
  --dn:#ef5b55;
  /* signal accent replaces the retired --amber (slabstat owns amber) */
  --sig:#3fc9dd;
  --r:1px;

  /* spacing system — 4px base, no ad-hoc values below */
  --s1:4px; --s2:8px; --s3:12px; --s4:18px; --s5:28px; --s6:44px;

  /* type scale — 6 steps, deliberate gaps. The board runs the top end. */
  --t-board:clamp(26px,3.1vw,40px);
  --t-display:clamp(30px,3.8vw,48px);
  --t-lead:30px;
  --t-1:19px;
  --t-2:15px;
  --t-body:12.5px;
  --t-label:10px;

  /* ── type: IBM Plex retired here. It was running on three projects at
   * once (rwa-animal-exchange, bedrock, reverse-boiling-frog). ── */
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --sans:'Archivo Narrow','Arial Narrow',Arial,sans-serif;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;max-width:100%;overflow-x:hidden}
html{scroll-behavior:smooth}
/* anchors land with breathing room instead of flush against the edge */
#top,#markets,#sectors,#registry,#custody,#audit,#news,#rules{scroll-margin-top:18px}
body{
  background:var(--bg);color:var(--txt);
  font-family:var(--sans);font-size:var(--t-body);line-height:1.4;
  font-variant-numeric:tabular-nums lining-nums;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
h1,h2,h3{margin:0}
img{display:block;max-width:100%}
.num{text-align:right}
.up{color:var(--up)}
.dn{color:var(--dn)}
.flat{color:var(--txt-2)}
.mono{font-family:var(--mono)}

.wrap{max-width:1360px;margin:0 auto;padding:0 22px}

/* label — the one repeated micro-type, uppercase mono */
.lbl{
  font-family:var(--mono);font-size:var(--t-label);font-weight:600;
  letter-spacing:.1em;color:var(--txt-3);text-transform:uppercase;
}

/* ── live tape ─────────────────────────────────────────────── */
.tape{
  display:flex;align-items:stretch;
  background:var(--sunk);border-bottom:1px solid var(--line);
  height:32px;overflow:hidden;
}
.tape-label{
  flex:none;display:flex;align-items:center;gap:var(--s2);padding:0 var(--s4);
  font-family:var(--mono);font-size:var(--t-label);font-weight:600;letter-spacing:.1em;
  color:#fff;border-right:1px solid var(--line);background:var(--head);
}
.tape-dot{
  width:5px;height:5px;border-radius:50%;background:var(--up);
  animation:pulse 1.6s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}
.tape-view{flex:1;overflow:hidden;position:relative}
.tape-track{
  display:flex;align-items:center;gap:var(--s5);height:100%;
  white-space:nowrap;width:max-content;
  animation:tape 46s linear infinite;
}
@keyframes tape{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.tk{display:inline-flex;align-items:baseline;gap:7px;font-family:var(--mono);font-size:11px}
.tk-sym{color:var(--txt);font-weight:600;letter-spacing:.04em}
.tk-px{color:var(--txt-2);font-weight:400}
.tk-val{font-weight:500}
.tk-halt{color:var(--dn);font-weight:700;letter-spacing:.09em}
.tk-moon{color:var(--sig);font-weight:700;letter-spacing:.09em}

/* ── nav — only routes that exist ──────────────────────────── */
.nav{
  display:flex;align-items:center;gap:var(--s5);
  max-width:1360px;margin:0 auto;padding:var(--s3) 22px;
}
.brand{display:flex;align-items:center;gap:9px;flex:none;text-decoration:none}
.brand-mark{display:block;width:34px;height:34px}
.brand-wm{display:block;line-height:1}
.brand-a{display:block;font-family:var(--sans);font-weight:700;font-size:14px;letter-spacing:.15em;color:var(--txt);line-height:1}
.brand-b{display:block;font-family:var(--mono);font-weight:500;font-size:9px;letter-spacing:.22em;color:var(--txt-2);line-height:1;margin-top:4px}
.nav-links{display:flex;gap:var(--s4);margin-left:var(--s2);flex:1}
.nav-links a{
  display:inline-flex;align-items:center;
  font-family:var(--mono);font-size:11px;color:var(--txt-2);font-weight:500;
  letter-spacing:.06em;text-transform:uppercase;
  /* 34px tall: nav rows were 19px, under the 28px minimum touch target */
  min-height:34px;padding:0 0 3px;
  border-bottom:1px solid transparent;transition:color .15s,border-color .15s;
}
.nav-links a:hover{color:var(--txt);border-bottom-color:var(--line-2)}
.nav-links a.is-active{color:var(--txt);border-bottom-color:var(--sig)}
.nav-right{display:flex;align-items:center;gap:var(--s4);flex:none}

/* ── buttons ───────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);
  padding:9px var(--s4);border-radius:var(--r);
  font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;border:1px solid transparent;cursor:pointer;
  transition:filter .15s,background .15s,border-color .15s;
}
.btn-sm{padding:7px var(--s3);font-size:var(--t-label)}
.btn-primary{background:var(--sig);color:#03161b}
.btn-primary:hover{filter:brightness(1.08)}
.btn-ghost{background:transparent;color:var(--txt);border-color:var(--line-2)}
.btn-ghost:hover{background:var(--panel-2);border-color:var(--txt-3)}

/* ══ THE BOARD ═════════════════════════════════════════════════
   Hero is the quote board, not a sentence. bedrock opens with a
   register that sits still; this one opens with prices that move. */
.board{border-bottom:1px solid var(--line);background:var(--bg)}
.board-in{max-width:1360px;margin:0 auto;padding:var(--s4) 22px var(--s5)}

/* vital-signs rail — one dominant cell, then four */
.rail{
  display:grid;grid-template-columns:1.5fr 1fr 1.15fr .85fr 1fr;
  border:1px solid var(--line);background:var(--panel);margin-bottom:var(--s3);
}
.rail-cell{
  padding:var(--s3) var(--s4);border-right:1px solid var(--line);
  display:flex;flex-direction:column;gap:var(--s1);min-width:0;
}
.rail-cell:last-child{border-right:0}
.rail-idx{background:var(--panel-2)}
.rail-val{
  font-family:var(--mono);font-size:var(--t-lead);font-weight:500;
  letter-spacing:-.035em;line-height:1.05;
}
.rail-val.sm{font-size:var(--t-1)}
.rail-chg{font-family:var(--mono);font-size:var(--t-2);font-weight:600;letter-spacing:-.01em}
.rail-t{font-family:var(--mono);font-size:var(--t-1);font-weight:500;letter-spacing:-.01em}
.rail-note{font-family:var(--mono);font-size:9.5px;color:var(--txt-3);letter-spacing:.05em}
.bd-breadth{display:flex;align-items:baseline;gap:var(--s2);flex-wrap:wrap}
.bd-breadth b{font-family:var(--mono);font-size:var(--t-1);font-weight:600;letter-spacing:-.02em}
.bd-breadth i{font-family:var(--mono);font-style:normal;font-size:9px;color:var(--txt-3);letter-spacing:.08em;margin-right:var(--s2)}
.feedstate{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:var(--t-2);font-weight:600}
.fd-dot{width:6px;height:6px;background:var(--up);animation:pulse 1.6s ease-in-out infinite;flex:none}

/* the board grid — dominant first cell, split-flap update */
.bd-wrap{border:1px solid var(--line);background:var(--panel)}
.bd-head{
  display:flex;align-items:center;justify-content:space-between;gap:var(--s4);
  padding:var(--s2) var(--s4);border-bottom:1px solid var(--line);background:var(--head);
}
.bd-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr}
.bq{
  display:flex;flex-direction:column;gap:var(--s2);
  padding:var(--s3) var(--s4);
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  transition:background .15s;min-width:0;
}
.bq:hover{background:var(--panel-2)}
.bq-top{display:flex;align-items:center;gap:var(--s2);min-width:0}
.bq img{width:22px;height:22px;object-fit:cover;border:1px solid var(--line-2);flex:none}
.bq-tk{font-family:var(--mono);font-size:11.5px;font-weight:700;letter-spacing:.07em;color:var(--txt-2)}
.bq-nm{font-size:10px;color:var(--txt-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.bq-px{
  font-family:var(--mono);font-size:var(--t-1);font-weight:500;
  letter-spacing:-.035em;line-height:1;
}
.bq-lead .bq-px{font-size:var(--t-board)}
.bq-bot{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s2)}
.bq-ch{font-family:var(--mono);font-size:var(--t-2);font-weight:600;letter-spacing:-.02em}
.bq-lead .bq-ch{font-size:var(--t-1)}
.bq-st{font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.09em;color:var(--txt-3)}
.bq-st.is-halt{color:var(--dn)}
.bq-st.is-moon{color:var(--sig)}
/* split-flap: the digit block flips when the quote reprints */
.bq-px.flip{animation:flap .34s cubic-bezier(.2,.7,.3,1)}
@keyframes flap{
  0%{transform:perspective(220px) rotateX(0);opacity:1}
  46%{transform:perspective(220px) rotateX(-74deg);opacity:.35}
  100%{transform:perspective(220px) rotateX(0);opacity:1}
}
.bd-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);padding:var(--s2) var(--s4)}
.bd-chart{display:block;width:100%;height:74px}

/* subject strip — the actual listings, doubles as navigation */
.strip{border-top:1px solid var(--line);background:var(--panel);display:flex;overflow-x:auto;scrollbar-width:none}
.strip::-webkit-scrollbar{display:none}
.strip a{
  flex:none;display:flex;align-items:center;gap:var(--s2);
  padding:var(--s2) var(--s4);border-right:1px solid var(--line);transition:background .15s;
}
.strip a:hover{background:var(--panel-2)}
.strip img{width:26px;height:26px;object-fit:cover;border:1px solid var(--line-2);flex:none}
.strip-tk{font-family:var(--mono);font-size:11.5px;font-weight:700;letter-spacing:.05em}
.strip-ch{font-family:var(--mono);font-size:11.5px;font-weight:500}

/* ══ metrics — dominant cell, not 5 equal boxes ═════════════ */
.metrics{
  display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:0;
  margin:var(--s5) 0 var(--s4);border:1px solid var(--line);
}
.mc{
  background:var(--panel);border-right:1px solid var(--line);border-radius:0;
  padding:var(--s3) var(--s4) var(--s3);min-height:96px;
  display:flex;flex-direction:column;justify-content:space-between;gap:var(--s2);
}
.mc:last-child{border-right:0}
.mc-lead{background:var(--panel-2)}
.mc-val{font-family:var(--mono);font-size:var(--t-1);font-weight:500;letter-spacing:-.035em}
.mc-lead .mc-val{font-size:var(--t-lead)}
.mc-row{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s3)}
.mc-sub{font-family:var(--mono);font-size:11.5px;font-weight:500}
.mc-spark{flex:none}

/* ══ panels / table ════════════════════════════════════════ */
.grid-main{display:grid;grid-template-columns:minmax(0,1fr) 296px;gap:var(--s4);align-items:start}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.panel-head{
  display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);background:var(--head);
}
.panel-head h2{font-family:var(--mono);font-size:var(--t-label);letter-spacing:.1em;font-weight:600;text-transform:uppercase}
.ph-note{font-family:var(--mono);font-size:var(--t-label);color:var(--txt-3);letter-spacing:.06em}
.ph-note b{color:var(--up);font-weight:600}

.tbl-scroll{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;min-width:840px}
.tbl thead th{
  font-family:var(--mono);font-size:9.5px;letter-spacing:.09em;color:var(--txt-3);
  font-weight:500;text-align:left;padding:var(--s2) var(--s3);
  border-bottom:1px solid var(--line);white-space:nowrap;text-transform:uppercase;
}
.tbl thead th.num{text-align:right}
.tbl thead th.sortable{cursor:pointer;user-select:none;transition:color .15s}
.tbl thead th.sortable:hover{color:var(--txt)}
.tbl thead th.sorted{color:var(--txt)}
.tbl tbody td{
  padding:var(--s2) var(--s3);border-bottom:1px solid rgba(39,87,102,.55);
  font-size:var(--t-body);white-space:nowrap;
}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl tbody tr{cursor:pointer;transition:background .12s}
.tbl tbody tr:hover{background:var(--panel-2)}
.tbl tbody tr.is-halt td{color:var(--txt-3)}
.td-tk{display:flex;align-items:center;gap:var(--s3)}
.thumb{
  width:23px;height:23px;border-radius:var(--r);object-fit:cover;flex:none;
  border:1px solid var(--line-2);background:var(--sunk);
}
.tk-name{font-family:var(--mono);font-weight:700;font-size:12.5px;letter-spacing:.05em}
.td-num{font-family:var(--mono);font-size:12.5px;text-align:right}
.td-num.tick-up{animation:flashUp .5s ease-out}
.td-num.tick-dn{animation:flashDn .5s ease-out}
@keyframes flashUp{0%{background:rgba(56,216,120,.16)}100%{background:transparent}}
@keyframes flashDn{0%{background:rgba(239,91,85,.16)}100%{background:transparent}}
.pop{display:flex;align-items:center;gap:var(--s2);justify-content:flex-end}
.pop-bar{width:38px;height:3px;background:var(--line);flex:none}
.pop-bar i{display:block;height:100%;background:var(--txt-3)}
.pill{
  display:inline-block;padding:2px 6px;border-radius:var(--r);
  font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.08em;
  color:var(--up);background:rgba(56,216,120,.06);border-left:2px solid var(--up);
}
.pill-halt{color:var(--dn);background:rgba(239,91,85,.06);border-left-color:var(--dn)}
.pill-moon{color:var(--sig);background:rgba(63,201,221,.08);border-left-color:var(--sig)}
.halt-why{font-family:var(--mono);font-size:9px;color:var(--txt-3);letter-spacing:.04em}

/* movers */
.movers{display:flex;flex-direction:column;gap:var(--s4)}
.mv-list{list-style:none;margin:0;padding:var(--s1) 0}
.mv-list li{display:flex;align-items:center;gap:var(--s3);padding:var(--s2) var(--s4)}
.mv-list li + li{border-top:1px solid rgba(39,87,102,.5)}
.mv-rank{font-family:var(--mono);font-size:9.5px;color:var(--txt-3);flex:none;width:12px}
.mv-tk{font-family:var(--mono);font-size:12.5px;font-weight:700;letter-spacing:.05em;flex:1}
.mv-chg{font-family:var(--mono);font-size:12.5px;font-weight:500}

/* ══ sectors — heat rows sorted by value, dominant leader ═══ */
.sec-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4);
  margin:var(--s6) 0 var(--s3);padding-bottom:var(--s2);border-bottom:1px solid var(--line);
}
.sec-head h2{font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;font-weight:700;text-transform:uppercase}
.sec-head p{margin:0;font-family:var(--mono);font-size:var(--t-label);color:var(--txt-3);letter-spacing:.05em}
.sec-grid{
  display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr) minmax(0,1fr);
  gap:0;border:1px solid var(--line);background:var(--panel);
}
.sec{
  padding:var(--s3) var(--s4);border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  display:flex;flex-direction:column;gap:var(--s2);transition:background .15s;
}
.sec:hover{background:var(--panel-2)}
.sec-lead{grid-row:span 2;justify-content:space-between}
.sec-name{font-size:var(--t-2);font-weight:600;color:var(--txt);letter-spacing:-.01em}
.sec-lead .sec-name{font-size:var(--t-1)}
.sec-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3)}
.sec-chg{font-family:var(--mono);font-size:var(--t-2);font-weight:700;letter-spacing:-.02em}
.sec-lead .sec-chg{font-size:26px}
.sec-heat{height:2px;background:var(--line);position:relative}
.sec-heat i{position:absolute;top:0;left:0;height:100%}
.sec-meta{font-family:var(--mono);font-size:9.5px;color:var(--txt-3);letter-spacing:.05em}

/* ══ REGISTRY — the RWA half of an RWA site ════════════════
   Markets prove liquidity; the registry proves the asset exists.
   Deliberately calmer than the board: no motion, no colour-coded
   direction, everything is an identifier or a document. */
.reg-wrap{border:1px solid var(--line);background:var(--panel)}
.reg-head,.reg-row{
  display:grid;
  grid-template-columns:minmax(150px,1.5fr) minmax(104px,.85fr) minmax(160px,1.25fr) minmax(88px,.7fr) minmax(96px,.72fr) minmax(120px,.9fr);
  column-gap:var(--s4);align-items:center;min-width:840px;
}
.reg-scroll{overflow-x:auto}
.reg-head{
  height:28px;padding:0 var(--s4);background:var(--head);
  border-bottom:1px solid var(--line);
  font-family:var(--mono);font-size:9px;letter-spacing:.09em;color:var(--txt-3);text-transform:uppercase;
}
.reg-row{padding:var(--s3) var(--s4);border-bottom:1px solid rgba(39,87,102,.55);transition:background .12s}
.reg-row:last-child{border-bottom:0}
.reg-row:hover{background:var(--panel-2)}
.reg-asset{display:flex;align-items:center;gap:var(--s3);min-width:0}
.reg-asset b{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.05em;display:block}
.reg-asset small{display:block;color:var(--txt-3);font-size:9.5px;margin-top:2px}
.reg-id{font-family:var(--mono);font-size:11px;color:var(--txt-2);letter-spacing:.04em}
.reg-cust{font-size:var(--t-body);color:var(--txt);line-height:1.3}
.reg-cust small{display:block;color:var(--txt-3);font-family:var(--mono);font-size:9px;letter-spacing:.05em;margin-top:2px}
.reg-date{font-family:var(--mono);font-size:11px;color:var(--txt-2)}
.reg-att{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.07em}
.reg-att i{width:5px;height:5px;flex:none;border-radius:50%}
.att-ok i{background:var(--up)} .att-ok{color:var(--up)}
.att-due i{background:var(--sig)} .att-due{color:var(--sig)}
.att-lapsed i{background:var(--dn)} .att-lapsed{color:var(--dn)}
.reg-doc{
  /* 28px min box: measured 14px, under the touch-target floor */
  display:inline-flex;align-items:center;min-height:28px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;color:var(--txt-2);
  border-bottom:1px dotted var(--line-2);justify-self:start;
}
.reg-doc:hover{color:var(--sig);border-bottom-color:var(--sig)}

/* ══ CUSTODY — who is actually holding the thing ══════════ */
.cust-grid{
  display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);
  border:1px solid var(--line);background:var(--panel);
}
.cust{
  padding:var(--s4);border-right:1px solid var(--line);
  display:flex;flex-direction:column;gap:var(--s2);
}
.cust:last-child{border-right:0}
.cust-lead{background:var(--panel-2)}
.cust-n{font-size:var(--t-2);font-weight:700;letter-spacing:-.01em}
.cust-lead .cust-n{font-size:var(--t-1)}
.cust-m{display:flex;align-items:baseline;gap:var(--s2)}
.cust-m b{font-family:var(--mono);font-size:var(--t-1);font-weight:500;letter-spacing:-.03em}
.cust-lead .cust-m b{font-size:26px}
.cust p{margin:0;color:var(--txt-2);font-size:var(--t-body);line-height:1.5}
.cust-bar{height:2px;background:var(--line);position:relative;margin-top:var(--s1)}
.cust-bar i{position:absolute;inset:0 auto 0 0;background:var(--sig)}

/* ══ AUDIT TRAIL — append-only, newest first, no colour drama ══ */
.audit{border:1px solid var(--line);background:var(--panel)}
.aud-row{
  display:grid;grid-template-columns:132px 74px minmax(0,1fr) auto;
  gap:var(--s3);align-items:baseline;padding:var(--s3) var(--s4);
  border-bottom:1px solid rgba(39,87,102,.55);
}
.aud-row:last-child{border-bottom:0}
.aud-ts{font-family:var(--mono);font-size:10px;color:var(--txt-3);letter-spacing:.04em;white-space:nowrap}
.aud-kind{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.08em;color:var(--txt-2);white-space:nowrap}
.aud-kind.k-halt{color:var(--dn)} .aud-kind.k-list{color:var(--up)} .aud-kind.k-att{color:var(--sig)}
.aud-t{font-size:var(--t-body);line-height:1.45}
.aud-t b{font-family:var(--mono);font-weight:700;letter-spacing:.05em}
.aud-hash{font-family:var(--mono);font-size:9px;color:var(--txt-3);letter-spacing:.04em;white-space:nowrap}

/* ══ news — 1 lead + dense wire, not 6 identical cards ═════ */
.news-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:var(--s4);align-items:start}
.news-lead{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;display:block;transition:border-color .15s;
}
.news-lead:hover{border-color:var(--line-2)}
.news-lead img{width:100%;height:250px;object-fit:cover}
.news-lead-body{padding:var(--s4);display:flex;flex-direction:column;gap:var(--s2)}
.news-lead h3{font-size:23px;font-weight:700;line-height:1.14;letter-spacing:-.025em}
.news-lead p{margin:0;color:var(--txt-2);font-size:var(--t-body);line-height:1.55;max-width:52ch}
.news-meta{display:flex;align-items:center;gap:var(--s3);margin-top:var(--s1)}
.wire{border:1px solid var(--line);background:var(--panel);border-radius:var(--r)}
.wire a{
  display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:var(--s3);
  align-items:baseline;padding:var(--s3) var(--s4);
  border-bottom:1px solid rgba(39,87,102,.55);transition:background .12s;
}
.wire a:last-child{border-bottom:0}
.wire a:hover{background:var(--panel-2)}
.wire-tk{font-family:var(--mono);font-size:var(--t-label);font-weight:700;letter-spacing:.06em;color:var(--txt-3)}
.wire-t{font-size:var(--t-body);line-height:1.42;font-weight:500}
.wire-age{font-family:var(--mono);font-size:9.5px;color:var(--txt-3);letter-spacing:.05em;white-space:nowrap}

/* ══ compliance strip — carries the voice, deadpan ═════════ */
.comply{margin-top:var(--s6);border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--panel)}
.comply-in{
  max-width:1360px;margin:0 auto;padding:var(--s4) 22px;
  display:grid;grid-template-columns:minmax(0,1.42fr) minmax(0,1fr) minmax(0,.82fr);gap:var(--s5);
}
.cmp{display:flex;flex-direction:column;gap:var(--s2)}
.cmp:first-child p{font-size:var(--t-2);line-height:1.5;color:var(--txt)}
.cmp p{margin:0;font-size:var(--t-body);color:var(--txt-2);line-height:1.55}

/* ── footer ────────────────────────────────────────────────── */
.foot{
  max-width:1360px;margin:var(--s5) auto 0;padding:var(--s4) 22px var(--s6);
  display:flex;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.07em;color:var(--txt-3);
}

/* ── responsive ────────────────────────────────────────────── */
@media(max-width:1100px){
  .rail{grid-template-columns:1.5fr 1fr 1.15fr}
  .rail-cell:nth-child(3){border-right:0}
  .rail-cell:nth-child(n+4){border-top:1px solid var(--line)}
  .rail-cell:nth-child(5){border-right:0}
  .bd-grid{grid-template-columns:1.6fr 1fr 1fr}
  .metrics{grid-template-columns:1.6fr 1fr 1fr}
  .metrics .mc:nth-child(4){border-right:0}
  .metrics .mc:nth-child(n+4){border-top:1px solid var(--line)}
  .grid-main{grid-template-columns:1fr}
  .sec-grid{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
  .cust-grid{grid-template-columns:1fr 1fr}
  .cust:nth-child(2){border-right:0}
  .cust:nth-child(n+3){border-top:1px solid var(--line)}
  .news-grid{grid-template-columns:1fr}
  /* keep every route reachable — scroll the rail, never hide links */
  .nav-links{
    display:flex;overflow-x:auto;scrollbar-width:none;
    flex:1 1 auto;min-width:0;gap:var(--s4);
    -webkit-overflow-scrolling:touch;
    mask-image:linear-gradient(90deg,#000 90%,transparent);
  }
  .nav-links::-webkit-scrollbar{display:none}
  .nav-links a{white-space:nowrap;flex:none}
  .comply-in{grid-template-columns:1fr 1fr}
  .aud-row{grid-template-columns:118px 68px minmax(0,1fr)}
  .aud-hash{grid-column:3;justify-self:start}
}
@media(max-width:760px){
  .board-in{padding:var(--s3) 14px var(--s4)}
  .rail{grid-template-columns:1fr 1fr}
  .rail-cell{border-right:1px solid var(--line)}
  .rail-cell:nth-child(2n){border-right:0}
  .rail-cell:nth-child(n+3){border-top:1px solid var(--line)}
  .rail-idx{grid-column:span 2}
  .bd-grid{grid-template-columns:1fr 1fr}
  .bq:nth-child(2n){border-right:0}
  .bq-lead{grid-column:span 2}
  .metrics{grid-template-columns:1fr 1fr;margin-top:var(--s4)}
  .metrics .mc{border-right:1px solid var(--line)}
  .metrics .mc:nth-child(2n){border-right:0}
  .metrics .mc:nth-child(n+3){border-top:1px solid var(--line)}
  .mc-lead{grid-column:span 2}
  /* sectors measured 853px tall for 357 chars (0.42 chars/px) when stacked
   * 1-up — a long sparse scroll. Two columns halves it. */
  .sec-grid{grid-template-columns:1fr 1fr}
  .sec{padding:var(--s2) var(--s3)}
  .sec:nth-child(2n){border-right:0}
  .sec-lead{grid-row:auto;grid-column:span 2}
  .cust-grid{grid-template-columns:1fr}
  .cust{border-right:0;border-bottom:1px solid var(--line)}
  .cust:last-child{border-bottom:0}
  .news-lead img{height:190px}
  .news-lead h3{font-size:19px}
  .wrap{padding:0 14px}
  .nav{padding:var(--s3) 14px;gap:var(--s3)}
  .brand-mark{width:29px;height:29px}
  .brand-a{font-size:12px}
  .brand-b{font-size:9px;letter-spacing:.18em}
  .comply-in{grid-template-columns:1fr;gap:var(--s4);padding:var(--s4) 14px}
  .foot{padding:var(--s4) 14px var(--s5)}
  .bd-chart{height:62px}
}
@media(max-width:430px){
  /* the board stays 2-up here on purpose. Stacking to 1 column measured a
   * 1497px hero at 0.5 chars/px — a sparse stretch the user has to scroll
   * past before reaching anything. Two columns keeps the board a board. */
  .bd-grid{grid-template-columns:1fr 1fr}
  .bq{padding:var(--s2) var(--s3);gap:var(--s1)}
  .bq:nth-child(2n){border-right:0}
  .bq-nm{display:none}
  .bq-lead{grid-column:span 2}
  .rail{grid-template-columns:1fr 1fr}
  .rail-cell{padding:var(--s2) var(--s3)}
  .rail-cell:nth-child(2n){border-right:0}
  .rail-idx{grid-column:span 2}
}
@media(prefers-reduced-motion:reduce){
  .tape-track,.tape-dot,.fd-dot{animation:none}
  .td-num.tick-up,.td-num.tick-dn,.bq-px.flip{animation:none}
}
