/* ============================================================
   The Rural Desk — Report stylesheet
   Used by every report at /public/reports/*.html
   ----------------------------------------------------------
   Sections:
     1. Tokens (colors, fonts) and base resets
     2. Layout: Navbar, Hero, Report-meta strip
     3. Sections: H2/H3/H4, lede, dropcap, paragraphs
     4. Components: Stat rows, Callouts, Tables, Chart wrappers
     5. Room-of-100 visualization
     6. Map components (Plotly state map controls + D3 county map)
     7. Endnotes / Footer
     8. Utilities + responsive
   ============================================================ */

/* ---------- 1. TOKENS ---------- */
:root{
  --navy:#08415C;
  --red:#CC2936;
  --olive:#6C7D47;
  --mid-green:#96A13A;
  --lime:#ACC12F;
  --off-white:#F5F4EF;
  --light-gray:#E8E7E2;
  --paper:#FFFFFF;
  --footer-dark:#0f2230;
  --dark:#1B1B1B;
  --muted:#6B6358;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:40px}
body{
  margin:0;
  font-family:"Montserrat",sans-serif;
  font-size:17px;
  font-weight:300;
  line-height:1.65;
  color:var(--dark);
  background:var(--paper);
}
img{max-width:100%;height:auto;display:block}
a{color:var(--red);text-decoration:none;border-bottom:1px solid rgba(178,58,72,.3)}
a:hover{border-bottom-color:var(--red)}

/* ---------- Site-wide navbar (injected by report.js mountSiteNavbar) ---------- */
.rd-navbar{
  background:#fff;border-bottom:1px solid var(--light-gray);
  position:sticky;top:0;z-index:1100;
}
.rd-navbar-inner{
  max-width:1280px;margin:0 auto;padding:0 24px;
  display:flex;align-items:center;justify-content:space-between;height:80px;
}
.rd-navbar-logo{display:flex;align-items:center;border:none;flex-shrink:0}
.rd-navbar-logo img{height:60px;width:auto;display:block}
.rd-navbar-fallback{
  font-family:"Bebas Neue",sans-serif;font-size:30px;letter-spacing:1px;color:var(--navy);
  padding:6px 14px;border:3px solid var(--navy);
}
.rd-navbar-fallback .accent{color:var(--red)}
.rd-navbar-links{display:none;align-items:center;gap:32px}
@media (min-width:768px){.rd-navbar-links{display:flex}}
.rd-navbar-links a{
  color:var(--navy);font-family:Montserrat,sans-serif;font-size:14px;font-weight:500;
  border:none;text-decoration:none;transition:color .15s;
}
.rd-navbar-links a:hover{color:var(--red)}
.rd-navbar-cta{
  background:var(--red);color:#fff !important;
  font-family:"Barlow Condensed",sans-serif;font-style:italic;text-transform:uppercase;
  font-weight:700;letter-spacing:.04em;font-size:14px;padding:12px 24px;border-radius:8px;
  transition:background .15s;
}
.rd-navbar-cta:hover{background:#b3232f}
.rd-navbar-burger{
  display:inline-flex;align-items:center;justify-content:center;
  background:none;border:none;color:var(--navy);cursor:pointer;padding:8px;
}
@media (min-width:768px){.rd-navbar-burger{display:none}}
.rd-navbar-mobile{
  display:flex;flex-direction:column;padding:8px 24px 16px;gap:4px;
  border-top:1px solid var(--light-gray);background:#fff;
}
/* display:flex above would otherwise override the hidden attribute and leave the menu open. */
.rd-navbar-mobile[hidden]{display:none}
@media (min-width:768px){.rd-navbar-mobile{display:none !important}}
.rd-navbar-mobile a{
  display:block;padding:10px 8px;color:var(--navy);font-family:Montserrat,sans-serif;
  font-size:14px;font-weight:500;border:none;text-decoration:none;border-radius:4px;
  transition:background .12s,color .12s;
}
.rd-navbar-mobile a:hover{background:var(--off-white);color:var(--red)}
.rd-navbar-mobile a.rd-navbar-cta{text-align:center;margin-top:8px;color:#fff !important}

/* ---------- 2. NAVBAR (legacy — kept for any reports not yet migrated) ---------- */
.navbar{
  background:#fff;border-bottom:1px solid var(--light-gray);
  position:sticky;top:0;z-index:1100;
}
.navbar-inner{
  max-width:1280px;margin:0 auto;padding:0 24px;
  display:flex;align-items:center;justify-content:space-between;height:80px;
}
.navbar-logo{display:flex;align-items:center;border:none}
.navbar-logo img{height:60px;width:auto;display:block}
.navbar-logo .fallback{
  font-family:"Bebas Neue",sans-serif;font-size:30px;letter-spacing:1px;color:var(--navy);
  display:inline-block;padding:6px 14px;border:3px solid var(--navy);position:relative;
}
.navbar-logo .fallback .accent{color:var(--red)}
.navbar-links{display:flex;align-items:center;gap:32px}
.navbar-links a{
  color:var(--navy);font-size:14px;font-weight:500;border:none;transition:color .15s;
}
.navbar-links a:hover{color:var(--red)}
.navbar-cta{
  background:var(--red);color:#fff !important;
  font-family:"Bebas Neue",sans-serif;font-style:italic;text-transform:uppercase;font-weight:700;
  letter-spacing:.04em;font-size:14px;padding:12px 24px;border-radius:8px;
  transition:background .15s;
}
.navbar-cta:hover{background:#b3232f}
@media (max-width:880px){
  .navbar-links a:not(.navbar-cta){display:none}
  .navbar-inner{padding:0 18px}
}

/* ---------- HERO ---------- */
.hero{
  background:linear-gradient(135deg, #ffffff 0%, var(--off-white) 60%, #e8eef4 100%);
  position:relative;overflow:hidden;
}

/* Per-report opt-in: photo background with dark overlay + white text */
.hero.has-photo-bg{
  background-color:var(--navy);
  background-size:cover;background-position:center;background-repeat:no-repeat;
}
.hero.has-photo-bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(8,65,92,.55) 0%, rgba(8,65,92,.70) 60%, rgba(8,65,92,.82) 100%);
  z-index:1;pointer-events:none;
}
.hero.has-photo-bg .hero-inner{position:relative;z-index:2}
.hero.has-photo-bg .eyebrow-pill{
  background:rgba(255,255,255,.12);color:#fff;
}
.hero.has-photo-bg .eyebrow-pill .dot::before,
.hero.has-photo-bg .eyebrow-pill .dot::after{background:var(--lime)}
.hero.has-photo-bg h1{color:#fff;text-shadow:0 2px 18px rgba(0,0,0,.35)}
.hero.has-photo-bg h1 .accent{color:#fff}
.hero.has-photo-bg .subtitle{color:rgba(255,255,255,.85)}
.hero.has-photo-bg .btn-outline{
  background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.55);
}
.hero.has-photo-bg .btn-outline:hover{background:#fff;color:var(--navy)}
.hero.has-photo-bg .hero-copy::before{display:none}
.hero-inner{max-width:1280px;margin:0 auto;padding:0 24px}
.hero-grid{
  display:grid;grid-template-columns:1.1fr 1fr;gap:48px;
  align-items:center;min-height:520px;padding:60px 0;
}
.hero-copy{position:relative;z-index:2}
.hero-copy::before{
  content:"";position:absolute;left:-30px;top:8px;width:60px;height:60px;
  background:rgba(8,65,92,.08);border-radius:50%;filter:blur(20px);
}
.eyebrow-pill{
  display:inline-flex;align-items:center;gap:8px;
  background:rgba(204,41,54,.10);padding:8px 14px;border-radius:9999px;
  margin-bottom:24px;font-size:12px;font-weight:600;color:var(--red);
}
.eyebrow-pill .dot{
  position:relative;width:8px;height:8px;
}
.eyebrow-pill .dot::before{
  content:"";position:absolute;inset:0;border-radius:50%;background:var(--lime);
  animation:ping 1.6s cubic-bezier(0,0,.2,1) infinite;opacity:.75;
}
.eyebrow-pill .dot::after{
  content:"";position:absolute;inset:0;border-radius:50%;background:var(--lime);
}
@keyframes ping{75%,100%{transform:scale(2);opacity:0}}
.hero h1{
  font-family:"Bebas Neue",sans-serif;text-transform:uppercase;color:var(--navy);
  font-size:clamp(48px,8vw,88px);line-height:.85;margin:0 0 22px;letter-spacing:.5px;
}
.hero h1 .accent{color:var(--red)}
.hero .subtitle{
  color:rgba(8,65,92,.65);font-size:18px;line-height:1.55;
  max-width:520px;margin:0 0 28px;
}
.hero-buttons{display:flex;flex-wrap:wrap;gap:12px}
.btn{
  display:inline-flex;align-items:center;gap:8px;
  font-family:"Bebas Neue",sans-serif;font-style:italic;text-transform:uppercase;font-weight:700;
  letter-spacing:.04em;font-size:14px;padding:14px 26px;border-radius:8px;
  transition:all .15s;border:none;cursor:pointer;
}
.btn-red{background:var(--red);color:#fff !important}
.btn-red:hover{background:#b3232f}
.btn-outline{
  background:transparent;color:var(--navy) !important;
  border:2px solid rgba(8,65,92,.2);
}
.btn-outline:hover{border-color:rgba(8,65,92,.4)}
.btn-arrow{display:inline-block;font-size:16px}

.hero-visual{position:relative;display:flex;justify-content:center;align-items:center}
.hero-visual::before{
  content:"";position:absolute;right:-30px;top:50%;transform:translateY(-50%);
  width:380px;height:380px;background:rgba(8,65,92,.06);border-radius:50%;
}
.hero-visual::after{
  content:"";position:absolute;right:-10px;top:50%;transform:translateY(-50%);
  width:340px;height:340px;background:rgba(204,41,54,.06);border-radius:50%;
}
.hero-stat-card{
  position:relative;z-index:2;background:var(--red);color:#fff;border-radius:18px;
  box-shadow:0 20px 50px rgba(204,41,54,.28);padding:32px 30px;width:100%;max-width:380px;
}
.hero-stat-card .small-eyebrow{
  font-family:"Barlow Condensed",sans-serif;text-transform:uppercase;letter-spacing:2.5px;
  font-weight:700;font-size:11px;color:#fff;opacity:.85;margin-bottom:10px;
}
.hero-stat-card .big-num{
  font-family:"Bebas Neue",sans-serif;color:#fff;font-size:88px;line-height:.9;letter-spacing:.5px;margin-bottom:6px;
}
.hero-stat-card .big-num .accent{color:#fff;opacity:.7}
.hero-stat-card .stat-desc{
  font-size:14px;line-height:1.55;color:#fff;opacity:.95;margin-bottom:16px;
}
.hero-stat-card .stat-desc strong{color:#fff}
.hero-stat-card .stat-row-mini{
  display:flex;justify-content:space-between;align-items:center;
  border-top:1px solid rgba(255,255,255,.25);padding-top:14px;font-size:12px;color:rgba(255,255,255,.7);
}
.hero-stat-card .stat-row-mini strong{color:#fff !important}
/* Byline under the title, and the Contents list that fills the hero card (the 2022 report's layout). */
.hero .byline{
  margin:-6px 0 18px;color:var(--navy);font-family:"Barlow Condensed",sans-serif;font-weight:600;font-size:20px;
  letter-spacing:1.5px;text-transform:uppercase;
}
.hero.has-photo-bg .byline{color:#fff}
.hero.has-photo-bg .btn-outline,.hero.has-photo-bg .btn-outline *{color:#fff !important}
.hero.has-photo-bg .btn-outline:hover,.hero.has-photo-bg .btn-outline:hover *{color:var(--navy) !important}
.hero-toc{margin:14px 0 0;padding:0 0 0 22px;color:#fff;font-size:17px;line-height:1.45}
.hero-toc li{margin:0 0 8px;padding-left:4px}
.hero-toc li:last-child{margin-bottom:0}
.hero-stat-card .hero-toc a,.hero-stat-card .hero-toc a:visited{color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.35)}
.hero-stat-card .hero-toc a:hover{color:#fff;border-bottom-color:#fff}
.hero-stripe{
  height:8px;display:flex;
}
.hero-stripe .s{flex:1}
.hero-stripe .s1{background:var(--red)}
.hero-stripe .s2{background:#fff}
.hero-stripe .s3{background:var(--navy)}

@media (max-width:880px){
  .hero-grid{grid-template-columns:1fr;gap:30px;padding:40px 0}
  .hero-visual{display:none}
}

/* Byline strip below hero */
.report-meta{
  background:#fff;border-bottom:1px solid var(--light-gray);
}
.report-meta-inner{
  max-width:1280px;margin:0 auto;padding:18px 24px;
  display:flex;flex-wrap:wrap;gap:18px;align-items:center;
  font-family:"Barlow Condensed",sans-serif;font-size:13px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--muted);
}
.report-meta strong{color:var(--navy);font-weight:700}
.report-meta .tag{
  background:var(--navy);color:#fff;padding:4px 10px;font-size:11px;letter-spacing:2px;font-weight:700;
}

/* ---------- 3. SECTIONS ---------- */
main{max-width:980px;margin:0 auto;padding:0 24px}
.toc{
  background:#fff;border:1px solid var(--light-gray);padding:24px 28px;margin:48px 0;
  border-left:4px solid var(--red);
}
.toc h3{
  font-family:"Bebas Neue",sans-serif;letter-spacing:1.2px;font-size:18px;color:var(--navy);
  margin:0 0 14px;
}
.toc ol{margin:0;padding-left:22px;font-size:15px;line-height:1.9}
.toc a{color:var(--navy);border:none}
.toc a:hover{color:var(--red)}

.section{padding:50px 0;border-top:1px solid var(--light-gray)}
.section:first-of-type{border-top:none}
.section-eyebrow{
  font-family:"Barlow Condensed",sans-serif;letter-spacing:3px;font-weight:700;
  text-transform:uppercase;font-size:20px;color:var(--red);margin-bottom:8px;
}
.section h2{
  font-family:"Bebas Neue",sans-serif;letter-spacing:1.2px;
  font-size:clamp(36px,5.2vw,60px);line-height:.92;color:var(--navy);
  margin:0 0 24px;text-transform:uppercase;
}
.section h2 .accent{color:var(--red)}
.section h3{
  font-family:"Montserrat",sans-serif;font-weight:700;letter-spacing:-0.3px;
  font-size:28px;color:var(--navy);margin:44px 0 16px;line-height:1.2;
}
.section h4{
  font-family:"Barlow Condensed",sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;
  font-size:21px;color:var(--red);margin:28px 0 8px;
}
.section p{margin:0 0 16px}
.lede{font-size:21px;line-height:1.55;color:var(--dark);font-weight:400;margin-bottom:24px}
/* Reports no longer use drop caps; the class is left harmless for any old markup. */
.dropcap::first-letter{all:unset}

/* ---------- 4. COMPONENTS ---------- */
/* Stat boxes (a row of headline numbers + label) */
.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px;margin:36px 0}
.stat{
  background:#fff;border:1px solid var(--light-gray);padding:22px 20px;
  border-top:3px solid var(--red);text-align:center;
}
.stat .num{
  font-family:"Bebas Neue",sans-serif;font-size:100px;line-height:1;color:var(--navy);
  letter-spacing:.5px;display:block;margin-bottom:6px;
}
.stat .label{font-size:15px;font-weight:500;color:var(--navy);line-height:1.5}

/* Filled stat-box variants (solid color, white text) */
.stat.filled-red,
.stat.filled-navy,
.stat.filled-blue,
.stat.filled-olive{border:none;color:#fff}
.stat.filled-red   {background:var(--red)}
.stat.filled-navy  {background:var(--navy)}
.stat.filled-blue  {background:#1976D2}
.stat.filled-olive {background:var(--olive)}
.stat.filled-red .num,
.stat.filled-navy .num,
.stat.filled-blue .num,
.stat.filled-olive .num{color:#fff}
.stat.filled-red .label,
.stat.filled-navy .label,
.stat.filled-blue .label,
.stat.filled-olive .label{color:#fff;opacity:.95}
.stat.filled-red .label strong,
.stat.filled-navy .label strong,
.stat.filled-blue .label strong,
.stat.filled-olive .label strong{color:#fff}

/* Callouts (3 colors) */
.callout{
  background:var(--off-white);border-left:4px solid var(--olive);padding:22px 26px;margin:32px 0;
  font-size:16px;
}
.callout strong{color:var(--navy)}
.callout-red{border-left-color:var(--red);background:#FBF2F3}
.callout-navy{border-left-color:var(--navy);background:#F0F5F8}

/* Filled callout variants (solid color, white text) */
.callout.filled-red,
.callout.filled-navy{border:none;color:#fff;font-weight:500}
.callout.filled-red  {background:var(--red)}
.callout.filled-navy {background:var(--navy)}
.callout.filled-red strong,
.callout.filled-navy strong{color:#fff}
.callout.filled-navy li strong{font-weight:700}
.callout.filled-red a,
.callout.filled-navy a{color:#fff;border-bottom:1px solid rgba(255,255,255,.6)}

/* Tables */
.tbl{width:100%;border-collapse:collapse;margin:24px 0;font-size:14px}
.tbl th{
  background:var(--navy);color:#fff;padding:10px 12px;text-align:left;
  font-family:"Barlow Condensed",sans-serif;letter-spacing:.5px;font-weight:600;font-size:13px;
  text-transform:uppercase;
}
.tbl td{padding:9px 12px;border-bottom:1px solid var(--light-gray);vertical-align:top}
.tbl tr:nth-child(even) td{background:#fff}
.tbl-num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:var(--navy)}
.tbl-num,.tbl th.tbl-num{white-space:nowrap}
.tbl-tier{font-weight:600}

/* RUCA-definitions table — color-coded tier pills */
.ruca-defs-tbl{font-size:14px}
.ruca-defs-tbl td{vertical-align:top;line-height:1.45}
.ruca-defs-tbl td:first-child{font-family:"Bebas Neue",sans-serif;font-size:22px;color:var(--navy);text-align:center;line-height:1}
.ruca-pill{
  display:inline-block;color:#fff;font-family:"Barlow Condensed",sans-serif;font-weight:700;
  text-transform:uppercase;letter-spacing:1px;font-size:11px;padding:4px 10px;border-radius:3px;
  white-space:nowrap;
}
.tier-high{color:#1F6B3A}
.tier-med{color:#A47218}
.tier-low{color:var(--red)}

/* Chart wrappers */
.chart-wrap{
  background:#fff;border:1px solid var(--light-gray);padding:24px;margin:32px 0;
}
.chart-wrap h4{margin-top:0;color:var(--navy);font-family:"Bebas Neue",sans-serif;letter-spacing:.8px;font-size:30px;font-weight:400;text-transform:none}
.chart-wrap .source{font-size:12px;color:var(--muted);margin-top:14px;font-style:italic}
.chart-canvas{position:relative;height:380px}
.chart-canvas-tall{position:relative;height:520px}
.chart-canvas-short{position:relative;height:280px}

/* Chart wrapper sub-elements (eyebrow / helper / caption / toggle row) */
.chart-eyebrow{
  font-family:"Barlow Condensed",sans-serif;font-weight:700;letter-spacing:2px;
  text-transform:uppercase;font-size:18px;color:var(--red);margin-bottom:12px;
}
.chart-helper{
  font-size:14px;color:var(--muted);line-height:1.5;margin:0 0 14px;
}
.chart-caption{
  font-size:13px;color:var(--muted);line-height:1.25;margin:16px 0 0;
}
.chart-toggle-row{
  display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;
}

/* Bubble-map filter chip grid (used by Iowa bubble map) */
.bubble-filter-controls{
  display:flex;gap:8px;margin:6px 0 10px;
}
.bubble-filter-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;
}
.bubble-filter-grid .map-btn{
  text-align:left;padding:6px 10px 6px 12px;font-size:11px;letter-spacing:.6px;
  text-transform:none;font-weight:600;line-height:1.25;background:#fff;
  opacity:.55;transition:opacity .12s,background .15s;
}
.bubble-filter-grid .map-btn.active{
  background:#fff;color:var(--navy);opacity:1;
}
.bubble-filter-grid .map-btn:hover{opacity:1}

/* Per-function dropdown filter (replaces single-line chip) */
.bubble-filter-dropdown{
  background:#fff;border:1px solid var(--light-gray);border-left-width:4px;
  font-family:"Barlow Condensed",sans-serif;font-size:12px;
  position:relative;
}
.bubble-filter-dropdown > summary{
  list-style:none;cursor:pointer;padding:10px 12px;
  display:flex;align-items:center;gap:10px;
  font-weight:600;color:var(--navy);letter-spacing:.4px;
  user-select:none;
}
.bubble-filter-dropdown > summary::-webkit-details-marker{display:none}
.bubble-filter-dropdown > summary::marker{content:""}
.bf-text{display:flex;flex-direction:column;flex:1 1 auto;line-height:1.2}
.bf-fn-name{font-size:16px;font-weight:700}
.bf-fn-count{color:var(--muted);font-weight:500;font-size:11px;margin-top:2px;text-transform:none;letter-spacing:0}
.bf-caret{font-size:11px;color:var(--muted);transition:transform .15s}
.bubble-filter-dropdown[open] .bf-caret{transform:rotate(180deg)}
.bf-bucket-list{
  padding:8px 12px 10px;border-top:1px solid var(--light-gray);
  max-height:280px;overflow-y:auto;background:#fafaf7;
}
.bf-master-row{
  display:flex;gap:6px;margin-bottom:8px;padding-bottom:8px;
  border-bottom:1px dashed var(--light-gray);
}
.bf-mini-btn{
  background:#fff;border:1px solid var(--light-gray);color:var(--navy);
  padding:3px 8px;font-family:"Barlow Condensed",sans-serif;font-weight:600;
  font-size:10px;letter-spacing:.5px;text-transform:uppercase;cursor:pointer;
  border-radius:2px;transition:background .12s;
}
.bf-mini-btn:hover{background:var(--off-white)}
.bf-bucket-row{
  display:flex;align-items:flex-start;gap:8px;padding:4px 0;cursor:pointer;
  font-family:Montserrat,sans-serif;font-size:12px;line-height:1.35;color:var(--navy);
}
.bf-bucket-row input[type=checkbox]{
  margin:3px 0 0;flex:0 0 auto;accent-color:var(--navy);cursor:pointer;
}
.bf-bucket-row span{flex:1 1 auto}
.bf-bucket-row:hover{background:#fff}

/* Wider grid columns to accommodate dropdown summary text */
.bubble-filter-grid.bubble-filter-dropdowns{
  grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  align-items:start;
}

/* ---------- 5. ROOM-OF-100 VISUALIZATION ---------- */
.room{
  background:#fff;border:1px solid var(--light-gray);padding:28px;margin:36px 0;
}
.room-grid{
  display:grid;grid-template-columns:repeat(20,1fr);gap:6px;margin:18px 0 24px;
}
.fig{
  width:100%;aspect-ratio:1;background:#ddd;border-radius:50%;position:relative;cursor:default;
  transition:transform .2s ease;
  display:flex;align-items:center;justify-content:center;color:#fff;
}
.fig svg{width:58%;height:58%;display:block;pointer-events:none}
.fig:hover{transform:scale(1.6);z-index:5;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.fig::after{
  content:attr(data-label);position:absolute;bottom:115%;left:50%;transform:translateX(-50%);
  background:var(--navy);color:#fff;padding:5px 11px;font-size:11px;white-space:nowrap;
  opacity:0;pointer-events:none;transition:opacity .2s;border-radius:3px;font-weight:600;
}
.fig:hover::after{opacity:1}
.legend{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:18px 28px;margin-top:28px;font-size:13px;
}
.legend-item{
  display:flex;align-items:center;gap:12px;
  line-height:1.35;
}
.legend-swatch{
  width:44px;height:44px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  color:#fff;flex-shrink:0;
}
.legend-swatch svg{width:62%;height:62%}

/* ---------- 6. MAP COMPONENTS ---------- */
/* Plotly state-map toggle controls */
.map-controls{
  display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px;
}
.map-btn{
  background:#fff;border:1px solid var(--navy);color:var(--navy);
  padding:8px 16px;font-family:"Barlow Condensed",sans-serif;font-weight:600;
  letter-spacing:1.2px;text-transform:uppercase;font-size:12px;cursor:pointer;
  transition:all .15s;
}
.map-btn:hover{background:var(--off-white)}
.map-btn.active{background:var(--navy);color:#fff}
.fund-map{width:100%;height:520px}

/* D3 county choropleth (with click-through hint + tooltip + tick legend) */
.county-map-wrap{position:relative;background:#fff;border:1px solid var(--light-gray);padding:24px;margin:32px 0}
.county-map-wrap h4{margin-top:0;color:var(--navy);font-family:"Bebas Neue",sans-serif;letter-spacing:.8px;font-size:30px;font-weight:400;text-transform:none}
.county-map-wrap .source{font-size:12px;color:var(--muted);margin-top:14px;font-style:italic}
.county-map-svg{width:100%;height:auto;display:block;background:#fff;cursor:crosshair}
.county-map-svg .county{transition:opacity .12s,stroke-width .12s}
.county-map-svg .county:hover{stroke:#000;stroke-width:1.5;cursor:pointer}
.county-map-svg .state-border{fill:none;stroke:#1a1a1a;stroke-width:.9;stroke-linejoin:round;pointer-events:none}
.county-tooltip{
  position:absolute;pointer-events:none;background:var(--navy);color:#fff;
  padding:9px 13px;border-radius:6px;font-size:13px;line-height:1.4;
  opacity:0;transition:opacity .15s;z-index:50;box-shadow:0 4px 14px rgba(0,0,0,.18);
  max-width:240px;
}
.county-tooltip.visible{opacity:1}
.county-tooltip .name{font-weight:700;margin-bottom:3px}
.county-tooltip .value{font-family:"Bebas Neue",sans-serif;font-size:22px;letter-spacing:.5px;line-height:1;color:#fff;margin:2px 0 4px}
.county-tooltip .hint{font-size:11px;opacity:.8;margin-top:6px;font-style:italic}
.county-map-legend{
  display:flex;flex-wrap:wrap;align-items:flex-start;gap:14px;margin-top:18px;
  font-size:12px;
}
.county-map-legend .lbl-left,
.county-map-legend .lbl-right{
  color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.8px;font-size:11px;
  padding-top:6px;flex-shrink:0;
}
.county-map-legend .legend-bar{
  display:flex;flex-direction:column;align-items:stretch;flex:1 1 380px;min-width:280px;max-width:560px;
}
.county-map-legend .swatches{
  display:flex;height:22px;border:1px solid rgba(0,0,0,.08);
}
.county-map-legend .sw{flex:1 1 0;height:100%}
.county-map-legend .ticks{
  position:relative;height:18px;margin-top:4px;
  font-variant-numeric:tabular-nums;
}
.county-map-legend .ticks span{
  position:absolute;top:0;font-size:11px;color:var(--navy);font-weight:600;
  transform:translateX(-50%);white-space:nowrap;
}
.county-map-legend .nodata{
  display:inline-flex;align-items:center;gap:7px;color:var(--muted);
  padding-top:5px;flex-shrink:0;
}
.county-map-legend .nodata .nd-sw{
  width:14px;height:14px;background:#e5e3dc;border:1px solid #ccc;
}
/* Chart footer (report.js): the logo sits at the bottom right of every chart box. */
.rd-chart-foot{display:flex;align-items:center;justify-content:flex-end;margin-top:14px}
.rd-chart-logo{height:26px;width:auto;display:block}
.rd-info{font-size:.8em;color:var(--navy);opacity:.7;letter-spacing:0}

/* Legend pop-ups (report.js): any [data-tip] element explains itself on hover or tap. */
.rd-tip{
  position:absolute;z-index:1000;max-width:280px;padding:9px 12px;border-radius:6px;
  background:var(--navy);color:#fff;font-size:13px;line-height:1.45;box-shadow:0 6px 18px rgba(0,0,0,.2);
  pointer-events:none;opacity:0;transition:opacity .12s;
}
.rd-tip.visible{opacity:1}
[data-tip]{cursor:help}
.county-map-legend .sw[data-tip]:hover,.county-map-legend .sw[data-tip]:focus{outline:2px solid var(--navy);outline-offset:-2px}
@media (max-width:560px){
  .county-map-legend{flex-direction:column;align-items:stretch;gap:6px}
  .county-map-legend .lbl-left,.county-map-legend .lbl-right{padding-top:0}
  /* Stacked, the 380px flex-basis would become the bar's height and leave a tall gap. */
  .county-map-legend .legend-bar{flex:0 0 auto;min-width:0;max-width:none}
}

/* ---------- 7. ENDNOTES / FOOTER ---------- */
.endnotes{
  background:var(--off-white);color:var(--navy);padding:50px 24px;margin-top:60px;
}
.endnotes-inner{max-width:980px;margin:0 auto}
.endnotes h2{
  font-family:"Bebas Neue",sans-serif;letter-spacing:1px;font-size:34px;color:var(--navy);margin:0 0 24px;
}
.endnotes h3{
  font-family:"Barlow Condensed",sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;
  font-size:14px;color:var(--red);opacity:1;margin:24px 0 8px;
}
.endnotes p, .endnotes li{font-size:14px;line-height:1.7;color:var(--navy);opacity:.85}
.endnotes a{color:var(--navy);border-bottom-color:rgba(8,65,92,.35)}
.endnotes a:hover{color:var(--red);border-bottom-color:var(--red)}
.cite-list{padding-left:20px;margin:0}
.cite-list li{margin-bottom:8px}

.foot{
  background:#021a26;color:rgba(255,255,255,.6);padding:20px 24px;
  font-size:12px;letter-spacing:.5px;text-align:center;font-family:"Barlow Condensed",sans-serif;
}

/* ---------- Site-wide footer (injected by report.js mountSiteFooter) ---------- */
.rd-footer{background:var(--navy);color:rgba(255,255,255,.6);margin-top:0}
.rd-footer-inner{max-width:1280px;margin:0 auto;padding:64px 24px}
.rd-footer-grid{
  display:grid;grid-template-columns:1fr;gap:40px;
}
@media (min-width:768px){.rd-footer-grid{grid-template-columns:1fr 1fr}}
@media (min-width:1024px){.rd-footer-grid{grid-template-columns:repeat(4,1fr)}}
.rd-footer-col h4{
  font-family:"Barlow Condensed",sans-serif;font-weight:700;text-transform:uppercase;
  font-style:italic;font-size:15px;letter-spacing:.5px;color:#fff;margin:0 0 18px;
}
.rd-footer-logo{
  font-family:"Bebas Neue",sans-serif;text-transform:uppercase;color:#fff;
  font-size:36px;line-height:1;letter-spacing:.5px;display:block;margin:0 0 18px;
}
.rd-footer-tag{
  font-size:13px;color:rgba(255,255,255,.4);line-height:1.6;margin:0 0 18px;
}
.rd-footer-col ul{list-style:none;padding:0;margin:0}
.rd-footer-col ul li{margin-bottom:10px}
.rd-footer-col a{
  font-size:13px;color:rgba(255,255,255,.4);text-decoration:none;
  border-bottom:none;transition:color .15s;
}
.rd-footer-col a:hover{color:#fff}
.rd-footer-social{display:flex;gap:10px}
.rd-footer-social span{
  width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.1);
  display:inline-flex;align-items:center;justify-content:center;
  color:rgba(255,255,255,.4);font-size:11px;font-weight:700;cursor:pointer;
  transition:background .15s,color .15s;
}
.rd-footer-social span:hover{background:var(--red);color:#fff}
.rd-footer-cta{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--red);color:#fff !important;font-family:"Barlow Condensed",sans-serif;
  font-style:italic;text-transform:uppercase;font-weight:700;letter-spacing:1px;
  font-size:12px;padding:10px 18px;border-radius:8px;text-decoration:none;
  width:auto;transition:background .15s;border-bottom:none !important;
}
.rd-footer-cta:hover{background:#a8222d}
.rd-footer-link{display:block;font-size:11px;margin-top:12px}
.rd-footer-bottom{
  border-top:1px solid rgba(255,255,255,.1);margin-top:48px;padding-top:24px;
  display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:space-between;
  font-size:11px;color:rgba(255,255,255,.3);
}
@media (min-width:768px){.rd-footer-bottom{flex-direction:row}}
.rd-footer-bottom p{margin:0}
.rd-footer-bottom a{color:rgba(255,255,255,.5);text-decoration:underline;text-underline-offset:2px}
.rd-footer-bottom a:hover{color:#fff}

/* ---------- 8. UTILITIES + RESPONSIVE ---------- */
@media (max-width:680px){
  body{font-size:16px}
  .hero{padding:50px 20px}
  main{padding:0 18px}
  .section{padding:36px 0}
  .room-grid{grid-template-columns:repeat(10,1fr)}
  .chart-canvas{height:320px}
  .chart-canvas-tall{height:480px}
  .legend{grid-template-columns:repeat(2, minmax(0,1fr));gap:12px 20px}
  /* Wide tables scroll inside their own box instead of widening the page. */
  main table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  /* Phones: compact tables so more columns fit before the table has to scroll. */
  .tbl{font-size:12.5px}
  .tbl th{font-size:11px;letter-spacing:.3px;padding:8px 6px}
  .tbl td{padding:7px 6px}
  .chart-wrap,.county-map-wrap{padding:16px 14px}
  /* One card per row; !important beats per-report inline column counts like repeat(5,1fr). */
  .stat-row{grid-template-columns:1fr !important}
  .stat .num{font-size:72px;overflow-wrap:anywhere}
  .room{padding:18px}
  .chart-wrap h4{font-size:24px}
}
@media (max-width:480px){
  .legend{grid-template-columns:1fr}
}
/* Long file paths and URLs wrap instead of pushing the page sideways. */
main code,main a,.endnotes li,.endnotes a{overflow-wrap:anywhere}
/* Hidden hover labels and map tooltips can sit past the right edge; clip them sideways
   so they never widen the page on a phone. */
.room,.chart-wrap,.county-map-wrap{overflow-x:clip}
/* Touch screens: a tap (handled in report.js) does what hover does with a mouse. */
.fig.tapped{transform:scale(1.6);z-index:5;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.fig.tapped::after{opacity:1}

.mb-0{margin-bottom:0!important}
.mt-0{margin-top:0!important}
.text-center{text-align:center}
.muted{color:var(--muted);font-size:14px}
hr.thin{border:none;height:1px;background:var(--light-gray);margin:30px 0}
