/* Visualized Missouri Public Schools — shared styles */
/* Sibling of the Four-Day School Week Resource Center template.
   Distinct accent: deep slate blue (#1C3D5A) primary, goldenrod (#C6851E) kickers,
   azure (#2F80C4) accent/hover. Same fonts, neutrals, and section patterns. */
:root {
  /* Brand and neutral palette */
  --color-bg: #FBFAF8;
  --color-surface: #fff;
  --color-primary: #1C3D5A;
  --color-link: #2F80C4;
  /* Dark text variants retain the brighter decorative/chart palette. */
  --color-link-ink: #1D6399;
  --color-accent-ink: #8A5A10;
  --color-accent: #C6851E;
  --color-accent-light: #E9B44C;
  --color-text: #1a1416;
  --color-text-body: #3a3335;
  --color-text-muted: #514B49;
  --color-text-soft: #514B49;
  --color-border: #ECE7E2;
  --color-sand: #F4EFEA;

  /* Type */
  --font-sans: 'Libre Franklin', sans-serif;
  --font-serif: 'Newsreader', serif;
  --font-ui: var(--font-sans);
  --font-editorial: var(--font-serif);
  --type-page-title: clamp(2.5rem, 4vw, 3.5rem);
  --type-section-title: clamp(1.9rem, 3vw, 2.45rem);
  --type-stat: clamp(2.4rem, 3.5vw, 3.35rem);
  --type-body: 15px;

  /* Shared page geometry */
  --container-max: 1280px;
  --page-gutter: 56px;
  --page-gutter-tablet: 24px;
  --page-gutter-phone: 22px;
  --map-column: 500px;
  --map-gap: 40px;
  --space-xs: 8px;
  --space-sm: 12px;
  --space-md: 18px;
  --space-lg: 24px;
  --space-xl: 40px;
  --section-gap: clamp(3rem, 5vw, 4.5rem);
  --space-section: var(--section-gap);
  --radius-card: 14px;
  --border-card: #E5E0DA;
  --shadow-card-soft: 0 4px 12px rgba(28,61,90,0.055), 0 1px 2px rgba(28,61,90,0.04);
  --shadow-card: 0 12px 32px rgba(28,61,90,0.075), 0 2px 8px rgba(28,61,90,0.045);
  --shadow-card-hover: 0 20px 46px rgba(28,61,90,0.14), 0 5px 14px rgba(28,61,90,0.08);
  --ease-out: cubic-bezier(.2,.75,.25,1);
}
* { box-sizing: border-box; }
/* Smooth scrolling only for in-page interaction — keeps load-time anchor jumps instant and reliable */
html:focus-within { scroll-behavior: smooth; }
/* Keep anchored sections clear of the sticky header */
[id] { scroll-margin-top: 92px; }
body { margin: 0; background: var(--color-bg); font-family: var(--font-ui); color: var(--color-text); -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
a { color: inherit; text-decoration: none; }
.serif { font-family: var(--font-editorial); font-weight: 500; }
.lnk { transition: color .15s ease; }
.lnk:hover { color:var(--color-link-ink) !important; }
.card {
  border-color:var(--border-card) !important;
  box-shadow:var(--shadow-card-soft);
  transition:transform .22s var(--ease-out), box-shadow .22s var(--ease-out), border-color .22s ease, background-color .22s ease;
}
@media (hover:hover) and (pointer:fine) {
  .card:hover { transform:translateY(-4px); border-color:rgba(47,128,196,.38) !important; box-shadow:var(--shadow-card-hover); }
}
.card:focus-visible,
.stat-chip:focus-visible,
.button-primary:focus-visible,
.button-secondary:focus-visible { outline:3px solid rgba(47,128,196,.42); outline-offset:4px; }
.editorial-copy,
.page-hero > p.lede,
.page-hero .hero-lede > p.lede,
.section > p.lede {
  font-family:var(--font-editorial);
  font-size:clamp(1.08rem,1.45vw,1.24rem);
  line-height:1.64;
  letter-spacing:.002em;
}
.wrap { max-width: var(--container-max); margin: 0 auto; background: var(--color-bg); }

/* Shared presentation helpers. These replace repeated inline declarations while
   retaining the site's existing visual language. */
.text-link { color:var(--color-link-ink) !important; }
.text-link-strong { font-weight: 600; }
.link-on-dark { color: #9CC7EA !important; }
.link-on-dark-accent { color: var(--color-accent-light) !important; }
.text-small-muted { font-size: 13.5px; color: var(--color-text-soft); }
.site-footer-kicker { font-size:12.5px; font-weight:700; letter-spacing:0.14em; color:var(--color-accent-ink); margin-bottom:10px; }
.site-footer-title { font-size:26px; margin-bottom:6px; }
.site-footer-copy { font-size:14.5px; color:var(--color-text-muted); }
.site-footer-bio { max-width:820px; line-height:1.55; }
.site-footer-disclosure { max-width:820px; margin-top:10px; font-size:13.5px; line-height:1.55; color:var(--color-text-soft); }
.site-footer-cta { background:var(--color-primary); color:#fff; font-weight:600; font-size:15px; padding:14px 28px; border-radius:6px; }
.site-footer-links { display:flex; gap:22px; flex-wrap:wrap; }

/* Masthead */
.masthead { display:flex; align-items:center; justify-content:space-between; padding:20px var(--page-gutter); border-bottom:1px solid rgba(229,224,218,.9); position:sticky; top:0; background:rgba(251,250,248,0.9); backdrop-filter:blur(14px) saturate(1.08); box-shadow:0 1px 0 rgba(28,61,90,.025); z-index:20; }
.masthead .logo-box { width:38px; height:38px; background:#1C3D5A; border-radius:7px; display:flex; align-items:center; justify-content:center; color:#fff; font-family:'Newsreader',serif; font-weight:600; font-size:20px; line-height:1; }
.masthead .site-name { font-weight:700; font-size:14px; letter-spacing:0.06em; color:#1a1416; line-height:1.15; }
.masthead .site-sub { font-size:11px; letter-spacing:0.18em; color:#514B49; }
.nav-links { display:flex; align-items:center; gap:20px; font-size:13.5px; font-weight:500; color:#3a3335; }
.nav-links .btn { background:#1C3D5A; color:#fff; padding:9px 16px; border-radius:5px; font-weight:600; }
.nav-links a.active { color:#1C3D5A; font-weight:700; }
/* Header logo image (PNG lockup) — keep original proportions, never distorted */
.masthead .logo-link { display:block; line-height:0; }
.masthead .site-logo { display:block; height:52px; width:auto; max-width:100%; object-fit:contain; }
@media (max-width:600px) { .masthead .site-logo { height:38px; } }

/* Mobile menu button + drawer (accessibility review, 2026-07-18: nav-links disappeared
   below 960px with no replacement). Injected by mobile-nav.js next to the existing
   .nav-links, which becomes the drawer's contents when opened — no link list is
   duplicated in markup. */
.menu-btn { display:none; background:#1C3D5A; color:#fff; border:0; border-radius:6px;
  padding:9px 15px; font-size:14px; font-weight:600; font-family:inherit; cursor:pointer;
  align-items:center; gap:8px; }
.menu-btn:focus-visible { outline:3px solid #C6851E; outline-offset:2px; }
.menu-btn .mb-ico { display:inline-block; line-height:1; font-size:15px; }
@media (max-width:960px) {
  .menu-btn { display:inline-flex; }
  .nav-links.open { display:flex !important; flex-direction:column; align-items:stretch;
    gap:0; position:absolute; top:100%; left:0; right:0; background:#fff;
    border:1px solid #ECE7E2; border-top:0; box-shadow:0 14px 34px rgba(0,0,0,0.13);
    padding:6px 0; z-index:40; }
  .nav-links.open a { padding:14px 24px; border-bottom:1px solid #F3EFEA; }
  .nav-links.open a:last-child { border-bottom:0; }
}

/* Nav dropdown groups (IA restructure, 2026-07-25): "Explore the Issues" and "About the
   Data" use native <details>/<summary>, so a click (or Enter/Space when focused) opens
   and closes them with no new JS. Inside the mobile drawer below, the same click-to-open
   behavior turns each group into a small accordion within the full-width list — tap the
   group name, its pages drop down beneath it, tap again to collapse. */
.nav-group { position:relative; }
.nav-group > summary { list-style:none; cursor:pointer; display:flex; align-items:center; gap:5px; }
.nav-group > summary::-webkit-details-marker { display:none; }
.nav-group > summary::after { content:"▾"; font-size:10px; position:relative; top:1px; }
.nav-group[open] > summary::after { content:"▴"; }
.nav-group > summary:focus-visible { outline:3px solid #C6851E; outline-offset:3px; border-radius:3px; }
.nav-group.active > summary { color:#1C3D5A; font-weight:700; }
.nav-dropdown { position:absolute; top:calc(100% + 10px); left:0; min-width:216px;
  background:#fff; border:1px solid #ECE7E2; box-shadow:0 14px 34px rgba(0,0,0,0.13);
  border-radius:6px; padding:6px 0; z-index:40; display:flex; flex-direction:column; }
.nav-dropdown a { padding:9px 16px; font-weight:500; white-space:nowrap; }
.nav-dropdown a.active { background:#F7F4EF; }
@media (max-width:960px) {
  .nav-links.open .nav-group { width:100%; }
  .nav-links.open .nav-group > summary { padding:14px 24px; border-bottom:1px solid #F3EFEA; }
  .nav-links.open .nav-dropdown { position:static; width:100%;
    box-shadow:none; border:0; border-radius:0; padding:0 0 6px; background:#FBFAF8; }
  .nav-links.open .nav-dropdown a { padding:12px 24px 12px 36px; border-bottom:1px solid #F3EFEA; white-space:normal; }
  .nav-links.open .nav-dropdown a:last-child { border-bottom:0; }
}

/* Page hero */
.page-hero { padding: 58px var(--page-gutter) 40px; border-bottom:1px solid var(--color-border); }
.page-hero .kicker { font-size:12.5px; font-weight:700; letter-spacing:0.16em; color:var(--color-link-ink); margin-bottom:14px; }
.page-hero h1 { font-family:var(--font-editorial); font-weight:500; font-size:var(--type-page-title); line-height:1.03; letter-spacing:-0.025em; margin:0 0 16px; text-wrap:balance; }
.page-hero p.lede { font-size:17px; line-height:1.6; color:#4a4245; max-width:760px; margin:0; }
/* Two-column hero: title + intro on the left, the "What this page shows" card on the right */
.page-hero .hero-lede { min-width:0; }
@media (min-width:900px){
  .page-hero { display:grid; grid-template-columns:minmax(0,1.12fr) minmax(0,1fr); gap:46px; align-items:start; }
  .page-hero .keyfind { margin-top:0; }
}
/* Home hero (#top) already contains its own 2-col .hero-grid (copy + map card),
   so it must NOT inherit the topic-page 2-col grid above — that squeezed everything
   into the left column and left the right half blank. Keep it a plain block. */
#top.page-hero { display:block; }
/* Same fix for any other page-hero that has no second "keyfind" column (e.g. lookup.html) —
   the grid was auto-placing kicker/h1/lede/search into two columns with nothing to fill the
   right side, splitting the title from its intro text (caught 2026-07-18). */
.page-hero.single-col { display:block !important; }

/* Sections */
.section { padding: var(--space-section) var(--page-gutter); }
.section.sand { background:var(--color-sand); border-top:1px solid var(--color-border); border-bottom:1px solid var(--color-border); }
.section h2 { font-family:var(--font-editorial); font-weight:500; font-size:var(--type-section-title); line-height:1.08; letter-spacing:-.018em; text-wrap:balance; margin:0 0 14px; }
.section .kicker { font-size:12.5px; font-weight:700; letter-spacing:0.14em; color:var(--color-accent-ink); margin-bottom:12px; }
.section p, .section li { font-size:var(--type-body); line-height:1.65; color:var(--color-text-body); }
.section .lede { font-size:16.5px; line-height:1.6; color:#4a4245; max-width:760px; }

/* Tableau / chart embed slots */
.embed-slot { margin-top:26px; border:2px dashed #C3CEDA; border-radius:14px; background:#fff; background-image:linear-gradient(#F6F8FB 1px, transparent 1px), linear-gradient(90deg, #F6F8FB 1px, transparent 1px); background-size:34px 34px; min-height:440px; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:44px 32px; }
.embed-slot .es-glyph { width:64px; height:64px; border-radius:14px; background:#1C3D5A; color:#fff; display:flex; align-items:center; justify-content:center; font-size:30px; margin-bottom:20px; }
.embed-slot .es-tag { font-size:11.5px; font-weight:700; letter-spacing:0.16em; color:var(--color-accent-ink); margin-bottom:10px; }
.embed-slot .es-title { font-family:'Newsreader',serif; font-size:23px; line-height:1.28; color:#1a1416; max-width:560px; margin-bottom:12px; }
.embed-slot .es-help { font-size:13.5px; line-height:1.6; color:#514B49; max-width:520px; }
.embed-slot .es-help code { background:#F1EEE9; border-radius:4px; padding:1px 6px; font-size:12.5px; color:#1C3D5A; }
/* When a real embed is present, let it fill the slot cleanly */
.embed-slot.filled { display:block; padding:0; border-style:solid; border-color:#ECE7E2; background:#fff; background-image:none; overflow:hidden; }
.embed-slot.filled iframe { width:100%; min-height:640px; border:0; display:block; }

/* Live Tableau embed frame (used when a real dashboard replaces a placeholder slot) */
.viz-embed { margin-top:26px; border:1px solid var(--border-card); border-radius:var(--radius-card); overflow:hidden; background:var(--color-surface); box-shadow:var(--shadow-card); position:relative; }
/* Scroll shield: covers the map so page-scroll works; click to interact, mouse-out to release */
.viz-shield { position:absolute; top:0; left:0; right:0; bottom:0; z-index:5; cursor:pointer; background:transparent; display:flex; align-items:flex-start; justify-content:center; }
.viz-embed.viz-active .viz-shield { pointer-events:none; opacity:0; }
.viz-shield-hint { margin-top:16px; background:rgba(28,61,90,0.9); color:#fff; font-size:12px; font-weight:600; letter-spacing:0.03em; padding:7px 14px; border-radius:20px; opacity:0; transition:opacity .18s ease; box-shadow:0 4px 14px rgba(0,0,0,0.18); }
.viz-embed:hover .viz-shield-hint { opacity:1; }

/* Community lens — a compact topic-page comparison that preserves all four
   NCES community types rather than reducing Missouri to a rural/suburban
   binary. The first use is Funding; the component can be reused selectively
   where community type materially changes a page's interpretation. */
.community-lens {
  margin-top:18px;
  background:linear-gradient(145deg,#F4F7FA 0%,#fff 72%);
  border:1px solid #DDE6ED;
  border-radius:var(--radius-card);
  box-shadow:var(--shadow-card-soft);
  padding:21px 22px 18px;
}
.community-lens__label {
  color:var(--color-accent-ink);
  font-size:11px;
  font-weight:750;
  letter-spacing:.14em;
  text-transform:uppercase;
  margin-bottom:7px;
}
.community-lens h3 {
  color:var(--color-primary);
  font-family:var(--font-editorial);
  font-size:21px;
  font-weight:600;
  line-height:1.16;
  margin:0 0 8px;
}
.community-lens > p {
  color:var(--color-text-muted);
  font-size:13px;
  line-height:1.55;
  margin:0 0 12px;
}
.community-lens table { width:100%; border-collapse:collapse; font-variant-numeric:tabular-nums; }
.community-lens caption { margin:0; }
.community-lens th,
.community-lens td { border-top:1px solid #E3EAF0; padding:8px 7px; text-align:right; }
.community-lens thead th {
  color:var(--color-text-soft);
  font-size:10.5px;
  font-weight:700;
  letter-spacing:.035em;
  line-height:1.25;
  vertical-align:bottom;
}
.community-lens th:first-child,
.community-lens td:first-child { text-align:left; padding-left:0; }
.community-lens th:last-child,
.community-lens td:last-child { padding-right:0; }
.community-lens tbody th { color:var(--color-text); font-size:12.5px; line-height:1.25; }
.community-lens tbody th span { display:block; color:var(--color-text-soft); font-size:10.5px; font-weight:500; }
.community-lens tbody td { color:var(--color-text-body); font-size:12px; font-weight:650; }
.community-lens__source { color:var(--color-text-soft) !important; font-size:11px !important; margin:11px 0 0 !important; }
.community-lens__link { display:inline-block; color:var(--color-link-ink) !important; font-size:12px; font-weight:700; margin-top:10px; }

/* Dime-test visual primer — the rate, tax base and per-student yield shown as
   one equation before the map. */
.dime-primer {
  display:grid;
  grid-template-columns:minmax(220px,.78fr) minmax(0,1.42fr);
  gap:24px;
  align-items:center;
  margin:25px 0 4px;
  padding:22px 24px;
  background:linear-gradient(135deg,#EEF4F8 0%,#fff 72%);
  border:1px solid #D8E3EB;
  border-radius:var(--radius-card);
  box-shadow:var(--shadow-card-soft);
}
.dime-primer__label { color:var(--color-accent-ink); font-size:11px; font-weight:750; letter-spacing:.14em; text-transform:uppercase; margin-bottom:7px; }
.dime-primer h3 { color:var(--color-primary); font-family:var(--font-editorial); font-size:23px; font-weight:600; line-height:1.13; margin:0 0 7px; }
.dime-primer p { color:var(--color-text-muted); font-size:13px; line-height:1.55; margin:0; }
.dime-equation { display:grid; grid-template-columns:minmax(74px,.72fr) auto minmax(150px,1.35fr) auto minmax(104px,.9fr); gap:9px; align-items:stretch; }
.dime-equation__term { display:flex; flex-direction:column; justify-content:center; min-width:0; padding:14px 12px; background:#fff; border:1px solid #D8E3EB; border-radius:10px; text-align:center; }
.dime-equation__term strong { color:var(--color-primary); font-size:clamp(17px,1.65vw,23px); line-height:1.08; letter-spacing:-.02em; }
.dime-equation__term span { color:var(--color-text-soft); font-size:10.5px; line-height:1.3; margin-top:6px; }
.dime-equation__term--result { background:var(--color-primary); border-color:var(--color-primary); }
.dime-equation__term--result strong { color:#fff; }
.dime-equation__term--result span { color:#D7E5F1; }
.dime-equation__operator { align-self:center; color:var(--color-accent-ink); font-family:var(--font-editorial); font-size:27px; font-weight:600; }

/* Four-day rural-context headline. The strong numeric panel gives the key
   confounder the visual hierarchy that an ordinary bullet could not. */
.rural-effect {
  display:grid;
  grid-template-columns:190px minmax(0,1fr);
  margin-top:28px;
  overflow:hidden;
  background:var(--color-primary);
  border:1px solid rgba(28,61,90,.86);
  border-radius:var(--radius-card);
  box-shadow:var(--shadow-card);
}
.rural-effect__stat { display:flex; flex-direction:column; align-items:center; justify-content:center; padding:24px 20px; background:rgba(255,255,255,.08); border-right:1px solid rgba(255,255,255,.14); text-align:center; }
.rural-effect__stat strong { color:#fff; font-size:42px; font-weight:800; line-height:.95; letter-spacing:-.045em; font-variant-numeric:tabular-nums; }
.rural-effect__stat span { color:#E9B44C; font-size:11px; font-weight:700; letter-spacing:.1em; line-height:1.35; margin-top:9px; text-transform:uppercase; }
.rural-effect__body { padding:24px 28px 23px; }
.rural-effect__label { color:#E9B44C; font-size:11px; font-weight:750; letter-spacing:.14em; margin-bottom:8px; text-transform:uppercase; }
.rural-effect h3 { color:#fff; font-family:var(--font-editorial); font-size:27px; font-weight:600; line-height:1.1; margin:0 0 8px; }
.rural-effect p { color:#E2EAF1; font-size:14px; line-height:1.58; margin:0; }
.rural-effect__vintage { color:#BFCFDC !important; font-size:11.5px !important; margin-top:9px !important; }

@media (max-width:820px) {
  .dime-primer { grid-template-columns:1fr; }
  .rural-effect { grid-template-columns:160px minmax(0,1fr); }
}
@media (max-width:600px) {
  .community-lens { padding:19px 17px 16px; }
  .community-lens table { table-layout:fixed; }
  .community-lens th,
  .community-lens td { padding:7px 3px; }
  .community-lens th:first-child { width:28%; }
  .community-lens th:nth-child(2) { width:28%; }
  .community-lens th:nth-child(3) { width:44%; }
  .community-lens thead th { font-size:9.5px; letter-spacing:0; }
  .community-lens tbody th,
  .community-lens tbody td { font-size:11px; }
  .community-lens tbody th span { font-size:9px; }
  .dime-primer { gap:14px; padding:18px 16px; }
  .dime-equation { grid-template-columns:1fr; gap:2px; }
  .dime-equation__term { padding:10px 9px; }
  .dime-equation__operator { justify-self:center; font-size:19px; line-height:1; }
  .rural-effect { grid-template-columns:1fr; }
  .rural-effect__stat { border-right:0; border-bottom:1px solid rgba(255,255,255,.14); padding:20px; }
  .rural-effect__body { padding:22px 20px; }
}

/* Dime test calculator */
.dime-calc { margin-top:40px; background:#fff; border:1px solid #ECE7E2; border-radius:14px; box-shadow:0 10px 30px rgba(0,0,0,0.05); padding:30px 30px 34px; }
.dc-kicker { font-size:12.5px; font-weight:700; letter-spacing:0.14em; color:var(--color-accent-ink); margin-bottom:8px; }
.dc-controls { display:grid; grid-template-columns:1fr 1fr; gap:18px 22px; margin-bottom:26px; }
.dc-field { display:flex; flex-direction:column; gap:6px; }
.dc-field label { font-size:13px; font-weight:600; color:#514B49; }
.calc-error { display:block; margin-top:6px; color:#8B2E24; font-size:13px; font-weight:700; line-height:1.4; }
.calc-error[hidden] { display:none; }
.calc-validation { padding:14px 16px; border:2px solid #B4402E; border-radius:8px; background:#FFF4F2; color:#6F211A; font-weight:700; }
input[aria-invalid="true"] { border-color:#B4402E !important; box-shadow:0 0 0 2px rgba(180,64,46,.18); }
.dc-field select,
.dc-field input[type="text"] { padding:10px 12px; font-size:14.5px; border:1px solid #cdd6de; border-radius:8px; background:#fff; color:#1a1416; font-family:inherit; }
.dc-field input[type="text"]:focus { outline:none; border-color:#2F80C4; box-shadow:0 0 0 3px rgba(47,128,196,.12); }
.dc-levy { grid-column:1 / -1; }
.dc-levy input[type=range] { width:100%; accent-color:#1C3D5A; margin-top:6px; }
.dc-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:18px; }
.dc-card { background:#EAF0F6; border-radius:12px; padding:22px 24px; }
.dc-name { font-size:13px; font-weight:700; letter-spacing:0.04em; color:#1C3D5A; text-transform:uppercase; margin-bottom:10px; min-height:32px; line-height:1.2; }
.dc-big { font-family:'Newsreader',serif; font-weight:600; font-size:40px; color:#1C3D5A; line-height:1; }
.dc-big .cent { color:var(--color-link-ink); }
.dc-sub { font-size:13.5px; color:#514B49; margin-top:7px; }
.dc-meta { font-size:12.5px; color:#514B49; margin-top:12px; border-top:1px solid #d3dde6; padding-top:10px; line-height:1.5; }
.dc-compare { margin-top:18px; background:#1C3D5A; color:#fff; border-radius:10px; padding:16px 20px; font-size:15.5px; line-height:1.55; }
.dc-compare strong { color:#EAF7FA; }
@media (max-width:700px) { .dc-controls { grid-template-columns:1fr; } }

/* Levy cost-and-yield calculator */
.levy-impact-calc { margin-top:28px; }
.levy-impact-title { margin:0 0 7px; font-family:var(--font-editorial); font-size:28px; font-weight:600; color:var(--color-primary); }
.levy-impact-controls { align-items:end; }
.levy-money-input,
.levy-cents-input { display:flex; align-items:center; min-height:44px; border:1px solid #CDD6DE; border-radius:8px; background:#fff; overflow:hidden; }
.levy-money-input:focus-within,
.levy-cents-input:focus-within { border-color:#2F80C4; box-shadow:0 0 0 3px rgba(47,128,196,.12); }
.levy-money-input span { padding-left:12px; color:#514B49; font-weight:600; }
.levy-money-input input,
.levy-cents-input input { min-width:0; width:100%; border:0; outline:0; background:transparent; padding:10px 12px; color:#1A1416; font:inherit; font-size:15px; }
.levy-money-input input { padding-left:5px; }
.levy-cents-input input { flex:0 0 74px; width:74px; border-right:1px solid #E1E6EA; }
.levy-cents-input span { padding:0 10px; color:#514B49; font-size:12.5px; line-height:1.25; }
.levy-home-result { display:grid; grid-template-columns:minmax(230px,.8fr) 1.2fr; gap:24px; align-items:center; margin-bottom:18px; padding:20px 22px; border:1px solid #D8E6F1; border-radius:12px; background:#EFF5FA; }
.levy-home-result strong { display:block; color:#1C3D5A; font-family:var(--font-editorial); font-size:32px; font-weight:600; line-height:1.05; }
.levy-home-result span { display:block; margin-top:5px; color:#526475; font-size:13.5px; }
.levy-home-result p { margin:0; color:#3F4F5D; font-size:14px; line-height:1.55; }
.levy-home-label { margin-bottom:7px; color:var(--color-accent-ink); font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.levy-impact-card { background:#F7F4EF; border:1px solid #ECE3D5; }
.levy-yield strong { display:block; color:#1C3D5A; font-family:var(--font-editorial); font-size:38px; font-weight:600; line-height:1; }
.levy-yield span { display:block; margin-top:6px; color:#514B49; font-size:13.5px; }
.levy-total { margin-top:17px; padding-top:13px; border-top:1px solid #DED6CA; color:#514B49; font-size:13.5px; line-height:1.45; }
.levy-total strong { color:#1C3D5A; font-size:17px; }
.levy-yield-na { min-height:70px; color:#514B49; font-size:13.5px; line-height:1.5; }
.levy-yield-na strong { color:#1C3D5A; }
.levy-impact-note { margin-top:16px; color:#514B49; font-size:13.5px; line-height:1.6; }
@media (max-width:700px) {
  .levy-home-result { grid-template-columns:1fr; gap:12px; }
  .levy-impact-calc { padding:23px 18px 26px; }
  .levy-impact-title { font-size:24px; }
}

/* Fixed May 2025 graduate: 13-year per-pupil spending comparison */
.k12-spending-calc { margin-top:28px; }
.k12-period { margin:0 0 22px; max-width:860px; color:#4B4746; font-size:15.5px; line-height:1.6; }
.k12-controls { margin-bottom:16px; }
.k12-actions { display:flex; align-items:center; gap:16px; margin:0 0 24px; }
.k12-actions .button-primary { border:0; cursor:pointer; font-family:inherit; }
.k12-status { color:#514B49; font-size:13px; line-height:1.4; }
.k12-result { min-height:220px; }
.k12-card { display:flex; min-width:0; flex-direction:column; }
.k12-card .dc-big { font-variant-numeric:tabular-nums; }
.k12-card--unavailable { background:#F5F2EF; }
.k12-unavailable { font-family:var(--font-ui); font-size:25px; line-height:1.15; }
.k12-real { margin-top:15px; padding-top:12px; border-top:1px solid #D3DDE6; color:#4F5F6C; font-size:14px; line-height:1.45; }
.k12-real strong { color:var(--color-primary); font-size:18px; font-variant-numeric:tabular-nums; }
.k12-compare { font-size:16px; }
.k12-benchmark,
.k12-limit { margin-top:14px; padding:14px 16px; border:1px solid #D8E0E7; border-radius:9px; background:#F4F7FA; color:#33475B; font-size:14px; line-height:1.55; }
.k12-limit { border-left:4px solid var(--color-accent); background:#FDF8EE; }
.k12-limit--definition { margin-top:18px; background:#FAF8F6; color:#5D5653; }
.k12-ledger { margin-top:18px; }
.k12-ledger-key { margin:0 0 12px; font-size:13.5px; line-height:1.55; }
.k12-ledger-table { min-width:560px; }
.k12-ledger-table caption { padding:0 0 10px; color:#514B49; font-size:12.5px; text-align:left; }
.k12-ledger-table th,
.k12-ledger-table td { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.k12-ledger-table th:first-child { text-align:left; }
.k12-ledger-table th:nth-child(2),
.k12-ledger-table td:nth-child(2) { text-align:center; }
.k12-ledger-table tfoot th,
.k12-ledger-table tfoot td { border-top:2px solid #BFCBD5; color:var(--color-primary); font-weight:700; }
@media (max-width:600px) {
  .k12-spending-calc { padding:23px 18px 26px; }
  .k12-actions { align-items:stretch; flex-direction:column; gap:9px; }
  .k12-status { min-height:18px; }
  .k12-result { min-height:0; }
}
.viz-embed .tableauPlaceholder { width:100% !important; }
.viz-embed iframe { width:100%; border:0; display:block; }  /* NB: never set a min-height here — it fights the tableau-viz width/height attributes and crops the map */
.viz-caption { font-size:13px; line-height:1.55; color:#514B49; margin-top:12px; }
.subhead { font-family:'Newsreader',serif; font-weight:600; font-size:19px; color:#1C3D5A; margin-top:26px; }

/* "What this page means for you" — audience lenses */
.means { background:var(--color-primary); color:#fff; padding:var(--space-section) var(--page-gutter); }
.means .kicker { font-size:12.5px; font-weight:700; letter-spacing:0.14em; color:#E9B44C; margin-bottom:12px; }
.means h2 { font-family:'Newsreader',serif; font-weight:500; font-size:30px; margin:0 0 10px; color:#fff; }
.means .lede { font-size:16.5px; line-height:1.6; color:#C7D5E2; max-width:760px; margin:0 0 30px; }
.means-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:20px; align-items:stretch; }
.means-card { background:rgba(255,255,255,0.07); border:1px solid rgba(255,255,255,0.14); border-radius:12px; padding:24px 24px 22px; }
.means-card .mc-who { font-size:11.5px; font-weight:700; letter-spacing:0.12em; color:#E9B44C; margin-bottom:12px; text-transform:uppercase; }
.means-card p { font-size:14.5px; line-height:1.6; color:#E4ECF3; margin:0 0 12px; }
.means-card p:last-child { margin-bottom:0; }
.means-card strong { color:#fff; }
.means-ask { margin-top:30px; background:rgba(0,0,0,0.18); border-left:4px solid #E9B44C; border-radius:8px; padding:24px 26px; }
.means-ask .ma-title { font-size:12.5px; font-weight:700; letter-spacing:0.12em; color:#E9B44C; margin-bottom:14px; text-transform:uppercase; }
.means-ask ul { margin:0; padding-left:20px; }
.means-ask li { font-size:14.5px; line-height:1.65; color:#E4ECF3; margin-bottom:9px; }
.means-ask li:last-child { margin-bottom:0; }
@media (max-width:760px) { .means-grid { grid-template-columns:1fr; } }
@media (max-width:600px) { .means { padding:40px 22px; } }

/* Browse-by-theme cards (home page) */
.theme-card { position:relative; display:flex; flex-direction:column; min-height:100%; overflow:hidden; background:#fff; border:1px solid var(--border-card); border-radius:var(--radius-card); padding:30px 28px 27px; }
.theme-card::before { content:""; position:absolute; top:0; left:0; width:100%; height:3px; background:linear-gradient(90deg,var(--color-primary),var(--color-link)); transform:scaleX(0); transform-origin:left; transition:transform .24s var(--ease-out); }
.theme-card .tc-kicker { font-size:11.5px; font-weight:700; letter-spacing:0.12em; color:var(--color-accent-ink); margin-bottom:12px; }
.theme-card .tc-title { font-size:23px; line-height:1.16; letter-spacing:-.01em; color:#1a1416; margin-bottom:12px; text-wrap:balance; }
.theme-card .tc-desc { font-size:14px; line-height:1.62; color:#514B49; margin-bottom:20px; }
.theme-card .tc-go { margin-top:auto; font-size:13.5px; font-weight:700; color:var(--color-link-ink); transition:transform .2s var(--ease-out); }
@media (hover:hover) and (pointer:fine) {
  .theme-card:hover::before { transform:scaleX(1); }
  .theme-card:hover .tc-go { transform:translateX(4px); }
}

/* Stat chips — high-contrast numeric entry points */
.home-stats-section { position:relative; background:linear-gradient(180deg,#F4F7FA 0%,#FBFAF8 100%); border-top:1px solid #E4EBF1; border-bottom:1px solid #E4EBF1; }
.stat-band { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin-top:28px; }
.stat-chip { position:relative; overflow:hidden; background:rgba(255,255,255,.94); border:1px solid var(--border-card); border-radius:var(--radius-card); padding:30px 28px 28px; box-shadow:var(--shadow-card-soft); }
.stat-chip .num { font-family:'Newsreader',serif; font-weight:600; font-size:34px; color:#1C3D5A; line-height:1; }
.stat-callout { font-family:var(--font-ui) !important; font-size:var(--type-stat) !important; font-weight:800 !important; line-height:.96 !important; letter-spacing:-.045em; font-variant-numeric:tabular-nums lining-nums; color:var(--color-primary) !important; }
.stat-callout.stat-callout-long { font-size:clamp(2.15rem,2.85vw,2.8rem) !important; white-space:nowrap; }
.stat-chip .num .accent { color:var(--color-link-ink); }
.stat-chip .compare-num { font-size:30px; letter-spacing:-0.015em; white-space:nowrap; }
.stat-chip .num-compare { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:end; gap:10px; font-family:var(--font-editorial); line-height:1; }
.stat-chip .compare-side { display:flex; flex-direction:column; min-width:0; }
.stat-chip .compare-side-label { margin-bottom:7px; font-family:var(--font-ui); font-size:10px; font-weight:700; line-height:1; letter-spacing:.11em; text-transform:uppercase; color:#514B49; }
.stat-chip .compare-side-value { font-size:clamp(1.28rem,1.75vw,1.68rem); font-weight:600; letter-spacing:-.02em; white-space:nowrap; }
.stat-chip .compare-vs { align-self:end; padding-bottom:2px; font-family:var(--font-ui); font-size:11px; font-weight:700; color:var(--color-link-ink); text-transform:uppercase; }
.stat-chip .plain-num { font-size:30px; line-height:1.05; }
.stat-chip .lab { font-size:13.5px; color:#4e4746; line-height:1.58; margin-top:18px; }
.stat-chip .src { font-size:11.5px; color:#514B49; letter-spacing:0.04em; margin-top:8px; text-transform:uppercase; }
a.stat-chip { display:block; color:inherit; text-decoration:none; transition:border-color .22s ease, box-shadow .22s var(--ease-out), transform .22s var(--ease-out); }
@media (hover:hover) and (pointer:fine) {
  a.stat-chip:hover { border-color:rgba(47,128,196,.48); box-shadow:var(--shadow-card-hover); transform:translateY(-4px); }
}

/* Resource / link rows */
.res-list { display:grid; gap:14px; margin-top:24px; }
.res-row { display:flex; gap:18px; align-items:flex-start; border:1px solid #ECE7E2; border-radius:10px; padding:20px 22px; background:#fff; }
.res-row .glyph { width:42px; height:42px; flex:0 0 auto; background:#EAF0F6; border-radius:8px; display:flex; align-items:center; justify-content:center; color:#1C3D5A; font-weight:700; font-size:17px; }
.res-row .t { font-weight:700; font-size:15.5px; color:#1a1416; margin-bottom:3px; }
.res-row .d { font-size:13.5px; color:#514B49; line-height:1.5; }

/* Callout box */
.callout { background:#fff; border:1px solid #ECE7E2; border-left:4px solid #1C3D5A; border-radius:8px; padding:22px 26px; margin-top:22px; font-size:14.5px; line-height:1.65; color:#4a4245; }

/* MOScholars growth, reach and reporting-gap visual. */
.mos-viz { margin:32px 0 0; overflow:hidden; background:#fff; border:1px solid var(--border-card); border-radius:var(--radius-card); box-shadow:var(--shadow-card-soft); }
.mos-viz-heading { padding:28px 30px 24px; border-bottom:1px solid var(--color-border); }
.mos-viz-heading .kicker { margin-bottom:8px; }
.mos-viz-heading h3 { margin:0; max-width:850px; font-family:var(--font-editorial); font-size:clamp(1.55rem,2.4vw,2.05rem); font-weight:600; line-height:1.15; color:var(--color-primary); text-wrap:balance; }
.mos-viz-panels { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
.mos-viz-panel { min-width:0; padding:26px 25px 24px; }
.mos-viz-panel + .mos-viz-panel { border-left:1px solid var(--color-border); }
.mos-viz-panel h4 { margin:0; font-family:var(--font-editorial); font-size:20px; font-weight:600; line-height:1.2; color:var(--color-text); }
.mos-viz-deck { min-height:40px; margin:7px 0 18px; font-size:12.5px; line-height:1.5; color:var(--color-text-soft); }
.mos-growth-chart { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; align-items:end; }
.mos-growth-column { display:grid; grid-template-rows:auto 145px auto; gap:7px; min-width:0; text-align:center; }
.mos-growth-value { font-size:11.5px; font-weight:700; color:var(--color-primary); font-variant-numeric:tabular-nums; }
.mos-growth-track { display:flex; align-items:flex-end; justify-content:center; min-width:0; border-bottom:1px solid #C9D4DD; background:linear-gradient(to top,rgba(28,61,90,.055),rgba(28,61,90,0)); }
.mos-growth-bar { width:min(38px,72%); min-height:4px; background:var(--color-link); border-radius:4px 4px 0 0; }
.mos-growth-bar--1 { height:21.3%; opacity:.58; }
.mos-growth-bar--2 { height:31.1%; opacity:.7; }
.mos-growth-bar--3 { height:42%; opacity:.82; }
.mos-growth-bar--4 { height:100%; background:var(--color-primary); }
.mos-growth-year { font-size:10.5px; font-weight:650; line-height:1.2; color:var(--color-text-muted); white-space:nowrap; }
.mos-meter-list { display:grid; gap:25px; padding-top:8px; }
.mos-meter-row { display:grid; gap:8px; }
.mos-meter-label,.mos-money-label { display:flex; align-items:baseline; justify-content:space-between; gap:12px; font-size:12px; color:var(--color-text-muted); }
.mos-meter-label strong,.mos-money-label strong { color:var(--color-primary); font-size:13px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.mos-meter-track,.mos-money-track { height:18px; overflow:hidden; border-radius:4px; background:#E9EEF2; }
.mos-meter-fill,.mos-money-bar { height:100%; min-width:3px; border-radius:4px; }
.mos-meter-fill { background:var(--color-primary); }
.mos-meter-fill--75 { width:14.5%; opacity:.58; }
.mos-meter-fill--242 { width:46.9%; }
.mos-meter-note { font-size:11.5px; color:var(--color-text-soft); }
.mos-viz-caution { margin:20px 0 0; padding-top:15px; border-top:1px solid var(--color-border); font-size:11.5px; line-height:1.5; color:var(--color-text-soft); }
.mos-viz-link { display:inline-block; margin-top:12px; font-size:12px; }
.mos-money-chart { display:grid; gap:22px; padding-top:8px; }
.mos-money-row { display:grid; gap:8px; }
.mos-money-bar { background:var(--color-primary); }
.mos-money-bar--awards { width:96.6%; }
.mos-money-bar--eao { width:95.7%; background:#6F8CA5; }
.mos-money-bar--schools { width:85.2%; background:var(--color-accent); }
.mos-gap-note { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-top:21px; padding:13px 14px; border-left:4px solid var(--color-accent); border-radius:5px; background:#FBF6ED; }
.mos-gap-note strong { color:#81540F; font-size:13px; line-height:1.35; }
.mos-gap-note span { max-width:135px; text-align:right; font-size:10.5px; line-height:1.4; color:var(--color-text-soft); }
.mos-viz figcaption { padding:15px 30px 17px; border-top:1px solid var(--color-border); font-size:11.5px; line-height:1.5; color:var(--color-text-soft); }
.mos-districts { margin-top:26px; padding:28px 30px 25px; background:#fff; border:1px solid var(--border-card); border-radius:var(--radius-card); box-shadow:var(--shadow-card-soft); }
.mos-districts h3 { margin:0; font-family:var(--font-editorial); font-size:clamp(1.5rem,2.2vw,1.95rem); font-weight:600; line-height:1.18; color:var(--color-primary); }
.mos-districts > p { max-width:900px; margin:10px 0 0; font-size:13.5px; line-height:1.65; color:var(--color-text-muted); }
.mos-district-controls { max-width:620px; margin-top:22px; }
.mos-district-controls label { display:block; margin-bottom:7px; font-size:12.5px; font-weight:700; color:var(--color-text-body); }
.mos-district-controls input { width:100%; min-height:45px; padding:10px 12px; border:1px solid #AABAC8; border-radius:8px; background:#fff; color:var(--color-text); font:inherit; font-size:14px; }
.mos-district-controls input:focus-visible { outline:3px solid rgba(47,128,196,.25); outline-offset:2px; border-color:var(--color-link); }
.mos-district-table-wrap { margin-top:22px; overflow-x:auto; border:1px solid var(--color-border); border-radius:10px; }
.mos-district-table { width:100%; border-collapse:collapse; background:#fff; font-size:13px; }
.mos-district-table th,.mos-district-table td { padding:11px 14px; border-bottom:1px solid #EEEAE6; text-align:left; line-height:1.4; }
.mos-district-table thead th { background:#F3F7FA; color:var(--color-primary); font-size:11.5px; }
.mos-district-table tbody th { font-weight:600; color:var(--color-text-body); }
.mos-district-table tbody tr:last-child th,.mos-district-table tbody tr:last-child td { border-bottom:0; }
.mos-district-table .mos-district-number { width:120px; text-align:right; color:var(--color-primary); font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap; }
.mos-district-table .mos-district-empty { padding:22px 14px; text-align:center; color:var(--color-text-soft); }
.mos-district-pager { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:14px; }
.mos-district-pager > div:first-child { font-size:12px; color:var(--color-text-soft); }
.mos-district-buttons { display:flex; gap:8px; }
.mos-district-buttons button { min-height:36px; padding:7px 12px; border:1px solid #C5D0DA; border-radius:7px; background:#fff; color:var(--color-primary); font:inherit; font-size:12px; font-weight:700; cursor:pointer; }
.mos-district-buttons button:hover:not(:disabled) { border-color:var(--color-link); color:var(--color-link-ink); }
.mos-district-buttons button:focus-visible { outline:3px solid rgba(47,128,196,.25); outline-offset:2px; }
.mos-district-buttons button:disabled { opacity:.42; cursor:default; }
.mos-districts .mos-district-note { max-width:none; margin-top:17px; padding-top:15px; border-top:1px solid var(--color-border); font-size:11.5px; line-height:1.55; color:var(--color-text-soft); }
.mos-payment-split { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr); gap:20px; margin-top:24px; }
.mos-eao-panel,.mos-ledger-panel { min-width:0; padding:22px; border:1px solid var(--color-border); border-radius:10px; background:#F8FAFB; }
.mos-payments h4 { margin:0; font-family:var(--font-editorial); font-size:20px; font-weight:600; line-height:1.22; color:var(--color-primary); }
.mos-eao-panel > p,.mos-ledger-panel > p,.mos-school-directory > p { margin:8px 0 0; font-size:12.5px; line-height:1.58; color:var(--color-text-muted); }
.mos-eao-chart { display:grid; gap:14px; margin-top:20px; }
.mos-eao-row { display:grid; gap:6px; }
.mos-eao-label { display:flex; align-items:baseline; justify-content:space-between; gap:14px; font-size:12px; line-height:1.35; color:var(--color-text-body); }
.mos-eao-name { max-width:78%; font-weight:650; text-decoration-thickness:1px; text-underline-offset:2px; }
.mos-eao-label strong { color:var(--color-primary); font-size:12px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.mos-eao-track { height:13px; overflow:hidden; border-radius:999px; background:#E4EBF0; }
.mos-eao-bar { height:100%; min-width:3px; border-radius:999px; background:linear-gradient(90deg,var(--color-primary),#3D7198); }
.mos-eao-cap { display:flex; align-items:baseline; justify-content:space-between; gap:12px; font-size:11px; line-height:1.4; color:var(--color-text-soft); }
.mos-eao-cap strong { color:var(--color-text-muted); font-size:11px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.mos-admin-note { margin-top:20px; }
.mos-ledger-list { display:grid; gap:11px; margin-top:18px; }
.mos-ledger-list > div { display:grid; grid-template-columns:112px 1fr; gap:12px; align-items:baseline; padding-bottom:11px; border-bottom:1px solid var(--color-border); }
.mos-ledger-list > div:last-child { padding-bottom:0; border-bottom:0; }
.mos-ledger-list strong { color:var(--color-primary); font-size:15px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.mos-ledger-list span { font-size:11.5px; line-height:1.45; color:var(--color-text-muted); }
.mos-path-list > div { grid-template-columns:138px 1fr; }
.mos-path-list strong { white-space:normal; }
.mos-school-directory { margin-top:27px; padding-top:25px; border-top:1px solid var(--color-border); }
@media (max-width:960px) {
  .mos-viz-panels { grid-template-columns:1fr; }
  .mos-viz-panel + .mos-viz-panel { border-left:0; border-top:1px solid var(--color-border); }
  .mos-viz-deck { min-height:0; }
  .mos-growth-column { grid-template-rows:auto 125px auto; }
  .mos-payment-split { grid-template-columns:1fr; }
}
@media (max-width:600px) {
  .mos-viz-heading { padding:23px 20px 20px; }
  .mos-viz-panel { padding:23px 20px 22px; }
  .mos-growth-chart { gap:6px; }
  .mos-growth-value { font-size:10.5px; }
  .mos-growth-year { font-size:9.5px; }
  .mos-gap-note { display:block; }
  .mos-gap-note span { display:block; max-width:none; margin-top:4px; text-align:left; }
  .mos-viz figcaption { padding:14px 20px 16px; }
  .mos-districts { padding:23px 20px 21px; }
  .mos-district-table th,.mos-district-table td { padding:10px 11px; }
  .mos-district-table .mos-district-number { width:auto; }
  .mos-district-pager { align-items:flex-start; flex-direction:column; }
  .mos-eao-panel,.mos-ledger-panel { padding:19px 16px; }
  .mos-eao-label { align-items:flex-start; }
  .mos-eao-cap { align-items:flex-start; }
  .mos-ledger-list > div { grid-template-columns:1fr; gap:3px; }
}

/* Footer */
footer { background:var(--color-text); color:#D9E4ED; padding:36px var(--page-gutter); display:flex; align-items:center; justify-content:space-between; font-size:13px; flex-wrap:wrap; gap:14px; }
footer a { color:#AEC2D6; }

/* Contact band */
.contact-band { padding:var(--page-gutter); background:var(--color-sand); display:flex; align-items:center; justify-content:space-between; gap:var(--space-xl); flex-wrap:wrap; }

.grid-2 { display:grid; grid-template-columns:repeat(2,1fr); gap:18px; }
.grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
.card-grid { margin-top:32px; }

/* Homepage presentation classes replace one-off inline styling. */
.home-hero { padding-top:clamp(44px,5vw,64px) !important; padding-bottom:clamp(52px,6vw,76px) !important; }
.home-eyebrow { font-size:12.5px; font-weight:700; letter-spacing:.16em; color:var(--color-link-ink); margin-bottom:18px; }
.home-title { font-size:46px; line-height:1.06; letter-spacing:-.02em; margin:0 0 16px; }
.hero-summary { color:#40393b; margin:0 0 26px; max-width:680px; }
.hero-actions { display:flex; gap:14px; flex-wrap:wrap; margin-top:26px; }
.button-primary,
.button-secondary { display:inline-flex; align-items:center; justify-content:center; font-weight:650; font-size:15px; padding:13px 24px; border-radius:8px; transition:transform .18s var(--ease-out), box-shadow .18s var(--ease-out), background-color .18s ease, border-color .18s ease; }
.button-primary { background:var(--color-primary); color:#fff; box-shadow:0 6px 16px rgba(28,61,90,.18); }
.button-secondary { border:1px solid #C8D3DD; color:var(--color-text); background:rgba(255,255,255,.72); }
@media (hover:hover) and (pointer:fine) {
  .button-primary:hover { color:#fff !important; background:#244D6D; transform:translateY(-2px); box-shadow:0 10px 24px rgba(28,61,90,.24); }
  .button-secondary:hover { color:var(--color-primary) !important; border-color:var(--color-link); background:#fff; transform:translateY(-2px); }
}

/* Responsive */
@media (max-width: 960px) {
  .nav-links { display:none !important; }
  .grid-2, .grid-3, .hero-grid { grid-template-columns:1fr !important; display:grid !important; }
  .hero-media { min-height:300px !important; }
  .masthead, .section, .means, .page-hero, .contact-band, footer { padding-left:var(--page-gutter-tablet) !important; padding-right:var(--page-gutter-tablet) !important; }
  h1.hero { font-size:40px !important; }
  .page-hero h1 { font-size:34px; }
  .stat-band { grid-template-columns:1fr !important; }
}
@media (max-width:600px) {
  :root { --section-gap:3rem; }
  .theme-card { padding:25px 23px 23px; }
  .stat-chip { padding:26px 23px 24px; }
  .button-primary, .button-secondary { width:100%; }
}
@media (prefers-reduced-motion:reduce) {
  html:focus-within { scroll-behavior:auto; }
  .card, .theme-card::before, .theme-card .tc-go, a.stat-chip, .button-primary, .button-secondary { transition:none !important; transform:none !important; }
}

/* Home-page "find your district" search */
.hp-find { margin:34px 0 0; max-width:640px; }
.hp-find-lab { font-size:12px; font-weight:700; letter-spacing:0.14em; color:var(--color-accent-ink); margin-bottom:10px; }
.hp-find-sub { font-size:13.5px; line-height:1.55; color:#514B49; margin-top:10px; }
.app-promo { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:18px; margin-top:18px; padding:16px 18px; border:1px solid #D9E3EC; border-radius:10px; background:#F3F7FA; }
.app-promo-copy { display:flex; flex:1 1 260px; flex-direction:column; gap:3px; min-width:240px; color:var(--color-text); }
.app-promo-copy strong { font-size:14.5px; color:var(--color-primary); }
.app-promo-copy span { font-size:13.5px; line-height:1.5; color:var(--color-text-muted); }
.app-promo-actions { display:flex; flex:1 1 330px; min-width:0; align-items:stretch; flex-direction:column; gap:8px; }
.app-promo-link { width:100%; box-sizing:border-box; padding:11px 16px; font-size:13.5px; text-align:center; white-space:normal; }
.app-help-link { font-size:12.5px; text-align:center; }
.hp-search { position:relative; }
.hp-input { width:100%; box-sizing:border-box; font-family:'Libre Franklin',sans-serif; font-size:17px;
  padding:16px 18px; border:2px solid #D9D2CB; border-radius:10px; background:#fff; color:#1a1416; }
.hp-input:focus { outline:none; border-color:#2F80C4; box-shadow:0 0 0 4px rgba(47,128,196,0.12); }
.hp-menu { position:absolute; z-index:50; top:100%; left:0; right:0; margin-top:6px; background:#fff;
  border:1px solid #E5DFD8; border-radius:10px; box-shadow:0 12px 34px rgba(0,0,0,0.13);
  max-height:320px; overflow-y:auto; display:none; text-align:left; }
.hp-menu.open { display:block; }
.hp-opt { padding:11px 16px; font-size:15px; color:var(--color-text); cursor:pointer; border-bottom:1px solid #F3EFEA; }
.hp-opt:last-child { border-bottom:none; }
.hp-opt:hover, .hp-opt.sel { background:#EFF5FA; }
.hp-opt .hp-sub { display:block; font-size:12.5px; color:#514B49; margin-top:2px; }
.hp-none { padding:14px 16px; font-size:14px; color:#514B49; }
@media (max-width:600px) {
  .app-promo { align-items:stretch; flex-direction:column; gap:13px; }
  .app-promo-copy, .app-promo-actions { flex:0 0 auto; min-width:0; }
  .app-promo-actions { align-items:stretch; }
  .app-promo-link { width:100%; box-sizing:border-box; }
}

/* Mobile-app installation guide */
.mobile-guide-hero { padding-bottom:44px; }
.mobile-guide-hero .lede { max-width:820px; }
.mobile-guide-actions { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-top:28px; }
.mobile-guide-actions .button-primary,
.mobile-guide-actions .button-secondary { min-width:180px; }
.mobile-guide-note { display:grid; grid-template-columns:minmax(0,1fr) minmax(220px,300px); gap:32px; align-items:center; margin-top:34px; padding:28px 30px; border:1px solid var(--color-border); border-radius:var(--radius-card); background:var(--color-surface); box-shadow:var(--shadow-card-soft); }
.mobile-guide-note h2 { margin:0 0 8px; font-size:clamp(1.55rem,2.5vw,2rem); }
.mobile-guide-note p { margin:0; color:var(--color-text-muted); line-height:1.65; }
.mobile-guide-points { display:grid; gap:12px; }
.mobile-guide-point { padding:13px 15px; border-left:4px solid var(--color-accent); border-radius:0 8px 8px 0; background:#F7F4F1; font-size:14px; line-height:1.45; color:var(--color-text-body); }
.install-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin-top:28px; }
.install-card { padding:30px; border:1px solid var(--border-card); border-radius:var(--radius-card); background:var(--color-surface); box-shadow:var(--shadow-card-soft); }
.install-card h3 { margin:0 0 8px; font-size:1.35rem; color:var(--color-primary); }
.install-card-intro { margin:0 0 18px; color:var(--color-text-muted); line-height:1.55; }
.install-steps { margin:0; padding-left:1.45rem; color:var(--color-text-body); }
.install-steps li { padding-left:5px; margin:0 0 12px; line-height:1.58; }
.install-steps li::marker { color:var(--color-accent-ink); font-weight:700; }
.install-support { margin:18px 0 0; padding-top:16px; border-top:1px solid var(--color-border); font-size:13.5px; }
.qr-panel { display:grid; grid-template-columns:190px minmax(0,1fr); gap:30px; align-items:center; margin-top:26px; padding:28px 30px; border:1px solid var(--color-border); border-radius:var(--radius-card); background:#F3F7FA; }
.qr-image { display:block; width:190px; height:190px; max-width:100%; border:8px solid #fff; border-radius:10px; box-shadow:var(--shadow-card-soft); }
.qr-copy h3 { margin:0 0 8px; font-size:1.45rem; color:var(--color-primary); }
.qr-copy p { margin:0 0 14px; line-height:1.6; color:var(--color-text-muted); }
.mobile-guide-fineprint { margin-top:22px; font-size:13.5px; line-height:1.6; color:var(--color-text-soft); }
@media (max-width:760px) {
  .mobile-guide-note,
  .install-grid,
  .qr-panel { grid-template-columns:1fr; }
  .mobile-guide-note { padding:24px; }
  .install-card { padding:24px; }
  .qr-panel { justify-items:center; text-align:center; padding:24px; }
  .mobile-guide-actions { align-items:stretch; flex-direction:column; }
  .mobile-guide-actions .button-primary,
  .mobile-guide-actions .button-secondary { width:100%; }
}

/* --- data table (levy elections, funding.html) --- */
.datatable { width:100%; border-collapse:collapse; margin-top:22px; font-size:14.5px; background:#fff; border:1px solid #ECE7E2; border-radius:8px; overflow:hidden; }
.datatable-scroll { max-width:100%; overflow-x:auto; margin-top:22px; border-radius:8px; -webkit-overflow-scrolling:touch; }
.datatable-scroll .datatable { min-width:470px; margin-top:0; }
.datatable thead th { background:#F7F4F1; text-align:left; padding:12px 16px; font-size:12.5px; letter-spacing:.04em; text-transform:uppercase; color:#6b6560; font-weight:600; border-bottom:1px solid #ECE7E2; }
.datatable td { padding:11px 16px; border-bottom:1px solid #F3EFEA; color:#4a4245; }
.datatable tbody tr:last-child td { border-bottom:none; }
.datatable tbody tr:hover { background:#FAF8F6; }
.datatable td em { color:#B23A48; font-style:normal; font-weight:600; }
@media (max-width:640px){ .datatable { font-size:13px; } .datatable td, .datatable thead th { padding:9px 10px; } }

/* ── Map posters: click-to-load Tableau (see maps.js) ───────────────────────── */
.viz-poster { position:relative; display:block; width:100%; cursor:pointer; outline:none; }
.viz-poster-img { display:block; width:100%; height:auto; }
.viz-poster::after {
  content:''; position:absolute; inset:0; background:rgba(28,61,90,0.05);
  transition:background .18s ease; pointer-events:none;
}
.viz-poster:hover::after, .viz-poster:focus-visible::after { background:rgba(28,61,90,0.11); }
.viz-poster:focus-visible { box-shadow:inset 0 0 0 3px #C6851E; }

.viz-load-btn {
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:3;
  display:inline-flex; align-items:center; gap:9px;
  background:#1C3D5A; color:#fff; border:0; border-radius:26px;
  font-family:inherit; font-size:14.5px; font-weight:600; letter-spacing:0.01em;
  padding:13px 26px; cursor:pointer; white-space:nowrap;
  box-shadow:0 6px 22px rgba(0,0,0,0.28); transition:background .16s ease, transform .16s ease;
}
.viz-load-btn:hover { background:#C6851E; transform:translate(-50%,-50%) scale(1.04); }
.viz-load-btn:focus-visible { outline:3px solid #C6851E; outline-offset:3px; }
.vlb-ico { font-size:11px; }

.viz-fallback {
  position:absolute; right:12px; bottom:12px; z-index:3;
  background:rgba(255,255,255,0.94); color:#1C3D5A; text-decoration:none;
  font-size:12px; font-weight:600; padding:6px 12px; border-radius:16px;
  border:1px solid #cdd6de; opacity:0; transition:opacity .18s ease;
}
.viz-poster:hover .viz-fallback { opacity:1; }
.viz-poster.is-slow .viz-fallback { opacity:1; border-color:#C6851E; color:#8a5a10; }

.viz-poster.is-loading .viz-load-btn { display:none; }
.viz-poster.is-loading .viz-poster-img { filter:grayscale(0.35) opacity(0.55); }
.viz-spin {
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:4;
  display:inline-flex; align-items:center; gap:10px;
  background:rgba(255,255,255,0.96); color:#1C3D5A; border-radius:24px;
  font-size:13.5px; font-weight:600; padding:11px 22px;
  box-shadow:0 4px 18px rgba(0,0,0,0.16);
}
.viz-spin-dot {
  width:11px; height:11px; border-radius:50%; border:2px solid #C6851E;
  border-top-color:transparent; animation:vizspin .7s linear infinite;
}
@keyframes vizspin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .viz-spin-dot { animation:none; } }

/* The shield and controls belong to a live map only. */
.viz-embed.has-poster .viz-shield,
.viz-embed.has-poster .viz-tools { display:none; }

/* ── Expand a live map to full window (maps.js openModal) ────────────────────
   Tableau draws sheet titles and legends at a fixed pixel size, so inside the
   500px editorial column the map canvas is squeezed to roughly 200px tall and
   individual districts become too small to click. Keep Clear selection, Reset
   map and Expand together above the map, always visible and outside its canvas. */
.viz-tools { position:relative; z-index:7; flex:0 0 auto; padding:12px; background:#FCFAF8; border-bottom:1px solid #ECE7E2; }
.viz-tool-actions { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.viz-tool-actions button {
  display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:44px;
  border:1px solid #cdd6de; border-radius:8px; padding:9px 12px;
  background:#fff; color:#1C3D5A; font:600 13px/1.2 var(--font-ui); cursor:pointer;
}
.viz-tool-actions .viz-clear { background:#1C3D5A; color:#fff; border-color:#1C3D5A; }
.viz-tool-actions button:hover:not(:disabled) { background:#EDF2F6; color:#1C3D5A; }
.viz-tool-actions button:focus-visible { outline:3px solid #C6851E; outline-offset:2px; }
.viz-tool-actions button:disabled { opacity:.55; cursor:wait; }
.viz-selection-help { margin-top:7px; font-size:12px; line-height:1.45; color:#514B49; }
.vex-ico { font-size:13px; line-height:1; }

body.viz-modal-open { overflow:hidden; }
.viz-modal {
  position:fixed; inset:0; z-index:9000; background:rgba(20,16,14,0.72);
  display:flex; align-items:center; justify-content:center; padding:2vh 2vw;
}
.viz-modal-card {
  width:min(1500px,96vw); height:min(960px,94vh);
  display:flex; flex-direction:column; overflow:hidden;
  background:#fff; border-radius:14px; box-shadow:0 24px 70px rgba(0,0,0,0.45);
}
.viz-modal-bar {
  display:flex; align-items:center; gap:14px;
  padding:12px 14px 12px 18px; border-bottom:1px solid #ECE7E2; background:#FCFAF8;
}
.viz-modal-title {
  flex:1 1 auto; min-width:0; font-family:var(--font-editorial);
  font-size:16px; font-weight:600; line-height:1.3; color:#1C3D5A;
}
.viz-modal-hint { flex:0 0 auto; font-size:12px; color:#514B49; white-space:nowrap; }
.viz-modal-close {
  flex:0 0 auto; width:32px; height:32px; border-radius:50%;
  background:#F7F4F1; border:1px solid #cdd6de; color:#1C3D5A;
  font-family:inherit; font-size:13px; line-height:1; cursor:pointer;
}
.viz-modal-close:hover { background:#1C3D5A; color:#fff; border-color:#1C3D5A; }
/* min-height:0 lets the flex child actually shrink, so clientHeight is the real
   box maps.js measures — without it the body reports its content height. */
.viz-modal-body {
  flex:1 1 auto; min-height:0; position:relative;
  display:flex; align-items:center; justify-content:center; background:#fff;
}
.viz-modal-body tableau-viz { display:block; }
.viz-modal-body .viz-spin { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); }
.viz-modal-body .viz-spin a { color:#1C3D5A; }

@media (max-width: 720px) {
  .viz-modal { padding:0; }
  .viz-modal-card { width:100vw; height:100vh; border-radius:0; }
  .viz-modal-hint { display:none; }
  .viz-tools { padding:10px; }
  .viz-tool-actions { gap:6px; }
  .viz-tool-actions button { padding:8px 10px; font-size:12px; }
}

@media (max-width: 720px) {
  /* On a phone, keep both choices visible below the preview instead of
     floating two small controls over the map. Readers can either interact
     here or use Tableau's roomier full-screen view. */
  .viz-poster { padding-bottom:54px; background:#F7F4F1; }
  .viz-poster::after { bottom:54px; }
  .viz-load-btn {
    top:auto; left:12px; bottom:9px; transform:none;
    font-size:12.5px; padding:9px 13px; box-shadow:none;
  }
  .viz-load-btn:hover { transform:none; }
  .viz-fallback {
    right:12px; bottom:10px; opacity:1; font-size:11px;
    padding:7px 10px; background:#fff;
  }
  .viz-spin { width:max-content; max-width:calc(100% - 28px); }
}

@media (max-width: 360px) {
  .viz-load-btn { left:8px; padding-inline:10px; }
  .viz-fallback { right:8px; padding-inline:8px; }
  .vlb-ico { display:none; }
}

/* ── Data tables (where a map would mislead) ────────────────────────────────── */
.tbl-wrap { margin-top:22px; overflow-x:auto; border:1px solid #ECE7E2; border-radius:12px; background:#fff; box-shadow:0 8px 24px rgba(0,0,0,0.04); }
table.dtable { border-collapse:collapse; width:100%; min-width:640px; }
table.dtable th, table.dtable td {
  padding:12px 16px; text-align:right; font-size:13.5px;
  font-variant-numeric:tabular-nums; color:#3a3335; border-bottom:1px solid #F1EEE9; white-space:nowrap;
}
table.dtable th {
  font-size:12px; font-weight:700; letter-spacing:0.05em; text-transform:uppercase;
  color:#514B49; background:#FAF8F5; border-bottom:2px solid #ECE7E2;
}
table.dtable th:first-child, table.dtable td:first-child { text-align:left; font-weight:600; }
table.dtable tbody tr:hover { background:#FAF8F5; }
table.dtable tr.tbl-total td { border-top:2px solid #ECE7E2; border-bottom:0; color:#1C3D5A; font-weight:600; background:#FCFBF9; }

/* Achievement: official accreditation status plus site-authored context. */
.accreditation-section {
  background:linear-gradient(180deg,#F3F7FA 0%,#FBFAF8 100%);
  border-top:1px solid #E2EAF0;
  border-bottom:1px solid #E2EAF0;
}
.accreditation-status {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:18px;
  margin:28px 0 0;
}
.accreditation-status__card {
  min-width:0;
  padding:22px 20px 20px;
  text-align:center;
  background:rgba(255,255,255,.94);
  border:1px solid var(--border-card);
  border-top:4px solid #9DB2C4;
  border-radius:var(--radius-card);
  box-shadow:var(--shadow-card-soft);
}
.accreditation-status__card--focus { border-top-color:var(--color-accent); }
.accreditation-status__number {
  font-family:var(--font-ui);
  font-size:clamp(2.15rem,4vw,3.25rem);
  font-weight:800;
  line-height:1;
  letter-spacing:-.04em;
  color:var(--color-primary);
  font-variant-numeric:tabular-nums;
}
.accreditation-status__label {
  margin-top:9px;
  font-size:12px;
  font-weight:700;
  line-height:1.35;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--color-text-muted);
}
.accreditation-status__source { margin-top:12px; }
.accreditation-explainers { margin-top:26px; }
table.dtable.dtable--accreditation { min-width:940px; }
table.dtable.dtable--accreditation-context { min-width:760px; }
table.dtable.dtable--accreditation td:first-child,
table.dtable.dtable--accreditation-context td:first-child { color:var(--color-primary); }
@media (max-width:600px) {
  .accreditation-status { grid-template-columns:1fr; gap:8px; }
  .accreditation-status__card {
    display:flex;
    align-items:center;
    gap:14px;
    padding:14px 16px;
    text-align:left;
    border-radius:10px;
  }
  .accreditation-status__number { flex:0 0 52px; text-align:center; }
  .accreditation-status__label { margin-top:0; overflow-wrap:anywhere; }
  .accreditation-status__label { font-size:9.5px; letter-spacing:.025em; }
}

/* Narrative reference tables should read like prose, not spreadsheets. */
table.dtable.dtable--narrative { min-width:0; table-layout:fixed; }
table.dtable.dtable--narrative th,
table.dtable.dtable--narrative td {
  text-align:left; vertical-align:top; white-space:normal; line-height:1.5;
  overflow-wrap:anywhere;
}
table.dtable.dtable--narrative th:first-child,
table.dtable.dtable--narrative td:first-child {
  width:112px; white-space:nowrap;
}
table.dtable.dtable--counts th:nth-child(3),
table.dtable.dtable--counts td:nth-child(3) { width:27%; }
table.dtable.dtable--history th:first-child,
table.dtable.dtable--history td:first-child { width:128px; }

@media (max-width:640px) {
  table.dtable.dtable--narrative th,
  table.dtable.dtable--narrative td { padding:10px 12px; font-size:12.5px; }
  table.dtable.dtable--narrative th:first-child,
  table.dtable.dtable--narrative td:first-child { width:78px; white-space:normal; }
  table.dtable.dtable--counts th:nth-child(3),
  table.dtable.dtable--counts td:nth-child(3) { width:29%; }
  table.dtable.dtable--history th:first-child,
  table.dtable.dtable--history td:first-child { width:88px; }
}

/* ===== Homepage hero grid + SVG district map (2026-07-13 redesign) ===== */
.hero-grid { display:grid; grid-template-columns: minmax(0,7fr) minmax(0,6fr); gap:44px; align-items:start; }
.hero-stats { display:flex; gap:26px; flex-wrap:wrap; margin-top:22px; }
.hero-stats .hs { font-size:13px; color:#514B49; }
.hero-stats .hs b { display:block; font-family:'Newsreader',serif; font-weight:600; font-size:24px; color:#1C3D5A; line-height:1.1; }
.hero-map-card { background:#fff; border:1px solid #ECE7E2; border-radius:14px; box-shadow:0 10px 30px rgba(0,0,0,0.06); padding:18px 18px 14px; }
.hero-map-card .hm-head { font-size:11px; font-weight:700; letter-spacing:0.12em; color:var(--color-accent-ink); margin-bottom:10px; }
.hero-map-slot { min-height:320px; }
.hero-map-svg { width:100%; height:auto; display:block; }
.hero-map-svg path { stroke:#FBFAF8; stroke-width:0.5; cursor:pointer; transition:opacity .12s ease; }
.hero-map-svg path:hover { stroke:#1a1416; stroke-width:1.1; opacity:0.88; }
.hm-legend { display:flex; align-items:center; gap:10px; margin-top:12px; font-size:11.5px; color:#514B49; flex-wrap:wrap; }
.hm-legend .hm-bar { flex:0 0 110px; height:10px; border-radius:5px; background:linear-gradient(90deg,#B4552D,#F7F5F2,#1C3D5A); border:1px solid #ECE7E2; }
.hm-legend .hm-note { margin-left:auto; color:#514B49; }
.hm-a11y-note { margin:10px 0 0; padding-top:10px; border-top:1px solid #F1EEE9; font-size:11.5px;
  line-height:1.5; color:#514B49; }
.step-card { position:relative; padding-top:58px !important; }
.step-card .sc-num { position:absolute; top:18px; left:22px; width:34px; height:34px; border-radius:50%; background:#1C3D5A; color:#fff; font-family:'Newsreader',serif; font-weight:600; font-size:19px; display:flex; align-items:center; justify-content:center; }
@media (max-width: 900px) {
  .hero-grid { grid-template-columns: 1fr; gap:30px; }
  /* Was order:-1 (map first) — an accessibility review (2026-07-18) flagged that this buries
     the purpose statement and district search below an unexplained map on mobile. DOM order
     already puts hero-copy (purpose + search) first and hero-map-card second, so no "order"
     override is needed — just let it stack naturally: hero image -> purpose -> search -> map. */
}

/* ===== Homepage editorial masthead =====
   One continuous color field keeps this brand introduction from competing with the first
   real district map below it. Live HTML text replaces the former illustrated banner. */
.home-masthead {
  position:relative; isolation:isolate; display:grid;
  grid-template-columns:minmax(0,1fr) clamp(420px,38vw,720px);
  min-height:360px; overflow:hidden; color:#fff; background:#183B56;
  border-bottom:6px solid #C6851E;
}
.home-masthead:before {
  content:""; position:absolute; z-index:-1; width:520px; height:520px;
  right:-185px; top:-310px; border:1px solid rgba(220,235,245,.2);
  border-radius:50%; background:rgba(185,213,229,.08);
}
.home-masthead:after {
  content:""; position:absolute; z-index:-1; width:250px; height:250px;
  right:160px; bottom:-205px; border-radius:50%; background:rgba(233,180,76,.12);
}
.home-masthead-copy {
  position:relative; z-index:2; align-self:center;
  max-width:1060px; padding:clamp(48px,5vw,72px) clamp(40px,5.5vw,88px) clamp(46px,4.5vw,68px);
}
.home-masthead-kicker {
  margin-bottom:22px; color:#F0BD55; font-size:12.5px; font-weight:700;
  letter-spacing:.19em; line-height:1.35;
}
.home-masthead-title {
  max-width:940px; margin:0; color:#fff; font-size:clamp(54px,5vw,78px);
  font-weight:500; letter-spacing:-.035em; line-height:.98; text-wrap:balance;
}
.home-masthead-rule { width:64px; height:5px; margin:26px 0 25px; background:#E9B44C; }
.home-masthead-mission {
  margin:0; color:#E6F0F5; font-family:var(--font-sans); font-size:clamp(18px,1.45vw,22px);
  font-weight:500; line-height:1.55;
}
.home-masthead-meta {
  margin-top:29px; color:#BFD3DF; font-size:11.5px; font-weight:700;
  letter-spacing:.16em; line-height:1.45;
}
.home-masthead-visual {
  position:relative; min-height:360px; display:grid;
  grid-template-columns:minmax(0,1fr) auto; align-items:center;
  padding:32px clamp(40px,3.5vw,70px) 32px 0;
}
.home-masthead-map {
  position:relative; z-index:2; width:min(100%,430px); justify-self:start;
  margin-left:clamp(-50px,-2.4vw,-22px);
}
.home-masthead-map .hero-map-svg { width:100%; height:auto; display:block; }
.home-masthead-map .hero-map-svg path {
  stroke:rgba(255,255,255,.72); stroke-width:.62; cursor:default;
  pointer-events:none; transition:none;
}
.home-masthead-count {
  position:relative; z-index:3; min-width:clamp(150px,13vw,230px);
  margin-left:clamp(-62px,-3.5vw,-34px); display:flex; flex-direction:column; align-items:flex-end;
  color:#C7DBE6; opacity:1;
}
.home-masthead-count strong {
  font-family:var(--font-serif); font-size:clamp(92px,9vw,136px); font-weight:500;
  letter-spacing:-.055em; line-height:.75;
}
.home-masthead-count span {
  margin-top:18px; font-size:10px; font-weight:700; letter-spacing:.24em;
  line-height:1.7; text-align:right;
}

@media (max-width:900px) {
  .home-masthead { grid-template-columns:minmax(0,1fr) minmax(270px,34vw); min-height:350px; }
  .home-masthead-copy { padding-left:var(--page-gutter-tablet); padding-right:34px; }
  .home-masthead-title { font-size:clamp(46px,6vw,62px); }
  .home-masthead-visual { min-height:350px; padding-right:24px; }
  .home-masthead-map { margin-left:-22px; }
  .home-masthead-count { min-width:112px; margin-left:-34px; }
  .home-masthead-count strong { font-size:86px; }
}
@media (max-width:700px) {
  .home-masthead { grid-template-columns:1fr; }
  .home-masthead-copy { padding:38px var(--page-gutter-phone) 36px; }
  .home-masthead-kicker { margin-bottom:16px; font-size:11px; letter-spacing:.15em; }
  .home-masthead-title { font-size:clamp(42px,12vw,58px); line-height:1; }
  .home-masthead-rule { margin:21px 0 19px; }
  .home-masthead-mission { font-size:17px; line-height:1.5; }
  .home-masthead-meta { margin-top:22px; font-size:10px; letter-spacing:.13em; }
  .home-masthead-visual { display:none; }
  .home-masthead:before { right:-330px; top:-340px; }
  .home-masthead:after { right:-130px; bottom:-210px; }
}
.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; }

/* "Skip to main content" link (accessibility review, 2026-07-26) — hidden until a
   keyboard user tabs to it, then appears pinned at the top-left so screen-reader and
   keyboard users can bypass the header nav on every page. */
.skip-link {
  position:absolute; top:-48px; left:8px; z-index:1000;
  background:#1C3D5A; color:#fff; font-weight:600; font-size:14px;
  padding:10px 18px; border-radius:0 0 6px 6px; text-decoration:none;
  transition:top .15s ease;
}
.skip-link:focus { top:0; }

/* ── PHASE 2: trust & polish ────────────────────────────────────────────────── */

/* Key findings block (top of each topic page) */
.keyfind { margin-top:30px; background:#fff; border:1px solid #ECE7E2; border-left:4px solid #1C3D5A;
  border-radius:12px; padding:24px 28px 22px; box-shadow:0 8px 24px rgba(0,0,0,0.04); }
.keyfind h3 { font-family:'Libre Franklin',sans-serif; font-size:12px; font-weight:700;
  letter-spacing:0.14em; text-transform:uppercase; color:var(--color-accent-ink); margin:0 0 14px; }
.keyfind ul { margin:0; padding:0; list-style:none; }
.keyfind li { position:relative; padding-left:26px; margin-bottom:11px; font-size:15.5px;
  line-height:1.6; color:#3a3335; }
.keyfind li:last-child { margin-bottom:0; }
.keyfind li::before { content:'\2014'; position:absolute; left:0; top:0; color:var(--color-accent-ink); font-weight:700; }

/* "Data current as of" badge row */
.vintage { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; padding-top:16px; border-top:1px solid #F1EEE9; }
.vintage .vlabel { font-size:11.5px; font-weight:700; letter-spacing:0.1em; text-transform:uppercase;
  color:#514B49; align-self:center; margin-right:4px; }
.vtag { display:inline-block; font-size:11.5px; font-weight:600; color:#514B49; background:#F5F2ED;
  border:1px solid #ECE7E2; border-radius:14px; padding:4px 11px; white-space:nowrap; }
.vtag b { color:#1C3D5A; font-weight:700; }

/* Sticky "On this page" nav (long pages) */
.onthispage { position:sticky; top:0; z-index:5; background:rgba(253,252,250,0.96);
  backdrop-filter:saturate(180%) blur(8px); border-bottom:1px solid #ECE7E2;
  margin:0; padding:11px 56px; }
/* Let the bar extend beyond the 1280px content wrapper only when the viewport
   actually has room for the two 56px extensions. At 1280-1391px the old
   negative margin created horizontal page overflow. */
@media (min-width:1392px){
  .onthispage { margin-left:-56px; margin-right:-56px; }
}
.onthispage ul { display:flex; gap:20px; flex-wrap:wrap; list-style:none; margin:0; padding:0; align-items:center; }
.onthispage .otp-lab { font-size:11px; font-weight:700; letter-spacing:0.12em; text-transform:uppercase; color:#514B49; }
.onthispage a { font-size:13px; font-weight:600; color:#514B49; text-decoration:none; padding:3px 0;
  border-bottom:2px solid transparent; transition:color .15s, border-color .15s; }
.onthispage a:hover, .onthispage a:focus-visible { color:#1C3D5A; border-bottom-color:#C6851E; }
.onthispage a.otp-on { color:#1C3D5A; border-bottom-color:#1C3D5A; }
/* On phones the navigation sits directly inside .wrap, not inside an inset
   section. The old negative margin made long pages 20px wider than the
   viewport. Keep the bar full-width and align its links to the 24px mobile
   content gutter used by heroes and sections. */
@media (max-width:860px){
  .onthispage,
  .onthispage.onthispage-contained { margin-left:0; margin-right:0; padding:10px 24px; }
  .onthispage ul { gap:14px; }
}

/* Evidence labels (Tone Policy) */
.ev { margin-top:22px; border-left:3px solid #ECE7E2; padding:2px 0 2px 18px; }
.ev + .ev { margin-top:16px; }
.ev-h { font-size:11.5px; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; margin-bottom:6px; }
.ev-data   { border-left-color:#2F80C4; } .ev-data .ev-h   { color:var(--color-link-ink); }
.ev-interp { border-left-color:#C6851E; } .ev-interp .ev-h { color:var(--color-accent-ink); }
.ev-limit  { border-left-color:#9a8f8f; } .ev-limit .ev-h  { color:#514B49; }
.ev p { margin:0; font-size:15px; line-height:1.65; color:#3a3335; }

/* Footer disclaimer */
.disclaimer { font-size:12.5px; line-height:1.6; color:#514B49; max-width:820px; margin-top:14px; }
.disclaimer strong { color:#514B49; }
footer .disclaimer, footer .disclaimer strong { color:#D9E4ED; }

/* Corrections page */
.corr { border:1px solid #ECE7E2; border-radius:12px; background:#fff; padding:22px 26px; margin-top:20px;
  box-shadow:0 6px 18px rgba(0,0,0,0.035); }
.corr-date { font-size:12px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:var(--color-accent-ink); }
.corr h3 { margin:6px 0 10px; font-family:'Newsreader',serif; font-size:21px; color:#1C3D5A; }
.corr .chg { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:13px; background:#F5F2ED;
  border:1px solid #ECE7E2; border-radius:6px; padding:3px 9px; display:inline-block; margin:3px 6px 3px 0; }
.corr .chg .was { color:#B4552D; text-decoration:line-through; }
.corr .chg .now { color:#1C6B3F; font-weight:700; }

/* Plain-language legend under a poster/map */
.maplegend { font-size:13px; line-height:1.6; color:#514B49; margin-top:10px;
  background:#FAF8F5; border:1px solid #F1EEE9; border-radius:8px; padding:10px 14px; }
.maplegend b { color:#1C3D5A; }

/* masthead must always sit above the sticky on-page nav */
.masthead { position:relative; z-index:30; background:#FDFCFA; }

/* Masthead: compact wordmark instead of the large logo image, so the nav has room */
.logo-link { text-decoration:none; flex:0 0 auto; }
.wordmark { font-family:'Newsreader',serif; font-weight:600; font-size:19px; color:#1C3D5A;
  letter-spacing:0.01em; white-space:nowrap; }
.logo-link:hover .wordmark { color:var(--color-accent-ink); }
.masthead { gap:26px; }
.nav-links { flex:1 1 auto; justify-content:flex-end; }
/* "Show-Me Missouri Schools" is longer than the old wordmark, so step it down before
   it can crowd the nav tabs (the complaint that got the logo removed in the first place). */
@media (max-width:1180px){ .wordmark { font-size:17px; } .masthead { gap:18px; } .nav-links { gap:15px; } }
@media (max-width:900px){ .wordmark { font-size:16px; } .masthead { gap:14px; } }

/* ===== Share rows (sharing pilot 2026-07-13) ===== */
.share-row { display:flex; align-items:center; column-gap:6px; row-gap:8px; flex-wrap:wrap; margin-top:16px; }
.share-row[hidden] { display:none !important; }
.sh-status { flex-basis:100%; color:#514B49; font-size:13px; line-height:1.5; }
.sh-status:empty { display:none; }
.sh-lab { flex:0 0 100%; font-size:12px; font-weight:700; letter-spacing:0.08em; color:#514B49; }
.sh-btn { display:inline-block; font-family:inherit; font-size:12.5px; font-weight:600; color:#1C3D5A;
  background:#fff; border:1px solid #cdd6de; border-radius:18px; padding:7px 11px; cursor:pointer;
  text-decoration:none; line-height:1; transition:background .15s,color .15s,border-color .15s; }
.sh-btn:hover { background:#1C3D5A; color:#fff; border-color:#1C3D5A; }
.sh-btn.sh-native { background:#1C3D5A; color:#fff; border-color:#1C3D5A; }
.sh-btn.sh-native:hover { background:var(--color-link-ink); border-color:#2F80C4; }
.sh-btn.sh-image { background:#F8E9C9; color:#704704; border-color:#D8AF64; }
.sh-btn.sh-image:hover { background:var(--color-accent-ink); color:#fff; border-color:#C6851E; }

/* ===== Shared map layout — every topic map uses the same capped left column with its guide text
   beside it. The caption sits under the map, and the pair stacks to one column on phones. ===== */
.maprow{ margin:24px 0 0; }
.maprow .viz-embed{ margin-top:0; }
.maprow .mapcol .viz-caption{ margin-top:12px; }
.mapkey{ font-size:15.5px; line-height:1.62; color:#3a3335; border-left:3px solid #C6851E; padding:1px 0 1px 15px; }
.mapkey b, .mapkey strong{ color:#1a1416; }
/* The map/sidebar pair needs a fluid middle state. A fixed 500px map at an
   821px viewport left too little room for interpretation text, especially when
   a reader used browser zoom. Between tablet and wide desktop, share the row
   proportionally; reserve the fixed 500px map for genuinely wide screens. */
@media (min-width:821px){
  .maprow{ display:grid; grid-template-columns:minmax(0,44%) minmax(0,1fr); gap:clamp(28px,3vw,var(--map-gap)); align-items:start; }
  .maprow .mapcol, .maprow .side{ min-width:0; }
  .maprow .side{ display:flex; flex-direction:column; gap:16px; }
  .maprow .side{ padding-bottom:4px; }
  .maprow .side.side-balanced{ align-self:center; }
  .maprow .side > *{ margin:0 !important; }
  .maprow .side .lede{ max-width:none; font-size:15px; line-height:1.65; color:#4a4245; }
}
@media (min-width:1100px){
  .maprow{ grid-template-columns:minmax(0,var(--map-column)) minmax(0,1fr); }
}
/* Long-form prose in editorial sections reads as a tidy column, not edge-to-edge sprawl, so it
   doesn't jar against the two-column map sections. Full-width blocks only — callouts nested inside a
   map's sidebar are unaffected. */
@media (min-width:821px){
  .section > .ev,
  .section > h3,
  .section > p:not(.lede){ max-width:820px; }
  /* Standalone callouts are editorial bands, not fragments of a missing
     column. Keep the narrower reading measure for ordinary prose only. */
  .section > .callout{ width:100%; max-width:none; }
}
/* Progressive disclosure — plain takeaway visible, the deep analysis behind an expander */
.deepdive{ margin-top:20px; border:1px solid #E4DED7; border-radius:8px; background:#FBFAF8; }
.deepdive > summary{ cursor:pointer; list-style:none; padding:14px 20px; font-weight:700; font-size:14.5px; color:#1C3D5A; display:flex; align-items:center; gap:10px; }
.deepdive > summary::-webkit-details-marker{ display:none; }
.deepdive > summary::before{ content:"\25B8"; color:var(--color-accent-ink); font-size:12px; transition:transform .15s ease; }
.deepdive[open] > summary::before{ transform:rotate(90deg); }
.deepdive > summary:hover{ color:var(--color-accent-ink); }
.deepdive .dd-body{ padding:0 20px 16px; }
.deepdive .dd-body > *:first-child{ margin-top:0; }
.deepdive .dd-body > .callout:first-child{ border:0; border-left:4px solid #1C3D5A; border-radius:0; background:transparent; padding:2px 0 2px 18px; }
/* "At a glance" map atlas — small-multiples overview grid (neat, consolidated) */
.atlas-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(215px,1fr)); gap:18px; margin-top:24px; }
.atlas-card{ display:flex; flex-direction:column; background:#fff; border:1px solid #ECE7E2; border-radius:10px; overflow:hidden; text-decoration:none; color:inherit; transition:box-shadow .15s ease, transform .15s ease; }
.atlas-card:hover{ box-shadow:0 8px 24px rgba(28,61,90,.13); transform:translateY(-2px); }
.atlas-card img{ width:100%; height:158px; object-fit:contain; background:#F7F5F2; padding:6px; display:block; border-bottom:1px solid #ECE7E2; }
.atlas-card .ac-b{ padding:13px 15px 15px; }
.atlas-card .ac-t{ font-weight:700; font-size:14.5px; color:#1a1416; margin-bottom:5px; line-height:1.3; }
.atlas-card .ac-r{ font-size:13px; line-height:1.5; color:#514B49; }
.atlas-card .ac-r b{ color:#2a2325; }
/* Paired analysis callouts sit as clean equal columns instead of one wandering block. */
.callout-grid{ margin-top:22px; }
@media (min-width:821px){
  .callout-grid{ display:grid; grid-template-columns:1fr 1fr; gap:24px; align-items:start; max-width:none; }
  .callout-grid > .callout{ margin-top:0; max-width:none; }
}

/* ===== "View the numbers as a table" — text alternative under a map (accessibility, 2026-07-14) ===== */
details.viz-table { margin:14px 0 4px; max-width:100%; overflow-x:auto; font-size:13px; }
.viz-table-scroll { max-width:100%; overflow-x:auto; }
details.viz-table > summary { cursor:pointer; color:#1C3D5A; font-weight:600; list-style:none; }
details.viz-table > summary::-webkit-details-marker { display:none; }
details.viz-table > summary::before { content:"\25B8"; display:inline-block; margin-right:8px; transition:transform .15s; color:#514B49; }
details.viz-table[open] > summary::before { transform:rotate(90deg); }
details.viz-table > summary:hover { text-decoration:underline; }
.viz-table table { border-collapse:collapse; margin-top:12px; width:100%; max-width:680px; }
.viz-table th, .viz-table td { padding:7px 10px; border-bottom:1px solid #F1EEE9; text-align:right;
  font-variant-numeric:tabular-nums; font-size:12.5px; color:#3a3335; }
.viz-table th { color:#514B49; }
.viz-table th:first-child, .viz-table td:first-child { text-align:left; }
.viz-table caption { caption-side:bottom; text-align:left; font-size:11.5px; color:#514B49;
  margin-top:10px; line-height:1.55; max-width:680px; }
.section :is(p,li) code { overflow-wrap:anywhere; word-break:break-word; }

/* ===== Hover/tap term definitions (jargon tooltips — terms.js, 2026-07-18) ===== */
.term { border-bottom:1px dotted #2F80C4; cursor:help; color:inherit; }
.term:focus { outline:2px solid rgba(47,128,196,0.5); outline-offset:2px; border-radius:2px; }
.term:focus:not(:focus-visible) { outline:none; }
/* Real <button> elements now (accessibility review, 2026-07-26 — was a span with
   role="button", which never got native Enter/Space activation). Strip all default
   button chrome so it still reads as plain inline dotted-underline text. */
button.term { display:inline; background:none; border:none; padding:0; margin:0;
  font:inherit; text-align:inherit; }
.term-bubble { position:absolute; z-index:9999; max-width:320px; background:#1C3D5A; color:#fff;
  font-size:13.5px; line-height:1.5; font-weight:400; padding:11px 14px; border-radius:8px;
  box-shadow:0 8px 26px rgba(0,0,0,0.28); opacity:0; visibility:hidden; transition:opacity 0.12s;
  pointer-events:none; text-align:left; }
.term-bubble.show { opacity:1; visibility:visible; }
.term-bubble strong { color:#fff; font-weight:700; }


/* A flow caption is either a section bridge or a source note for a full-width
   table. It should use the full content column, not the prose measure. */
.section > .viz-caption{ width:100%; max-width:none !important; }

/* The share controls remain one compact line at desktop widths. The label may
   keep its own line, but the buttons themselves never wrap. */
@media (min-width:1024px){
  .share-row > a,
  .share-row > button{ flex:0 0 auto; }
}
@media (min-width:1024px) and (max-width:1099px){
  .share-row{ column-gap:4px; }
  .sh-btn{ font-size:11.5px; padding:6px 8px; }
}

/* Once the map row stacks, preserve the same deliberate rhythm between the
   interpretation blocks that the desktop side column uses. */
@media (max-width:820px){
  .maprow .side{
    display:flex;
    flex-direction:column;
    gap:16px;
    margin-top:20px;
  }
  .maprow .side > *{ margin:0 !important; }
}


/* ===== District lookup component ===== */
.lk-search { position:relative; max-width:620px; }
  .lk-input { width:100%; box-sizing:border-box; font-family:'Libre Franklin',sans-serif; font-size:18px;
    padding:16px 18px; border:2px solid #D9D2CB; border-radius:10px; background:#fff; color:#1a1416; }
  .lk-input:focus { outline:none; border-color:#2F80C4; box-shadow:0 0 0 4px rgba(47,128,196,0.12); }
  .lk-menu { position:absolute; z-index:40; top:100%; left:0; right:0; margin-top:6px; background:#fff;
    border:1px solid #E5DFD8; border-radius:10px; box-shadow:0 12px 34px rgba(0,0,0,0.13);
    max-height:330px; overflow-y:auto; display:none; }
  .lk-menu.open { display:block; }
  .lk-opt { padding:11px 16px; font-size:15px; cursor:pointer; border-bottom:1px solid #F3EFEA; }
  .lk-opt:last-child { border-bottom:none; }
  .lk-opt:hover, .lk-opt.sel { background:#EFF5FA; }
  .lk-opt .lk-sub { font-size:12.5px; color:#514B49; margin-top:2px; }
  .lk-empty { padding:14px 16px; font-size:14px; color:#514B49; }

  .lk-hero { background:#1C3D5A; color:#fff; padding:34px 36px; border-radius:14px 14px 0 0; }
  .lk-hero .lk-name { font-family:'Newsreader',serif; font-weight:600; font-size:38px; line-height:1.1; margin:0 0 10px; }
  .lk-hero .lk-meta { font-size:14.5px; color:#C7D5E2; }
  .lk-hero .lk-meta a { color:#9CC7EA; text-decoration:underline; text-underline-offset:2px; }
  .lk-hero .lk-meta a:hover { color:#fff; }
  .lk-report-promo { display:flex; align-items:center; justify-content:space-between; gap:22px;
    padding:18px 22px; border:1px solid #E4D7BE; border-top:0; background:#FBF5E8; }
  .lk-report-copy { flex:1 1 420px; min-width:0; }
  .lk-report-copy span { display:block; margin-bottom:5px; color:#704600; font-size:11px; font-weight:700;
    letter-spacing:.12em; }
  .lk-report-copy strong { display:block; color:#1C3D5A; font-family:'Newsreader',serif; font-size:21px;
    font-weight:600; line-height:1.2; }
  .lk-report-copy p { margin:4px 0 0; color:#514B49; font-size:13.5px; line-height:1.5; }
  .lk-report-button { flex:0 0 auto; box-sizing:border-box; padding:12px 17px; text-align:center; white-space:nowrap; }
  .lk-body { background:#fff; border:1px solid #ECE7E2; border-top:none; border-radius:0 0 14px 14px; padding:8px 36px 34px; }

  .lk-group { padding-top:26px; }
  .lk-group + .lk-group { border-top:1px solid #F0EBE6; margin-top:26px; }
  .lk-gtitle { font-size:12px; font-weight:700; letter-spacing:0.13em; color:var(--color-accent-ink); margin:0 0 4px; text-transform:uppercase; }
  .lk-gtitle a { color:var(--color-accent-ink); text-decoration:none; border-bottom:1px dotted rgba(198,133,30,0.5); }
  .lk-gsay { font-size:14.5px; line-height:1.6; color:#514B49; margin:8px 0 18px; max-width:820px; }
  .lk-gsay strong { color:#1a1416; }

  .lk-rows { display:grid; gap:10px; }
  .lk-row { display:grid; grid-template-columns: 1fr 132px 132px 96px; gap:12px; align-items:center;
    padding:11px 14px; background:#FAF8F6; border:1px solid #F0EBE6; border-radius:8px; }
  .lk-row.head { background:none; border:none; padding:0 14px 2px; }
  .lk-row.head div { font-size:11px; font-weight:700; letter-spacing:0.09em; color:#514B49; text-transform:uppercase; }
  .lk-lab { font-size:14.5px; color:#1a1416; }
  .lk-lab .lk-note { display:block; font-size:12.5px; color:#514B49; margin-top:2px; }
  .lk-val { font-size:17px; font-weight:700; color:#1C3D5A; text-align:right; font-variant-numeric:tabular-nums; }
  .lk-med { font-size:14.5px; color:#514B49; text-align:right; font-variant-numeric:tabular-nums; }
  .lk-cmp { text-align:right; font-size:12px; font-weight:700; letter-spacing:0.04em; }
  .lk-pill { display:inline-block; padding:4px 9px; border-radius:20px; white-space:nowrap; }
  .p-hi   { background:#FBE9E7; color:#B4402E; }
  .p-lo   { background:#E7F0F8; color:#2F6FA8; }
  .p-mid  { background:#F1EEEA; color:#514B49; }
  .p-na   { background:none; color:#514B49; }

  .acs-row .acs-disclosure { grid-column:1 / -1; }
  .acs-withheld { display:inline-block; max-width:150px; color:#514B49; font-size:13px; font-weight:700; line-height:1.25; }
  .acs-disclosure { margin-top:5px; border-top:1px solid #E4DDD7; color:#514B49; font-size:13px; font-weight:400; line-height:1.45; }
  .acs-disclosure summary { min-height:44px; padding:12px 2px 9px; color:#1C3D5A; cursor:pointer; font-weight:700; }
  .acs-disclosure summary:hover { color:var(--color-link-ink); }
  .acs-disclosure summary:focus-visible { outline:3px solid #C6851E; outline-offset:2px; border-radius:3px; }
  .acs-disclosure-body { padding:0 2px 10px; }
  .acs-disclosure dl { display:grid; grid-template-columns:minmax(150px,1fr) minmax(180px,auto); gap:5px 16px; margin:0 0 8px; }
  .acs-disclosure dt { color:#514B49; }
  .acs-disclosure dd { margin:0; color:#3a3335; font-weight:700; text-align:right; font-variant-numeric:tabular-nums; }
  .acs-disclosure p { margin:5px 0 0; }
  .acs-disclosure .acs-source { color:#514B49; }

  /* Profile-first Census context: Release 1 adult education, youth digital
     access and resident occupations; Release 2 housing; Release 3 planning. */
  .ctx-section { display:grid; gap:14px; margin-top:20px; }
  .ctx-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; align-items:start; }
  .ctx-card,
  .ctx-occupation { min-width:0; border:1px solid #DDE5EB; border-radius:12px; background:#F8FAFC; box-shadow:var(--shadow-card-soft); }
  .ctx-card:not(details) { padding:20px 22px; }
  .ctx-card h3,
  .ctx-occupation h3 { margin:4px 0 8px; color:#1C3D5A; font-family:var(--font-editorial); font-size:23px; font-weight:600; line-height:1.15; }
  .ctx-card p,
  .ctx-occupation p { margin:7px 0 0; color:#514B49; font-size:14px; line-height:1.58; }
  .ctx-card p strong,
  .ctx-occupation p strong { color:#1A1416; }
  .ctx-kicker { color:#704600; font-size:10.5px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; }
  .ctx-title { display:block; margin-top:4px; color:#1C3D5A; font-family:var(--font-editorial); font-size:23px; font-weight:600; line-height:1.15; }
  .ctx-summary-fact { display:block; margin-top:8px; color:#514B49; font-size:14px; font-weight:400; line-height:1.5; }
  .ctx-summary-fact strong { color:#1A1416; }
  .ctx-primary { color:#3A3532 !important; }
  .ctx-big-value { display:block; margin-bottom:3px; color:#1C3D5A; font-family:var(--font-editorial); font-size:34px; font-weight:600; line-height:1; font-variant-numeric:tabular-nums; }
  .ctx-withheld { color:#514B49; font-weight:700; line-height:1.45; }
  .ctx-caution { display:inline-flex; align-items:center; margin:0 5px; padding:2px 7px; border:1px solid #D9A64B; border-radius:999px; background:#FFF2D8; color:#704600; font-family:var(--font-ui); font-size:10.5px; font-weight:700; letter-spacing:.02em; line-height:1.35; vertical-align:middle; white-space:nowrap; }
  .ctx-distribution-note { margin:14px 0 !important; padding:11px 13px; border-left:3px solid #C6851E; background:#FFF9F0; }

  details.ctx-card > summary { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:18px; align-items:center; min-height:44px; padding:20px 22px; cursor:pointer; list-style:none; }
  details.ctx-card > summary::-webkit-details-marker { display:none; }
  details.ctx-card > summary:focus-visible,
  .ctx-leader-detail > summary:focus-visible { outline:3px solid #C6851E; outline-offset:3px; border-radius:6px; }
  details.ctx-card[open] > summary { border-bottom:1px solid #DDE5EB; }
  .ctx-action { color:#1C3D5A; font-size:12.5px; font-weight:700; white-space:nowrap; }
  .ctx-action::before { display:inline-block; margin-right:7px; color:var(--color-accent-ink); content:"\25B8"; transition:transform .15s ease; }
  details.ctx-card[open] .ctx-action::before { transform:rotate(90deg); }
  .ctx-card-body { padding:18px 22px 21px; }

  .ctx-distribution { margin:17px 0 14px; }
  .ctx-stack { display:flex; height:22px; overflow:hidden; border:2px solid #fff; border-radius:7px; background:#EAE6E1; box-shadow:0 0 0 1px #D9E0E5; }
  .ctx-segment { display:block; min-width:0; height:100%; }
  .ctx-segment + .ctx-segment { box-shadow:inset 2px 0 0 rgba(255,255,255,.75); }
  .ctx-segment.c0,
  .ctx-swatch.c0 { background:#1C3D5A; }
  .ctx-segment.c1,
  .ctx-swatch.c1 { background:#2F80C4; }
  .ctx-segment.c2,
  .ctx-swatch.c2 { background:#7EB6D8; }
  .ctx-segment.c3,
  .ctx-swatch.c3 { background:#C6851E; }
  .ctx-segment.c4,
  .ctx-swatch.c4 { background:#8B5360; }
  .ctx-legend { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 18px; margin:12px 0 0; padding:0; list-style:none; }
  .ctx-legend li { display:grid; grid-template-columns:12px minmax(0,1fr) auto; gap:7px; align-items:start; color:#514B49; font-size:12.5px; line-height:1.35; }
  .ctx-legend li strong { color:#1C3D5A; font-variant-numeric:tabular-nums; }
  .ctx-swatch { width:12px; height:12px; margin-top:2px; border-radius:3px; }

  .ctx-measure-list { display:grid; gap:8px; margin-top:15px; }
  .ctx-measure { padding:11px 13px 2px; border:1px solid #E7E1DC; border-radius:8px; background:#fff; }
  .ctx-measure-head { display:grid; grid-template-columns:minmax(0,1fr) minmax(118px,auto); gap:16px; align-items:start; color:#3A3532; font-size:13.5px; line-height:1.4; }
  .ctx-measure-head > span:last-child { color:#1C3D5A; text-align:right; font-variant-numeric:tabular-nums; }
  .ctx-measure-head .ctx-withheld { max-width:280px; color:#514B49; font-size:12.5px; }
  .ctx-measure .acs-disclosure { margin-top:7px; }

  .ctx-card--housing { margin-top:0; }
  .ctx-card--housing .ctx-primary { max-width:850px; }
  .ctx-card--housing > .acs-disclosure { margin-top:10px; }
  .ctx-leader-detail { margin-top:13px; border-top:1px solid #D9E1E7; }
  .ctx-leader-detail > summary { min-height:44px; padding:12px 2px 9px; color:#1C3D5A; cursor:pointer; font-size:13.5px; font-weight:700; }
  .ctx-leader-detail > summary:hover { color:var(--color-link-ink); }
  .ctx-leader-detail > div { padding:2px 2px 7px; }

  .ctx-occupation { margin:18px 0; padding:19px 21px; border-left:4px solid #C6851E; }
  .ctx-occupation .ctx-primary { max-width:850px; }

  .ctx-section--planning { margin-top:18px; }
  .ctx-card--planning { width:100%; }
  .ctx-card--planning .ctx-action { display:inline-flex; align-items:center; justify-content:center; min-height:48px; padding:11px 16px; border:2px solid #1C3D5A; border-radius:8px; background:#1C3D5A; color:#fff; font-size:16px; line-height:1.2; box-shadow:0 3px 8px rgba(28,61,90,.16); }
  .ctx-card--planning .ctx-action::before { color:#F2B544; font-size:18px; }
  .ctx-card--planning > summary:hover .ctx-action { background:#28567E; border-color:#28567E; }
  .ctx-planning-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:16px; }
  .ctx-planning-topic { min-width:0; padding:15px 16px; border:1px solid #E7E1DC; border-radius:9px; background:#fff; }
  .ctx-planning-topic h3 { margin:0 0 8px; color:#1C3D5A; font-family:var(--font-editorial); font-size:18px; font-weight:600; line-height:1.2; }
  .ctx-planning-topic > p { margin-top:6px; }
  .ctx-planning-topic .ctx-topic-value { color:#3A3532; font-size:15px; }
  .ctx-planning-topic .ctx-topic-value strong { color:#1C3D5A; font-family:var(--font-editorial); font-size:25px; font-weight:600; font-variant-numeric:tabular-nums; }
  .ctx-planning-topic .ctx-peer-note { margin-top:8px; color:#514B49; font-size:13.5px; }
  .ctx-planning-topic .ctx-peer-note strong { color:#1C3D5A; font-variant-numeric:tabular-nums; }
  .ctx-planning-topic .ctx-measure-list { margin-top:13px; }
  .ctx-age-measure .ctx-measure-head { grid-template-columns:minmax(90px,1fr) minmax(190px,auto); }
  .ctx-age-values { display:grid; gap:3px; justify-items:end; }
  .ctx-age-count { color:#1C3D5A; font-family:var(--font-editorial); font-size:18px; font-weight:600; line-height:1.2; }
  .ctx-age-share { color:#514B49; font-size:12.5px; line-height:1.35; }
  .ctx-age-count-withheld { max-width:220px !important; }
  .ctx-digital-grade-detail .ctx-measure-list { margin-top:10px; }
  .ctx-digital-grade-detail .ctx-measure-head { grid-template-columns:1fr; gap:5px; }
  .ctx-digital-grade-detail .ctx-measure-head > span:last-child { text-align:left; }
  .ctx-digital-grade-detail .ctx-measure-head .ctx-withheld { max-width:none; }

  @media (max-width:760px) {
    .ctx-grid,
    .ctx-planning-grid { grid-template-columns:1fr; }
    details.ctx-card > summary { grid-template-columns:1fr; gap:10px; }
    .ctx-action { white-space:normal; }
    .ctx-card--planning .ctx-action { justify-self:start; }
    .ctx-legend { grid-template-columns:1fr; }
    .ctx-card:not(details),
    details.ctx-card > summary,
    .ctx-card-body,
    .ctx-occupation { padding-left:17px; padding-right:17px; }
  }
  @media (max-width:520px) {
    .ctx-measure-head { grid-template-columns:1fr; gap:5px; }
    .ctx-measure-head > span:last-child { text-align:left; }
    .ctx-age-measure .ctx-measure-head { grid-template-columns:1fr; }
    .ctx-age-values { justify-items:start; }
    .ctx-big-value { font-size:31px; }
  }

  .lg-row { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-bottom:10px; }
  .lg-lab { font-size:13.5px; font-weight:700; color:#514B49; min-width:190px; }
  .lg-chip { display:inline-block; padding:4px 11px; border-radius:20px; font-size:13.5px; font-weight:700; font-variant-numeric:tabular-nums; }
  .lg-house { background:#EFE3CF; color:#8A5A17; }
  .lg-senate { background:#E7F0F8; color:#2F6FA8; }
  .lg-congress { background:#F1EEEA; color:#514B49; }
  .lk-group a.lg-office-link { display:inline-flex; align-items:center; justify-content:center; gap:3px; min-width:44px; min-height:44px; box-sizing:border-box; font-size:1rem; color:#1c3f58; text-decoration:underline; text-underline-offset:3px; }
  .lk-group a.lg-office-link:hover { background:#dbe6ee; }
  .lk-group a.lg-office-link:focus-visible { outline:3px solid #1c3f58; outline-offset:3px; }

  .lk-jumpnav { margin:0; padding:11px 36px; }
  .lk-datadate { font-size:13px; color:#514B49; margin:2px 0 18px; }
  .lk-leadership-note { margin:16px 36px 0; border-left-color:#C6851E; background:#FDF6E9; }
  .lk-building-details { margin-top:14px; border:1px solid #E4DDD7; border-radius:10px; background:#fff; overflow:hidden; }
  .lk-building-details summary { cursor:pointer; padding:15px 18px; font-weight:700; color:#1C3D5A; }
  .lk-building-details[open] summary { border-bottom:1px solid #EDE7E2; }
  .lk-building-list { display:grid; }
  .lk-building { display:grid; grid-template-columns:minmax(0,1fr) 150px 126px; gap:16px; align-items:center; padding:13px 18px; border-bottom:1px solid #F0EBE6; }
  .lk-building:last-child { border-bottom:0; }
  .lk-building strong { display:block; color:#27221F; }
  .lk-building span { display:block; margin-top:2px; font-size:13px; color:#514B49; }
  .lk-building-phone { font-size:14px; }
  .lk-building-code { font-size:12px; color:#514B49; text-align:right; }
  .lk-hl-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:14px; margin:8px 0 6px; }
  .lk-hl-card { background:#F7F4EF; border:1px solid #ECE3D5; border-radius:10px; padding:16px 18px; }
  .lk-hl-card .lk-hl-lab { font-size:11px; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; color:var(--color-accent-ink); margin-bottom:6px; }
  .lk-hl-card p { margin:0; font-size:14.5px; line-height:1.55; color:#3a3532; }
  .lk-hl-card p strong { color:#1a1416; }
  @media (max-width:760px){ .lk-hl-grid { grid-template-columns:1fr; } }

  .lk-revenue-source { margin:20px 0 22px; padding:22px 24px; border:1px solid #D8E2EA; border-radius:12px; background:#F8FAFC; }
  .lk-revenue-source h3 { margin:5px 0 7px; color:#1C3D5A; font-family:var(--font-editorial); font-size:25px; font-weight:600; line-height:1.12; }
  .lk-revenue-source p { margin:0; max-width:760px; color:#514B49; font-size:14px; line-height:1.55; }
  .lk-revenue-visual { display:grid; grid-template-columns:190px minmax(280px,1fr); gap:30px; align-items:center; margin-top:20px; }
  .lk-revenue-pie { width:190px; aspect-ratio:1; border:5px solid #fff; border-radius:50%; box-shadow:0 4px 14px rgba(28,61,90,.14); }
  .lk-revenue-table { width:100%; border-collapse:collapse; }
  .lk-revenue-table th,
  .lk-revenue-table td { padding:11px 0; border-bottom:1px solid #E1E7EB; font-size:14.5px; }
  .lk-revenue-table tr:last-child th,
  .lk-revenue-table tr:last-child td { border-bottom:0; }
  .lk-revenue-table th { color:#3A3532; font-weight:600; text-align:left; }
  .lk-revenue-table td { color:#1C3D5A; font-size:18px; font-weight:700; text-align:right; font-variant-numeric:tabular-nums; }
  .lk-revenue-swatch { display:inline-block; width:13px; height:13px; margin-right:9px; border-radius:3px; vertical-align:-1px; }
  .lk-revenue-swatch.rev-local { background:#1C3D5A; }
  .lk-revenue-swatch.rev-state { background:#C6851E; }
  .lk-revenue-swatch.rev-federal { background:#7EB6D8; }
  .lk-revenue-source figcaption { margin-top:14px; color:#514B49; font-size:12.5px; line-height:1.5; }
  .lk-revenue-source .lk-revenue-share { margin-top:18px; }

  .lk-wyc { background:#EFF5FA; border:1px solid #D8E6F1; border-radius:12px; padding:22px 26px; margin-top:10px; }
  .lk-wyc h3 { margin:0 0 8px; font-family:'Newsreader',serif; font-weight:600; font-size:21px; color:#1a1416; }
  .lk-wyc ul { margin:12px 0 0; padding-left:20px; }
  .lk-wyc li { margin-bottom:9px; font-size:14.5px; line-height:1.55; color:#3a3532; }
  .lk-wyc .lk-wyc-links { margin-top:16px; display:flex; gap:14px; flex-wrap:wrap; }

  .lk-nodata { font-size:14px; color:#514B49; font-style:italic; }
  .lk-foot { margin-top:28px; font-size:13.5px; line-height:1.65; color:#514B49; }
  .lk-empty-state { background:#FAF8F6; border:1px dashed #DDD5CD; border-radius:14px; padding:44px 36px; text-align:center; }
  .lk-empty-state .es-t { font-family:'Newsreader',serif; font-size:24px; color:#1a1416; margin-bottom:8px; }
  .lk-empty-state .es-s { font-size:15px; color:#514B49; }
  .lk-empty-state.lk-not-found { border-style:solid; border-color:#E7D6C8; background:#FFF9F3; }
  .lk-empty-state.lk-not-found .es-t { color:#8F4A2A; }
  .lk-chips { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-top:18px; }
  .lk-chip { background:#fff; border:1px solid #E0D9D2; border-radius:20px; padding:7px 14px; font-size:13.5px;
    color:var(--color-link-ink); cursor:pointer; font-weight:600; }
  .lk-chip:hover { border-color:#2F80C4; }
  @media (max-width:760px) {
    .lk-report-promo { align-items:stretch; flex-direction:column; gap:14px; padding:17px 20px; }
    /* In a column, the desktop flex basis would reserve 420px of height. */
    .lk-report-copy { flex:0 1 auto; }
    .lk-report-button { width:100%; white-space:normal; }
    .lk-row { grid-template-columns: 1fr auto; grid-row-gap:4px; }
    .lk-row.head { display:none; }
    .lk-med { display:none; }
    .lk-cmp { grid-column:2; }
    .acs-row .acs-disclosure { grid-column:1 / -1; }
    .acs-disclosure dl { grid-template-columns:1fr; gap:1px; }
    .acs-disclosure dd { margin:0 0 6px; text-align:left; }
    .lk-hero, .lk-body { padding-left:20px; padding-right:20px; }
    .lk-leadership-note { margin-left:20px; margin-right:20px; }
    .lk-hero .lk-name { font-size:28px; }
    .lk-jumpnav { padding-left:20px; padding-right:20px; }
    .lk-building { grid-template-columns:1fr; gap:4px; }
    .lk-building-code { text-align:left; }
    .lk-revenue-source { padding:20px 17px; }
    .lk-revenue-visual { grid-template-columns:1fr; gap:18px; }
    .lk-revenue-pie { width:min(210px,78vw); margin:0 auto; }
  }


/* ===== Four-day salary comparison component ===== */
.fdl{margin-top:34px;background:#fff;border:1px solid #ECE7E2;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,0.05);padding:30px 32px 26px;}
        .fdl-top{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;}
        .fdl-kicker{font-size:12px;font-weight:700;letter-spacing:0.14em;color:var(--color-accent-ink);}
        .fdl-toggle{display:flex;background:#F1EEE9;border-radius:24px;padding:4px;gap:4px;}
        .fdl-toggle button{border:0;background:transparent;font-family:inherit;font-size:13.5px;font-weight:600;color:#514B49;padding:8px 18px;border-radius:20px;cursor:pointer;transition:background .2s,color .2s;}
        .fdl-toggle button.on{background:#1C3D5A;color:#fff;box-shadow:0 2px 8px rgba(28,61,90,0.35);}
        .fdl-big{font-family:'Newsreader',serif;font-weight:600;font-size:44px;color:#1C3D5A;line-height:1;margin-top:22px;}
        .fdl-big .u{font-size:16.5px;color:#514B49;font-family:'Libre Franklin',sans-serif;font-weight:500;}
        .fdl-sub{font-size:14.5px;line-height:1.6;color:#4a4245;max-width:660px;margin-top:8px;min-height:70px;}
        .fdl-rows{margin-top:16px;}
        .fdl-row{display:grid;grid-template-columns:170px 1fr 120px;gap:14px;align-items:center;padding:13px 0;border-top:1px solid #F1EEE9;}
        .fdl-lab{font-size:13.5px;font-weight:600;color:#3a3335;line-height:1.3;}
        .fdl-lab small{display:block;font-weight:500;color:#514B49;font-size:11.5px;}
        .fdl-track{position:relative;height:34px;}
        .fdl-track::before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;background:#EFEAE4;}
        .fdl-bar{position:absolute;top:50%;height:6px;transform:translateY(-50%);background:linear-gradient(90deg,rgba(198,133,30,0.35),rgba(28,61,90,0.35));border-radius:3px;transition:left .8s cubic-bezier(.6,0,.3,1),width .8s cubic-bezier(.6,0,.3,1);}
        .fdl-dot{position:absolute;top:50%;transform:translate(-50%,-50%);border-radius:50%;transition:left .8s cubic-bezier(.6,0,.3,1);}
        .fdl-dot.d5{width:19px;height:19px;border:3.5px solid #1C3D5A;background:#fff;z-index:1;box-sizing:border-box;}
        .fdl-dot.d4{width:12px;height:12px;background:#C6851E;z-index:2;}
        .fdl-gap{text-align:right;font-size:14.5px;font-weight:700;color:#B4552D;font-variant-numeric:tabular-nums;}
        .fdl-gap small{display:block;font-weight:500;color:#514B49;font-size:11.5px;}
        .fdl-axis{display:grid;grid-template-columns:170px 1fr 120px;gap:14px;}
        .fdl-ticks{position:relative;height:16px;font-size:10.5px;color:#514B49;}
        .fdl-ticks span{position:absolute;transform:translateX(-50%);}
        .fdl-leg{display:flex;gap:22px;margin-top:14px;font-size:12.5px;color:#514B49;flex-wrap:wrap;align-items:center;}
        .fdl-leg .k4{display:inline-block;width:11px;height:11px;border-radius:50%;background:#C6851E;margin-right:7px;vertical-align:-1px;}
        .fdl-leg .k5{display:inline-block;width:15px;height:15px;border-radius:50%;border:3px solid #1C3D5A;box-sizing:border-box;margin-right:7px;vertical-align:-3px;}
        details.fdl-tab{margin-top:16px;font-size:13px;}
        details.fdl-tab summary{cursor:pointer;color:#1C3D5A;font-weight:600;}
        .fdl-tab table{border-collapse:collapse;margin-top:10px;width:100%;max-width:640px;}
        .fdl-tab th,.fdl-tab td{padding:7px 10px;border-bottom:1px solid #F1EEE9;text-align:right;font-variant-numeric:tabular-nums;font-size:12.5px;color:#3a3335;}
        .fdl-tab th{color:#514B49;}
        .fdl-tab th:first-child,.fdl-tab td:first-child{text-align:left;}
        .fdl-foot{margin-top:16px;font-size:12px;color:#514B49;line-height:1.55;max-width:660px;}
        @media(max-width:640px){.fdl{padding:22px 18px;}.fdl-row{grid-template-columns:1fr;gap:6px;}.fdl-gap{text-align:left;}.fdl-axis{display:none;}.fdl-big{font-size:34px;}.fdl-tab{overflow-x:auto;}}


/* ===== Rural and suburban comparison components ===== */
.lcl{margin-top:34px;background:#fff;border:1px solid #ECE7E2;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,0.05);padding:30px 32px 26px;}
        .lcl-top{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;}
        .lcl-kicker{font-size:12px;font-weight:700;letter-spacing:0.14em;color:var(--color-accent-ink);}
        .lcl-toggle{display:flex;background:#F1EEE9;border-radius:24px;padding:4px;gap:4px;flex-wrap:wrap;}
        .lcl-toggle button{border:0;background:transparent;font-family:inherit;font-size:13.5px;font-weight:600;color:#514B49;padding:8px 16px;border-radius:20px;cursor:pointer;transition:background .2s,color .2s;}
        .lcl-toggle button.on{background:#1C3D5A;color:#fff;box-shadow:0 2px 8px rgba(28,61,90,0.35);}
        .lcl-big{font-family:'Newsreader',serif;font-weight:600;font-size:44px;color:#1C3D5A;line-height:1;margin-top:22px;}
        .lcl-big .u{font-size:16.5px;color:#514B49;font-family:'Libre Franklin',sans-serif;font-weight:500;}
        .lcl-sub{font-size:14.5px;line-height:1.6;color:#4a4245;max-width:680px;margin-top:8px;min-height:70px;}
        .lcl-rows{margin-top:16px;}
        .lcl-row{display:grid;grid-template-columns:180px 1fr 130px;gap:14px;align-items:center;padding:13px 0;border-top:1px solid #F1EEE9;}
        .lcl-lab{font-size:13.5px;font-weight:600;color:#3a3335;line-height:1.3;}
        .lcl-lab small{display:block;font-weight:500;color:#514B49;font-size:11.5px;}
        .lcl-track{position:relative;height:34px;}
        .lcl-track::before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;background:#EFEAE4;}
        .lcl-bar{position:absolute;top:50%;height:6px;transform:translateY(-50%);background:linear-gradient(90deg,rgba(198,133,30,0.35),rgba(28,61,90,0.35));border-radius:3px;transition:left .8s cubic-bezier(.6,0,.3,1),width .8s cubic-bezier(.6,0,.3,1);}
        .lcl-dot{position:absolute;top:50%;transform:translate(-50%,-50%);border-radius:50%;transition:left .8s cubic-bezier(.6,0,.3,1);}
        .lcl-dot.d5{width:19px;height:19px;border:3.5px solid #1C3D5A;background:#fff;z-index:1;box-sizing:border-box;}
        .lcl-dot.d4{width:12px;height:12px;background:#C6851E;z-index:2;}
        .lcl-gap{text-align:right;font-size:14.5px;font-weight:700;color:#B4552D;font-variant-numeric:tabular-nums;}
        .lcl-gap small{display:block;font-weight:500;color:#514B49;font-size:11.5px;}
        .lcl-axis{display:grid;grid-template-columns:180px 1fr 130px;gap:14px;}
        .lcl-ticks{position:relative;height:16px;font-size:10.5px;color:#514B49;}
        .lcl-ticks span{position:absolute;transform:translateX(-50%);}
        .lcl-leg{display:flex;gap:22px;margin-top:14px;font-size:12.5px;color:#514B49;flex-wrap:wrap;align-items:center;}
        .lcl-leg .k4{display:inline-block;width:11px;height:11px;border-radius:50%;background:#C6851E;margin-right:7px;vertical-align:-1px;}
        .lcl-leg .k5{display:inline-block;width:15px;height:15px;border-radius:50%;border:3px solid #1C3D5A;box-sizing:border-box;margin-right:7px;vertical-align:-3px;}
        details.lcl-tab{margin-top:16px;font-size:13px;}
        details.lcl-tab summary{cursor:pointer;color:#1C3D5A;font-weight:600;}
        .lcl-tab table{border-collapse:collapse;margin-top:10px;width:100%;max-width:680px;}
        .lcl-tab th,.lcl-tab td{padding:7px 10px;border-bottom:1px solid #F1EEE9;text-align:right;font-variant-numeric:tabular-nums;font-size:12.5px;color:#3a3335;}
        .lcl-tab th{color:#514B49;}
        .lcl-tab th:first-child,.lcl-tab td:first-child{text-align:left;}
        .lcl-foot{margin-top:16px;font-size:12px;color:#514B49;line-height:1.55;max-width:680px;}
        @media(max-width:640px){.lcl{padding:22px 18px;}.lcl-row{grid-template-columns:1fr;gap:6px;}.lcl-gap{text-align:left;}.lcl-axis{display:none;}.lcl-big{font-size:34px;}.lcl-tab{overflow-x:auto;}}

.lclb{margin-top:30px;background:#fff;border:1px solid #ECE7E2;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,0.05);padding:28px 32px 24px;}
        .lclb-row{display:grid;grid-template-columns:230px 1fr 1fr;gap:14px;align-items:center;padding:12px 0;border-top:1px solid #F1EEE9;}
        .lclb-row:first-of-type{border-top:0;}
        .lclb-lab{font-size:13.5px;font-weight:600;color:#3a3335;line-height:1.35;}
        .lclb-lab small{display:block;font-weight:500;color:#514B49;font-size:11.5px;}
        .lclb-cell{display:flex;align-items:center;gap:10px;}
        .lclb-bar{height:14px;border-radius:7px;min-width:2px;}
        .lclb-cell.r .lclb-bar{background:#C6851E;}
        .lclb-cell.s .lclb-bar{background:#1C3D5A;}
        .lclb-val{font-size:13.5px;font-weight:700;color:#1a1416;font-variant-numeric:tabular-nums;white-space:nowrap;}
        .lclb-head{display:grid;grid-template-columns:230px 1fr 1fr;gap:14px;font-size:11.5px;font-weight:700;letter-spacing:0.1em;color:#514B49;padding-bottom:8px;}
        .lclb-foot{margin-top:14px;font-size:12px;color:#514B49;line-height:1.55;max-width:680px;}
        @media(max-width:640px){.lclb{padding:20px 16px;}.lclb-row,.lclb-head{grid-template-columns:1fr;gap:6px;}}

.pns-careers{margin-top:30px;background:#fff;border:1px solid #ECE7E2;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,0.05);padding:28px 32px 24px;}
        .pns-cap{font-size:12px;font-weight:700;letter-spacing:0.14em;color:var(--color-accent-ink);margin-bottom:18px;}
        .pns-row{display:grid;grid-template-columns:250px 1fr 150px;gap:14px;align-items:center;padding:12px 0;border-top:1px solid #F1EEE9;}
        .pns-row:first-of-type{border-top:0;}
        .pns-lab{font-size:13.5px;font-weight:600;color:#3a3335;line-height:1.35;}
        .pns-lab small{display:block;font-weight:500;color:#514B49;font-size:11.5px;}
        .pns-barwrap{position:relative;height:20px;}
        .pns-bar{height:20px;border-radius:10px;}
        .pns-val{font-size:15px;font-weight:700;color:#1C3D5A;font-variant-numeric:tabular-nums;white-space:nowrap;}
        .pns-val small{display:block;font-weight:500;color:#514B49;font-size:11px;}
        .pns-note{margin-top:14px;font-size:13px;color:#4a4245;line-height:1.6;max-width:680px;}
        @media(max-width:640px){.pns-careers{padding:20px 16px;}.pns-row{grid-template-columns:1fr;gap:6px;}}

.pns-calc{margin-top:26px;background:#fff;border:1px solid #ECE7E2;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,0.05);padding:28px 32px 26px;}
        .pns-calc .pc-kick{font-size:12px;font-weight:700;letter-spacing:0.14em;color:var(--color-accent-ink);margin-bottom:14px;}
        .pns-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:720px;}
        .pns-field label{font-size:13px;font-weight:600;color:#514B49;display:block;margin-bottom:6px;}
        .pns-field select{width:100%;padding:10px 12px;font-size:14px;border:1px solid #cdd6de;border-radius:8px;background:#fff;color:#1a1416;font-family:inherit;}
        .pns-out{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-top:24px;}
        .pns-card{background:#EAF0F6;border-radius:12px;padding:20px 22px;}
        .pns-card .t{font-size:12px;font-weight:700;letter-spacing:0.06em;color:#1C3D5A;text-transform:uppercase;margin-bottom:8px;min-height:28px;line-height:1.25;}
        .pns-card .v{font-family:'Newsreader',serif;font-weight:600;font-size:32px;color:#1C3D5A;line-height:1;font-variant-numeric:tabular-nums;}
        .pns-card .s{font-size:12.5px;color:#514B49;margin-top:7px;}
        .pns-card.hero{background:#1C3D5A;}
        .pns-card.hero .t{color:#EAF0F6;}
        .pns-card.hero .v{color:#fff;font-size:38px;}
        .pns-card.hero .s{color:#C3CEDA;}
.pns-card.hero .s .yr{color:#E9B44C;font-weight:700;}
        .pns-cfoot{margin-top:16px;font-size:12px;color:#514B49;line-height:1.55;max-width:720px;}
        @media(max-width:640px){.pns-calc{padding:20px 16px;}.pns-fields{grid-template-columns:1fr;}}

/* Urban-vs-suburban district comparison. */
.uvc{scroll-margin-top:84px;margin-top:34px;background:#fff;border:1px solid var(--border-card);border-radius:var(--radius-card);box-shadow:var(--shadow-card-soft);padding:30px 32px 28px;}
.uvc-kicker{font-size:12px;font-weight:700;letter-spacing:.14em;color:var(--color-accent-ink);margin-bottom:10px;}
.uvc h3{margin:0 0 10px;font-family:var(--font-editorial);font-size:clamp(1.65rem,2.5vw,2.25rem);line-height:1.12;color:#1A1416;}
.uvc > p{max-width:820px;color:#4A4245;line-height:1.65;}
.uvc .uvc-instruction{margin:10px 0 0;font-family:var(--font-ui);font-size:12px;color:#514B49;}
.uvc-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:24px;max-width:900px;}
.uvc-field label{display:block;margin-bottom:7px;font-size:13px;font-weight:700;color:#4A4245;}
.uvc-field select{width:100%;min-height:46px;padding:11px 12px;border:1px solid #AABAC8;border-radius:8px;background:#fff;color:#1A1416;font-family:var(--font-ui);font-size:14px;cursor:pointer;}
.uvc-field select:focus-visible{outline:3px solid rgba(28,61,90,.2);outline-offset:2px;border-color:#1C3D5A;}
.uvc-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px;}
.uvc-update{appearance:none;border:0;border-radius:8px;background:#1C3D5A;color:#fff;padding:10px 16px;font-family:var(--font-ui);font-size:13px;font-weight:700;cursor:pointer;transition:background .18s ease,transform .18s ease;}
.uvc-update:hover{background:#28587D;transform:translateY(-1px);}
.uvc-update:focus-visible{outline:3px solid rgba(28,61,90,.25);outline-offset:2px;}
.uvc-status{font-family:var(--font-ui);font-size:12px;color:#67605E;}
.uvc-table-wrap{margin-top:24px;overflow-x:auto;border:1px solid #E5E1DC;border-radius:10px;}
.uvc-table{width:100%;border-collapse:collapse;background:#fff;font-variant-numeric:tabular-nums;}
.uvc-table th,.uvc-table td{padding:14px 16px;border-bottom:1px solid #EEEAE6;text-align:right;vertical-align:top;}
.uvc-table thead th{background:#F4F7FA;font-family:var(--font-ui);font-size:12px;line-height:1.35;color:#1C3D5A;}
.uvc-table thead th:first-child,.uvc-table tbody th{text-align:left;}
.uvc-table tbody th{width:48%;font-family:var(--font-ui);font-size:13px;line-height:1.35;color:#322C2E;}
.uvc-table tbody th span{display:block;margin-top:3px;font-size:11px;font-weight:500;color:#514B49;}
.uvc-table tbody td{font-family:var(--font-editorial);font-size:21px;font-weight:600;color:#1C3D5A;white-space:nowrap;}
.uvc-table tbody tr:last-child th,.uvc-table tbody tr:last-child td{border-bottom:0;}
.uvc-table .uvc-group-row th{width:auto;padding:10px 16px;background:#F7F1E8;border-bottom:1px solid #E7DDCE;color:#8A5B13;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;}
.uvc-table .uvc-pension-row th,.uvc-table .uvc-pension-row td{background:#EDF3F8;}
.uvc-summary{margin-top:20px;padding:18px 20px;border-left:4px solid #1C3D5A;border-radius:7px;background:#F4F7FA;color:#3F393B;font-size:14px;line-height:1.62;}
.uvc-summary strong{color:#1C3D5A;}
.uvc-summary--fiscal{margin-top:12px;border-left-color:#C6851E;background:#FBF6ED;}
.uvc-summary--fiscal strong{color:#81540F;}
.uvc .uvc-note{margin:16px 0 0;max-width:900px;font-size:12px;line-height:1.6;color:#514B49;}
@media(max-width:640px){
  .stat-chip .num-compare{gap:8px;}
  .stat-chip .compare-side-value{font-size:1.45rem;}
  .uvc{padding:23px 18px 22px;}
  .uvc-fields{grid-template-columns:1fr;}
  .uvc-table-wrap{overflow:visible;}
  .uvc-table,.uvc-table tbody,.uvc-table tr,.uvc-table th,.uvc-table td{display:block;width:100%;}
  .uvc-table thead{display:none;}
  .uvc-table tbody tr{display:grid;grid-template-columns:1fr 1fr;padding:13px 14px;border-bottom:1px solid #EEEAE6;}
  .uvc-table tbody tr:last-child{border-bottom:0;}
  .uvc-table tbody th{grid-column:1 / -1;padding:0 0 10px;border:0;}
  .uvc-table tbody td{padding:0;border:0;text-align:left;font-size:19px;white-space:normal;}
  .uvc-table tbody td::before{content:attr(data-context);display:block;margin-bottom:4px;font-family:var(--font-ui);font-size:9.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#514B49;}
  .uvc-table .uvc-group-row{display:block;padding:10px 14px;background:#F7F1E8;}
  .uvc-table .uvc-group-row th{display:block;padding:0;background:transparent;}
  .uvc-table .uvc-pension-row{background:#EDF3F8;}
  .uvc-table .uvc-pension-row th,.uvc-table .uvc-pension-row td{background:transparent;}
}


/* Approved simplified homepage */
.sample-hero {
    position:relative; overflow:hidden; padding:clamp(48px,6vw,78px) var(--page-gutter);
    color:#fff; background:#183B56; border-bottom:6px solid var(--color-accent);
  }
  .sample-hero::after {
    content:""; position:absolute; width:520px; height:520px; right:-290px; top:-330px;
    border:1px solid rgba(220,235,245,.22); border-radius:50%; background:rgba(185,213,229,.07);
  }
  .sample-hero-grid {
    position:relative; z-index:1; display:grid; grid-template-columns:minmax(0,1.02fr) minmax(360px,.8fr);
    gap:clamp(34px,5vw,68px); align-items:center;
  }
  .sample-eyebrow {
    margin-bottom:16px; color:#F0BD55; font-size:12px; font-weight:700;
    letter-spacing:.17em; line-height:1.4;
  }
  .sample-title {
    max-width:700px; margin:0; font-family:var(--font-serif); font-size:clamp(46px,5.3vw,72px);
    font-weight:500; letter-spacing:-.035em; line-height:.98; text-wrap:balance;
  }
  .sample-intro {
    max-width:690px; margin:24px 0 0; color:#E6F0F5; font-size:clamp(17px,1.5vw,20px);
    line-height:1.58;
  }
  .sample-search-panel {
    max-width:680px; margin-top:30px; padding:22px; border:1px solid rgba(255,255,255,.2);
    border-radius:14px; background:rgba(255,255,255,.1); box-shadow:0 16px 36px rgba(0,0,0,.12);
  }
  .sample-search-label { display:block; margin-bottom:10px; color:#fff; font-size:14px; font-weight:700; }
  .sample-search-panel .hp-input { border-color:#fff; }
  .sample-count-note { margin:12px 0 0; color:#D3E2EA; font-size:13px; line-height:1.55; }
  .sample-map-card {
    padding:19px; border:1px solid rgba(255,255,255,.22); border-radius:16px;
    background:#fff; color:var(--color-text); box-shadow:0 18px 44px rgba(0,0,0,.2);
  }
  .sample-map-title { margin-bottom:4px; color:var(--color-primary); font-size:15px; font-weight:700; }
  .sample-map-subtitle { margin-bottom:10px; color:var(--color-text-muted); font-size:12.5px; line-height:1.45; }
  .sample-map-card .hero-map-slot { min-height:260px; }
  .sample-map-legend { display:grid; grid-template-columns:auto minmax(90px,1fr) auto; gap:10px; align-items:center; margin-top:8px; color:#514B49; font-size:11.5px; }
  .sample-map-bar { height:10px; border:1px solid #ECE7E2; border-radius:6px; background:linear-gradient(90deg,#B4552D,#F7F5F2,#1C3D5A); }
  .sample-map-help { margin:11px 0 0; padding-top:10px; border-top:1px solid #ECE7E2; color:#514B49; font-size:11.5px; line-height:1.5; }
  .sample-section { padding:var(--space-section) var(--page-gutter); }
  .sample-section.sand { background:var(--color-sand); border-top:1px solid var(--color-border); border-bottom:1px solid var(--color-border); }
  .sample-kicker { margin-bottom:12px; color:var(--color-accent-ink); font-size:12px; font-weight:700; letter-spacing:.15em; }
  .sample-section h2 { margin:0 0 13px; font-family:var(--font-serif); font-size:var(--type-section-title); font-weight:500; line-height:1.08; letter-spacing:-.018em; }
  .sample-lede { max-width:760px; margin:0; color:#4a4245; font-family:var(--font-serif); font-size:clamp(1.05rem,1.4vw,1.2rem); line-height:1.62; }
  .sample-question-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; margin-top:30px; }
  .sample-question-card {
    display:flex; flex-direction:column; min-height:220px; padding:27px; border:1px solid var(--border-card);
    border-radius:var(--radius-card); background:#fff; box-shadow:var(--shadow-card-soft);
  }
  .sample-question-card .topic { margin-bottom:10px; color:var(--color-accent-ink); font-size:11px; font-weight:700; letter-spacing:.13em; }
  .sample-question-card h3 { margin:0 0 10px; font-family:var(--font-serif); font-size:25px; font-weight:500; line-height:1.15; text-wrap:balance; }
  .sample-question-card p { margin:0 0 20px; color:var(--color-text-muted); font-size:14px; line-height:1.6; }
  .sample-card-links { display:flex; gap:16px; flex-wrap:wrap; margin-top:auto; }
  .sample-card-links a { color:var(--color-link-ink); font-size:13.5px; font-weight:700; }
  .sample-more-heading { margin-top:42px; padding-top:32px; border-top:1px solid var(--color-border); }
  .sample-more-heading .sample-kicker { margin-bottom:8px; }
  .sample-more-heading h3 { margin:0 0 7px; font-family:var(--font-serif); font-size:clamp(1.55rem,2.2vw,2rem); font-weight:500; line-height:1.16; }
  .sample-more-heading p { max-width:720px; margin:0; color:var(--color-text-muted); font-size:14px; line-height:1.6; }
  .sample-more { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; margin-top:20px; }
  .sample-more-card {
    display:flex; flex-direction:column; min-height:205px; padding:24px; border:1px solid var(--border-card);
    border-radius:var(--radius-card); background:#fff; box-shadow:var(--shadow-card-soft);
    color:var(--color-primary); text-decoration:none; transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
  }
  .sample-more-card:hover { transform:translateY(-3px); border-color:#C8D8E3; box-shadow:0 12px 28px rgba(28,61,90,.12); }
  .sample-more-card:focus-visible { outline:3px solid rgba(44,133,190,.32); outline-offset:3px; }
  .sample-more-card .topic { margin-bottom:10px; color:var(--color-accent-ink); font-size:11px; font-weight:700; letter-spacing:.13em; }
  .sample-more-card h3 { margin:0 0 9px; font-family:var(--font-serif); font-size:23px; font-weight:500; line-height:1.18; }
  .sample-more-card p { margin:0 0 18px; color:var(--color-text-muted); font-size:13.5px; font-weight:400; line-height:1.58; }
  .sample-more-card .sample-more-cta { margin-top:auto; color:var(--color-link-ink); font-size:13.5px; font-weight:700; }
  .sample-action-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; margin-top:28px; }
  .sample-action { padding:24px; border:1px solid var(--border-card); border-radius:var(--radius-card); background:#fff; }
  .sample-action h3 { margin:0 0 8px; font-family:var(--font-serif); font-size:22px; font-weight:500; line-height:1.2; }
  .sample-action p { margin:0 0 14px; color:var(--color-text-muted); font-size:13.5px; line-height:1.58; }
  .sample-action a { color:var(--color-link-ink); font-size:13.5px; font-weight:700; }
  .sample-about {
    display:grid; grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr); gap:40px; align-items:start;
  }
  .sample-about-box { padding:22px 24px; border-left:4px solid var(--color-primary); border-radius:8px; background:#F3F7FA; }
  .sample-about-box strong { display:block; margin-bottom:7px; color:var(--color-primary); }
  .sample-about-box p { margin:0; color:var(--color-text-muted); font-size:13.5px; line-height:1.62; }
  .sample-about-links { display:flex; gap:18px; flex-wrap:wrap; margin-top:20px; }
  .sample-about-links a { color:var(--color-link-ink); font-size:13.5px; font-weight:700; }
  .sample-nav-group { position:relative; }
  .sample-nav-trigger {
    display:flex; align-items:center; gap:5px; padding:0; border:0; background:transparent;
    color:inherit; font:inherit; cursor:pointer;
  }
  .sample-nav-trigger::after { content:"▾"; font-size:10px; position:relative; top:1px; }
  .sample-nav-group.open .sample-nav-trigger::after { content:"▴"; }
  .sample-nav-trigger:focus-visible { outline:3px solid #C6851E; outline-offset:3px; border-radius:3px; }
  .sample-nav-group > .nav-dropdown { display:none; }
  .sample-nav-group:hover > .nav-dropdown,
  .sample-nav-group:focus-within > .nav-dropdown,
  .sample-nav-group.open > .nav-dropdown { display:flex; }
  @media (max-width:960px) {
    .sample-hero, .sample-section { padding-left:var(--page-gutter-tablet); padding-right:var(--page-gutter-tablet); }
    .sample-hero-grid, .sample-about { grid-template-columns:1fr; }
    .sample-map-card { max-width:680px; }
    .nav-links.open .sample-nav-group { width:100%; }
    .nav-links.open .sample-nav-trigger {
      width:100%; justify-content:space-between; padding:14px 24px;
      border-bottom:1px solid #F3EFEA; text-align:left;
    }
    .nav-links.open .sample-nav-group > .nav-dropdown { position:static; width:100%; }
  }
  @media (max-width:700px) {
    .sample-question-grid, .sample-more, .sample-action-grid { grid-template-columns:1fr; }
    .sample-title { font-size:clamp(42px,12vw,56px); }
    .sample-search-panel { padding:18px; }
    .sample-map-card .hero-map-slot { min-height:220px; }
  }
  @media (max-width:600px) {
    .sample-hero, .sample-section { padding-left:var(--page-gutter-phone); padding-right:var(--page-gutter-phone); }
  }

/* ── Where residents work (lookup.html #work; rendered by commute-section.js) ── */
.cm-lead { font-family:var(--font-editorial); font-size:clamp(1.15rem,1.7vw,1.45rem); line-height:1.38; color:#1a1416; margin:6px 0 10px; max-width:820px; font-weight:500; }
.cm-lead strong { color:#1C3D5A; }
.cm-fam { font-size:15px; line-height:1.55; color:#3a3335; margin:0 0 6px; max-width:820px; }
.cm-fam strong { color:#1C3D5A; }
.cm-fam-intro { margin-bottom:5px; }
.cm-fam-measure { padding:9px 12px; background:#FAF8F6; border:1px solid #F0EBE6; border-radius:8px; margin-top:8px; }
.cm-fam-measure p { margin:0; }
.cm-fam-measure .acs-estimate-value { color:#1C3D5A; font-weight:700; }
.cm-grid { display:grid; grid-template-columns:1.1fr .9fr; gap:22px; align-items:start; margin-top:18px; }
.cm-block { margin-top:22px; }
.cm-card { background:#fff; border:1px solid #E5E0DA; border-radius:12px; padding:18px 20px; box-shadow:var(--shadow-card-soft); min-width:0; }
.cm-card h3 { margin:0 0 2px; font-family:var(--font-editorial); font-size:21px; font-weight:600; color:#1C3D5A; line-height:1.15; }
.cm-card .cm-sub { font-size:13px; color:#514B49; margin:0 0 12px; line-height:1.45; }
.cm-stack { display:grid; gap:10px; }
.cm-srow { display:grid; grid-template-columns:118px 1fr; gap:12px; align-items:center; font-size:13.5px; }
.cm-srow .cm-who { color:#3a3335; font-weight:600; text-align:right; }
.cm-srow .cm-who small { display:block; font-weight:400; color:#514B49; font-size:11.5px; }
.cm-sbar { display:flex; height:28px; border-radius:6px; overflow:hidden; background:#F1EEEA; }
.cm-sbar i { display:block; height:100%; color:#fff; font-size:12px; font-weight:700; line-height:28px; text-align:center; font-variant-numeric:tabular-nums; overflow:hidden; white-space:nowrap; font-style:normal; }
.cm-sbar i.b0 { background:#9CC7EA; color:#1C3D5A; }
.cm-sbar i.b1 { background:#3375A9; }
.cm-sbar i.b2 { background:#2F6FA8; }
.cm-sbar i.b3 { background:#1C3D5A; background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.18) 0 4px,transparent 4px 9px); }
.cm-srow.hi .cm-sbar { outline:2px solid #C6851E; outline-offset:2px; }
.cm-legend { display:flex; flex-wrap:wrap; gap:12px 16px; font-size:12px; color:#514B49; margin-top:10px; }
.cm-legend span i { display:inline-block; width:12px; height:12px; border-radius:3px; vertical-align:-2px; margin-right:5px; }
.cm-flows { display:grid; gap:10px; margin-top:4px; }
.cm-flow { display:grid; grid-template-columns:1fr auto; gap:6px; font-size:13.5px; }
.cm-flow .cm-lab { color:#3a3335; }
.cm-flow .cm-val { font-weight:700; color:#1C3D5A; font-variant-numeric:tabular-nums; }
.cm-flow .cm-bar { grid-column:1/-1; height:12px; background:#F1EEEA; border-radius:3px; overflow:hidden; }
.cm-flow .cm-bar i { display:block; height:100%; background:#1C3D5A; border-radius:0 3px 3px 0; }
.cm-flow.stay .cm-bar i { background:#C6851E; }
.cm-flow.in .cm-bar i { background:#9CC7EA; }
.cm-strip svg, .cm-trend svg { width:100%; height:auto; display:block; }
.cm-dest { display:grid; gap:7px; margin-top:6px; }
.cm-drow { display:grid; grid-template-columns:minmax(120px,150px) 1fr 56px; gap:10px; align-items:center; font-size:13.5px; }
.cm-drow .cm-dbar { height:16px; background:#F1EEEA; border-radius:3px; overflow:hidden; }
.cm-drow .cm-dbar i { display:block; height:100%; background:#2F80C4; border-radius:0 3px 3px 0; }
.cm-drow.src .cm-dbar i { background:#C6851E; }
.cm-drow span:last-child { text-align:right; font-weight:700; color:#1C3D5A; font-variant-numeric:tabular-nums; }
.cm-foot { font-size:12.5px; color:#514B49; margin-top:8px; line-height:1.5; }
.cm-foot strong { color:#3a3335; }
@media (max-width:820px) { .cm-grid { grid-template-columns:1fr; } .cm-srow { grid-template-columns:92px 1fr; } }
/* locale.html "The two commutes" */
.cm-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin:22px 0 8px; }
.cm-stat { background:#fff; border:1px solid #E5E0DA; border-radius:12px; padding:16px 18px; box-shadow:var(--shadow-card-soft); }
.cm-stat .cm-k { font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--color-accent-ink); }
.cm-stat .cm-pair { display:grid; grid-template-columns:1fr auto 1fr; align-items:end; gap:10px; margin-top:6px; }
.cm-stat .cm-pair b { font-family:var(--font-editorial); font-size:36px; font-weight:600; line-height:1; color:#1C3D5A; }
.cm-stat .cm-pair b span { font-size:18px; }
.cm-stat .cm-pair b.sub { color:var(--color-link-ink); }
.cm-stat .cm-pair small { display:block; font-size:12px; color:#514B49; margin-top:4px; font-family:var(--font-ui); }
.cm-stat .cm-vs { font-size:12px; color:#514B49; padding-bottom:18px; }
.cm-two { display:grid; grid-template-columns:1fr 1fr; gap:22px; margin-top:22px; }
@media (max-width:820px) { .cm-stats, .cm-two { grid-template-columns:1fr; } }
/* These two long jump menus wrap to several rows on narrow phones. Leave
   enough anchor clearance that their sticky bar does not hide the travel
   section heading after a visitor taps the jump link. */
@media (max-width:600px) { #work, #commute { scroll-margin-top:220px; } }

/* Supporting text stays readable on white and cream surfaces. */
input::placeholder,textarea::placeholder{color:#514B49;opacity:1}
svg text:is([fill="#8b8480" i],[fill="#9a8f8f" i],[fill="#7a726f" i],[fill="#a79f9c" i],[fill="#b9b2ac" i]){fill:#514B49}
