/* Voteparty: travel-poster mid-century. Flat colour, layered hills, condensed caps. */
:root{
  --sky:#F0DDB8; --cream:#FAF1DC; --sun:#E8A23B; --clay:#C9663A; --brown:#8E4A35; --pine:#2F5A55; --ink:#1F3B3A;
  --mute:#5E6B66; --line:#D9C9A3;
  --head:"Oswald","Arial Narrow",Impact,sans-serif; --body:"Work Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--cream);color:var(--ink);font:17px/1.55 var(--body);overflow-x:hidden}
a{color:var(--brown)}
h1,h2,h3,h4{font-family:var(--head);text-transform:uppercase;margin:0;line-height:1;letter-spacing:.015em}
.w{max-width:1000px;margin:0 auto;padding:0 24px}
.sr{position:absolute;left:-9999px}
.tiny{font-size:.85rem;color:var(--mute)}

/* poster header (landing = tall, inner pages = short) */
.poster{position:relative;background:var(--sky);overflow:hidden}
.poster svg.land{position:absolute;left:0;bottom:0;width:100%;height:80%}
.poster .in{position:relative;max-width:1000px;margin:0 auto;padding:20px 24px 0}
.nav{display:flex;justify-content:space-between;align-items:center;font:600 .78rem var(--head);letter-spacing:.22em;text-transform:uppercase}
.nav a{color:var(--ink);text-decoration:none}
.logo{display:flex;align-items:center;gap:10px;font:700 1.35rem var(--head);letter-spacing:.12em}
.logo img{width:30px;height:30px}
.nav .r{display:flex;gap:22px;align-items:center}
.nav .r a:hover{text-decoration:underline;text-underline-offset:5px}
.head{text-align:center;padding:62px 0 270px}
.head h1{font-weight:700;font-size:clamp(2.9rem,9.6vw,7.2rem);line-height:.92}
.head .sub{font:500 1rem var(--head);letter-spacing:.3em;text-transform:uppercase;margin-top:16px}
.poster.short .head{padding:40px 0 100px}
.poster.short .head h1{font-size:clamp(2.2rem,6vw,3.8rem)}
.poster.short .land{height:90%}

/* address bar */
.bar{background:var(--ink);color:var(--cream);padding:30px 24px 38px}
.bar .in{max-width:1000px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:34px;align-items:center}
.bar h2{font-weight:600;font-size:1.5rem;letter-spacing:.07em;margin-bottom:8px}
.bar p{margin:0;opacity:.92}
form.addr{display:flex;background:var(--cream);padding:5px}
form.addr input{flex:1;min-width:0;border:0;background:none;font:500 1.1rem var(--body);padding:12px 14px;outline:0;color:var(--ink)}
form.addr input:focus-visible{outline:3px solid var(--sun);outline-offset:-3px}
.bar .tiny{color:var(--cream);opacity:.8;display:block;margin-top:8px}
.msg{min-height:1.4em;margin-top:8px;font-weight:600}
.msg.err{color:var(--sun)}

/* buttons */
.btn{font:600 .95rem var(--head);letter-spacing:.14em;text-transform:uppercase;border:3px solid var(--ink);background:var(--sun);color:var(--ink);padding:12px 22px;cursor:pointer;text-decoration:none;display:inline-block;line-height:1.1}
.btn:hover{background:var(--clay);color:var(--cream);border-color:var(--ink)}
.btn.ghost{background:transparent}
.btn.ghost:hover{background:var(--ink);color:var(--cream)}
.btn.mint{background:var(--pine);color:var(--cream)}
.btn.pink{background:var(--clay);color:var(--cream)}
.btn.on{background:var(--ink);color:var(--cream)}
.btn.sm{padding:8px 14px;font-size:.8rem}
form.addr .btn{border:0;padding:0 26px}

/* landing sections */
.promises{display:grid;grid-template-columns:repeat(3,1fr);margin:0;border-bottom:3px solid var(--ink)}
.promise{padding:28px 26px 30px;border-right:3px solid var(--ink)}
.promise:last-child{border-right:0}
.promise .n{font:700 2.8rem var(--head);color:var(--clay);line-height:1}
.promise h3{font-size:1.35rem;margin:8px 0 6px}
.promise p{margin:0;color:var(--mute)}
.sec-title{font-weight:700;font-size:clamp(2rem,5vw,3rem);margin:56px 0 18px}
.how{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;margin-bottom:30px}
.how .n{font:700 3.4rem var(--head);color:var(--sun);line-height:1;-webkit-text-stroke:2px var(--ink)}
.how b{font:600 1.15rem var(--head);letter-spacing:.06em;text-transform:uppercase;display:block;margin:6px 0 4px}
footer{background:var(--ink);color:var(--cream);margin-top:60px;padding:26px 24px 44px;font-size:.88rem}
footer .in{max-width:1000px;margin:0 auto}
footer a{color:var(--sun)}
@media(max-width:760px){
  .bar .in,.how,.promises{grid-template-columns:minmax(0,1fr)}
  .promise{border-right:0;border-bottom:3px solid var(--ink)}.promise:last-child{border-bottom:0}
  .head{padding-bottom:210px}.poster.short .head{padding-bottom:70px}
  .poster:not(.short) svg.land{height:66%}
}

/* prose */
.prose{max-width:720px}
.prose h2{font-size:1.9rem;margin:38px 0 10px}
.prose li{margin:6px 0}

/* ballot header */
.bh{border-bottom:3px solid var(--ink);padding:26px 0 18px}
.bh h1{font-size:clamp(1.8rem,5vw,2.6rem)}
.bh .meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.chip{border:2px solid var(--ink);padding:2px 12px;font:600 .78rem var(--head);letter-spacing:.1em;text-transform:uppercase}
.chip a{color:var(--brown)}
.prog{height:14px;border:3px solid var(--ink);background:var(--cream);margin:16px 0 6px}
.prog>i{display:block;height:100%;width:0;background:var(--clay);transition:width .3s}
.tabs{display:flex;gap:10px;margin:18px 0}.tabs .btn{flex:1;text-align:center}

/* tiles */
.sect{font:600 .82rem var(--head);letter-spacing:.22em;text-transform:uppercase;color:var(--clay);margin:28px 0 10px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:0;border-top:3px solid var(--ink)}
.tile{text-align:left;font:inherit;color:var(--ink);background:none;border:0;border-bottom:1px solid var(--line);padding:14px 4px;cursor:pointer;display:flex;gap:12px;align-items:center}
.tile:hover{background:var(--sky)}
.tile .dot{flex:none;width:30px;height:30px;border-radius:50%;border:3px solid var(--ink);display:grid;place-items:center;font-weight:800;font-size:.9rem}
.tile.done .dot{background:var(--sun)}
.tile b{display:block;line-height:1.2;font-weight:600}
.tile small{color:var(--mute)}

/* race view */
.cv-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:22px 0 16px;flex-wrap:wrap}
.cv h2{font-weight:700;font-size:clamp(2.2rem,6vw,3.6rem)}
.note{background:var(--sky);border-left:6px solid var(--sun);padding:10px 14px;margin:14px 0;font-size:.95rem}
.cards{margin-top:16px}
.cand{border-top:3px solid var(--ink);padding:24px 0}
.cand.sel{background:linear-gradient(90deg,var(--sky),transparent 70%)}
.cand-top{display:flex;gap:16px;align-items:center}
.av{flex:none;width:64px;height:64px;border-radius:50% 50% 0 0;display:grid;place-items:end center;padding-bottom:6px;font:700 1.25rem var(--head);color:var(--cream);letter-spacing:.04em}
.cand h3{font-weight:600;font-size:1.9rem;letter-spacing:.03em}
.badge{display:inline-block;font:600 .68rem var(--head);letter-spacing:.14em;text-transform:uppercase;border:2px solid var(--ink);padding:1px 8px;margin-left:8px;vertical-align:middle}
.badge.thin{background:var(--sun)}
.sig{font-weight:600;color:var(--brown);margin:12px 0 4px;font-size:1.08rem}
.bio{color:var(--mute);margin:6px 0}
.claims{padding-left:20px;margin:10px 0}
.claims li{margin:7px 0}
sup a{font:600 .72rem var(--head);color:var(--clay);text-decoration:none;padding:0 2px}
details.src{margin-top:10px;font-size:.9rem}
details.src summary{cursor:pointer;font:600 .8rem var(--head);letter-spacing:.14em;text-transform:uppercase}
details.src ol{margin:8px 0;padding-left:22px}
details.src li{margin:4px 0;word-break:break-word}
.pickrow{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.yn{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}
.yn .btn{font-size:1.6rem;padding:18px}
.yn .btn.on{outline:4px solid var(--sun);outline-offset:2px}
.args{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin:16px 0}
.args>div{border-top:3px solid var(--ink);padding-top:10px}
.args h4{font-size:1.15rem;margin-bottom:6px}
.quote{border-left:6px solid var(--pine);padding:4px 14px;margin:14px 0;background:var(--sky);font-size:.95rem}
.stepnav{display:flex;justify-content:space-between;gap:10px;margin:26px 0}
@media(max-width:620px){.args,.yn{grid-template-columns:1fr}}

/* cheat sheet */
.sheet{border-top:3px solid var(--ink);margin-top:6px}
.srow{display:flex;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);font-size:1.18rem}
.srow .o{color:var(--mute)}
.srow .v{font:600 1.2rem var(--head);letter-spacing:.04em;text-transform:uppercase;text-align:right}
.srow .v.none{color:var(--clay)}
.logi{margin:20px 0;padding:0;list-style:none}.logi li{margin:8px 0}

@media print{
  body{background:#fff;color:#000}
  .poster,.bar,.tabs,.noprint,footer{display:none!important}
  .bh{border-color:#000}.srow{font-size:1rem}
}

/* dossiers */
details.dossier{margin:16px 0 6px;border-top:1px solid var(--line);padding-top:10px}
details.dossier>summary{cursor:pointer;font:600 .86rem var(--head);letter-spacing:.14em;text-transform:uppercase;color:var(--ink);padding:6px 0}
.snap{font-size:1.05rem;margin:8px 0 4px}
.dsec{margin:18px 0}
.dsec h4{font-size:1rem;letter-spacing:.14em;color:var(--clay);border-bottom:2px solid var(--ink);padding-bottom:4px;margin-bottom:8px}
.dlist{margin:6px 0;padding-left:20px}.dlist li{margin:6px 0}
.controv{border-left:6px solid var(--ink);padding:6px 0 6px 14px;margin:12px 0;background:linear-gradient(90deg,var(--sky),transparent 60%)}
.controv .ctop{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.controv p{margin:4px 0}.resp{color:var(--mute)}
.none{background:var(--sky);padding:10px 14px;margin:6px 0;font-size:.95rem}
.status{font:600 .7rem var(--head);letter-spacing:.14em;text-transform:uppercase;border:2px solid var(--ink);padding:1px 8px;background:var(--cream)}
.status.s-convicted,.status.s-found-liable,.status.s-official-finding,.status.s-pleaded{background:var(--clay);color:var(--cream)}
.status.s-charged,.status.s-sued{background:var(--sun)}
.status.s-dismissed,.status.s-acquitted{background:var(--pine);color:var(--cream)}
.status.f-supported{background:var(--pine);color:var(--cream)}.status.f-misleading,.status.f-unsupported{background:var(--clay);color:var(--cream)}.status.f-mixed{background:var(--sun)}

/* coverage map */
.mapsec{padding:10px 0 20px}
.lead2{margin:-6px 0 16px;color:var(--mute);max-width:36em}
.mapcard{position:relative;background:var(--sky);border:3px solid var(--ink);padding:14px 14px 12px}
.mapstats{font:500 1rem var(--head);letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px}
.mapstats b{font-size:1.5rem;color:var(--clay)}
.mapbox svg{display:block;width:100%;height:auto;background:var(--cream);border:2px solid var(--ink)}
.mapbox .c{fill:#E3D2A8;stroke:#F4E9CB;stroke-width:.5;vector-effect:non-scaling-stroke}
.mapbox .c.st-live{fill:#C9D3B2}
.mapbox .c.building{fill:var(--sun);stroke:var(--ink)}
.mapbox .c.live{fill:var(--pine);stroke:var(--ink)}
.mapbox .c:hover{fill:#D3BC87}.mapbox .c.live:hover{fill:#24463F}.mapbox .c.st-live:hover{fill:#B4C39A}
.mapbox .outline path{fill:none;stroke:var(--ink);stroke-width:1;vector-effect:non-scaling-stroke;pointer-events:none;stroke-linejoin:round}
.mapbox svg.zoomed .c{stroke:#D9C79B}
.mapbox svg.zoomed .c.live,.mapbox svg.zoomed .c.building{stroke:var(--ink)}
.mapbox .pin{pointer-events:none}
.mapbox .pin .dot{fill:var(--cream);stroke:var(--ink);stroke-width:1.2;vector-effect:non-scaling-stroke}
.mapbox .pin.building .dot{fill:var(--sun)}
.mapbox .pin .halo{fill:var(--sun);opacity:.55;transform-box:fill-box;transform-origin:center;animation:ping 2.4s ease-out infinite}
.mapbox .pin.live .halo{fill:var(--pine)}
@keyframes ping{0%{transform:scale(.4);opacity:.7}100%{transform:scale(2.6);opacity:0}}
@media (prefers-reduced-motion:reduce){.mapbox .pin .halo{animation:none;opacity:.35}}
.maptip{position:absolute;z-index:3;pointer-events:none;background:var(--ink);color:var(--cream);padding:6px 10px;font-size:.85rem;line-height:1.35;max-width:190px}
.mapback{position:absolute;right:22px;top:58px}
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font:600 .75rem var(--head);letter-spacing:.1em;text-transform:uppercase}
.sw{display:inline-block;width:14px;height:14px;border:2px solid var(--ink);margin-right:6px;vertical-align:-2px}
.sw.live{background:var(--pine)}.sw.building{background:var(--sun)}.sw.st{background:#C9D3B2}.sw.nope{background:#E3D2A8}
.maplist{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:4px;font-size:.95rem}
[hidden]{display:none!important}

.mapbox .pinin{transform:scale(var(--k,1))}
.mapbox svg.zoomed .pin{opacity:0}                 /* zoomed in, the county shape itself is big enough to read */
.mapback{background:var(--cream)}
@media (min-width:761px){.poster:not(.short) svg.land{height:70%}}

/* early voting card */
.early{border:3px solid var(--ink);background:var(--sky);padding:14px 16px;margin:14px 0}
.early h2{font-size:1.35rem;margin-bottom:6px}
.early p{margin:6px 0}
.earlystat{font:600 1.35rem var(--head);letter-spacing:.03em;text-transform:uppercase;color:var(--brown)}
.earlystat.open{color:var(--pine)}
.early details{margin:8px 0}.early summary{cursor:pointer;font:600 .8rem var(--head);letter-spacing:.14em;text-transform:uppercase}
.sched{border-collapse:collapse;margin:8px 0;font-size:.95rem;width:100%}.sched td{padding:4px 12px 4px 0;border-bottom:1px solid var(--line);vertical-align:top}
.early-notes{margin:8px 0;padding-left:20px}.early-notes li{margin:4px 0}

/* ---------- party pooper: labels next to names, and the site made ugly on purpose ---------- */
.ptag{display:inline-block;margin-left:10px;padding:1px 9px;border:2px solid var(--mute);color:var(--mute);background:transparent;font:600 .72rem var(--head);letter-spacing:.1em;text-transform:uppercase;vertical-align:middle}
.ptrow{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:6px 0 4px}
.stance{margin:0;font:600 1rem var(--head);letter-spacing:.06em;text-transform:uppercase;color:var(--brown)}
.pp{display:inline-flex;align-items:center;gap:10px;cursor:pointer;background:transparent;border:3px solid var(--ink);color:var(--ink);padding:6px 12px;font:600 .8rem var(--head);letter-spacing:.14em;text-transform:uppercase}
.pp .knob{width:34px;height:18px;border:2px solid var(--ink);border-radius:999px;position:relative;background:var(--cream)}
.pp .knob::after{content:"";position:absolute;top:1px;left:1px;width:12px;height:12px;border-radius:50%;background:var(--ink);transition:transform .15s}
.pp[aria-checked="true"] .knob::after{transform:translateX(16px)}
.ppnote{margin:2px 0 8px;font-size:.85rem;color:var(--mute)}
#pooperbar{position:sticky;top:0;z-index:50;background:#ff3d9a;color:#1a1000;padding:10px 14px;text-align:center;font:700 1rem "Comic Neue","Comic Sans MS",cursive;border-bottom:5px dashed #1a1000}
#pooperbar button{font:inherit;cursor:pointer;margin-left:8px;padding:2px 10px;background:#fff59d;color:#1a1000;border:3px outset #1a1000}

html[data-pooper]{
  --cream:#d9e27a; --sky:#e9a8e9; --ink:#1a1000; --sun:#ff3d9a; --clay:#ff6a00; --brown:#6a0dad; --pine:#7a1fa2; --mute:#3d2a00; --line:#6a0dad;
  --head:"Comic Neue","Comic Sans MS","Chalkboard SE",cursive; --body:"Comic Neue","Comic Sans MS","Chalkboard SE",cursive;
}
html[data-pooper] body{background:repeating-linear-gradient(45deg,#d9e27a 0 22px,#cbd45f 22px 44px);font-weight:700}
html[data-pooper] h1,html[data-pooper] h2,html[data-pooper] h3,html[data-pooper] .logo{text-transform:none;text-shadow:3px 3px 0 #ff3d9a;letter-spacing:0}
html[data-pooper] .poster{background:#ffb347}
html[data-pooper] .poster svg.land path:nth-of-type(1){fill:#8bc34a} html[data-pooper] .poster svg.land path:nth-of-type(2){fill:#b039d6} html[data-pooper] .poster svg.land path:nth-of-type(3){fill:#ff6a00}
html[data-pooper] .poster svg.land circle{fill:#ff3d9a}
html[data-pooper] .bar,html[data-pooper] footer{background:#4a148c}
html[data-pooper] .promise,html[data-pooper] .tile,html[data-pooper] .cand,html[data-pooper] .early,html[data-pooper] .bh,html[data-pooper] .mapcard,html[data-pooper] .sheet,html[data-pooper] .note,html[data-pooper] .quote{border:4px dashed #6a0dad;background:#fff59d}
html[data-pooper] .tile:nth-child(odd),html[data-pooper] .cand:nth-child(odd),html[data-pooper] .promise:nth-child(odd){transform:rotate(-.6deg)}
html[data-pooper] .tile:nth-child(even),html[data-pooper] .cand:nth-child(even),html[data-pooper] .promise:nth-child(even){transform:rotate(.5deg)}
html[data-pooper] .btn,html[data-pooper] .pp{background:#ff3d9a;color:#1a1000;border:4px outset #1a1000;text-transform:none;letter-spacing:0}
html[data-pooper] .btn.ghost{background:#fff59d}
html[data-pooper] a{text-decoration:underline wavy #ff3d9a;text-underline-offset:4px}
html[data-pooper] .ptag{border-color:#6a0dad;color:#1a1000;background:#ff9de2;transform:rotate(-2deg)}
html[data-pooper] .mapbox svg{background:#e9a8e9}
@media (prefers-reduced-motion:reduce){html[data-pooper] .tile,html[data-pooper] .cand,html[data-pooper] .promise{transform:none}}
@media print{#pooperbar{display:none!important}html[data-pooper] body{background:#fff}html[data-pooper] .cand,html[data-pooper] .tile,html[data-pooper] .sheet,html[data-pooper] .bh{transform:none;background:#fff;border:1px solid #000}}
