@charset "UTF-8";
:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#162a40;background:#f0f3f7;font-synthesis:none;--navy:#10293e;--muted:#64748b;--line:#dde5ed;--green:#13845c;--amber:#d19b20;--red:#ca505b}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,select{cursor:pointer}button{border:1px solid #cad5df;border-radius:7px;background:white;color:var(--navy);padding:10px 14px;font-weight:600}button:hover{background:#eaf0f5}button.primary{background:var(--navy);color:white;border-color:var(--navy)}button:disabled{cursor:not-allowed;opacity:.45}input,select,textarea{border:1px solid #cbd5e1;border-radius:6px;padding:10px;background:white;color:inherit;min-width:0;width:100%}input:focus,select:focus,textarea:focus,button:focus-visible{outline:3px solid #8ec4e9;outline-offset:2px}label{display:grid;gap:6px;font-size:12px;font-weight:650;color:#506276}h1,h2,h3,p{margin:0}h1{font-size:28px;letter-spacing:-.8px}h2{font-size:18px;letter-spacing:-.3px}h3{font-size:14px}small,.muted{color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:1.8px;font-size:10px;font-weight:750;color:#72859a}.top{background:var(--navy);color:#fff;padding:19px 32px;display:flex;justify-content:space-between;align-items:center;gap:20px}.brand{display:flex;align-items:center;gap:14px}.brand-icon{width:35px;height:35px;border:1px solid #7b8d9e;border-radius:8px;display:grid;place-items:center;font-size:20px}.brand strong{display:block;font-size:16px}.brand small{color:#a9bccd;letter-spacing:1px;font-size:10px}.top-right,.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.pill{display:inline-flex;align-items:center;gap:6px;border-radius:4px;padding:5px 8px;font-size:10px;font-weight:750;letter-spacing:.5px;background:#e8eef3;color:#485d72}.demo{background:#f9d889;color:#4e3a10}.local{background:#24435b;color:#cbe3f4}.nav{background:white;border-bottom:1px solid var(--line);padding:0 32px;display:flex;gap:28px;align-items:center}.nav button{border:0;border-radius:0;padding:16px 0;color:#68798b;font-size:12px;background:none}.nav button.active{color:var(--navy);border-bottom:3px solid var(--navy)}.nav .spacer{flex:1}.shell{max-width:1600px;margin:auto;padding:28px 32px 40px}.page-title{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:24px}.page-title p{font-size:12px;color:var(--muted);margin-top:9px}.filters{display:grid;grid-template-columns:1.3fr 1fr 1fr 1.6fr;gap:15px;background:white;padding:16px 20px;border:1px solid var(--line);border-radius:9px;margin-bottom:20px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat{background:white;border:1px solid var(--line);border-radius:9px;padding:19px 22px;position:relative}.stat .value{font-size:29px;font-weight:750;letter-spacing:-1px;margin:10px 0 5px;font-variant-numeric:tabular-nums}.stat .label{font-size:11px;color:var(--muted);font-weight:600}.stat small{font-size:10px}.dashboard-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:20px}.card{background:white;border:1px solid var(--line);border-radius:9px;overflow:hidden}.card-head{padding:20px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #edf1f5}.card-head p{font-size:11px;color:var(--muted);margin-top:5px}.card-body{padding:20px 22px}.segmented{display:flex;gap:3px;background:#edf1f5;padding:3px;border-radius:6px}.segmented button{font-size:10px;border:0;background:transparent;padding:7px 10px}.segmented button.active{background:white;box-shadow:0 1px 3px #152b4015}.map-area{padding:14px 22px 8px;background:linear-gradient(#f9fbfd,#f1f6f9);min-height:300px;display:flex;flex-direction:column;justify-content:center}.map-area svg{width:100%;height:260px;display:block}.map-area path{stroke:#fff;stroke-width:.65;vector-effect:non-scaling-stroke;cursor:pointer;transition:opacity .15s}.map-area path:hover{opacity:.65;stroke:#152d44;stroke-width:2}.map-note{font-size:10px;color:#7b8c9e;text-align:center;margin:8px}.legend{display:flex;flex-wrap:wrap;gap:12px;padding:15px 22px;font-size:10px;border-top:1px solid var(--line)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.ranking{padding:5px 22px 16px}.candidate{padding:17px 0;border-bottom:1px solid #edf1f5}.candidate:last-child{border:0}.candidate-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;gap:12px}.candidate-name{font-size:12px;font-weight:650}.candidate-name small{display:block;font-size:10px;margin-top:3px;font-weight:400}.candidate-number{text-align:right;font-weight:750;font-size:15px;font-variant-numeric:tabular-nums}.candidate-number small{font-size:10px;margin-left:7px;font-weight:400}.bar-track{height:5px;background:#edf2f6;border-radius:3px;overflow:hidden}.bar-fill{height:100%;border-radius:3px}.lower{display:grid;grid-template-columns:1.65fr 1fr;gap:20px;margin-top:20px}.scroll-table{overflow:auto;max-height:420px}table{border-collapse:collapse;width:100%;font-size:11px;white-space:nowrap}th{text-align:left;color:#75869a;font-size:9px;text-transform:uppercase;letter-spacing:.6px;background:#f8fafc;position:sticky;top:0;padding:12px 18px}td{padding:12px 18px;border-top:1px solid #edf1f5}td.number{text-align:right;font-variant-numeric:tabular-nums}tr.clickable{cursor:pointer}tr.clickable:hover{background:#f1f6fa}.status{font-size:9px;border-radius:4px;padding:4px 6px;background:#fff0c7;color:#89651b}.status.final{background:#d9f1e6;color:#106344}.status.empty{background:#fbe0e3;color:#a93745}.activity{padding:0 22px;max-height:360px;overflow:auto}.event{padding:15px 0;border-bottom:1px solid var(--line);font-size:11px;cursor:pointer}.event small{display:block;font-size:10px;margin-top:5px}.notice{background:#f7f9fc;border:1px solid var(--line);padding:14px 17px;border-radius:7px;font-size:12px;line-height:1.6;margin:16px 0}.warning{background:#fff6dd;border-color:#eed492;color:#705b2a}.error{background:#fee7e7;border-color:#e5a8a8;color:#8f2535}.footer{display:flex;justify-content:space-between;font-size:10px;color:#7b8a9b;margin-top:24px;gap:15px}.entry-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.vote-inputs{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.field-wide{grid-column:1/-1}.actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:20px}.revision{padding:15px 0;border-bottom:1px solid var(--line);font-size:12px;line-height:1.7}.login{max-width:440px;margin:10vh auto;background:white;padding:36px;border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 60px #16334a12}.login h1{margin:15px 0}.login form{display:grid;gap:17px;margin-top:24px}.login p{font-size:12px;line-height:1.7;color:var(--muted)}#toast{display:none;position:fixed;bottom:24px;right:24px;max-width:480px;background:#10293e;color:white;border-radius:8px;padding:16px 20px;z-index:100;box-shadow:0 8px 25px #0002;font-size:13px}.admin-row{display:grid;grid-template-columns:1fr 1.2fr 1fr 70px;gap:12px;align-items:end;margin-bottom:12px}.projection .nav,.projection .filters,.projection .footer{display:none}.projection .shell{max-width:none}.projection .stat .value{font-size:40px}.projection h1{font-size:36px}.projection .candidate-name{font-size:16px}.projection .candidate-number{font-size:21px}.empty-state{padding:45px 20px;text-align:center;color:var(--muted);font-size:13px}.subtle-link{border:0;padding:0;background:none;font-size:11px;text-decoration:underline}.inline-error{font-size:12px;color:#a42e40;margin-top:12px}.progress{display:flex;height:5px;background:#e6ecf2;margin-top:12px;overflow:hidden;border-radius:3px}.progress span{display:block}.mobile-only{display:none}
@media(max-width:1000px){.shell{padding:22px 20px}.top{padding:18px 20px}.dashboard-grid,.lower{grid-template-columns:1.25fr 1fr}.nav{padding:0 20px}.filters{grid-template-columns:1fr 1fr}.stat{padding:16px}.stat .value{font-size:24px}.entry-grid{grid-template-columns:1fr}}
@media(max-width:700px){.top{align-items:flex-start}.top-right{justify-content:flex-end}.top-right .local{display:none}.brand strong{font-size:13px}.brand-icon{display:none}.nav{gap:18px;overflow:auto;white-space:nowrap}.nav button{font-size:11px}.nav .spacer{display:none}.shell{padding:20px 14px}.page-title{align-items:flex-start;flex-direction:column;gap:12px}h1{font-size:24px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat .value{font-size:24px}.dashboard-grid,.lower{grid-template-columns:1fr}.filters{padding:13px;gap:12px}.card-head,.card-body{padding:17px}.map-area{min-height:240px;padding:8px}.map-area svg{height:210px}.form-grid,.vote-inputs{grid-template-columns:1fr}.admin-row{grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);padding-bottom:15px}.footer{flex-direction:column}.login{margin:30px 14px;padding:25px}.card-head{flex-wrap:wrap}.top button{font-size:10px;padding:7px}.projection h1{font-size:27px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media print{.nav,.filters,.actions,button{display:none!important}.shell{padding:0}.card{break-inside:avoid}.top{background:white;color:#10293e}.stats{grid-template-columns:repeat(4,1fr)}body{background:white}}
@media(max-width:420px){.filters{grid-template-columns:1fr}.nav{scrollbar-width:thin}.top-right{min-width:105px}.stats .stat{padding:14px}.stats .stat small{line-height:1.5}}

/* Local operations and presentation refinement. All assets are served locally. */
.live-banner{padding:10px 32px;background:#e5eef5;border-bottom:1px solid #ccdbe7;color:#27485f;font-size:12px;min-height:38px;line-height:1.5}
.volume-label{display:flex;align-items:center;gap:8px;flex-shrink:0;font-size:10px}.volume-label input{width:66px;padding:0;accent-color:#244d6b}
.nav{gap:20px}.nav button{flex-shrink:0}.nav .volume-label{margin-left:-10px}
.leader-headline{display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px;background:#10293e;color:white;border-radius:10px;padding:23px 25px;margin-bottom:20px;align-items:center}
.leader-headline .eyebrow{color:#adc5d7;font-size:9px;letter-spacing:1.2px}.leader-headline strong{display:block;margin-top:7px;font-size:23px;letter-spacing:-.4px;overflow-wrap:anywhere}.leader-headline p{font-size:11px;color:#bfd0dc;line-height:1.7;border-left:1px solid #476074;padding-left:23px}
.rank-number{display:inline-flex;align-items:center;justify-content:center;width:21px;height:21px;background:#edf2f6;border-radius:5px;color:#52697e;font-size:10px;margin-right:8px;font-variant-numeric:tabular-nums}
.candidate-name{overflow-wrap:anywhere}.candidate-number{white-space:nowrap}.bar-track{height:7px}.bar-fill{transition:width .35s ease}
.party-badge{height:30px;width:34px;object-fit:contain;vertical-align:middle;margin-right:8px;background:white;border-radius:4px}.party-symbol{font-size:19px;vertical-align:middle;margin-right:8px}.party-total{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:7px;padding:12px;font-size:12px;background:#f8fafc}
.party-ranking{display:grid;grid-template-columns:1fr 1fr;gap:20px 30px;padding:22px}.party-rank{min-width:0}.party-rank .row{font-size:12px;gap:7px;margin-bottom:10px}.party-rank .spacer{flex:1}.party-rank strong{overflow-wrap:anywhere}.party-rank .rank-number{flex-shrink:0}.party-rank small{font-size:11px}.party-rank .party-badge{height:24px;width:28px}
.party-editor{border:1px solid var(--line);border-radius:8px;padding:16px;margin:16px 0}.party-fields{display:grid;grid-template-columns:1.4fr 85px 1fr 1.6fr;gap:14px;margin:15px 0}.party-editor .row small{flex:1}.party-fields input[type=file]{font-size:11px}.party-fields input[type=color]{min-height:40px;padding:4px}
.brand-preview:empty{display:none}.brand-preview img{height:48px;width:60px}.account-summary{padding:15px 0;border-bottom:1px solid var(--line)}.account-summary strong{display:inline-block;margin-right:10px}.account-summary p{font-size:11px;margin-top:8px;color:#64748b;line-height:1.6}
.scope-picker{border:1px solid var(--line);border-radius:7px;padding:16px;margin:22px 0}.scope-picker legend{font-size:12px;font-weight:650}.scope-picker p{font-size:11px;margin-bottom:12px}.scope-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-height:280px;overflow:auto;padding:3px}.scope-options label{display:flex;align-items:center;flex-wrap:wrap;font-size:10px;padding:8px;background:#f4f7fa;border-radius:5px}.scope-options input{width:17px;height:17px;flex-shrink:0}.scope-options small{display:block;font-size:9px}
.map-area path.recent-change{stroke:#09283d;stroke-width:3;filter:drop-shadow(0 0 3px #e4b94d);animation:map-update 1.8s ease-in-out 3}.map-area path:focus-visible{stroke:#10293e;stroke-width:3;outline:none}.event:focus-visible,tr.clickable:focus-visible{outline:3px solid #8ec4e9;outline-offset:-3px}
@keyframes map-update{50%{stroke:#f6c655;stroke-width:5}}
.login details summary{cursor:pointer;font-weight:650}.login details p{margin-top:10px}.login-foot{font-size:10px!important}.projection .top-right #logout{display:none}.projection .leader-headline strong{font-size:30px}.projection .live-banner{font-size:15px}.projection .lower .event small{color:#61768a}.projection .rank-number{width:26px;height:26px}.projection #new-entry{display:none}
@media(min-width:1250px){.ranking{padding-top:10px}.candidate{padding:18px 0}.map-area svg{height:300px}.map-area{min-height:340px}}
@media(max-width:1100px){.nav{overflow-x:auto;white-space:nowrap;gap:17px}.nav .spacer{min-width:0}.party-fields{grid-template-columns:1fr 80px}.leader-headline{gap:16px;padding:20px}.leader-headline strong{font-size:20px}}
@media(max-width:700px){.live-banner{padding:9px 15px;font-size:11px}.leader-headline{grid-template-columns:1fr 1fr;padding:19px;gap:18px}.leader-headline p{grid-column:1/-1;border-left:0;border-top:1px solid #476074;padding:12px 0 0}.leader-headline strong{font-size:20px}.scope-options{grid-template-columns:1fr}.party-fields{grid-template-columns:1fr 80px}.party-fields label:last-child{grid-column:1/-1}.projection .leader-headline strong{font-size:22px}.volume-label{display:flex}.party-total{width:100%;overflow-wrap:anywhere}.login{max-width:500px}}
@media(prefers-reduced-motion:reduce){.map-area path.recent-change{animation:none}.bar-fill{transition:none}}
@media(max-width:700px){.party-ranking{grid-template-columns:1fr;padding:18px}.party-rank .row{font-size:11px}}

.filters{grid-template-columns:repeat(3,minmax(0,1fr))}.password-card{max-width:580px}.password-card form{display:grid;gap:18px}.password-eye{justify-self:start;padding:5px 9px;font-size:11px;margin-top:2px}.validation-summary{padding:12px;border:1px solid #bc3a50;background:#fff0f2;color:#8b2132;margin:0 0 16px;border-radius:6px;font-size:13px}[aria-invalid=true]{border:2px solid #bb3049!important;background:#fff7f8!important}.assignment-helpers{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;margin:10px 0 15px}.config-actions{grid-column:1/-1;display:flex;align-items:center;gap:7px}.config-actions button{padding:5px 9px;font-size:11px}.config-status{font-size:11px;color:#63758a}.admin-row[data-active=false],.party-editor[data-active=false]{background:#f1f3f5;border:1px dashed #aebdca;padding:12px;border-radius:6px}.admin-row{padding-bottom:15px;border-bottom:1px solid var(--line)}
.map-label{pointer-events:none}.map-label text{font-size:16px;font-weight:700;fill:#10293e;stroke:white;stroke-width:3px;paint-order:stroke;text-anchor:middle;dominant-baseline:middle}.map-label line{stroke:#61768a;stroke-width:1;vector-effect:non-scaling-stroke}.map-label-key{font-size:11px;line-height:1.7;margin:0 8px;color:#506276}.map-label-key summary{cursor:pointer}.map-label-key>div{display:grid;grid-template-columns:repeat(3,1fr);gap:4px 12px;max-height:160px;overflow:auto;padding:8px;background:white}
.project-title{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:13px}.project-title p{font-size:11px;color:#526d83;margin-top:4px}.project-title .eyebrow{color:#52697e}.project-stats{display:grid;grid-template-columns:1.1fr 1fr 1fr 1.4fr;gap:12px;margin-bottom:14px}.project-stats>div{padding:15px 18px;background:white;border:1px solid var(--line);border-radius:8px;min-width:0}.project-stats small{font-size:10px;font-weight:650;display:block}.project-stats strong{font-size:27px;display:block;margin:7px 0 3px;overflow-wrap:anywhere}.project-stats span{font-size:10px;color:var(--muted)}.project-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:16px;min-height:0}.project-grid .card-head{padding:13px 16px}.project-grid .card-head h2{font-size:16px}.project-grid .card-head label{display:flex;align-items:center;gap:5px;font-size:10px}.project-grid .card-head select{padding:5px;font-size:10px}.project-pages{display:flex;justify-content:space-between;align-items:center;font-size:11px;padding:6px 16px}.project-pages button{font-size:10px;padding:5px 9px}.project-footnote{margin-top:9px;font-size:10px;color:#63778b}.projection .shell{padding:16px 24px 10px}.projection .top{padding:12px 24px}.projection .top .brand strong{font-size:13px}.projection .live-banner{padding:7px 24px;font-size:12px;min-height:32px}.projection .project-title h1{font-size:25px}.projection .project-grid .ranking{padding:3px 17px 6px}.projection .project-grid .candidate{padding:10px 0}.projection .project-grid .candidate-name{font-size:13px}.projection .project-grid .candidate-number{font-size:18px}.projection .project-grid .candidate-number small{font-size:12px}.projection .project-grid .candidate-top{margin-bottom:7px}.projection .project-grid .party-badge{width:25px;height:22px}.projection .project-grid .rank-number{width:21px;height:21px}.projection .project-map .map-area{min-height:0;padding:10px 15px;height:360px}.projection .project-map .map-area svg{height:285px;flex:1;min-height:0}.projection .project-map .legend{padding:10px 16px;font-size:10px;gap:9px}.projection .project-map .map-label-key{position:relative}.projection .project-map .map-label-key[open]>div{position:absolute;left:0;right:0;bottom:24px;z-index:3;border:1px solid var(--line);box-shadow:0 3px 12px #0002}.projection .project-map .map-note{font-size:9px;margin:4px}.projection .project-grid{height:480px}.projection .project-standings{display:flex;flex-direction:column}.projection .project-standings .ranking{flex:1}.projection .project-grid .candidate-name{max-width:65%}
@media(min-width:1000px) and (max-height:820px){.projection .project-grid{height:420px}.projection .project-map .map-area{height:305px}.projection .project-grid .candidate{padding:6px 0}.projection .project-stats>div{padding:10px 15px}.projection .project-stats strong{font-size:24px}}
@media(max-width:700px){.filters{grid-template-columns:1fr 1fr}.assignment-helpers{grid-template-columns:1fr}.map-label-key>div{grid-template-columns:1fr 1fr}.project-stats{grid-template-columns:1fr 1fr}.project-grid{grid-template-columns:1fr}.projection .project-grid{height:auto}.projection .project-standings .candidate{padding:12px 0}.projection .shell{padding:16px 12px}.project-title{align-items:flex-start}.project-stats>div{padding:13px}.project-stats strong{font-size:23px}.project-title button{font-size:10px}.projection .project-map .map-area{height:270px}}
@media(max-width:420px){.filters{grid-template-columns:1fr}}
.mobile-filters{display:none}
@media(max-width:700px){.mobile-filters{display:block;margin-bottom:14px;width:100%;text-align:left}.filters{display:none}.filters.mobile-open{display:grid}.projection .mobile-filters{display:none}}

.followup-grid{display:grid;grid-template-columns:minmax(250px,1fr) minmax(0,2fr);gap:20px}.thread-choice{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%;text-align:left;margin-bottom:10px;padding:14px}.thread-choice.selected{border-color:#497898;background:#edf4f8}.thread-choice small,.thread-messages time{color:#657386;font-size:12px}.thread-messages article{padding:16px 0;border-bottom:1px solid #e0e7ee}.thread-messages time{display:block;margin-top:5px}.thread-messages p{white-space:pre-wrap;overflow-wrap:anywhere}.thread-messages{max-height:430px;overflow:auto;margin-bottom:20px}.button-link{display:inline-flex;border:1px solid #c8d3df;border-radius:8px;padding:10px 14px;text-decoration:none;color:#24445e;font-weight:600}.contact-drafts{margin-top:20px}#followup-status{margin-top:16px}@media(max-width:700px){.followup-grid{grid-template-columns:1fr}}

.event-toast{position:fixed;z-index:110;top:18px;right:18px;width:min(390px,calc(100vw - 36px));box-shadow:0 12px 40px #132a3e30;border:1px solid #c8d8e5;border-left:5px solid #4985ad;border-radius:12px;background:#f0f6fc}.event-toast-link{display:flex;flex-direction:column;gap:7px;padding:16px;width:100%;text-align:left;border:0;background:transparent;color:#18314a;box-shadow:none}.event-toast-link span,.notification-row span{font-size:14px;line-height:1.45}.event-toast-link small{font-size:12px;color:#506578}.notification-new{border-left-color:#13845c;background:#effaf4}.notification-update{border-left-color:#d39d22;background:#fff8e7}.notification-review,.notification-info{border-left-color:#4985ad;background:#f0f6fc}.notification-drawer{position:fixed;z-index:105;top:0;right:0;bottom:0;width:min(470px,100vw);background:#fff;box-shadow:-12px 0 45px #132a3e25;display:flex;flex-direction:column}.notification-history{overflow:auto;padding:16px}.notification-row{display:flex;flex-direction:column;gap:8px;text-align:left;width:100%;border-left-width:4px;margin-bottom:12px;padding:16px}.notification-row small{color:#566778;line-height:1.45}.notification-detail{padding:14px;background:#f3f6f9;margin-bottom:16px;overflow-wrap:anywhere}.analysis-panel{margin:16px 0}.analysis-panel>summary{padding:16px 20px;cursor:pointer;font-weight:650;color:#24445e}.analysis-context{font-size:12px;color:#65778a}.analysis-copy{font-size:18px;line-height:1.6;max-width:900px}.analysis-panel .actions label{display:flex;align-items:center;gap:10px}.analysis-panel select{width:auto}.projection .notification-drawer{display:none}

.analysis-metrics{display:flex;flex-wrap:wrap;gap:14px;margin:18px 0}.analysis-metrics>div{background:#f3f6fa;padding:12px 16px;border-radius:8px;min-width:150px}.analysis-metrics small,.analysis-metrics strong{display:block}.analysis-metrics small{color:#5e7285;font-size:12px;margin-bottom:8px}.analysis-metrics strong{font-size:20px}.geography-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.geography-facts section{background:#f3f6fa;padding:16px;border-radius:10px}.geography-facts p{display:flex;justify-content:space-between;gap:12px;font-size:14px}.geography-facts small{line-height:1.7;color:#52687a}@media(max-width:700px){.geography-facts{grid-template-columns:1fr}.analysis-metrics>div{flex:1;min-width:120px}}

.evidence-panel{margin:20px 0;padding:18px;background:#f4f7fa;border:1px solid #d9e2eb;border-radius:12px}.evidence-panel>p{font-size:13px;line-height:1.55}.evidence-panel input[type=file]{padding:10px;background:white;font-size:13px;max-width:100%;width:100%;min-width:0}.evidence-item{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-top:1px solid #d9e2eb;overflow-wrap:anywhere}.evidence-item input{width:18px;flex:none;margin-top:4px}.evidence-item small{display:block;color:#587084;font-size:12px;margin-top:6px}.evidence-item a,.revision-attachments a{color:#215f85;text-decoration:underline}.revision-attachments{display:flex;flex-direction:column;gap:8px;overflow-wrap:anywhere}.revision-attestation{white-space:pre-wrap;overflow-wrap:anywhere}.revision-diff{margin-top:14px}.revision-diff summary{cursor:pointer;font-weight:600}.field-error{display:block;color:#a1273d;font-size:12px;line-height:1.45;margin-top:5px}.evidence-panel h3{margin-top:0}#evidence-status{color:#335e7c;font-size:13px}

.theme-picker{display:flex;align-items:center;gap:8px;color:#c5d6e6;font-size:11px}.theme-picker select{width:auto;padding:6px 9px;font-size:11px;background:#1b3c54;color:white;border-color:#577085}.results-ticker{display:flex;align-items:center;gap:12px;background:#e8eff5;border-bottom:1px solid var(--line);padding:8px 32px;min-height:54px;overflow:hidden}.ticker-label{font-size:10px;font-weight:800;letter-spacing:.8px;flex:none}.ticker-label small{display:block;font-size:9px;font-weight:400;letter-spacing:0;margin-top:4px}.ticker-window{flex:1;overflow:hidden;min-width:0}.ticker-line{display:flex;align-items:center;gap:24px;width:max-content;max-width:none;animation:ticker-scroll 12s linear infinite;font-size:13px}.ticker-line.paused{animation-play-state:paused}.ticker-line small{font-size:10px}.ticker-result{display:inline-flex;gap:6px;align-items:center;margin-right:20px}.ticker-line b{font-variant-numeric:tabular-nums}.results-ticker button{font-size:10px;padding:6px 9px;flex:none}@keyframes ticker-scroll{from{transform:translateX(0)}to{transform:translateX(calc(-100% + 280px))}}@media(prefers-reduced-motion:reduce){.ticker-line{animation:none}.ticker-window{overflow-x:auto}}.projection .results-ticker{min-height:42px;padding:5px 24px}.projection .project-grid{height:440px}.setup-tabs{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap}.campaign-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:18px 0;border-bottom:1px solid var(--line)}.campaign-row strong{min-width:150px}.campaign-row small{width:100%;font-size:11px}.setup-empty{margin-bottom:18px}.setup-empty p{margin:10px 0}.help-topics{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}.help-topics a{color:#24658c;border-bottom:1px solid currentColor;padding:5px;text-decoration:none}.help-section{padding:20px 0;border-top:1px solid var(--line)}.help-section h3{font-size:18px}.help-section li{margin:10px 0;line-height:1.6;max-width:900px}.invitation-panel{margin-top:28px;padding-top:22px;border-top:1px solid var(--line)}.invitation-panel p{font-size:13px;line-height:1.6;margin:10px 0}.invitation-panel fieldset{display:flex;gap:20px;flex-wrap:wrap;border:1px solid var(--line);margin:16px 0}.invitation-panel fieldset label{display:flex;align-items:center;gap:8px}.invitation-panel input[type=checkbox]{width:18px}.invitation-draft{border:1px solid var(--line);padding:16px;margin:14px 0;border-radius:8px}.invitation-draft pre{font:inherit;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}.results-ticker .dot{border:1px solid #8799aa66;width:10px;height:10px}.projection .theme-picker{display:none}@media(max-width:700px){.results-ticker{padding:8px 12px;gap:8px}.ticker-label{font-size:9px}.ticker-line{font-size:12px}.theme-picker{font-size:10px}.theme-picker select{max-width:110px}.top-right{gap:6px}.projection .project-grid{height:auto}}
:root[data-theme=editorial]{background:#f3efe7;color:#302f2c;--navy:#333e42;--muted:#716d65;--line:#ded8cc}:root[data-theme=editorial] h1,:root[data-theme=editorial] .project-title h1{font-family:Georgia,Cambria,serif;font-weight:500;letter-spacing:-.5px}:root[data-theme=editorial] .card,:root[data-theme=editorial] .stat,:root[data-theme=editorial] .filters,:root[data-theme=editorial] .project-stats>div{background:#fffdf8;border-radius:3px;box-shadow:0 3px 12px #4c442706}:root[data-theme=editorial] .nav{background:#fffdf8}:root[data-theme=editorial] .results-ticker{background:#ece6d9}:root[data-theme=editorial] .map-area{background:linear-gradient(#f8f6ef,#eee9de)}:root[data-theme=editorial] .top{background:#313c40}:root[data-theme=editorial] .leader-headline{background:#e7e2d7}
:root[data-theme=night]{color-scheme:dark;background:#0d1722;color:#e4eef7;--navy:#b8d9f0;--muted:#aebed0;--line:#34465a}:root[data-theme=night] .top{background:#09111a}:root[data-theme=night] .card,:root[data-theme=night] .stat,:root[data-theme=night] .filters,:root[data-theme=night] .project-stats>div,:root[data-theme=night] .nav,:root[data-theme=night] .notification-drawer{background:#172636}:root[data-theme=night] button,:root[data-theme=night] input,:root[data-theme=night] select,:root[data-theme=night] textarea{background:#21354a;color:#e3eef8;border-color:#50637a}:root[data-theme=night] button:hover{background:#304c68}:root[data-theme=night] button.primary{background:#a4d0ed;color:#11293e}:root[data-theme=night] label,:root[data-theme=night] .nav button,:root[data-theme=night] .eyebrow,:root[data-theme=night] .map-note,:root[data-theme=night] .analysis-context{color:#b6c8da}:root[data-theme=night] .map-area{background:linear-gradient(#192c3b,#213745)}:root[data-theme=night] .leader-headline,:root[data-theme=night] .evidence-panel,:root[data-theme=night] .analysis-metrics>div,:root[data-theme=night] .geography-facts section,:root[data-theme=night] .results-ticker,:root[data-theme=night] .live-banner,:root[data-theme=night] .notification-detail{background:#20364b;color:#e4eef7}:root[data-theme=night] .notice{background:#24384a;color:#dfebf5;border-color:#50667a}:root[data-theme=night] .notice.warning{background:#403725;color:#f7e6be}:root[data-theme=night] .notice.error,:root[data-theme=night] .validation-summary{background:#442732;color:#ffe0e5}:root[data-theme=night] th{background:#203347;color:#bcd0e0}:root[data-theme=night] td,:root[data-theme=night] .candidate,:root[data-theme=night] .card-head{border-color:#34465a}:root[data-theme=night] .bar-track,:root[data-theme=night] .segmented{background:#344b60}:root[data-theme=night] .segmented button.active{background:#547087;color:#fff}:root[data-theme=night] .pill{background:#344a5e;color:#deebf6}:root[data-theme=night] .demo{background:#ebc969;color:#392b0d}:root[data-theme=night] .event-toast-link,:root[data-theme=night] .notification-row{color:#163149}:root[data-theme=night] .event-toast-link{background:transparent}:root[data-theme=night] .notification-new{background:#def5e7}:root[data-theme=night] .notification-update{background:#fff0c9}:root[data-theme=night] .notification-review,:root[data-theme=night] .notification-info{background:#deebf7}:root[data-theme=night] .map-label-key>div{background:#21354a}:root[data-theme=night] .help-topics a,:root[data-theme=night] .evidence-item a,:root[data-theme=night] .revision-attachments a{color:#a9dcff}:root[data-theme=night] .analysis-metrics small,:root[data-theme=night] .geography-facts small,:root[data-theme=night] .project-stats span{color:#b5c8d9}

.projection .project-map .map-area{height:320px}.projection .project-map .map-area svg{height:245px}.ticker-window.ticker-paused{overflow-x:auto}.ticker-window.ticker-paused .ticker-line{animation:none}:root[data-theme=night] .project-title p,:root[data-theme=night] .project-footnote{color:#b5c9da}
:root[data-theme=night] .notification-row:hover,:root[data-theme=night] .event-toast-link:hover{background:#deedf8;color:#163149}:root[data-theme=night] .field-error{color:#ffb4c2}:root[data-theme=night] .button-link{color:#b7defa;border-color:#6f8aa1}

.dashboard-tour{margin:0 0 18px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:12px 16px}.tour-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.tour-toolbar>strong{font-size:12px;flex:1;min-width:140px}.tour-toolbar button,.tour-toolbar select{font-size:11px;padding:7px 10px}.tour-toolbar label{display:flex;align-items:center;gap:6px;font-size:11px}.tour-toolbar select{width:auto}.tour-pickers{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:16px 0}.tour-pickers select{min-height:125px}.tour-favorites{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.tour-favorites>div{display:flex;gap:4px}.tour-favorites button{font-size:11px}#tour-options>p{font-size:12px;line-height:1.6;margin:14px 0}#tour-save{display:flex;align-items:end;gap:12px;margin-top:20px;flex-wrap:wrap}#tour-save label:first-child{flex:1;min-width:180px}.progression-context{font-size:10px;color:var(--muted);margin-top:9px}.candidate-movement{display:block;font-size:10px;font-weight:500;color:var(--muted);margin-top:5px}.movement-up{color:#08714c}.movement-down{color:#b02d44}.party-rank .candidate-movement{width:100%;text-align:right}.tour-compact{margin:10px 0 0;padding:8px 12px}.tour-compact .tour-toolbar>strong{max-width:420px}.projection .project-grid{height:400px}.projection .project-map .map-area{height:280px}.projection .project-map .map-area svg{height:215px}.projection .project-grid .candidate{padding:7px 0}.projection .candidate-movement{font-size:9px;line-height:1.1}.projection .candidate-number{max-width:56%}:root[data-theme=night] .dashboard-tour{background:#172636}:root[data-theme=night] .movement-up{color:#75d8b2}:root[data-theme=night] .movement-down{color:#ffa7b9}@media(max-width:700px){.tour-pickers{grid-template-columns:1fr}.tour-toolbar>strong{width:100%;flex-basis:100%}.tour-toolbar{gap:8px}.projection .project-grid{height:auto}.projection .candidate-number{max-width:none}.candidate-movement{max-width:170px}.tour-compact .tour-toolbar>strong{max-width:none}}@media(prefers-reduced-motion:reduce){.bar-fill,.candidate{transition:none!important}}

@media(min-width:701px){.projection .project-standings{display:flex;flex-direction:column}.projection .project-standings .ranking{display:grid;grid-template-rows:repeat(6,minmax(0,1fr));flex:1;min-height:0;padding:0 18px 6px}.projection .project-standings .candidate{padding:4px 0;min-height:0}.projection .project-standings .candidate-top{margin-bottom:4px}.projection .project-standings .candidate-number{font-size:17px}.projection .project-standings .candidate-name{font-size:12px}.projection .project-standings .candidate-movement{margin-top:2px;font-size:9px}.projection .project-standings .rank-number{font-size:11px}}

.label-editor{margin-bottom:20px}.label-editor .muted{margin:14px 0;line-height:1.6;font-size:12px}

.entry-quality{margin:18px 0;padding:16px;border:1px solid var(--line);border-radius:8px;background:#f3f8fc}.entry-quality h3{font-size:14px}.quality-context,.quality-note{font-size:11px;line-height:1.6;color:var(--muted);margin-top:7px}.quality-values{display:flex;gap:20px;align-items:center;margin-top:12px}.quality-turnout{font-size:28px;font-variant-numeric:tabular-nums}.quality-values span{font-size:12px;line-height:1.7}.entry-quality.quality-error{background:#fff0f0;border-color:#c84848}.quality-error .quality-turnout,.quality-error .quality-note{color:#a32232}:root[data-theme=night] .entry-quality{background:#20364b}:root[data-theme=night] .entry-quality.quality-error{background:#442732}:root[data-theme=night] .quality-error .quality-note,:root[data-theme=night] .quality-error .quality-turnout{color:#ffbac4}@media(max-width:500px){.quality-values{align-items:start;gap:12px;flex-wrap:wrap}}

.help-controls{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin-bottom:12px}.help-controls label:first-child{flex:1;min-width:180px}#help-count{font-size:12px;color:var(--muted);margin:12px 0}.help-empty{padding:24px 0}.help-section{scroll-margin-top:12px}@media print{body:has(#help-guide) .top,body:has(#help-guide) .nav,body:has(#help-guide) .results-ticker,body:has(#help-guide) .live-banner,body:has(#help-guide) .footer,body:has(#help-guide) #event-toast,body:has(#help-guide) #notification-drawer,body:has(#help-guide) #toast,body:has(#help-guide) .help-controls,body:has(#help-guide) #help-print{display:none!important}body:has(#help-guide),body:has(#help-guide) .card{background:white!important;color:black!important}body:has(#help-guide) .shell{padding:0;max-width:none}#help-guide .card{border:0}#help-guide .help-section{break-inside:avoid}#help-guide .help-topics a{color:black}#help-guide .notice{background:white;color:black;border:1px solid #777}}

/* National identity stays separate from candidate and party result colours. */
.top{border-bottom:4px solid transparent;border-image:linear-gradient(to bottom,#ce1126 0 28%,#fff 28% 36%,#0c1c8c 36% 64%,#fff 64% 72%,#3a7728 72% 100%) 1}.national-brand{gap:12px;min-width:0}.national-arms{object-fit:contain;flex:none;width:46px;height:48px}.national-flag{object-fit:contain;flex:none;width:54px;height:36px;border:1px solid #ffffff55;box-shadow:0 1px 4px #0002}.republic-name{display:block;font-size:9px;letter-spacing:1.8px;color:#d8e8f1;margin-bottom:4px}.national-brand-copy{min-width:0}.national-brand strong{font-size:15px;letter-spacing:.35px}.national-brand small{font-size:9px;max-width:420px;overflow-wrap:anywhere}.dashboard-tour{border-top:3px solid transparent;border-image:linear-gradient(to right,#ce1126 0 28%,#fff 28% 36%,#0c1c8c 36% 64%,#fff 64% 72%,#3a7728 72% 100%) 1}.projection .top{padding-top:7px;padding-bottom:7px}.projection .national-arms{height:44px;width:42px}.projection .national-brand strong{font-size:14px}.projection .republic-name{font-size:8px;margin-bottom:2px}.projection .national-brand small{font-size:8px}.projection .national-flag{width:48px;height:32px}@media(max-width:900px){.top{gap:12px}.national-brand{gap:9px}.national-brand strong{font-size:13px}.national-brand small{max-width:240px}.national-flag{width:42px;height:28px}.national-arms{width:38px;height:42px}}@media(max-width:600px){.top{flex-wrap:wrap;padding:12px 16px;gap:12px}.national-brand{width:100%;justify-content:flex-start}.national-brand-copy{flex:1}.national-brand strong{font-size:13px}.national-brand small{max-width:none}.national-flag{width:45px;height:30px}.top-right{width:100%;justify-content:flex-end}.republic-name{font-size:8px;letter-spacing:1.3px}.projection .top-right{width:auto}.projection .top{gap:8px}.projection .national-brand{width:auto;flex:1}.projection .national-flag{display:none}}

.nav{overflow-x:auto;max-width:100%;scrollbar-width:thin}.nav>button,.nav>.volume-label{flex-shrink:0}


.top{position:relative;border-image:none;border-bottom:5px solid transparent}.top:after{content:"";position:absolute;left:0;right:0;bottom:-5px;height:5px;background:linear-gradient(to bottom,#ce1126 0 25%,#fff 25% 37.5%,#0c1c8c 37.5% 62.5%,#fff 62.5% 75%,#3a7728 75% 100%)}.dashboard-tour{position:relative;border-image:none;border-top:4px solid transparent}.dashboard-tour:before{content:"";position:absolute;top:-4px;left:0;right:0;height:4px;background:linear-gradient(to bottom,#ce1126 0 25%,#fff 25% 37.5%,#0c1c8c 37.5% 62.5%,#fff 62.5% 75%,#3a7728 75% 100%)}.candidate-portrait{width:28px;height:32px;object-fit:cover;border-radius:4px;vertical-align:middle;margin-right:6px;flex:none}.portrait-editor{grid-column:1/-1;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.portrait-editor label{flex:1;min-width:170px}.portrait-preview .candidate-portrait{width:48px;height:56px}.portrait-editor small{font-size:10px}.projection .candidate-portrait{width:22px;height:26px}.candidate-name{overflow-wrap:anywhere;min-width:0}.projection .candidate-name{line-height:1.15}.projection .candidate-number{flex-shrink:0}

.projection .project-stats>div:last-child strong{font-size:18px;line-height:1.2;overflow-wrap:anywhere}.projection .project-stats>div{min-width:0}

/* 0.12: visible locality, calm movement and wrapping primary navigation. */
.nav{flex-wrap:wrap;overflow:visible;gap:4px 18px;padding-top:6px;padding-bottom:6px}.nav button{padding:10px 0;white-space:normal}.nav .spacer{display:none}.nav .volume-label{max-width:150px}.ticker-locality{flex:0 1 230px;min-width:95px;max-width:25%;font-size:13px;font-weight:750;line-height:1.35;overflow-wrap:anywhere;border-left:3px solid #6589a5;padding-left:10px}.ticker-line{animation-duration:30s;font-size:14px}.ticker-line small{color:#465d72}.ticker-label small{color:#465d72}.analysis-panel{border:1px solid #adc4d5;margin:0 0 20px}.analysis-panel>summary{background:#eaf2f8;color:#15344c;font-size:15px;padding:16px 20px;font-weight:750}.analysis-panel .analysis-context{color:#40586c}.analysis-panel .card-body{line-height:1.65}.candidate-number{color:#102f49}.bar-track{height:7px;background:#e0e8ef}.candidate-name small{color:#4b6175}.map-note{color:#52697c}:root[data-theme=night] .ticker-locality{border-color:#a6cde8}:root[data-theme=night] .ticker-line small,:root[data-theme=night] .ticker-label small,:root[data-theme=night] .candidate-name small,:root[data-theme=night] .map-note{color:#c0d2e1}:root[data-theme=night] .candidate-number{color:#eef6fc}:root[data-theme=night] .analysis-panel>summary{background:#203a50;color:#f0f7fc}:root[data-theme=night] .analysis-panel .analysis-context{color:#bdd4e5}.projection .bar-track{height:5px}.projection .ticker-locality{font-size:11px;flex-basis:200px}.projection .nav{display:none}@media(max-width:700px){.nav{gap:3px 14px;padding:8px 16px}.nav button{font-size:11px;padding:8px 0}.nav .volume-label{max-width:120px}.results-ticker{flex-wrap:wrap;gap:8px}.ticker-locality{order:-1;flex-basis:100%;max-width:none;width:100%;min-width:0;font-size:13px}.ticker-label{max-width:100px}.ticker-window{min-width:70px}.analysis-panel>summary{font-size:14px}.projection .ticker-locality{flex-basis:100%}}@media(prefers-reduced-motion:reduce){.ticker-line{animation:none}}

.projection .project-stats span{line-height:1.35;margin-top:5px}.projection .project-footnote{margin-top:8px}


@media(min-width:701px){.projection .project-grid{height:380px}.projection .project-map .map-area{height:260px}.projection .project-map .map-area svg{height:200px}}


@media(max-width:700px){.ticker-window.ticker-paused{order:3;flex:1 0 100%;overflow:visible}.ticker-window.ticker-paused .ticker-line{width:100%;display:flex;flex-wrap:wrap;gap:8px;white-space:normal}.ticker-window.ticker-paused .ticker-result{display:flex;flex-wrap:wrap;margin:6px 0;max-width:100%;gap:4px}.ticker-window.ticker-paused .ticker-line>span{width:100%}.ticker-window.ticker-paused .ticker-line small{white-space:normal}}

/* Geographic names remain secondary to the result colours. */
.map-label text{font-weight:600;fill:#102b40;stroke:#ffffffed;stroke-width:1.4px;stroke-linejoin:round;paint-order:stroke fill;letter-spacing:.1px}.map-label line{stroke:#516b80;stroke-width:.7;opacity:.75}.map-label-key{color:#3f566b}.map-label-key summary{padding:3px 0}:root[data-theme=night] .map-label text{fill:#102b40;stroke:#ffffffed}:root[data-theme=night] .map-label line{stroke:#b5cadd}:root[data-theme=night] .map-label-key{color:#c6d8e5}@media(max-width:700px){.map-label-key>div{grid-template-columns:1fr 1fr;max-height:220px}.map-label-key{font-size:12px}}

/* Surface-specific contrast repairs preserve layout and election data colours. */
.stat .stat-denominator{font-size:16px;color:var(--muted)}
:root[data-theme=editorial] .leader-headline{color:#302f2c}
:root[data-theme=editorial] .leader-headline .eyebrow,:root[data-theme=editorial] .leader-headline p{color:#55554f}
:root[data-theme=editorial] .leader-headline p{border-color:#8c877b}
:root:not([data-theme=editorial]):not([data-theme=night]) :is(.entry-quality,.evidence-panel){--muted:#5f6f84}
:root[data-theme=night] :is(input,select,textarea)[aria-invalid=true]{background:#442732!important;color:#ffe0e5;border-color:#ffb4c2!important}
:root[data-theme=night] #result-form :is(input,textarea)::placeholder{color:#b6c8da;opacity:1}

/* Account management stays in its existing editor, with a bounded directory. */
.account-directory{min-width:0;align-self:start}.account-directory-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.account-directory-filters label:first-child{grid-column:1/-1}.account-directory-filters :is(input,select){width:100%;min-width:0}.account-directory #account-directory-count{font-size:13px;color:var(--muted);margin:14px 0 0}.account-summary-heading,.account-summary-actions,.account-directory-pages{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.account-summary-heading strong{overflow-wrap:anywhere}.account-summary code{display:block;font-size:13px;margin:6px 0;overflow-wrap:anywhere}.account-summary p{font-size:13px;margin:7px 0;overflow-wrap:anywhere}.account-summary-actions small{color:var(--muted)}.account-summary-actions button{min-height:36px;padding:6px 10px}.account-directory-pages{margin-top:16px}.account-directory-pages span{font-size:12px}.account-directory-pages button{min-height:36px;padding:6px 10px}.account-directory :is(button,input,select):focus-visible{outline:3px solid #4283a5;outline-offset:2px}@media(max-width:600px){.account-directory-filters{grid-template-columns:1fr}.account-directory-filters label:first-child{grid-column:auto}.account-directory-pages{justify-content:flex-start}.account-summary-actions button{min-height:44px}}

:root[data-theme=night] .account-directory{--muted:#b5c8d9}:root[data-theme=night] .account-directory input::placeholder{color:#b5c8d9;opacity:1}
