
:root { --bg:#0b1220; --card:#121c30; --ink:#eaf0f7; --muted:#93a1b5;
        --teal:#2dd4bf; --amber:#fbbf24; --rule:#22304a;
        --tint:rgba(255,255,255,.04); --tint-md:rgba(255,255,255,.07);
        --border-subtle:rgba(255,255,255,.08); }
* { box-sizing:border-box; margin:0; }
body { background:var(--bg); color:var(--ink);
       font:16px/1.6 system-ui,-apple-system,"Segoe UI",sans-serif; }
.wrap { max-width:900px; margin:0 auto; padding:20px 20px 64px; }
nav { display:flex; align-items:center; gap:14px; padding:14px 0;
      border-bottom:1px solid var(--rule); flex-wrap:wrap; }
nav img { height:34px; width:auto; }
nav a { color:var(--muted); text-decoration:none; font-size:14px; }
nav a:hover { color:var(--teal); }
nav a[aria-current] { color:var(--teal); font-weight:600; }
nav .cta { margin-left:auto; background:var(--teal); color:#06251f;
           font-weight:700; padding:8px 16px; border-radius:8px; }
nav .nav-search { display:inline-flex; align-items:center; gap:6px;
  font-size:14px; padding:6px 10px; border-radius:8px;
  border:1px solid var(--rule); color:var(--muted); }
nav .nav-search:hover { color:var(--teal); border-color:var(--teal); }
/* One-click path from any national page to the reader's own state briefing —
   the site's answer to "I don't want to wade through 49 other states". */
nav .nav-state { font-size:13px; padding:6px 8px; border-radius:8px; max-width:150px;
  border:1px solid var(--rule); background:var(--card); color:var(--muted); }
nav .nav-state:hover, nav .nav-state:focus { color:var(--teal); border-color:var(--teal); }
table.sortable th[data-dir="asc"], table.sortable th[data-dir="desc"] { color:var(--teal); }
table.sortable td { vertical-align:middle; }
/* Grouped dropdowns (desktop). Menus reveal on hover, keyboard focus, or the
   native <details> toggle; the summary marker is replaced with a caret. */
.navgroup { position:relative; }
.navgroup > summary { list-style:none; cursor:pointer; color:var(--muted);
  font-size:14px; padding:2px 0; display:inline-flex; align-items:center; }
.navgroup > summary::-webkit-details-marker { display:none; }
.navgroup > summary::after { content:"\25BE"; font-size:10px; margin-left:5px;
  opacity:.55; }
.navgroup:hover > summary, .navgroup[open] > summary,
.navgroup > summary.active { color:var(--teal); }
.navmenu { display:none; position:absolute; top:calc(100% + 8px); left:0;
  background:var(--card); border:1px solid var(--rule); border-radius:10px;
  padding:6px; min-width:190px; flex-direction:column; gap:1px; z-index:60;
  box-shadow:0 10px 28px rgba(0,0,0,.4); }
.navgroup:hover > .navmenu, .navgroup:focus-within > .navmenu,
.navgroup[open] > .navmenu { display:flex; }
.navmenu a { padding:8px 12px; border-radius:6px; font-size:14px;
  white-space:nowrap; color:var(--muted); }
.navmenu a:hover { background:rgba(45,212,191,.1); color:var(--teal); }
.navmenu a[aria-current] { color:var(--teal); font-weight:600; }
/* Desktop: the link-group wrapper dissolves so flex layout is unchanged. */
.nav-burger { display:none; }
.nav-links { display:contents; }
@media (max-width:820px) {
  nav { gap:8px; }
  nav img { height:30px; width:auto; }
  .nav-burger { display:block; order:3; font-size:20px; line-height:1;
    color:var(--muted); cursor:pointer; padding:5px 8px; border-radius:8px;
    border:1px solid var(--rule); user-select:none; }
  .nav-burger:hover { color:var(--teal); border-color:var(--teal); }
  nav .cta { order:2; margin-left:auto; padding:6px 11px; font-size:13px; }
  nav .nav-search { order:1; padding:5px 9px; font-size:13px; }
  nav .nav-state { order:1; max-width:120px; }
  nav .nav-search span { display:none; }
  .nav-links { order:4; display:none; flex-basis:100%;
    flex-direction:column; gap:0; padding:4px 0 2px; }
  #navToggle:checked ~ .nav-links { display:flex; }
  .nav-links > a { padding:10px 2px; font-size:15px;
    border-bottom:1px solid var(--border-subtle); }
  /* Groups become inline accordions: the menu stacks under its summary and
     is revealed by the native <details> tap, not an absolute overlay. */
  .navgroup { position:static; border-bottom:1px solid var(--border-subtle); }
  .navgroup > summary { padding:11px 2px; font-size:15px; justify-content:space-between; }
  .navgroup[open] > summary::after { transform:rotate(180deg); }
  .navmenu { position:static; display:none; box-shadow:none; border:none;
    background:transparent; padding:0 0 6px 12px; min-width:0; gap:0; }
  .navgroup[open] > .navmenu { display:flex; }
  .navmenu a { padding:8px 10px; font-size:14px; }
}
.skip { position:absolute; left:-9999px; }
.skip:focus { position:fixed; left:16px; top:10px; z-index:1000;
  background:var(--teal); color:#06251f; font-weight:700;
  padding:9px 16px; border-radius:8px; }
header { padding:44px 0 10px; }
.kicker { color:var(--teal); font-weight:700; letter-spacing:.12em;
          text-transform:uppercase; font-size:13px; }
h1 { font-size:clamp(28px,5vw,44px); line-height:1.12; margin:10px 0;
     text-wrap:balance; }
.sub { color:var(--muted); max-width:640px; }
.stats { display:grid; grid-template-columns:repeat(2,1fr); gap:14px;
         margin:30px 0; }
@media (min-width:640px){ .stats{ grid-template-columns:repeat(4,1fr);} }
.stat { background:var(--card); border:1px solid var(--rule);
        border-radius:14px; padding:16px; }
.stat b { display:block; font-size:24px; color:var(--teal); }
.stat span { font-size:13px; color:var(--muted); }
section { margin:34px 0; }
h2 { font-size:20px; color:var(--teal); margin-bottom:12px;
     border-bottom:1px solid var(--rule); padding-bottom:8px; }
ul { padding-left:22px; } li { margin:9px 0; }
a { color:var(--teal); }
.btn { display:inline-block; background:var(--teal); color:#06251f;
       font-weight:700; padding:12px 22px; border-radius:10px;
       text-decoration:none; margin:8px 8px 0 0; }
.btn.ghost { background:transparent; color:var(--teal);
             border:1px solid var(--teal); }
.muted { color:var(--muted); font-size:14px; }
.grid3 { display:grid; grid-template-columns:1fr; gap:14px; }
@media (min-width:640px){ .grid3{ grid-template-columns:repeat(3,1fr);} }
.card { background:var(--card); border:1px solid var(--rule);
        border-radius:14px; padding:18px; }
.card h3 { margin-bottom:6px; font-size:16px; }
.panel { border-radius:14px; padding:18px; color:#fff; }
.panel h3 { margin-bottom:8px; }
.panel p { font-size:14px; color:inherit; opacity:.88; }
.ask { background:rgba(45,212,191,.08); border:1px solid var(--teal);
       border-radius:10px; padding:12px 14px; font-size:14px; margin-top:10px; }
.src { font-size:12.5px; color:var(--muted); }
.freshness { border-left:3px solid var(--rule); padding:10px 14px;
  margin:14px 0; background:var(--tint); border-radius:0 8px 8px 0;
  font-size:13.5px; }
.freshness.stale { border-left-color:var(--amber);
  background:rgba(251,191,36,.07); }
.freshness p { margin:0; }
.note { border-left:3px solid var(--rule); padding:12px 16px; margin:18px 0;
  border-radius:0 8px 8px 0; font-size:14.5px; line-height:1.55; }
.note.info { border-left-color:var(--teal); background:rgba(45,212,191,.07); }
.note.warn { border-left-color:var(--amber); background:rgba(251,191,36,.07); }
.note.bad  { border-left-color:#ef4444; background:rgba(239,68,68,.08); }
.note.good { border-left-color:#34d399; background:rgba(52,211,153,.07); }
.note p { margin:0; }
details.more { border:1px solid var(--rule); border-radius:10px;
  padding:0 16px; margin:16px 0; background:var(--tint); }
details.more > summary { cursor:pointer; padding:13px 0; font-weight:600;
  color:var(--teal); font-size:14.5px; }
details.more[open] { padding-bottom:10px; }
nav.pagenav { display:block; padding:14px 18px; border:1px solid var(--rule); border-radius:12px;
  margin:22px 0 18px; background:rgba(45,212,191,.05); }
.pagenav-hd { display:flex; align-items:center; justify-content:space-between;
  gap:12px; font-weight:700; font-size:13px; letter-spacing:.04em;
  text-transform:uppercase; color:var(--muted); }
.pagenav ol { margin:10px 0 0; padding-left:20px; font-size:15px; line-height:1.9; }
.pagenav a { color:var(--ink); text-decoration:none; border-bottom:1px solid var(--rule); }
.pagenav a:hover { color:var(--teal); border-bottom-color:var(--teal); }
.expandall { background:none; border:1px solid var(--rule); color:var(--teal);
  border-radius:999px; padding:5px 12px; font:inherit; font-size:12px;
  cursor:pointer; text-transform:none; letter-spacing:0; }
.expandall:hover { border-color:var(--teal); }
.pagenav .pnav-grp { margin:12px 0 0; font-weight:700; font-size:11.5px;
  letter-spacing:.06em; text-transform:uppercase; color:var(--teal); }
.pagenav .pnav-grp:first-of-type { margin-top:8px; }
.secgrp { margin:36px 0 0; padding-top:20px; border-top:1px solid var(--rule);
  font-weight:700; font-size:12px; letter-spacing:.06em;
  text-transform:uppercase; color:var(--teal); }
details.sect > summary { font-size:17px; color:var(--ink); padding:16px 0;
  display:flex; align-items:center; gap:10px; }
details.sect > summary:hover { color:var(--teal); }
details.sect .secno { display:inline-flex; align-items:center;
  justify-content:center; width:24px; height:24px; flex:0 0 24px;
  border-radius:50%; background:rgba(45,212,191,.15); color:var(--teal);
  font-size:12.5px; font-weight:700; }
details.sect[open] { padding-bottom:18px; }
details.sect > p, details.sect > ul, details.sect > ol { max-width:74ch; }
details.sect h4 { margin:26px 0 6px; font-size:16px; color:var(--ink); }
details.sect > p:first-of-type { margin-top:4px; }
.billbar { display:flex; height:60px; border-radius:8px; overflow:hidden;
  margin:20px 0 12px; }
.billbar > div { display:flex; align-items:center; justify-content:center;
  color:#fff; font-weight:700; font-size:14px; }
.barkey { display:flex; flex-wrap:wrap; gap:14px; font-size:13px;
  color:var(--muted); }
.barkey span { display:flex; align-items:center; gap:6px; }
.barkey i { width:12px; height:12px; border-radius:3px; }
.flow { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:12px; margin:18px 0; }
.flow .step { border:1px solid var(--rule); border-radius:10px; padding:12px 14px;
  background:var(--tint); font-size:14px; }
.flow .step b { display:block; margin-bottom:4px; }
.flow .step.end { border-color:#ef4444; background:rgba(239,68,68,.08); }
.hbars { margin:18px 0; display:flex; flex-direction:column; gap:8px; }
.hbar-row { display:grid; grid-template-columns:minmax(90px,1.1fr) 2.4fr
  minmax(90px,1.3fr); gap:10px; align-items:center; font-size:13.5px; }
.hbar-label { color:var(--ink); }
.hbar-track { background:var(--tint-md); border-radius:5px; height:16px; }
.hbar-fill { height:16px; border-radius:5px; }
.hbar-val { color:var(--muted); font-variant-numeric:tabular-nums; }
@media (max-width:640px) {
  .hbar-row { grid-template-columns:1fr; gap:2px; }
  .hbar-track { height:12px; }
}
.table-scroll { overflow-x:auto; -webkit-overflow-scrolling:touch; }
table { width:100%; border-collapse:collapse; font-size:14px; }
th,td { text-align:left; padding:8px 10px; border-bottom:1px solid var(--rule); }
th { color:var(--muted); font-weight:600; }
footer { margin-top:48px; border-top:1px solid var(--rule);
         padding-top:16px; font-size:13px; color:var(--muted); }
.nl-box { background:var(--card); border:1px solid var(--rule);
          border-radius:12px; padding:14px 18px; margin-bottom:18px; }
.nl-box p { color:var(--ink); font-size:14px; margin-bottom:8px; }
.nl-form { display:flex; gap:8px; flex-wrap:wrap; }
.nl-form input[type=email] { flex:1; min-width:220px; background:var(--bg);
  color:var(--ink); border:1px solid var(--rule); border-radius:8px;
  padding:9px 12px; font-size:14px; }
.nl-form button { background:var(--teal); color:#04211c; border:0;
  border-radius:8px; padding:9px 18px; font-weight:700; font-size:14px;
  cursor:pointer; }
.submit-box { background:var(--card); border:1px solid var(--rule);
  border-radius:12px; padding:20px 22px; margin-top:16px; }
.submit-box label { display:block; font-size:14px; color:var(--ink);
  font-weight:600; margin-bottom:4px; margin-top:12px; }
.submit-box label:first-child { margin-top:0; }
.submit-box input, .submit-box select, .submit-box textarea {
  width:100%; box-sizing:border-box; background:var(--bg); color:var(--ink);
  border:1px solid var(--rule); border-radius:8px; padding:9px 12px;
  font-size:14px; font-family:inherit; }
.submit-box textarea { min-height:70px; resize:vertical; }
.submit-box .row2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
@media (max-width:520px){ .submit-box .row2 { grid-template-columns:1fr; } }
.submit-box button { background:var(--teal); color:#04211c; border:0;
  border-radius:8px; padding:11px 22px; font-weight:700; font-size:15px;
  cursor:pointer; margin-top:16px; }
.submit-box .hint { font-size:12px; color:var(--muted); margin-top:3px; }
.statelist { columns:2; font-size:14.5px; }
@media (min-width:640px){ .statelist{ columns:4; } }
.statelist a { display:block; padding:3px 0; text-decoration:none; }
.us-map { max-width:100%; height:auto; margin:20px auto; display:block; }
.us-map path { fill:var(--card); stroke:var(--rule); stroke-width:.6;
               cursor:pointer; transition:fill .15s; }
.us-map path:hover { fill:var(--teal); }
.us-map text { fill:var(--muted); font-size:7px; pointer-events:none;
               text-anchor:middle; font-weight:600;
               font-family:system-ui,-apple-system,sans-serif; }
.us-map path:hover + text, .us-map path:hover ~ text { fill:var(--bg); }
.map-tooltip { position:fixed; background:var(--card); border:1px solid var(--teal);
               border-radius:8px; padding:6px 12px; font-size:13px;
               color:var(--ink); pointer-events:none; z-index:999;
               display:none; white-space:nowrap; }
.post-meta { color:var(--muted); font-size:14px; margin:8px 0 6px; }
.tags { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 20px; }
.tag { background:var(--card); border:1px solid var(--rule);
       border-radius:20px; padding:3px 11px; font-size:12px;
       color:var(--muted); }
.tag-btn { cursor:pointer; font:inherit; font-size:12px; line-height:1.2;
       transition:filter .12s ease, background .12s ease; }
.tag-btn:hover { filter:brightness(1.25); }
.tag-btn:focus-visible { outline:2px solid var(--teal); outline-offset:2px; }
.prose h3 { font-size:17px; color:var(--teal); margin:24px 0 8px; }
.prose p { margin:10px 0; }
.prose blockquote { border-left:3px solid var(--teal); margin:16px 0;
                    padding:6px 16px; color:var(--muted); }
.prose table { margin:16px 0; }
.prose ul, .prose ol { margin:10px 0; }
.prose hr { border:none; border-top:1px solid var(--rule); margin:24px 0; }
.post-nav { display:flex; justify-content:space-between; gap:14px;
            margin:32px 0 0; padding:18px 0 0;
            border-top:1px solid var(--rule); font-size:14px; }
.post-nav a { max-width:45%; }
.post-nav .dir { color:var(--muted); font-size:12px; display:block; }
.blog-list { list-style:none; padding:0; }
.blog-list li { border-bottom:1px solid var(--rule); padding:18px 0;
  content-visibility:auto; contain-intrinsic-size:auto 110px; }
.blog-list li:last-child { border-bottom:none; }
/* Only posts carry art — news/video lists reuse .blog-list without a thumb,
   so the two-column grid is scoped to .has-art rather than the whole list. */
.blog-list li.has-art { display:grid; grid-template-columns:1fr; gap:14px; }
@media (min-width:680px){ .blog-list li.has-art {
  grid-template-columns:200px 1fr; gap:18px; align-items:start;
  contain-intrinsic-size:auto 150px; } }
.blog-list .thumb { width:100%; height:auto; display:block; border-radius:10px;
  border:1px solid var(--rule); }
.post-art { width:100%; height:auto; display:block; border-radius:14px;
  border:1px solid var(--rule); margin:4px 0 24px;
  filter:drop-shadow(0 8px 24px rgba(45,212,191,.10)); }
.post-art .glow, .thumb .glow { animation:pulse 3.2s ease-in-out infinite; }
@media (prefers-reduced-motion:reduce){
  .post-art .glow, .thumb .glow { animation:none; opacity:.7 } }
.blog-list h3 { font-size:17px; margin:0 0 4px; }
.blog-list h3 a { text-decoration:none; }
.blog-list .summary { color:var(--muted); font-size:14px; margin:4px 0 0; }
.badge { display:inline-block; font-size:12px; font-weight:700;
         padding:2px 9px; border-radius:6px; }
.pill { display:inline-block; font-weight:600; text-transform:uppercase;
        letter-spacing:.04em; }
.pill.bad  { background:rgba(239,68,68,.12); color:#ef4444; }
.pill.good { background:rgba(52,211,153,.12); color:#34d399; }
/* Source-tier badges on headline lists. Deliberately quiet — they mark a
   citable outlet, they don't shout over the headline itself. */
.src-badge { display:inline-block; font-size:10.5px; font-weight:700;
  letter-spacing:.03em; text-transform:uppercase; padding:1px 6px;
  border-radius:5px; margin-left:6px; vertical-align:middle;
  border:1px solid transparent; white-space:nowrap; }
.src-wire, .src-national { background:rgba(45,212,191,.14); color:#2dd4bf;
  border-color:rgba(45,212,191,.32); }
.src-nonprofit { background:rgba(167,139,250,.14); color:#a78bfa;
  border-color:rgba(167,139,250,.30); }
.src-trade { background:rgba(96,165,250,.13); color:#60a5fa;
  border-color:rgba(96,165,250,.28); }
.src-local, .src-international { background:rgba(148,163,184,.14);
  color:#cbd5e1; border-color:rgba(148,163,184,.28); }
.src-official { background:rgba(251,191,36,.13); color:#fbbf24;
  border-color:rgba(251,191,36,.28); }
.src-aggregator, .src-advocacy { background:rgba(239,68,68,.10);
  color:#fca5a5; border-color:rgba(239,68,68,.26); }
.badge-enacted { background:#065f46; color:#6ee7b7; }
.badge-proposed { background:#713f12; color:#fde68a; }
.badge-rejected { background:#7f1d1d; color:#fca5a5; }
.badge-vetoed { background:#4c1d95; color:#c4b5fd; }
.badge-expired { background:#374151; color:#d1d5db; }
.badge-rescinded { background:#4c1d95; color:#c4b5fd; }
/* Project-stage badges — coloured by urgency, not by win/loss. */
.badge-hearing-scheduled { background:#78350f; color:#fcd34d; }
.badge-awaiting-decision { background:#1e3a5f; color:#93c5fd; }
.badge-in-review { background:#134e4a; color:#5eead4; }
.badge-rumored { background:#374151; color:#9ca3af; }
.badge-approved { background:#7f1d1d; color:#fca5a5; }
.badge-under-construction { background:#7c2d12; color:#fdba74; }
.badge-operating { background:#1f2937; color:#d1d5db; }
.badge-denied { background:#065f46; color:#6ee7b7; }
.badge-withdrawn { background:#334155; color:#cbd5e1; }
.timeline { list-style:none; padding:0; margin:10px 0 0;
            border-left:2px solid var(--rule); }
.timeline li { position:relative; padding:0 0 12px 18px; }
.timeline li::before { content:""; position:absolute; left:-6px; top:5px;
   width:10px; height:10px; border-radius:50%; background:var(--teal); }
.timeline .tl-date { font-size:12px; font-weight:700; color:var(--teal); }
.timeline .tl-kind { font-size:11px; text-transform:uppercase;
   letter-spacing:.06em; color:var(--muted); margin-left:6px; }
.proj { border:1px solid var(--rule); border-radius:12px; padding:16px 18px;
        margin:14px 0; background:var(--card); }
.proj h3 { margin:0 0 4px; }
.proj .meta { font-size:13px; color:var(--muted); margin:2px 0 8px; }
.proj .next { font-size:14px; margin:8px 0 0; }
.trail { margin:10px 0 0; }
.trail h4 { margin:12px 0 2px; font-size:14px; }
.trail p.why { font-size:13px; color:var(--muted); margin:0 0 6px; }
.trail ul { list-style:none; padding:0; margin:0; }
.trail li { padding:6px 0; border-top:1px solid var(--rule); font-size:14px; }
.trail li .why { display:block; font-size:12.5px; color:var(--muted);
   margin-top:2px; }
.trail .k { font-size:10px; text-transform:uppercase; letter-spacing:.06em;
   padding:1px 6px; border-radius:6px; margin-left:6px; vertical-align:1px; }
.trail .k-search { background:#3f2d10; color:#fbbf24; }
.trail .k-note { background:#334155; color:#cbd5e1; }
/* Download cards — a consistent, scannable presentation for every file the
   site hands out (PDF briefings, JSON/CSV datasets). */
.dl-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:12px; margin:16px 0; }
.dl-card { display:flex; gap:14px; align-items:center; padding:14px 16px;
  border:1px solid var(--rule); border-radius:12px; background:var(--card);
  text-decoration:none; color:var(--ink);
  transition:border-color .15s ease, transform .15s ease; }
.dl-card:hover { border-color:var(--teal); transform:translateY(-1px); }
.dl-ico { font-size:26px; line-height:1; flex:0 0 auto; }
.dl-body { flex:1; min-width:0; }
.dl-title { font-weight:700; font-size:15px; display:flex; gap:8px;
  align-items:center; flex-wrap:wrap; }
.dl-fmt { font-size:10px; font-weight:800; letter-spacing:.06em;
  text-transform:uppercase; padding:2px 7px; border-radius:5px;
  background:rgba(45,212,191,.15); color:var(--teal); }
.dl-meta { font-size:13px; color:var(--muted); margin-top:3px; }
.dl-arrow { color:var(--muted); font-size:20px; flex:0 0 auto; font-weight:700; }
.dl-card:hover .dl-arrow { color:var(--teal); }
@media print { .dl-card { border-color:#ccc; } .dl-card:hover { transform:none; } }
.badge-note { font-size:11px; font-weight:600; color:var(--muted);
              display:block; margin-top:3px; }
.unverified { font-size:12px; color:#fca5a5; font-weight:600; }
.verified-on { font-size:12px; color:var(--muted); white-space:nowrap; }
.kind-badge { font-size:10px; font-weight:800; letter-spacing:.04em;
  text-transform:uppercase; padding:1px 6px; border-radius:5px;
  display:inline-block; margin-left:5px; vertical-align:1px; }
.kind-official { background:rgba(52,211,153,.15); color:#34d399; }
.kind-roundup { background:rgba(251,191,36,.15); color:#fbbf24; }
.kind-news { background:rgba(148,163,184,.15); color:#94a3b8; }
.outcome { border-left:3px solid var(--teal); padding:10px 14px;
           margin:10px 0; }
.outcome .cat { font-size:12px; font-weight:700; color:var(--teal);
                text-transform:uppercase; letter-spacing:.08em; }
.grid2 { display:grid; grid-template-columns:1fr; gap:14px; }
@media (min-width:640px){ .grid2{ grid-template-columns:repeat(2,1fr);} }
.official { font-size:14px; }
.official .role { color:var(--muted); font-size:13px; }
header .lede { font-size:17px; line-height:1.5; color:var(--ink);
  margin:10px 0 6px; max-width:62ch; }
.sechead { display:flex; align-items:baseline; justify-content:space-between;
  gap:12px; flex-wrap:wrap; }
.sechead h2 { margin-bottom:0; }
.sechead a { font-size:14px; white-space:nowrap; }
.hero-grid .feeds { font-size:13px; margin-top:10px; }
.hn-list { list-style:none; padding:0; margin:14px 0 0; display:grid; gap:10px; }
.hn-item { display:grid; grid-template-columns:28px 1fr; gap:10px; align-items:start;
  padding:12px 14px; background:var(--card); border:1px solid var(--rule);
  border-radius:12px; }
.hn-rank { font-size:18px; font-weight:800; color:var(--teal); line-height:1.35;
  text-align:center; }
.hn-body a { font-weight:600; font-size:15.5px; line-height:1.35; text-decoration:none; }
.hn-body a:hover { text-decoration:underline; }
.hn-meta { display:block; font-size:12.5px; color:var(--muted); margin-top:3px; }
.post-card { display:block; background:var(--card); border:1px solid var(--rule);
  border-radius:12px; padding:12px; text-decoration:none; color:inherit; }
.post-card:hover { border-color:var(--teal); }
.post-card .thumb { width:100%; height:auto; display:block; border-radius:10px;
  margin-bottom:10px; }
.post-card .post-date { font-size:12px; color:var(--muted); }
.post-card h3 { font-size:16px; line-height:1.35; margin:4px 0 6px; }
.post-card p { font-size:13.5px; margin:0; line-height:1.5; }
.chg-list { list-style:none; padding:0; margin:12px 0 0; display:grid; gap:6px; }
.chg-list li { display:grid; grid-template-columns:78px 1fr auto; gap:8px 12px;
  align-items:baseline; font-size:14px; padding:8px 12px; background:var(--card);
  border:1px solid var(--rule); border-radius:10px; }
.chg-kind { font-size:11px; font-weight:700; text-transform:uppercase;
  letter-spacing:.04em; color:var(--teal); }
.chg-detail { grid-column:2; font-size:13px; color:var(--muted); }
.chg-date { font-size:12px; color:var(--muted); grid-row:1 / span 2; }
.hero-grid { display:grid; grid-template-columns:1fr; gap:24px;
  align-items:center; padding:44px 0 10px; }
@media (min-width:820px){ .hero-grid{ grid-template-columns:1.15fr .85fr; padding:56px 0 20px; } }
.hero-grid header { padding:0; }
.hero-art { width:100%; max-width:420px; margin:0 auto; display:block;
  filter:drop-shadow(0 8px 24px rgba(45,212,191,.12)); }
.hero-art .glow { animation:pulse 3.2s ease-in-out infinite; }
@keyframes pulse { 0%,100%{opacity:.35} 50%{opacity:1} }
@media (prefers-reduced-motion:reduce){ .hero-art .glow{ animation:none; opacity:.7 } }
.iconcard { display:flex; gap:14px; align-items:flex-start; }
.iconcard .ico { flex-shrink:0; width:40px; height:40px; border-radius:10px;
  background:rgba(45,212,191,.12); display:flex; align-items:center;
  justify-content:center; color:var(--teal); }
.iconcard .ico svg { width:22px; height:22px; }
.iconcard .body h3 { margin:0 0 4px; }
.demand-chart { margin:14px 0 6px; }
.demand-chart .row { display:grid; grid-template-columns:minmax(80px,90px) 1fr auto;
  gap:12px; align-items:center; padding:6px 0; font-size:14px; }
.demand-chart .yr { color:var(--muted); font-variant-numeric:tabular-nums; }
.demand-chart .bar { height:22px; border-radius:6px;
  background:linear-gradient(90deg, rgba(45,212,191,.85), rgba(45,212,191,.55));
  position:relative; }
.demand-chart .bar.range { background:linear-gradient(90deg,
  rgba(251,191,36,.85) 0%, rgba(251,191,36,.85) var(--lo,50%),
  rgba(251,191,36,.35) var(--lo,50%), rgba(251,191,36,.35) 100%); }
.demand-chart .val { color:var(--ink); font-variant-numeric:tabular-nums;
  font-weight:600; text-align:right; }
.demand-chart .val .homes { display:block; color:var(--muted); font-weight:400;
  font-size:12px; white-space:nowrap; }
.grid-flow-svg { width:100%; height:auto; max-width:820px; margin:14px auto;
  display:block; }
.grid-flow-svg text { font:600 12px system-ui,-apple-system,sans-serif;
  fill:var(--ink); }
.grid-flow-svg text.small { font-size:10.5px; font-weight:500; fill:var(--muted); }
.grid-flow-svg .flow-dot { fill:var(--teal); }
.grid-flow-svg .flow-dot.a1 { animation:flowa 3s linear infinite; }
.grid-flow-svg .flow-dot.a2 { animation:flowb 3s linear infinite; animation-delay:1s; }
.grid-flow-svg .flow-dot.a3 { animation:flowc 3s linear infinite; animation-delay:2s; }
@keyframes flowa { 0%{opacity:0; transform:translateX(0)} 20%{opacity:1}
  80%{opacity:1} 100%{opacity:0; transform:translateX(180px)} }
@keyframes flowb { 0%{opacity:0; transform:translateX(0)} 20%{opacity:1}
  80%{opacity:1} 100%{opacity:0; transform:translateX(180px)} }
@keyframes flowc { 0%{opacity:0; transform:translateX(0)} 20%{opacity:1}
  80%{opacity:1} 100%{opacity:0; transform:translateX(180px)} }
@media (prefers-reduced-motion:reduce){ .grid-flow-svg .flow-dot{ animation:none } }

/* ---- Light theme ---- */
@media (prefers-color-scheme:light) {
  :root:not([data-theme="dark"]) {
    --bg:#f4f5f7; --card:#fff; --ink:#1a1e2e; --muted:#434d5e;
    --teal:#0a6b63; --amber:#a85000; --rule:#c8ccd4;
    --tint:rgba(0,0,0,.03); --tint-md:rgba(0,0,0,.05);
    --border-subtle:rgba(0,0,0,.09);
  }
  :root:not([data-theme="dark"]) .navmenu { box-shadow:0 10px 28px rgba(0,0,0,.1); }
  :root:not([data-theme="dark"]) nav .cta { color:#fff; }
  :root:not([data-theme="dark"]) .src-wire,
  :root:not([data-theme="dark"]) .src-national { background:rgba(13,125,116,.08);
    color:#0a6e66; border-color:rgba(13,125,116,.2); }
  :root:not([data-theme="dark"]) .src-nonprofit { background:rgba(109,40,217,.06);
    color:#6d28d9; border-color:rgba(109,40,217,.2); }
  :root:not([data-theme="dark"]) .src-trade { background:rgba(37,99,235,.06);
    color:#2563eb; border-color:rgba(37,99,235,.2); }
  :root:not([data-theme="dark"]) .src-local,
  :root:not([data-theme="dark"]) .src-international { background:rgba(71,85,105,.06);
    color:#475569; border-color:rgba(71,85,105,.2); }
  :root:not([data-theme="dark"]) .src-official { background:rgba(180,83,9,.06);
    color:#b45309; border-color:rgba(180,83,9,.2); }
  :root:not([data-theme="dark"]) .src-aggregator,
  :root:not([data-theme="dark"]) .src-advocacy { background:rgba(220,38,38,.06);
    color:#dc2626; border-color:rgba(220,38,38,.2); }
}
:root[data-theme="light"] {
  --bg:#f4f5f7; --card:#fff; --ink:#1a1e2e; --muted:#434d5e;
  --teal:#0a6b63; --amber:#a85000; --rule:#c8ccd4;
  --tint:rgba(0,0,0,.03); --tint-md:rgba(0,0,0,.05);
  --border-subtle:rgba(0,0,0,.09);
}
:root[data-theme="light"] .navmenu { box-shadow:0 10px 28px rgba(0,0,0,.1); }
:root[data-theme="light"] nav .cta { color:#fff; }
:root[data-theme="light"] .src-wire,
:root[data-theme="light"] .src-national { background:rgba(13,125,116,.08);
  color:#0a6e66; border-color:rgba(13,125,116,.2); }
:root[data-theme="light"] .src-nonprofit { background:rgba(109,40,217,.06);
  color:#6d28d9; border-color:rgba(109,40,217,.2); }
:root[data-theme="light"] .src-trade { background:rgba(37,99,235,.06);
  color:#2563eb; border-color:rgba(37,99,235,.2); }
:root[data-theme="light"] .src-local,
:root[data-theme="light"] .src-international { background:rgba(71,85,105,.06);
  color:#475569; border-color:rgba(71,85,105,.2); }
:root[data-theme="light"] .src-official { background:rgba(180,83,9,.06);
  color:#b45309; border-color:rgba(180,83,9,.2); }
:root[data-theme="light"] .src-aggregator,
:root[data-theme="light"] .src-advocacy { background:rgba(220,38,38,.06);
  color:#dc2626; border-color:rgba(220,38,38,.2); }
/* Theme toggle */
.theme-toggle { background:none; border:1px solid var(--rule); color:var(--muted);
  border-radius:8px; padding:5px 9px; font-size:16px; cursor:pointer; line-height:1; }
.theme-toggle:hover { color:var(--teal); border-color:var(--teal); }
@media (max-width:820px) {
  .theme-toggle { order:1; padding:4px 7px; font-size:14px; }
}
/* Mobile quick-action bar */
.mob-bar { display:none; }
@media (max-width:820px) {
  .mob-bar { display:flex; position:fixed; bottom:0; left:0; right:0; z-index:100;
    background:var(--card); border-top:1px solid var(--rule);
    padding:6px 8px calc(6px + env(safe-area-inset-bottom, 0px));
    justify-content:space-around; gap:2px;
    box-shadow:0 -4px 16px rgba(0,0,0,.15); }
  .mob-bar a { display:flex; flex-direction:column; align-items:center; gap:2px;
    font-size:10px; font-weight:600; color:var(--muted); text-decoration:none;
    padding:4px 8px; border-radius:8px; min-width:56px; text-align:center; }
  .mob-bar a:hover { color:var(--teal); }
  .mob-bar svg { width:20px; height:20px; stroke:currentColor; fill:none;
    stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
  .wrap { padding-bottom:80px; }
}
/* Quick-action entry points on the home page */
.quick-actions { display:grid; grid-template-columns:repeat(2,1fr); gap:10px;
  margin:18px 0 28px; }
@media (min-width:640px){ .quick-actions{ grid-template-columns:repeat(4,1fr); } }
.quick-actions a { background:var(--card); border:1px solid var(--rule);
  border-radius:12px; padding:14px; text-decoration:none; color:var(--ink);
  transition:border-color .15s; }
.quick-actions a:hover { border-color:var(--teal); }
.quick-actions .qa-title { font-weight:700; font-size:15px; display:block;
  color:var(--teal); }
.quick-actions .qa-desc { font-size:13px; color:var(--muted); display:block;
  margin-top:4px; }

/* Print: this is a handout. People print state briefings, hearing questions
   and the health-risk page to carry into a meeting, so drop the dark theme
   (wastes ink, reads badly on paper), strip the chrome that can't be tapped,
   expand collapsed sections, and print source URLs after links so a citation
   survives the photocopier. */
@media print {
  :root { --bg:#fff; --card:#fff; --ink:#111; --muted:#444; --rule:#bbb;
          --teal:#0a7d70; --amber:#8a6d00; }
  * { box-shadow:none !important; text-shadow:none !important;
      filter:none !important; animation:none !important; }
  body { background:#fff; color:#111; font-size:11.5pt; }
  .wrap { max-width:none; padding:0; }
  nav, footer, .nav-search, .cta, .nav-burger, .skip, .theme-toggle,
  .hero-art, .us-map, .grid-flow-svg, .flow-dot, .blog-list .thumb,
  .post-art, .demand-chart, .mob-bar { display:none !important; }
  a { color:#111; text-decoration:underline; }
  /* Show the destination of real links, not internal .html jumps or buttons. */
  main a[href^="http"]:not(.btn):not(.tag)::after {
    content:" (" attr(href) ")"; font-size:9pt; color:#555;
    word-break:break-all; text-decoration:none; }
  .btn { border:1px solid #111 !important; color:#111 !important;
         background:#fff !important; padding:4px 10px; }
  .card, .panel, .note, .freshness, .glass-card, .outcome, details.more,
  .stat { background:#fff !important; border:1px solid #ccc !important;
          color:#111 !important; }
  .panel *, .note * { color:#111 !important; }
  .kicker, h2, .stat b, .prose h3 { color:#0a7d70 !important; }
  .badge { border:1px solid #333; color:#111 !important;
           background:#fff !important; }
  .src-badge { border:1px solid #666; color:#111 !important;
               background:#fff !important; }
  /* Expand collapsed disclosures so nothing prints hidden. */
  details[open] > summary { color:#111; }
  details:not([open]) > *:not(summary) { display:block !important; }
  details > summary::after, details > summary::-webkit-details-marker {
    display:none !important; }
  section, .card, tr, li, .outcome, .note { break-inside:avoid; }
  h1, h2, h3 { break-after:avoid; }
  table, .table-scroll { overflow:visible !important; }
  th, td { border-bottom:1px solid #ccc; }
  @page { margin:1.6cm; }
}
