/* Election Central Polling Tracker — scoped: never override GeneratePress globally. */
.ec-polls{--ec-navy:#132d54;--ec-ink:#172b45;--ec-muted:#596c83;--ec-border:#dce4ef;--ec-surface:#f4f7fb;--ec-blue:#2668bd;--ec-red:#c92e49;font-family:inherit;color:var(--ec-ink);max-width:1220px;margin:0 auto 24px;line-height:1.5}
.ec-polls *, .ec-polls *::before,.ec-polls *::after{box-sizing:border-box}
.ec-polls__tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:18px;padding:5px;background:#eef2f8;border:1px solid var(--ec-border);border-radius:12px}
.ec-polls__tab{background:transparent!important;border:0!important;border-radius:9px!important;box-shadow:none!important;color:var(--ec-navy)!important;cursor:pointer;font-weight:750!important;font-size:15px!important;line-height:1.3!important;padding:12px 14px!important;min-height:46px;transition:background .15s ease,color .15s ease}
.ec-polls__tab[aria-selected=true]{background:var(--ec-navy)!important;color:#fff!important;box-shadow:0 2px 5px rgba(0,0,0,.13)!important}
.ec-polls__tab:focus-visible,.ec-polls__details-toggle:focus-visible{outline:3px solid #60a5fa!important;outline-offset:2px}
.ec-polls__panel[hidden],.ec-polls__details[hidden],.ec-polls__no-match[hidden]{display:none!important}
.ec-polls__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 18px}
.ec-polls__stat{min-width:0;padding:16px 18px;border:1px solid var(--ec-border);background:#fff;border-radius:11px;box-shadow:0 2px 10px rgba(24,49,80,.045)}
.ec-polls__stat>span{display:block;font-size:12px;font-weight:700;color:var(--ec-muted);margin-bottom:6px}
.ec-polls__stat>strong{font-size:clamp(16px,1.9vw,23px);line-height:1.2;color:var(--ec-navy);font-weight:800;display:block;overflow-wrap:anywhere}
.ec-polls__controls{display:grid;grid-template-columns:2fr 1fr 1fr;align-items:end;gap:12px;background:var(--ec-surface);border:1px solid var(--ec-border);border-radius:11px;padding:14px;margin-bottom:8px}
.ec-polls__controls label{min-width:0;margin:0;font-size:12px;color:var(--ec-muted);font-weight:700}
.ec-polls__controls label>span{display:block;margin-bottom:6px}
.ec-polls__controls input,.ec-polls__controls select{font:inherit!important;font-size:14px!important;font-weight:500!important;color:var(--ec-ink)!important;background:#fff!important;border:1px solid #c8d5e4!important;box-shadow:none!important;border-radius:8px!important;min-height:42px;width:100%;max-width:none;padding:8px 11px!important;margin:0!important}
.ec-polls__count{font-size:13px;color:var(--ec-muted);margin:12px 1px 11px}
.ec-polls__list{display:grid;gap:11px}
.ec-polls__poll{background:#fff;border:1px solid var(--ec-border);border-radius:11px;padding:16px 18px;box-shadow:0 2px 9px rgba(22,49,82,.035);min-width:0}
.ec-polls__poll[hidden]{display:none!important}
.ec-polls__poll-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ec-polls__poll-heading h3{font-size:17px;line-height:1.25;font-weight:780;color:var(--ec-navy);margin:0 0 5px}
.ec-polls__poll-heading p{font-size:12px;color:var(--ec-muted);margin:0}
.ec-polls__details-toggle{white-space:nowrap;flex:none;background:#eef4fc!important;color:var(--ec-blue)!important;border:1px solid #cbdcf2!important;border-radius:7px!important;cursor:pointer;font-weight:700!important;font-size:12px!important;padding:8px 10px!important;line-height:1.4!important;box-shadow:none!important}
.ec-polls__details-toggle[aria-expanded=true] span{display:inline-block;transform:rotate(180deg)}
.ec-polls__leaders{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:13px}
.ec-polls__leader{display:flex;align-items:center;justify-content:space-between;gap:7px;border-radius:7px;background:#f2f6fb;padding:9px 10px;min-width:0;font-size:13px}
.ec-polls__leader span{min-width:0;overflow-wrap:anywhere}
.ec-polls__leader strong{color:var(--ec-navy);white-space:nowrap;font-size:16px}
.ec-polls__details{border-top:1px solid var(--ec-border);margin-top:16px;padding-top:16px}
.ec-polls__detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 21px}
.ec-polls__result{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;font-size:13px;align-items:center}
.ec-polls__result span{overflow-wrap:anywhere}
.ec-polls__result strong{font-size:14px;color:var(--ec-navy)}
.ec-polls__bar{grid-column:1/-1;height:6px;border-radius:10px;background:#ebf0f7;overflow:hidden}
.ec-polls__bar span{display:block;background:linear-gradient(90deg,#2567b5,#6f9bcc);height:100%;border-radius:10px}
.ec-polls__method{font-size:12px;color:var(--ec-muted);margin:17px 0 9px;line-height:1.65}
.ec-polls__source-link{font-size:13px;font-weight:700;color:var(--ec-blue)}
.ec-polls__no-match,.ec-polls__empty{padding:22px;text-align:center;border:1px dashed #b9c9d8;background:#f6f9fc;border-radius:10px;color:var(--ec-muted)}
.ec-polls--compact .ec-polls__stats{grid-template-columns:repeat(2,minmax(0,1fr))}
.ec-polls--compact .ec-polls__stat:last-child{display:none}
.ec-polls--compact .ec-polls__poll:nth-child(n+6){display:none}
@media (min-width:960px){
  .ec-polls__list{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:780px){
  .ec-polls__controls{grid-template-columns:1fr 1fr}
  .ec-polls__controls label:first-child{grid-column:1/-1}
  .ec-polls__stats{gap:8px}
  .ec-polls__stat{padding:12px}
}
@media (max-width:560px){
  .ec-polls{margin:12px 0 22px}
  .ec-polls__tabs{gap:4px;padding:4px;margin-bottom:12px}
  .ec-polls__tab{font-size:13px!important;padding:10px 7px!important}
  .ec-polls__stats{grid-template-columns:1fr 1fr}
  .ec-polls__stat:last-child{grid-column:1/-1}
  .ec-polls__stat>strong{font-size:18px}
  .ec-polls__controls{gap:8px;padding:11px}
  .ec-polls__controls input,.ec-polls__controls select{font-size:13px!important}
  .ec-polls__poll{padding:13px}
  .ec-polls__poll-heading h3{font-size:16px}
  .ec-polls__details-toggle{font-size:11px!important;padding:7px!important}
  .ec-polls__leaders{grid-template-columns:1fr;gap:5px;margin-top:10px}
  .ec-polls__leader{padding:7px 10px}
  .ec-polls__detail-grid{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  .ec-polls__tab{transition:none}
}


/* Desktop table mode and accessible view switch */
.ec-polls__view-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:18px 0 10px;font-weight:750;color:var(--ec-navy);font-size:16px}
.ec-polls__view-toggle{display:inline-flex;border-radius:9px;border:1px solid var(--ec-border);padding:3px;background:#f4f7fb;gap:2px}
.ec-polls__view-toggle button{font-size:12px!important;font-weight:750!important;border:0!important;border-radius:6px!important;background:transparent!important;color:var(--ec-navy)!important;padding:7px 12px!important;line-height:1.4!important;cursor:pointer}
.ec-polls__view-toggle button[aria-pressed=true]{background:var(--ec-navy)!important;color:#fff!important}
.ec-polls__view-toggle button:focus-visible,.ec-polls__table th button:focus-visible{outline:3px solid #60a5fa!important}
.ec-polls__table-wrap{width:100%;overflow-x:auto;border:1px solid var(--ec-border);border-radius:11px;background:#fff}
.ec-polls__table{width:100%;border-collapse:collapse;font-size:13px;line-height:1.45;margin:0!important}
.ec-polls__table th{font-weight:800;color:var(--ec-navy);background:#edf3fa;text-align:left;white-space:nowrap;padding:12px 10px;border-bottom:1px solid var(--ec-border)}
.ec-polls__table th button{background:transparent!important;color:inherit!important;border:0!important;font-weight:800!important;font-size:inherit!important;padding:0!important;cursor:pointer}
.ec-polls__table td{padding:12px 10px;border-bottom:1px solid #e6edf5;vertical-align:top;color:var(--ec-ink)}
.ec-polls__table tr:last-child td{border-bottom:0}
.ec-polls__table tbody tr:nth-child(even){background:#f7f9fc}
.ec-polls__table-row[hidden]{display:none!important}
.ec-polls__table-results{min-width:200px}
/* Results now render as compact candidate bars, not pill badges. */
.ec-polls__table td a{color:var(--ec-blue);font-weight:700;white-space:nowrap}
.ec-polls--dashboard .ec-polls__panel[data-view=table] .ec-polls__list{display:none}
.ec-polls--dashboard .ec-polls__panel[data-view=cards] .ec-polls__table-wrap{display:none}
@media(max-width:700px){
 .ec-polls--dashboard .ec-polls__view-toggle,.ec-polls--dashboard .ec-polls__table-wrap{display:none!important}
 .ec-polls--dashboard .ec-polls__panel[data-view=table] .ec-polls__list{display:grid}
}


/* V2: real-data polling overview above the explorer (no calculated averages). */
.ec-polls__overview{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1.25fr) minmax(0,.85fr);gap:12px;margin:20px 0 22px}
.ec-polls__overview-card{min-width:0;background:#fff;border:1px solid var(--ec-border);border-radius:12px;padding:17px 17px 16px;box-shadow:0 2px 11px rgba(30,57,87,.045)}
.ec-polls__overview-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:5px}
.ec-polls__overview-heading h3{font-size:17px;line-height:1.28;font-weight:800;color:var(--ec-navy);margin:0}
.ec-polls__overview-heading>span{font-size:11px;color:var(--ec-muted);font-weight:700;white-space:nowrap}
.ec-polls__overview-subline{font-size:12px;line-height:1.5;color:var(--ec-muted);margin:0 0 15px}
.ec-polls__snapshot-list{display:grid;gap:12px;margin-top:18px}
.ec-polls__snapshot-row{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(40px,1fr) 49px;gap:10px;align-items:center;font-size:13px}
.ec-polls__snapshot-name{font-weight:700;overflow-wrap:anywhere;line-height:1.25}
.ec-polls__snapshot-row strong{font-size:15px;text-align:right;color:var(--ec-navy);white-space:nowrap}
.ec-polls__snapshot-track{height:9px;border-radius:9px;background:#e8edf4;overflow:hidden}
.ec-polls__snapshot-track>span{display:block;height:100%;border-radius:9px}
.ec-polls__observations{width:100%;height:auto;display:block;margin:1px 0 5px}
.ec-polls__chart-legend{display:flex;gap:7px 12px;flex-wrap:wrap;font-size:10px;color:var(--ec-muted)}
.ec-polls__chart-legend span{display:inline-flex;align-items:center;gap:5px}
.ec-polls__chart-legend i{width:9px;height:9px;border-radius:50%;display:inline-block;flex-shrink:0}
.ec-polls__recent-list{display:grid}
.ec-polls__recent-item{display:grid;gap:3px;padding:12px 0;border-bottom:1px solid #e5ebf3}
.ec-polls__recent-item:first-child{padding-top:3px}
.ec-polls__recent-item:last-child{border-bottom:0}
.ec-polls__recent-item strong{font-size:13px;color:var(--ec-navy);line-height:1.3}
.ec-polls__recent-item span{font-size:12px;color:var(--ec-muted)}
@media(max-width:1120px){
 .ec-polls__overview{grid-template-columns:repeat(2,minmax(0,1fr))}
 .ec-polls__overview-history{grid-column:2;grid-row:1/3}
}
@media(max-width:720px){
 .ec-polls__overview{grid-template-columns:1fr;gap:10px;margin:14px 0 18px}
 .ec-polls__overview-history{grid-column:auto;grid-row:auto}
 .ec-polls__overview-card{padding:15px}
 .ec-polls__snapshot-row{grid-template-columns:minmax(0,1.25fr) minmax(50px,1.5fr) 45px}
}


/* V3: Overview is the default home for both primaries. */
.ec-polls--dashboard .ec-polls__tabs{grid-template-columns:repeat(3,minmax(0,1fr))}
.ec-polls__average-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:18px 0 12px}
.ec-polls__average-heading h3{font-size:23px;line-height:1.3;font-weight:800;color:var(--ec-navy);margin:0 0 4px}
.ec-polls__average-heading p{font-size:13px;color:var(--ec-muted);margin:0}
.ec-polls__average-heading label{font-size:12px;font-weight:750;color:var(--ec-muted);min-width:155px}
.ec-polls__average-select{display:block;width:100%;margin:5px 0 0!important;padding:8px 10px!important;border:1px solid #cbd7e5!important;border-radius:8px!important;background:#fff!important;color:var(--ec-ink)!important;font-size:14px!important;min-height:40px}
.ec-polls__average-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.ec-polls__average-card{border-top:4px solid #c9364b;padding:19px}
.ec-polls__average-card--democratic{border-top-color:#2d65ad}
.ec-polls__average-card .ec-polls__overview-heading h3{font-size:20px}
.ec-polls__average-card .ec-polls__snapshot-list{gap:11px;margin:15px 0}
.ec-polls__average-card--republican .ec-polls__snapshot-track>span{background:#ca3b54}
.ec-polls__average-card--democratic .ec-polls__snapshot-track>span{background:#3572bd}
.ec-polls__average-card .ec-polls__snapshot-row{grid-template-columns:minmax(0,1.2fr) minmax(40px,1.5fr) 55px}
.ec-polls__average-caption{color:var(--ec-muted);font-size:12px;margin:8px 0}
.ec-polls__average-unavailable{margin:12px 0;color:var(--ec-muted);font-size:13px;line-height:1.5}
.ec-polls__average-view[hidden]{display:none!important}
.ec-polls__explore-party{width:100%;display:block;background:#edf3fb!important;border:1px solid #d0dff1!important;border-radius:8px!important;color:var(--ec-navy)!important;font-size:13px!important;font-weight:800!important;padding:10px!important;cursor:pointer}
.ec-polls__explore-party:hover{background:#dfeafa!important}
.ec-polls__explore-party:focus-visible,.ec-polls__average-select:focus-visible{outline:3px solid #60a5fa!important;outline-offset:2px}
.ec-polls__combined-explorer{margin-top:25px}
.ec-polls__combined-explorer>h3{font-size:22px;font-weight:800;color:var(--ec-navy);margin:0 0 14px}
.ec-polls__combined-controls{grid-template-columns:1.5fr 1fr 1fr 1fr}
.ec-polls__combined-controls label:first-child{grid-column:auto}
.ec-polls__party-pill{display:inline-block;vertical-align:middle;border-radius:6px;padding:2px 7px;font-size:11px;font-weight:750;line-height:1.5;white-space:nowrap}
.ec-polls__party-pill--republican{background:#fff0f2;color:#a92741}
.ec-polls__party-pill--democratic{background:#eaf2ff;color:#23569e}
.ec-polls__poll-heading .ec-polls__party-pill{margin-left:5px}
@media(max-width:920px){
 .ec-polls__combined-controls{grid-template-columns:repeat(2,minmax(0,1fr))}
 .ec-polls__combined-controls label:first-child{grid-column:1/-1}
}
@media(max-width:700px){
 .ec-polls__average-grid{grid-template-columns:1fr}
 .ec-polls__average-card{padding:15px}
 .ec-polls__average-heading{align-items:start;flex-direction:column;gap:10px}
 .ec-polls__average-heading label{width:100%;max-width:260px}
 .ec-polls__combined-explorer>h3{font-size:19px}
 .ec-polls--dashboard .ec-polls__tab{font-size:12px!important;padding:11px 4px!important}
}
@media(max-width:420px){
 .ec-polls--dashboard .ec-polls__tabs{gap:2px}
 .ec-polls--dashboard .ec-polls__tab{font-size:11px!important}
 .ec-polls__combined-controls{grid-template-columns:1fr}
 .ec-polls__combined-controls label:first-child{grid-column:auto}
}


/* V4: detailed primary tabs — averaged lead, history and latest individual survey. */
.ec-polls__party-average{margin:20px 0 17px}
.ec-polls__party-average>.ec-polls__average-heading{margin:0 0 11px}
.ec-polls__party-average>.ec-polls__average-card{min-width:0}
.ec-polls__party-average .ec-polls__snapshot-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 26px}
.ec-polls__party-average .ec-polls__snapshot-row{grid-template-columns:minmax(0,1.2fr) minmax(40px,1.4fr) 55px;gap:9px}
.ec-polls__party-details{grid-template-columns:minmax(0,1.65fr) minmax(235px,.85fr);gap:13px;margin-top:0}
.ec-polls__party-details .ec-polls__overview-history{grid-column:auto;grid-row:auto}
.ec-polls__party-details .ec-polls__overview-latest{grid-column:auto;grid-row:auto}
.ec-polls__party-details .ec-polls__overview-heading h3{font-size:17px}
.ec-polls__latest-results{display:grid;gap:0;margin:6px 0 12px}
.ec-polls__latest-results>div{display:flex;justify-content:space-between;align-items:baseline;gap:9px;border-bottom:1px solid #e7edf4;padding:8px 0;font-size:13px;line-height:1.4}
.ec-polls__latest-results>div:last-child{border-bottom:0}
.ec-polls__latest-results strong{color:var(--ec-navy);white-space:nowrap;font-weight:800}
.ec-polls__latest-results span{overflow-wrap:anywhere}
.ec-polls__overview-latest .ec-polls__source-link{display:inline-block;margin-top:4px}
.ec-polls__overview-latest .ec-polls__average-caption{margin-top:14px}
@media(max-width:1000px){
 .ec-polls__party-average .ec-polls__snapshot-list{grid-template-columns:1fr}
 .ec-polls__party-details{grid-template-columns:minmax(0,1.3fr) minmax(220px,1fr)}
 .ec-polls__party-details .ec-polls__overview-history{grid-column:auto;grid-row:auto}
}
@media(max-width:720px){
 .ec-polls__party-details{grid-template-columns:1fr;gap:10px}
 .ec-polls__party-details .ec-polls__overview-history,.ec-polls__party-details .ec-polls__overview-latest{grid-column:auto;grid-row:auto}
 .ec-polls__party-average{margin:14px 0}
 .ec-polls__party-average .ec-polls__average-card{padding:15px}
 .ec-polls__party-average .ec-polls__snapshot-list{gap:11px}
}


/* V5: interactive poll observations and independently computed rolling line mode. */
.ec-polls__chart-toolbar{display:inline-flex;gap:3px;padding:3px;background:#eff4fa;border:1px solid var(--ec-border);border-radius:8px;margin:10px 0 9px;max-width:100%}
.ec-polls__chart-toolbar button{background:transparent!important;color:var(--ec-navy)!important;border:0!important;border-radius:6px!important;box-shadow:none!important;cursor:pointer;font-size:12px!important;font-weight:750!important;line-height:1.3!important;padding:7px 11px!important}
.ec-polls__chart-toolbar button[aria-pressed=true]{color:#fff!important;background:var(--ec-navy)!important}
.ec-polls__chart-toolbar button:focus-visible{outline:3px solid #60a5fa!important;outline-offset:2px}
.ec-polls__observations [hidden]{display:none!important}
.ec-polls__chart-point{cursor:pointer}
.ec-polls__chart-point:hover,.ec-polls__chart-point:focus{stroke:#152c4b;stroke-width:2.7;outline:none;r:5.5}
.ec-polls__chart-detail{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px 16px;margin-top:12px;padding:10px 12px;background:#f2f6fb;border-radius:8px;color:var(--ec-ink);font-size:12px;line-height:1.5;min-height:40px}
.ec-polls__chart-detail-text{flex:1 1 180px;overflow-wrap:anywhere}
.ec-polls__chart-detail-link{font-weight:750;color:var(--ec-blue);white-space:nowrap}
.ec-polls__chart-detail-link[hidden]{display:none!important}
@media(max-width:560px){
 .ec-polls__chart-toolbar{width:100%}
 .ec-polls__chart-toolbar button{flex:1}
 .ec-polls__chart-detail{font-size:12px}
}


.ec-polls__overview-history{position:relative}
.ec-polls__chart-tooltip{position:absolute;z-index:4;pointer-events:none;max-width:min(280px,90%);padding:9px 11px;border:1px solid #c8d8ec;border-radius:8px;background:#fff;box-shadow:0 6px 22px rgba(18,45,79,.2);font-size:12px;color:var(--ec-navy);line-height:1.5;font-weight:650}
.ec-polls__chart-tooltip[hidden]{display:none!important}
@media(hover:none){.ec-polls__chart-tooltip{display:none!important}}


/* V6 — ranked averages in visual reading order (top-to-bottom, then right). */
.ec-polls__ranked-list{display:grid!important;grid-template-columns:1fr;grid-auto-flow:row;gap:13px 26px}
.ec-polls__ranked-list .ec-polls__snapshot-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto 8px;gap:6px 10px;align-items:start;min-width:0}
.ec-polls__ranked-list .ec-polls__rank-name{display:flex;align-items:baseline;gap:7px;min-width:0;line-height:1.35}
.ec-polls__ranked-list .ec-polls__rank-num{font-size:12px;font-weight:800;color:#7a899e;flex:none;min-width:16px}
.ec-polls__ranked-list .ec-polls__snapshot-name{font-size:13px;font-weight:700;line-height:1.35;overflow-wrap:anywhere}
.ec-polls__ranked-list .ec-polls__snapshot-row>strong{text-align:right;font-size:14px;line-height:1.35}
.ec-polls__ranked-list .ec-polls__snapshot-track{grid-column:1/-1;grid-row:2;height:8px}
.ec-polls__party-average .ec-polls__ranked-list{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(var(--ec-rank-rows),minmax(0,auto));grid-auto-flow:column}
.ec-polls__average-grid .ec-polls__ranked-list{grid-template-columns:1fr;grid-template-rows:none;grid-auto-flow:row;gap:11px}
@media(max-width:700px){
 .ec-polls__party-average .ec-polls__ranked-list{grid-template-columns:1fr;grid-template-rows:none;grid-auto-flow:row}
}
/* Same progressive disclosure on filtered desktop rows and mobile cards. */
.ec-polls__load-more-wrap{display:flex;justify-content:center;padding:16px 0 5px}
.ec-polls__load-more-wrap[hidden]{display:none!important}
.ec-polls__load-more{width:min(100%,300px);background:#edf3fb!important;color:var(--ec-navy)!important;font-size:14px!important;font-weight:800!important;border:1px solid #c6d6eb!important;border-radius:9px!important;box-shadow:none!important;cursor:pointer;padding:11px 18px!important;line-height:1.4!important}
.ec-polls__load-more:hover{background:#dfeaf9!important}
.ec-polls__load-more:focus-visible{outline:3px solid #60a5fa!important;outline-offset:2px}


/* V6.1: one continuous candidate-results list in every poll card. */
.ec-polls__unified-results{display:grid;grid-template-columns:1fr;gap:10px;margin-top:14px}
.ec-polls__unified-results .ec-polls__result{grid-template-columns:minmax(0,1fr) auto}
.ec-polls__unified-results .ec-polls__result[hidden]{display:none!important}
.ec-polls__unified-results .ec-polls__bar{height:7px}
.ec-polls__extra-details{border-top:1px solid var(--ec-border);padding-top:12px;margin-top:15px}
.ec-polls__extra-details[hidden]{display:none!important}
.ec-polls__extra-details .ec-polls__method{margin-top:0}

/* V6.2: compact cards and full-width inline table details. */
.ec-polls__list{align-items:start}
.ec-polls__card-source{margin-top:12px;padding-top:10px;border-top:1px solid var(--ec-border)}
/* V6.3: mini candidate-bar chart directly inside each table cell. */
.ec-polls__table-results{min-width:340px}
.ec-polls__table-candidate-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 22px;max-width:760px}
.ec-polls__table-candidate-grid .ec-polls__result{min-width:0;gap:2px 7px;font-size:12px;line-height:1.3}
.ec-polls__table-candidate-grid .ec-polls__result > .ec-polls__candidate-name{display:flex;align-items:baseline;gap:6px;min-width:0;font-size:12px;overflow-wrap:anywhere}
.ec-polls__table-candidate-grid .ec-polls__candidate-rank{display:inline-block;flex:none;min-width:17px;color:#7a899e;font-size:11px;font-weight:800}
.ec-polls__table-candidate-grid .ec-polls__bar > span{display:block!important;background:linear-gradient(90deg,#2567b5,#6f9bcc)!important;padding:0!important;margin:0!important;height:100%;border-radius:10px}
.ec-polls__table-candidate-grid .ec-polls__result strong{font-size:13px;white-space:nowrap}
.ec-polls__table-candidate-grid .ec-polls__bar{height:6px;margin-top:2px}
.ec-polls__table-candidate-grid .ec-polls__result[hidden],.ec-polls__table-method[hidden]{display:none!important}
.ec-polls__table-toggle{display:inline-flex!important;align-items:center;gap:5px;margin:8px 0 0!important;padding:3px 6px!important;border:1px solid #d7e3f1!important;border-radius:5px!important;background:#f4f7fb!important;color:var(--ec-blue)!important;font-size:11px!important;font-weight:700!important;line-height:1.2!important;cursor:pointer;box-shadow:none!important}
.ec-polls__table-toggle:hover{background:#eaf2fc!important}
.ec-polls__table-toggle[aria-expanded=true] .ec-polls__table-toggle-arrow{transform:rotate(180deg)}
.ec-polls__table-toggle:focus-visible{outline:3px solid #60a5fa!important;outline-offset:2px}
.ec-polls__table-method{border-top:1px solid var(--ec-border);padding-top:8px;margin:9px 0 1px!important;font-size:11px}
@media(min-width:701px) and (max-width:980px){.ec-polls__table-candidate-grid{grid-template-columns:1fr}}
.ec-polls__table-toggle span{background:none!important;padding:0!important;margin:0!important;border-radius:0!important;display:inline!important}

/* V6.4: place disclosure in unused fourth slot of the two-column ranking. */
.ec-polls__table-candidate-grid .ec-polls__table-toggle{justify-self:end;align-self:end;margin:0!important;min-width:46px;min-height:24px}
.ec-polls__table-candidate-grid .ec-polls__table-toggle[aria-expanded=true]{background:#e8f1fc!important}

/* V6.5: match the party colors established by the primary average charts. */
.ec-polls__poll[data-party="republican"] .ec-polls__bar > span,
.ec-polls__table-row[data-party="republican"] .ec-polls__table-candidate-grid .ec-polls__bar > span{
	background:#ca3b54!important;
}
.ec-polls__poll[data-party="democratic"] .ec-polls__bar > span,
.ec-polls__table-row[data-party="democratic"] .ec-polls__table-candidate-grid .ec-polls__bar > span{
	background:#3572bd!important;
}

/* V6.6: fixed table proportions so expanding candidate names never resizes columns. */
.ec-polls__table{table-layout:fixed;min-width:1050px}
.ec-polls__table--combined th:nth-child(1){width:15%}
.ec-polls__table--combined th:nth-child(2){width:13%}
.ec-polls__table--combined th:nth-child(3){width:10%}
.ec-polls__table--combined th:nth-child(4){width:8%}
.ec-polls__table--combined th:nth-child(5){width:46%}
.ec-polls__table--combined th:nth-child(6){width:8%}
.ec-polls__table--party th:nth-child(1){width:17%}
.ec-polls__table--party th:nth-child(2){width:14%}
.ec-polls__table--party th:nth-child(3){width:10%}
.ec-polls__table--party th:nth-child(4){width:51%}
.ec-polls__table--party th:nth-child(5){width:8%}
.ec-polls__table-candidate-grid{max-width:none}
.ec-polls__table-candidate-grid .ec-polls__result{min-width:0}
.ec-polls__table-candidate-grid .ec-polls__table-toggle[aria-expanded="true"]{grid-column:2;justify-self:end}

/* V6.7: party-only panels have no per-row party attribute; inherit their color
   from the panel instead of the survey row (which remains unchanged). */
.ec-polls__panel[data-party="republican"] .ec-polls__bar > span{
	background:#ca3b54!important;
}
.ec-polls__panel[data-party="democratic"] .ec-polls__bar > span{
	background:#3572bd!important;
}

/* V6.8: read poll rankings vertically (left column, then right),
   matching the primary-average lists instead of row-first ordering. */
.ec-polls__table-candidate-grid{
	grid-template-columns:repeat(2,minmax(0,1fr));
	grid-template-rows:repeat(var(--ec-table-rows,3),minmax(0,auto));
	grid-auto-flow:column;
}
.ec-polls__table-candidate-grid .ec-polls__table-toggle[aria-expanded="false"],
.ec-polls__table-candidate-grid .ec-polls__table-toggle[aria-expanded="true"][data-more-count="0"]{
	grid-column:2;
	grid-row:3;
	justify-self:end;
}
.ec-polls__table-candidate-grid .ec-polls__table-toggle[aria-expanded="true"]:not([data-more-count="0"]){
	grid-column:auto;
	grid-row:auto;
	justify-self:end;
}
/* The table itself already scrolls horizontally below 1050px, so it can
   preserve two readable columns even at narrower desktop widths. */
@media(min-width:701px) and (max-width:980px){
	.ec-polls__table-candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* Animate only newly displayed batches, not filters or the initial render. */
@keyframes ec-polls-reveal{
	from{opacity:0;transform:translateY(6px)}
	to{opacity:1;transform:translateY(0)}
}
@media(prefers-reduced-motion:no-preference){
	.ec-polls__just-loaded{
		animation:ec-polls-reveal 300ms ease-out both;
		animation-delay:var(--ec-reveal-delay,0ms);
	}
}

/* V6.9: clearer but restrained zebra striping and survey-row boundaries. */
.ec-polls__table tbody .ec-polls__table-row{
	background:#fff;
	transition:background-color 130ms ease-out;
}
.ec-polls__table tbody .ec-polls__table-row:nth-child(even){
	background:#f0f4f9;
}
.ec-polls__table tbody .ec-polls__table-row > td{
	border-bottom-color:#d7e1ed;
}
@media(hover:hover){
	.ec-polls__table tbody .ec-polls__table-row:hover{
		background:#eaf2fc;
	}
}
@media(prefers-reduced-motion:reduce){
	.ec-polls__table tbody .ec-polls__table-row{
		transition:none;
	}
}

/* V7.0 history filters and transparent, data-only polling change summaries. */
.ec-polls__observations[hidden]{display:none!important}
.ec-polls__history-period-label{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:12px;font-weight:750;color:var(--ec-muted)}
.ec-polls__history-period{width:auto!important;max-width:190px;padding:6px 10px!important;min-height:34px;border:1px solid #cbd8e8!important;border-radius:7px!important;background:#fff!important;color:var(--ec-navy)!important;font-size:12px!important}
.ec-polls__chart-legend{gap:7px 10px}
.ec-polls__chart-legend label{display:inline-flex;align-items:center;gap:5px;margin:0;cursor:pointer;line-height:1.4;font-size:11px}
.ec-polls__chart-legend input{width:14px;height:14px;accent-color:var(--ec-blue);margin:0 1px 0 0}
.ec-polls__chart-legend label:has(input:not(:checked)){opacity:.55}
.ec-polls__observations [data-chart-series][hidden]{display:none!important}
.ec-polls__insights{margin:18px 0 22px}
.ec-polls__insights-heading h3{font-size:19px;font-weight:800;color:var(--ec-navy);margin:0 0 2px}
.ec-polls__insights-heading p{font-size:12px;color:var(--ec-muted);margin:0 0 11px}
.ec-polls__insights-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.ec-polls__insights--party .ec-polls__insights-grid{grid-template-columns:1fr}
.ec-polls__insight-card{background:#fff;border:1px solid var(--ec-border);border-left:3px solid #d0dae8;border-radius:10px;padding:14px 16px;min-width:0}
.ec-polls__insight-card--republican{border-left-color:#ca3b54}
.ec-polls__insight-card--democratic{border-left-color:#3572bd}
.ec-polls__insight-card h4{margin:0 0 6px;color:var(--ec-navy);font-size:15px;font-weight:800}
.ec-polls__insight-lead{font-size:13px;margin:0 0 9px;color:var(--ec-ink);font-weight:650}
.ec-polls__insight-subhead{color:var(--ec-muted);font-size:11px;font-weight:750;margin:0 0 6px}
.ec-polls__insight-movements{list-style:none;margin:0 0 9px;padding:0;display:grid;gap:5px}
.ec-polls__insight-movements li{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:12px}
.ec-polls__insight-movements li span{font-weight:650}
.ec-polls__insight-movements li strong{color:var(--ec-navy);white-space:nowrap}
.ec-polls__insight-movements li small{font-size:11px;color:var(--ec-muted);white-space:nowrap}
.ec-polls__insight-empty{font-size:12px;color:var(--ec-muted);margin:0 0 9px}
.ec-polls__insight-note{border-top:1px solid var(--ec-border);padding-top:8px;margin:8px 0 0;font-size:11px;line-height:1.55;color:var(--ec-muted)}
@media(max-width:700px){.ec-polls__insights-grid{grid-template-columns:1fr}.ec-polls__history-period-label{flex-wrap:wrap}}

.ec-polls__insight-recent{list-style:none;padding:0;margin:0 0 10px;display:grid;gap:3px}
.ec-polls__insight-recent li{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:12px}
.ec-polls__insight-recent a{color:var(--ec-blue);font-weight:650}
.ec-polls__insight-recent small{font-size:11px;color:var(--ec-muted)}

/* V7.1: party dashboard hierarchy. Summary cards share a row, history owns the width. */
.ec-polls__party-summary-row{
	display:grid;
	grid-template-columns:minmax(0,3fr) minmax(280px,2fr);
	align-items:stretch;
	gap:14px;
	margin:16px 0 14px;
}
.ec-polls__party-summary-row > .ec-polls__insights{
	display:flex;
	flex-direction:column;
	min-width:0;
	margin:0;
}
.ec-polls__party-summary-row .ec-polls__insights-grid{flex:1}
.ec-polls__party-summary-row .ec-polls__insight-card{height:100%}
.ec-polls__party-summary-row .ec-polls__overview-latest{min-width:0;height:100%}
.ec-polls__party-details{
	display:grid;
	grid-template-columns:minmax(0,1fr);
	margin-top:0;
}
.ec-polls__party-details > .ec-polls__overview-history{grid-column:1;grid-row:auto;min-width:0}
.ec-polls__party-details .ec-polls__observations{
	max-width:1080px;
	margin:8px auto 6px;
}
/* Typography: important changes first, old/new measurement second. */
.ec-polls__insights-heading h3{font-size:20px;line-height:1.3}
.ec-polls__insights-heading p{font-size:13px;line-height:1.5}
.ec-polls__insight-card h4{font-size:17px;line-height:1.35}
.ec-polls__insight-lead{font-size:14px;line-height:1.45}
.ec-polls__insight-subhead{font-size:12px;line-height:1.45;margin-top:12px}
.ec-polls__insight-recent{gap:5px}
.ec-polls__insight-recent li{font-size:13px}
.ec-polls__insight-recent small{font-size:12px}
.ec-polls__insight-movements{gap:9px;margin-bottom:12px}
.ec-polls__insight-movements li{display:block;font-size:14px;line-height:1.45}
.ec-polls__insight-movement-main{
	display:flex;
	align-items:baseline;
	justify-content:space-between;
	gap:10px;
}
.ec-polls__insight-movement-main span{min-width:0;overflow-wrap:anywhere}
.ec-polls__insight-movement-main strong{font-size:15px;font-variant-numeric:tabular-nums}
.ec-polls__insight-movements li small{display:block;color:var(--ec-muted);font-size:13px;margin-top:1px}
.ec-polls__insight-empty{font-size:13px}
.ec-polls__insight-context{
	border-top:1px solid var(--ec-border);
	padding-top:10px;
	margin:11px 0 6px;
	font-size:12px;
	line-height:1.5;
	color:#465c77;
}
.ec-polls__insight-method summary{
	cursor:pointer;
	color:var(--ec-blue);
	font-size:12px;
	font-weight:750;
	padding:2px 0;
}
.ec-polls__insight-method summary:focus-visible{outline:3px solid #60a5fa;outline-offset:2px}
.ec-polls__insight-method .ec-polls__insight-note{
	margin:5px 0 0;
	padding:0;
	border:0;
	font-size:12px;
	line-height:1.6;
}
/* Candidate controls are now above the plot and have practical click targets. */
.ec-polls__chart-legend{
	gap:8px;
	margin:8px 0 13px;
	padding:8px 10px;
	background:#f6f8fc;
	border:1px solid var(--ec-border);
	border-radius:8px;
}
.ec-polls__chart-legend label{
	font-size:13px;
	padding:3px 5px;
	gap:7px;
}
.ec-polls__chart-legend input{width:16px;height:16px}
.ec-polls__history-period-label{font-size:13px}
.ec-polls__history-period{font-size:13px!important;min-height:38px}
.ec-polls__chart-detail{font-size:13px}
.ec-polls__party-details .ec-polls__overview-heading h3{font-size:19px}
.ec-polls__latest-results>div{font-size:14px}
.ec-polls__table-candidate-grid .ec-polls__result > .ec-polls__candidate-name{font-size:13px}
.ec-polls__table-candidate-grid .ec-polls__result strong{font-size:14px}
@media(hover:hover){
	.ec-polls__table tbody .ec-polls__table-row:hover > td:first-child{
		box-shadow:inset 3px 0 #8faacb;
	}
}
@media(max-width:850px){
	.ec-polls__party-summary-row{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:720px){
	.ec-polls__party-details{grid-template-columns:minmax(0,1fr)}
	.ec-polls__party-summary-row{gap:10px;margin:12px 0}
	.ec-polls__chart-legend label{font-size:12px}
}

/* V7.2: reliable two-row survey preview and a compact historical-chart toolbar. */
.ec-polls__table-candidate-grid{
	grid-template-rows:repeat(var(--ec-table-rows,2),minmax(0,auto));
}
.ec-polls__table-candidate-grid .ec-polls__table-toggle[aria-expanded="false"],
.ec-polls__table-candidate-grid .ec-polls__table-toggle[aria-expanded="true"][data-more-count="0"]{
	grid-column:2;
	grid-row:2;
	justify-self:end;
}
.ec-polls__table-candidate-grid .ec-polls__result > .ec-polls__candidate-name{
	font-size:14px;
	line-height:1.35;
}
.ec-polls__table-candidate-grid .ec-polls__candidate-rank{font-size:12px}
.ec-polls__table-candidate-grid .ec-polls__result strong{font-size:14px}
.ec-polls__history-controls{
	display:flex;
	align-items:center;
	flex-wrap:wrap;
	column-gap:15px;
	row-gap:8px;
	margin:10px 0 8px;
}
.ec-polls__history-controls .ec-polls__chart-toolbar{margin:0;flex:none}
.ec-polls__history-controls .ec-polls__history-period-label{
	margin:0;
	white-space:nowrap;
}
.ec-polls__history-controls .ec-polls__chart-caption{
	margin:0;
	flex:1 1 220px;
	font-size:13px;
	line-height:1.4;
}
.ec-polls__chart-legend label{font-size:13px}
@media(max-width:700px){
	.ec-polls__history-controls{gap:8px}
	.ec-polls__history-controls .ec-polls__chart-toolbar{
		width:auto;
		max-width:100%;
	}
	.ec-polls__history-controls .ec-polls__chart-caption{
		flex-basis:100%;
	}
}

/* V7.3: one date crosshair and a readable, shared observation panel. */
.ec-polls__observations{touch-action:pan-y;cursor:crosshair}
.ec-polls__crosshair-line[hidden]{display:none!important}
.ec-polls__crosshair-line{pointer-events:none;stroke:#526782;stroke-width:1.25;stroke-dasharray:3 3}
.ec-polls__crosshair-panel{
	margin:9px 0 2px;
	padding:12px 14px;
	border:1px solid #d5e0ee;
	border-radius:9px;
	background:#f7f9fc;
	color:var(--ec-ink);
}
.ec-polls__crosshair-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 14px;margin-bottom:8px}
.ec-polls__crosshair-date{color:var(--ec-navy);font-size:15px;font-weight:800}
.ec-polls__crosshair-mode{color:#51657e;font-size:12px;line-height:1.45}
.ec-polls__crosshair-values{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:7px 16px}
.ec-polls__crosshair-values:empty{display:none}
.ec-polls__crosshair-value{display:grid;grid-template-columns:9px minmax(0,1fr) auto;gap:4px 7px;align-items:baseline;min-width:0;font-size:13px}
.ec-polls__crosshair-swatch{height:9px;width:9px;border-radius:50%;grid-column:1;align-self:center}
.ec-polls__crosshair-name{grid-column:2;overflow-wrap:anywhere}
.ec-polls__crosshair-value strong{grid-column:3;font-size:14px;white-space:nowrap;color:var(--ec-navy);font-variant-numeric:tabular-nums}
.ec-polls__crosshair-value small{grid-column:2;color:#65768e;font-size:11px}
.ec-polls__crosshair-value a{grid-column:3;color:var(--ec-blue);font-size:11px;font-weight:700}
@media(max-width:700px){
 .ec-polls__crosshair-panel{padding:10px 11px}
 .ec-polls__crosshair-values{grid-template-columns:1fr 1fr;gap:9px 12px}
 .ec-polls__crosshair-value{font-size:12px}
 .ec-polls__crosshair-date{font-size:14px}
}
@media(max-width:410px){
 .ec-polls__crosshair-values{grid-template-columns:1fr}
}

/* V7.4: desktop in-chart floating crosshair readout; mobile static readout. */
.ec-polls__chart-stage{position:relative;min-width:0}
@media(min-width:701px){
  .ec-polls__chart-stage .ec-polls__crosshair-panel{
    position:absolute;
    z-index:6;
    width:270px;
    max-width:calc(100% - 16px);
    max-height:calc(100% - 16px);
    overflow-y:auto;
    margin:0;
    padding:11px 12px;
    background:rgba(255,255,255,.97);
    box-shadow:0 8px 22px rgba(20,43,76,.16);
    pointer-events:none;
    backdrop-filter:blur(5px);
  }
  .ec-polls__chart-stage .ec-polls__crosshair-panel:not(.ec-polls__crosshair-active){
    display:none!important;
  }
  .ec-polls__chart-stage .ec-polls__crosshair-values{display:grid;grid-template-columns:1fr;gap:5px}
  .ec-polls__chart-stage .ec-polls__crosshair-value{
    display:grid;
    grid-template-columns:9px minmax(0,1fr) auto;
    gap:2px 6px;
    font-size:12px;
  }
  .ec-polls__chart-stage .ec-polls__crosshair-panel a{pointer-events:auto}
}
.ec-polls__crosshair-value .ec-polls__crosshair-name{
  display:block;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.ec-polls__crosshair-date{font-size:14px}
.ec-polls__crosshair-mode{font-size:11px}
@media(max-width:700px){
  .ec-polls__chart-stage .ec-polls__crosshair-panel{
    position:static!important;
    width:auto;
    max-height:none;
    overflow:visible;
    margin:10px 0 2px;
    background:#f7f9fc;
    pointer-events:auto;
  }
  .ec-polls__chart-stage .ec-polls__crosshair-name{font-size:12px}
  .ec-polls__chart-stage .ec-polls__crosshair-values{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:410px){
  .ec-polls__chart-stage .ec-polls__crosshair-values{grid-template-columns:1fr}
}

/* V7.5 mobile chart readability: a taller plot and an honest adaptive
   percentage axis derived from the selected real observations. */
@media(max-width:700px){
  .ec-polls__party-details .ec-polls__observations{
    width:100%;
    height:240px;
    max-width:none;
    margin:7px 0 4px;
  }
  .ec-polls__observations text{font-size:14px}
  .ec-polls__chart-point{stroke-width:1.5}
}

/* V8.0 — editorial polling dashboard. Favor a strong reading hierarchy,
   richer surfaces and meaningful numbers over more boxed-in white space. */
.ec-polls--dashboard{
  --ec-editorial-ink:#122944;
  --ec-editorial-red:#c83954;
  --ec-editorial-blue:#336db7;
}
.ec-polls--dashboard .ec-polls__average-heading{
  padding:3px 2px 9px;
  gap:14px;
  align-items:end;
}
.ec-polls__section-kicker{
  display:inline-block;
  margin:0 0 4px;
  color:#416589;
  font-size:11px;
  font-weight:850;
  letter-spacing:.11em;
  line-height:1.3;
  text-transform:uppercase;
}
.ec-polls--dashboard .ec-polls__average-heading h3{
  font-size:clamp(22px,2.8vw,29px);
  line-height:1.14;
  letter-spacing:-.025em;
}
.ec-polls--dashboard .ec-polls__average-heading p{font-size:13px;line-height:1.5}
.ec-polls--dashboard .ec-polls__average-grid{
  gap:16px;
  padding:0 0 7px;
}
.ec-polls--dashboard .ec-polls__average-card{
  background:linear-gradient(160deg,#fff 65%,#f8fafd 100%);
  border:1px solid #d4dfec;
  border-top:4px solid var(--ec-editorial-red);
  box-shadow:0 10px 28px rgba(14,39,73,.085);
  padding:17px 17px 19px;
  overflow:hidden;
}
.ec-polls--dashboard .ec-polls__average-card--democratic{
  border-top-color:var(--ec-editorial-blue);
}
.ec-polls--dashboard .ec-polls__average-card .ec-polls__overview-heading h3{
  font-size:18px;
  letter-spacing:-.015em;
}
.ec-polls__leader-feature{
  --ec-party-hue:#cb3954;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px 18px;
  align-items:center;
  padding:17px 17px 16px;
  margin:14px 0 16px;
  border-radius:11px;
  color:#fff;
  background:radial-gradient(circle at 95% 8%,rgba(255,255,255,.19),transparent 48%),
             linear-gradient(125deg,#132943 0%,#1a3857 100%);
  box-shadow:0 7px 18px rgba(9,34,63,.15);
}
.ec-polls__average-card--democratic .ec-polls__leader-feature{--ec-party-hue:#3d85d4}
.ec-polls__leader-copy{min-width:0;display:grid;gap:4px}
.ec-polls__leader-kicker{
  font-size:10px;
  font-weight:800;
  letter-spacing:.09em;
  line-height:1.4;
  text-transform:uppercase;
  color:#c9d9ea;
}
.ec-polls__leader-name{
  color:#fff;
  font-weight:800;
  font-size:clamp(16px,2vw,21px);
  line-height:1.22;
  overflow-wrap:anywhere;
}
.ec-polls__leader-meta{font-size:11px;color:#c9d8e8}
.ec-polls__leader-percent{
  font-size:clamp(34px,4vw,48px);
  font-weight:850;
  letter-spacing:-.06em;
  line-height:1;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.ec-polls__leader-percent span{font-size:.56em;letter-spacing:-.02em;margin-left:2px}
.ec-polls__leader-meter{
  grid-column:1/-1;
  width:100%;
  height:7px;
  overflow:hidden;
  background:rgba(255,255,255,.23);
  border-radius:99px;
  margin-top:5px;
}
.ec-polls__leader-meter > span{
  display:block;
  height:100%;
  background:var(--ec-party-hue);
  border-radius:99px;
}
.ec-polls--dashboard .ec-polls__supporting-ranks{
  border-top:1px solid #e3eaf2;
  padding-top:12px;
  margin:10px 0 15px;
  gap:13px 20px;
}
.ec-polls__supporting-ranks .ec-polls__snapshot-name{
  font-size:14px;
  font-weight:750;
  color:#183451;
}
.ec-polls__supporting-ranks .ec-polls__snapshot-row > strong{
  font-size:16px;
  font-weight:850;
  font-variant-numeric:tabular-nums;
}
.ec-polls--dashboard .ec-polls__explore-party{
  border-radius:8px!important;
  font-size:13px!important;
  font-weight:800!important;
  min-height:43px;
}
.ec-polls--dashboard .ec-polls__insights{
  background:linear-gradient(145deg,#f0f5fb,#f6f8fc);
  border:1px solid #d9e3f0;
  border-radius:15px;
  padding:17px 17px 19px;
  margin-top:21px;
}
.ec-polls--dashboard .ec-polls__insights-heading{
  border-bottom:1px solid #dbe5f0;
  padding-bottom:8px;
  margin-bottom:13px;
}
.ec-polls--dashboard .ec-polls__insights-heading h3{
  font-size:clamp(21px,2.6vw,26px);
  letter-spacing:-.025em;
}
.ec-polls--dashboard .ec-polls__insights-heading p{margin:3px 0 0;font-size:13px}
.ec-polls--dashboard .ec-polls__insights-grid{gap:15px}
.ec-polls__insight-card{
  --ec-insight-accent:#c83954;
  background:#fff;
  box-shadow:0 5px 18px rgba(20,46,78,.055);
}
.ec-polls__insight-card--democratic{--ec-insight-accent:#336db7}
.ec-polls__insight-card .ec-polls__insight-movements li:first-child{
  background:linear-gradient(100deg,#f3f6fa 0%,#fff 100%);
  border-left:3px solid var(--ec-insight-accent);
  border-radius:5px 9px 9px 5px;
  padding:11px 12px;
  margin:6px 0 10px;
}
.ec-polls__insight-card .ec-polls__insight-movements li:first-child .ec-polls__insight-movement-main{
  display:flex;
  flex-wrap:wrap;
  align-items:end;
  gap:8px 14px;
}
.ec-polls__insight-card .ec-polls__insight-movements li:first-child .ec-polls__insight-movement-main span{
  font-size:15px;
  line-height:1.35;
}
.ec-polls__insight-card .ec-polls__insight-movements li:first-child .ec-polls__insight-movement-main strong{
  font-size:clamp(23px,3vw,31px);
  letter-spacing:-.04em;
  line-height:1.05;
  font-weight:850;
  color:var(--ec-editorial-ink,#122944);
}
.ec-polls__insight-movement-main strong em{
  font-style:normal;
  font-size:.52em;
  letter-spacing:0;
  font-weight:750;
}
.ec-polls__insight-card .ec-polls__insight-movements li:first-child small{
  font-size:12px;
  margin-top:5px;
}
.ec-polls__insight-movements li:not(:first-child){
  padding:0 3px 0 6px;
}
.ec-polls__insight-movements li:not(:first-child) strong{
  font-size:16px;
  font-variant-numeric:tabular-nums;
}
.ec-polls__insight-movements li:not(:first-child) small{font-size:13px}
.ec-polls__insight-subhead{color:#405b76;font-size:12px}
.ec-polls__insight-context{color:#49617a;font-size:12px}
.ec-polls--dashboard .ec-polls__combined-explorer{
  border-top:3px solid #244b77;
  padding-top:20px;
  margin-top:29px;
}
.ec-polls--dashboard .ec-polls__combined-explorer > h3{
  font-size:clamp(21px,2.5vw,26px);
  letter-spacing:-.025em;
}
.ec-polls__overview-history{
  border:1px solid #d0dfed;
  box-shadow:0 9px 24px rgba(16,45,82,.075);
}
.ec-polls__overview-history .ec-polls__overview-heading h3{font-size:21px}
.ec-polls--dashboard .ec-polls__table-wrap{
  border:1px solid #cdd9e8;
  border-radius:9px;
  overflow-x:auto;
}
@media(max-width:700px){
  .ec-polls__leader-feature{
    padding:13px 12px;
    gap:8px 10px;
  }
  .ec-polls__leader-name{font-size:17px}
  .ec-polls__leader-percent{font-size:35px}
  .ec-polls--dashboard .ec-polls__insights{padding:12px}
  .ec-polls--dashboard .ec-polls__average-card{padding:13px}
  .ec-polls__insight-card .ec-polls__insight-movements li:first-child{padding:10px}
  .ec-polls--dashboard .ec-polls__supporting-ranks{gap:11px}
}

/* V8.1: the Latest Individual Poll is a sibling to What's Changed,
   not a second hero: same layered shell, compact survey scorecard. */
.ec-polls__party-summary-row .ec-polls__overview-latest{
  --ec-latest-accent:#ca3b54;
  background:linear-gradient(145deg,#f0f5fb,#f6f8fc);
  border:1px solid #d9e3f0;
  border-radius:15px;
  box-shadow:none;
  padding:17px;
}
.ec-polls__party-summary-row .ec-polls__overview-latest--democratic{
  --ec-latest-accent:#3572bd;
}
.ec-polls__party-summary-row .ec-polls__overview-latest .ec-polls__overview-heading{
  border-bottom:1px solid #dbe5f0;
  padding-bottom:9px;
  margin-bottom:9px;
}
.ec-polls__party-summary-row .ec-polls__overview-latest .ec-polls__overview-heading h3{
  font-size:20px;
  line-height:1.3;
  letter-spacing:-.02em;
}
.ec-polls__party-summary-row .ec-polls__overview-latest .ec-polls__overview-subline{
  font-size:13px;
  line-height:1.45;
  color:#4b6580;
}
.ec-polls__party-summary-row .ec-polls__latest-results{
  display:grid;
  gap:0;
  background:#fff;
  border:1px solid #d9e3f0;
  border-left:3px solid var(--ec-latest-accent);
  border-radius:10px;
  padding:7px 13px;
  margin:12px 0 14px;
  box-shadow:0 5px 18px rgba(20,46,78,.055);
}
.ec-polls__party-summary-row .ec-polls__latest-result{
  display:block;
  padding:10px 0;
  border-bottom:1px solid #e7edf4;
}
.ec-polls__party-summary-row .ec-polls__latest-result:last-child{
  border-bottom:0;
}
.ec-polls__party-summary-row .ec-polls__latest-result-label{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:9px;
  color:#183451;
  font-size:13px;
  line-height:1.35;
}
.ec-polls__party-summary-row .ec-polls__latest-result-name{
  display:inline-flex;
  gap:7px;
  align-items:baseline;
  min-width:0;
  overflow-wrap:anywhere;
}
.ec-polls__latest-result-rank{
  min-width:16px;
  flex:none;
  color:#7488a2;
  font-size:12px;
  font-weight:800;
}
.ec-polls__party-summary-row .ec-polls__latest-result-label strong{
  font-size:15px;
  font-weight:850;
  font-variant-numeric:tabular-nums;
}
.ec-polls__latest-result-track{
  margin:5px 0 0;
  width:100%;
  height:6px;
  border-radius:99px;
  background:#e8edf4;
  overflow:hidden;
}
.ec-polls__latest-result-track>span{
  display:block;
  height:100%;
  border-radius:99px;
  background:var(--ec-latest-accent);
}
.ec-polls__party-summary-row .ec-polls__latest-result:first-child .ec-polls__latest-result-label{
  font-weight:750;
}
.ec-polls__party-summary-row .ec-polls__latest-result:first-child .ec-polls__latest-result-track{
  height:7px;
}
.ec-polls__party-summary-row .ec-polls__overview-latest .ec-polls__source-link{
  font-size:13px;
  font-weight:750;
}
.ec-polls__party-summary-row .ec-polls__overview-latest .ec-polls__average-caption{
  font-size:12px;
  line-height:1.5;
  color:#647890;
  margin-top:11px;
}
@media(max-width:700px){
  .ec-polls__party-summary-row .ec-polls__overview-latest{padding:12px}
  .ec-polls__party-summary-row .ec-polls__latest-results{padding:5px 11px}
  .ec-polls__party-summary-row .ec-polls__latest-result{padding:9px 0}
}

/* V8.3: consistent, left-aligned mobile average headings and inline selector. */
@media (max-width:700px){
  .ec-polls--dashboard .ec-polls__average-heading,
  .ec-polls--dashboard .ec-polls__party-average > .ec-polls__average-heading{
    display:flex;
    flex-direction:column;
    align-items:stretch;
    justify-content:flex-start;
    gap:12px;
    text-align:left;
    padding:4px 0 9px;
    margin:12px 0 10px;
  }
  .ec-polls--dashboard .ec-polls__average-heading > div{
    width:100%;
    min-width:0;
    text-align:left;
  }
  .ec-polls--dashboard .ec-polls__average-heading .ec-polls__section-kicker,
  .ec-polls--dashboard .ec-polls__average-heading h3,
  .ec-polls--dashboard .ec-polls__average-heading p{
    display:block;
    text-align:left;
    margin-left:0;
    margin-right:0;
  }
  .ec-polls--dashboard .ec-polls__average-heading h3{
    font-size:clamp(21px,5.6vw,25px);
    line-height:1.19;
    overflow-wrap:normal;
  }
  .ec-polls--dashboard .ec-polls__average-heading label{
    display:grid;
    grid-template-columns:max-content minmax(0,1fr);
    align-items:center;
    gap:10px;
    width:100%;
    max-width:none;
    min-width:0;
    margin:0;
    text-align:left;
    font-size:12px;
    font-weight:750;
  }
  .ec-polls--dashboard .ec-polls__average-heading .ec-polls__average-select{
    display:block;
    min-width:0;
    max-width:100%;
    width:100%;
    margin:0!important;
    min-height:40px;
  }
}

/* V8.4: counteract the global editorial insight margin inside party summary
   rows so both sibling cards start at exactly the same vertical position. */
.ec-polls--dashboard .ec-polls__party-summary-row > .ec-polls__insights,
.ec-polls--dashboard .ec-polls__party-summary-row > .ec-polls__overview-latest{
  margin:0;
  align-self:stretch;
  min-width:0;
}

/* V9: an immediate, verifiable view into the surveys behind each average. */
.ec-polls__leader-gap{
  grid-column:1/-1;
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:8px;
  color:#dce8f5;
  font-size:12px;
  border-top:1px solid rgba(255,255,255,.17);
  padding-top:9px;
  margin-top:2px;
}
.ec-polls__leader-gap strong{white-space:nowrap;color:#fff;font-weight:850;font-size:15px;font-variant-numeric:tabular-nums}
.ec-polls__source-matrix{
  --ec-source-accent:#ca3b54;
  background:#fff;
  border:1px solid #d5e1ee;
  border-radius:11px;
  overflow:hidden;
  margin:19px 0 10px;
  box-shadow:0 5px 14px rgba(15,44,82,.06);
}
.ec-polls__source-matrix--democratic{--ec-source-accent:#3572bd}
.ec-polls__source-matrix-heading{
  padding:13px 15px 11px;
  border-bottom:1px solid #dce5f0;
  border-top:3px solid var(--ec-source-accent);
  background:linear-gradient(100deg,#f3f7fc,#fff);
}
.ec-polls__source-matrix-heading h4{
  font-size:17px;
  line-height:1.3;
  font-weight:850;
  color:var(--ec-navy);
  margin:0 0 3px;
}
.ec-polls__source-matrix-heading p{font-size:12px;color:#536982;margin:0;line-height:1.5}
.ec-polls__source-matrix-scroll{overflow-x:auto;max-width:100%}
.ec-polls__source-table{
  width:100%;border-collapse:collapse;
  min-width:600px;
  color:#1b3552;
  font-size:12px;
}
.ec-polls__source-table th,.ec-polls__source-table td{
  padding:10px 11px;
  border-bottom:1px solid #e3e9f1;
  text-align:center;
  vertical-align:middle;
  font-variant-numeric:tabular-nums;
}
.ec-polls__source-table th:first-child{text-align:left;min-width:175px}
.ec-polls__source-table thead{background:#edf3fa}
.ec-polls__source-table thead th{
  font-size:11px;font-weight:800;line-height:1.35;color:#32506d;
}
.ec-polls__source-table tbody tr:last-child th,.ec-polls__source-table tbody tr:last-child td{border-bottom:0}
.ec-polls__source-table tbody tr:nth-child(even){background:#f7f9fc}
.ec-polls__source-table tbody tr.ec-polls__source-average{background:#fff4e5;color:#162d4b}
.ec-polls__source-table .ec-polls__source-average strong{font-weight:850;font-size:14px}
.ec-polls__source-table tbody tr.ec-polls__source-newest{box-shadow:inset 3px 0 var(--ec-source-accent)}
.ec-polls__source-table .ec-polls__source-pollster{display:block;line-height:1.4;font-weight:750}
.ec-polls__source-pollster a{color:var(--ec-blue)}
.ec-polls__source-table th small{
  display:block;
  color:#657a92;
  font-size:11px;
  font-weight:450;
  line-height:1.45;
  margin-top:2px;
}
.ec-polls__source-spread{
  display:inline-block;
  padding:3px 7px;
  border-radius:15px;
  background:#eaf0f9;
  color:#1b4c8c;
  font-weight:750;
  font-size:11px;
  white-space:nowrap;
}
.ec-polls__source-matrix-footnote,.ec-polls__source-matrix-more{
  margin:0;
  font-size:11px;
  line-height:1.5;
  color:#536981;
  padding:10px 15px;
  border-top:1px solid #e3e9f1;
}
.ec-polls__source-matrix--compact{
  margin:16px 0 13px;
  box-shadow:none;
}
.ec-polls__source-matrix--compact .ec-polls__source-matrix-heading{padding:10px 12px}
.ec-polls__source-matrix--compact .ec-polls__source-matrix-heading h4{font-size:14px}
.ec-polls__source-matrix--compact .ec-polls__source-table{min-width:0}
.ec-polls__source-matrix--compact .ec-polls__source-table th:first-child{min-width:0}
.ec-polls__source-matrix--compact .ec-polls__source-table th,.ec-polls__source-matrix--compact .ec-polls__source-table td{
  padding:9px 10px;
}
.ec-polls__source-matrix--compact .ec-polls__source-matrix-more{padding:9px 12px}
@media(max-width:700px){
  .ec-polls__source-matrix{margin:12px 0}
  .ec-polls__source-matrix-heading h4{font-size:16px}
  .ec-polls__source-table{min-width:530px}
  .ec-polls__source-matrix--compact .ec-polls__source-table{min-width:0}
  .ec-polls__source-table th,.ec-polls__source-table td{padding:8px}
  .ec-polls__leader-gap{font-size:11px}
}

/* V9 Overview: measured trend direction, compact enough to accompany the average. */
.ec-polls__leader-sparkline{
  display:grid;
  grid-template-columns:minmax(0,1fr) 118px auto;
  gap:9px;
  align-items:center;
  padding:9px 11px;
  margin:-4px 0 9px;
  border:1px solid #e0e9f3;
  border-radius:8px;
  background:#f7f9fc;
}
.ec-polls__leader-sparkline > div{display:grid;gap:2px}
.ec-polls__leader-sparkline > div strong{font-size:12px;color:var(--ec-navy)}
.ec-polls__leader-sparkline small{font-size:10px;color:#587088;line-height:1.35}
.ec-polls__leader-sparkline svg{display:block;height:38px;width:100%;overflow:visible}
.ec-polls__leader-sparkline-change{font-size:13px;color:var(--ec-navy);white-space:nowrap;font-variant-numeric:tabular-nums}
@media(max-width:700px){
 .ec-polls__leader-sparkline{grid-template-columns:minmax(0,1fr) 95px auto;gap:7px;padding:8px}
 .ec-polls__leader-sparkline small{font-size:9px}
 .ec-polls__leader-sparkline-change{font-size:12px}
 .ec-polls__chart-month-label{display:none}
}

/* Compact mobile activity metadata: remove the three oversized stat cards. */
@media(max-width:700px){
  .ec-polls--dashboard .ec-polls__stats{
    display:flex;
    flex-wrap:wrap;
    gap:4px 10px;
    align-items:center;
    padding:9px 11px;
    margin:0 0 13px;
    border:1px solid #dce4ef;
    border-radius:9px;
    background:#f3f7fc;
  }
  .ec-polls--dashboard .ec-polls__stat,
  .ec-polls--dashboard .ec-polls__stat:last-child{
    display:inline-flex;
    gap:4px;
    align-items:baseline;
    flex:none;
    grid-column:auto;
    min-width:0;
    padding:0;
    margin:0;
    border:0;
    border-radius:0;
    background:none;
    box-shadow:none;
  }
  .ec-polls--dashboard .ec-polls__stat:not(:last-child)::after{
    content:"·";
    color:#8297af;
    margin-left:6px;
  }
  .ec-polls--dashboard .ec-polls__stat>span{
    display:inline;
    font-size:11px;
    margin:0;
    font-weight:600;
  }
  .ec-polls--dashboard .ec-polls__stat>strong{
    display:inline;
    font-size:12px;
    font-weight:800;
  }
}

/* Line endpoint annotations are an optional wide-screen aid;
   chart focus/crosshair still provides all candidates and source details. */
.ec-polls__chart-end-labels{pointer-events:none}
.ec-polls__chart-end-labels text{paint-order:stroke}
@media(max-width:899px){
  .ec-polls__chart-end-labels{display:none}
}

/* V9.1: readable three-candidate Overview previews, without a sideways
   scrolling comparison table on phones. Full names remain accessible. */
.ec-polls__source-candidate-short{display:none}
.ec-polls__source-matrix--compact .ec-polls__source-table{
  width:100%;
  min-width:0;
  table-layout:fixed;
}
.ec-polls__source-matrix--compact .ec-polls__source-table th:first-child{
  width:42%;
  min-width:0;
}
.ec-polls__source-matrix--compact .ec-polls__source-table th:not(:first-child){
  width:19.333%;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ec-polls__source-matrix--compact .ec-polls__source-table td{
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.ec-polls__source-matrix--compact .ec-polls__source-table thead th{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ec-polls__source-matrix--compact .ec-polls__source-table th:first-child .ec-polls__source-pollster{
  overflow-wrap:anywhere;
}
@media(max-width:700px){
  .ec-polls__source-matrix--compact .ec-polls__source-table th:first-child{width:43%}
  .ec-polls__source-matrix--compact .ec-polls__source-table th:not(:first-child){width:19%}
  .ec-polls__source-matrix--compact .ec-polls__source-table th,
  .ec-polls__source-matrix--compact .ec-polls__source-table td{
    padding:8px 4px;
    font-size:12px;
  }
  .ec-polls__source-matrix--compact .ec-polls__source-table th:first-child{padding-left:9px}
  .ec-polls__source-matrix--compact .ec-polls__source-candidate-full{display:none}
  .ec-polls__source-matrix--compact .ec-polls__source-candidate-short{display:inline}
  .ec-polls__source-matrix--compact .ec-polls__source-table thead th:not(:first-child){
    font-size:11px;
    letter-spacing:-.01em;
  }
}

/* V9.2: compact labels everywhere below the headline averages.
   The full canonical candidate name remains in accessible HTML metadata. */
.ec-polls__source-candidate-short{display:inline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.ec-polls__source-matrix .ec-polls__source-table thead th{max-width:140px;overflow:hidden;text-overflow:ellipsis}
.ec-polls__table-candidate-grid .ec-polls__candidate-name,
.ec-polls__poll .ec-polls__candidate-name{
  min-width:0;
}
.ec-polls__chart-legend label > span{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  max-width:160px;
}
@media(max-width:700px){
 .ec-polls__chart-legend label > span{max-width:115px}
}

/* V9.3: use the wide party tab for a compact horizontal movement summary.
   The two-card Overview and narrow/mobile layouts remain stacked. */
@media(min-width:1000px){
  .ec-polls--dashboard .ec-polls__insights--party .ec-polls__insight-movements{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    align-items:stretch;
    gap:12px;
    margin:10px 0 12px;
  }
  .ec-polls--dashboard .ec-polls__insights--party .ec-polls__insight-movements li{
    min-width:0;
    display:flex;
    flex-direction:column;
    justify-content:center;
    padding:13px 15px;
    margin:0;
    border:1px solid #e1e8f1;
    border-radius:9px;
    background:#f7f9fc;
    line-height:1.4;
  }
  .ec-polls--dashboard .ec-polls__insights--party .ec-polls__insight-movements li:first-child{
    border-left:3px solid var(--ec-insight-accent);
    background:linear-gradient(110deg,#f0f5fb,#fff);
    box-shadow:none;
  }
  .ec-polls--dashboard .ec-polls__insights--party .ec-polls__insight-movements li .ec-polls__insight-movement-main{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    justify-content:center;
    gap:6px;
  }
  .ec-polls--dashboard .ec-polls__insights--party .ec-polls__insight-movements li .ec-polls__insight-movement-main span{
    font-size:14px;
    font-weight:750;
    line-height:1.3;
  }
  .ec-polls--dashboard .ec-polls__insights--party .ec-polls__insight-movements li .ec-polls__insight-movement-main strong{
    font-size:clamp(22px,2vw,28px);
    letter-spacing:-.035em;
    line-height:1.05;
  }
  .ec-polls--dashboard .ec-polls__insights--party .ec-polls__insight-movements li small{
    margin-top:7px;
    font-size:12px;
    white-space:normal;
  }
}
