/* swingometer.css - /swingometer/ (us_site/swingometer.py, swingometer.js). Prefix usw-, tokens only.
   Loaded after results-archive.css (map, ramp, tooltip), president-2028.css (margin swatches), president-2028-map.css
   (chips) and seat-calculator.css (seat bars, House zoom map, Senate map: the sc- classes); the House and Senate pages
   load only president-2028.css and seat-calculator.css before it (congress_swing.py PAGE_CSS).
   Map-first layout (PJ, 6 Nov 2026, design direction A). Desktop (from 1000px; the "Desktop frame" block at the end,
   PJ, 6 Nov 2026): the sliders in a sticky left column (.usw-side: the dock's main slider, then the sheet's tabs, both
   static there), the centre (.usw-centre) with the starting point, the poll pills, the headline numbers either side
   of the bar, the map, the battleground strip and the facts under it, and when the page loaded at 1400px or wider
   (body.sidebar-ready, swingometer.py RAIL_JS) a 300px right rail left EMPTY for Raptive's sidebar ad (.tool-rail,
   the site's convention from css/tool-sidebar.css). Phones (below 1000px, unchanged; no ads on these pages): tabs, numbers, the map edge to edge, the battleground
   strip, the poll pills, Shift everyone in the dock; the sheet takes the dock's place at half height with the
   headline and the map live above it.
   .usw-z undoes the site's html { zoom: 0.8 } (style.css), so the page is drawn 1:1 in screen pixels as the design
   boards are: 40px here is a 40px tap target. Lengths from the site (--us-nav-h, --pc-ad-inset) are in the zoomed
   CSS pixels and are scaled back (--usw-nav, --usw-ad). */

/* ---- Page frame ---- */
.us-main:has(.usw-z), body.usw-has-dock .us-main { max-width: none; padding: 0 0 40px; }
.us-main:has(.usw-z) > .pc-sources, .us-main:has(.usw-z) > .us-built,
body.usw-has-dock .us-main > .pc-sources, body.usw-has-dock .us-main > .us-built {
    max-width: 1152px; margin-left: auto; margin-right: auto; padding-left: 38px; padding-right: 38px; }
body:has(.usw-z), body.usw-has-dock { background: var(--pc-surface); }
.usw-z { zoom: 1.25; --usw-nav: calc(var(--us-nav-h, 0px) * 0.8); --usw-ad: calc(var(--pc-ad-inset, 0px) * 0.8);
    --usw-ink-d: var(--pc-text); --usw-tap: 40px; --usw-pad: 48px;
    max-width: 1440px; margin: 0 auto; padding: 22px var(--usw-pad) 0; font-family: var(--pc-sans); color: var(--pc-text); }
body.dark-mode .usw-z { --usw-ink-d: var(--pc-on-ink); }
.usw-sr { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0);
    white-space: nowrap; border: 0; }
.usw-z p { margin: 0; }
.usw-grid { min-width: 0; }
.usw-office[hidden] { display: none; }
.usw-d { color: var(--us-dem-text); }
.usw-r { color: var(--us-rep-text); }
.usw-short { display: none; }
.usw-method { margin: 28px 0 0; font-size: 12px; color: var(--pc-text-meta); }

/* ---- Top line: office tabs (left), starting point, matchup and share (right) ---- */
.usw-top { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 8px 32px;
    border-bottom: 1px solid var(--pc-border); }
.usw-board { display: flex; gap: 40px; min-width: 0; }
.usw-tab { display: flex; align-items: baseline; gap: 12px; min-width: 0; margin: 0 0 -1px; padding: 0 0 10px; background: none; border: 0;
    border-bottom: 3px solid transparent; cursor: pointer; text-align: left; font-family: var(--pc-sans); color: var(--pc-text); }
.usw-tab.is-active { border-bottom-color: var(--pc-text); }
.usw-tab-k { font-size: 13px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--pc-text-meta); }
.usw-tab.is-active .usw-tab-k, .usw-tab:hover .usw-tab-k { color: var(--pc-text); }
.usw-tab-n { display: flex; align-items: baseline; gap: 12px; font-size: 22px; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.usw-tab-d { color: var(--us-dem-text); }
.usw-tab-r { color: var(--us-rep-text); }
.usw-pre { display: flex; align-items: center; gap: 20px; padding-bottom: 8px; }
.pc-mode-toggle.usw-presets, .pc-mode-toggle.usw-view, .pc-mode-toggle.usw-tabs, .usw-z .usw-geo, .usw-z .usw-ce .pc-mode-toggle {
    margin: 0; border: 0; background: var(--pc-border-light); }
.usw-z .pc-mode-btn + .pc-mode-btn { border-left: 0; }
.usw-presets .pc-mode-btn { min-height: 34px; padding: 9px 14px; font-size: 13px; color: var(--pc-text-body); }
.usw-z .pc-mode-btn.is-active { background: var(--pc-text); color: var(--pc-on-ink); }
.usw-pairs { position: relative; }
.usw-pairs[hidden] { display: none; }
.usw-pairs::after { content: ""; position: absolute; right: 2px; top: 50%; width: 6px; height: 6px; margin-top: -5px;
    border: solid var(--pc-text); border-width: 0 1.6px 1.6px 0; transform: rotate(45deg); pointer-events: none; }
.usw-pair-sel { appearance: none; -webkit-appearance: none; min-height: 34px; padding: 4px 20px 4px 0; background: none; border: 0;
    border-bottom: 1px solid var(--pc-text); border-radius: 0; cursor: pointer; font-family: var(--pc-sans); font-size: 14px; font-weight: 700;
    color: var(--pc-text); }
.usw-pair-sel option { color: var(--pc-text); background: var(--pc-surface); }
.usw-acts { position: relative; display: inline-flex; align-items: center; }
.usw-act { display: inline-flex; align-items: center; justify-content: center; min-height: 34px; padding: 0 6px; background: none; border: 0;
    cursor: pointer; font-family: var(--pc-sans); font-size: 13px; font-weight: 600; color: var(--pc-text); }
.usw-share > summary { list-style: none; min-width: 34px; }
.usw-share > summary::-webkit-details-marker { display: none; }
.pc-filter-menu.usw-share-menu { left: auto; right: 0; min-width: 200px; padding: 4px 0; z-index: 30; }
.usw-share-opt { display: block; width: 100%; min-height: 40px; padding: 9px 14px; background: none; border: 0; text-align: left; cursor: pointer;
    font-family: var(--pc-sans); font-size: 14px; color: var(--pc-text-body); }
.usw-share-opt:hover, .usw-share-opt:focus-visible { background: var(--pc-hover-bg); color: var(--pc-text); outline: none; }
.usw-share-fb { position: absolute; right: 0; top: 100%; white-space: nowrap; font-size: 12px; font-weight: 600; color: var(--pc-text-meta); }

/* ---- Poll pills: firm, date and two-party margin as text; the loaded one underlined ---- */
.usw-src { display: flex; align-items: center; gap: 4px 26px; min-width: 0; padding-top: 12px; }
.usw-src--m { display: none; }
.usw-polls { flex: 1 1 auto; min-width: 0; }
.usw-polls:empty { min-height: 32px; }       /* the pills' row reserved before the JS fills it (no layout shift) */
.usw-polls-k { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.usw-polls-row { display: flex; gap: 26px; overflow-x: auto; scrollbar-width: none; }
.usw-polls-row::-webkit-scrollbar { display: none; }
.usw-pill { flex: 0 0 auto; display: inline-flex; align-items: baseline; gap: 6px; min-height: 32px; padding: 6px 0; background: none; border: 0;
    border-bottom: 2px solid transparent; cursor: pointer; white-space: nowrap; font-family: var(--pc-sans); font-size: 13px;
    color: var(--pc-text-body); font-variant-numeric: tabular-nums; }
.usw-pill:hover { border-bottom-color: var(--pc-border); }
.usw-pill.is-active { border-bottom-color: var(--pc-text); }
.usw-pill-n { font-weight: 600; color: var(--pc-text); }
.usw-pill-s { color: var(--pc-text-meta); }
.usw-pill-m { font-weight: 700; }
.usw-pill-m .usw-sw { display: none; }
.usw-pill-x { display: inline-block; width: 5px; height: 5px; margin: 0 0 2px 4px; border-radius: 50%; background: currentColor; vertical-align: middle; }
.usw-pill-cl { display: inline-block; width: 7px; height: 7px; margin: 0 0 1px 4px; border: 1.5px solid currentColor; border-radius: 50%;
    box-sizing: border-box; vertical-align: middle; opacity: 0.8; }
.usw-wk { flex: 0 0 auto; font-size: 12px; color: var(--pc-text-meta); font-variant-numeric: tabular-nums; }
.usw-wk[hidden] { display: none; }
.usw-wk b { font-weight: 700; }
.usw-wk span { white-space: nowrap; }

/* ---- Headline: the two sides' numbers either side of the bar and its majority mark ---- */
.usw-hero { display: flex; align-items: flex-end; gap: 28px; margin-top: 40px; }
.usw-hs { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.usw-hs--d { --party-text: var(--us-dem-text); }
.usw-hs--r { --party-text: var(--us-rep-text); align-items: flex-end; }
.usw-hn { display: flex; align-items: baseline; gap: 8px; font-size: 14px; font-weight: 700; color: var(--party-text); white-space: nowrap; }
.usw-hs--r .usw-hn { flex-direction: row-reverse; }
.usw-hv { font-size: 104px; font-weight: 700; line-height: 0.86; letter-spacing: -0.04em; color: var(--party-text); font-variant-numeric: tabular-nums; }
.usw-chg { font-size: 12px; font-weight: 600; color: var(--pc-text-meta); font-variant-numeric: tabular-nums; }
.usw-chg.is-up { color: var(--party-text); }
.usw-hc { flex: 1 1 auto; display: flex; flex-direction: column; gap: 8px; min-width: 0; padding-bottom: 8px; }
.usw-hk { text-align: center; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--pc-text); }
.usw-hk--b, .usw-hpop { display: none; }
.usw-hbar { position: relative; display: flex; height: 14px; }
.usw-hseg { display: block; min-width: 0; }
.usw-hseg--d { background: var(--pc-party-dem); }
.usw-hseg--r { background: var(--pc-party-rep); }
.usw-hseg--t { background: var(--pc-border); }
.usw-hmaj { position: absolute; top: -6px; bottom: -6px; width: 2px; margin-left: -1px; background: var(--pc-text); z-index: 2; pointer-events: none; }
.usw-hbar.sc-bar-wrap { padding: 0; }
.usw-hbar .sc-bar.pc-seatbar { flex: 1 1 auto; height: 14px; }
.usw-hbar .sc-band { bottom: -9px; height: 6px; border-width: 1.5px; }

/* ---- The stage: battlegrounds | map | facts, Margin / Change and the key ---- */
.usw-stagew { display: grid; grid-template-columns: 176px minmax(0, 1fr) 190px; grid-template-areas: "west map east"; column-gap: 10px;
    align-items: start; margin-top: 16px; }
.usw-west { grid-area: west; min-width: 0; padding-top: 36px; }
.usw-mapc { grid-area: map; min-width: 0; }
.usw-east { grid-area: east; align-self: end; display: flex; flex-direction: column; gap: 24px; min-width: 0; padding: 0 0 48px 20px; }
.usw-mapw.ra-mwrap { position: relative; max-width: none; margin: 0; }
.usw-smap.sc-smap-wrap { max-width: none; margin: 0; }
.usw-stage.sc-stage { margin-top: 0; }
.usw-tpo { display: none; }
.usw-fact { display: flex; flex-direction: column; gap: 4px; margin: 0; }
.usw-fact-k { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--pc-text-meta); }
.usw-fact-v { font-size: 30px; font-weight: 700; line-height: 1.05; letter-spacing: -0.02em; color: var(--pc-text); font-variant-numeric: tabular-nums; }
.usw-fact-v b { font-weight: 700; }
.usw-fact-v--s { font-size: 18px; line-height: 1.2; letter-spacing: -0.01em; }
.usw-view .pc-mode-btn { min-height: 30px; padding: 7px 10px; font-size: 12px; color: var(--pc-text-body); }
.usw-east .usw-view { align-self: flex-start; }

/* Battlegrounds: rows in the Pacific margin (swatch, state, electoral votes, margin); tiles on phones */
.usw-bgs { font-family: var(--pc-sans); }
.usw-bgs:empty { display: none; }
.usw-bgs-h { margin: 0 0 8px; }
.usw-bgs-k { padding: 0; background: none; border: 0; cursor: pointer; font-family: var(--pc-sans); font-size: 11px; font-weight: 700;
    letter-spacing: 0.08em; text-transform: uppercase; color: var(--pc-text-meta); text-decoration: underline;
    text-decoration-color: transparent; text-underline-offset: 3px; }
.usw-bgs-k:hover, .usw-bgs.is-on .usw-bgs-k { color: var(--pc-text); text-decoration-color: currentColor; }
.usw-bgs-row { display: flex; flex-direction: column; }
.usw-bgc { display: flex; align-items: center; gap: 10px; width: 100%; height: 34px; padding: 0; background: none; border: 0;
    border-bottom: 1px solid var(--pc-border-light); cursor: pointer; text-align: left; font-family: var(--pc-sans); color: var(--pc-text);
    font-variant-numeric: tabular-nums; }
.usw-bgc:hover { background: var(--pc-hover-bg); }
.usw-bgc-sw { flex: 0 0 auto; width: 12px; height: 12px; background: var(--f); }
.usw-bgc-n { width: 30px; font-size: 15px; font-weight: 700; }
.usw-bgc-e { width: 26px; font-size: 12px; color: var(--pc-text-meta); }
.usw-bgc-m { margin-left: auto; font-size: 14px; font-weight: 700; white-space: nowrap; }
.usw-bgc-m.is-sm { letter-spacing: -0.02em; white-space: nowrap; }      /* "D by <0.1" in a narrow tile */
.usw-bgs-t { display: flex; gap: 14px; padding-top: 12px; font-size: 13px; font-variant-numeric: tabular-nums; }
.usw-bgs-t b { font-weight: 700; }
.usw-bgs-t span { color: var(--pc-text-meta); }
.is-ink-l { color: var(--pc-on-party-dark); }
.is-ink-d { color: var(--usw-ink-d); }

/* Keys: a diverging key in two halves, side by side under the map on phones, stacked in the Atlantic margin */
.usw-legend { display: flex; flex-direction: column; gap: 8px; }
.usw-legend[data-lg="swing"], .is-swing .usw-legend[data-lg="margin"] { display: none; }
.is-swing .usw-legend[data-lg="swing"] { display: flex; }
.usw-legend[data-lg="rel"], .is-rel .usw-legend[data-lg="margin"] { display: none; }
.is-rel .usw-legend[data-lg="rel"] { display: flex; }
.usw-lg-k { flex: 1 1 100%; margin: 0; font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
    color: var(--pc-text-meta); }
.usw-dl { display: flex; flex-direction: column; gap: 6px; min-width: 0; font-family: var(--pc-sans); }
.usw-dl-side { min-width: 0; }
.usw-dl-h { margin: 0 0 3px; font-size: 11px; font-weight: 700; }
.usw-dl-c, .usw-dl-t { display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); gap: 2px; }
.usw-dl-c i { display: block; height: 10px; }
.usw-dl-c i.usw-lc, .usw-lc { background: var(--us-fill); }
.usw-dl-t { margin-top: 2px; font-size: 10px; color: var(--pc-text-meta); font-variant-numeric: tabular-nums; }
.usw-dl-t span { text-align: center; white-space: nowrap; }
.usw-key { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: var(--pc-text-meta); }
.usw-key-flip { display: inline-block; width: 14px; height: 10px; border: 1.5px solid var(--pc-text); }

/* Maine and Nebraska: compact chips (clicked: set the district's winner) */
.ra-splits.usw-splits { display: flex; flex-direction: column; gap: 8px; margin: 0; }
.usw-splits .ra-split { display: flex; flex-wrap: wrap; align-items: center; gap: 3px; font-size: 12px; }
.usw-splits .ra-split-st { width: 100%; margin: 0 0 1px; font-size: 11px; font-weight: 700; color: var(--pc-text-meta); }
.usw-chip.ra-chip { min-width: 26px; min-height: 26px; padding: 4px 6px; border: 0; cursor: pointer; font-family: var(--pc-sans);
    font-size: 12px; font-weight: 700; text-align: center; }
.usw-chip.ra-chip.is-ink-d { color: var(--usw-ink-d); }
.usw-chip.is-flip { outline: 1.5px solid var(--pc-text); outline-offset: 1px; }
.usw-chip.is-ovr { box-shadow: inset 0 0 0 2px var(--pc-surface); }

/* ---- Maps: the states without labels (the battleground list and the card carry the numbers), the small-state
   call-outs kept as click targets; states that changed hands outlined in ink; a picked region keeps its colour ---- */
.usw-map .us-map-label.ra-lab:not(.sl-co-label) { font-family: var(--pc-sans); font-size: 12px; font-weight: 800; fill: var(--pc-text);
    paint-order: stroke; stroke: var(--pc-surface); stroke-width: 3px; stroke-opacity: 0.85; stroke-linejoin: round; pointer-events: none; }
.usw-map .us-map-label.ra-lab:not(.sl-co-label) .ra-lab-ev { font-size: 11px; font-weight: 600; }
.usw-map > path[pointer-events="none"] { stroke-width: 1px; vector-effect: non-scaling-stroke; }
.usw-map path.us-state { stroke-width: 0.6px; vector-effect: non-scaling-stroke; }
.usw-map [data-st] { cursor: pointer; transition: opacity 150ms; }
.usw-map [data-st].is-dim, .sc-smap path.is-dim, .sc-hmap .sc-d-shape.is-dim { opacity: 0.2; }
.usw-map .sl-co-label { font-size: 10.5px; font-weight: 800; }
.usw-map .sl-co-label .ra-lab-ev { font-size: 10px; font-weight: 600; }
.usw-map .sl-co-line { stroke: var(--pc-text-meta); stroke-width: 0.75px; vector-effect: non-scaling-stroke; }
.usw-map rect.ra-co { stroke: none; }
.usw-map .sl-co-label { stroke-width: 3px; stroke-opacity: 0.85; stroke-linejoin: round; }
/* label ink by the state's fill (swingometer.js renderLabels(): whichever of white or the dark ink reads better),
   the halo in the other ink; the dark halo lighter, so white labels do not look outlined. The dark label ink is a
   step nearer black than --usw-ink-d: on the strongest red neither #111 nor white reaches 4.5:1 (4.4:1), this does */
.usw-map .us-map-label.ra-lab.is-ink-d, .usw-map .sl-co-label.ra-lab.is-ink-d { fill: color-mix(in srgb, var(--usw-ink-d) 40%, black); stroke: var(--pc-on-party-dark); }
.usw-map .us-map-label.ra-lab.is-ink-l, .usw-map .sl-co-label.ra-lab.is-ink-l { fill: var(--pc-on-party-dark); stroke: var(--usw-ink-d); stroke-opacity: 0.45; }
/* the phone row of small north-eastern states (swingometer.js renderSmall()): phones only, where the call-outs go */
.usw-sm { display: none; }
.usw-flipg .usw-flip { fill: none; stroke: var(--pc-text); stroke-width: 1.6; pointer-events: none; vector-effect: non-scaling-stroke; }
.usw-map [data-st].is-hl { stroke: var(--pc-text); stroke-width: 2.2; }
.sc-smap path.sc-st { vector-effect: non-scaling-stroke; }
.sc-smap path.sc-st.is-flip { stroke: var(--pc-text); stroke-width: 1.5; }
.sc-hmap .sc-d-shape.is-flip { stroke: var(--pc-text); stroke-width: 0.9; }
.is-reg .usw-map path[data-st]:not(.is-dim), .is-reg .sc-smap path.sc-st:not(.is-dim):not(.sc-st-off) { stroke: var(--pc-text); stroke-width: 1.1; }
.usw-z .sc-readout { min-height: 18px; margin: 4px 0 0; font-size: 12px; font-weight: 600; }
.usw-z .sc-zoom .pc-btn { min-width: 40px; min-height: 40px; }
.usw-hex { display: block; width: 100%; height: auto; }
.usw-hex[hidden] { display: none; }
.usw-hex .usw-hx { stroke: none; cursor: pointer; }
.usw-hex .usw-hx.is-sel, .usw-hex .usw-hx:hover { stroke: var(--pc-text); stroke-width: 1.6; }
.usw-hex .usw-hex-st { fill: none; stroke: var(--pc-text); stroke-width: 0.8; pointer-events: none; }
.usw-hex .usw-hex-lab { font-family: var(--pc-sans); font-size: 7px; font-weight: 700; fill: var(--pc-text); text-anchor: middle;
    paint-order: stroke; stroke: var(--pc-surface); stroke-width: 2px; pointer-events: none; }
.usw-stage.is-hex .sc-zoom { display: none; }

/* ---- Sliders: a thin track, the fill from the centre to the thumb in party colour, an ink mark at zero ---- */
.usw-tr { position: relative; display: block; min-width: 0; }
.usw-z .pc-slider.usw-slider { --r: 8px; --h: 22px; --trk: 3px; --mk: 12px; --mkc: var(--pc-text-meta);
    display: block; width: 100%; height: var(--h); margin: 0; background:
        linear-gradient(var(--mkc), var(--mkc)) 50% 50% / 2px var(--mk) no-repeat,
        linear-gradient(to right, var(--pc-slider-track) 0,
            var(--pc-slider-track) calc(var(--r) + (100% - 2 * var(--r)) * var(--a, 0.5)),
            var(--party-color, var(--pc-text)) calc(var(--r) + (100% - 2 * var(--r)) * var(--a, 0.5)),
            var(--party-color, var(--pc-text)) calc(var(--r) + (100% - 2 * var(--r)) * var(--b, 0.5)),
            var(--pc-slider-track) calc(var(--r) + (100% - 2 * var(--r)) * var(--b, 0.5)), var(--pc-slider-track) 100%) 0 50% / 100% var(--trk) no-repeat;
    touch-action: pan-y; }
.usw-z .pc-slider.usw-slider::-webkit-slider-runnable-track { height: 100%; background: transparent; border: 0; }
.usw-z .pc-slider.usw-slider::-moz-range-track { background: transparent; border: 0; }
.usw-z .pc-slider.usw-slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: calc(2 * var(--r)); height: calc(2 * var(--r));
    margin-top: calc(var(--h) / 2 - var(--r)); background: var(--party-color, var(--pc-text)); border: 0; border-radius: 50%;
    box-shadow: 0 0 0 2px var(--pc-surface); }
.usw-z .pc-slider.usw-slider::-moz-range-thumb { width: calc(2 * var(--r)); height: calc(2 * var(--r)); background: var(--party-color, var(--pc-text));
    border: 0; border-radius: 50%; box-shadow: 0 0 0 2px var(--pc-surface); }
/* a moved group slider: a larger thumb in party colour with a soft ring */
.usw-z .is-on .pc-slider.usw-slider { --r: 12px; }
.usw-z .is-on .pc-slider.usw-slider::-webkit-slider-thumb { box-shadow: 0 0 0 3px var(--pc-surface), 0 0 0 9px color-mix(in srgb, var(--party-color) 15%, transparent); }
.usw-z .is-on .pc-slider.usw-slider::-moz-range-thumb { box-shadow: 0 0 0 3px var(--pc-surface), 0 0 0 9px color-mix(in srgb, var(--party-color) 15%, transparent); }
.usw-z .usw-slider:focus-visible { outline: 2px solid var(--pc-text); outline-offset: 2px; }
/* Shift everyone: a heavier track and thumb, the ink zero mark, and where each side reaches the target (ticks) */
.usw-z .usw-tr--sh .pc-slider.usw-slider, .usw-z .usw-all .pc-slider.usw-slider { --r: 12px; --h: 30px; --trk: 4px; --mk: 16px; --mkc: var(--pc-text); }
.usw-z .usw-tr--sh .pc-slider.usw-slider::-webkit-slider-thumb, .usw-z .usw-all .pc-slider.usw-slider::-webkit-slider-thumb {
    box-shadow: 0 0 0 3px var(--pc-surface), 0 1px 4px rgba(0, 0, 0, 0.3); }
.usw-z .usw-tr--sh .pc-slider.usw-slider::-moz-range-thumb, .usw-z .usw-all .pc-slider.usw-slider::-moz-range-thumb {
    box-shadow: 0 0 0 3px var(--pc-surface), 0 1px 4px rgba(0, 0, 0, 0.3); }
.usw-sh-ticks { position: absolute; left: 0; right: 0; top: 2px; height: 8px; pointer-events: none; }
.usw-tk { position: absolute; top: 0; left: calc(12px + (100% - 24px) * var(--at) / 100); width: 2px; height: 8px; margin-left: -1px; }
.usw-tk--r { background: var(--pc-party-rep); }
.usw-tk--d { background: var(--pc-party-dem); }
.usw-sv { font-size: 13px; font-weight: 700; color: var(--pc-text); text-align: right; font-variant-numeric: tabular-nums; }
.usw-sv.usw-d { color: var(--us-dem-text); }
.usw-sv.usw-r { color: var(--us-rep-text); }
.usw-ends { display: flex; justify-content: space-between; font-size: 11px; font-weight: 700; line-height: 1.2; }

/* ---- The dock: fixed along the bottom (above the sticky footer ad) on every screen ---- */
.usw-dock { position: fixed; left: 0; right: 0; bottom: var(--usw-ad); z-index: 40; display: flex; align-items: center; gap: 40px;
    height: 104px; padding: 0 max(var(--usw-pad), calc((100% - 1344px) / 2)); background: var(--pc-surface); border-top: 2px solid var(--pc-text);
    font-family: var(--pc-sans); }
body:has(.usw-dock), body.usw-has-dock { padding-bottom: calc(132px + var(--pc-ad-inset, 0px)); }
.usw-dk-all { flex: 0 1 420px; min-width: 260px; display: flex; flex-direction: column; gap: 6px; }
.usw-dk-h { display: flex; align-items: baseline; gap: 10px; }
.usw-dk-k { font-size: 15px; font-weight: 700; }
.usw-dk-v.usw-sv { margin-left: auto; font-size: 24px; }
.usw-dk-all .usw-ends { margin-top: -2px; }
.usw-dk-wit { font-weight: 400; color: var(--pc-text-body); text-align: center; }
.usw-dk-wit b { font-weight: 700; }
.usw-dk-groups { flex: 1 1 auto; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 28px; min-width: 0; }
.usw-dg { display: flex; flex-direction: column; gap: 6px; min-width: 0; cursor: pointer; }
.usw-dg-h { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
.usw-dg-n { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 600; color: var(--pc-text-body); }
.usw-dg .usw-sv { color: var(--pc-text-meta); }
.usw-dg .usw-sv.usw-d { color: var(--us-dem-text); }
.usw-dg .usw-sv.usw-r { color: var(--us-rep-text); }
.usw-dg .usw-ends { display: none; }
.usw-dk-more { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.usw-drawer-btn { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0; background: none; border: 0; cursor: pointer;
    white-space: nowrap; font-family: var(--pc-sans); font-size: 13px; font-weight: 700; color: var(--pc-text); }
.usw-drawer-btn::after { content: "+"; }
.usw-drawer-btn[aria-expanded="true"]::after { content: "\2212"; }
.usw-reset { font-weight: 600; color: var(--pc-text-secondary); text-decoration: underline; text-decoration-color: var(--pc-border);
    text-underline-offset: 3px; }
.usw-reset:hover { color: var(--pc-text); text-decoration-color: currentColor; }
.usw-dk-more .usw-reset { min-height: 28px; padding: 0; }

/* ---- The sheet: every slider (turnout and vote for each group, and age) ---- */
.usw-drawer { display: none; }
.is-drawer .usw-drawer { display: block; position: fixed; left: 0; right: 0; bottom: calc(var(--usw-ad) + 104px); z-index: 39;
    max-height: calc(100vh - 104px - var(--usw-ad) - var(--usw-nav) - 24px); overflow-y: auto; overscroll-behavior: contain;
    padding: 0 max(var(--usw-pad), calc((100% - 1344px) / 2)) 16px; background: var(--pc-surface); border-top: 2px solid var(--pc-text);
    box-shadow: 0 -10px 24px rgba(0, 0, 0, 0.08); font-family: var(--pc-sans); }
.usw-grab { display: none; }
.usw-dr-h { display: flex; align-items: center; gap: 12px; min-height: 52px; }
.usw-tabs .pc-mode-btn { min-height: 34px; padding: 8px 12px; font-size: 12px; font-weight: 700; color: var(--pc-text-body); }
.usw-dr-h .usw-reset { margin-left: auto; font-size: 13px; }
.usw-drawer-x { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; background: none;
    border: 0; cursor: pointer; color: var(--pc-text); }
.usw-dr-h .usw-reset { display: none; }
.usw-drawer-x { margin-left: auto; }
.usw-drawer .usw-all, .usw-colh { display: none; }
.usw-pane[hidden] { display: none; }
.usw-pane { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0 28px; }
.usw-pane[data-pane="a"] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.usw-group { min-width: 0; padding: 4px 0 6px; }
.usw-gname { margin: 0 0 2px; font-size: 14px; font-weight: 700; color: var(--pc-text); }
.usw-sl { display: grid; grid-template-columns: 56px minmax(0, 1fr) 46px; grid-template-areas: "k t v" ". e ."; align-items: center;
    column-gap: 8px; padding: 2px 0; cursor: pointer; }
.usw-sk { grid-area: k; font-size: 12px; color: var(--pc-text-secondary); }
.usw-sl .usw-tr { grid-area: t; }
.usw-sl .usw-sv { grid-area: v; }
.usw-sl .usw-ends { grid-area: e; margin-top: -4px; font-size: 10px; }
.usw-note { margin: 8px 0 0; font-size: 12px; color: var(--pc-text-meta); }
.usw-note[hidden] { display: none; }

/* First use: one line on Shift everyone and a pulse on its thumb until a slider moves (swingometer.js hintDone()) */
.usw-z { --usw-hint: var(--pc-accent); }       /* light: #C2410C on white, 5.2:1 */
body.dark-mode .usw-z { --usw-hint: color-mix(in srgb, var(--pc-accent) 45%, var(--pc-text)); }   /* dark: 6.9:1 on #1e293b */
.usw-hint { display: none; font-size: 12px; font-weight: 700; color: var(--usw-hint); }
.is-hint .usw-hint { display: block; }
/* in the dock the hint stands in for the slider's label until a slider moves, so it moves nothing */
.is-hint .usw-dock .usw-dk-k { display: none; }
.usw-dock .usw-hint { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@keyframes usw-pulse { 0%, 100% { box-shadow: 0 0 0 3px var(--pc-surface), 0 0 0 3px color-mix(in srgb, var(--pc-accent) 55%, transparent); }
    50% { box-shadow: 0 0 0 3px var(--pc-surface), 0 0 0 12px color-mix(in srgb, var(--pc-accent) 0%, transparent); } }
.is-hint :is(.usw-all, .usw-dock) .usw-slider[data-k="sh"]::-webkit-slider-thumb { animation: usw-pulse 1.6s ease-in-out infinite; }
.is-hint :is(.usw-all, .usw-dock) .usw-slider[data-k="sh"]::-moz-range-thumb { animation: usw-pulse 1.6s ease-in-out infinite; }
/* two rules, not one list: a browser drops a whole selector list that has a pseudo-element it does not know */
@media (prefers-reduced-motion: reduce) {
    .is-hint :is(.usw-all, .usw-dock) .usw-slider[data-k="sh"]::-webkit-slider-thumb { animation: none; }
    .is-hint :is(.usw-all, .usw-dock) .usw-slider[data-k="sh"]::-moz-range-thumb { animation: none; }
}

/* ---- Loading and failure (swing-core.js stateMsg()): one line over the map, moving nothing ---- */
.usw-mapc, .usw-smap.sc-smap-wrap { position: relative; }
.sc-loading.usw-state { left: 50%; right: auto; top: 40%; z-index: 5; max-width: calc(100% - 32px); padding: 6px 12px; transform: translateX(-50%);
    background: var(--pc-surface); border: 1px solid var(--pc-border); font-weight: 600; color: var(--pc-text-secondary); pointer-events: none; }
.sc-loading.usw-state.is-err { color: var(--pc-text); border-color: var(--pc-text); }
.usw-grid.is-loading .usw-side, .usw-grid.is-loading .usw-top { opacity: 0.6; }

/* ---- More: one quiet full-width button under each map; the panel it opens is the rest of the tab ---- */
.usw-more-btn { display: flex; align-items: baseline; gap: 12px; width: 100%; min-height: 44px; margin: 28px 0 0; padding: 12px 0;
    background: none; border: 0; border-top: 2px solid var(--pc-text); cursor: pointer; text-align: left; font-family: var(--pc-sans); color: var(--pc-text); }
.usw-more-k { font-size: 13px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.usw-more-k::after { content: "+"; margin-left: 6px; }
.usw-more-btn[aria-expanded="true"] .usw-more-k::after { content: "\2212"; }
.usw-more-s { min-width: 0; font-size: 13px; color: var(--pc-text-meta); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.usw-more[hidden] { display: none; }
.usw-more { padding-top: 4px; }
.usw-find { position: relative; display: block; max-width: 320px; margin: 6px 0 0; }
.pc-input.usw-find-in { width: 100%; height: 40px; font-size: 14px; }
.pc-filter-menu.usw-find-menu { left: 0; right: auto; width: 100%; min-width: 220px; padding: 4px 0; }
.usw-find-menu[hidden] { display: none; }
.usw-find-i { display: flex; justify-content: space-between; gap: 10px; width: 100%; min-height: 40px; padding: 8px 12px; background: none;
    border: 0; cursor: pointer; text-align: left; font-family: var(--pc-sans); font-size: 13px; color: var(--pc-text-body); }
.usw-find-i:hover, .usw-find-i.is-active { background: var(--pc-hover-bg); color: var(--pc-text); }
.usw-find-s { font-size: 12px; color: var(--pc-text-meta); }
.usw-find-none { margin: 0; padding: 8px 12px; font-size: 12px; color: var(--pc-text-meta); }
.usw-more-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; }
.usw-more-row .usw-find { flex: 1 1 220px; margin: 0; }
.usw-geo .pc-mode-btn, .usw-ce .pc-mode-btn { min-height: 40px; min-width: 48px; font-size: 13px; color: var(--pc-text-body); }
.usw-wit { margin: 14px 0 0; font-size: 13px; color: var(--pc-text-secondary); font-variant-numeric: tabular-nums; }
.usw-wit:empty { display: none; }
.usw-wit b { font-weight: 700; }
.usw-wit span { font-weight: 600; }
.usw-ce { display: flex; align-items: center; gap: 8px; margin: 14px 0 0; }
.usw-ce-k { font-size: 12px; color: var(--pc-text-meta); white-space: nowrap; }
/* tipping point detail and the states that changed hands */
.usw-facts { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 16px 48px; margin-top: 22px; }
.usw-facts .usw-fact { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.usw-facts .usw-fact-k { width: 100%; }
.usw-facts .usw-fact-v { display: inline-flex; align-items: center; gap: 8px; font-size: 20px; letter-spacing: 0; }
.usw-facts .usw-fact-v .p28m-chip { width: 18px; height: 18px; }
.usw-fact-m .p28-m { font-size: 18px; }
.usw-tpn { width: 100%; font-size: 12px; color: var(--pc-text-meta); }
.usw-flips { max-width: 100%; }
.usw-flip-list { display: flex; flex-wrap: wrap; gap: 4px; margin: 2px 0 0; }
.usw-flipc { padding: 3px 7px; background: var(--party-color); font-size: 13px; font-weight: 700; letter-spacing: 0.02em; }
.usw-none { font-size: 14px; color: var(--pc-text-meta); }
.usw-office .usw-trend { margin: 18px 0 0; }
.usw-trend[hidden] { display: none; }
.usw-trend-c.gbp-chart-container { height: 170px; }
/* regions, then the bar chart */
.usw-blk { margin-top: 28px; }
.usw-blk-h { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.usw-h.pc-section-label { margin: 0 0 8px; }
.usw-allreg { min-height: 32px; background: none; border: 0; padding: 0; cursor: pointer; font-family: var(--pc-sans); font-size: 12px; font-weight: 600;
    color: var(--pc-text-secondary); text-decoration: underline; text-underline-offset: 2px; }
.usw-allreg[hidden] { display: none; }
.usw-regions { border-top: 2px solid var(--pc-text); }
.usw-reg { display: grid; grid-template-columns: 148px minmax(0, 1fr) 40px 40px 58px; align-items: center; gap: 12px;
    width: 100%; min-height: 40px; padding: 6px 6px; background: none; border: 0; border-bottom: 1px solid var(--pc-border-light);
    cursor: pointer; text-align: left; font-family: var(--pc-sans); font-size: 13px; color: var(--pc-text);
    font-variant-numeric: tabular-nums; transition: opacity 120ms; }
.usw-reg:hover { background: var(--pc-hover-bg); }
.usw-reg.is-active { background: var(--pc-hover-bg); box-shadow: inset 3px 0 0 var(--pc-text); padding-left: 12px; }
.usw-reg.is-dim { opacity: 0.5; }
.usw-reg--bg { border-bottom: 2px solid var(--pc-text) !important; }
.usw-reg-n { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.usw-reg-track { display: block; min-width: 0; }
.usw-reg-bar { display: flex; height: 14px; }
.usw-reg-bar i { display: block; min-width: 0; }
.usw-rb-d { background: var(--pc-party-dem); }
.usw-rb-r { background: var(--pc-party-rep); }
.usw-rb-o { background: var(--pc-border); }
.usw-reg-d, .usw-reg-r { font-size: 15px; font-weight: 800; text-align: right; }
.usw-reg-d { color: var(--us-dem-text); }
.usw-reg-r { color: var(--us-rep-text); }
.usw-reg-c { font-size: 12px; font-weight: 700; text-align: right; white-space: nowrap; color: var(--pc-text-meta); }
.usw-reg-c.is-d { color: var(--us-dem-text); }
.usw-reg-c.is-r { color: var(--us-rep-text); }
.usw-chart { width: 100%; min-height: 200px; }
.usw-csvg { display: block; overflow: visible; font-family: var(--pc-sans); }
.usw-cb { transition: opacity 120ms; }
.usw-cb.is-dim, .usw-c-tick.is-dim, .usw-c-lab.is-dim { opacity: 0.18; }
.usw-c-tick { stroke: var(--pc-text); stroke-width: 1.5; }
.usw-c-zero { stroke: var(--pc-text-meta); stroke-width: 0.8; }
.usw-c-ax { font-size: 10px; font-weight: 600; fill: var(--pc-text-meta); text-transform: uppercase; letter-spacing: 0.06em; }
.usw-c-lab { font-size: 9px; font-weight: 600; fill: var(--pc-text-secondary); text-anchor: middle; }
.usw-c-lab.is-flip, .usw-c-lab.is-tp { font-weight: 800; fill: var(--pc-text); }
.usw-c-tp { stroke: var(--pc-text); stroke-width: 1; stroke-dasharray: 3 3; }
.usw-c-tpl { font-size: 11px; font-weight: 700; fill: var(--pc-text); }

/* ---- Seat card (pc-drawer: a side card on desktop, a bottom sheet on phones) ---- */
.pc-drawer.usw-card { width: 360px; border-left: 0; box-shadow: -2px 0 12px rgba(0, 0, 0, 0.06); font-family: var(--pc-sans); }
.usw-card .pc-drawer-close { width: 40px; height: 40px; }
.usw-card .pc-drawer-kicker { margin: 0; }
.usw-card .pc-drawer-title { margin-bottom: 10px; }
.usw-card-top { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; padding-bottom: 12px;
    border-bottom: 2px solid var(--pc-text); }
.usw-card-now .p28-m { font-size: 32px; font-weight: 800; }
.usw-card-set { font-size: 26px; font-weight: 800; color: var(--pc-text); }
.usw-card-dl { display: grid; grid-template-columns: auto auto; gap: 3px 12px; margin: 0; font-size: 13px; font-variant-numeric: tabular-nums; }
.usw-card-dl dt { color: var(--pc-text-meta); }
.usw-card-dl dd { margin: 0; text-align: right; font-weight: 700; }
.usw-card-dl .p28-m { font-size: 13px; }
.usw-card-units { margin-top: 8px; }
.usw-card-units p { display: flex; justify-content: space-between; margin: 0; padding: 5px 0; border-bottom: 1px solid var(--pc-border-light);
    font-size: 13px; color: var(--pc-text-secondary); }
.usw-card-ovr.pc-mode-toggle { margin-top: 12px; }
.usw-card-ovr .pc-mode-btn { min-width: 56px; min-height: 40px; }
.usw-mix-r { display: grid; grid-template-columns: 138px minmax(0, 1fr) 36px; align-items: center; gap: 8px; margin: 0; padding: 3px 0;
    font-size: 13px; color: var(--pc-text-body); }
.usw-mix-b { height: 10px; background: var(--pc-border-light); }
.usw-mix-b i { display: block; height: 100%; background: var(--pc-text-secondary); }
.usw-mix-v { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }
.usw-card-turn { display: flex; align-items: baseline; gap: 8px; margin: 12px 0 0; font-size: 13px; font-variant-numeric: tabular-nums; }
.usw-card-turn b { font-size: 18px; }
.usw-card-l, .usw-card-s { color: var(--pc-text-meta); }
.usw-card-none { margin: 14px 0 0; font-size: 13px; color: var(--pc-text-meta); }

/* ---- Narrower desktops ---- */
@media (min-width: 1000px) and (max-width: 1279px) {
    .usw-z { --usw-pad: 28px; }
    .usw-board { gap: 28px; }
    .usw-hv { font-size: 88px; }
    .usw-stagew { grid-template-columns: 150px minmax(0, 1fr) 164px; }
    .usw-east { padding-left: 12px; }
    .usw-dock { gap: 24px; }
    .usw-dk-groups { gap: 16px; }
    .usw-pane { gap: 0 18px; }
}

/* ---- Phones and tablets ---- */
@media (max-width: 999px) {
    .usw-z { --usw-pad: 16px; padding-top: 0; }
    .us-main:has(.usw-z) > .pc-sources, .us-main:has(.usw-z) > .us-built,
    body.usw-has-dock .us-main > .pc-sources, body.usw-has-dock .us-main > .us-built { padding-left: 20px; padding-right: 20px; }
    .usw-long { display: none; }
    .usw-short { display: inline; }
    .usw-top { display: block; border-bottom: 0; }
    .usw-board { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin: 0 calc(-1 * var(--usw-pad));
        padding: 0 var(--usw-pad); border-bottom: 1px solid var(--pc-border); }
    .usw-tab { flex-direction: column; align-items: flex-start; gap: 2px; padding: 10px 0 8px; }
    .usw-tab + .usw-tab { padding-left: 10px; }
    .usw-tab-k { font-size: 11px; }
    .usw-tab-n { gap: 5px; font-size: 18px; }
    .usw-pre { gap: 12px; padding: 12px 0 0; }
    .pc-mode-toggle.usw-presets { flex: 0 0 auto; }
    .usw-presets .pc-mode-btn { min-height: var(--usw-tap); padding: 8px 10px; font-size: 12px; }
    .usw-pairs { min-width: 0; }
    .usw-pair-sel { max-width: 100%; min-height: var(--usw-tap); font-size: 13px; text-overflow: ellipsis; }
    .usw-acts { margin-left: auto; }
    .usw-share > summary { width: 44px; height: 44px; }
    .usw-src { display: none; }
    .usw-src--m { display: block; padding-top: 14px; }
    .usw-polls-row { gap: 18px; margin: 0 calc(-1 * var(--usw-pad)); padding: 0 var(--usw-pad); }
    .usw-pill { min-height: var(--usw-tap); padding: 0 0 2px; align-items: center; font-size: 12px; }
    .usw-polls:empty { min-height: var(--usw-tap); }
    .usw-wk { margin-top: 4px; }
    /* the headline: names over the numbers, the popular vote between them, the bar under the row */
    .usw-hero { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; grid-template-areas: "d pop r" "bar bar bar" "lab lab lab";
        align-items: end; gap: 0; margin-top: 10px; }
    .usw-hc { display: contents; }
    .usw-hs--d { grid-area: d; }
    .usw-hs--r { grid-area: r; }
    .usw-hs { gap: 0; }
    .usw-hn { font-size: 12px; gap: 6px; }
    .usw-chg { font-size: 11px; }
    .usw-hv { font-size: 68px; line-height: 0.9; }
    .usw-hpop { grid-area: pop; display: flex; flex-direction: column; align-items: center; gap: 2px; padding-bottom: 6px; }
    .usw-hpop-k { font-size: 11px; color: var(--pc-text-meta); }
    .usw-hpop-v { font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }
    .usw-hk { display: none; }
    .usw-hbar { grid-area: bar; height: 10px; margin-top: 12px; }
    .usw-hbar .sc-bar.pc-seatbar { height: 10px; }
    .usw-hmaj { top: -5px; bottom: -5px; }
    .usw-hk.usw-hk--b { grid-area: lab; display: block; padding-top: 7px; font-size: 10px; }
    .usw-hero--seats .usw-hk.usw-hk--b { padding-top: 12px; }
    /* the stage: the map edge to edge, the battleground strip, the poll pills, then the toggle and the key */
    .usw-stagew { display: flex; flex-direction: column; align-items: stretch; margin-top: 4px; }
    .usw-mapc { order: 1; margin: 0 calc(-1 * var(--usw-pad)); }
    .usw-west { order: 2; padding-top: 10px; }
    .usw-src--m { order: 3; }
    .usw-east { order: 4; align-self: stretch; flex-direction: row; flex-wrap: wrap; align-items: flex-start; gap: 14px 20px; padding: 16px 0 0; }
    .usw-east .usw-fact--pop, .usw-pres .usw-east .usw-fact:first-child { display: none; }
    .usw-east .usw-fact { flex: 1 1 140px; }
    .usw-east .usw-view { flex: 0 0 auto; }
    .usw-view .pc-mode-btn { min-height: var(--usw-tap); padding: 8px 14px; font-size: 13px; }
    .usw-legend { flex: 1 1 100%; }
    .usw-dl { flex-direction: row; gap: 12px; }
    .usw-dl-side { flex: 1 1 0; }
    .usw-dl-c i { height: 12px; }
    .usw-splits.ra-splits { flex: 1 1 100%; flex-direction: row; flex-wrap: wrap; gap: 8px 20px; }
    .usw-splits .ra-split-st { width: auto; margin-right: 4px; font-size: 12px; }
    .usw-chip.ra-chip { min-width: var(--usw-tap); min-height: var(--usw-tap); font-size: 13px; }
    .usw-tpo { display: flex; flex-direction: column; align-items: flex-end; position: absolute; right: 70px; bottom: 6px; pointer-events: none;
        text-shadow: 0 0 3px var(--pc-surface), 0 0 3px var(--pc-surface), 0 0 2px var(--pc-surface); }
    .usw-tpo .usw-fact-k { font-size: 10px; }
    .usw-tpo .usw-fact-v { font-size: 15px; letter-spacing: 0; }
    .usw-map .ra-callouts, .usw-map .sl-callouts { display: none; }
    .usw-sm { display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 3px; margin: 6px var(--usw-pad) 0; }
    .usw-smc { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; min-width: 0; height: 40px;
        padding: 0; border: 0; background: var(--f); cursor: pointer; font-family: var(--pc-sans); font-variant-numeric: tabular-nums; }
    .usw-smc b { font-size: 12px; font-weight: 700; line-height: 1; }
    .usw-smc span { font-size: 10px; font-weight: 600; line-height: 1; }
    .usw-smc:hover, .usw-smc:focus-visible { box-shadow: inset 0 0 0 2px var(--pc-text); }
    .usw-smc.is-dim { opacity: 0.25; }
    .usw-smc.is-ovr { box-shadow: inset 0 0 0 2px var(--pc-surface); }
    /* labels sized up so they read at phone width (the map draws at about 40% of its viewBox here) */
    .usw-map .us-map-label.ra-lab:not(.sl-co-label) { font-size: 22px; stroke-width: 5px; }
    .usw-map .us-map-label.ra-lab:not(.sl-co-label) .ra-lab-ev { font-size: 19px; }
    .usw-stage.sc-stage, .usw-smap { margin: 0; }
    .usw-z .sc-readout { padding: 0 var(--usw-pad); }
    .usw-z .sc-zoom { right: var(--usw-pad); }
    .usw-z .sc-zoom .pc-btn { min-width: var(--usw-tap); min-height: var(--usw-tap); }
    /* battlegrounds: one row of solid tiles */
    .usw-bgs-h, .usw-bgs-t { display: none; }
    .usw-bgs:empty { display: block; min-height: 46px; }       /* the tiles' row reserved before the JS fills it */
    .usw-bgs-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
    .usw-bgs[data-bgs="senate"] .usw-bgs-row { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); }
    .usw-bgc { flex-direction: column; justify-content: center; gap: 1px; height: 46px; border: 0; background: var(--f); text-align: center; }
    .usw-bgc:hover { background: var(--f); box-shadow: inset 0 0 0 2px var(--pc-text); }
    .usw-bgc-sw, .usw-bgc-e { display: none; }
    .usw-bgc-n { width: auto; font-size: 13px; }
    .usw-bgc-m { margin: 0; font-size: 11px; font-weight: 600; color: inherit; }
    .usw-bgc.is-ink-l .usw-bgc-m, .usw-bgc.is-ink-d .usw-bgc-m { color: inherit; }
    .usw-bgc-m.is-sm { font-size: 10px; }
    /* the dock: Shift everyone and the sheet's button */
    .usw-dock { flex-direction: column; align-items: stretch; gap: 0; height: auto; padding: 10px var(--usw-pad) calc(6px + env(safe-area-inset-bottom, 0px)); }
    body:has(.usw-dock), body.usw-has-dock { padding-bottom: calc(150px + var(--pc-ad-inset, 0px)); }
    .usw-dk-all { flex: none; min-width: 0; gap: 0; }
    .usw-dk-h { align-items: center; gap: 12px; min-height: 40px; padding-right: 110px; }
    .usw-dk-k { font-size: 14px; }
    .usw-dk-v.usw-sv { margin-left: 0; font-size: 20px; }
    .usw-z .usw-tr--sh .pc-slider.usw-slider { --r: 14px; --h: 40px; }
    .usw-tr--sh .usw-tk { left: calc(14px + (100% - 28px) * var(--at) / 100); }
    .usw-tr--sh .usw-sh-ticks { top: 6px; }
    .usw-dk-groups { display: none; }
    .usw-dk-more { position: absolute; top: 10px; right: var(--usw-pad); }
    .usw-dk-more .usw-reset { display: none; }
    .usw-dock .usw-drawer-btn { min-height: 40px; padding: 0 14px; background: var(--pc-text); color: var(--pc-on-ink); }
    /* the first-use hint takes the label's place inside the dock (never floating over the battleground tiles) */
    .usw-dock .usw-hint { position: static; padding: 0; }
    /* the sheet: in the dock's place at half height, the headline and the map live above it */
    .is-drawer .usw-dock { display: none; }
    .is-drawer .usw-drawer { bottom: var(--usw-ad); z-index: 41; height: min(450px, 56vh); max-height: none;
        padding: 0 var(--usw-pad) calc(12px + env(safe-area-inset-bottom, 0px)); }
    .usw-grab { display: block; width: 36px; height: 4px; margin: 8px auto 4px; border-radius: 2px; background: var(--pc-border); }
    .usw-dr-h { min-height: 44px; gap: 10px; }
    .usw-tabs .pc-mode-btn { min-height: var(--usw-tap); }
    .usw-dr-h .usw-reset { display: inline-flex; min-height: var(--usw-tap); margin-left: auto; text-decoration-color: currentColor; }
    .usw-drawer-x { margin-left: 0; }
    .usw-drawer .usw-all { display: grid; grid-template-columns: 96px minmax(0, 1fr); align-items: center; column-gap: 12px;
        padding: 6px 0 10px; border-bottom: 1px solid var(--pc-border-light); }
    .usw-all .usw-hint { grid-column: 1 / -1; }
    .usw-all .usw-gname { margin: 0; font-size: 14px; line-height: 1.2; }
    .usw-all .usw-sl { grid-template-columns: minmax(0, 1fr) 48px; grid-template-areas: "t v"; column-gap: 8px; }
    .usw-all .usw-sk, .usw-all .usw-ends { display: none; }
    .usw-all .usw-sv { font-size: 15px; }
    .usw-colh { display: grid; grid-template-columns: 96px minmax(0, 1fr) minmax(0, 1fr); column-gap: 12px; padding: 8px 0 2px;
        font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--pc-text-meta); }
    .usw-colh-v { display: flex; justify-content: space-between; gap: 4px; }
    .usw-pane, .usw-pane[data-pane="a"] { display: block; }
    .usw-pane .usw-group { display: grid; grid-template-columns: 96px minmax(0, 1fr) minmax(0, 1fr); column-gap: 12px; align-items: center;
        min-height: 56px; padding: 0; border-bottom: 1px solid var(--pc-border-light); }
    .usw-pane .usw-gname { margin: 0; font-size: 13px; font-weight: 600; line-height: 1.2; }
    .usw-pane .usw-sl { position: relative; display: block; padding: 0; }
    .usw-pane .usw-sk, .usw-pane .usw-ends { display: none; }
    .usw-z .usw-pane .pc-slider.usw-slider, .usw-z .usw-drawer .usw-all .pc-slider.usw-slider { --h: 40px; }
    .usw-pane .usw-sv { display: none; position: absolute; top: -12px; left: calc(12px + (100% - 24px) * var(--p, 0.5)); transform: translateX(-50%);
        padding: 2px 6px; background: var(--pc-text); color: var(--pc-on-ink); font-size: 11px; line-height: 1.3; white-space: nowrap; pointer-events: none; }
    .usw-pane .is-on .usw-sv { display: block; }
    .usw-pane .is-on .usw-sv.usw-d, .usw-pane .is-on .usw-sv.usw-r { color: var(--pc-on-ink); }
    /* with the sheet open: a compact headline over the map, the rest of the page out of the way */
    .is-drawer .usw-top, .is-drawer .usw-src--m, .is-drawer .usw-east, .is-drawer .usw-more-btn, .is-drawer .usw-more,
    .is-drawer .usw-hn, .is-drawer .usw-hpop, .is-drawer .usw-hk--b, .is-drawer .usw-tpo { display: none; }
    .is-drawer .usw-hero { grid-template-columns: auto minmax(0, 1fr) auto; grid-template-areas: "d bar r"; align-items: center;
        column-gap: 12px; margin-top: 10px; }
    .is-drawer .usw-hv { font-size: 34px; line-height: 1; letter-spacing: -0.03em; }
    .is-drawer .usw-hbar { margin: 0; height: 8px; }
    .is-drawer .usw-hbar .sc-bar.pc-seatbar { height: 8px; }
    .is-drawer .usw-hbar .sc-band { display: none; }
    .is-drawer .usw-hmaj { top: -4px; bottom: -4px; }
    .is-drawer .usw-stagew { margin-top: 6px; }
    .is-drawer .usw-west { padding-top: 4px; }
    .is-drawer .usw-bgc { height: 40px; }
    .is-drawer .usw-bgc-n { font-size: 11px; }
    .pc-drawer.usw-card { width: 100%; }
}
@media (max-width: 768px) {
    .pc-drawer.usw-card { top: auto; height: auto; max-height: 72vh; padding: 26px 16px 20px; box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.12);
        border-top: 0; }
    .usw-mix-r { grid-template-columns: 128px minmax(0, 1fr) 34px; }
    .usw-reg { grid-template-columns: 96px minmax(0, 1fr) 30px 30px 44px; gap: 8px; padding: 6px 2px; }
    .usw-reg-d, .usw-reg-r { font-size: 14px; }
    .usw-find { max-width: none; }
    .pc-input.usw-find-in { font-size: 16px; }
    .us-sources-details > summary { min-height: 50px; display: flex; align-items: center; }
}
@media (max-width: 480px) {
    .usw-hero .usw-chg { display: none; }
}
@media (max-width: 999px) and (max-height: 720px) {
    .is-drawer .usw-drawer { height: 50vh; }
    .is-drawer .usw-hero { margin-top: 6px; }
}
@media (max-width: 380px) {
    .usw-bgs-row { gap: 1px; }
    .usw-hv { font-size: 56px; }
    .usw-tab-n { font-size: 16px; }
    .usw-presets .pc-mode-btn { padding: 8px 8px; }
    .usw-pane .usw-group, .usw-colh, .usw-drawer .usw-all { grid-template-columns: 84px minmax(0, 1fr) minmax(0, 1fr); column-gap: 10px; }
    .usw-drawer .usw-all { grid-template-columns: 84px minmax(0, 1fr); }
    .usw-bgc-m { font-size: 10px; }
}

/* ---- The three tools (PJ, 6 Nov 2026): the President here, the House (/house-2028/) and the Senate
   (/senate-2028/) on their own pages with the same frame (congress_swing.py, congress-swing.js) ---- */
.usw-cg-ttl { padding: 0 0 10px; font-size: 13px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--pc-text); }
.usw-cg-ttl span { margin-left: 6px; color: var(--pc-text-meta); }
.usw-cg-top .usw-pre { padding-bottom: 4px; }
/* the President page's foot: plain links to the House and Senate tools (no numbers) */
.usw-links { display: flex; flex-wrap: wrap; gap: 0 28px; margin: 28px 0 0; padding: 8px 0 0; border-top: 1px solid var(--pc-border);
    font-size: 14px; font-weight: 700; }
.usw-links a { display: inline-flex; align-items: center; min-height: 40px; color: var(--pc-text); text-decoration: underline;
    text-decoration-color: var(--pc-border); text-underline-offset: 4px; }
.usw-links a:hover { text-decoration-color: currentColor; }
/* beside the map: the chance from the simulations, the national vote and its way back to the default */
.usw-cg-p b { font-weight: 700; }
.usw-cg-po { font-size: 13px; font-weight: 600; color: var(--pc-text-meta); }
.usw-cg-dflt { align-self: flex-start; min-height: 28px; padding: 0; background: none; border: 0; cursor: pointer; text-align: left;
    font-family: var(--pc-sans); font-size: 12px; font-weight: 600; color: var(--pc-text-secondary); text-decoration: underline;
    text-underline-offset: 2px; }
.usw-cg-dflt:disabled { cursor: default; text-decoration: none; color: var(--pc-text-meta); font-weight: 400; }
.usw-cg-tg { display: flex; flex-wrap: wrap; gap: 8px; }
.usw-cg-tg .pc-mode-btn { min-height: 30px; padding: 7px 10px; font-size: 12px; }
.usw-cg .usw-ce { flex-wrap: wrap; margin: 0; }
.usw-cg .usw-east { gap: 18px; }
.usw-cg-find { margin-top: 18px; }
.usw-bgs-k--s { cursor: default; text-decoration: none; }
.usw-bgs[data-bgs="house"] .usw-bgc-n { width: auto; min-width: 46px; font-size: 14px; }
.sc-smap path.sc-st.is-set { stroke: var(--pc-text); stroke-width: 2; stroke-dasharray: 3 2; }
.usw-cg-gl { margin: 0 0 6px; font-size: 12px; color: var(--pc-text-meta); }
.usw-cg-gl[hidden] { display: none; }
/* the dock: the national slider, then the seven regions (House) */
.usw-dk-groups.usw-dk-groups--r { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 18px; }
.usw-dk-note { flex: 1 1 auto; font-size: 13px; color: var(--pc-text-secondary); }
.usw-pane.usw-pane--r { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.usw-group--r .usw-sl { grid-template-columns: 0 minmax(0, 1fr) 46px; }
.usw-group--r .usw-sk { overflow: hidden; }
/* the Senate's 34 races by margin, each with its chance of winning (two columns on desktop) */
.usw-rl { margin-top: 26px; }
.usw-rl-h { display: flex; justify-content: space-between; padding-bottom: 6px; border-bottom: 2px solid var(--pc-text); font-size: 11px;
    font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--pc-text-meta); }
.usw-rl-g { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-flow: column; grid-template-rows: repeat(17, auto); column-gap: 40px;
    margin: 0; padding: 0; list-style: none; }
.usw-rl-i { display: block; min-width: 0; margin: 0; padding: 0; }
/* the 2026 Senate seats counted for their leaders (leading, not called): their side's colour, cross-hatched (the
   called seats not up keep us.css's light diagonal) */
.us-seatbar .pc-seat-seg.us-l-held-d.usw-seg-lead, .us-seatbar .pc-seat-seg.us-l-held-r.usw-seg-lead {
    background-image: repeating-linear-gradient(45deg, transparent 0 2px, color-mix(in srgb, var(--pc-surface) 60%, transparent) 2px 4px),
        repeating-linear-gradient(135deg, transparent 0 2px, color-mix(in srgb, var(--pc-surface) 60%, transparent) 2px 4px); }
.usw-rr { display: grid; grid-template-columns: 30px minmax(0, 1fr) 58px minmax(60px, 120px) 58px; align-items: center; gap: 10px; width: 100%;
    min-height: 40px; padding: 4px 4px; background: none; border: 0; border-bottom: 1px solid var(--pc-border-light); cursor: pointer;
    text-align: left; font-family: var(--pc-sans); font-size: 13px; color: var(--pc-text); font-variant-numeric: tabular-nums; }
.usw-rr:hover { background: var(--pc-hover-bg); }
.usw-rr.is-flip .usw-rr-st { box-shadow: inset 0 -2px 0 var(--pc-text); }
.usw-rl-g.is-nopc .usw-rr { grid-template-columns: 30px minmax(0, 1fr) 70px; }
.usw-rr-st { font-weight: 800; }
.usw-rr-n { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--pc-text-body); }
.usw-rr-m { font-weight: 700; text-align: right; white-space: nowrap; }
.usw-rr-b { display: block; height: 10px; background: var(--pc-party-rep); }
.usw-rr-bd { display: block; height: 100%; background: var(--pc-party-dem); }
.usw-rr-p { font-weight: 700; text-align: right; white-space: nowrap; }
/* the card: the member or holder, the nudge */
.usw-card-mem { margin: 12px 0 0; font-size: 13px; line-height: 1.5; color: var(--pc-text-body); }
.usw-card-mem b { font-weight: 700; }
.usw-card-nd.usw-sl { margin-top: 12px; }
.usw-card .usw-tr { position: relative; }
@media (max-width: 999px) {
    .usw-cg-ttl { padding: 12px 0 0; }
    .usw-cg-top { display: flex !important; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--pc-border) !important;
        margin: 0 calc(-1 * var(--usw-pad)); padding: 0 var(--usw-pad) 4px; }
    .usw-cg-top .usw-pre { padding: 4px 0 0; }
    .usw-top:not(.usw-cg-top) .usw-cg-ttl { padding: 10px 0 0; }
    .usw-cg-tg .pc-mode-btn { min-height: var(--usw-tap); padding: 8px 14px; font-size: 13px; }
    .usw-cg-dflt { min-height: var(--usw-tap); }
    .usw-cg .usw-east .usw-fact { flex: 1 1 140px; }
    .usw-cg .usw-ce { flex: 1 1 100%; }
    .usw-bgs[data-bgs="house"] .usw-bgc-n { min-width: 0; font-size: 11px; }
    .usw-dock--s .usw-dk-note { display: none; }
    .usw-dock--s .usw-dk-more .usw-reset { display: inline-flex; min-height: var(--usw-tap); padding: 0 6px; }
    .usw-pane.usw-pane--r:not([hidden]) { display: block; }
    .usw-pane .usw-group.usw-group--r { grid-template-columns: 96px minmax(0, 1fr); }
    .usw-rl-g { grid-template-columns: minmax(0, 1fr); grid-auto-flow: row; grid-template-rows: none; }
    .usw-rr { grid-template-columns: 26px minmax(0, 1fr) 52px 56px 56px; gap: 8px; min-height: 44px; }
    .usw-rl-g.is-nopc .usw-rr { grid-template-columns: 26px minmax(0, 1fr) 64px; }
    .usw-rl-h { font-size: 10px; }
}
@media (max-width: 380px) {
    .usw-rr { grid-template-columns: 26px minmax(0, 1fr) 48px 40px 50px; gap: 6px; font-size: 12px; }
}

/* ---- Landscape phones (under 500px tall): the dock in one compact row, so it keeps the map in view ---- */
@media (max-width: 999px) and (max-height: 500px) {
    .usw-dock { flex-direction: row; align-items: center; gap: 12px; padding: 4px var(--usw-pad) calc(4px + env(safe-area-inset-bottom, 0px)); }
    .usw-dk-all { flex: 1 1 auto; flex-direction: row; align-items: center; gap: 12px; min-width: 0; }
    .usw-dk-h { flex: 0 1 auto; min-width: 0; min-height: 0; padding-right: 0; gap: 8px; }
    .usw-dk-all .usw-tr--sh { flex: 1 1 auto; min-width: 120px; }
    .usw-z .usw-tr--sh .pc-slider.usw-slider { --h: 36px; }
    .usw-dk-all .usw-ends { display: none; }
    .usw-dk-more { position: static; flex: 0 0 auto; }
    body:has(.usw-dock), body.usw-has-dock { padding-bottom: calc(60px + var(--pc-ad-inset, 0px)); }
}

/* ---- The empty ad rail: hidden unless the page loaded wide enough (body.sidebar-ready) ---- */
.usw-rail { display: none; }

/* ---- Desktop frame (PJ, 6 Nov 2026; swingometer.py DESK_MIN 1000 / RAIL_MIN 1400): sliders | centre | rail ---- */
@media (min-width: 1000px) {
    .usw-z { --usw-pad: 24px; --usw-side: 280px; --usw-gap: 28px; padding-top: 18px; }
    .usw-grid { display: grid; grid-template-columns: var(--usw-side) minmax(0, 1fr); grid-template-areas: "side centre";
        column-gap: var(--usw-gap); align-items: start; }
    .usw-centre { grid-area: centre; min-width: 0; }
    .usw-method { padding-left: calc(var(--usw-side) + var(--usw-gap)); }
    /* the reserved rail: 300px (screen px: .usw-z undoes the site zoom), the ad's own sticky box inside it */
    body.sidebar-ready:not(.tool-collapsed) .usw-z { max-width: 1444px; }
    body.sidebar-ready:not(.tool-collapsed) .usw-grid { grid-template-columns: var(--usw-side) minmax(0, 1fr) 300px;
        grid-template-areas: "side centre rail"; }
    body.sidebar-ready:not(.tool-collapsed) .usw-rail { display: block; grid-area: rail; align-self: stretch; width: 300px; min-width: 0; }
    .usw-rail .tool-rail__sticky { position: sticky; top: calc(var(--usw-nav) + 16px); min-height: 600px; }
    body:has(.usw-dock), body.usw-has-dock { padding-bottom: calc(24px + var(--pc-ad-inset, 0px)); }

    /* the left column: sticky as the page scrolls, clear of the nav and the sticky footer ad */
    .usw-side { grid-area: side; position: sticky; top: calc(var(--usw-nav) + 16px); min-width: 0;
        max-height: calc(100vh - var(--usw-nav) - var(--usw-ad) - 32px); overflow-y: auto; overscroll-behavior: contain;
        padding: 2px 4px 12px 0; font-family: var(--pc-sans); }
    .usw-dock, .usw-dock--s { position: static; display: flex; flex-direction: column; align-items: stretch; gap: 10px; height: auto;
        padding: 0 0 14px; background: none; border: 0; border-bottom: 1px solid var(--pc-border); z-index: auto; }
    .usw-side .usw-dk-all { flex: none; min-width: 0; padding-top: 10px; border-top: 2px solid var(--pc-text); }
    .usw-side .usw-dk-h { flex-wrap: wrap; row-gap: 2px; }
    .usw-side .usw-dk-v.usw-sv { font-size: 22px; }
    .usw-side .usw-hint { flex: 0 1 auto; }
    .usw-side .usw-dk-groups { display: none; }
    .usw-side .usw-dk-note { flex: none; font-size: 12px; }
    .usw-side .usw-dk-more { flex-direction: row; justify-content: flex-end; }
    .usw-side .usw-dk-more .usw-drawer-btn { display: none; }
    .usw-side .usw-dk-more .usw-reset { display: inline-flex; }
    /* the sheet, always open in the column: its tabs, then each group's turnout and vote */
    .usw-side .usw-drawer, .is-drawer .usw-side .usw-drawer { display: block; position: static; max-height: none; height: auto; overflow: visible;
        padding: 0; background: none; border: 0; box-shadow: none; z-index: auto; }
    .usw-side .usw-grab, .usw-side .usw-drawer-x, .usw-side .usw-dr-h .usw-reset, .usw-side .usw-drawer .usw-all, .usw-side .usw-colh { display: none; }
    .usw-side .usw-dr-h { min-height: 0; padding: 12px 0 4px; }
    .usw-side .usw-pane, .usw-side .usw-pane.usw-pane--r { display: block; }
    .usw-side .usw-pane[hidden] { display: none; }
    .usw-side .usw-group { padding: 8px 0 6px; border-bottom: 1px solid var(--pc-border-light); }
    .usw-side .usw-gname { font-size: 13px; }
    .usw-side .usw-sl { grid-template-columns: 52px minmax(0, 1fr) 44px; column-gap: 8px; }
    .usw-side .usw-group--r .usw-sl { grid-template-columns: 0 minmax(0, 1fr) 44px; column-gap: 8px; }
    .usw-side .usw-note { font-size: 11px; }

    /* the centre: the headline, then the map at the column's width with the battleground strip and the facts under it */
    .usw-hero { margin-top: 24px; }
    .usw-hv { font-size: 88px; }
    .usw-stagew { display: flex; flex-direction: column; align-items: stretch; margin-top: 12px; }
    .usw-mapc { order: 1; }
    .usw-west { order: 2; padding-top: 12px; }
    .usw-east { order: 4; align-self: stretch; flex-direction: row; flex-wrap: wrap; align-items: flex-start; gap: 16px 32px; padding: 18px 0 0; }
    .usw-cg .usw-east { gap: 16px 32px; }
    .usw-east .usw-fact { flex: 0 1 auto; }
    .usw-east .usw-legend { flex: 1 1 280px; }
    .usw-dl { flex-direction: row; gap: 12px; }
    .usw-dl-side { flex: 1 1 0; }
    .usw-splits.ra-splits { flex: 1 1 100%; flex-direction: row; flex-wrap: wrap; gap: 8px 24px; }
    .usw-splits .ra-split-st { width: auto; margin-right: 4px; }
    .usw-cg-tg, .usw-cg .usw-ce { flex: 0 1 auto; }
    /* battlegrounds: one row of solid tiles under the map */
    .usw-bgs-h { margin: 0 0 6px; }
    .usw-bgs-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
    .usw-bgs[data-bgs="senate"] .usw-bgs-row { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); }
    .usw-bgc { flex-direction: column; justify-content: center; gap: 1px; height: 48px; border: 0; background: var(--f); text-align: center; }
    .usw-bgc:hover { background: var(--f); box-shadow: inset 0 0 0 2px var(--pc-text); }
    .usw-bgc-sw, .usw-bgc-e { display: none; }
    .usw-bgc-n, .usw-bgs[data-bgs="house"] .usw-bgc-n { width: auto; min-width: 0; font-size: 14px; }
    .usw-bgc-m { margin: 0; font-size: 12px; font-weight: 600; color: inherit; }
    .usw-bgc.is-ink-l .usw-bgc-m, .usw-bgc.is-ink-d .usw-bgc-m { color: inherit; }
    .usw-bgs-t { padding-top: 8px; }
}
