/* ============================================================
   DEAD RECKONING — projection layer stylesheet
   The Political Atlas · CIONAOD Inc.
   Deliberately distinct from the main Atlas identity. This
   section must never be mistaken for sourced Atlas data.
   ============================================================ */

:root{
  --chart:#E9EDEF;
  --chart-2:#F5F7F8;
  --chart-3:#DFE5E8;
  --ink:#16222B;
  --ink-soft:#4A5A66;
  --ink-faint:#7C8A93;
  --rule:#C3CBD0;
  --rule-soft:#DCE2E5;
  --neg:#0F6E6E;
  --pos:#8A2B5E;
  --null:#C9A227;
  --null-bg:#F7F3E4;
  --null-ink:#8A6D0B;
  --ok:#2E7D4F;
  --maxw:1140px;
  --measure:70ch;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--chart);color:var(--ink);
  font-family:"Source Serif 4",Georgia,"Times New Roman",serif;
  font-size:17px;line-height:1.62;font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}
.narrow{max-width:820px}

h1,h2,h3,h4,h5,.disp{
  font-family:"Bricolage Grotesque","Helvetica Neue",Arial,sans-serif;
  font-weight:700;letter-spacing:-0.021em;line-height:1.08;
}
.mono,.mono *{font-family:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace}
p{max-width:var(--measure);margin:0 0 16px}
ul,ol{max-width:var(--measure);padding-left:22px}
li{margin-bottom:8px}
a{color:var(--pos);text-underline-offset:2px;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
strong{font-weight:600}
em{font-style:italic}
:focus-visible{outline:2.5px solid var(--pos);outline-offset:3px;border-radius:2px}

/* ---------------- top bar ---------------- */
.topbar{background:var(--ink);color:#C6D0D6;font-size:13.5px}
.topbar .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:6px 22px;padding-top:11px;padding-bottom:11px}
.topbar a{color:#C6D0D6;text-decoration:none}
.topbar a:hover{color:#fff;text-decoration:underline}
.topbar .home{font-family:"Bricolage Grotesque",sans-serif;font-weight:700;letter-spacing:-.01em;color:#fff;font-size:15px}
.topbar .sep{color:#4A5A66}
.topbar nav{display:flex;flex-wrap:wrap;gap:6px 18px;margin-left:auto;font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.05em}

/* standing disclaimer ribbon — appears on EVERY page in this section */
.ribbon{background:var(--null-bg);border-bottom:1px solid #E2CE8C;color:var(--null-ink)}
.ribbon .wrap{padding-top:9px;padding-bottom:9px;font-family:"IBM Plex Mono",monospace;font-size:11.5px;letter-spacing:.03em;line-height:1.5}
.ribbon b{font-weight:600}
.ribbon a{color:var(--null-ink)}

/* ---------------- masthead ---------------- */
.mast{border-bottom:2px solid var(--ink);background:var(--chart-2)}
.mast .wrap{padding-top:46px;padding-bottom:32px}
.eyebrow{font-family:"IBM Plex Mono",monospace;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 18px}
.eyebrow .fix{color:var(--pos)}
h1{font-size:clamp(33px,6vw,64px);margin:0 0 16px;max-width:19ch}
h1.long{max-width:24ch;font-size:clamp(28px,4.6vw,48px)}
.standfirst{font-size:clamp(17px,2.05vw,21.5px);max-width:64ch;color:var(--ink-soft);margin:0 0 26px;line-height:1.5}

.provenance{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0;border-top:1px solid var(--rule)}
.provenance div{padding:14px 18px 14px 0;border-right:1px solid var(--rule-soft)}
.provenance div:last-child{border-right:0;padding-right:0}
.provenance dt{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:5px}
.provenance dd{margin:0;font-size:14.5px;line-height:1.45}

/* ---------------- sections ---------------- */
section{padding:56px 0;border-bottom:1px solid var(--rule)}
section.tight{padding:38px 0}
section:last-of-type{border-bottom:0}
.sec-label{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--pos);margin:0 0 12px;display:flex;align-items:center;gap:9px}
.sec-label::before{content:"⊕";font-size:13px;line-height:1}
h2{font-size:clamp(25px,3.5vw,38px);margin:0 0 18px;max-width:26ch}
h3{font-size:20px;margin:34px 0 10px;max-width:34ch}
h4{font-size:15px;margin:22px 0 6px;font-weight:500;font-family:"Bricolage Grotesque",sans-serif}
.lede{font-size:19px;max-width:66ch}

/* ---------------- callouts ---------------- */
.callout{border-left:3px solid var(--null);background:var(--null-bg);padding:16px 20px;margin:24px 0;max-width:76ch}
.callout p:last-child{margin-bottom:0}
.callout .tag{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--null-ink);display:block;margin-bottom:6px;font-weight:600}
.callout.rule-box{border-left-color:var(--pos);background:#F7EFF3}
.callout.rule-box .tag{color:var(--pos)}

/* ---------------- video module ---------------- */
.source-module{border:1px solid var(--rule);background:var(--chart-2);margin:30px 0}
.source-head{border-bottom:1px solid var(--rule);padding:14px 20px;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:baseline}
.source-head .lbl{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--pos);font-weight:600}
.source-head .ttl{font-family:"Bricolage Grotesque",sans-serif;font-weight:500;font-size:15px}
.source-head .meta{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--ink-soft);margin-left:auto}
.embed{position:relative;width:100%;padding-top:56.25%;background:#0B1116}
.embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.source-foot{padding:12px 20px;font-size:13.5px;color:var(--ink-soft);border-top:1px solid var(--rule);line-height:1.5}

/* timestamp chips */
.ts{
  font-family:"IBM Plex Mono",monospace;font-size:12.5px;font-weight:500;
  background:var(--chart-3);border:1px solid var(--rule);border-radius:3px;
  padding:1px 7px 2px;color:var(--ink);text-decoration:none;white-space:nowrap;
  display:inline-block;line-height:1.5;cursor:pointer;
}
.ts:hover,.ts:focus{background:var(--pos);border-color:var(--pos);color:#fff}
.ts::before{content:"▸ ";font-size:10px}

/* ---------------- coordinate strips (signature) ---------------- */
.reading{border:1px solid var(--rule);background:var(--chart-2);margin:0 0 26px;padding:22px 24px 20px}
.reading.null-read{background:var(--null-bg);border-color:#E2CE8C}
.rd-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 16px;border-bottom:1px solid var(--rule);padding-bottom:12px;margin-bottom:6px}
.rd-id{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.14em;color:var(--pos);font-weight:600}
.rd-name{font-family:"Bricolage Grotesque",sans-serif;font-weight:700;font-size:21px;letter-spacing:-.02em}
.rd-src{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--ink-soft);margin-left:auto}
.rd-gloss{font-size:15px;color:var(--ink-soft);margin:12px 0 18px;max-width:76ch}

.strip{display:grid;grid-template-columns:52px 1fr 62px;align-items:center;gap:12px;padding:5px 0}
.strip .ax{font-family:"IBM Plex Mono",monospace;font-size:11px;font-weight:600;letter-spacing:.09em;color:var(--ink-soft)}
.track{position:relative;height:22px}
.track .line{position:absolute;top:10px;left:0;right:0;height:1px;background:var(--rule)}
.track .zero{position:absolute;top:3px;left:50%;width:1px;height:16px;background:var(--rule);transform:translateX(-.5px)}
.track .base{position:absolute;top:6px;width:1px;height:10px;background:#9AA7AF}
.track .dot{position:absolute;top:4px;width:14px;height:14px;border-radius:50%;transform:translateX(-7px);border:2px solid var(--chart-2)}
.track .dot.n{background:var(--neg)}
.track .dot.p{background:var(--pos)}
.track .dot.z{background:#7C8A93}
.track .span{position:absolute;top:9px;height:4px;background:rgba(201,162,39,.6);border-radius:2px}
.track .you{position:absolute;top:1px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:8px solid var(--ink);transform:translateX(-6px)}
.strip .val{font-family:"IBM Plex Mono",monospace;font-size:13px;font-weight:600;text-align:right}
.strip .val.n{color:var(--neg)}
.strip .val.p{color:var(--pos)}
.strip .val.z{color:#5E6C75}
.strip .val.x{color:var(--null-ink);font-size:11px}
.rd-foot{border-top:1px solid var(--rule);margin-top:14px;padding-top:12px;font-size:14.5px;line-height:1.55;color:var(--ink-soft);max-width:80ch}
.rd-foot b{color:var(--ink);font-weight:600}
.axkey{display:flex;flex-wrap:wrap;gap:6px 20px;font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--ink-soft);margin:18px 0 28px;padding:12px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}

/* ---------------- blind coder ---------------- */
.coder{border:2px solid var(--ink);background:var(--chart-2);margin:34px 0}
.coder-head{background:var(--ink);color:#fff;padding:16px 22px}
.coder-head .k{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;color:#9FD4D4;display:block;margin-bottom:5px}
.coder-head h3{font-family:"Bricolage Grotesque",sans-serif;font-size:22px;margin:0;color:#fff;max-width:30ch}
.coder-head p{font-size:14.5px;color:#B9C6CD;margin:8px 0 0;max-width:72ch}
.coder-body{padding:22px}
.coder-progress{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px;display:flex;gap:14px;flex-wrap:wrap}
.coder-q{font-family:"Bricolage Grotesque",sans-serif;font-weight:700;font-size:19px;margin:0 0 4px;max-width:40ch}
.coder-axis{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--pos);letter-spacing:.08em;margin-bottom:14px}
.evidence{background:var(--chart);border:1px solid var(--rule);padding:15px 18px;margin:0 0 18px;font-size:15px;line-height:1.55}
.evidence p{margin:0 0 10px;max-width:none}
.evidence p:last-child{margin:0}
.evidence .ev-lbl{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);display:block;margin-bottom:8px}

.anchors{margin:0 0 20px;font-size:13.5px}
.anchors table{width:100%;border-collapse:collapse;min-width:0}
.anchors th,.anchors td{padding:5px 10px 5px 0;border-bottom:1px solid var(--rule-soft);text-align:left;vertical-align:top}
.anchors td:first-child{font-family:"IBM Plex Mono",monospace;font-weight:600;width:52px;white-space:nowrap}

.slider-row{margin:20px 0 6px}
.slider-row input[type=range]{width:100%;accent-color:var(--pos);height:28px}
.slider-scale{display:flex;justify-content:space-between;font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--ink-faint);margin-top:-4px}
.slider-val{font-family:"IBM Plex Mono",monospace;font-size:34px;font-weight:600;text-align:center;margin:4px 0 2px;letter-spacing:-.02em}
.slider-hint{text-align:center;font-size:13px;color:var(--ink-soft);margin:0 0 16px;min-height:20px}

.btn{
  font-family:"Bricolage Grotesque",sans-serif;font-weight:500;font-size:15px;
  background:var(--ink);color:#fff;border:2px solid var(--ink);padding:10px 20px;
  cursor:pointer;border-radius:2px;letter-spacing:-.01em;
}
.btn:hover{background:var(--pos);border-color:var(--pos)}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.ghost:hover{background:var(--ink);color:#fff}
.btn.small{font-size:13.5px;padding:7px 14px}
.btn-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:6px}

.verdict{border-top:2px solid var(--ink);margin-top:20px;padding-top:18px}
.verdict .cmp{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule);margin-bottom:16px}
.verdict .cmp div{background:var(--chart-2);padding:12px 14px}
.verdict .cmp .lbl{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-soft);display:block;margin-bottom:4px}
.verdict .cmp .num{font-family:"IBM Plex Mono",monospace;font-size:26px;font-weight:600;letter-spacing:-.02em}
.verdict .rationale{font-size:14.5px;line-height:1.55;color:var(--ink-soft)}
.verdict .rationale b{color:var(--ink)}
.agree-band{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:3px 9px;border-radius:2px;display:inline-block;font-weight:600}
.agree-band.close{background:#DFF0E5;color:var(--ok)}
.agree-band.mid{background:var(--null-bg);color:var(--null-ink)}
.agree-band.far{background:#F7E3EC;color:var(--pos)}

/* coder card / share */
.cardout{border:2px solid var(--ink);background:var(--ink);color:#fff;padding:24px;margin:24px 0}
.cardout h4{color:#fff;font-family:"Bricolage Grotesque",sans-serif;font-weight:700;font-size:20px;margin:0 0 4px}
.cardout .sub{color:#9FD4D4;font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.13em;text-transform:uppercase;margin:0 0 16px}
.cardout .stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:16px;margin-bottom:18px}
.cardout .stats .num{font-family:"IBM Plex Mono",monospace;font-size:30px;font-weight:600;line-height:1;color:#fff}
.cardout .stats .lbl{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#8FA3AD;margin-top:5px}
.cardout .btn{background:#fff;color:var(--ink);border-color:#fff}
.cardout .btn:hover{background:var(--null);border-color:var(--null);color:var(--ink)}
.cardout p{color:#B9C6CD;font-size:14px}

/* ---------------- tables ---------------- */
.tbl-scroll{overflow-x:auto;margin:26px 0;border-bottom:1px solid var(--rule-soft)}
table.data{border-collapse:collapse;width:100%;min-width:640px;font-size:14.5px}
table.data caption{text-align:left;font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);padding-bottom:10px}
table.data th,table.data td{border-bottom:1px solid var(--rule-soft);padding:9px 14px 9px 0;text-align:left;vertical-align:top}
table.data thead th{border-bottom:1.5px solid var(--ink);font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--ink-soft)}
table.data td.num,table.data th.num{text-align:right;font-family:"IBM Plex Mono",monospace;padding-right:18px}
table.data tbody tr:hover{background:var(--chart-2)}

/* ---------------- status badges ---------------- */
.badge{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;font-weight:600;padding:3px 9px;border-radius:2px;display:inline-block;white-space:nowrap}
.badge.open{background:var(--chart-3);color:var(--ink-soft)}
.badge.sent{background:#E4EFF7;color:#1F5C82}
.badge.replied{background:#DFF0E5;color:var(--ok)}
.badge.declined{background:var(--chart-3);color:var(--ink-soft)}
.badge.hold{background:var(--null-bg);color:var(--null-ink)}
.badge.correct{background:#DFF0E5;color:var(--ok)}
.badge.wrong{background:#F7E3EC;color:var(--pos)}
.badge.failed{background:var(--null-bg);color:var(--null-ink)}

/* ---------------- reading index cards ---------------- */
.rlist{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);margin:30px 0}
.ritem{background:var(--chart-2);padding:22px 24px;display:grid;grid-template-columns:1fr auto;gap:8px 24px;align-items:start}
.ritem:hover{background:#fff}
.ritem .no{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.14em;color:var(--pos);font-weight:600;grid-column:1/-1}
.ritem h3{font-family:"Bricolage Grotesque",sans-serif;font-size:23px;margin:0 0 6px;max-width:30ch}
.ritem h3 a{color:var(--ink);text-decoration:none}
.ritem h3 a:hover{color:var(--pos);text-decoration:underline}
.ritem p{font-size:14.5px;color:var(--ink-soft);margin:0 0 10px;max-width:64ch}
.ritem .tags{display:flex;flex-wrap:wrap;gap:8px}
.ritem .side{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--ink-soft);text-align:right;line-height:1.7}

/* ---------------- counters ---------------- */
.counters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule);margin:28px 0}
.counters div{background:var(--chart-2);padding:18px}
.counters .num{font-family:"IBM Plex Mono",monospace;font-size:34px;font-weight:600;line-height:1;letter-spacing:-.02em}
.counters .num.null-n{color:var(--null-ink)}
.counters .lbl{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-top:7px;line-height:1.4}

/* ---------------- share kit ---------------- */
.sharekit{border:1px solid var(--rule);background:var(--chart-2);padding:22px 24px;margin:30px 0}
.sharekit h3{margin-top:0}
.postbox{border:1px solid var(--rule);background:var(--chart);padding:14px 16px;margin:0 0 12px;position:relative}
.postbox .plat{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-soft);display:block;margin-bottom:8px}
.postbox .txt{font-size:14.5px;line-height:1.5;white-space:pre-wrap;margin:0 0 12px;max-width:none;font-family:"Source Serif 4",serif}
.postbox .count{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--ink-faint);margin-left:10px}
.copied{color:var(--ok);font-family:"IBM Plex Mono",monospace;font-size:11.5px;margin-left:10px}

/* ---------------- footer ---------------- */
footer.site{background:var(--ink);color:#C6D0D6;padding:44px 0 56px;font-size:14px;margin-top:0}
footer.site h4{color:#fff;font-size:12.5px;letter-spacing:.13em;text-transform:uppercase;font-family:"IBM Plex Mono",monospace;font-weight:600;margin:0 0 12px}
footer.site a{color:#9FD4D4}
footer.site ul{padding-left:18px;max-width:82ch}
footer.site li{margin-bottom:6px;font-size:13.5px}
footer.site p{color:#B9C6CD;max-width:82ch}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:32px;margin-bottom:30px}
.ver{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:#7C8F99;border-top:1px solid #2C3B45;padding-top:16px;margin-top:8px}

/* ---------------- internal-only pages ---------------- */
body.internal{background:#1B1410}
body.internal .mast{background:#241B15;border-bottom-color:var(--null)}
.internal-flag{background:#8A2B00;color:#fff;font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.12em;text-transform:uppercase;text-align:center;padding:10px;font-weight:600}

@media (max-width:640px){
  body{font-size:16px}
  .wrap{padding:0 18px}
  section{padding:40px 0}
  .strip{grid-template-columns:40px 1fr 54px;gap:8px}
  .provenance div{border-right:0;border-bottom:1px solid var(--rule-soft)}
  .ritem{grid-template-columns:1fr}
  .ritem .side{text-align:left;border-top:1px solid var(--rule-soft);padding-top:10px}
  .rd-src{margin-left:0;width:100%}
  .source-head .meta{margin-left:0;width:100%}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto}}
@media print{.coder,.sharekit,.topbar{display:none}body{background:#fff}}
