:root {
    color-scheme: dark;
    --ink: #e7eee9;
    --muted: #9caaa2;
    --panel: #0b1518;
    --panel-soft: #111f22;
    --line: #2b4747;
    --signal: #73e69b;
    --signal-dim: #2f8d59;
    --blue: #477391;
    --red: #8c484d;
    --background: #061013;
}
* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--background); color: var(--ink); font-family: Inter, "Segoe UI", sans-serif; }
body { background-image: radial-gradient(circle at 50% -20%, #173033 0, transparent 44%), linear-gradient(rgba(115,230,155,.025) 1px, transparent 1px), linear-gradient(90deg, rgba(115,230,155,.025) 1px, transparent 1px); background-size: auto, 28px 28px, 28px 28px; }
a { color: var(--signal); }
.skip-link { position: fixed; left: 1rem; top: -5rem; z-index: 10000; padding: .75rem 1rem; background: white; color: #071113; }
.skip-link:focus { top: 1rem; }
.office-masthead { min-height: 116px; display: grid; grid-template-columns: minmax(220px, .8fr) minmax(320px, 1.4fr) minmax(180px, .8fr); align-items: center; gap: 1.5rem; padding: 1rem clamp(1rem, 3vw, 3rem); border-bottom: 1px solid var(--line); background: rgba(5, 13, 16, .96); box-shadow: 0 12px 38px rgba(0,0,0,.35); }
.office-brand { display: flex; align-items: center; gap: .65rem; color: var(--signal); text-decoration: none; }
.office-brand-screen { position: relative; display: inline-flex; padding: .55rem .8rem; border: 1px solid #4d8f69; background: #07140e; box-shadow: inset 0 0 16px rgba(115,230,155,.14), 0 0 10px rgba(115,230,155,.12); overflow: hidden; }
.office-brand-screen::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(0deg, transparent 0 2px, rgba(180,255,199,.05) 3px); }
.office-brand-screen span { font: 800 clamp(1rem,2vw,1.45rem)/1 "Courier New", monospace; letter-spacing: .11em; text-shadow: 1px 0 #d8ffe4, -1px 0 #278f4d, 0 0 12px rgba(115,230,155,.8); }
.office-identity { text-align: center; }
.office-identity h1 { margin: .12rem 0; font: 750 clamp(1.55rem,3vw,2.6rem)/1.05 Georgia, serif; }
.office-identity p { margin: .2rem 0; color: var(--muted); font-size: .78rem; letter-spacing: .11em; text-transform: uppercase; }
.office-identity #office-channel { color: var(--signal); font-family: "Courier New", monospace; }
.house-link { justify-self: end; padding: .65rem .9rem; border: 1px solid var(--line); border-radius: 4px; color: var(--ink); text-decoration: none; text-transform: uppercase; letter-spacing: .08em; font-size: .73rem; }
.house-link:hover, .house-link:focus-visible { border-color: var(--signal); color: var(--signal); }
.office-shell { display: grid; grid-template-columns: minmax(300px, 380px) minmax(0, 1fr); gap: 1.25rem; width: min(1540px, calc(100% - 2rem)); margin: 1.25rem auto; }
.office-control-panel, .office-map-panel { border: 1px solid var(--line); border-radius: 12px; background: linear-gradient(145deg, rgba(17,31,34,.98), rgba(7,16,19,.98)); box-shadow: 0 18px 52px rgba(0,0,0,.28), inset 0 0 28px rgba(115,230,155,.025); }
.office-control-panel { padding: 1.1rem; }
.panel-code { margin: 0 0 .25rem; color: var(--signal); font: 700 .7rem/1.2 "Courier New", monospace; letter-spacing: .15em; }
.office-control-panel > h2, .result-panel h2, .source-panel h2, .map-panel-heading h2 { margin: 0; font-size: 1rem; }
#senate-selector-wrap { margin-top: 1rem; }
#senate-selector-wrap label { display: block; margin-bottom: .4rem; color: var(--muted); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; }
#senate-selector { width: 100%; padding: .7rem; border: 1px solid var(--line); border-radius: 5px; background: #071114; color: var(--ink); }
.party-switch { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; margin: 1rem 0; }
.party-switch[hidden] { display: none; }
.party-switch button { min-height: 42px; border: 1px solid var(--line); border-radius: 5px; background: #071114; color: var(--muted); font-weight: 700; cursor: pointer; }
.party-switch button[aria-pressed="true"] { color: white; border-color: currentColor; box-shadow: inset 0 0 18px rgba(255,255,255,.06); }
.party-switch button[data-party="democratic"][aria-pressed="true"] { background: #294b61; color: #d3e2ec; }
.party-switch button[data-party="republican"][aria-pressed="true"] { background: #5b3237; color: #edd1d2; }
.result-panel, .source-panel { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.result-heading-row { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.signal-pill { padding: .24rem .42rem; border: 1px solid var(--signal-dim); border-radius: 3px; color: var(--signal); font: 700 .62rem/1 "Courier New", monospace; letter-spacing: .07em; }
.reporting-line, .source-panel p { font-size: .82rem; line-height: 1.5; }
.reporting-line { color: var(--signal); }
.source-panel p { color: var(--muted); }
.candidate-results { display: grid; gap: .55rem; }
.selection-prompt { margin: .2rem 0; padding: .8rem; border: 1px dashed var(--line); color: var(--muted); font-size: .82rem; line-height: 1.45; }
.candidate-row { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .5rem; padding: .72rem; border: 1px solid #20383a; border-radius: 5px; background: #091518; }
.candidate-row::before { content: ""; position: absolute; inset: auto 0 0; height: 3px; width: var(--share,0%); background: var(--candidate-color,var(--signal)); transition: width .35s ease; }
.candidate-name { font-weight: 700; }
.candidate-votes { font-variant-numeric: tabular-nums; }
.candidate-share { grid-column: 1 / -1; color: var(--muted); font-size: .73rem; }
.source-panel a { font-size: .8rem; }
.source-list { display: grid; gap: .35rem; padding: 0; margin: .8rem 0; list-style: none; max-height: 13rem; overflow-y: auto; }
.source-list li { display: flex; justify-content: space-between; gap: .5rem; padding: .4rem .5rem; border: 1px solid var(--line); border-radius: 4px; font-size: .75rem; }
.source-list li[data-status="available"] { border-color: var(--signal-dim); }
.source-list li span:last-child { color: var(--muted); text-align: right; }
.office-map-panel { position: relative; isolation: isolate; min-height: min(760px, calc(100vh - 160px)); overflow: hidden; }
.map-panel-heading { min-height: 74px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.2rem; border-bottom: 1px solid var(--line); }
.map-panel-heading p { margin: 0; }
.map-heading-controls { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: .45rem 1rem; }
.governor-county-wrap { display: flex; align-items: center; gap: .5rem; }
.governor-county-wrap[hidden] { display: none; }
.governor-county-wrap label { color: var(--muted); font-size: .75rem; white-space: nowrap; }
#governor-county { max-width: 12rem; min-height: 36px; padding: .35rem .55rem; border: 1px solid var(--line); border-radius: 5px; background: #071114; color: var(--ink); font: inherit; font-size: .78rem; cursor: pointer; }
#governor-county:focus-visible { outline: 2px solid var(--signal); outline-offset: 2px; }
#map-instruction { color: var(--muted); font-size: .78rem; }
#office-map { position: relative; z-index: 0; width: 100%; height: calc(100% - 118px); min-height: 580px; background: radial-gradient(circle at 50% 45%, #17272a, #071013 72%); }
.leaflet-container { font-family: inherit; }
.monitor-mi-hover-pane { pointer-events: none; }
.monitor-mi-hover-pane .monitor-mi-lifted-geometry {
    transform: translateY(-4px) scale(1.004);
    transform-box: fill-box;
    transform-origin: center;
    filter: drop-shadow(0 5px 4px rgba(0, 0, 0, .68)) drop-shadow(0 0 4px rgba(115, 230, 155, .24));
    animation: office-map-lift 130ms ease-out both;
}
@keyframes office-map-lift {
    from { transform: translateY(0) scale(1); filter: drop-shadow(0 0 0 rgba(0,0,0,0)); }
    to { transform: translateY(-4px) scale(1.004); }
}
.map-tooltip { position: absolute; z-index: 1000; left: 50%; bottom: 3.3rem; transform: translateX(-50%); width: min(430px, calc(100% - 2rem)); padding: .7rem .85rem; border: 1px solid var(--signal-dim); border-radius: 5px; background: rgba(4,13,15,.95); box-shadow: 0 10px 30px rgba(0,0,0,.45); font-size: .78rem; text-align: center; pointer-events: none; }
.map-key { min-height: 44px; display: flex; align-items: center; justify-content: center; gap: 1.2rem; padding: .55rem; color: var(--muted); font-size: .72rem; border-top: 1px solid var(--line); }
.key-swatch { display: inline-block; width: 14px; height: 10px; margin-right: .35rem; border: 1px solid #76908a; vertical-align: -1px; }
.key-result { background: var(--signal-dim); }
.key-waiting { background: repeating-linear-gradient(135deg,#5f6866 0 3px,#25302f 3px 6px); }
.office-footer { display: flex; justify-content: space-between; gap: 1rem; padding: 1rem clamp(1rem,3vw,3rem); border-top: 1px solid var(--line); color: var(--muted); font-size: .75rem; }
.office-footer p { margin: 0; }
.office-footer .legal-operator { margin-top: .35rem; color: var(--text); }
.office-footer nav { display: flex; gap: 1rem; }
@media (max-width: 900px) {
    .office-masthead { grid-template-columns: 1fr auto; }
    .office-identity { grid-column: 1 / -1; grid-row: 2; text-align: left; }
    .office-shell { grid-template-columns: 1fr; }
    .office-map-panel { min-height: 620px; }
    #office-map { min-height: 500px; }
}
@media (max-width: 560px) {
    .office-masthead { display: flex; flex-wrap: wrap; }
    .office-brand-screen span { font-size: 1rem; }
    .house-link { margin-left: auto; }
    .office-shell { width: calc(100% - 1rem); margin: .5rem auto; gap: .5rem; }
    .map-panel-heading { align-items: flex-start; flex-direction: column; }
    .map-heading-controls { align-items: flex-start; justify-content: flex-start; flex-direction: column; width: 100%; }
    .governor-county-wrap { justify-content: space-between; width: 100%; }
    #office-map { min-height: 430px; }
    .office-footer { flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
    .monitor-mi-hover-pane .monitor-mi-lifted-geometry { animation: none; transform: none; }
}
/* Party names in blue and red in the results (Josh, 2026-10-13). */
.party-name[data-party="democratic"] { color: #6ea8ff; }
.party-name[data-party="republican"] { color: #ff7a7a; }
