.election-party-composite{margin:0 0 22px;padding:22px 24px 16px;border:1px solid #294052;border-radius:12px;background:#05090c;box-shadow:0 12px 35px rgba(0,0,0,.12)}
.election-party-composite-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:14px}
.election-party-composite-heading>div:first-child{min-width:240px;max-width:620px}
.election-party-composite-heading .eyebrow{margin:0 0 9px;color:#f3cf7b;font:700 10px/1.4 Consolas,monospace;letter-spacing:.14em}
.election-party-composite-heading h2{margin:0 0 9px;color:#f3f6f8;font-size:clamp(21px,2.2vw,29px);letter-spacing:-.5px}
.election-party-composite-heading p:last-child{margin:0;color:#a7b7c6;font-size:13px;line-height:1.5}
.election-party-composite-stats{display:grid;grid-template-columns:repeat(3,minmax(112px,1fr));gap:1px;min-width:min(100%,430px);background:#294052;border:1px solid #294052}
.election-party-composite-stats>div{display:grid;align-content:center;gap:7px;min-height:68px;padding:10px 13px;background:#0c1924}
.election-party-composite-stats span{color:#8398a8;font:700 9px/1.3 Consolas,monospace;letter-spacing:.08em}
.election-party-composite-stats strong{color:#eef3f6;font:600 17px/1 Consolas,monospace}
.election-party-composite-stats>div:first-child strong{color:#74adff}
.election-party-composite-stats>div:nth-child(2) strong{color:#f18085}
.election-composite-status{min-height:18px;margin:8px 0;color:#8fa3b0;font:11px/1.5 Consolas,monospace}
.election-composite-chart{overflow-x:auto;border:1px solid #233743;background:#07111a;scrollbar-color:#405d6d #09141c}
.election-composite-svg{display:block;width:100%;min-width:640px;height:auto;max-height:390px}
.election-composite-grid line{stroke:#263d4b;stroke-width:1;vector-effect:non-scaling-stroke}
.election-composite-grid text,.election-composite-date{fill:#a8bac5;font:14px Consolas,monospace}
.election-composite-grid.center line{stroke:#f3cf7b;stroke-dasharray:6 6;stroke-width:1.5}
.election-composite-grid.center text{fill:#f3cf7b;font-weight:700}
.election-composite-line{fill:none;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.election-composite-line.democrat{stroke:#67a7ff}
.election-composite-line.republican{stroke:#f07880}
.election-composite-last{stroke:#07111a;stroke-width:2;vector-effect:non-scaling-stroke}
.election-composite-last.democrat{fill:#67a7ff}
.election-composite-last.republican{fill:#f07880}
.election-composite-empty{display:grid;min-height:150px;place-items:center;padding:22px;color:#a4b4bf;font-size:13px;line-height:1.5;text-align:center}
.election-composite-legend{display:flex;flex-wrap:wrap;gap:13px 23px;padding:13px 2px 2px;color:#c4d0d7;font:12px/1.4 Consolas,monospace}
.election-composite-legend span{display:inline-flex;align-items:center;gap:8px}
.election-composite-key{display:inline-block;width:20px;height:0;border-top:3px solid}
.election-composite-key.democrat{border-color:#67a7ff}
.election-composite-key.republican{border-color:#f07880}
.election-composite-key.center{border-color:#f3cf7b;border-top-style:dashed}
.election-composite-note{margin:8px 0 0;color:#8295a4;font-size:11px;line-height:1.5}
@media(max-width:760px){.election-party-composite{padding:18px 14px 14px}.election-party-composite-heading{display:grid;gap:15px}.election-party-composite-heading>div:first-child{min-width:0}.election-party-composite-stats{min-width:0;width:100%;grid-template-columns:repeat(3,minmax(0,1fr))}.election-party-composite-stats>div{padding:9px 8px}.election-party-composite-stats span{font-size:8px}.election-party-composite-stats strong{font-size:15px}.election-composite-svg{min-width:640px}.election-composite-legend{display:grid;grid-template-columns:1fr;gap:8px}}
