:root{--ink:#102621;--ink2:#17352e;--cream:#f6f1e8;--paper:#fffdf8;--gold:#e4c07a;--line:#d5ddd8;--muted:#4d5f59;--d:#2039c5;--r:#c62828;--o:#6b4510}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--cream);color:var(--ink);line-height:1.45}
h1,h2,h3{font-family:Sora,Inter,sans-serif;letter-spacing:-.01em;margin:0}
a{color:var(--ink2)}
.wrap{max-width:1120px;margin:0 auto;padding:0 16px}
.top{background:var(--ink);color:var(--cream);padding:28px 0 18px}
.top a{color:var(--gold)}
.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.75rem;color:var(--gold);margin:0 0 6px;font-weight:600}
h1{font-size:clamp(1.5rem,4vw,2.3rem);font-weight:700}
.meta{font-size:.9rem;margin:10px 0 12px;opacity:.95}
.meta button{background:var(--gold);color:var(--ink);border:0;border-radius:6px;padding:4px 10px;font-weight:600;cursor:pointer}
.pill{display:inline-block;padding:2px 8px;border-radius:999px;background:#2c4a43;font-weight:600;margin-right:6px}
.pill.ok{background:#1f6b4e}.pill.err{background:#8a2b2b}
.jump{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:.9rem}
.notice{background:#f0d7a4;border-left:4px solid var(--o);padding:10px 14px;border-radius:6px;font-size:.92rem;margin:18px 0}
.sec{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:18px;margin:18px 0}
.sec-h{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 16px;margin-bottom:10px}
h2{font-size:1.3rem}
.src{font-size:.8rem;color:var(--muted);margin:0}
.note{font-size:.88rem;color:var(--muted);margin:0 0 12px}
.note.warn{color:var(--o);font-weight:500}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px}
.race{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff}
.race h3{font-size:1rem;font-weight:600;margin-bottom:4px}
.rep{font-size:.8rem;color:var(--muted);margin:0 0 8px}
.bar{height:6px;background:#e8ece9;border-radius:3px;overflow:hidden;margin:2px 0 8px}.bar i{display:block;height:100%;background:var(--ink2)}
table{width:100%;border-collapse:collapse;font-size:.9rem}
td{padding:5px 2px;border-top:1px solid #eef1ef;vertical-align:top}
td.n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.p{display:inline-block;min-width:1.4em;text-align:center;font-size:.72rem;font-weight:700;border-radius:4px;padding:0 4px;margin-left:4px;background:#e5e7e6;color:#333}
.p.D{background:var(--d);color:#fff}.p.R{background:var(--r);color:#fff}
.badge{display:inline-block;font-size:.7rem;font-weight:700;border-radius:4px;padding:1px 6px;margin-left:6px}
.badge.win{background:#1f6b4e;color:#fff}.badge.lead{background:var(--gold);color:var(--ink)}
.empty{font-style:italic;color:var(--muted);font-size:.88rem;margin:4px 0}
.nores{display:inline-block;font-size:.75rem;font-weight:600;background:#eef1ef;color:var(--muted);border-radius:4px;padding:1px 6px}
.err{color:#8a2b2b;font-weight:600}
.summary{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 14px}
.stat{background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:.85rem}.stat b{display:block;font-family:Sora,sans-serif;font-size:1.15rem}
h4{font-family:Sora,sans-serif;margin:16px 0 8px;font-size:1.05rem}
.seats{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}
.seat{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#fff;font-size:.85rem}
.seat .k{font-weight:700;font-family:Sora,sans-serif}
.more summary{cursor:pointer;font-family:Sora,sans-serif;font-weight:600}
.more .body{margin-top:12px}
.foot{font-size:.85rem;color:var(--muted);padding-bottom:30px}
@media (max-width:520px){.sec{padding:14px}.grid{grid-template-columns:1fr}}

.proj{margin:10px 0 6px;padding:8px 10px;border-radius:8px;background:#f7efdc;border:1px solid #ead8ae;font-size:.85rem}
.proj.off{background:#f2f4f3;border-color:var(--line);color:var(--muted);font-style:italic}
.ph{font-size:.9rem;margin:0 0 4px}.pr{font-size:.8rem;color:var(--muted);margin:0 0 4px}.pl{font-size:.75rem;font-weight:700;color:var(--o);margin:0}
details.pc{margin-top:8px}details.pc>summary{cursor:pointer;font-weight:600;font-size:.85rem;color:var(--ink2)}
.pcb{margin-top:8px}.pcf{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:6px;font:inherit;margin-bottom:6px}
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch;max-height:420px;overflow-y:auto}
table.pt{font-size:.8rem;min-width:520px}table.pt th{position:sticky;top:0;background:#eef1ef;text-align:left;padding:5px 4px;cursor:pointer;white-space:nowrap;font-weight:600}
table.pt th.on{background:var(--gold)}table.pt td{padding:4px}table.pt small{display:block;color:var(--muted);font-size:.7rem}
tr.s3 td:nth-child(2){color:#1f6b4e;font-weight:600}tr.s2 td:nth-child(2){color:var(--o);font-weight:600}tr.s1 td:nth-child(2),tr.s0 td:nth-child(2){color:var(--muted)}
.nh{font-size:.72rem;color:var(--muted);font-style:italic}
.pca{margin-top:6px;background:var(--ink2);color:#fff;border:0;border-radius:6px;padding:5px 10px;cursor:pointer}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin-bottom:12px}
.ctl{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff}
.tally{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 8px}.tally span{font-family:Sora,sans-serif;font-weight:700;font-size:1.3rem;padding:2px 10px;border-radius:6px;color:#fff}
.tally .R{background:var(--r)}.tally .D{background:var(--d)}.tally .O{background:#777}
td.b-called{font-weight:700}td.b-leading{color:var(--o)}td.b-default,td.b-held{color:var(--muted)}
.grid>*,.grid2>*,.race,details.pc,.pcb{min-width:0}

/* ---- at a glance strip ---- */
.glance{padding:14px 18px}
.strip{list-style:none;margin:0;padding:0}
.strip li{display:grid;grid-template-columns:28px minmax(150px,1.3fr) minmax(90px,1.4fr) 74px minmax(140px,1.4fr);gap:4px 10px;align-items:center;padding:6px 0;border-top:1px solid #eef1ef;font-size:.85rem}
.strip li:first-child{border-top:0}
.strip li.pinned{background:#fbf4e2}
.strip .sn{font-weight:600;color:var(--ink);text-decoration:none;line-height:1.2}.strip .sn small{display:block;font-weight:500;color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}
.strip .sb{display:flex;height:14px;border-radius:3px;overflow:hidden;background:#eef1ef}.strip .sb.none{background:repeating-linear-gradient(45deg,#eef1ef 0 6px,#e3e7e5 6px 12px)}
.strip .sb i{display:block;height:100%}.sD{background:var(--d)}.sR{background:var(--r)}.sO{background:#9aa29f}
.sN0{background:#2f5d50}.sN1{background:#7a9a8f}.sN2{background:#b3c4bd}.sN3{background:#d7e0dc}
.strip .sp{font-variant-numeric:tabular-nums;text-align:right;color:var(--muted);font-weight:600;line-height:1.1}.strip .sp small{display:block;font-size:.62rem;font-weight:500}
.strip .sl .lt{color:var(--muted);font-size:.78rem}
@media (max-width:600px){.strip li{grid-template-columns:26px 1fr 58px;}.strip .sb{grid-column:2/4;grid-row:2}.strip .sl{grid-column:2/4;grid-row:3;font-size:.8rem}.strip .sp{grid-column:3;grid-row:1}}
/* pins */
.pin{background:none;border:0;cursor:pointer;font-size:1.1rem;line-height:1;color:#9aa29f;padding:0 4px 0 0;vertical-align:-1px}
.pin.on{color:#c58a00}.pin:focus-visible{outline:2px solid var(--gold);border-radius:4px}
.race.pinned{order:-1;border-color:#e0c57f;box-shadow:0 0 0 2px #f3e3b6}
.grid{display:grid}
/* change highlights */
@keyframes flash{0%{background-color:#ffe27a}100%{background-color:transparent}}
.chg{animation:flash 4s ease-out 1}
td.mg.chg{animation:none;outline:2px solid #f0b400;outline-offset:-2px}
/* precinct tables: margin shading, swing bars, phone layout */
table.pt.pct td.mg{font-weight:600}
.swb{display:inline-block;position:relative;width:46px;height:8px;margin-right:6px;background:#eef1ef;border-radius:2px;vertical-align:middle}
.swb::after{content:"";position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:#8c9692}
.swb i{position:absolute;top:0;bottom:0}.swb i.D{background:var(--d)}.swb i.R{background:var(--r)}
tr.dx{display:none}
@media (max-width:600px){
  table.pt.pct{min-width:0}
  table.pt.pct th:nth-child(4),table.pt.pct th:nth-child(5),table.pt.pct th:nth-child(7),
  table.pt.pct td:nth-child(4),table.pt.pct td:nth-child(5),table.pt.pct td:nth-child(7){display:none}
  table.pt.pct tr.rw{cursor:pointer}
  table.pt.pct tr.rw td:first-child::before{content:"▸ ";color:var(--muted)}table.pt.pct tr.rw.open td:first-child::before{content:"▾ "}
  table.pt.pct tr.rw.open+tr.dx{display:table-row}
  table.pt.pct tr.dx td{display:table-cell!important;background:#f7f9f8;font-size:.76rem;color:var(--ink2);white-space:normal}
  .swb{width:30px;margin-right:4px}
}
/* projection gauge + trend */
.gauge{margin:2px 0 8px}
.gt{display:flex;justify-content:space-between;font-size:.7rem;color:var(--muted);font-weight:600}.gt .D{color:var(--d)}.gt .R{color:var(--r)}
.gb{position:relative;height:18px;border-radius:9px;background:linear-gradient(90deg,#dfe4fb,#f4f4f4 50%,#fbe0e0)}
.gb i{position:absolute;top:0;bottom:0}
.gb .mid{left:50%;width:1px;background:#777}
.gb .rg{background:rgba(107,69,16,.28);border-left:2px solid var(--o);border-right:2px solid var(--o)}
.gb .pm{width:6px;margin-left:-3px;top:-3px;bottom:-3px;border-radius:3px;border:1px solid #fff}.gb .pm.D,.k.pm.D{background:var(--d)}.gb .pm.R,.k.pm.R{background:var(--r)}
.gb .cm{width:0;margin-left:-1px;border-left:2px dashed #222;top:-4px;bottom:-4px}
.gl{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.75rem;margin-top:4px}.gl .k{display:inline-block;width:10px;height:10px;margin-right:4px;vertical-align:-1px;border-radius:2px}
.gl .k.rg{background:rgba(107,69,16,.28);border:1px solid var(--o)}.gl .k.cm{border-left:2px dashed #222;width:6px;border-radius:0}
.trend{margin:6px 0}.trend svg{width:100%;max-width:420px;height:64px;display:block;background:#fffaf0;border:1px solid #ead8ae;border-radius:6px}
.trend .z{stroke:#999;stroke-width:.6;stroke-dasharray:3 3}.trend .bd{fill:rgba(107,69,16,.18)}
.trend .pj{fill:none;stroke-width:2}.trend .pj.D{stroke:var(--d)}.trend .pj.R{stroke:var(--r)}.trend .cu{fill:none;stroke:#333;stroke-width:1;stroke-dasharray:2 2}
.tl{font-size:.72rem;color:var(--muted);margin:2px 0 4px;font-style:italic}
/* seat bars */
.seatbar{position:relative;margin:6px 0 4px;padding-top:16px}
.seatbar svg{display:block;width:100%;height:24px}
.majl{position:absolute;top:12px;bottom:-4px;width:2px;margin-left:-1px;background:#111}
.majt{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:.68rem;font-weight:700;white-space:nowrap}
.k-calledD{fill:#1a2f9e;background:#1a2f9e}.k-leadingD{fill:#5a72e0;background:#5a72e0}.k-defaultD{fill:#b9c4f3;background:#b9c4f3}
.k-oth{fill:#8a8f8d;background:#8a8f8d}.k-vac{fill:#e6e6e6;background:#e6e6e6;stroke:#999;stroke-width:.05}
.k-defaultR{fill:#f2b9b9;background:#f2b9b9}.k-leadingR{fill:#e0605a;background:#e0605a}.k-calledR{fill:#a31d1d;background:#a31d1d}
.sbl{display:flex;flex-wrap:wrap;gap:2px 10px;font-size:.72rem;margin-bottom:6px}.sbl i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
/* precinct maps */
.map{margin:6px 0 16px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:10px 12px}
.maph{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;margin-bottom:6px}.maph h3{font-size:1rem}
.maph select{font:inherit;font-size:.85rem;padding:3px 6px;border:1px solid var(--line);border-radius:6px;max-width:260px}
.mapc{position:relative}.mapc svg{display:block;width:100%;height:auto;max-height:520px}
.mapc path{stroke:#fff;stroke-width:1;cursor:pointer}.mapc path.out{stroke:#c8ceca;cursor:default}
.mapc path.part{stroke:#8a6a3a;stroke-width:1;stroke-dasharray:3 3}
.mapc path.sel,.mapc path:focus{stroke:#111;stroke-width:2.2;outline:none}
.tip{position:absolute;z-index:3;background:#102621;color:#fff;font-size:.78rem;padding:6px 8px;border-radius:6px;pointer-events:none;max-width:180px;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.mlg{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.74rem;margin:6px 0}.mlg i{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:4px;vertical-align:-2px}
.mlg i.hat{border:1.5px dashed #6b4510;background:rgba(32,57,197,.3)}
