.election-page{max-width:1240px;margin:auto;padding:28px 20px 64px;color:var(--text-primary,#102331)}.election-breadcrumb{font-size:13px;margin-bottom:24px;color:#52667c}.election-breadcrumb a{color:inherit}.election-hero{display:flex;gap:24px;justify-content:space-between;align-items:center;margin-bottom:28px}.election-kicker{color:#007f78;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin:0 0 10px}.election-hero h1{font-size:clamp(30px,5vw,48px);line-height:1.12;font-weight:700;letter-spacing:-.04em;margin:0 0 14px}.election-hero p:not(.election-kicker){max-width:680px;color:#52667c;line-height:1.6}.election-hero-tag{padding:15px 20px;border:1px solid #bce8e0;border-radius:14px;background:#edf9f6;color:#006b62;white-space:nowrap;font-size:14px}.election-filter{display:grid;grid-template-columns:1fr 1fr 1fr 1.15fr;gap:16px;padding:20px;background:var(--bg-card,#fff);border:1px solid #dce6ed;border-radius:18px;margin-bottom:24px}.election-filter label,.election-search label{font-size:12px;font-weight:600;color:#52667c;display:flex;flex-direction:column;gap:8px}.election-filter select,.election-search input[type=search]{width:100%;min-height:46px;border:1px solid #cbd9e2;border-radius:10px;padding:10px;background:var(--bg-card,#fff);color:inherit;font-size:14px}.election-filter select:disabled{opacity:.55}.election-turn{display:flex;flex-direction:column;gap:6px;font-size:12px;justify-content:center}.election-turn strong{font-size:14px}.election-turn small{line-height:1.5;color:#52667c}.election-main{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,1fr);gap:24px;align-items:start}.election-results,.election-map-panel,.election-guide{background:var(--bg-card,#fff);border:1px solid #dce6ed;border-radius:18px;padding:24px}.election-section-top{display:flex;justify-content:space-between;gap:14px;align-items:start}.election-section-top h2,.election-map-panel h2,.election-guide h2{font-size:24px;font-weight:700;line-height:1.2;margin:0 0 10px}.election-section-top h2 span{display:block;font-size:14px;font-weight:400;margin-top:8px;color:#52667c}.election-refresh{border:1px solid #b8d8d5;border-radius:9px;padding:9px 12px;font-size:13px;color:#006b62;min-height:44px}.election-refresh:disabled{opacity:.6}.election-message,.election-caption{font-size:12px;line-height:1.6;color:#52667c;margin:12px 0}.election-progress{background:#f1f8f7;padding:16px;border-radius:12px;margin:18px 0}.election-progress>div{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.election-progress strong{font-size:25px;font-variant-numeric:tabular-nums;color:#006b62}.election-progress span{font-size:12px;color:#52667c}.election-progress b{margin-left:auto;font-size:11px;color:#006b62}.election-progress progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;border:0;border-radius:9px;display:block;margin:12px 0;background:#dce8e6;overflow:hidden}.election-progress progress::-webkit-progress-bar{background:#dce8e6}.election-progress progress::-webkit-progress-value{background:#009c8b}.election-progress progress::-moz-progress-bar{background:#009c8b}.election-progress small{font-size:11px;line-height:1.6;color:#52667c;display:block}.election-note{font-size:13px;line-height:1.6;padding:12px;background:#fff8e6;border-left:3px solid #c98b25;margin:12px 0;color:#634817}.election-search{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:20px 0 8px}.election-search>label:first-child{flex:1;min-width:180px}.election-search .election-check{flex-direction:row;align-items:center;min-height:44px}.election-candidates{list-style:none;margin:0;padding:0;max-height:780px;overflow-y:auto;scrollbar-gutter:stable}.election-candidates li{padding:18px 0;border-bottom:1px solid #e2e9ed}.election-candidate-head{display:flex;gap:16px;justify-content:space-between}.election-candidate-head strong{font-size:16px;display:block;line-height:1.4}.election-candidate-head span{display:block;font-size:12px;color:#52667c;margin-top:4px}.election-candidate-votes{text-align:right;flex-shrink:0}.election-candidate-votes b{font-size:22px;font-variant-numeric:tabular-nums}.election-vote-track{height:8px;background:#eaf0f4;border-radius:8px;margin:12px 0;overflow:hidden}.election-vote-track i{display:block;height:100%;background:#099d92;border-radius:8px}.election-candidate-status{font-size:11px;color:#52667c;display:flex;gap:8px;flex-wrap:wrap}.election-candidate-status .is-elected{color:#006b62;background:#e6f7f1;padding:2px 6px;border-radius:4px;font-weight:700}.election-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:24px}.election-stats div{padding:12px;background:#f3f6f9;border-radius:10px}.election-stats span{font-size:11px;display:block;color:#52667c}.election-stats strong{font-size:15px;display:block;margin-top:6px;font-variant-numeric:tabular-nums}.election-source,.election-back{font-size:12px;color:#007f78;text-decoration:underline;display:inline-block;margin-top:16px}.election-map-panel>p:not(.election-kicker){font-size:13px;line-height:1.7;color:#52667c}.election-map{width:100%;height:auto;max-height:390px;margin:10px 0;display:block}.election-map path{fill:#d5e8e6;stroke:#fff;stroke-width:1.3;cursor:pointer;transition:fill .15s}.election-map path:hover,.election-map path:focus{fill:#7acfc4;outline:none;stroke:#12534f;stroke-width:2}.election-map path.selected{fill:#008f82}.election-map-panel>small{display:block;font-size:10px;line-height:1.6;color:#52667c}.election-state-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:20px}.election-state-links a{display:flex;align-items:center;justify-content:center;border:1px solid #dce6ed;border-radius:7px;min-width:44px;min-height:44px;font-size:12px;color:#006b62}.election-guide{margin-top:24px}.election-guide-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:20px}.election-guide-grid span{font-size:12px;color:#008f82;font-weight:700}.election-guide-grid h3{font-size:16px;font-weight:600;margin:8px 0}.election-guide-grid p,.election-methodology p{font-size:13px;line-height:1.8;color:#52667c}.election-methodology{margin-top:28px;max-width:900px}.election-methodology h2{font-size:20px;font-weight:700;margin-bottom:12px}.election-methodology a{color:#007f78;text-decoration:underline}.election-dashboard :focus-visible{outline:3px solid #008f82;outline-offset:3px}.election-filter-toggle{display:none}.election-outcome{font-size:13px;font-weight:600;color:#006b62;margin:12px 0}.election-explanation{font-size:12px;line-height:1.6;margin:10px 0;color:#52667c}.election-explanation summary{cursor:pointer;padding:8px 0;min-height:36px}.election-explanation p{margin:8px 0}#result-title{scroll-margin-top:90px}@media (max-width:800px){.election-main{grid-template-columns:1fr}.election-filter{grid-template-columns:1fr 1fr;display:none}.election-filter.is-open{display:grid}.election-filter-toggle{display:flex;justify-content:space-between;align-items:center;width:100%;padding:14px 16px;min-height:48px;margin-bottom:18px;border:1px solid #cbd9e2;border-radius:12px;background:var(--bg-card,#fff);font-size:13px;color:#006b62}.election-hero{align-items:start}.election-hero-tag{display:none}.election-map{max-height:340px}.election-guide-grid{gap:16px}}@media (max-width:480px){.election-page{padding:20px 14px 48px}.election-filter{padding:14px;gap:12px}.election-filter label:nth-child(3),.election-turn{grid-column:1/-1}.election-results,.election-map-panel,.election-guide{padding:18px}.election-section-top h2{font-size:21px}.election-candidate-head strong{font-size:14px}.election-candidate-votes b{font-size:20px}.election-candidate-head{gap:8px}.election-stats{grid-template-columns:1fr 1fr}.election-guide-grid{grid-template-columns:1fr}.election-candidates{max-height:none;overflow:visible}.election-hero{margin-bottom:20px}}html.dark .election-dashboard,html.dark .election-methodology{--bg-card:#122333;color:#e5eef5}html.dark .election-page{color:#e5eef5;background:#0b1723}html.dark .election-progress,html.dark .election-stats div{background:#183036}html.dark .election-filter,html.dark .election-results,html.dark .election-map-panel,html.dark .election-guide{border-color:#314654}html.dark .election-message,html.dark .election-caption,html.dark .election-candidate-head span,html.dark .election-candidate-status,html.dark .election-stats span,html.dark .election-map-panel>p:not(.election-kicker),html.dark .election-map-panel>small,html.dark .election-guide-grid p,html.dark .election-methodology p,html.dark .election-explanation,html.dark .election-section-top h2 span,html.dark .election-filter label,html.dark .election-search label,html.dark .election-turn small,html.dark .election-hero p:not(.election-kicker),html.dark .election-progress span,html.dark .election-progress small{color:#afc3d2}html.dark .election-progress strong,html.dark .election-progress b,html.dark .election-kicker,html.dark .election-outcome,html.dark .election-source,html.dark .election-back,html.dark .election-methodology a,html.dark .election-state-links a,html.dark .election-filter-toggle,html.dark .election-refresh{color:#67dfcd}.election-directory{margin:24px 0;padding:24px;border:1px solid #dce6ed;border-radius:18px;background:var(--bg-card,#fff)}.election-directory h2{font-size:22px;font-weight:700;margin-bottom:14px;line-height:1.3}.election-directory p{font-size:14px;line-height:1.8;margin:12px 0;color:#52667c}.election-directory label{display:flex;flex-direction:column;gap:8px;font-size:13px;color:#52667c}.election-directory input,.election-directory select{min-height:46px;border:1px solid #cbd9e2;border-radius:9px;padding:10px 12px;color:var(--text-primary,#102331);background:var(--bg-card,#fff);width:100%;max-width:480px}.election-directory-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:420px;overflow:auto;margin:16px 0}.election-directory-links a{padding:12px;border:1px solid #dce6ed;border-radius:8px;min-height:44px;font-size:13px;color:#007f78;overflow-wrap:anywhere}.election-directory a,.election-directory-cta a{color:#007f78;text-decoration:underline;text-underline-offset:3px}.election-directory-cta{margin:24px 0;line-height:1.7}.candidate-hero{display:grid;grid-template-columns:180px 1fr;gap:28px;align-items:center;margin:24px 0 32px}.candidate-hero figure{margin:0}.candidate-hero img{width:180px;height:220px;-o-object-fit:contain;object-fit:contain;background:#edf1f4;border-radius:12px}.candidate-hero figcaption{font-size:11px;color:#52667c;margin-top:10px}.candidate-hero figcaption a{color:inherit;text-decoration:underline}.candidate-hero h1{font-size:clamp(26px,4vw,42px);line-height:1.15;font-weight:700;letter-spacing:-.03em;margin-bottom:16px;overflow-wrap:anywhere}.candidate-hero>div>p{margin:10px 0}.candidate-status{display:inline-block;border:1px solid #cbd9e2;border-radius:7px;font-size:14px;padding:6px 10px}.candidate-no-photo{height:220px;display:grid;place-items:center;text-align:center;padding:20px;background:#edf1f4;border-radius:12px;font-size:13px;color:#52667c}.candidate-overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.candidate-overview>div{background:var(--bg-card,#fff);border:1px solid #dce6ed;border-radius:14px;padding:20px}.candidate-overview span{display:block;font-size:12px;color:#52667c;margin-bottom:10px}.candidate-overview strong{font-size:clamp(20px,3vw,32px);line-height:1.25;font-weight:700;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.candidate-local-result{margin-top:20px;padding:16px;background:#f1f8f7;border-radius:12px}.candidate-local-result strong{font-size:22px;font-weight:700}.candidate-local-result small{color:#52667c;font-size:12px}.candidate-directory-filters{display:grid;grid-template-columns:1.5fr 1fr;gap:16px}.candidate-directory-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}.candidate-directory-list>a{display:flex;flex-direction:column;gap:7px;border:1px solid #dce6ed;padding:16px;border-radius:10px;text-decoration:none}.candidate-directory-list span,.candidate-directory-list small{font-size:12px;color:#52667c}.candidate-pagination{display:flex;justify-content:space-between;margin-top:20px}.candidate-pagination button{padding:10px 16px;min-height:44px;border:1px solid #cbd9e2;border-radius:8px}.candidate-pagination button:disabled{opacity:.4}.election-candidate-head a:hover{text-decoration:underline}.election-directory :focus-visible,.candidate-pagination :focus-visible{outline:3px solid #008f82;outline-offset:3px}html.dark .election-directory,html.dark .candidate-overview>div{--bg-card:#122333;background:#122333;border-color:#314654}html.dark .election-directory p,html.dark .election-directory label,html.dark .candidate-overview span,html.dark .candidate-hero figcaption,html.dark .candidate-directory-list span,html.dark .candidate-directory-list small,html.dark .candidate-local-result small{color:#afc3d2}html.dark .election-directory a,html.dark .election-directory-cta a{color:#67dfcd}html.dark .candidate-local-result{background:#183036}html.dark .election-directory-links a,html.dark .candidate-directory-list>a{border-color:#314654}@media (max-width:700px){.election-directory-links{grid-template-columns:1fr 1fr}.candidate-hero{grid-template-columns:110px minmax(0,1fr);gap:16px}.candidate-hero img,.candidate-no-photo{width:110px;height:145px}.candidate-overview{grid-template-columns:1fr 1fr}.candidate-overview>div:last-child{grid-column:1/-1}.candidate-directory-list,.candidate-directory-filters{grid-template-columns:1fr}.election-directory{padding:18px}.candidate-hero h1{font-size:26px}.candidate-hero .election-kicker{font-size:10px}.candidate-overview>div{padding:16px}}.candidate-outcome{margin:24px 0;padding:22px;border:1px solid #cbd9e2;border-left:5px solid #718497;border-radius:14px;background:var(--bg-card,#fff)}.candidate-outcome h2{font-size:24px;font-weight:700;line-height:1.3;margin:8px 0}.candidate-outcome p:not(.election-kicker){font-size:14px;line-height:1.8;margin:10px 0}.candidate-outcome small{font-size:12px;color:#52667c}.candidate-outcome-elected{border-left-color:#087563;background:#eef8f4}.candidate-outcome-pending{border-left-color:#bd872e;background:#fff8e6}.candidate-geography-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:28px;margin:24px 0}.candidate-geography-grid>div{min-width:0}.candidate-geography h3{font-size:18px;font-weight:700;margin:0 0 16px}.candidate-metric{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.candidate-metric button{border:1px solid #cbd9e2;border-radius:9px;padding:10px 14px;min-height:44px;font-size:13px}.candidate-metric button[aria-pressed=true]{background:#087563;border-color:#087563;color:#fff}.candidate-city-map{display:block;width:100%;height:auto;max-height:460px;margin-bottom:14px}.candidate-city-map path{stroke:#fff;stroke-width:.6;cursor:pointer;vector-effect:non-scaling-stroke}.candidate-city-map path:hover,.candidate-city-map path:focus-visible,.candidate-city-map path.selected{stroke:#102331;stroke-width:2;outline:none}.candidate-map-legend{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:11px;color:#52667c;margin:12px 0}.candidate-map-legend i{height:12px;width:20px;display:inline-block}.candidate-no-data{flex-basis:100%;margin-top:6px}.candidate-city-table-wrap{overflow:auto;margin-top:18px}.candidate-city-table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.candidate-city-table caption{text-align:left;font-size:11px;color:#52667c;margin-bottom:10px}.candidate-city-table th,.candidate-city-table td{padding:12px 6px;border-bottom:1px solid #dce6ed;text-align:right;vertical-align:top}.candidate-city-table th:first-child{text-align:left;max-width:210px;overflow-wrap:anywhere}.candidate-city-table thead th{font-size:11px;color:#52667c}.candidate-city-table tbody th{font-weight:500}.candidate-city-table td{white-space:nowrap}.candidate-geography .candidate-local-result strong{font-size:18px}.candidate-geography .candidate-local-result p{font-size:13px}.candidate-geography .candidate-local-result a{overflow-wrap:anywhere}html.dark .candidate-outcome{background:#122333;border-color:#314654}html.dark .candidate-outcome-elected{border-left-color:#67dfcd}html.dark .candidate-outcome-pending{border-left-color:#dbac58}html.dark .candidate-outcome small,html.dark .candidate-map-legend,html.dark .candidate-city-table caption,html.dark .candidate-city-table thead th{color:#afc3d2}html.dark .candidate-city-table th,html.dark .candidate-city-table td{border-color:#314654}html.dark .candidate-city-map path{stroke:#263d48}html.dark .candidate-city-map path:hover,html.dark .candidate-city-map path:focus-visible,html.dark .candidate-city-map path.selected{stroke:#fff}@media (max-width:800px){.candidate-geography-grid{grid-template-columns:1fr;gap:28px}.candidate-city-map{max-height:360px}.candidate-outcome{padding:18px}.candidate-outcome h2{font-size:22px}.candidate-city-table th:first-child{max-width:145px}.candidate-city-table td,.candidate-city-table th{padding:12px 4px}.candidate-city-table{font-size:12px}.candidate-map-legend{font-size:10px}}
