/* CivicAlign — one stylesheet for the public pages. Colours are tokens so both
   themes resolve as a set; positions on tracks arrive as --x custom properties. */
:root{
  --paper:#F2F4F7; --surface:#FFFFFF; --ink:#191C21; --muted:#5F6874;
  --rule:#DEE3EA; --rule-soft:#EDF0F4;
  --alert:#A85A00; --alert-soft:#FBF0E2;
  --calm:#1F7A3F; --calm-soft:#E4F3E9;
  --rep:#B23B36; --dem:#27589B;
  --serif:"Source Serif 4",Georgia,serif;
  --sans:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#101317; --surface:#191D23; --ink:#E9ECF0; --muted:#99A3B0;
  --rule:#2A3039; --rule-soft:#222831;
  --alert:#E09A4B; --alert-soft:#2A1F12;
  --calm:#5BC27E; --calm-soft:#14261B;
  --rep:#D97872; --dem:#6A9AD6;
}}
:root[data-theme="dark"]{
  --paper:#101317; --surface:#191D23; --ink:#E9ECF0; --muted:#99A3B0;
  --rule:#2A3039; --rule-soft:#222831;
  --alert:#E09A4B; --alert-soft:#2A1F12;
  --calm:#5BC27E; --calm-soft:#14261B;
  --rep:#D97872; --dem:#6A9AD6;
}
*{box-sizing:border-box}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);
  font-size:16px;line-height:1.6;margin:0}
.wrap{max-width:760px;margin:0 auto;padding-inline:20px;padding-block:44px 72px}
h1,h2,h3{font-family:var(--serif);font-weight:600;text-wrap:balance;margin:0}
h1{font-size:clamp(30px,6vw,44px);line-height:1.1;letter-spacing:-.018em}
h2{font-size:clamp(21px,3.4vw,26px);line-height:1.22}
p{margin:0}
.sub{margin-top:16px;font-size:17.5px;color:var(--muted);max-width:54ch}
.separate{margin-top:10px;font-size:14.5px;color:var(--muted);max-width:54ch;
  border-left:3px solid var(--rule);padding-left:12px}
.updated{margin-top:14px;font-size:13px;color:var(--muted);display:flex;flex-wrap:wrap;gap:4px 18px}
.updated span{white-space:nowrap}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted)}

/* header + baseline badge */
.top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;
  flex-wrap:wrap}
.badge{font-family:var(--mono);font-size:12px;color:var(--muted);
  border:1px solid var(--rule);border-radius:3px;padding:4px 9px;white-space:nowrap}

/* navigation: sticks under the top edge; scrolls sideways on a phone */
.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;margin-top:28px;
  display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;
  background:var(--paper);padding:10px 0;border-bottom:1px solid var(--rule)}
.nav::-webkit-scrollbar{display:none}
.nav a{flex:none;font-size:15px;font-weight:600;color:var(--muted);
  text-decoration:none;padding:11px 14px;border-radius:22px;white-space:nowrap;
  min-height:44px;display:inline-flex;align-items:center}
.nav a:hover{color:var(--ink);background:var(--rule-soft)}
.nav a[aria-selected="true"]{color:var(--ink);background:var(--surface);
  box-shadow:inset 0 0 0 2px var(--ink)}
.nav a:focus-visible{outline:3px solid var(--alert);outline-offset:2px}
html{scroll-padding-top:64px}
[id]{scroll-margin-top:64px}
.card h3[tabindex]{outline-offset:4px}

/* views: one visible at a time, same rhythm inside each */
.view{margin-top:0;padding-top:8px}
.view:focus{outline:none}
.view>*+*{margin-top:22px}
.takeaway{font-family:var(--serif);font-size:clamp(19px,2.8vw,23px);line-height:1.35;
  max-width:52ch;margin-top:24px}
.limit{font-size:14px;color:var(--muted);max-width:60ch;border-left:3px solid var(--rule);
  padding-left:14px}
.more{border:1px solid var(--rule);background:var(--surface)}
.more summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;
  align-items:center;gap:10px;padding:14px 18px;min-height:48px;font-size:15px;font-weight:700}
.more summary::-webkit-details-marker{display:none}
.more summary::after{content:"show";font-family:var(--sans);font-size:12.5px;
  font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);
  border:1px solid var(--rule);border-radius:3px;padding:3px 9px}
.more[open] summary::after{content:"hide"}
.more>*:not(summary){margin:0 18px 18px}
.card .more{margin-top:18px}
.card .more .receipt,.card .more .rank{margin-top:12px}
.card .more .legend{margin-top:10px}
.gate h3,.gridwrap h3{font-family:var(--sans);font-size:13px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.gate{margin-top:26px}
.gate .gk{margin-top:12px}
.limits{margin-top:8px;border-top:0;padding-top:0}
.limits h3{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted)}
.method{margin-top:0;border-top:0;padding-top:0}
.method summary::after{content:"show"}
.method h2{display:block}
.picker{margin-top:0}
#committee-drift-module>.ckey{margin-top:0}
section>.intro{margin-top:12px;color:var(--muted);font-size:15.5px;max-width:60ch}

/* picker */
.picker{margin-top:34px;background:var(--surface);border:1px solid var(--rule);
  padding:20px 22px}
.picker label{display:block;font-size:13px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted)}
select{margin-top:10px;width:100%;font-family:var(--sans);font-size:19px;
  font-weight:600;padding:12px 14px;border:1.5px solid var(--ink);
  background:var(--surface);color:var(--ink);border-radius:4px;
  -webkit-appearance:none;appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),
    linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - 22px) 55%,calc(100% - 15px) 55%;
  background-size:7px 7px,7px 7px;background-repeat:no-repeat}
select:focus-visible,button:focus-visible,summary:focus-visible{
  outline:3px solid var(--alert);outline-offset:2px}
.statefact{margin-top:14px;font-size:15px;color:var(--muted)}
.statefact b{color:var(--ink);font-weight:600}

/* ---- "Explore the scale": the ruler, folded away under the cards ---- */
.explore{margin-top:20px;border:1px solid var(--rule);background:var(--surface)}
.explore summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;
  align-items:center;gap:10px;padding:14px 22px;font-family:var(--serif);
  font-size:18px;font-weight:600}
.explore summary::-webkit-details-marker{display:none}
.explore summary::after{content:"show";font-family:var(--sans);font-size:12.5px;
  font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);
  border:1px solid var(--rule);border-radius:3px;padding:3px 9px}
.explore[open] summary::after{content:"hide"}
.ruler{margin-top:0;background:var(--surface);border:0;border-top:1px solid var(--rule);
  padding:18px 22px 18px}
.ruler h3{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted)}
.ruler .ends{display:flex;justify-content:space-between;font-size:12.5px;
  color:var(--muted);font-weight:600;margin-top:12px}
.rtrack{position:relative;height:10px;background:var(--rule-soft);border-radius:5px;
  margin:12px 0 0}
.rtrack .rm{position:absolute;left:var(--x);top:50%;transform:translate(-50%,-50%);
  width:2px;height:18px;background:var(--muted);border-radius:1px}
.rtrack .rm.name{background:var(--muted);height:18px}
.rtrack .rm.dem{background:var(--dem);height:24px;width:3px}
.rtrack .rm.rep{background:var(--rep);height:24px;width:3px}
.rtrack .rm.sen{background:var(--ink);height:26px;width:3px}
.rtrack .rm.pub{background:var(--calm);height:26px;width:3px}
.rlabels{position:relative;height:0}
.rl{position:absolute;left:var(--x);top:calc(var(--row) * 20px + 10px);
  transform:translateX(-50%);font-size:12px;color:var(--muted);white-space:nowrap;
  max-width:160px;overflow:hidden;text-overflow:ellipsis}
.rl.name{color:var(--muted);font-weight:500}
.rl.dem{color:var(--dem);font-weight:700}
.rl.rep{color:var(--rep);font-weight:700}
.rl.sen{color:var(--ink);font-weight:700}
.rl.pub{color:var(--calm);font-weight:700}
.ruler .note{font-size:13px;color:var(--muted);margin-top:8px;max-width:60ch}

/* ---- senator cards ---- */
.card{background:var(--surface);border:1px solid var(--rule);margin-top:20px;
  padding:26px 24px 26px;border-radius:8px}
.card.flagged{border-left:4px solid var(--alert)}
.card.null{opacity:.85}
.who{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.who h3{font-size:24px;font-weight:700}
.party{font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.party.d{color:var(--dem)} .party.r{color:var(--rep)} .party.i{color:var(--muted)}
.pill{font-family:var(--sans);font-size:17px;font-weight:700;
  margin-top:14px;display:inline-block;padding:7px 12px;border-radius:6px;
  line-height:1.3}
.pill.aligned,.pill.neutral{background:var(--rule-soft);color:var(--ink);
  box-shadow:inset 0 0 0 1px var(--ink)}
.kicker{margin-top:14px;font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.kicker .kick2{font-weight:500;letter-spacing:0;text-transform:none;margin-left:6px}
.card .kicker+.pill{margin-top:8px}
.statecard{border-left:4px solid var(--calm)}
.pubcard .kicker+.ends{margin-top:8px}
.pubtrack.voters{margin-top:40px}
.pubtrack .stick{position:absolute;left:var(--x);top:50%;transform:translate(-50%,-50%);width:1px;height:16px;background:var(--muted);opacity:.35}
.pill .ic{display:inline-block;margin-right:7px;font-weight:700}
/* text for screen readers where a drawn track carries the information */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0}
.pill.right{background:var(--alert-soft);color:var(--alert);
  box-shadow:inset 0 0 0 1px var(--alert)}
.pill.left{background:var(--alert-soft);color:var(--alert);
  box-shadow:inset 0 0 0 1px var(--alert)}
.verdict .ic{display:inline-block;margin-right:8px;font-weight:700;color:var(--muted)}
.caption{margin-top:8px;font-size:13.5px;color:var(--muted);max-width:60ch}
.caption .swatch{display:inline-block;width:16px;height:9px;vertical-align:-1px;margin-right:6px;border-radius:3px;background:rgba(100,116,139,.2);outline:1px dashed #94a3b8}
.scale .caption{margin-top:0}
.verdict{margin-top:12px;font-size:17.5px;line-height:1.45;max-width:50ch;
  font-family:var(--serif)}
.verdict b{font-weight:700}
.rank{margin-top:8px;font-size:13px;color:var(--muted)}
.gapline{margin-top:10px;font-size:14px;color:var(--muted)}
.leftright{margin-top:14px;font-size:14px;color:var(--muted);max-width:60ch}
.why{margin-top:16px;font-size:16px;max-width:58ch}
.q{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:28px}
.qsub{margin-top:4px;font-size:15px;color:var(--muted);max-width:60ch}
.q+.qsub+.card,.q+.qsub+#cards>.card:first-child{margin-top:12px}
#stateblock .q{margin-top:32px}
.scalename{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);opacity:.8;margin-bottom:4px}
.scale .scalename{margin-top:0}
.gk .notbill{margin-top:8px;font-size:14.5px;font-weight:600;color:var(--ink);max-width:60ch}
.rangetag{position:absolute;left:var(--x);top:-18px;transform:translateX(-50%);font-size:10.5px;color:var(--muted);white-space:nowrap;letter-spacing:.03em;text-transform:uppercase;display:none}
.srcgrid{margin-top:14px;display:grid;gap:10px}
.srcgrid div{background:var(--surface);border:1px solid var(--rule);padding:14px 16px}
.srcgrid b{display:block;font-size:15px}
.srcgrid span{color:var(--muted);font-size:14.5px}
.limits-list{margin:12px 0 0;padding-left:20px;display:grid;gap:8px;font-size:15px;color:var(--muted);max-width:60ch}
.tag{display:inline-block;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:3px;margin-right:6px;vertical-align:1px}
.tag.weak{background:var(--alert-soft);color:var(--alert);border:1px solid var(--alert)}
.gk.weak{opacity:.85;border-style:dashed}
.gk .counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:4px}
.gk .counts div{background:var(--surface);padding:10px 12px}
.gk .counts .k{display:block;font-size:12px;color:var(--muted)}
.gk .counts .v{display:block;font-family:var(--serif);font-size:24px;font-weight:700;margin-top:2px}
.gk .grouped{margin-top:12px;font-size:13.5px;color:var(--muted);max-width:60ch}
.pubcard .verdict{margin-top:8px}
.pubcard .ends,.cm .ends{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.cm .ends{margin-top:10px}
.pubcard .caption{margin-top:6px}
.pubcard .kicker+.ends{margin-top:10px}
.pubtrack{margin-top:40px}
.gapline b{color:var(--ink)}
.cm details.more{margin-top:12px}

.scale{margin-top:26px}
.scale .ends{display:flex;justify-content:space-between;font-size:11.5px;
  color:var(--muted);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.track{position:relative;height:10px;background:var(--rule-soft);border-radius:5px;
  margin:34px 0 calc(48px + var(--rows,1) * 15px)}
.span{position:absolute;left:var(--l);width:var(--w);top:0;height:10px;
  background:var(--alert);opacity:.30;border-radius:5px}
.mark.state-error-band{position:absolute;left:var(--x);width:var(--w);top:50%;
  height:24px;transform:translate(-50%,-50%);background:rgba(100,116,139,.2);
  border-left:1px dashed #94a3b8;border-right:1px dashed #94a3b8;border-radius:4px;
  z-index:1}
.mark{position:absolute;left:var(--x);top:50%;transform:translate(-50%,-50%);
  border-radius:2px}
.mark.state{width:3px;height:28px;background:var(--ink);z-index:2}
.mark.sen{width:18px;height:18px;border-radius:50%;border:3px solid var(--surface);
  background:var(--dot);z-index:3}
.mtag{position:absolute;left:var(--x);white-space:nowrap;font-weight:700;
  font-size:13px;transform:translateX(-50%)}
.mtag.top{top:-34px;color:var(--ink)}
.mtag.bot{top:calc(26px + var(--row,0) * 16px);color:var(--dot)}
.anchor{position:absolute;left:var(--x);top:50%;width:1px;height:16px;
  transform:translate(-50%,-50%);background:var(--muted);opacity:.45}
.anchor.dem,.anchor.rep,.anchor.sen,.anchor.pub{height:20px;opacity:.7;width:2px}
.anchor.dem{background:var(--dem)} .anchor.rep{background:var(--rep)} .anchor.pub{background:var(--calm)}
.atag.dem{color:var(--dem);opacity:1;font-weight:600} .atag.rep{color:var(--rep);opacity:1;font-weight:600}
.atag.pub{color:var(--calm);opacity:1;font-weight:600} .atag.sen{color:var(--ink);opacity:.9;font-weight:600}
.atag{position:absolute;left:var(--x);top:calc(46px + var(--row,0) * 15px);transform:translateX(-50%);
  font-size:12px;color:var(--muted);white-space:nowrap;opacity:.8;font-weight:500}
/* the peer comparison: observed range of comparable senators, senators' scale */
.mark.peerrange{position:absolute;left:var(--l);width:var(--w);top:50%;height:16px;
  transform:translateY(-50%);background:rgba(100,116,139,.28);border-radius:8px;z-index:1}
.anchor.peer{height:24px;width:2px;opacity:.9;background:var(--ink)}
.atag.peer{top:-30px;color:var(--ink);opacity:1;font-weight:600;font-size:12.5px}
.stateinput{margin-top:6px}
/* (legacy) the state reference: expected position and typical range, senators' scale */
.refcard{border-left:4px solid var(--ink)}
.mark.typical{position:absolute;left:var(--x);width:var(--w);top:50%;height:24px;
  transform:translate(-50%,-50%);background:rgba(100,116,139,.2);
  border-left:1px dashed #94a3b8;border-right:1px dashed #94a3b8;border-radius:4px;z-index:1}
.anchor.exp{height:22px;width:2px;opacity:.9;background:var(--ink)}
.atag.exp{top:-50px;color:var(--ink);opacity:1;font-weight:600;font-size:12.5px;white-space:normal;
  max-width:210px;text-align:center;line-height:1.25}
.refcard .track{margin-top:56px}
.atag.exp.edge-r{text-align:right} .atag.exp.edge-l{text-align:left}
.caption .dotkey{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--dem);vertical-align:-1px;margin:0 6px 0 2px}
.more.context summary{font-size:14px;color:var(--muted)}
.more.context>.qsub{margin:0 18px 12px}
.atag.exp.edge-r{transform:translateX(-100%);margin-left:6px}
.atag.exp.edge-l{transform:none;margin-left:-6px}
.card .say{margin-top:12px;font-size:15.5px;max-width:56ch}
.card .say b{font-weight:700}
.votes{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}
.votes li{border:1px solid var(--rule);border-radius:6px;padding:10px 12px;display:grid;gap:3px;font-size:14px}
.votes .vb{font-weight:600}
.votes .vd,.votes .vs{color:var(--muted);font-size:13px}
.votes .vv{font-weight:700}
.votes .vv.yea{color:var(--calm)} .votes .vv.nay{color:var(--alert)}
.votes a{font-size:13px;color:var(--alert)}
.years{border-collapse:collapse;width:100%;margin-top:8px;font-size:14px}
.years td,.years th{padding:6px 8px 6px 0;border-bottom:1px solid var(--rule-soft);text-align:left;vertical-align:top}
.years th{font-size:12px;color:var(--muted);font-weight:600}
.years tr.total td{border-bottom:none;border-top:2px solid var(--ink);font-weight:700}
.compare{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:6px}
.compare div{background:var(--surface);padding:10px 12px}
.compare .k{display:block;font-size:12px;color:var(--muted)}
.compare .v{display:block;font-family:var(--serif);font-size:19px;font-weight:700;margin-top:2px}
.compare .s{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}
.gk .kicker{margin-top:16px}
.pubtrack.seats{margin:44px 0 48px}
.pubtrack .pm.nat{background:var(--ink)}
.pubtrack .pm.seat{background:var(--alert)}
.pubtrack .pm.mid{background:var(--muted);opacity:.5;height:18px}
.pubtrack .pt.m{top:44px;color:var(--muted);font-weight:500;font-size:12px}
.pubtrack.seats{margin-bottom:66px}
.pubtrack.seats .pt.a{color:var(--alert)}
.legend{margin-top:2px;font-size:12.5px;color:var(--muted);line-height:1.55;
  max-width:60ch}
.legend i{display:inline-block;width:18px;height:10px;vertical-align:-1px;
  margin-right:6px;border-radius:3px;background:rgba(100,116,139,.2);
  outline:1px dashed #94a3b8}

/* plain terms: how far, where, what the numbers are made of */
.terms{margin-top:18px;display:grid;gap:10px}
.term{background:var(--rule-soft);border:1px solid var(--rule);border-radius:8px;padding:14px 16px}
.term h4{margin:0;font-family:var(--sans);font-size:12.5px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.term p{margin-top:6px;font-size:15px;line-height:1.5;max-width:60ch}
.term p b{font-weight:700}
.card .more .terms{margin-top:12px}

/* null state */
.nulltrack{margin-top:22px;height:10px;background:var(--rule-soft);border-radius:5px;
  opacity:.5}
.nullmsg{margin-top:14px;display:flex;gap:12px;align-items:flex-start;
  color:var(--muted);font-size:15px;max-width:56ch}
.nullmsg svg{flex:none;width:20px;height:20px;margin-top:3px}

/* how it works */
.how ol{list-style:none;counter-reset:s;padding:0;margin:22px 0 0;display:grid;gap:14px}
.how li{counter-increment:s;display:grid;grid-template-columns:auto 1fr;gap:16px;
  align-items:start}
.how li::before{content:counter(s);font-family:var(--serif);font-size:20px;
  font-weight:700;color:var(--surface);background:var(--ink);width:32px;height:32px;
  border-radius:50%;display:grid;place-items:center;line-height:1}
.how b{display:block;font-size:16.5px}
.how span{color:var(--muted);font-size:15.5px}

/* ---- Senate vs the public ---- */
.pubcard{margin-top:0;background:var(--surface);border:1px solid var(--rule);
  padding:22px 22px 26px}
.pubtrack{position:relative;height:10px;background:var(--rule-soft);border-radius:5px;
  margin:44px 0 44px}
.pubtrack .conn{position:absolute;left:var(--l);width:var(--w);top:0;height:10px;
  border-radius:5px;background:var(--rep);opacity:.35}
.pubtrack .conn.left{background:var(--dem)}
.pubtrack .pm{position:absolute;left:var(--x);top:50%;transform:translate(-50%,-50%);
  width:3px;height:30px;border-radius:2px}
.pubtrack .pm.pub{background:var(--calm)}
.pubtrack .pm.sen{background:var(--ink)}
.pubtrack .pm.piv{width:16px;height:16px;border-radius:50%;background:var(--ink);border:3px solid var(--surface)}
.pubtrack .pt{position:absolute;left:var(--x);transform:translateX(-50%);
  white-space:nowrap;font-size:13px;font-weight:700}
.pubtrack .pt.a{top:-38px;color:var(--calm)}
.pubtrack .pt.b{top:26px;color:var(--ink)}
.pubtrack .pt.c{top:-38px;color:var(--muted);font-weight:500;font-size:12.5px}
.pubtrack .pt.c.after{transform:none;margin-left:7px}
.pubtrack .pt.c.before{transform:translateX(-100%);margin-left:-7px}
.bignums{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:8px}
.bignums div{background:var(--surface);padding:14px 16px}
.bignums .k{font-family:var(--mono);font-size:12px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--muted);display:block}
.bignums .v{font-family:var(--serif);font-size:28px;font-weight:700;display:block;
  margin-top:6px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.bignums .s{font-size:12.5px;color:var(--muted);display:block;margin-top:4px}

.gridwrap{margin-top:0}
.gridwrap h3{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted)}
.gridnote{font-size:14px;color:var(--muted);margin-top:6px;max-width:60ch}
.dots{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.dot{width:44px;height:44px;border-radius:50%;border:2px solid var(--surface);
  background:var(--c);color:#fff;font:700 12.5px/1 var(--sans);letter-spacing:.02em;
  display:grid;place-items:center;cursor:default;padding:0;
  text-shadow:0 1px 2px rgba(0,0,0,.45)}
.dot:hover,.dot:focus-visible{border-color:var(--ink);z-index:2}
.gradkey{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:12.5px;
  color:var(--muted)}
.gradkey i{flex:1;height:10px;border-radius:5px;max-width:260px;
  background:linear-gradient(90deg,var(--dem),#888,var(--rep))}
.tip{position:absolute;z-index:50;background:var(--ink);color:var(--paper);
  padding:10px 12px;border-radius:6px;font-size:13px;line-height:1.45;
  max-width:260px;pointer-events:none;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.tip b{display:block;font-size:14px;margin-bottom:4px}
.tip[hidden]{display:none}

/* micro-help: a small "i" beside an unfamiliar term; one plain sentence appears inline */
.hb{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;
  border:1.5px solid var(--muted);background:none;color:var(--muted);
  font:italic 700 11px/1 var(--serif);cursor:pointer;padding:0;margin-left:7px;
  vertical-align:1px;position:relative}
.hb::after{content:"";position:absolute;inset:-13px}
.hb:hover,.hb[aria-expanded="true"]{border-color:var(--ink);color:var(--ink)}
.hint{display:block;margin-top:8px;font:400 14px/1.5 var(--sans);letter-spacing:0;
  text-transform:none;color:var(--ink);background:var(--rule-soft);
  border-left:3px solid var(--muted);padding:7px 11px;max-width:60ch}

/* bill flow: sent to committee -> formally sent forward -> full Senate */
.flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:8px;align-items:stretch;margin-top:4px}
.flow .step{background:var(--surface);border:1px solid var(--rule);padding:12px 14px;border-radius:6px;min-width:0}
.flow .step.end{background:var(--rule-soft);border-style:dashed}
.flow.process{grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;margin-top:12px}
.flow.process .step{padding:10px 12px}
.flow.process .k{color:var(--ink);font-size:13px;font-weight:600}
.flow .k{display:block;font-size:12.5px;color:var(--muted)}
.flow .v{display:block;font-family:var(--serif);font-size:26px;font-weight:700;margin-top:2px;letter-spacing:-.01em}
.flow .s{display:block;font-size:12.5px;color:var(--muted);margin-top:6px}
.flow .arr{align-self:center;color:var(--muted);font-size:20px;line-height:1}
.flow .arr::before{content:"\2192"}
.gk .rest{margin-top:12px;font-size:14px;color:var(--muted);max-width:60ch}
.gk .rest b{color:var(--ink);font-family:var(--serif);font-size:17px}
.gk .verdict{margin-top:10px}
.gk .ends{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted);font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-top:12px}
.gk details.more{margin-top:12px}

/* how it works, as questions */
.faq{margin-top:18px;display:grid;gap:12px}
.faq div{background:var(--surface);border:1px solid var(--rule);padding:16px 18px;border-radius:6px}
.faq h3{font-family:var(--serif);font-size:18px;font-weight:600}
.faq p{margin-top:6px;color:var(--muted);font-size:15px;max-width:60ch}

/* ---- committees ---- */
.cm{background:var(--surface);border:1px solid var(--rule);margin-top:12px;
  padding:20px 22px 22px}
.cm .gh{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  flex-wrap:wrap}
.cm .gh b{font-family:var(--serif);font-size:20px;font-weight:700}
.cm .gh span{font-size:13px;color:var(--muted)}
.ctrack{position:relative;height:10px;background:var(--rule-soft);border-radius:5px;
  margin:46px 0 64px}
.ctrack .conn{position:absolute;left:var(--l);width:var(--w);top:0;height:10px;
  border-radius:5px;opacity:.4;background:var(--rep)}
.ctrack .conn.left{background:var(--dem)}
.ctrack .cmk{position:absolute;left:var(--x);top:50%;transform:translate(-50%,-50%)}
.ctrack .cmk.sen{width:3px;height:30px;background:var(--muted);border-radius:2px}
.ctrack .cmk.pub{width:2px;height:22px;border-left:2px dashed var(--calm)}
.ctrack .cmk.mem{width:18px;height:18px;border-radius:50%;background:var(--dot);
  border:3px solid var(--surface);z-index:3}
.ctrack .cmk.out{width:14px;height:14px;background:var(--ink);
  transform:translate(-50%,-50%) rotate(45deg);border:2px solid var(--surface);z-index:3}
.ctrack .ct{position:absolute;left:var(--x);transform:translateX(-50%);
  white-space:nowrap;font-size:12.5px;font-weight:600}
.ctrack .ct.a{top:-40px;color:var(--muted)}
.ctrack .ct.p{top:-40px;color:var(--calm)}
.ctrack .ct.b{top:26px;color:var(--dot);font-weight:700}
.ctrack .ct.o{top:44px;color:var(--ink);font-weight:700}
.cm .warn{margin-top:6px;padding:10px 14px;border-radius:6px;font-size:14.5px;
  background:var(--alert-soft);color:var(--alert);border:1px solid var(--alert)}
.cm .warn.left{background:var(--dem);color:#fff;border-color:var(--dem);opacity:.92}
.cm .warn.right{background:var(--rep);color:#fff;border-color:var(--rep);opacity:.92}
.cm .warn.none{background:var(--calm-soft);color:var(--calm);border-color:var(--calm)}
.cm p.say{margin-top:12px;font-size:15px;max-width:56ch}
.cm p.fine{margin-top:8px;font-size:13px;color:var(--muted);max-width:60ch}
.cm .out-line{margin-top:10px;font-size:15px;max-width:56ch}
.ckey{margin-top:10px;font-size:12.5px;color:var(--muted);display:flex;gap:14px;
  flex-wrap:wrap}
.ckey i{display:inline-block;width:12px;height:12px;vertical-align:-2px;margin-right:5px}
.ckey .k1 i{border-radius:50%;background:var(--muted)}
.ckey .k2 i{background:var(--ink);transform:rotate(45deg);width:10px;height:10px}

/* gatekeeping bars (kept) */
.stark{margin-top:26px;background:var(--surface);border:1px solid var(--rule);
  padding:20px 22px;display:flex;gap:18px;align-items:baseline;flex-wrap:wrap}
.stark .big{font-family:var(--serif);font-size:clamp(34px,7vw,46px);font-weight:700;
  line-height:1;letter-spacing:-.02em}
.stark p{flex:1 1 240px;font-size:15px;color:var(--muted)}
.stark p b{color:var(--ink)}
.basenote{margin-top:16px;font-size:14.5px;color:var(--muted);max-width:60ch}
.gk{background:var(--surface);border:1px solid var(--rule);margin-top:14px;
  padding:18px 20px 20px}
.gk.lean-c{border-left:4px solid var(--rep)}
.gk.lean-l{border-left:4px solid var(--dem)}
.gk .gh{display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  flex-wrap:wrap}
.gk .gh b{font-family:var(--serif);font-size:19px;font-weight:700}
.gk .gh span{font-size:13px;color:var(--muted)}
.bars{margin-top:14px;display:grid;gap:10px}
.bar{display:grid;grid-template-columns:minmax(120px,160px) 1fr auto;gap:12px;
  align-items:center;font-size:13.5px}
.bar .lbl{color:var(--muted);font-weight:600}
.bar .trk{height:12px;background:var(--rule-soft);border-radius:6px;position:relative;
  overflow:hidden}
.bar .fill{position:absolute;inset:0 auto 0 0;width:var(--w);border-radius:6px}
.bar .fill.l{background:var(--dem)} .bar .fill.c{background:var(--rep)}
.bar .num{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}
.bar .num small{font-weight:400;color:var(--muted);font-size:12.5px}
.gk .say{margin-top:12px;font-size:15px;max-width:54ch}
.gk .fine{margin-top:10px;font-size:12.5px;color:var(--muted);max-width:62ch}
.caveat{margin-top:16px;font-size:14px;color:var(--muted);max-width:60ch;
  border-left:3px solid var(--rule);padding-left:14px}
.stakes{margin-top:0;background:var(--alert-soft);border:1px solid var(--alert);
  padding:20px 24px}
.stakes h3{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--alert)}
.stakes p{margin-top:8px;font-size:15.5px;max-width:56ch}

/* limits, method, footer */
.limits{margin-top:48px;border-top:2px solid var(--ink);padding-top:22px}
.limits h2{font-size:20px}
.limits dl{margin:18px 0 0;display:grid;gap:16px}
.limits dt{font-weight:700;font-size:15.5px}
.limits dd{margin:4px 0 0;color:var(--muted);font-size:15.5px;max-width:56ch}
.method{margin-top:48px;border-top:2px solid var(--ink);padding-top:22px}
.method summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:10px}
.method summary::-webkit-details-marker{display:none}
.method summary::after{content:"show";font-family:var(--sans);font-size:12.5px;
  font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);
  border:1px solid var(--rule);border-radius:3px;padding:3px 9px}
.method details[open] summary::after{content:"hide"}
.method h2{font-size:20px;display:inline}
.method p.intro{margin-top:10px;color:var(--muted);font-size:15.5px;max-width:58ch}
.plain{margin-top:18px;display:grid;gap:14px}
.plain div{background:var(--calm-soft);border-left:3px solid var(--calm);padding:14px 16px}
.plain b{display:block;font-size:15px}
.plain span{color:var(--muted);font-size:14.5px}
.report-link{margin-top:18px;font-size:15px}
.report-link a{color:var(--alert);font-weight:600}
.work{margin-top:20px;background:var(--surface);border:1px solid var(--rule);
  padding:18px 20px;overflow-x:auto}
.work h3{font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted)}
.work table{border-collapse:collapse;width:100%;margin-top:12px;font-size:14.5px}
.work td{padding:7px 10px 7px 0;border-bottom:1px solid var(--rule-soft);vertical-align:top}
.work .src{color:var(--muted);font-size:13px}
.work td:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;
  font-weight:600}
.work tr.total td{border-bottom:none;border-top:2px solid var(--ink);font-weight:700;
  padding-top:10px}
.work .formula{font-family:var(--mono);font-size:13.5px;background:var(--rule-soft);
  padding:10px 12px;margin-top:12px;border-radius:3px;overflow-x:auto;white-space:nowrap}
.srcs{margin-top:20px;display:grid;gap:12px}
.srcs div{font-size:14.5px} .srcs b{display:block}
.srcs a{word-break:break-all;font-size:13.5px;color:var(--alert)}
.srcs span{color:var(--muted);font-size:13.5px;display:block}
footer{margin-top:40px;font-size:13.5px;color:var(--muted);border-top:1px solid var(--rule);padding-top:18px}
footer h3{font-family:var(--sans);font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
footer ul{margin:10px 0 0;padding-left:18px;display:grid;gap:6px}
footer a{color:var(--alert)}
footer .asof{font-size:12px}
footer p{margin-top:12px}
.limit a{color:var(--alert)}
.srcs .who{display:block;font-size:13.5px}
.srcs .who a{color:var(--ink);font-weight:600}

@media (max-width:520px){
  .flow,.flow.process{grid-template-columns:1fr}
  .flow .arr{justify-self:center}
  .flow .arr::before{content:"\2193"}
  .bar{grid-template-columns:1fr auto}
  .bar .trk{grid-column:1 / -1;order:3}
  .rl{max-width:120px;font-size:12px}
  .card{padding:20px 17px 22px}
  .bar{font-size:14px}
}
