/* Electoral Vote Map — map styles.
   Light is the default; dark is html[data-evm-theme="dark"] (the theme sets it).
   Every color is a token on .evm-map so the PNG export can read them back. */

.evm-map, .evm-sheet {
  --evm-dem-0: #1d5fbf;  --evm-dem-1: #5a8ad9;  --evm-dem-2: #a8c1ea;
  --evm-rep-0: #c0392b;  --evm-rep-1: #dd6f62;  --evm-rep-2: #f1b3aa;
  --evm-other-0: #c98a1b; --evm-other-1: #dcae5a; --evm-other-2: #efd4a2;
  --evm-alt-0: #2e8b6e;  --evm-alt-1: #62ab93;  --evm-alt-2: #a9d3c4;   /* 1.12.0: a fourth candidate (green) */
  --evm-alt2-0: #7d5ba6; --evm-alt2-1: #9f84c0; --evm-alt2-2: #cdbde0;  /* a fifth (purple) */
  --evm-none: #eceef1;
  --evm-toss-0: #cfd3d8;
  --evm-label-light: #ffffff;
  --evm-label-dark: #1f2327;
  --evm-bg: #ffffff;
  --evm-panel: #f4f5f7;
  --evm-rule: #dfe2e6;
  --evm-ink: #1f2327;
  --evm-ink-dim: #666c73;
  --evm-accent: #0d527a;
  --evm-focus: #0d527a;
  --evm-mesh: #ffffff;
  --evm-hover: rgba(0,0,0,.18);
  --evm-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  --evm-map-max: 100%;
  font-family: var(--evm-sans);
  color: var(--evm-ink);
  max-width: 100%;
  margin: 0 0 1.5em;
}
html[data-evm-theme="dark"] .evm-map,
html[data-evm-theme="dark"] .evm-sheet,
.evm-map[data-evm-theme="dark"] {
  --evm-dem-0: #3b7be0;  --evm-dem-1: #5f92dd;  --evm-dem-2: #8fb1e6;
  --evm-rep-0: #d9463a;  --evm-rep-1: #e26f64;  --evm-rep-2: #eaa199;
  --evm-other-0: #d99a2a; --evm-other-1: #e0b35f; --evm-other-2: #e9cf9a;
  --evm-alt-0: #3fa585;  --evm-alt-1: #62b39a;  --evm-alt-2: #93cbb8;
  --evm-alt2-0: #9575c4; --evm-alt2-1: #a88fcd; --evm-alt2-2: #c4b3e0;
  --evm-none: #2a2e34;
  --evm-toss-0: #454b53;
  --evm-label-light: #ffffff;
  --evm-label-dark: #eef0f2;
  --evm-bg: #1b1e22;
  --evm-panel: #24282d;
  --evm-rule: #3a3f46;
  --evm-ink: #e8eaec;
  --evm-ink-dim: #9aa0a6;
  --evm-accent: #4fb3e0;
  --evm-focus: #4fb3e0;
  --evm-mesh: #1b1e22;
  --evm-hover: rgba(255,255,255,.22);
}

.evm-map *, .evm-map *::before, .evm-map *::after { box-sizing: border-box; }
.evm-loading, .evm-error, .evm-missing { padding: 24px; text-align: center; color: var(--evm-ink-dim); }

/* Hold the map's space until it has drawn (1.14.1). The server sends only the payload and
   a "Loading map…" line; map.js then builds the tally, map and controls. Without a reserved
   height everything below the map (the front page's text) jumps down ~700px — that jump was
   a 0.6 layout-shift score on mobile. Heights are the finished component measured on the
   live site (Sept. 28, 2026): forecast ~775–910, results ~945–1170. .evm-drawn is added by
   map.js once the map has rendered (or failed), which drops the reservation. */
.evm-map[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded):not(.evm-bare) { min-height: 780px; }
.evm-map.evm-mode-results[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded):not(.evm-bare) { min-height: 960px; }
@media (max-width: 600px) {
  .evm-map[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded):not(.evm-bare) { min-height: 860px; }
  .evm-map.evm-mode-results[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded):not(.evm-bare) { min-height: 1100px; }
}
/* Inside, map.js builds the pieces before the shapes arrive; hold each one's finished size
   too, or the map box and the controls move once it draws: the tally (filled at draw), the
   map box (its own shape plus the note under it), and on phones the small-state buttons. */
.evm-tally-ph { margin: 0 0 10px; }
.evm-map.evm-ready > .evm-tally-ph { display: none; }
.evm-mapwrap > .evm-loading { aspect-ratio: 1056 / 660; display: flex; align-items: center; justify-content: center; }
.evm-map[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded) :is(.evm-tally, .evm-tally-ph) { min-height: 57px; }
.evm-map.evm-mode-results[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded) :is(.evm-tally, .evm-tally-ph) { min-height: 84px; }
@media (min-width: 601px) and (max-width: 900px) {
  .evm-map[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded) :is(.evm-tally, .evm-tally-ph) { min-height: 73px; }
  .evm-map.evm-mode-results[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded) :is(.evm-tally, .evm-tally-ph) { min-height: 100px; }
}
@media (max-width: 600px) {
  .evm-map[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded) :is(.evm-tally, .evm-tally-ph) { min-height: 90px; }
  .evm-map.evm-mode-results[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded) :is(.evm-tally, .evm-tally-ph) { min-height: 138px; }
  .evm-map[data-evm-map]:not(.evm-drawn):not(.evm-admin):not(.evm-embedded) .evm-chips { display: block; min-height: 108px; }
}

/* fills — used by states, chips, bar segments, swatches, dots */
.evm-f-dem-0 { fill: var(--evm-dem-0); background: var(--evm-dem-0); color: var(--evm-label-light); }
.evm-f-dem-1 { fill: var(--evm-dem-1); background: var(--evm-dem-1); color: var(--evm-label-light); }
.evm-f-dem-2 { fill: var(--evm-dem-2); background: var(--evm-dem-2); color: var(--evm-label-dark); }
.evm-f-rep-0 { fill: var(--evm-rep-0); background: var(--evm-rep-0); color: var(--evm-label-light); }
.evm-f-rep-1 { fill: var(--evm-rep-1); background: var(--evm-rep-1); color: var(--evm-label-light); }
.evm-f-rep-2 { fill: var(--evm-rep-2); background: var(--evm-rep-2); color: var(--evm-label-dark); }
.evm-f-other-0 { fill: var(--evm-other-0); background: var(--evm-other-0); color: var(--evm-label-light); }
.evm-f-other-1 { fill: var(--evm-other-1); background: var(--evm-other-1); color: var(--evm-label-dark); }
.evm-f-other-2 { fill: var(--evm-other-2); background: var(--evm-other-2); color: var(--evm-label-dark); }
.evm-f-alt-0 { fill: var(--evm-alt-0); background: var(--evm-alt-0); color: var(--evm-label-light); }
.evm-f-alt-1 { fill: var(--evm-alt-1); background: var(--evm-alt-1); color: var(--evm-label-dark); }
.evm-f-alt-2 { fill: var(--evm-alt-2); background: var(--evm-alt-2); color: var(--evm-label-dark); }
.evm-f-alt2-0 { fill: var(--evm-alt2-0); background: var(--evm-alt2-0); color: var(--evm-label-light); }
.evm-f-alt2-1 { fill: var(--evm-alt2-1); background: var(--evm-alt2-1); color: var(--evm-label-dark); }
.evm-f-alt2-2 { fill: var(--evm-alt2-2); background: var(--evm-alt2-2); color: var(--evm-label-dark); }
/* 1.12.0: states with no electoral votes that year (not yet states, or not voting) */
.evm-u.evm-u--none { fill: var(--evm-none); cursor: default; }
.evm-u.evm-u--none:hover { fill: var(--evm-none); filter: none; }
.evm-tally__side.evm-tally__side--other .evm-tally__num { color: var(--evm-other-0); }
.evm-tally__side.evm-tally__side--alt .evm-tally__num { color: var(--evm-alt-0); }
.evm-f-toss-0 { fill: var(--evm-toss-0); background: var(--evm-toss-0); color: var(--evm-label-dark); }

/* ---- tally ---- */
.evm-tally { margin: 0 0 10px; }
.evm-tally__row { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; }
.evm-tally__side { display: flex; flex-direction: column; line-height: 1; min-width: 0; }
.evm-tally__side--rep { text-align: right; align-items: flex-end; }
.evm-tally__num { font-size: 44px; font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.evm-tally__side--dem .evm-tally__num { color: var(--evm-dem-0); }
.evm-tally__side--rep .evm-tally__num { color: var(--evm-rep-0); }
.evm-tally__name { font-size: 14px; font-weight: 600; margin-top: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 40vw; }
.evm-tally__side.is-winner .evm-tally__name::after { content: " ✓"; }
.evm-tally__mid { text-align: center; font-size: 13px; color: var(--evm-ink-dim); padding-bottom: 4px; display: flex; flex-direction: column; gap: 2px; }
.evm-tally__towin { font-weight: 600; }
.evm-bar { position: relative; display: flex; height: 10px; margin-top: 8px; background: var(--evm-toss-0); border-radius: 3px; overflow: visible; }
.evm-bar__seg { display: block; height: 100%; }
.evm-bar__seg:first-child { border-radius: 3px 0 0 3px; }
.evm-bar__seg:last-of-type { border-radius: 0 3px 3px 0; }
.evm-bar__tick { position: absolute; top: -3px; bottom: -3px; width: 2px; background: var(--evm-ink); transform: translateX(-1px); }
.evm-tally__extras { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 8px; font-size: 13px; color: var(--evm-ink-dim); }
.evm-tally__extras b { color: var(--evm-ink); }
.evm-tally__pv { margin-top: 6px; font-size: 13px; color: var(--evm-ink-dim); }
.evm-tally__pv i { font-style: normal; opacity: .8; }
.evm-tally__pvlabel { font-weight: 600; text-transform: uppercase; font-size: 11px; letter-spacing: .04em; margin-right: 4px; }

/* ---- sticky tally on phones ---- */
.evm-tally-sentinel { height: 1px; margin-bottom: -1px; }
@media (max-width: 800px) {
  .evm-map:not(.evm-embedded) .evm-tally {
    position: -webkit-sticky; position: sticky; top: 0; z-index: 30;
    background: var(--evm-bg); padding: 8px 0;
    transition: padding .15s, box-shadow .15s;
  }
  .evm-tally.is-stuck { padding-top: 6px; padding-bottom: 6px; box-shadow: 0 2px 8px rgba(0,0,0,.14); }
  .evm-tally.is-stuck .evm-tally__row { align-items: center; }
  .evm-tally.is-stuck .evm-tally__num { font-size: 26px; }
  .evm-tally.is-stuck .evm-tally__name { display: none; }  /* the colors say which side */
  .evm-tally.is-stuck .evm-tally__mid { padding-bottom: 0; font-size: 12px; flex-direction: row; gap: 8px; white-space: nowrap; }
  .evm-tally.is-stuck .evm-bar { margin-top: 5px; height: 6px; }
  .evm-tally.is-stuck .evm-tally__extras, .evm-tally.is-stuck .evm-tally__pv { display: none; }
}
html[data-evm-theme="dark"] .evm-tally.is-stuck { box-shadow: 0 2px 8px rgba(0,0,0,.5); }

/* ---- palette ---- */
.evm-palette { display: none; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 10px; }
.evm-tiers-on .evm-palette { display: flex; }
.evm-swatch { border: 2px solid transparent; border-radius: 6px; padding: 5px 10px; font: 600 12px/1 var(--evm-sans); cursor: pointer; }
.evm-swatch.is-active { border-color: var(--evm-ink); box-shadow: 0 0 0 2px var(--evm-bg) inset; }
.evm-palette__hint { font-size: 12px; color: var(--evm-ink-dim); margin-left: 4px; }

/* ---- map ---- */
.evm-mapwrap { position: relative; width: 100%; max-width: var(--evm-map-max); margin: 0 auto; }
.evm-svg { display: block; width: 100%; height: auto; overflow: visible; }
.evm-u { cursor: pointer; stroke: none; transition: filter .12s; outline: none; }
.evm-u:hover, .evm-u:focus-visible { filter: brightness(.85); }
.evm-u:focus-visible { stroke: var(--evm-focus); stroke-width: 2.5; }
.evm-mesh { fill: none; stroke: var(--evm-mesh); stroke-width: 1; pointer-events: none; }
.evm-label { font: 700 12px/1 var(--evm-sans); pointer-events: none; fill: var(--evm-label-light); }
.evm-label.evm-f-dem-2, .evm-label.evm-f-rep-2, .evm-label.evm-f-other-1, .evm-label.evm-f-other-2, .evm-label.evm-f-alt-1, .evm-label.evm-f-alt-2, .evm-label.evm-f-alt2-1, .evm-label.evm-f-alt2-2, .evm-label.evm-f-toss-0 { fill: var(--evm-label-dark); }
.evm-label__ev { font-weight: 500; font-size: 11px; }
/* Phones: the SVG scales down ~2.5x, so show only the state code, larger. */
.evm-compact .evm-label { font-size: 22px; transform: translateY(0.4em); }
.evm-compact .evm-label__ev { display: none; }

/* ---- inset boxes (small states, districts, Hawaii) ---- */
.evm-inset { cursor: pointer; outline: none; }
.evm-inset__box { stroke: var(--evm-mesh); stroke-width: 1; }
.evm-inset:hover .evm-inset__box, .evm-inset:focus-visible .evm-inset__box { filter: brightness(.85); }
.evm-inset:focus-visible .evm-inset__box { stroke: var(--evm-focus); stroke-width: 2; }
.evm-inset__label { font: 700 14px/1 var(--evm-sans); pointer-events: none; fill: var(--evm-label-light); }
.evm-inset.evm-f-dem-2 .evm-inset__label, .evm-inset.evm-f-rep-2 .evm-inset__label, .evm-inset.evm-f-other-1 .evm-inset__label, .evm-inset.evm-f-other-2 .evm-inset__label, .evm-inset.evm-f-alt-1 .evm-inset__label, .evm-inset.evm-f-alt-2 .evm-inset__label, .evm-inset.evm-f-alt2-1 .evm-inset__label, .evm-inset.evm-f-alt2-2 .evm-inset__label, .evm-inset.evm-f-toss-0 .evm-inset__label { fill: var(--evm-label-dark); }
.evm-inset .evm-label__ev { font-size: 12px; }
.evm-inset__caption { font: 500 9px/1 var(--evm-sans); fill: var(--evm-ink-dim); pointer-events: none; }
.evm-label__ev--split { font-size: 8px; }
.evm-compact .evm-label__ev--split { display: none; }
.evm-split-note { margin: 6px 0 0; font: 12px/1.4 var(--evm-sans); color: var(--evm-ink-dim); }
.evm-compact .evm-insets { display: none; }

/* ---- chips ---- */
.evm-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 0; }
.evm-chips:empty { display: none; }
.evm-chips .evm-chip--inset { display: none; }
.evm-compact .evm-chips .evm-chip--inset { display: inline-flex; }
.evm-chip { display: inline-flex; align-items: center; gap: 6px; border: 0; border-radius: 6px; padding: 7px 10px; font: 700 13px/1 var(--evm-sans); cursor: pointer; min-height: 32px; }
.evm-chip__ev { font-weight: 500; opacity: .9; }
.evm-chip:hover { filter: brightness(.85); }
.evm-chip:focus-visible { outline: 2px solid var(--evm-focus); outline-offset: 2px; }

/* ---- info strip ---- */
/* ---- state bubble (1.6.2; replaced the info strip) ---- */
.evm-map { position: relative; }
.evm-tip { position: absolute; z-index: 30; max-width: 290px; padding: 10px 12px; background: var(--evm-bg); color: var(--evm-ink); border: 1px solid var(--evm-rule); border-radius: 8px; box-shadow: 0 6px 20px rgba(0,0,0,.16); font: 14px/1.4 var(--evm-sans); pointer-events: none; }
.evm-tip[hidden] { display: none; }
.evm-tip strong { font-size: 15px; }
.evm-tip__ev { color: var(--evm-ink-dim); margin-left: 4px; font-size: 13px; }
.evm-tip__now { display: table; margin-top: 6px; padding: 2px 8px; border-radius: 4px; font-size: 12px; font-weight: 600; text-transform: capitalize; background: var(--evm-toss-0); color: var(--evm-label-dark); }
.evm-tip__now.evm-t-dem { background: var(--evm-dem-0); color: var(--evm-label-light); }
.evm-tip__now.evm-t-rep { background: var(--evm-rep-0); color: var(--evm-label-light); }
.evm-tip__now.evm-t-other { background: var(--evm-other-0); color: var(--evm-label-light); }
.evm-tip__now.evm-t-alt { background: var(--evm-alt-0); color: var(--evm-label-light); }
.evm-tip__now.evm-t-alt2 { background: var(--evm-alt2-0); color: var(--evm-label-light); }
.evm-tip__results { display: flex; flex-direction: column; gap: 2px; margin-top: 6px; }
.evm-tip__cand b { font-weight: 700; }
.evm-tip__votes { color: var(--evm-ink-dim); font-size: 12px; }
.evm-tip__split, .evm-tip__note { margin-top: 6px; font-size: 12.5px; color: var(--evm-ink-dim); }
.evm-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 5px; vertical-align: -1px; }

/* ---- controls ---- */
.evm-controls { margin: 12px 0 0; display: flex; flex-direction: column; gap: 8px; }
.evm-controls__row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.evm-btn, .evm-select {
  font: 600 13px/1 var(--evm-sans); color: var(--evm-ink); background: var(--evm-panel);
  border: 1px solid var(--evm-rule); border-radius: 6px; padding: 8px 12px; cursor: pointer; text-decoration: none; min-height: 34px;
}
.evm-btn:hover, .evm-select:hover { border-color: var(--evm-ink-dim); text-decoration: none; }
.evm-btn:disabled { opacity: .45; cursor: default; }
.evm-btn--primary { background: var(--evm-accent); border-color: var(--evm-accent); color: #fff; }
.evm-btn--primary:hover { color: #fff; filter: brightness(1.1); }
.evm-btn--quiet { background: transparent; }
.evm-btn--icon { display: inline-flex; align-items: center; justify-content: center; width: 38px; padding: 0; }
.evm-ico { width: 17px; height: 17px; fill: currentColor; flex: none; }
.evm-share-group { display: inline-flex; gap: 6px; padding: 0 8px; border-left: 1px solid var(--evm-rule); border-right: 1px solid var(--evm-rule); }
.evm-btn--toggle { display: inline-flex; align-items: center; gap: 8px; }
.evm-toggle__dot { width: 26px; height: 14px; border-radius: 7px; background: var(--evm-toss-0); position: relative; flex: none; transition: background .15s; }
.evm-toggle__dot::after { content: ""; position: absolute; top: 2px; left: 2px; width: 10px; height: 10px; border-radius: 50%; background: var(--evm-bg); transition: left .15s; }
.evm-btn--toggle.is-on { border-color: var(--evm-accent); color: var(--evm-accent); }
.evm-btn--toggle.is-on .evm-toggle__dot { background: var(--evm-accent); }
.evm-btn--toggle.is-on .evm-toggle__dot::after { left: 14px; }
.evm-btn:focus-visible, .evm-select:focus-visible, .evm-swatch:focus-visible { outline: 2px solid var(--evm-focus); outline-offset: 2px; }
.evm-select { padding-right: 28px; appearance: auto; width: auto; max-width: 240px; flex: 0 0 auto; }
.evm-embed label { display: block; font-size: 12px; color: var(--evm-ink-dim); margin-bottom: 4px; }
.evm-embed textarea { width: 100%; font: 12px/1.4 Menlo, Consolas, monospace; background: var(--evm-panel); color: var(--evm-ink); border: 1px solid var(--evm-rule); border-radius: 6px; padding: 8px; }
.evm-embed-foot { margin-top: 8px; font-size: 13px; text-align: right; }
.evm-embed-foot a { color: var(--evm-accent); }

/* ---- swing slider ---- */
.evm-swing { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 4px; font-family: var(--evm-sans); }
.evm-swing__label { font: 700 13px/1 var(--evm-sans); color: var(--evm-ink); }
.evm-swing__track { display: flex; align-items: center; gap: 8px; flex: 1 1 260px; min-width: 0; }
.evm-swing__end { font: 600 12px/1 var(--evm-sans); white-space: nowrap; }
.evm-swing__range { flex: 1; min-width: 80px; accent-color: var(--evm-accent); cursor: pointer; }
.evm-swing__value { font: 800 15px/1 var(--evm-sans); min-width: 64px; text-align: right; color: var(--evm-ink-dim); }
.evm-t-dem { color: var(--evm-dem-0); }
.evm-t-rep { color: var(--evm-rep-0); }
.evm-swing__note { margin: 0; font: 13px/1.45 var(--evm-sans); color: var(--evm-ink-dim); }
.evm-swing__note b { color: var(--evm-ink); }

.evm-shade-legend { margin: 0; font: 13px/1.6 var(--evm-sans); color: var(--evm-ink-dim); }
.evm-shade-legend .evm-dot { margin-right: 2px; }
.evm-shade-legend .evm-dot + .evm-dot { margin-left: -2px; }

/* ---- closest call ---- */
.evm-closest { margin-top: 18px; padding: 14px 16px; border-left: 4px solid var(--evm-accent); background: var(--evm-panel); border-radius: 0 8px 8px 0; font: 15px/1.5 var(--evm-sans); color: var(--evm-ink); }
.evm-closest__title { margin: 0 0 6px; font: 700 12px/1 var(--evm-sans); text-transform: uppercase; letter-spacing: .06em; color: var(--evm-ink-dim); }
.evm-closest p { margin: 0 0 8px; }
.evm-closest__lede { font-size: 17px; }
.evm-closest p:last-child { margin-bottom: 0; }

/* ---- paths to 270 ---- */
.evm-paths { margin-top: 18px; background: var(--evm-panel); border-radius: 8px; font-family: var(--evm-sans); }
.evm-paths__toggle { display: flex; align-items: center; gap: 10px; width: 100%; padding: 12px 16px; background: none; border: 0; border-radius: 8px; cursor: pointer; text-align: left; color: var(--evm-ink); font-family: var(--evm-sans); }
.evm-paths__toggle:hover { background: var(--evm-panel-hover, rgba(0,0,0,.03)); }
.evm-paths__toggle:focus-visible { outline: 2px solid var(--evm-focus); outline-offset: 2px; }
.evm-paths__title { font: 700 16px/1.3 var(--evm-sans); color: var(--evm-ink); }
.evm-paths__summary { font-size: 13px; color: var(--evm-ink-dim); }
.evm-paths__chev { width: 22px; height: 22px; margin-left: auto; fill: currentColor; flex: none; transition: transform .15s; }
.evm-paths.is-open .evm-paths__chev { transform: rotate(180deg); }
.evm-paths__body { padding: 0 16px 14px; }
.evm-paths__lede, .evm-paths__hint { margin: 0 0 10px; font-size: 14px; color: var(--evm-ink-dim); }
.evm-paths__cols { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.evm-paths__side { margin: 0 0 6px; font: 700 14px/1.3 var(--evm-sans); color: var(--evm-ink); }
.evm-paths__status { margin: 0 0 8px; font-size: 14px; color: var(--evm-ink); }
.evm-paths__must, .evm-paths__nomatter, .evm-paths__count { margin: 0 0 6px; font-size: 13px; color: var(--evm-ink-dim); }
.evm-paths__unit { font: 700 12px/1 var(--evm-sans); border: 1px solid var(--evm-rule); background: var(--evm-bg); color: var(--evm-ink); border-radius: 4px; padding: 4px 7px; cursor: pointer; }
.evm-paths__unit:hover { border-color: var(--evm-ink-dim); }
.evm-paths__list { margin: 0; padding: 0 0 0 20px; font-size: 13px; }
.evm-paths__list li { margin: 0 0 4px; }
.evm-paths__path { font: 500 13px/1.3 var(--evm-sans); color: var(--evm-ink); background: none; border: 0; padding: 2px 0; cursor: pointer; text-align: left; }
.evm-paths__path:hover { color: var(--evm-accent); text-decoration: underline; }
.evm-paths__ev { color: var(--evm-ink-dim); font-size: 12px; margin-left: 4px; }
.evm-paths__more { font: 600 12px/1 var(--evm-sans); background: none; border: 0; color: var(--evm-accent); padding: 4px 0; cursor: pointer; }
.evm-u.is-hl, .evm-inset.is-hl .evm-inset__box { stroke: var(--evm-ink); stroke-width: 3; filter: brightness(1.08); }
.evm-chip.is-hl { outline: 3px solid var(--evm-ink); }
@media (max-width: 600px) {
  .evm-paths__cols { grid-template-columns: 1fr; }
  .evm-share-group { padding: 0; border: 0; }  /* the row wraps on phones; dividers would start a line */
}

/* ---- notes ---- */
.evm-notes { margin-top: 18px; padding: 14px 16px; background: var(--evm-panel); border-radius: 8px; font-size: 16px; line-height: 1.5; color: var(--evm-ink); }
.evm-notes__title { margin: 0 0 8px; font: 700 15px/1.3 var(--evm-sans); color: var(--evm-ink); }
.evm-notes ul { margin: 0 0 0 18px; padding: 0; }
.evm-notes li { margin: 0 0 6px; }
.evm-notes strong { color: var(--evm-ink); }

/* ---- What changed? ---- */
.evm-what-changed__title { margin: 0 0 8px; }
.evm-what-changed__item { margin: 0 0 14px; }
.evm-what-changed__date { display: block; font: 600 12px/1.2 var(--evm-sans, sans-serif); text-transform: uppercase; letter-spacing: .04em; color: var(--evm-ink-dim, #666c73); margin-bottom: 4px; }
.evm-what-changed__tally { font: 13px/1.4 var(--evm-sans, sans-serif); margin: 0 0 6px; color: var(--evm-ink-dim, #666c73); }
.evm-what-changed__tally b { color: var(--evm-ink, #1f2327); }
.evm-what-changed__tally .evm-t-dem b { color: var(--evm-dem-0, #1d5fbf); }
.evm-what-changed__tally .evm-t-rep b { color: var(--evm-rep-0, #c0392b); }
.evm-what-changed__note > :last-child { margin-bottom: 0; }
.evm-what-changed__link { font: 600 13px/1.4 var(--evm-sans, sans-serif); margin: 4px 0 0; }
html[data-evm-theme="dark"] .evm-what-changed__tally b { color: #e8eaec; }

/* ---- Political Wire news ---- */
.evm-news { list-style: none; margin: 0; padding: 0; }
.evm-news__item { padding: 8px 0; border-bottom: 1px solid var(--evm-rule, #dfe2e6); line-height: 1.35; }
.evm-news__item:last-child { border-bottom: 0; }
.evm-news__title { font: 600 15px/1.35 var(--evm-sans, sans-serif); }
.evm-news__date { font: 12px/1 var(--evm-sans, sans-serif); color: var(--evm-ink-dim, #666c73); white-space: nowrap; margin-left: 6px; }
.evm-news__excerpt { margin: 4px 0 0; font-size: 14px; color: var(--evm-ink-dim, #666c73); }
.evm-news__more { font: 600 13px/1.4 var(--evm-sans, sans-serif); margin: 8px 0 0; }

/* ---- admin editor ---- */
.evm-admin { max-width: 960px; background: #fff; padding: 16px; border: 1px solid #c3c4c7; border-radius: 8px; margin: 12px 0 24px; }

/* ---- elections dropdown / list shortcode ---- */
.evm-elections-select select {
  width: 100%; max-width: 100%; padding: 10px 36px 10px 12px; border: 1px solid var(--evm-rule, #dfe2e6); border-radius: 8px;
  background: var(--evm-bg, #fff); color: var(--evm-ink, #1f2327); font: 600 15px/1.2 -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  appearance: none; -webkit-appearance: none; cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-position: calc(100% - 18px) 55%, calc(100% - 12px) 55%; background-size: 6px 6px, 6px 6px; background-repeat: no-repeat;
}
.evm-elections-select select:focus-visible { outline: 2px solid var(--evm-focus, #0d527a); outline-offset: 2px; }
html[data-evm-theme="dark"] .evm-elections-select select { background-color: #24282d; color: #e8eaec; border-color: #3a3f46; }

.evm-elections-list { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 32px; }
.evm-elections-list li { break-inside: avoid; padding: 6px 0; border-bottom: 1px solid var(--evm-rule, #dfe2e6); font-size: 15px; }
.evm-elections-list a { font-weight: 700; }
.evm-elections-list__tally { color: var(--evm-ink-dim, #666c73); margin-left: 8px; font-size: 13px; }
@media (max-width: 520px) { .evm-elections-list { columns: 1; } }

/* ---- small screens ---- */
@media (max-width: 600px) {
  .evm-tally__num { font-size: 34px; }
  .evm-tally__name { font-size: 12px; }
}

/* ---- embedded page ---- */
.evm-embedded { max-width: 960px; }
.evm-closest__list { margin: 0 0 .75em; font-size: .92em; }
.evm-closest__list summary { cursor: pointer; font-weight: 600; }
.evm-closest__list p { margin: .4em 0 0; }

/* ---- "What if" swing box and banner (1.6.1) ---- */
.evm-swing-box { margin-top: 10px; background: var(--evm-panel); border-radius: 8px; font-family: var(--evm-sans); }
.evm-swing-box__toggle { display: flex; align-items: center; gap: 10px; width: 100%; padding: 11px 16px; background: none; border: 0; border-radius: 8px; cursor: pointer; text-align: left; color: var(--evm-ink); font-family: var(--evm-sans); }
.evm-swing-box__toggle:hover { background: var(--evm-panel-hover, rgba(0,0,0,.03)); }
.evm-swing-box__toggle:focus-visible { outline: 2px solid var(--evm-focus); outline-offset: 2px; }
.evm-swing-box__title { font: 700 15px/1.3 var(--evm-sans); }
.evm-swing-box.is-open .evm-paths__chev { transform: rotate(180deg); }
.evm-swing-box__body { padding: 0 16px 14px; }
.evm-swing-box__lede { margin: 0 0 10px; font-size: 14px; line-height: 1.45; color: var(--evm-ink-dim); }
.evm-swing-box .evm-swing { margin: 0 0 6px; }
.evm-swing-banner { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 10px 0 0; padding: 9px 12px; border: 1px solid var(--evm-accent); border-radius: 8px; background: var(--evm-panel); font: 14px/1.4 var(--evm-sans); color: var(--evm-ink); }
.evm-swing-banner[hidden] { display: none; }
.evm-swing-banner__back { font: 600 13px/1 var(--evm-sans); padding: 7px 10px; border-radius: 6px; border: 1px solid var(--evm-rule); background: var(--evm-bg); color: var(--evm-accent); cursor: pointer; }
.evm-swing-banner__back:hover { border-color: var(--evm-accent); }
.evm-swing-box .evm-swing__value { margin-left: auto; }

/* ---- layout under the map (1.6.2): controls · share · explore box ---- */
.evm-controls { gap: 12px; }
.evm-controls__share { padding-top: 12px; border-top: 1px solid var(--evm-rule); }
.evm-explore { margin-top: 18px; border: 1px solid var(--evm-rule); border-radius: 10px; background: var(--evm-panel); }
.evm-explore[hidden] { display: none; }
.evm-explore > .evm-swing-box, .evm-explore > .evm-paths { margin: 0; background: none; border-radius: 0; }
.evm-explore > * + .evm-paths:not([hidden]) { border-top: 1px solid var(--evm-rule); }
.evm-explore .evm-swing-box__toggle, .evm-explore .evm-paths__toggle { border-radius: 0; }
.evm-explore > :first-child .evm-swing-box__toggle, .evm-explore > :first-child.evm-paths .evm-paths__toggle, .evm-explore > :first-child > .evm-paths__toggle { border-radius: 9px 9px 0 0; }
.evm-explore .evm-swing-box__title { font-size: 16px; }
.evm-split-note b { color: var(--evm-ink); font-weight: 600; }
.evm-u, .evm-inset, .evm-chip { -webkit-tap-highlight-color: transparent; }
@media (max-width: 600px) {
  .evm-controls__row > .evm-select { flex: 1 1 160px; }
}

/* ---- compact tally (1.6.3): numbers and names on one line, one-line middle ---- */
.evm-tally__num { font-size: 38px; }
.evm-tally__mid { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 0 6px; }
.evm-tally__note::before { content: "· "; }
@media (min-width: 601px) {
  .evm-map:not(.evm-embedded) .evm-tally__row { align-items: baseline; }
  .evm-map:not(.evm-embedded) .evm-tally__side { flex-direction: row; align-items: baseline; gap: 10px; }
  .evm-map:not(.evm-embedded) .evm-tally__side--rep { flex-direction: row-reverse; }
  .evm-map:not(.evm-embedded) .evm-tally__name { margin-top: 0; font-size: 15px; max-width: 22vw; }
  .evm-map:not(.evm-embedded) .evm-tally__mid { padding-bottom: 0; }
}

/* ---- named nominees in the tally (1.7.0) ---- */
.evm-pick { position: relative; display: inline-flex; align-items: center; gap: 2px; cursor: pointer; overflow: visible; text-decoration: underline dotted; text-decoration-color: var(--evm-ink-dim); text-underline-offset: 3px; }
.evm-pick.is-picked { text-decoration: none; }
.evm-pick__chev { width: 16px; height: 16px; flex: none; fill: var(--evm-ink-dim); }
.evm-pick:hover .evm-pick__chev { fill: var(--evm-ink); }
.evm-pick__select { position: absolute; inset: -6px -4px; width: calc(100% + 8px); height: calc(100% + 12px); opacity: 0; cursor: pointer; font-size: 16px; -webkit-appearance: none; appearance: none; border: 0; }
.evm-pick:focus-within { outline: 2px solid var(--evm-focus); outline-offset: 3px; border-radius: 3px; }
.evm-tally__side--rep .evm-pick { flex-direction: row; }

/* ---- a forecaster's ratings on the map: credit line (1.7.0) ---- */
.evm-source { margin: 10px 0 0; padding: 8px 12px; border: 1px solid var(--evm-rule); border-left: 3px solid var(--evm-ink-dim); border-radius: 6px; background: var(--evm-panel); font: 14px/1.4 var(--evm-sans); color: var(--evm-ink); }
.evm-source[hidden] { display: none; }
.evm-source a { color: var(--evm-accent); font-weight: 600; }
.evm-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px,1px,1px,1px); clip-path: inset(50%); white-space: nowrap; }

/* ---- Political Wire logo atop the news widget (1.10.1) ---- */
.evm-pwlogo { display: block; margin: 0 0 12px; line-height: 0; text-decoration: none; border: 0; }
.evm-pwlogo__img { display: block; width: 100%; max-width: 220px; height: auto; }
html[data-evm-theme="dark"] .evm-pwlogo__img--light { display: none !important; }
html[data-evm-theme="dark"] .evm-pwlogo__img--dark { display: block !important; }
.evm-pwlogo:focus-visible { outline: 2px solid var(--evm-focus, #0d527a); outline-offset: 4px; border-radius: 2px; }
/* Historical results widget: the state dropdown under the elections one (1.10.2) */
.evm-results-widget__states { margin-top: 10px; }
/* Page links widget (1.10.3) — list rows come from the theme's .evmt-card li. */
.evm-links { list-style: none; margin: 0; padding: 0; }
.evm-links__link { font-weight: 600; text-decoration: none; }
.evm-links__link:hover { text-decoration: underline; }
.evm-links__item.is-current .evm-links__link { color: inherit; text-decoration: none; cursor: default; }
.evm-links__item--sub { padding-left: 14px; }
.evm-links__desc { display: block; margin-top: 2px; font-size: 13px; line-height: 1.4; color: var(--evmt-ink-dim, #666c73); }

/* ---- 1.13.0: 2032 electoral votes, a tie, how our map has changed ---- */
.evm-ev-banner a { color: var(--evm-accent); font-weight: 600; }
.evm-ev2032-on .evm-label__ev { font-weight: 800; }
.evm-explore > * + .evm-swing-box { border-top: 1px solid var(--evm-rule); }
.evm-swing-box__toggle .evm-paths__summary { margin-left: auto; }
.evm-swing-box__toggle .evm-paths__summary + .evm-paths__chev { margin-left: 0; }

.evm-tie p { margin: 0 0 10px; }
.evm-tie__title { margin: 0 0 8px; font: 700 17px/1.3 var(--evm-sans); color: var(--evm-ink); text-transform: none; letter-spacing: 0; }
.evm-tie__now { font-size: 14.5px; }
.evm-tie__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(38px, 1fr)); gap: 3px; margin: 0 0 12px; max-width: 520px; }
.evm-tie__st { font: 700 11px/1 var(--evm-sans); text-align: center; padding: 6px 0; border-radius: 3px; }
.evm-tie__fine { font-size: 12.5px; color: var(--evm-ink-dim); }
.evm-tie p:last-child { margin-bottom: 0; }

.evm-tl__range { flex: 1 1 auto; min-width: 0; }
.evm-tl .evm-swing__end { font-size: 12px; color: var(--evm-ink-dim); white-space: nowrap; }
.evm-tl__out { margin-top: 10px; font: 14px/1.45 var(--evm-sans); color: var(--evm-ink); }
.evm-tl__out p { margin: 0 0 6px; }
.evm-tl__badge { display: inline-block; margin-left: 6px; padding: 2px 6px; border-radius: 4px; font: 700 11px/1.3 var(--evm-sans); text-transform: uppercase; letter-spacing: .04em; background: var(--evm-accent); color: #fff; }
html[data-evm-theme="dark"] .evm-tl__badge { color: #1b1e22; }
.evm-tl__tally b { font-weight: 800; }
.evm-tl__moves { margin: 0 0 6px; padding: 0; list-style: none; font-size: 13.5px; }
.evm-tl__moves li { margin: 2px 0; }
.evm-tl__note { color: var(--evm-ink-dim); font-size: 13.5px; }
.evm-tl__all { margin: 8px 0 0; font-size: 13.5px; }
.evm-tl__all a { color: var(--evm-accent); font-weight: 600; }
.evm-ev-banner abbr { text-decoration: none; border: 0; cursor: help; }
.evm-ev-banner__chg { white-space: normal; }
.evm-map .evm-tie .evm-tie__title { margin: 0 0 8px; padding: 0; }
