/* Blue Fine Print — blueprint drafting sheet. Single deliberate dark theme. */
:root{color-scheme:dark;--bp:#0f3460;--paper:#0f3460;--ink:#eaf2ff;--mute:#a9c0de;--rule:rgba(234,242,255,.32);--card:rgba(234,242,255,.045);
--red:#ff8a6e;--hi:#ffd166;--grid:rgba(234,242,255,.07);--grid2:rgba(234,242,255,.03);
--new_rule:#ffc48a;--money:#ffd166;--surveillance:#c9b6ff;--land:#9be3a4;--strings:#ffcf7a;--secrecy:#d6dde8;--rollback:#7fe0ff;
--socialism:#ff9fb0;--ngo:#ffb38a;--police:#9fd4ff;
--serif:"IBM Plex Sans Condensed","Arial Narrow",Arial,sans-serif;--mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;--sans:"IBM Plex Sans Condensed","Arial Narrow",Arial,sans-serif;
--stencil:"Big Shoulders Stencil Text",Impact,"Arial Narrow",sans-serif}
*{box-sizing:border-box}
body{margin:0;background-color:var(--bp);color:var(--ink);font:17px/1.55 var(--serif);
background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px),linear-gradient(var(--grid2) 1px,transparent 1px),linear-gradient(90deg,var(--grid2) 1px,transparent 1px);
background-size:120px 120px,120px 120px,24px 24px,24px 24px}
.sheet{max-width:1240px;margin:24px auto;border:2px solid rgba(234,242,255,.75)}
@media(max-width:760px){.sheet{margin:0;border-width:0 0 2px}}
a{color:inherit;text-decoration-color:var(--red);text-underline-offset:3px}
a:hover{color:var(--red)}
main{max-width:1080px;margin:0 auto;padding:16px}
h1{font-size:2rem;line-height:1.15;margin:.4em 0}
h1 small{font-size:1rem;color:var(--mute);font-weight:normal}
h2{font-size:1.15rem;margin:1.6em 0 .5em;padding-bottom:4px;border-bottom:1px solid var(--rule);text-transform:uppercase;letter-spacing:.06em;font-family:var(--sans)}
h2 small{text-transform:none;letter-spacing:0;color:var(--mute);font-weight:normal}
.lede{font-size:1.1rem;color:var(--mute);max-width:46em}
.small,small{font-size:.82rem;color:var(--mute)}
code{font-family:var(--mono);font-size:.8rem}

.mast{border-bottom:3px double var(--ink);padding:14px 16px 0;max-width:1080px;margin:0 auto}
.brand{display:flex;gap:12px;align-items:center;text-decoration:none}
.brand b{display:block;font-size:2.1rem;letter-spacing:-.01em;line-height:1}
.brand small{display:block;font-style:italic}
.mast nav{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:12px;padding:8px 0;border-top:1px solid var(--rule);font:600 .85rem var(--sans);text-transform:uppercase;letter-spacing:.05em}
.mast nav a{text-decoration:none;padding:2px 0}
.mast nav a.on{border-bottom:2px solid var(--red)}

.hero{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0}
.stat{border:1px solid var(--rule);background:var(--card);padding:12px 14px}
.stat a{text-decoration:none}
.stat b{display:block;font-size:1.9rem;line-height:1.1}
.stat span{font:.8rem var(--sans);color:var(--mute);text-transform:uppercase;letter-spacing:.04em}

.flags{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 16px}
.flags a{font:600 .78rem var(--sans);text-transform:uppercase;letter-spacing:.04em;text-decoration:none;border:1px solid var(--rule);padding:4px 10px;background:var(--card)}
.flags a.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px}
aside h2:first-child{margin-top:0}

.item{background:var(--card);border:1px solid var(--rule);border-left:4px solid var(--fc,var(--red));padding:12px 14px;margin:0 0 12px}
.item.old{opacity:.72}
.item h3{margin:.25em 0;font-size:1.18rem;line-height:1.3}
.item h3 a{text-decoration:none}
.item p{margin:.35em 0}
.meta{display:flex;flex-wrap:wrap;gap:4px 12px;font:.75rem var(--sans);text-transform:uppercase;letter-spacing:.05em;color:var(--mute)}
.meta .flag{color:var(--fc,var(--red));font-weight:700}
.meta .who{font-weight:700;color:var(--ink);text-decoration:none}
.stage{font-weight:700}
.s-upcoming{color:var(--red)} .s-passed{color:var(--ink)} .s-failed,.s-tabled{color:var(--rollback)}
.oldtag{background:var(--mute);color:var(--paper);padding:0 5px;font-weight:700}
.facts{font:.9rem var(--mono)}
.law{font-size:.9rem;border-left:3px solid var(--strings);padding-left:8px;color:var(--mute)}
.speak{font:.9rem var(--sans);background:var(--card);border:1px dashed var(--red);padding:6px 10px}
.f-new_rule{--fc:var(--new_rule)}.f-money{--fc:var(--money)}.f-surveillance{--fc:var(--surveillance)}.f-land{--fc:var(--land)}
.f-strings{--fc:var(--strings)}.f-secrecy{--fc:var(--secrecy)}.f-rollback{--fc:var(--rollback)}
.flags a.f-new_rule,.flags a.f-money,.flags a.f-surveillance,.flags a.f-land,.flags a.f-strings,.flags a.f-secrecy,.flags a.f-rollback{border-left:4px solid var(--fc)}

.score{font:700 .95rem var(--mono);white-space:nowrap}
.score i{font:italic .78rem var(--serif);font-weight:normal;color:var(--mute)}
.lv0{color:var(--rollback)}.lv1{color:var(--strings)}.lv2{color:var(--money)}.lv3{color:var(--red);text-decoration:underline double}
.board{padding-left:1.3em;margin:0}.board li{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px dotted var(--rule)}
.plain{list-style:none;padding:0;margin:0}.plain li{padding:4px 0;border-bottom:1px dotted var(--rule)}
.votes .v-yes b{color:var(--red)}.votes .v-no b{color:var(--rollback)}
.vote-row{display:grid;grid-template-columns:52px 1fr;gap:8px;align-items:start}
.vote-row .v{font:700 .8rem var(--mono);padding-top:14px}.v-yes .v{color:var(--red)}.v-no .v{color:var(--rollback)}

.table{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:.92rem;background:var(--card)}
th,td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--rule);vertical-align:top}
th{font:600 .72rem var(--sans);text-transform:uppercase;letter-spacing:.04em;color:var(--mute)}
.meeting{margin-bottom:22px}

.share{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}
.share a,.share button,button{font:600 .78rem var(--sans);text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--ink);background:var(--card);color:var(--ink);padding:6px 10px;text-decoration:none;cursor:pointer}
button{background:var(--ink);color:var(--paper);white-space:nowrap}
.share button{background:var(--card);color:var(--ink)}

.ad{border:1px solid var(--rule);padding:8px 12px;margin:12px 0;font:.9rem var(--sans);background:var(--card)}
.ad span{display:block;font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mute)}
.ad-top{max-width:1080px;margin:10px auto;text-align:center}
.ad-house{font-weight:700;text-decoration:none}

.signup label{display:block;font:600 .85rem var(--sans);margin-bottom:6px}
.signup div,aside .signup{display:flex;gap:6px}
input,select,textarea{font:16px var(--sans);padding:8px;border:1px solid var(--rule);background:var(--card);color:var(--ink);width:100%}
.tipform{max-width:560px;display:grid;gap:12px}.tipform label{display:grid;gap:4px;font:600 .85rem var(--sans)}
.tipform button{justify-self:start}
.hp{position:absolute;left:-9999px}
form.inline{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:6px;align-items:center;margin:4px 0;font-size:.9rem}
.corr{border-bottom:1px solid var(--rule);padding:8px 0}
details summary{cursor:pointer}
.bad{color:var(--red)}
.empty{font-style:italic;color:var(--mute);padding:20px 0}
.pager{display:flex;justify-content:space-between;margin:16px 0}
.flagdefs dt{font-weight:700;color:var(--fc)}.flagdefs dd{margin:0 0 8px 0}

.foot{border-top:3px double var(--ink);max-width:1080px;margin:30px auto 0;padding:18px 16px 40px}
.foot .signup{max-width:480px}

@media(max-width:760px){
  body{font-size:16px}
  .cols{grid-template-columns:1fr}
  .hero{gap:6px}
  .stat{padding:8px}
  .stat b{font-size:1.25rem}
  .stat span{font-size:.62rem}
  .brand b{font-size:1.6rem}
  h1{font-size:1.6rem}
  form.inline{grid-template-columns:1fr}
}

/* Ghosts in the machine */
.ghost{border:2px dashed var(--mute);background:repeating-linear-gradient(135deg,transparent 0 10px,rgba(127,127,127,.06) 10px 20px);padding:12px 14px;margin:14px 0;color:var(--ink)}
.ghost-mark{font:700 .72rem var(--mono);letter-spacing:.25em;text-transform:uppercase;color:var(--mute)}
.ghost-pop{font-size:1.5rem;margin:.2em 0}.ghost-pop small{font-size:.8rem}
.ghost p{margin:.35em 0}
.ghosttag{font:700 .68rem var(--mono);letter-spacing:.12em;color:var(--mute);border:1px dashed var(--mute);padding:0 5px}
.ghost-row td{opacity:.85;font-style:italic}
.ghost-mini{border-left:3px dashed var(--mute);padding-left:8px;font-size:.9rem}
.lvg{color:var(--mute);letter-spacing:.08em}

/* Money trail */
.donor-mark{font:700 .72rem var(--mono);color:var(--money);border:1px solid var(--money);padding:0 4px;text-decoration:none;white-space:nowrap}
h2.donor-head{border-bottom-color:var(--money)}

/* ---- blueprint overrides ---- */
a{text-decoration-color:var(--hi)}a:hover{color:var(--hi)}
.mast{border-bottom:1px solid rgba(234,242,255,.6);max-width:none;padding:22px 24px 0}
.brand{flex-direction:column;align-items:flex-start;gap:2px}
.brand .sheetno{font:.72rem var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--mute)}
.brand b{font-family:var(--stencil);font-weight:800;font-size:3.4rem;letter-spacing:.02em;line-height:.9}
.brand small{font-style:normal;color:var(--mute);font-size:.95rem}
.mast nav{border-top:1px solid var(--rule);font:600 .74rem var(--mono);letter-spacing:.1em;gap:6px;padding:10px 0}
.mast nav a{border:1px solid var(--rule);padding:8px 10px}
.mast nav a.on{background:var(--ink);color:var(--bp);border-color:var(--ink)}
main{max-width:none;padding:18px 24px}
h1{font-family:var(--stencil);font-weight:800;font-size:3rem;letter-spacing:.02em;line-height:.95}
h2{font:600 .8rem var(--mono);letter-spacing:.2em;border-bottom-color:rgba(234,242,255,.45)}
.stat,.item,table,.ad,.share a,.share button,input,select,textarea{background:var(--card)}
.stat b{font-family:var(--mono)}
.item{border-left-width:3px}
.flags a{background:transparent;color:var(--ink)}
.flags a.on{background:var(--ink);color:var(--bp)}
button{background:var(--hi);color:var(--bp);border:0;font-family:var(--mono)}
.share a,.share button{border-color:rgba(234,242,255,.6);color:var(--ink)}
.speak{border-color:var(--hi)}
.law{border-left-color:var(--red)}
.oldtag{background:var(--mute);color:var(--bp)}
.score{color:var(--hi)}.lv0{color:var(--rollback)}.lv1{color:#ffe7a6}.lv2{color:var(--hi)}.lv3{color:var(--red)}
.f-socialism{--fc:var(--socialism)}.f-ngo{--fc:var(--ngo)}.f-police{--fc:var(--police)}
.foot{border-top:1px solid rgba(234,242,255,.6);margin:0;max-width:none;padding:20px 24px 28px}
.titleblock{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid rgba(234,242,255,.7);font:.82rem var(--mono);max-width:620px;margin:14px 0 0 auto}
.titleblock div{padding:8px 10px;border-right:1px solid var(--rule)}.titleblock div:last-child{border-right:0}
.titleblock span{display:block;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
@media(max-width:600px){.titleblock{grid-template-columns:1fr}.titleblock div{border-right:0;border-bottom:1px solid var(--rule)}}

/* home map */
.home-grid{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}
.home-grid .map{flex:999 1 560px;min-width:0;margin:0}
.home-grid aside{flex:1 1 320px;min-width:0;display:flex;flex-direction:column;gap:16px}
.map figcaption{font:.72rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin-bottom:8px}
.map svg{width:100%;height:auto;display:block}
.map a text{fill:var(--ink)}.map a:hover text{fill:var(--hi)}
.map a:focus-visible circle{stroke:var(--hi);stroke-width:4}
.panel{border:1px solid var(--rule);padding:14px}
.panel.redbox{border:2px solid var(--red)}
.panel.redbox .lbl{color:var(--red)}
.lbl{font:.72rem var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--mute)}
.sched{width:100%;border-collapse:collapse;background:transparent;font-variant-numeric:tabular-nums}
.sched td,.sched th{border-bottom:1px dashed var(--rule);padding:8px 4px}

/* city sheet */
.citytop{display:flex;flex-wrap:wrap;gap:22px;align-items:stretch;margin-bottom:12px}
.citytop .name{flex:999 1 460px;min-width:0;display:flex;flex-direction:column;justify-content:flex-end}
.citytop .name h1{font-size:6.2rem;margin:0;line-height:.85}
@media(max-width:600px){.citytop .name h1{font-size:3.4rem}}
.tblock{flex:1 1 380px;min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:2px solid var(--ink);font-variant-numeric:tabular-nums}
.tblock>div{padding:10px 12px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.tblock>div:nth-child(2n){border-right:0}
.tblock .src{padding:0;border:0}
.tblock span{display:block;font:.68rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.tblock b{font-size:1.4rem}
.tblock .src{font-size:.75rem;color:var(--mute)}
.tblock .hi{background:var(--hi);color:var(--bp)}.tblock .hi span,.tblock .hi .src{color:var(--bp)}
.tabs{display:flex;flex-wrap:wrap;gap:6px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:10px 0;margin:10px 0 16px;font:600 .74rem var(--mono);letter-spacing:.08em;text-transform:uppercase}
.tabs a{text-decoration:none;border:1px solid var(--rule);padding:9px 11px}
.tabs a.on{background:var(--ink);color:var(--bp)}
.votegrid{overflow-x:auto;border:1px solid var(--rule)}
.votegrid table{border-collapse:collapse;min-width:640px;width:100%;font:.8rem var(--mono);background:transparent}
.votegrid th{font-weight:400;color:var(--mute);padding:8px 6px;border-bottom:1px solid var(--rule);vertical-align:bottom}
.votegrid th a{writing-mode:vertical-rl;transform:rotate(180deg);text-decoration:none;max-height:150px;overflow:hidden;display:inline-block}
.votegrid td{text-align:center;padding:6px 4px;border-top:1px dashed rgba(234,242,255,.15)}
.votegrid td:first-child{text-align:left;white-space:nowrap}
.vy{color:var(--hi)}.vn{color:var(--ink)}.va{color:var(--mute)}
.redline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid rgba(255,138,110,.6)}
.redline>div{padding:10px 12px;border-bottom:1px solid rgba(255,138,110,.4)}
.redline>div:nth-child(2n+1){border-right:1px solid rgba(255,138,110,.4)}
.redline .h{font:.7rem var(--mono);letter-spacing:.14em;color:var(--mute)}
.redline .h.st{color:var(--red)}
@media(max-width:600px){.redline{grid-template-columns:1fr}.redline>div:nth-child(2n+1){border-right:0}}
.chart svg{width:100%;height:auto}
.dsa{font:.68rem var(--mono);letter-spacing:.08em;border:1px solid var(--socialism);color:var(--socialism);padding:0 4px;white-space:nowrap}
