:root{--red:#B31942;--red-dk:#8E1335;--blue:#0A3161;--blue-lt:#E8EDF5;--white:#FFFFFF;--ink:#1A1F2B;--muted:#4A5468;--line:#D5DBE6;--warn:#FFF4D6;--warn-line:#C99A00;--radius:14px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:#F6F8FB;line-height:1.5;font-size:17px}
a{color:var(--blue)}
:focus-visible{outline:3px solid #F5B400;outline-offset:3px;border-radius:6px}
.skip{position:absolute;left:-999px;top:0;background:var(--white);padding:8px 12px;z-index:10}
.skip:focus{left:8px;top:8px}
.topbar{background:var(--blue);color:var(--white);display:flex;align-items:center;justify-content:space-between;padding:12px 16px}
.brand{display:flex;align-items:center;gap:10px;color:var(--white);text-decoration:none;font-size:1.3rem;letter-spacing:.2px}
.logo{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:8px;background:var(--red);font-weight:900}
.tag{font-size:.8rem;border:1px solid rgba(255,255,255,.6);border-radius:999px;padding:2px 10px}

main{max-width:860px;margin:0 auto;padding:20px 16px 40px;outline:none}
h1{color:var(--blue);font-size:1.7rem;line-height:1.2;margin:.2em 0 .3em}
h2{color:var(--blue);font-size:1.2rem;margin:1.2em 0 .5em}
.lede{color:var(--muted);margin:0 0 18px}
/* hub */
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tile{display:flex;flex-direction:column;justify-content:space-between;gap:8px;min-height:120px;padding:16px;border-radius:var(--radius);text-decoration:none;background:var(--white);color:var(--blue);border:2px solid var(--line);box-shadow:0 1px 2px rgba(10,49,97,.06);transition:transform .08s,box-shadow .08s}
.tile:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(10,49,97,.12)}
.tile .ico{font-size:1.7rem;line-height:1}
.tile .t{font-weight:800;font-size:1.05rem}
.tile .s{font-size:.88rem;color:var(--muted)}
.tile.hero{grid-column:1/-1;background:var(--red);color:var(--white);border-color:var(--red);min-height:150px}
.tile.hero:hover{background:var(--red-dk)}
.tile.hero .t{font-size:1.6rem}
.tile.hero .s{color:var(--white);opacity:.95}
.tile.blue{background:var(--blue);color:var(--white);border-color:var(--blue)}
.tile.blue .s{color:#DCE4F0}
.soon{align-self:flex-start;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;background:var(--blue-lt);color:var(--blue);padding:2px 8px;border-radius:999px}
.tile.blue .soon{background:rgba(255,255,255,.18);color:var(--white)}
.quiet{display:inline-block;margin-top:16px;font-weight:600}
/* picker */
.back{display:inline-flex;align-items:center;gap:6px;margin-bottom:8px;font-weight:600;text-decoration:none}
.search{width:100%;font-size:1.1rem;padding:14px 16px;border:2px solid var(--blue);border-radius:12px;background:var(--white)}
.search::placeholder{color:#6B7486}
.hint{font-size:.9rem;color:var(--muted);margin:6px 0 12px}
.slist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:8px}
.slist a{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;background:var(--white);border:1px solid var(--line);border-radius:12px;text-decoration:none;color:var(--ink);font-weight:600}
.slist a:hover,.slist a:focus-visible{border-color:var(--blue);background:var(--blue-lt)}
.slist .ab{color:var(--muted);font-weight:500;font-size:.9rem}
.empty{color:var(--muted)}
/* state */
.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin:14px 0}
.card h2{margin-top:0}
.card ul{margin:.3em 0;padding-left:1.2em}
.badge{display:inline-block;font-size:.8rem;font-weight:700;padding:3px 10px;border-radius:999px;margin-right:6px}
.b-on{background:var(--blue);color:var(--white)}
.b-mail{background:var(--blue-lt);color:var(--blue);border:1px solid var(--blue)}
.b-none{background:var(--red);color:var(--white)}
.alert{background:var(--warn);border:1px solid var(--warn-line);border-left:6px solid var(--warn-line);border-radius:10px;padding:12px 14px;margin:12px 0}
.note{background:var(--blue-lt);border-left:6px solid var(--blue);border-radius:10px;padding:12px 14px;margin:12px 0}
.actions{display:grid;gap:10px;margin:14px 0}
.btn{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:54px;padding:14px 18px;border-radius:12px;font-weight:700;font-size:1.05rem;text-decoration:none;border:2px solid var(--blue);color:var(--blue);background:var(--white)}
.btn small{display:block;font-weight:500;font-size:.82rem;color:var(--muted)}
.btn:hover{background:var(--blue-lt)}
.btn.primary{background:var(--red);border-color:var(--red);color:var(--white)}
.btn.primary small{color:#FBE9EE}
.btn.primary:hover{background:var(--red-dk)}
.btn .arr{font-size:1.2rem}
.meta{font-size:.85rem;color:var(--muted)}
.foot{max-width:860px;margin:0 auto;padding:16px;font-size:.85rem;color:var(--muted);border-top:1px solid var(--line)}
.ph{text-align:center;padding:30px 16px}
.ph .ico{font-size:3rem}
@media(min-width:640px){
  .tiles{grid-template-columns:repeat(4,1fr)}
  .tile.hero{grid-column:1/-1}
  .slist{grid-template-columns:1fr 1fr}
  .actions{grid-template-columns:1fr 1fr}
  .actions .btn.primary{grid-column:1/-1}
  h1{font-size:2rem}
}
@media(prefers-reduced-motion:reduce){.tile{transition:none}}
main:focus{outline:none}
/* I WANT TO VOTE strip — narrow red banner directly under the header */
.vote-strip{display:flex;align-items:center;justify-content:center;gap:12px;min-height:48px;padding:10px 16px;background:var(--red);color:var(--white);text-decoration:none;border-top:2px solid var(--white)}
.vote-strip[hidden]{display:none}
.vote-strip[hidden]+.stripe{display:block}
.vote-strip:hover{background:var(--red-dk)}
.vote-strip:focus-visible{outline:3px solid #F5B400;outline-offset:-3px;border-radius:0}
.vote-strip .vs-t{font-weight:900;font-size:1.1rem;letter-spacing:1.5px;text-transform:uppercase}
.vote-strip .vs-s{font-size:.85rem;opacity:.95;display:none}
.vote-strip .arr{font-size:1.2rem;font-weight:700}
@media(min-width:640px){.vote-strip .vs-s{display:inline}.vote-strip .vs-s::before{content:"— ";}}

/* Flag band: blue star canton + 7 red/white stripes (decorative transition) */
.stripe{position:relative;height:21px;background:repeating-linear-gradient(180deg,var(--red) 0 3px,var(--white) 3px 6px);border-bottom:1px solid var(--line)}
.stripe::before{content:"";position:absolute;left:0;top:0;bottom:0;width:min(38%,240px);background-color:var(--blue);
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='10.5'%3E%3Cpath fill='%23fff' d='M4 1.2l.7 1.5 1.6.2-1.2 1.1.3 1.6L4 4.8l-1.4.8.3-1.6-1.2-1.1 1.6-.2zM12 6.45l.7 1.5 1.6.2-1.2 1.1.3 1.6-1.4-.8-1.4.8.3-1.6-1.2-1.1 1.6-.2z'/%3E%3C/svg%3E");
 background-repeat:repeat;background-position:2px 0}
.vote-strip{padding-top:4px;padding-bottom:4px;min-height:52px}
.vote-strip .vs-btn{display:block;width:44px;height:44px;flex:none;pointer-events:none;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25));transition:transform .1s}
.vote-strip:hover .vs-btn,.vote-strip:focus-visible .vs-btn{transform:scale(1.06)}
.vote-strip:active .vs-btn{transform:scale(.96)}
@media(prefers-reduced-motion:reduce){.vote-strip .vs-btn{transition:none}}
/* Save America — scanability */
.status-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 14px}
.pill{display:inline-block;font-size:.75rem;font-weight:800;letter-spacing:.4px;padding:3px 10px;border-radius:999px;vertical-align:middle;white-space:nowrap}
.pill.sm{font-size:.68rem;padding:1px 8px}
.pill-prop{background:var(--warn);color:#5B3B00;border:1px solid var(--warn-line)}
.pill-scope{background:var(--blue-lt);color:var(--blue);border:1px solid var(--blue);font-weight:700}
.jump{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 6px}
.jump button{font:inherit;font-size:.88rem;font-weight:600;color:var(--blue);background:var(--white);border:1px solid var(--blue);border-radius:999px;padding:6px 12px;cursor:pointer}
.jump button:hover,.jump button:focus-visible{background:var(--blue-lt)}
.vs{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.vs-col{border-radius:12px;padding:12px 14px;border:2px solid var(--line)}
.vs-col p{margin:.4em 0}
.vs-yes{border-color:var(--blue);background:var(--blue-lt)}
.vs-no{border-color:var(--line);background:#FAFBFD}
.vs-h{font-weight:900;color:var(--blue);font-size:1.05rem}
@media (max-width:620px){.vs{grid-template-columns:1fr}}
.checks{list-style:none;padding-left:0!important}
.checks li{padding-left:1.5em;position:relative;margin:.25em 0}
.checks li::before{content:"✔";position:absolute;left:0;color:var(--blue);font-weight:900}
.answer{font-size:1.05rem}
.state-card{border:2px solid var(--blue)}
.facts{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;margin:10px 0}
.facts dt{font-weight:800;color:var(--blue)}
.facts dd{margin:0}
.local{margin-top:16px;padding-top:12px;border-top:2px dashed var(--line)}
.local h3{color:var(--blue);margin:0 0 .4em;font-size:1.08rem}
.office{border:1px solid var(--line);border-left:5px solid var(--red);border-radius:10px;padding:10px 12px;margin:10px 0;background:var(--white)}
.office-h{font-weight:800;margin-bottom:2px}
.gap{background:var(--warn);border-left:5px solid var(--warn-line);border-radius:8px;padding:8px 12px;font-size:.92rem}
.bill{border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:10px 0}
.bill p{margin:.3em 0}
.bill-h{font-size:1.02rem}
.bill .links{font-weight:600}
[tabindex="-1"]:focus{outline:none}
/* Candidates */
.c-hero{border-top:6px solid var(--red);padding-top:6px}
.c-hero h1{color:var(--blue)}
.c-sec{color:var(--blue);border-bottom:3px solid var(--red);padding-bottom:4px}
.c-races{display:grid;grid-template-columns:1fr;gap:0 12px}
@media(min-width:720px){.c-races{grid-template-columns:1fr 1fr}}
.c-race{display:flex;flex-direction:column;gap:6px;text-decoration:none;color:var(--ink);border-left:6px solid var(--blue)}
.c-race:hover,.c-race:focus-visible{border-left-color:var(--red);background:var(--blue-lt)}
.c-race .pill{align-self:flex-start}
.c-rt{font-weight:800;color:var(--blue);font-size:1.05rem}
.c-cands{font-size:.92rem}
.c-results{font-size:.92rem}
.ci{list-style:none;padding-left:0!important}
.ci li{margin:0 0 10px;line-height:1.45}
.cite{font-size:.82rem;color:var(--muted)}
.cite a{color:var(--blue)}
.ct-fact{background:var(--blue);color:#fff}
.ct-opinion{background:#F3E8EB;color:var(--red);border:1px solid var(--red)}
.ct-disputed{background:var(--warn);color:#5B3B00;border:1px solid var(--warn-line)}
.ct-claim{background:#fff;color:var(--blue);border:1px solid var(--blue)}
.ct-proposed{background:var(--blue-lt);color:var(--blue);border:1px dashed var(--blue)}
.ct-enacted{background:#E6F4EA;color:#14532D;border:1px solid #14532D}
.pp-R{background:var(--red);color:#fff}
.pp-D{background:var(--blue);color:#fff}
.pp-I{background:#fff;color:var(--ink);border:1px solid var(--line)}
.gbu-g{border-top:5px solid var(--blue)}
.gbu-b{border-top:5px solid var(--warn-line)}
.gbu-u{border-top:5px solid var(--red)}
.c-src li{margin:0 0 4px;font-size:.92rem}
select.search{width:100%;max-width:420px}
.c-h3{font-size:.95rem;color:var(--blue);margin:.6em 0 .3em;text-transform:uppercase;letter-spacing:.5px}
/* 2028 hub */
.badge28{display:table;background:var(--red);color:#fff;font-weight:800;letter-spacing:.04em;text-transform:uppercase;font-size:.8rem;padding:4px 10px;border-radius:999px;margin:6px 0}
.badge28.arch{background:#555}
.pp-L{background:#FED105;color:#3a2f00}
.st-declared{background:#0B6E3A;color:#fff}.st-exploratory{background:#2F7D5B;color:#fff}.st-interest{background:#E8F0FB;color:var(--blue);border:1px solid var(--blue)}
.st-speculated{background:#F2F2F2;color:#444;border:1px solid #bbb}.st-declined{background:#fff;color:#777;border:1px dashed #999}
.c-cal{display:grid;grid-template-columns:1fr;gap:0 12px}@media(min-width:720px){.c-cal{grid-template-columns:1fr 1fr}}
.c-cal ol{margin:6px 0 6px 20px;padding:0}
@media(min-width:960px){.c-sen{grid-template-columns:1fr 1fr 1fr}}
.c-pending{border-left:6px solid var(--warn-line)}

/* Data Bank tables */
.bk-t{width:100%;border-collapse:collapse;font-size:.92rem;margin:.5rem 0 1rem}.bk-t th,.bk-t td{text-align:left;padding:.4rem .5rem;border-bottom:1px solid #dfe3ea}.bk-t th{background:#0A3161;color:#fff}.bk-t tbody tr:nth-child(even){background:#f5f7fb}
#fl{overflow-x:auto}
/* App hub */
.hub-head .lede{margin-bottom:6px}
h2.sec{font-size:.8rem;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);margin:18px 0 8px;display:flex;gap:8px;align-items:center}
.agrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.atile{display:flex;flex-direction:column;gap:6px;padding:14px;border-radius:var(--radius);background:var(--white);border:1px solid var(--line);border-top:4px solid var(--red);text-decoration:none;color:var(--ink);box-shadow:0 1px 2px rgba(10,49,97,.06);transition:transform .08s,box-shadow .08s}
.atile:hover,.atile:focus-visible{transform:translateY(-1px);box-shadow:0 4px 12px rgba(10,49,97,.14)}
.atile.blue{background:var(--blue);color:var(--white);border-color:var(--blue);border-top-color:var(--red)}
.atile .at-top{display:flex;align-items:center;gap:10px}
.atile .ico{font-size:1.4rem}
.at-t{font-weight:800;color:var(--blue);font-size:1.02rem}
.atile.blue .at-t{color:var(--white)}
.at-s{font-size:.86rem;color:var(--muted)}
.atile.blue .at-s{color:#DCE4F0}
.at-m{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:auto}
.pill-n{display:inline-block;background:var(--blue-lt);color:var(--blue);font-weight:800;font-size:.75rem;padding:1px 8px;border-radius:999px;margin-right:3px}
.at-m .pill-n+*{font-size:.75rem}
.at-m{font-size:.75rem;color:var(--muted)}
.atile.blue .at-m{color:#DCE4F0}
.atile.blue .pill-n{background:rgba(255,255,255,.2);color:var(--white)}
.mt{font-size:.75rem;color:var(--muted);font-weight:500;text-transform:none;letter-spacing:0}
.atile.blue .mt{color:#DCE4F0}
.badge-new{background:var(--red);color:var(--white);font-size:.66rem;font-weight:800;text-transform:uppercase;padding:1px 7px;border-radius:999px}
.wl{list-style:none;padding:0;margin:8px 0;display:grid;gap:6px}
.wl-i{display:flex;align-items:center;background:var(--white);border:1px solid var(--line);border-radius:12px}
.wl-i a{flex:1;display:flex;flex-direction:column;padding:10px 14px;text-decoration:none;color:var(--ink)}
.wl-l{font-weight:700;color:var(--blue)}
.wl-x{border:0;background:none;font-size:1rem;padding:10px 14px;cursor:pointer;color:var(--muted)}
.wl-row{display:flex;gap:8px;margin-top:6px}.wl-row .btn{min-height:auto}
.empty-st{text-align:center;color:var(--muted)}.empty-st .ico{font-size:2rem}
.wl-del{border-color:var(--red);color:var(--red);margin-top:10px}
/* Politicians under fire */
.pill.st-charged{background:#fde8e8;color:#9b1c1c}
.pill.st-ethics{background:#fff4d6;color:#8a5a00}
.pill.st-conv{background:#e9e2f8;color:#4c2a85}
.pill.st-closed{background:#e8eef3;color:#334e68}
.pill.ct-acc{background:#e3f2ff;color:#0b4f8a}
.pill.ct-news{background:#eef0f2;color:#555}
.card.inv h3{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}

.inv-toggle{display:inline-flex;gap:.4em;align-items:center;margin-top:.5em;font-weight:600;cursor:pointer}
.pill.st-appeal{background:#e6edf9;color:#1e3a8a;border:1px solid #b22234}
