:root{
  --bg:#16090d;
  --bg2:#210d13;
  --panel:#2b1119;
  --panel2:#361620;
  --line:#633142;
  --text:#f8f3f5;
  --muted:#c9b7bd;
  --accent:#244c73;
  --accent2:#2f679a;
  --good:#2d7b58;
  --gold:#c39c56;
  --danger:#8a3c4b;
  --shadow:0 12px 30px rgba(0,0,0,.25);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:linear-gradient(180deg,var(--bg),#0f0709 75%);color:var(--text);font-family:Arial,Helvetica,sans-serif;min-height:100vh}
.topbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px 28px;background:rgba(22,9,13,.96);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);box-shadow:0 6px 18px rgba(0,0,0,.25)}
.brand-wrap{display:flex;align-items:center;gap:15px}.brand-mark{display:grid;place-items:center;width:66px;height:52px;border:1px solid #8f5366;background:linear-gradient(145deg,#4b1d2b,#271018);border-radius:10px;font-weight:900;letter-spacing:1.5px}.topbar h1{margin:0;font-size:21px;letter-spacing:.7px}.topbar p{margin:5px 0 0;color:var(--muted);font-size:12px;letter-spacing:.35px}
.status-pill,.back-btn{border:1px solid #4a7a66;background:#17392c;color:#dff5eb;border-radius:999px;padding:10px 14px;font-size:12px;font-weight:800;text-decoration:none;white-space:nowrap}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#71d8a4;margin-right:7px;box-shadow:0 0 10px #71d8a4}
.back-btn{background:#203f5d;border-color:#4d7598;color:white;border-radius:9px}
.shell{max-width:1480px;margin:0 auto;padding:26px}.panel{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}
.hero,.state-hero{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:28px}.hero h2,.state-hero h2{font-size:36px;margin:7px 0 8px}.hero p,.state-hero p{margin:0;color:var(--muted);max-width:760px;line-height:1.5}.eyebrow{font-size:11px;letter-spacing:1.6px;color:#dbbdc7;font-weight:900}.hero-meta{display:flex;gap:10px}.hero-meta>div{min-width:110px;padding:15px 18px;text-align:center;border-radius:10px;background:#1d0c11;border:1px solid #5f3342}.hero-meta span{display:block;font-size:23px;font-weight:900}.hero-meta small{font-size:10px;color:var(--muted)}
.toolbar{display:flex;gap:10px;padding:13px;margin-top:16px}.toolbar input{flex:1;background:#16090d;border:1px solid #6c3a4b;color:#fff;padding:14px 15px;border-radius:9px;outline:none;font-weight:700}.toolbar button,.refresh-btn{border:1px solid #47739a;background:var(--accent);color:white;padding:12px 18px;border-radius:9px;font-weight:900;cursor:pointer}
.states-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:13px;margin-top:18px}.state-card{display:block;text-decoration:none;color:var(--text);padding:18px;border-radius:12px;background:linear-gradient(145deg,#35151f,#241016);border:1px solid #5a2d3c;box-shadow:var(--shadow);transition:.18s ease}.state-card:hover{transform:translateY(-2px);border-color:#8f5366;background:linear-gradient(145deg,#401a26,#2b1119)}.state-card strong{display:block;font-size:18px}.state-card span{display:block;margin-top:5px;color:var(--muted);font-size:11px;letter-spacing:.5px}
.state-shell{padding-top:22px}.update-box{min-width:270px;padding:16px 18px;border-radius:11px;background:#180a0e;border:1px solid #673444}.update-box small,.update-box strong,.update-box span{display:block}.update-box small{font-size:10px;color:var(--muted);letter-spacing:1px}.update-box strong{margin:6px 0;font-size:14px}.update-box span{font-size:11px;color:#bd9eaa}
.section-tabs{display:flex;gap:9px;padding:10px;margin:15px 0}.section-tabs button{flex:1;border:1px solid #623244;background:#1c0c11;color:#d8c7cd;padding:13px;border-radius:9px;font-weight:900;cursor:pointer}.section-tabs button.active{background:var(--accent);border-color:#5c87ad;color:#fff}.content-section{display:none}.content-section.active{display:block}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:20px 2px 10px}.section-heading h3{margin:3px 0 0;font-size:24px}.info-grid,.results-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.data-card,.metric{padding:18px}.data-card small,.metric small{display:block;color:var(--muted);font-size:10px;letter-spacing:1px}.data-card strong,.metric strong{display:block;margin:8px 0;font-size:18px}.data-card p{margin:0;color:#bda7af;font-size:12px;line-height:1.45}.ready-text{color:#74d8a8}.wide-card{padding:20px;margin-top:12px}.wide-card h4{margin:0 0 12px;font-size:18px}.empty-state{padding:25px;border:1px dashed #714052;background:#1d0c11;border-radius:10px;color:#c7b3ba;line-height:1.6}.cards-list{display:grid;gap:12px}.candidate-card,.result-card{padding:18px}.candidate-card h4,.result-card h4{margin:0 0 6px}.candidate-card p,.result-card p{margin:4px 0;color:var(--muted);font-size:13px}.result-row{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:10px 0;border-top:1px solid #4e2835}.result-row:first-of-type{border-top:0}.result-row b{font-size:14px}.result-row span{font-weight:900}.metric{text-align:center}.metric strong{font-size:22px}.results-summary{grid-template-columns:repeat(3,1fr);margin-bottom:12px}
footer{text-align:center;color:#8f737d;font-size:10px;letter-spacing:1px;padding:28px 15px}
@media(max-width:1100px){.states-grid{grid-template-columns:repeat(4,1fr)}.info-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.topbar{position:relative;align-items:flex-start;flex-direction:column;padding:15px}.brand-mark{width:56px;height:46px}.topbar h1{font-size:17px}.shell{padding:14px}.hero,.state-hero{align-items:flex-start;flex-direction:column;padding:20px}.hero h2,.state-hero h2{font-size:29px}.hero-meta{width:100%}.hero-meta>div{flex:1}.states-grid{grid-template-columns:repeat(2,1fr)}.section-tabs{display:grid;grid-template-columns:repeat(2,1fr)}.info-grid,.results-summary{grid-template-columns:1fr}.update-box{min-width:100%;width:100%}.back-btn{width:100%;text-align:center}}
.verified-banner{display:inline-block;margin-bottom:12px;padding:7px 10px;border:1px solid #4a7a66;background:#17392c;color:#dff5eb;border-radius:7px;font-size:10px;font-weight:900;letter-spacing:.8px}
.general-summary{color:#eee0e5;line-height:1.6;margin:3px 0 14px}.general-notes{margin:0 0 16px;padding-left:20px;color:#cdbbc1;line-height:1.65}.source-title{font-size:10px;font-weight:900;letter-spacing:1px;color:#af909b;margin:14px 0 8px}.source-list{display:flex;flex-wrap:wrap;gap:8px}.source-link{display:inline-block;text-decoration:none;color:#e4f1ff;background:#18324a;border:1px solid #355e82;border-radius:7px;padding:8px 10px;font-size:11px;font-weight:800}.source-link:hover{background:#214765}.office-card{padding:0;overflow:hidden}.office-title{padding:13px 16px;background:#1b334a;border-bottom:1px solid #476a89;font-weight:900;letter-spacing:.4px}.candidate-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:13px 16px;border-top:1px solid #4e2835}.candidate-row:first-of-type{border-top:0}.candidate-row b,.candidate-row span{display:block}.candidate-row b{font-size:14px}.candidate-row span{margin-top:4px;color:#c9b7bd;font-size:11px}.candidate-row em{font-style:normal;color:#9fd1b8;font-size:11px;text-align:right;font-weight:800}.poll-disclaimer{margin-bottom:12px;padding:10px 12px;border-radius:8px;background:#1a2937;border:1px solid #385875;color:#dce8f3;font-size:10px;font-weight:900;letter-spacing:.5px}.poll-card{margin:10px 0;padding:15px;background:#1d0c11;border:1px solid #5b3140;border-radius:10px}.poll-head b,.poll-head span{display:block}.poll-head b{font-size:14px}.poll-head span{margin-top:4px;color:#beaab2;font-size:11px}.poll-row{display:flex;justify-content:space-between;gap:18px;padding:9px 0;border-top:1px solid #472632}.poll-row:first-of-type{margin-top:9px}.poll-row span{font-size:13px}.poll-row strong{font-size:15px}.poll-card small{display:block;margin-top:4px;color:#9f8790}.polls-sources{margin-top:13px}
@media(max-width:760px){.candidate-row{align-items:flex-start;flex-direction:column;gap:7px}.candidate-row em{text-align:left}.source-list{display:grid}.source-link{width:100%}}

.state-card.loaded{border-color:#4a7a66;box-shadow:0 0 0 1px rgba(113,216,164,.12),var(--shadow)}.state-card.loaded span{color:#9fd1b8;font-weight:900}

/* V3 official primary results */
.results-banner{margin-bottom:14px}
.primary-result-card{margin-bottom:14px}
.primary-result-card .winner-row{font-weight:800}
.result-source{display:inline-block;margin-top:12px}
.general-status-card{border-style:dashed}

/* V4 visible cache-bust markers */
.v4-banner{margin-top:14px;padding:11px 14px;border:1px solid #2f8f61;border-radius:9px;background:#103323;color:#8ff0b8;font-weight:900;letter-spacing:.5px;font-size:12px}
.state-card.loaded{box-shadow:0 0 0 2px #2f8f61 inset}
#resultsTab{position:relative}

/* V5 Florida + Alabama loaded-state markers */
.v4-banner{box-shadow:0 0 0 1px rgba(143,240,184,.12) inset}

/* V12 · National dashboard + automatic engine */
.national-dashboard{margin-top:16px;padding:20px}.dashboard-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.dashboard-head h3{margin:4px 0 0;font-size:24px}.dashboard-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.dashboard-metric{padding:15px;background:#1b0c11;border:1px solid #59303e;border-radius:11px}.dashboard-metric small{display:block;color:#bda8af;font-size:9px;font-weight:900;letter-spacing:.9px}.dashboard-metric strong{display:block;margin:7px 0 5px;font-size:24px}.dashboard-metric span{display:block;color:#a88f98;font-size:10px;line-height:1.35}.engine-metric{border-color:#39735b;background:#102a20}.engine-metric strong{color:#8ce9b4}.dashboard-detail-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:12px;margin-top:12px}.dashboard-detail{padding:16px;background:#1a0b10;border:1px solid #59303e;border-radius:11px}.detail-title{margin-bottom:10px;font-size:10px;font-weight:900;letter-spacing:1.2px;color:#d9bdc6}.engine-line{display:flex;justify-content:space-between;gap:15px;padding:8px 0;border-top:1px solid #43252f}.engine-line:first-of-type{border-top:0}.engine-line span{font-size:10px;color:#a99099}.engine-line b{font-size:11px;text-align:right;color:#dff5eb}.watch-copy{color:#d5c4ca;font-size:12px;line-height:1.65}.watch-alert{margin-top:10px;padding:10px;border-radius:8px;border:1px solid #a17436;background:#3a2910;color:#ffe7ad;font-size:11px;font-weight:800}.dashboard-foot{margin-top:12px;color:#9f8891;font-size:10px}.state-card .card-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.state-card .mini-tag{display:inline-block;margin:0;padding:4px 6px;border-radius:5px;background:#17392c;border:1px solid #3f765e;color:#a9e8c6;font-size:8px;font-weight:900;letter-spacing:.3px}.state-card .mini-tag.poll{background:#1b334a;border-color:#426b8d;color:#c8e5ff}.state-card .mini-tag.review{background:#442b12;border-color:#936b30;color:#ffe3a4}.engine-state-line{margin-top:10px;padding-top:9px;border-top:1px solid #4c2935}.engine-state-line small,.engine-state-line b{display:block}.engine-state-line b{margin-top:5px;color:#8ce9b4;font-size:11px}.engine-online .dot{background:#71d8a4}.engine-ready .dot{background:#e5bd61;box-shadow:0 0 10px #e5bd61}.engine-error .dot{background:#e37680;box-shadow:0 0 10px #e37680}
@media(max-width:1250px){.dashboard-metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.dashboard-head{align-items:flex-start;flex-direction:column}.dashboard-head .refresh-btn{width:100%}.dashboard-metrics{grid-template-columns:repeat(2,1fr)}.dashboard-detail-grid{grid-template-columns:1fr}.national-dashboard{padding:15px}}

/* V14 source access classification + safe feed gate */
.source-diagnostics{grid-column:1/-1}.source-diagnostics small{display:block;margin-top:4px;color:#9f8790;overflow-wrap:anywhere}.source-diagnostics b{color:#ffe0a3}.dashboard-detail-grid{grid-template-columns:1fr 1.4fr}.engine-line b{overflow-wrap:anywhere}

/* V19 universal return-to-states button */
.back-home-row{display:flex;justify-content:center;max-width:1480px;margin:8px auto 0;padding:0 26px 8px}.back-home-row .back-btn{min-width:280px;text-align:center}
@media(max-width:760px){.back-home-row{padding:0 14px 8px}.back-home-row .back-btn{width:100%;min-width:0}}

/* V29 HEADER BASE FIX · PALMA HIGH-GRADE ticker lives inside the permanent top header */
body.with-fixed-highgrade-ticker{padding-top:0}
body.with-fixed-highgrade-ticker .topbar{position:sticky;top:0;z-index:100;display:block;padding:0;background:rgba(22,9,13,.98);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);box-shadow:0 6px 18px rgba(0,0,0,.25)}
.topbar-main{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px 28px}
.highgrade-ticker{position:relative;inset:auto;z-index:1;width:100%;max-width:none;height:39px;margin:0;display:flex;align-items:stretch;overflow:hidden;border:0;border-top:1px solid #542b39;border-radius:0;background:linear-gradient(90deg,#1a0b10,#241018);box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}
.ticker-label{display:flex;align-items:center;flex:0 0 auto;position:relative;z-index:2;padding:0 18px;background:linear-gradient(145deg,#4b1d2b,#2a1119);border-right:1px solid #8f5366;color:#fff;font-size:11px;font-weight:900;letter-spacing:1.2px;white-space:nowrap}
.ticker-viewport{flex:1;min-width:0;overflow:hidden;display:flex;align-items:center}
.ticker-track{display:flex;align-items:center;width:max-content;will-change:transform;animation:palmaHighGradeTicker 44s linear infinite}
.ticker-track:hover{animation-play-state:paused}
.ticker-group{display:flex;align-items:center;flex:0 0 auto;white-space:nowrap}
.ticker-item{display:inline-block;padding:0 16px;color:#f8f3f5;font-size:clamp(16px,1.65vw,25px);line-height:1.05;font-weight:900;letter-spacing:.45px}
.ticker-sep{display:inline-block;color:var(--gold);font-size:clamp(16px,1.65vw,25px);line-height:1;font-weight:900}
@keyframes palmaHighGradeTicker{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(max-width:760px){body.with-fixed-highgrade-ticker .topbar{position:sticky;top:0}.topbar-main{align-items:flex-start;flex-direction:column;padding:15px}.highgrade-ticker{height:34px}.ticker-label{padding:0 10px;font-size:8px;letter-spacing:.7px}.ticker-item{padding:0 10px;font-size:clamp(9px,1.75vw,14px);letter-spacing:0}.ticker-sep{font-size:clamp(9px,1.75vw,14px)}.ticker-track{animation-duration:38s}}
@media(prefers-reduced-motion:reduce){.ticker-track{animation:none;transform:none}.ticker-viewport{overflow-x:auto}}

/* V29 permanent horizontal status + PALMA contact row below service ticker */
.header-info-row{width:100%;display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:14px;padding:9px 18px 10px;background:linear-gradient(90deg,#241018,#35131f,#241018);border-top:1px solid #7d4154;overflow:hidden}
.header-info-row .status-pill{margin:0;justify-self:start;white-space:nowrap}
.service-callout{min-width:0;display:flex;align-items:center;justify-content:flex-start;gap:.34em;flex-wrap:nowrap;white-space:nowrap;overflow:hidden;text-overflow:clip;color:#fff;font-size:clamp(16px,1.65vw,25px);line-height:1.05;font-weight:900;letter-spacing:.45px;text-transform:uppercase;text-shadow:0 2px 8px rgba(0,0,0,.45)}
.service-callout a{display:inline-block;flex:0 0 auto;color:#ffe2a3;text-decoration:none;font-size:1.08em;font-weight:900;white-space:nowrap}
.service-callout a:hover,.service-callout a:focus{text-decoration:underline}
@media(max-width:900px){.header-info-row{gap:8px;padding:7px 8px}.header-info-row .status-pill{padding:7px 9px;font-size:9px}.service-callout{font-size:clamp(9px,1.75vw,14px);letter-spacing:0}}
@media(max-width:560px){.header-info-row{grid-template-columns:auto minmax(0,1fr);gap:5px;padding:6px 5px}.header-info-row .status-pill{padding:6px 7px;font-size:7px}.header-info-row .dot{width:6px;height:6px;margin-right:4px}.service-callout{font-size:clamp(7px,1.95vw,10px);gap:.18em}}

/* V29 h3: ticker service text matches the permanent contact callout size without changing ticker width. */
@media(max-width:560px){.ticker-item{font-size:clamp(7px,1.95vw,10px);gap:.18em}.ticker-sep{font-size:clamp(7px,1.95vw,10px)}}


/* V29 h4: center PALMA service contact and add permanent Election Day countdown. */
.header-info-row{position:relative;display:flex;align-items:center;justify-content:center;min-height:48px;padding:9px 18px 10px}
.header-info-row .status-pill{position:absolute;left:18px;top:50%;transform:translateY(-50%);margin:0;white-space:nowrap}
.service-callout{width:100%;justify-content:center;text-align:center;padding:0 210px;overflow:visible;text-overflow:clip}
.election-countdown{width:100%;display:flex;align-items:center;justify-content:center;gap:14px;padding:8px 14px 10px;background:linear-gradient(90deg,#16090d,#2a1019,#16090d);border-top:1px solid #5e3040;color:#fff;font-weight:900;letter-spacing:.65px;text-align:center;white-space:nowrap}
.countdown-title{color:#f7dca0;font-size:clamp(11px,1.05vw,16px)}
.countdown-clock{font-variant-numeric:tabular-nums;color:#fff;font-size:clamp(16px,1.65vw,25px);text-shadow:0 2px 8px rgba(0,0,0,.45)}
@media(max-width:1050px){.service-callout{padding:0 150px}.header-info-row .status-pill{left:10px}.election-countdown{gap:8px}}
@media(max-width:760px){.header-info-row{min-height:42px;padding:7px 6px}.header-info-row .status-pill{position:static;transform:none;flex:0 0 auto;margin-right:6px}.service-callout{padding:0;justify-content:center;font-size:clamp(8px,1.95vw,11px)}.election-countdown{gap:6px;padding:6px 5px 8px}.countdown-title{font-size:clamp(7px,1.8vw,10px)}.countdown-clock{font-size:clamp(9px,2.2vw,13px)}}
@media(max-width:520px){.header-info-row .status-pill{font-size:6px;padding:5px 6px}.service-callout{font-size:clamp(6px,1.8vw,9px)}.election-countdown{flex-direction:column;gap:2px;white-space:normal}.countdown-title{font-size:8px}.countdown-clock{font-size:12px}}

/* V31 GENERAL ELECTION LIVE RESULTS · GROUP 1 readiness */
.mini-tag.live-ready{border-color:rgba(70,210,140,.7);background:rgba(30,120,78,.22);}
.general-ready-card{border-color:rgba(70,210,140,.45);box-shadow:inset 0 0 0 1px rgba(70,210,140,.10);}

/* V34 · General Election Live Ingest status */
.state-card .mini-tag.live{background:#4b171d;border-color:#b24a55;color:#ffd7da;box-shadow:0 0 10px rgba(178,74,85,.18)}
.general-live-card{border-color:#b24a55;background:linear-gradient(180deg,#2a1015,#1b0c10)}
.general-live-card h4{color:#ffd7da}

/* V35 LATEST POLLS ENGINE */
.latest-poll-card{position:relative;border-color:#5e4050;background:linear-gradient(180deg,#1f0e14,#180a0f)}
.poll-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.poll-freshness{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:5px 8px;border-radius:999px;font-size:9px;font-weight:900;letter-spacing:.55px;white-space:nowrap;border:1px solid #59636b;background:#222b31;color:#e7edf1}
.freshness-recent{border-color:#39735b;background:#102a20;color:#9ff0c2}
.freshness-aging{border-color:#8b6d31;background:#32250d;color:#ffe09a}
.freshness-stale{border-color:#7b4d54;background:#32171c;color:#efb8c0}
.freshness-unknown{border-color:#59636b;background:#222b31;color:#d7dde1}
.poll-meta{margin:10px 0 2px;color:#c8b5bd;font-size:10px;font-weight:800;letter-spacing:.25px}
.state-card .mini-tag.poll-recent{background:#102a20;border-color:#39735b;color:#9ff0c2}
.state-card .mini-tag.poll-aging{background:#32250d;border-color:#8b6d31;color:#ffe09a}
.state-card .mini-tag.poll-stale{background:#32171c;border-color:#7b4d54;color:#efb8c0}
@media(max-width:760px){.poll-head{flex-direction:column}.poll-freshness{align-self:flex-start}}


/* V36 POLL CHANGE & TREND ENGINE */
.trend-card{border-color:#6f5060;background:linear-gradient(180deg,#211018,#17090e)}
.trend-badges{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.new-poll-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;border:1px solid #3b7b5f;background:#102d22;color:#9ff0c2;font-size:9px;font-weight:900;letter-spacing:.55px;white-space:nowrap}
.trend-table-head,.trend-row{display:grid;grid-template-columns:minmax(180px,1fr) 90px 90px 90px;gap:10px;align-items:center}
.trend-table-head{margin-top:12px;padding:8px 0;border-top:1px solid #53313d;border-bottom:1px solid #53313d;color:#a99099;font-size:9px;font-weight:900;letter-spacing:.6px}
.trend-row{padding:10px 0;border-bottom:1px solid #3e242d}
.trend-row span{font-size:13px}.trend-row strong,.trend-row em,.trend-row b{font-style:normal;text-align:right;font-size:13px}
.trend-row em{color:#c2aeb6}.trend-up{color:#8ce9b4}.trend-down{color:#efb8c0}.trend-flat{color:#d8c9ce}
.previous-poll-box{margin:12px 0 8px;padding:11px 12px;border-radius:8px;background:#161f29;border:1px solid #344d63}
.previous-poll-box b,.previous-poll-box span{display:block}.previous-poll-box b{font-size:9px;letter-spacing:.8px;color:#9fc7e6}.previous-poll-box span{margin-top:5px;font-size:11px;color:#d3dde5}
.previous-poll-box .source-link{margin-top:8px}.previous-poll-box.no-previous{opacity:.82}
.state-card .mini-tag.new-poll{background:#102d22;border-color:#3b7b5f;color:#9ff0c2}
@media(max-width:760px){.trend-table-head,.trend-row{grid-template-columns:minmax(120px,1fr) 64px 64px 72px;gap:6px}.trend-table-head{font-size:8px}.trend-row span,.trend-row strong,.trend-row em,.trend-row b{font-size:11px}.trend-badges{justify-content:flex-start}}


/* V36 · National latest-poll party lead summary */
.party-lead-panel{margin-top:16px;padding:18px 20px;background:linear-gradient(180deg,#1b0c11,#16090d);border-color:#65404d}
.party-lead-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:12px}
.party-lead-head h3{margin:4px 0 0;font-size:23px}
.party-lead-asof{font-size:9px;font-weight:900;letter-spacing:.65px;color:#bda9b0;text-align:right}
.party-lead-lines{display:grid;gap:9px}
.party-lead-line{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 14px;border:1px solid #55303b;border-radius:10px;background:#160b0f}
.party-lead-race{flex:0 0 auto;font-size:11px;font-weight:900;letter-spacing:.65px;color:#f0dce3}
.party-lead-counts{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.party-count{display:inline-flex;align-items:center;gap:5px;padding:7px 9px;border-radius:8px;font-size:10px;font-weight:900;letter-spacing:.3px;white-space:nowrap;border:1px solid #5a4b52;background:#24181d;color:#eadde2}
.party-count b{font-size:14px}
.party-count.dem{border-color:#3f6b8e;background:#13283a;color:#cfeaff}
.party-count.rep{border-color:#874a55;background:#32151b;color:#ffd1d8}
.party-count.other{border-color:#6f6650;background:#2b2618;color:#f1e5b7}
.party-lead-note{margin-top:9px;text-align:center;color:#a99199;font-size:9px;font-weight:900;letter-spacing:.65px}
@media(max-width:980px){.party-lead-line{align-items:flex-start;flex-direction:column}.party-lead-counts{justify-content:flex-start}}
@media(max-width:760px){.party-lead-panel{padding:14px}.party-lead-head{align-items:flex-start;flex-direction:column}.party-lead-asof{text-align:left}.party-lead-counts{display:grid;grid-template-columns:1fr;width:100%}.party-count{justify-content:space-between}.party-lead-race{font-size:10px;line-height:1.4}}

/* V38 reliability status: original palette and layout retained. */
[data-health="error"]{color:#e37680!important}[data-health="ready"]{color:#e5bd61!important}.header-version-pill{white-space:normal}.engine-metric strong{overflow-wrap:anywhere;font-size:19px}.refresh-btn:disabled{opacity:.6;cursor:wait}.engine-state-line b{overflow-wrap:anywhere}
@media(max-width:600px){
 .trend-table-head,.trend-row{grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:4px}
 .trend-table-head{font-size:7px;letter-spacing:0}
 .trend-table-head>*{min-width:0;overflow-wrap:anywhere}
 .trend-row span{min-width:0;overflow-wrap:anywhere;font-size:10px}
 .trend-row strong,.trend-row em,.trend-row b{min-width:0;overflow-wrap:anywhere;font-size:10px}
 .section-heading{gap:10px}
}

.status-pill.engine-error{background:#44212a;border-color:#e37680;color:#ffd9de}.status-pill.engine-ready{background:#3a2910;border-color:#a17436;color:#ffe7ad}

/* V38: compact connection details inside the existing panel. */
#connectionNotice{display:block;white-space:normal;overflow-wrap:anywhere;font-size:12px;line-height:1.5;margin:8px 0;}
#connectionNotice[data-health="error"]{color:#ffb6b6;}
#connectionNotice[data-health="ready"]{color:#f0d398;}
#connectionNotice[data-health="online"]{color:#b0d4bb;}
.connection-table{width:100%;border-collapse:collapse;margin-top:12px;}
.connection-table th,.connection-table td{padding:12px;text-align:left;border-bottom:1px solid #ffffff22;overflow-wrap:anywhere;}
.connection-output{white-space:pre-wrap;overflow-wrap:anywhere;}

.engine-metric:has(strong[data-health="error"]){background:#44212a;border-color:#a25461;}
.engine-metric:has(strong[data-health="ready"]){background:#3a2910;border-color:#a17436;}

/* PALMA DOMINICAN ELECTION CENTER V1 additions */
.rd-flag-strip{height:8px;background:linear-gradient(90deg,#002d62 0 33.33%,#fff 33.33% 66.66%,#ce1126 66.66% 100%);border-radius:10px;margin:0 0 14px}
.rd-center-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin-top:14px}
.rd-center-card{display:block;text-decoration:none;color:inherit;background:#fff;border:1px solid #d9dee8;border-radius:14px;padding:16px;box-shadow:0 5px 18px rgba(15,35,70,.06);transition:.18s ease}
.rd-center-card:hover{transform:translateY(-2px);box-shadow:0 9px 24px rgba(15,35,70,.12)}
.rd-center-card h4{margin:4px 0 8px;font-size:18px}.rd-center-card small{color:#6b7280;font-weight:700}.rd-center-card .open{margin-top:12px;font-size:12px;font-weight:900;color:#173b6d}
.rd-race-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.rd-race-card{background:#fff;border:1px solid #d9dee8;border-radius:14px;padding:15px}.rd-race-card b{display:block;font-size:17px;margin-bottom:7px}.rd-race-card span{font-size:12px;color:#667085}
.rd-ready{color:#1b7f46}.rd-pending{color:#9a6700}.rd-note{font-size:12px;color:#667085;line-height:1.5}.rd-tag{display:inline-block;border-radius:999px;padding:5px 9px;background:#eef3fb;color:#173b6d;font-size:11px;font-weight:900;margin:3px 5px 3px 0}
.rd-back{display:inline-flex;align-items:center;gap:6px;text-decoration:none;font-weight:900;color:#173b6d;margin-bottom:12px}
@media(max-width:680px){.rd-center-grid,.rd-race-grid{grid-template-columns:1fr}}

/* PALMA DOMINICAN ELECTION CENTER RD-V2 official general base */
.rd-calendar-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:9px}.rd-calendar-grid>div{padding:11px 12px;border:1px solid #5b3542;border-radius:9px;background:#160b0f}.rd-calendar-grid small{display:block;color:#b9a4ac;font-size:9px;font-weight:900;letter-spacing:.6px}.rd-calendar-grid b{display:block;margin-top:5px;color:#fff;font-size:13px}.rd-source-count{display:flex;align-items:center;gap:8px}.rd-source-count b{font-size:28px;color:#173b6d}.rd-source-count span{font-size:10px;font-weight:900;color:#667085}.rd-org-summary,.rd-control-row{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 12px}.rd-party-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:9px}.rd-party-card{display:flex;gap:10px;align-items:flex-start;padding:11px 12px;border:1px solid #d9dee8;border-radius:11px;background:#fff}.rd-party-card b{flex:0 0 auto;color:#173b6d;font-size:12px}.rd-party-card span{font-size:11px;color:#667085;line-height:1.35}.rd-party-grid.compact{margin-top:10px}.rd-details{margin-top:12px;border-top:1px solid #dde2eb;padding-top:10px}.rd-details summary{cursor:pointer;font-size:11px;font-weight:900;color:#173b6d}.rd-source-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:11px}.rd-source-card{display:flex;flex-direction:column;gap:7px;text-decoration:none;color:inherit;padding:14px;border:1px solid #d9dee8;border-radius:13px;background:#fff;transition:.18s ease}.rd-source-card:hover{transform:translateY(-2px);box-shadow:0 9px 24px rgba(15,35,70,.10)}.rd-source-card b{font-size:14px;color:#173b6d}.rd-source-card span{font-size:11px;color:#667085;line-height:1.4}.rd-source-card em{font-style:normal;font-size:10px;font-weight:900;color:#1b7f46}.engine-online .dot{background:#71d8a4;box-shadow:0 0 10px rgba(113,216,164,.75)}
@media(max-width:680px){.rd-party-grid,.rd-source-grid,.rd-calendar-grid{grid-template-columns:1fr}.rd-source-count{align-self:flex-start}}

/* RD-V3 territorial detail */
.rd-senator-card{border:1px solid #d7deea;border-radius:14px;padding:18px;background:#fff}.rd-senator-card small{font-weight:800;letter-spacing:.08em;color:#6b7280}.rd-senator-card h3{margin:8px 0 10px}.rd-senator-card a{display:inline-block;margin-top:12px;font-weight:800;color:#0b4aa2;text-decoration:none}.rd-circ-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}.rd-circ-card{border:1px solid #d7deea;border-radius:14px;padding:16px;background:#fff}.rd-circ-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;border-bottom:1px solid #e5e7eb;padding-bottom:10px;margin-bottom:10px}.rd-circ-head small{font-weight:800;color:#6b7280}.rd-circ-head h4{margin:4px 0 0}.rd-circ-head span{font-size:.82rem;color:#5b6575;text-align:right;max-width:55%}.rd-deputy-list{display:grid;gap:8px}.rd-deputy-list>div{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:8px 10px;background:#f7f9fc;border-radius:9px}.rd-deputy-list b{font-size:.9rem}.rd-deputy-list span{font-weight:900;font-size:.76rem;border:1px solid #ccd5e3;border-radius:999px;padding:3px 8px;background:#fff}.rd-municipality-grid{display:flex;flex-wrap:wrap;gap:9px}.rd-municipality-grid span{padding:9px 12px;border-radius:10px;background:#f7f9fc;border:1px solid #d7deea;font-weight:800}.rd-center-card.rd-loaded{box-shadow:inset 0 0 0 2px rgba(20,132,74,.18)}.rd-loaded-badge{display:inline-block;margin-top:8px;font-size:.72rem;font-weight:900;padding:5px 8px;border-radius:999px;background:#e8f7ee;color:#126b3b;border:1px solid #bfe7cd}

/* RD-V9 NATIONAL 2028 WATCH */
.rd-party-watch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:14px}.rd-party-watch{border:1px solid #d9dee8;border-radius:12px;padding:14px;background:#fff}.rd-party-watch>div:first-child{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:10px}.rd-party-watch small{color:#6b7280}.rd-party-watch>div:last-child{display:flex;flex-wrap:wrap;gap:7px}.rd-party-watch span{background:#f3f5f8;border:1px solid #e0e5ec;border-radius:999px;padding:6px 9px;font-size:12px}.rd-poll-metrics{margin-bottom:16px}.rd-scenario-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;margin:14px 0}.rd-scenario-card{border:1px solid #d9dee8;border-radius:12px;padding:14px;background:#fff}.rd-scenario-card h4{margin:0 0 9px}.rd-scenario-card p,.rd-scenario-card small{color:#6b7280}.rd-result-row{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid #edf0f4}.rd-result-row em{font-style:normal;font-size:11px;color:#6b7280}.rd-methodology{display:grid;gap:10px;margin-top:12px}.rd-methodology article{border:1px solid #d9dee8;border-radius:10px;padding:12px;display:grid;gap:6px}.rd-methodology a{font-weight:700;text-decoration:none}.rd-engine-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin-top:12px}.rd-engine-source{border:1px solid #d9dee8;border-radius:10px;padding:12px;display:grid;gap:5px;text-decoration:none;color:inherit;background:#fff}.rd-engine-source span{font-size:12px;color:#6b7280}


/* RD-V11 VISUAL POLL REVIEW CENTER */
.rd-review-toolbar{display:flex;justify-content:space-between;gap:18px;align-items:center;margin:18px 0 12px;padding:14px;border:1px solid #5f3543;border-radius:12px;background:#160b0f}.rd-review-toolbar>div:first-child{display:grid;gap:4px}.rd-review-toolbar span{font-size:11px;color:#bda8af}.rd-review-key{display:flex;gap:8px;align-items:center}.rd-review-key input{min-width:230px;background:#11080b;color:#fff;border:1px solid #684151;border-radius:9px;padding:11px 12px}.rd-review-notice{margin:10px 0;padding:12px 14px;border-radius:10px;font-weight:800;font-size:12px}.rd-review-notice.ok{background:#17392c;border:1px solid #4a7a66;color:#dff5eb}.rd-review-notice.error{background:#44212a;border:1px solid #a25461;color:#ffd9de}.rd-review-grid{display:grid;gap:14px}.rd-review-card{border:1px solid #5d3442;border-radius:14px;padding:16px;background:linear-gradient(180deg,#2a1118,#1b0c11)}.rd-review-card-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.rd-review-card h4{margin:7px 0 4px;font-size:17px}.rd-review-card small{color:#bda8af}.rd-review-status{display:inline-block;padding:5px 8px;border-radius:999px;border:1px solid #a17436;background:#3a2910;color:#ffe7ad;font-size:10px;font-weight:900;letter-spacing:.5px}.status-validated .rd-review-status{background:#17392c;border-color:#4a7a66;color:#dff5eb}.status-rejected .rd-review-status,.status-duplicate .rd-review-status{background:#44212a;border-color:#a25461;color:#ffd9de}.status-needs-verification .rd-review-status{background:#352a16;border-color:#94723a;color:#f5dda8}.rd-open-source{white-space:nowrap;text-decoration:none;font-size:11px;font-weight:900;color:#b8dbff;border:1px solid #4d7598;border-radius:8px;padding:8px 10px;background:#203f5d}.rd-review-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:13px 0}.rd-review-meta>div{padding:10px;border-radius:9px;background:#12090c;border:1px solid #4c2d37;display:grid;gap:5px}.rd-review-meta b{font-size:9px;letter-spacing:.55px;color:#beaab1}.rd-review-meta span{font-size:11px;overflow-wrap:anywhere}.rd-precheck-row{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.rd-precheck-row span{font-size:9px;font-weight:900;padding:5px 7px;border-radius:999px;border:1px solid #60414b;background:#24161b;color:#cbbcc1}.rd-precheck-row .ok{background:#17392c;border-color:#4a7a66;color:#c7f1df}.rd-precheck-row .wait{background:#352a16;border-color:#7d6332;color:#e9d49e}.rd-review-excerpt,.rd-validation-editor{margin-top:10px;border:1px solid #4f303a;border-radius:10px;padding:10px;background:#160b0f}.rd-review-excerpt summary,.rd-validation-editor summary{cursor:pointer;font-size:10px;font-weight:900;letter-spacing:.5px}.rd-review-excerpt p{font-size:11px;color:#c9b7bd;line-height:1.55;white-space:pre-wrap}.rd-validation-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:12px 0}.rd-validation-grid label{font-size:9px;font-weight:900;letter-spacing:.45px;color:#cdbac1;display:grid;gap:5px}.rd-validation-grid label.wide{grid-column:1/-1}.rd-validation-grid input,.rd-validation-grid textarea{width:100%;background:#0f0709;border:1px solid #684151;color:#fff;border-radius:8px;padding:10px;font:inherit;font-size:12px}.rd-validation-grid textarea{font-family:Consolas,monospace}.rd-review-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}.rd-action{border:0;border-radius:8px;padding:9px 11px;font-size:10px;font-weight:900;cursor:pointer}.rd-action:disabled{opacity:.38;cursor:not-allowed}.rd-action.approve,.rd-action.validate{background:#2d7b58;color:#fff}.rd-action.verify{background:#9a6a20;color:#fff}.rd-action.duplicate{background:#48515c;color:#fff}.rd-action.reject{background:#8a3c4b;color:#fff}.rd-review-note{margin-top:10px;font-size:11px;color:#cbbcc1}.rd-review-empty{padding:28px;text-align:center;border:1px dashed #684151;border-radius:12px;display:grid;gap:7px}.rd-review-empty span{font-size:12px;color:#bda8af}@media(max-width:900px){.rd-review-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.rd-validation-grid{grid-template-columns:1fr 1fr}.rd-review-toolbar{align-items:flex-start;flex-direction:column}.rd-review-key{width:100%}.rd-review-key input{min-width:0;flex:1}}@media(max-width:620px){.rd-review-card-head{flex-direction:column}.rd-review-meta,.rd-validation-grid{grid-template-columns:1fr}.rd-open-source{white-space:normal}.rd-review-actions{display:grid;grid-template-columns:1fr 1fr}.rd-review-key{display:grid;grid-template-columns:1fr}.rd-review-key input{width:100%}}


/* RD-V12 SMART POLL EXTRACTION */
.rd-auto-extract{margin:12px 0;padding:12px;border:1px solid #3d657f;border-radius:11px;background:linear-gradient(180deg,#102330,#0c1820)}.rd-auto-extract-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.rd-auto-extract-head>div{display:grid;gap:3px}.rd-auto-extract-head b{font-size:11px;color:#d9efff;letter-spacing:.5px}.rd-auto-extract-head span{font-size:9px;color:#8fb6cf}.rd-auto-extract-head strong{font-size:11px;color:#fff;border:1px solid #426d89;border-radius:999px;padding:5px 8px;background:#17344a}.rd-auto-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:10px}.rd-auto-fields>div{display:grid;gap:4px;padding:8px;background:#09131a;border:1px solid #29495e;border-radius:8px;min-width:0}.rd-auto-fields small{font-size:8px;font-weight:900;color:#78a9c7}.rd-auto-fields span{font-size:10px;color:#e7f3fa;overflow-wrap:anywhere}.rd-auto-warnings{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.rd-auto-warnings span{font-size:8px;font-weight:900;color:#ffe4ad;background:#3a2910;border:1px solid #7b6234;border-radius:999px;padding:4px 6px}@media(max-width:900px){.rd-auto-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.rd-auto-fields{grid-template-columns:1fr}.rd-auto-extract-head{align-items:flex-start;flex-direction:column}}
/* RD-V13 server readiness status helpers */
.server-good{color:#0b6b2f!important}.server-warn{color:#9a5b00!important}


/* RD-V14 AUTOMATIC SOURCE CONTROL CENTER */
.rd-source-control-head{display:grid;grid-template-columns:auto minmax(180px,1fr) auto minmax(180px,1fr);gap:8px 12px;align-items:center;margin:14px 0;padding:11px 12px;border:1px solid #d9dee8;border-radius:10px;background:#f8fafc}.rd-source-control-head span{font-size:9px;font-weight:900;letter-spacing:.55px;color:#667085}.rd-source-control-head b{font-size:11px;color:#173b6d;overflow-wrap:anywhere}.rd-source-control-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:11px}.rd-source-health-card{border:1px solid #d9dee8;border-radius:12px;background:#fff;padding:13px;display:grid;gap:10px}.rd-source-health-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.rd-source-health-top h4{margin:0;font-size:14px;color:#173b6d}.rd-source-health-top small{display:block;margin-top:4px;color:#667085}.rd-source-state{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:900;letter-spacing:.45px;border:1px solid #99a3b0;background:#f3f4f6;color:#475467;white-space:nowrap}.rd-source-state.online{border-color:#8fd0a9;background:#e8f7ee;color:#126b3b}.rd-source-state.warning{border-color:#e1c36f;background:#fff8df;color:#805d00}.rd-source-state.error{border-color:#e0a0ab;background:#fff0f2;color:#9b2941}.rd-source-state.waiting{border-color:#aab3be;background:#f5f6f8;color:#5e6875}.rd-source-health-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.rd-source-health-meta>div{border:1px solid #edf0f4;border-radius:8px;padding:8px;background:#fafbfc;min-width:0}.rd-source-health-meta small{display:block;font-size:8px;font-weight:900;color:#7a8492;letter-spacing:.4px}.rd-source-health-meta b{display:block;margin-top:3px;font-size:10px;overflow-wrap:anywhere}.rd-source-health-error{font-size:10px;color:#9b2941;background:#fff0f2;border:1px solid #f1c2ca;border-radius:8px;padding:8px;overflow-wrap:anywhere}.rd-source-health-link{text-decoration:none;font-size:10px;font-weight:900;color:#0b4aa2}.rd-source-change{display:inline-flex;width:max-content;padding:4px 6px;border-radius:999px;background:#fff8df;border:1px solid #e1c36f;color:#805d00;font-size:8px;font-weight:900}@media(max-width:700px){.rd-source-control-head{grid-template-columns:1fr}.rd-source-health-meta{grid-template-columns:1fr}}
