[hidden]{display:none!important}
:root{--primary:#6750a4;--primary-dark:#4f378b;--primary-container:#eaddff;--surface:#fffbfe;--surface-2:#f3edf7;--outline:#79747e;--text:#1d1b20;--muted:#49454f;--error:#b3261e;--radius:24px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--surface);color:var(--text);font-family:Inter,Roboto,"Segoe UI",Arial,sans-serif}body{padding-bottom:88px}.app-bar{position:sticky;top:0;z-index:50;display:flex;justify-content:center;align-items:center;height:64px;background:rgba(255,251,254,.96);backdrop-filter:blur(12px);border-bottom:1px solid #eee8f1}.brand{font-size:1.28rem;font-weight:900;letter-spacing:-.03em;color:var(--primary);text-decoration:none}.app-shell{width:min(100%,780px);margin:auto;padding:16px}.search-panel{position:relative;z-index:10}.search-row{display:flex;align-items:center;gap:10px;border:1px solid #cac4d0;border-radius:28px;padding:0 8px 0 18px;background:white;min-height:56px}.search-row>i{color:var(--muted)}.search-row input{flex:1;border:0;outline:0;font-size:1rem;background:transparent;min-width:0}.search-row button{border:0;background:var(--primary-container);color:var(--primary-dark);border-radius:22px;padding:10px 14px;font-weight:800;display:flex;gap:6px}.filter-panel{display:none;margin-top:10px;padding:16px;background:var(--surface-2);border-radius:20px}.filter-panel.open{display:block}.filter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.filter-grid label{font-size:.72rem;font-weight:800;color:var(--muted)}select{width:100%;margin-top:5px;height:46px;border:1px solid #cac4d0;border-radius:12px;background:white;padding:0 10px;color:var(--text)}.filter-actions{display:flex;gap:10px;margin-top:14px;justify-content:flex-end}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:0 18px;border:0;border-radius:14px;text-decoration:none;font-weight:850;cursor:pointer}.btn.primary{background:var(--primary);color:white}.btn.secondary{border:1px solid var(--outline);color:var(--error);background:transparent}.btn.wide{width:100%;margin-top:16px;min-height:54px;border-radius:28px}.results-list,.performance-list{display:grid;gap:12px;margin-top:16px}.candidate-card{display:grid;grid-template-columns:52px 1fr auto;gap:13px;align-items:center;padding:14px;background:white;border:1px solid #e8e0eb;border-radius:20px;text-decoration:none;color:inherit;box-shadow:0 2px 8px rgba(45,35,55,.05);transition:.18s}.candidate-card:hover{transform:translateY(-1px);box-shadow:0 7px 20px rgba(45,35,55,.09)}.avatar{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--primary-container);color:var(--primary-dark);font-weight:900;font-size:1.2rem}.candidate-main{min-width:0}.candidate-name{font-weight:900;font-size:1rem}.party{font-size:.8rem;color:var(--primary);font-weight:800;margin-top:2px}.breadcrumbs{font-size:.72rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:5px}.candidate-score{text-align:right;display:flex;flex-direction:column}.candidate-score strong{font-size:1rem}.candidate-score small{font-size:.68rem;color:var(--muted)}.rank{display:inline-block;color:var(--primary-dark);background:var(--primary-container);font-size:.72rem;font-weight:900;border-radius:999px;padding:3px 8px;width:max-content;margin-left:auto}.empty-state{text-align:center;padding:60px 24px;color:var(--muted)}.empty-state i{font-size:3rem;color:var(--primary)}.empty-state h2{color:var(--text);font-size:1.15rem}.load-more{text-align:center;padding:20px;color:var(--muted)}.spinner{display:inline-block;width:18px;height:18px;border:2px solid #ddd;border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;margin-right:8px}@keyframes spin{to{transform:rotate(360deg)}}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:60;display:flex;justify-content:center;background:rgba(255,251,254,.97);border-top:1px solid #e8e0eb;padding:7px max(8px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom))}.bottom-nav a{width:min(33.33%,180px);display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--muted);font-size:.7rem;text-decoration:none;font-weight:700;padding:5px}.bottom-nav i{font-size:1.25rem;padding:4px 20px;border-radius:20px}.bottom-nav a.active{color:var(--primary-dark)}.bottom-nav a.active i{background:var(--primary-container)}.back-link{display:inline-flex;gap:7px;align-items:center;color:var(--text);text-decoration:none;font-weight:800;margin-bottom:14px}.hero-card{position:relative;overflow:hidden;text-align:center;background:white;border-radius:30px;padding:78px 20px 24px;border:1px solid #e8e0eb}.hero-gradient{position:absolute;inset:0 0 auto;height:150px;background:linear-gradient(145deg,var(--primary),#9a82db)}.profile-wrap{position:relative}.profile-photo{width:150px;height:150px;border-radius:50%;object-fit:cover;border:6px solid white;background:var(--primary-container);box-shadow:0 8px 26px rgba(30,20,40,.2)}.profile-photo.fallback{display:grid;place-items:center;margin:auto;font-size:2.5rem;font-weight:900;color:var(--primary-dark)}.hero-card h1{font-size:1.7rem;margin:14px 0 4px}.hero-card p{margin:0;color:var(--muted)}.party-logo{width:52px;height:52px;object-fit:contain;margin-top:10px}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:14px}.stat-card{background:var(--surface-2);border-radius:20px;padding:16px;display:flex;flex-direction:column;gap:4px}.stat-card i{color:#9b6d00;font-size:1.25rem}.stat-card span,.stat-card small{color:var(--muted);font-size:.74rem}.stat-card strong{font-size:1.3rem}.info-card{background:white;border:1px solid #e8e0eb;border-radius:24px;padding:18px;margin-top:14px}.info-card h2{font-size:1rem;margin:0 0 12px}.info-row{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid #eee8f1;font-size:.86rem}.performance-head{background:var(--primary-container);border-radius:22px;padding:18px}.performance-head h1{font-size:1.3rem;margin:0}.performance-head p{margin:5px 0 0;color:var(--muted)}.level-tabs{display:flex;overflow:auto;gap:8px;padding:12px 1px;scrollbar-width:none}.level-tabs a{white-space:nowrap;text-decoration:none;color:var(--muted);font-weight:800;border:1px solid #cac4d0;padding:9px 14px;border-radius:18px}.level-tabs a.active{background:var(--primary);color:white;border-color:var(--primary)}.performance-card{display:flex;justify-content:space-between;align-items:center;padding:17px;background:white;border:1px solid #e8e0eb;border-radius:20px}.performance-card h2{font-size:1rem;margin:3px 0}.performance-card small{color:var(--muted)}.performance-score{text-align:right;display:flex;flex-direction:column}.performance-score span{font-size:.8rem;color:var(--primary);font-weight:900}.centre-card{background:white;border:1px solid #e8e0eb;border-radius:20px;overflow:hidden}.centre-card summary{display:flex;justify-content:space-between;padding:16px;cursor:pointer}.centre-card summary span:first-child{display:flex;gap:8px;align-items:center}.station-list{padding:0 10px 10px}.station-card{display:flex;justify-content:space-between;align-items:center;background:var(--surface-2);padding:12px;border-radius:14px;margin-top:8px}.station-card>div{display:flex;flex-direction:column}.station-card small{color:var(--muted);font-size:.7rem}.station-card>div:last-child{text-align:right}@media(max-width:560px){.app-shell{padding:12px}.filter-grid{grid-template-columns:1fr}.candidate-card{grid-template-columns:48px 1fr auto;padding:12px}.avatar{width:48px;height:48px}.candidate-name{font-size:.92rem}.stat-grid{grid-template-columns:1fr 1fr}.search-row button span{display:none}}@media(min-width:900px){body{padding-bottom:20px}.bottom-nav{max-width:500px;left:50%;transform:translateX(-50%);border:1px solid #e8e0eb;border-radius:26px 26px 0 0}}

/* Immediate feedback while a new result request is being submitted. */
body.is-loading-results #results-list { opacity: .55; pointer-events: none; }
.spinner.small { width: 15px; height: 15px; border-width: 2px; display: inline-block; vertical-align: -2px; margin-right: 6px; }

/* Detailed candidate performance */

/* Advanced geographical filtering */
.filter-count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--primary);color:#fff;font-size:.68rem}
.active-filter-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:10px 12px;border:1px solid #ded6e2;border-radius:16px;background:#fff}
.active-filter-bar>div{display:flex;align-items:center;gap:8px;min-width:0}.active-filter-bar>div>i{color:var(--primary)}
#active-filter-chips{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none}.active-filter-chip{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;border:0;border-radius:999px;padding:7px 9px;background:var(--primary-container);color:var(--primary-dark);font-weight:800;cursor:pointer}.active-filter-chip small{font-size:.62rem;opacity:.72;text-transform:uppercase}.active-filter-bar>button{border:0;background:transparent;color:var(--error);font-weight:850;white-space:nowrap;cursor:pointer}
.advanced-filter-panel{padding:0;overflow:hidden;border:1px solid #e4dce7;background:#fff;box-shadow:0 18px 50px rgba(45,35,55,.12)}
.filter-heading{display:flex;justify-content:space-between;gap:16px;padding:20px;background:linear-gradient(135deg,var(--primary-container),#f4eff8)}.filter-heading h2{margin:3px 0 4px;font-size:1.2rem}.filter-heading p{margin:0;color:var(--muted);font-size:.82rem}.eyebrow{font-size:.64rem;font-weight:900;letter-spacing:.12em;color:var(--primary-dark)}.filter-close{align-self:flex-start;border:0;background:#fff;width:38px;height:38px;border-radius:50%;cursor:pointer;color:var(--muted)}
.filter-progress{display:flex;align-items:center;padding:14px 20px;border-bottom:1px solid #eee8f1;background:#fff}.filter-progress span{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:.72rem;font-weight:800;white-space:nowrap}.filter-progress span b{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#e9e2ed;color:var(--muted)}.filter-progress span.active{color:var(--primary-dark)}.filter-progress span.active b{background:var(--primary);color:#fff}.filter-progress>i{height:2px;flex:1;min-width:18px;margin:0 10px;background:#ddd5e0}
.filter-section{padding:18px 20px;border-bottom:1px solid #eee8f1}.polling-section{background:#fcf9fd}.filter-section-title{display:flex;align-items:center;gap:10px;margin-bottom:14px}.filter-section-title>i{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--primary-container);color:var(--primary-dark);font-size:1.05rem}.filter-section-title div{display:flex;flex-direction:column}.filter-section-title strong{font-size:.9rem}.filter-section-title small{font-size:.7rem;color:var(--muted);margin-top:2px}
.geography-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.geography-grid label>span{display:block;font-size:.76rem;font-weight:900;color:var(--text)}.geography-grid select{height:50px;border-radius:14px}.geography-grid select:disabled{background:#f0ecf1;color:#8a838d;border-style:dashed;cursor:not-allowed}.field-help{display:block;margin-top:5px;font-size:.64rem;line-height:1.3;color:var(--muted);font-weight:500}
.filter-selection-summary{display:flex;align-items:flex-start;gap:9px;margin:16px 20px 0;padding:12px 14px;border-radius:14px;background:#f4f0f6;color:var(--muted);font-size:.76rem;line-height:1.4}.filter-selection-summary i{color:var(--primary);margin-top:1px}.advanced-filter-panel .filter-actions{padding:16px 20px 20px;margin:0}.advanced-filter-panel .filter-actions .primary{flex:1;max-width:300px}
@media(max-width:560px){.active-filter-bar{align-items:flex-start}.active-filter-bar>button{font-size:.72rem}.filter-heading{padding:16px}.filter-progress{padding:12px 16px}.filter-progress span{font-size:.65rem}.filter-section{padding:16px}.geography-grid{grid-template-columns:1fr}.advanced-filter-panel .filter-actions{padding:14px 16px 18px}.advanced-filter-panel .filter-actions .btn{padding:0 12px;font-size:.78rem}}
.sort-row{display:flex;justify-content:flex-end;align-items:center;gap:.6rem;margin-bottom:.75rem}.sort-row label{font-size:.8rem;font-weight:700;color:var(--muted,#60646c)}.sort-row select{border:1px solid #c8cbd1;border-radius:12px;padding:.55rem .8rem;background:#fff}.summary-loading{min-height:120px}.stat-card button{margin-top:.5rem}

/* Progressive pagination: works with modern touch browsers and degrades to a normal link. */
.load-more{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px;text-align:center;color:var(--muted)}
.load-more[hidden]{display:none!important}.load-more-status[hidden]{display:none!important}.load-more-button{min-width:190px}
.load-more-button[aria-disabled="true"]{opacity:.65;pointer-events:none}.pagination-sentinel{height:1px}

/* Detailed performance remains unavailable until the candidate page and summary request settle. */
.btn.is-disabled,.btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed;pointer-events:none;filter:grayscale(.15)}

/* Election-wide totals load only when the list response does not include them. */
.vote-total-value{min-width:3.5rem;min-height:1.35rem;display:inline-flex;align-items:center;justify-content:flex-end;gap:.3rem}
.vote-total-value.is-loading{color:var(--muted)}
.vote-total-value .spinner.small{width:14px;height:14px;margin:0}
.vote-total-retry{cursor:pointer;color:var(--primary);border:0;background:transparent}
.load-more-button{min-width:170px}
@media(max-width:380px){.candidate-card{grid-template-columns:42px minmax(0,1fr) auto}.avatar{width:42px;height:42px}.candidate-score strong{font-size:.92rem}.candidate-score small{max-width:92px;white-space:normal;line-height:1.15}}

/* Professional interface refresh */
:root{--primary:#123f73;--primary-strong:#082f5a;--primary-soft:#e8f1fb;--accent:#c4932f;--surface:#f4f7fb;--surface-card:#fff;--text:#162334;--muted:#617083;--line:#dce4ed;--success:#176b45;--shadow:0 14px 40px rgba(20,43,69,.09);--shadow-soft:0 7px 20px rgba(20,43,69,.07)}
html,body{background:var(--surface);color:var(--text)}body{padding-bottom:98px}.app-shell{width:min(100%,1040px);padding:28px 20px 40px}.app-bar{height:76px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);box-shadow:0 2px 12px rgba(20,43,69,.04)}.app-bar-inner{width:min(100%,1040px);margin:auto;padding:0 20px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:12px;color:var(--text)}.brand-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,var(--primary),var(--primary-strong));color:#fff;display:grid;place-items:center;box-shadow:0 8px 18px rgba(18,63,115,.22)}.brand>span:last-child{display:flex;flex-direction:column}.brand strong{font-size:1.08rem;letter-spacing:-.02em}.brand small{font-size:.68rem;color:var(--muted);margin-top:2px}.official-badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:8px 11px;background:#eef8f3;color:var(--success);font-size:.74rem;font-weight:800}.page-intro{position:relative;overflow:hidden;display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;padding:26px;border-radius:26px;background:linear-gradient(135deg,var(--primary-strong),var(--primary));color:#fff;box-shadow:0 18px 40px rgba(8,47,90,.18)}.page-intro:after{content:"";position:absolute;right:-40px;top:-70px;width:210px;height:210px;border-radius:50%;border:35px solid rgba(255,255,255,.07)}.intro-icon{width:58px;height:58px;border-radius:18px;background:rgba(255,255,255,.13);display:grid;place-items:center;font-size:1.45rem}.intro-copy,.intro-stat{position:relative;z-index:1}.section-kicker{display:block;font-size:.66rem;font-weight:900;letter-spacing:.14em;color:var(--primary);margin-bottom:5px}.page-intro .section-kicker{color:#cfe3f8}.intro-copy h1{margin:0;font-size:clamp(1.45rem,3vw,2rem);letter-spacing:-.035em}.intro-copy p{margin:7px 0 0;color:#dfeafa;max-width:620px;font-size:.9rem}.intro-stat{display:flex;flex-direction:column;text-align:right}.intro-stat strong{font-size:1.7rem}.intro-stat span{font-size:.72rem;color:#dfeafa}.controls-card{margin-top:18px;padding:15px;border:1px solid var(--line);border-radius:22px;background:#fff;box-shadow:var(--shadow-soft)}.control-row{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;gap:12px;align-items:end}.search-control{height:52px;display:flex;align-items:center;gap:10px;border:1px solid #c9d4e1;border-radius:15px;padding:0 15px;background:#fbfcfe}.search-control:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px rgba(18,63,115,.1)}.search-control input{border:0;outline:0;background:transparent;flex:1;min-width:0;font-size:.94rem;color:var(--text)}.search-control i{color:var(--primary)}.sort-control{display:flex;flex-direction:column;gap:4px}.sort-control span{font-size:.66rem;font-weight:800;color:var(--muted);padding-left:3px}.sort-control select{margin:0;min-width:155px;height:52px;border-radius:15px;border-color:#c9d4e1}.filter-trigger{height:52px;border:0;border-radius:15px;padding:0 16px;background:var(--primary-soft);color:var(--primary);font-weight:850;display:flex;align-items:center;gap:8px;cursor:pointer}.results-heading,.section-heading{display:flex;align-items:end;justify-content:space-between;gap:14px;margin:28px 2px 13px}.results-heading h2,.section-heading h2{margin:0;font-size:1.25rem;letter-spacing:-.02em}.result-count,.section-note{font-size:.72rem;color:var(--muted);font-weight:750}.professional-list{gap:12px}.professional-card{grid-template-columns:62px minmax(0,1fr) auto;gap:16px;align-items:center;padding:17px 18px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 3px 12px rgba(20,43,69,.035);transition:transform .18s,box-shadow .18s,border-color .18s;text-decoration:none;color:inherit}.professional-card:hover{transform:translateY(-2px);border-color:#b7c8da;box-shadow:var(--shadow)}.candidate-avatar{width:62px;height:62px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(145deg,var(--primary-soft),#d4e4f5);color:var(--primary-strong);font-size:1.15rem;font-weight:900;border:1px solid #c8d9ea}.candidate-topline{display:flex;align-items:center;gap:7px;margin-bottom:5px}.contest-pill,.rank-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:.61rem;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.contest-pill{background:var(--primary-soft);color:var(--primary)}.contest-pill.light{background:rgba(255,255,255,.14);color:#fff}.rank-pill{background:#fff7df;color:#785610}.candidate-main h3{font-size:1.05rem;margin:0 0 7px;letter-spacing:-.015em}.party-line,.location-line{display:flex;align-items:center;gap:7px;margin:0;color:var(--muted);font-size:.77rem}.party-line{margin-bottom:6px}.party-mark{display:inline-grid;place-items:center;min-width:36px;height:22px;padding:0 7px;border-radius:7px;background:#edf1f5;color:#35465a;font-size:.62rem;font-weight:900}.location-line i{color:var(--primary)}.card-action{display:flex;align-items:center;gap:8px;color:var(--primary);font-weight:850;font-size:.74rem}.card-action i{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--primary-soft)}.professional-empty{padding:50px 24px;border:1px dashed #bdcad8;border-radius:24px;background:#fff}.empty-icon{width:58px;height:58px;margin:0 auto 14px;border-radius:18px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-size:1.4rem}.bottom-nav{height:74px;background:rgba(255,255,255,.97);border-top:1px solid var(--line);box-shadow:0 -8px 25px rgba(20,43,69,.07)}.bottom-nav a{color:#667789}.bottom-nav a.active{color:var(--primary)}.bottom-nav a.active:before{content:"";position:absolute;top:0;width:38px;height:3px;border-radius:0 0 4px 4px;background:var(--primary)}
/* Candidate details */
.page-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.toolbar-title{font-size:.75rem;font-weight:850;color:var(--muted)}.professional-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:25px;min-height:260px;padding:34px;border-radius:28px;background:linear-gradient(135deg,#082f5a,#164f88);color:#fff;box-shadow:0 20px 45px rgba(8,47,90,.2)}.hero-pattern{position:absolute;right:-60px;bottom:-100px;width:330px;height:330px;border:50px solid rgba(255,255,255,.055);border-radius:50%}.profile-media{position:relative;z-index:1}.professional-hero .profile-photo{width:150px;height:150px;border-radius:28px;border:5px solid rgba(255,255,255,.88);object-fit:cover;box-shadow:0 18px 35px rgba(0,0,0,.24)}.professional-hero .profile-photo.fallback{display:grid;place-items:center;background:#d7e8f8;color:var(--primary-strong);font-size:2.4rem;font-weight:900}.party-logo-wrap{position:absolute;right:-10px;bottom:-10px;width:54px;height:54px;border-radius:16px;background:#fff;padding:6px;box-shadow:0 8px 20px rgba(0,0,0,.2)}.party-logo-wrap img{width:100%;height:100%;object-fit:contain}.hero-content{position:relative;z-index:1}.hero-content h1{margin:12px 0 7px;font-size:clamp(1.7rem,4vw,2.6rem);line-height:1.05;letter-spacing:-.04em}.hero-content>p{margin:0;color:#dbe9f7}.hero-meta{display:flex;flex-wrap:wrap;gap:15px;margin-top:22px;color:#dbe9f7;font-size:.72rem}.hero-meta span{display:flex;gap:6px;align-items:center}.hero-meta i{color:#8fd7b5}.content-section{margin-top:28px}.professional-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.professional-stats .stat-card{display:flex;gap:13px;align-items:center;min-height:112px;border:1px solid var(--line);border-radius:19px;background:#fff;padding:16px;box-shadow:var(--shadow-soft)}.stat-icon{width:43px;height:43px;border-radius:13px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;flex:0 0 auto}.stat-card>div:last-child{display:flex;flex-direction:column}.stat-card span{text-transform:capitalize;color:var(--muted);font-size:.72rem}.stat-card strong{font-size:1.22rem;margin:3px 0}.stat-card small{font-size:.68rem;color:var(--muted)}.detail-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,.75fr);gap:16px;margin-top:18px}.professional-info-card,.action-card{border:1px solid var(--line);border-radius:22px;background:#fff;padding:21px;box-shadow:var(--shadow-soft)}.card-heading{display:flex;align-items:center;gap:12px;margin-bottom:10px}.card-heading h2{margin:0;font-size:1.08rem}.heading-icon,.action-icon{width:45px;height:45px;border-radius:14px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-size:1.15rem}.professional-info-card .info-row{padding:14px 0}.profile-notice{display:flex;gap:11px;margin:15px 0;padding:13px;border-radius:14px;background:#f4f7fa;color:var(--muted)}.profile-notice i{color:var(--primary)}.profile-notice strong{display:block;color:var(--text);font-size:.8rem}.profile-notice p{margin:3px 0 0;font-size:.72rem}.action-card{background:linear-gradient(160deg,#fff,#f0f5fa)}.action-card h2{font-size:1.18rem;margin:8px 0}.action-card p{font-size:.78rem;line-height:1.55;color:var(--muted)}.action-card>small{display:flex;align-items:center;gap:5px;margin-top:13px;color:var(--muted);font-size:.65rem}
/* Detailed performance */
@media(max-width:720px){.app-shell{padding:18px 13px 34px}.official-badge{display:none}.page-intro{grid-template-columns:auto 1fr;padding:20px}.intro-stat{grid-column:2;text-align:left;flex-direction:row;gap:5px;align-items:baseline}.intro-stat strong{font-size:1rem}.control-row{grid-template-columns:1fr 1fr}.search-control{grid-column:1/-1}.filter-trigger{justify-content:center}.professional-card{grid-template-columns:52px minmax(0,1fr) auto;padding:14px}.candidate-avatar{width:52px;height:52px;border-radius:15px}.card-action span{display:none}.professional-hero{grid-template-columns:1fr;text-align:center;padding:27px 20px}.profile-media{margin:auto}.professional-hero .profile-photo{width:130px;height:130px}.hero-meta{justify-content:center}.professional-stats{grid-template-columns:1fr 1fr}.detail-grid{grid-template-columns:1fr}.bottom-nav a span{font-size:.62rem}}
@media(max-width:460px){.app-bar{height:68px}.brand small{display:none}.brand-mark{width:38px;height:38px}.page-intro{grid-template-columns:1fr;text-align:left}.intro-icon{width:48px;height:48px}.intro-stat{grid-column:auto}.control-row{grid-template-columns:1fr}.search-control{grid-column:auto}.sort-control select{width:100%}.professional-card{grid-template-columns:46px minmax(0,1fr) 30px;gap:11px}.candidate-avatar{width:46px;height:46px}.candidate-topline{flex-wrap:wrap}.candidate-main h3{font-size:.92rem}.party-line,.location-line{font-size:.68rem}.card-action i{width:30px;height:30px}.professional-stats{grid-template-columns:1fr}.hero-meta{flex-direction:column;gap:7px}.results-heading{align-items:flex-start}.result-count{margin-top:4px}}

/* Enhanced candidate search and geographical filtering */
.candidate-search-wrap{display:flex;flex:1 1 320px;flex-direction:column;gap:.4rem;min-width:220px}
.candidate-search-wrap .search-control{width:100%;position:relative}
.candidate-search-submit{align-self:center;height:38px;padding:0 14px;border:0;border-radius:11px;background:var(--primary);color:#fff;font-weight:850;display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap}.candidate-search-submit i{color:inherit}
.back-to-top{position:fixed;right:clamp(14px,2.5vw,32px);bottom:92px;z-index:58;width:48px;height:48px;border:1px solid rgba(255,255,255,.28);border-radius:50%;display:grid;place-items:center;background:var(--primary);color:#fff;font-size:1.15rem;box-shadow:0 10px 26px rgba(12,41,67,.25);cursor:pointer;transition:transform .18s ease,opacity .18s ease,box-shadow .18s ease}.back-to-top:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(12,41,67,.3)}.back-to-top:focus-visible{outline:3px solid rgba(18,63,115,.24);outline-offset:3px}.back-to-top[hidden]{display:none}@media(min-width:900px){.back-to-top{bottom:28px}}@media(prefers-reduced-motion:reduce){.back-to-top{transition:none}}
.search-control input{padding-right:3rem}
.clear-search{position:absolute;right:.55rem;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:2rem;height:2rem;border:0;border-radius:999px;background:var(--surface-variant,#eef1f5);color:var(--on-surface,#263238);cursor:pointer}
.clear-search:hover,.clear-search:focus-visible{background:var(--primary-container,#dbeafe);outline:2px solid var(--primary,#185abc);outline-offset:1px}
.search-feedback{padding-left:.3rem;color:var(--muted,#667085);font-size:.78rem;min-height:1.1rem}
.geo-control{display:flex;flex-direction:column;gap:.45rem;min-width:0}
.geo-label{display:flex;align-items:center;justify-content:space-between;font-weight:700;color:var(--on-surface,#263238)}
.clear-geo-level{display:grid;place-items:center;width:1.65rem;height:1.65rem;border:0;border-radius:999px;background:transparent;color:var(--muted,#667085);cursor:pointer}
.clear-geo-level:hover,.clear-geo-level:focus-visible{background:var(--surface-variant,#eef1f5);color:var(--primary,#185abc);outline:none}
.geography-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem;padding:.75rem 1rem;margin-top:.8rem;border-radius:14px;background:var(--surface-variant,#f4f7fb);color:var(--muted,#667085);font-size:.84rem}
.geography-breadcrumb button{border:0;background:transparent;padding:.2rem;color:var(--primary,#185abc);font:inherit;font-weight:700;cursor:pointer}
.geography-breadcrumb button:hover,.geography-breadcrumb button:focus-visible{text-decoration:underline;outline:none}
.filter-selection-summary{align-items:flex-start}
.filter-selection-summary strong{display:block;margin-left:auto;text-align:right;color:var(--primary,#185abc);font-size:.84rem;max-width:45%}
.candidate-card mark{background:#fff1a8;color:inherit;border-radius:.22rem;padding:0 .08em}
.results-heading .result-count{font-weight:750}
@media (max-width:700px){
  .candidate-search-wrap{flex-basis:100%}
  .filter-selection-summary{flex-wrap:wrap}
  .filter-selection-summary strong{width:100%;max-width:none;margin-left:1.65rem;text-align:left}
}

/* Documented pagination metadata presented as user-facing progress. */
.pagination-panel{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:1.25rem 0;padding:1rem 1.15rem;border:1px solid var(--outline-variant,#d8dee8);border-radius:20px;background:var(--surface,#fff);box-shadow:0 8px 24px rgba(23,43,77,.06)}
.pagination-copy{display:flex;flex-direction:column;gap:.18rem}.pagination-copy strong{font-size:1rem}.pagination-copy small{color:var(--muted,#667085)}
.pagination-actions{display:flex;align-items:center;gap:.65rem}.page-position{min-width:64px;text-align:center;font-weight:700}.pagination-actions .disabled{opacity:.45;pointer-events:none}
.drill-action{display:block;margin-top:.35rem;font-size:.78rem;font-weight:700;color:var(--primary,#175cd3)}
.empty-suggestion{display:block;margin-top:.55rem;color:var(--muted,#667085)}
@media(max-width:640px){.pagination-panel{align-items:stretch;flex-direction:column}.pagination-actions{justify-content:space-between}.pagination-actions .btn{flex:1}.page-position{align-self:center}}

/* Full-image presentation and viewer */
.profile-media{display:flex;align-items:center;justify-content:center}
.profile-image-button,.party-image-button{appearance:none;border:0;padding:0;background:transparent;cursor:zoom-in;display:block}
.professional-hero .profile-image-button{border-radius:28px}
.professional-hero .profile-photo{object-fit:contain;object-position:center;background:#fff;padding:4px}
.party-logo-wrap{display:flex;align-items:center;justify-content:center;padding:6px}
.party-logo-wrap .party-image-button{width:100%;height:100%;display:flex;align-items:center;justify-content:center}
.party-logo-wrap img,.party-logo-wrap .party-logo{display:block;width:100%;height:100%;margin:0;object-fit:contain;object-position:center}
.image-viewer[hidden]{display:none}
.image-viewer{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(8,18,30,.88);backdrop-filter:blur(8px)}
.image-viewer-dialog{position:relative;width:min(94vw,980px);height:min(88vh,820px);display:flex;align-items:center;justify-content:center;border-radius:22px;background:#fff;box-shadow:0 26px 80px rgba(0,0,0,.45);overflow:hidden}
.image-viewer-image{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;padding:18px}
.image-viewer-close{position:absolute;top:12px;right:12px;z-index:2;width:44px;height:44px;border:0;border-radius:50%;display:grid;place-items:center;background:rgba(8,47,90,.92);color:#fff;font-size:1.35rem;cursor:pointer}
.image-viewer-caption{position:absolute;left:16px;right:70px;bottom:12px;padding:8px 12px;border-radius:12px;background:rgba(8,18,30,.72);color:#fff;font-size:.78rem}
body.image-viewer-open{overflow:hidden}
@media(max-width:560px){.image-viewer{padding:10px}.image-viewer-dialog{width:100%;height:88vh;border-radius:16px}.image-viewer-image{padding:10px}}

/* Unified search, sorting and filter toolbar alignment */
.control-row{
  grid-template-columns:minmax(150px,auto) minmax(300px,1fr) minmax(180px,220px);
  align-items:start;
  column-gap:14px;
}
.toolbar-field{
  display:grid;
  grid-template-rows:18px 52px 20px;
  gap:5px;
  min-width:0;
  margin:0;
}
.control-field-label{
  display:flex;
  align-items:center;
  min-height:18px;
  padding-left:3px;
  color:var(--text);
  font-size:.72rem;
  font-weight:850;
  letter-spacing:.01em;
}
.sort-control{gap:5px}
.sort-control>span{padding-left:3px;color:var(--text);font-size:.72rem;font-weight:850}
.sort-control select,
.filter-trigger,
.search-control{
  width:100%;
  height:52px;
  min-height:52px;
  margin:0;
  box-sizing:border-box;
}
.sort-control select{min-width:0;padding-inline:13px}
.filter-trigger{justify-content:center;white-space:nowrap}
.search-feedback,.control-helper{
  display:block;
  min-height:20px;
  padding:0 3px;
  color:var(--muted,#667085);
  font-size:.74rem;
  line-height:1.25;
}
.filter-control{min-width:150px}
@media(max-width:800px){
  .control-row{grid-template-columns:minmax(0,1fr) minmax(170px,210px)}
  .candidate-search-wrap{grid-column:1/-1}
  .filter-control{grid-column:auto}
}
@media(max-width:540px){
  .control-row{grid-template-columns:1fr;gap:12px}
  .candidate-search-wrap,.sort-control,.filter-control{grid-column:auto;width:100%}
  .toolbar-field{grid-template-rows:18px 52px auto}
  .sort-control select,.filter-trigger{width:100%}
}

/* Unified geographical-filter alignment */
.advanced-filter-panel,
.performance-filter-panel{
  --filter-control-height:48px;
  scroll-margin-top:76px;
}
.filter-section{
  padding:18px 20px;
}
.filter-section + .filter-section{
  border-top:1px solid var(--line,#e4eaf0);
}
.filter-section-title{
  display:flex;
  align-items:center;
  gap:11px;
  margin-bottom:15px;
  min-height:42px;
}
.filter-section-title>i{
  flex:0 0 36px;
  width:36px;
  height:36px;
  display:grid;
  place-items:center;
  border-radius:11px;
  background:var(--primary-container,#dbeafe);
  color:var(--primary,#185abc);
}
.filter-section-title>div{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.filter-section-title strong{
  font-size:.91rem;
  line-height:1.2;
}
.filter-section-title small{
  color:var(--muted,#667085);
  font-size:.72rem;
  line-height:1.35;
}
.geography-grid,
.performance-filter-panel .filter-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  align-items:start;
}
.geo-control,
.performance-filter-panel .filter-grid>label{
  display:grid;
  grid-template-rows:24px var(--filter-control-height);
  gap:5px;
  min-width:0;
  margin:0;
  align-content:start;
}
.polling-section .geo-control{grid-template-rows:24px auto var(--filter-control-height)}
.geo-label,
.performance-filter-panel .filter-grid>label>span{
  min-height:28px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:0 2px;
  color:var(--text,#1d2939);
  font-size:.76rem;
  font-weight:850;
  line-height:1.2;
}
.geography-grid select,
.performance-filter-panel .filter-grid select{
  width:100%;
  height:var(--filter-control-height);
  min-height:var(--filter-control-height);
  margin:0;
  padding:0 13px;
  border:1px solid var(--outline,#cbd5e1);
  border-radius:13px;
  background:#fff;
  color:var(--text,#1d2939);
  font:inherit;
  font-size:.86rem;
  box-sizing:border-box;
}
.geography-grid select:focus,
.performance-filter-panel .filter-grid select:focus{
  border-color:var(--primary,#185abc);
  box-shadow:0 0 0 3px rgba(24,90,188,.12);
  outline:none;
}
.geography-grid select:disabled,
.performance-filter-panel .filter-grid select:disabled{
  border-style:solid;
  background:#f2f4f7;
  color:#8a94a3;
  cursor:not-allowed;
  opacity:1;
}
.clear-geo-level{
  flex:0 0 26px;
  width:26px;
  height:26px;
}
.filter-selection-summary,
.geography-breadcrumb{
  margin-inline:20px;
}
.advanced-filter-panel .filter-actions,
.performance-filter-panel .filter-actions{
  display:grid;
  grid-template-columns:minmax(130px,auto) minmax(180px,300px);
  justify-content:end;
  align-items:center;
  gap:10px;
  padding:16px 20px 20px;
  margin:0;
  border-top:1px solid var(--line,#e4eaf0);
}
.advanced-filter-panel .filter-actions .btn,
.performance-filter-panel .filter-actions .btn{
  width:100%;
  min-height:46px;
  white-space:nowrap;
}
@media(min-width:980px){
  .geography-grid,
  .performance-filter-panel .filter-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .polling-section .geography-grid{
    grid-template-columns:minmax(260px,1fr) minmax(260px,1fr) minmax(0,1fr);
  }
  .polling-section .geo-control:only-child{
    grid-column:1/2;
  }
  #filter-panel .filter-section:not(.polling-section) .geography-grid{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
}
@media(max-width:700px){
  .filter-section{padding:13px}
  .geography-grid,
  .performance-filter-panel .filter-grid{
    grid-template-columns:1fr;
    gap:8px;
  }
  .geo-control,
  .performance-filter-panel .filter-grid>label{
    grid-template-rows:26px 46px;
    gap:6px;
  }
    .geography-grid select,
  .performance-filter-panel .filter-grid select{
    height:46px;
    min-height:46px;
  }
  .filter-selection-summary,
  .geography-breadcrumb{
    margin-inline:16px;
  }
  .advanced-filter-panel .filter-actions,
  .performance-filter-panel .filter-actions{
    grid-template-columns:1fr;
    padding:14px 16px 18px;
  }
  .advanced-filter-panel .filter-actions .primary,
  .performance-filter-panel .filter-actions .primary{
    max-width:none;
  }
}

/* Distinguish manual append pagination from normal page navigation. */
.page-demarcation{display:flex;align-items:center;gap:.8rem;margin:1.6rem 0 1rem;color:var(--muted,#667085);font-size:.82rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;grid-column:1/-1}
.page-demarcation::before,.page-demarcation::after{content:"";height:1px;flex:1;background:var(--outline-variant,#d8dee8)}
.page-demarcation span{padding:.45rem .8rem;border:1px solid var(--outline-variant,#d8dee8);border-radius:999px;background:var(--surface,#fff);color:var(--primary,#174ea6);white-space:nowrap}
.page-demarcation small{font-size:.75rem;font-weight:600;letter-spacing:0;text-transform:none;white-space:nowrap}
.load-more-button.is-loading{pointer-events:none;opacity:.72}
@media(max-width:560px){.page-demarcation{gap:.45rem}.page-demarcation small{display:none}}

/* Executive candidate performance overview */
.performance-overview-section{margin-top:4px}.performance-overview-heading{align-items:center}.performance-overview-heading .section-note{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:999px;background:#eef8f3;color:var(--success)}.performance-overview{min-height:260px}.performance-overview-card{position:relative;overflow:hidden;min-height:260px;padding:26px 30px;border:1px solid #cbd8e5;border-radius:26px;background:linear-gradient(145deg,#fff 0%,#f6f9fc 100%);box-shadow:0 16px 36px rgba(20,43,69,.09)}.performance-overview-card:after{content:"";position:absolute;right:-74px;top:-90px;width:230px;height:230px;border-radius:50%;border:36px solid rgba(18,63,115,.045);pointer-events:none}.performance-overview-topline{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:16px}.performance-level-label{font-size:.72rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:var(--primary)}.performance-verified{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:999px;background:#e8f5ee;color:var(--success);font-size:.7rem;font-weight:850}.performance-rank-block{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:22px 0 24px;text-align:center}.performance-rank-value{font-size:clamp(3.4rem,10vw,5.4rem);line-height:.92;font-weight:950;letter-spacing:-.075em;color:var(--primary-strong)}.performance-rank-context{margin-top:10px;color:var(--muted);font-size:.92rem;font-weight:750}.performance-metrics-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid #dbe4ed}.performance-metrics-grid.single{grid-template-columns:1fr}.performance-metric{padding:20px 18px 4px;text-align:center}.performance-metric+.performance-metric{border-left:1px solid #dbe4ed}.performance-metric span{display:block;margin-bottom:5px;color:var(--muted);font-size:.72rem;font-weight:750}.performance-metric strong{display:block;color:var(--text);font-size:1.42rem;letter-spacing:-.025em}.performance-overview-empty,.performance-overview-error{min-height:210px;display:flex;align-items:center;gap:20px}.performance-overview-empty h3,.performance-overview-error h3{margin:6px 0 7px;font-size:1.15rem}.performance-overview-empty p,.performance-overview-error p{margin:0;color:var(--muted);font-size:.86rem}.performance-overview-empty small{display:block;margin-top:8px;color:var(--muted)}.performance-empty-icon{flex:0 0 auto;width:58px;height:58px;border-radius:18px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-size:1.35rem}.performance-empty-icon.error{background:#fff0ef;color:var(--error)}.performance-error-copy .btn{margin-top:15px}.performance-overview-loading{min-height:260px}.performance-skeleton-rank{width:120px;height:68px;margin:35px auto 12px;border-radius:16px;background:linear-gradient(90deg,#e9eef3 25%,#f5f7f9 50%,#e9eef3 75%);background-size:200% 100%;animation:summaryShimmer 1.25s infinite}.performance-skeleton-line{width:180px;height:14px;margin:auto;border-radius:8px;background:#e9eef3}.skeleton-metrics{margin-top:34px;padding-top:18px}.skeleton-metrics span{height:46px;margin:0 16px;border-radius:12px;background:#e9eef3}@keyframes summaryShimmer{to{background-position:-200% 0}}@media(max-width:560px){.performance-overview-card{padding:22px 18px;border-radius:22px}.performance-overview-topline{align-items:flex-start}.performance-rank-block{padding:26px 0}.performance-metrics-grid{grid-template-columns:1fr}.performance-metric+.performance-metric{border-left:0;border-top:1px solid #dbe4ed}.performance-metric{padding:16px 10px}.performance-overview-empty,.performance-overview-error{align-items:flex-start;padding:22px}.performance-overview-heading .section-note{display:none}}

/* Detailed performance context and card UX */
.professional-performance-card{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main metrics" "action action";gap:18px;padding:20px;border:1px solid #d8e2ec;border-radius:22px;background:#fff;color:inherit;text-decoration:none;box-shadow:0 8px 24px rgba(20,43,69,.07);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.professional-performance-card:hover,.professional-performance-card:focus-visible{transform:translateY(-2px);border-color:#a9bfd4;box-shadow:0 14px 34px rgba(20,43,69,.12);outline:none}.performance-card-main{grid-area:main;display:flex;align-items:flex-start;gap:14px;min-width:0}.performance-card-icon{flex:0 0 auto;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--primary-soft,#edf3fb);color:var(--primary);font-size:1.05rem}.performance-card-copy{min-width:0}.performance-card-level{display:block;margin-bottom:4px;font-size:.66rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.performance-card-copy h2{margin:0;font-size:1.08rem;line-height:1.28;overflow-wrap:anywhere}.professional-performance-card .candidate-count{display:inline-flex;align-items:center;gap:6px;margin-top:8px;color:var(--muted);font-size:.76rem;font-weight:650}.performance-card-metrics{grid-area:metrics;display:grid;grid-template-columns:repeat(2,minmax(92px,1fr));gap:8px;align-self:center}.metric-block{min-width:92px;padding:11px 12px;border-radius:14px;background:#f6f8fb;text-align:center}.metric-block small{display:block;margin-bottom:3px;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.metric-block strong{display:block;font-size:1.05rem;color:var(--text)}.metric-block span{display:block;margin-top:1px;color:var(--muted);font-size:.68rem}.rank-metric{background:#eef4fb}.votes-metric{background:#f5f7fa}.performance-card-action{grid-area:action;display:flex;align-items:center;justify-content:space-between;padding-top:12px;border-top:1px solid #e6ebf0;color:var(--primary);font-size:.78rem;font-weight:850}.performance-card-action i{transition:transform .18s ease}.professional-performance-card:hover .performance-card-action i{transform:translateX(4px)}
@media(prefers-reduced-motion:reduce){.professional-performance-card,.performance-card-action i{transition:none}.professional-performance-card:hover{transform:none}}

/* Detailed Performance experience enhancements */
.performance-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.candidate-performance-compact{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:14px 0 18px;padding:16px 18px;border:1px solid #d8e2ec;border-radius:20px;background:linear-gradient(135deg,#fff,#f5f8fb);box-shadow:0 8px 24px rgba(20,43,69,.06)}
.candidate-performance-identity{display:flex;align-items:center;gap:12px;min-width:0}.candidate-mini-avatar{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;flex:0 0 auto;background:var(--primary);color:#fff;font-size:1.05rem;font-weight:900}.candidate-performance-identity div{min-width:0}.candidate-performance-identity strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1rem}.candidate-performance-identity span:last-child{display:block;margin-top:3px;color:var(--muted);font-size:.78rem;font-weight:650}
.candidate-performance-top-metrics{display:flex;gap:8px}.candidate-performance-top-metrics>div{min-width:120px;padding:10px 14px;border-radius:14px;background:#edf3f9;text-align:right}.candidate-performance-top-metrics small{display:block;color:var(--muted);font-size:.64rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.candidate-performance-top-metrics strong{display:block;margin-top:2px;font-size:1.08rem;color:var(--primary-strong)}
.level-tabs a{display:inline-flex;align-items:center;gap:8px}.level-tabs a b{display:grid;place-items:center;min-width:23px;height:23px;padding:0 6px;border-radius:999px;background:rgba(255,255,255,.18);font-size:.68rem}.level-tabs a:not(.active) b{background:#e9eef4;color:var(--muted)}.level-tabs a.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}
.performance-results-summary strong{display:block;margin:3px 0 4px;font-size:1rem}.performance-results-summary small{display:block;color:var(--muted);font-size:.76rem;font-weight:650}
.performance-navigation-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px}.performance-navigation-row>span{color:var(--muted);font-size:.78rem;font-weight:700}.back-one-level{display:inline-flex;align-items:center;gap:7px}.performance-transition-status{display:flex;align-items:center;justify-content:center;gap:9px;margin:14px 0;padding:14px;border:1px solid #d7e2ed;border-radius:14px;background:#f6f9fc;color:var(--primary);font-weight:750}.performance-is-transitioning .performance-list{opacity:.48;pointer-events:none;transition:opacity .16s ease}
.station-card{border-left:3px solid #c9d8e8;background:#fbfcfe}.station-card>div:first-child strong:before{content:"Polling ";color:var(--muted);font-weight:650}.station-card .rank{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:25px;border-radius:999px;background:#edf3f9;color:var(--primary);font-size:.72rem;font-weight:850}
@media(max-width:620px){.performance-head-actions{width:100%;justify-content:flex-start}.performance-head-actions .icon-button{flex:1}.candidate-performance-compact{flex-direction:column}.candidate-performance-top-metrics{width:100%}.candidate-performance-top-metrics>div{flex:1;text-align:left}.performance-results-controls{grid-template-columns:1fr}.performance-navigation-row{align-items:flex-start;flex-direction:column}.back-one-level{width:100%;justify-content:center}}


/* Graceful degradation and persistent loading protection */
.no-js-notice{display:flex;align-items:flex-start;gap:12px;margin:0 0 16px;padding:14px 16px;border:1px solid #cfdbe7;border-radius:16px;background:#f5f9fc;color:var(--text)}
.no-js-notice>i{color:var(--primary);font-size:1.1rem;margin-top:2px}.no-js-notice strong{display:block}.no-js-notice p{margin:3px 0 0;color:var(--muted);font-size:.82rem;line-height:1.5}.no-js-submit-row{display:flex;justify-content:flex-end;margin-top:12px}
form[aria-busy="true"],form.is-submitting{cursor:progress}form[aria-busy="true"] :is(input,select,button){cursor:progress}
a.is-navigating{pointer-events:none;opacity:.72;cursor:progress}.btn.is-navigating::after,.candidate-card.is-navigating .card-action::after{content:"";display:inline-block;width:13px;height:13px;margin-left:8px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
select[aria-busy="true"]{background-image:linear-gradient(90deg,transparent,rgba(18,63,115,.08),transparent);background-size:200% 100%;animation:loadingSweep 1.1s linear infinite}
@keyframes loadingSweep{to{background-position:-200% 0}}
@media(max-width:560px){.no-js-submit-row .btn{width:100%}}

/* Presidential candidates are intentionally shown as one complete national list. */
.presidential-complete-list{align-items:center}
.complete-list-status{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;background:#e7f6ee;color:#17643b;font-weight:850;font-size:.78rem}
.complete-list-status i{font-size:1rem}
@media(max-width:560px){.presidential-complete-list{align-items:flex-start}.complete-list-status{width:100%;justify-content:center}}

/* Simplified candidate details experience */
.simple-page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:2px 0 14px;color:var(--muted);font-size:.76rem;font-weight:800}.simple-candidate-card{display:grid;grid-template-columns:150px minmax(0,1fr);gap:24px;align-items:center;padding:24px;border:1px solid var(--line);border-radius:24px;background:#fff;box-shadow:var(--shadow-soft)}.simple-candidate-media{display:flex;justify-content:center}.simple-profile-photo{display:block;width:142px;height:172px;border-radius:18px;border:1px solid #d9e1e9;background:#f7f9fb;object-fit:contain;object-position:center;padding:4px}.simple-profile-photo.fallback{display:grid;place-items:center;height:142px;background:var(--primary-soft);color:var(--primary);font-size:2.2rem;font-weight:950}.simple-candidate-copy h1{margin:7px 0 17px;font-size:clamp(1.55rem,4vw,2.25rem);line-height:1.08;letter-spacing:-.035em}.simple-contest-label{display:inline-flex;padding:6px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:.68rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.simple-party-row{display:flex;align-items:center;gap:12px}.simple-party-logo{display:grid;place-items:center;width:54px;height:54px;padding:6px;border:1px solid var(--line);border-radius:15px;background:#fff;cursor:zoom-in}.simple-party-logo img{display:block;width:100%;height:100%;object-fit:contain;object-position:center}.simple-party-row strong,.simple-party-row span{display:block}.simple-party-row strong{font-size:.9rem}.simple-party-row span{margin-top:3px;color:var(--muted);font-size:.69rem}.simple-info-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;overflow:hidden;margin-top:14px;border:1px solid var(--line);border-radius:18px;background:var(--line)}.simple-info-strip>div{padding:15px 17px;background:#fff}.simple-info-strip span,.simple-info-strip strong{display:block}.simple-info-strip span{color:var(--muted);font-size:.68rem}.simple-info-strip strong{margin-top:4px;font-size:.84rem}.simple-section{margin-top:22px}.simple-section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:10px}.simple-section-heading span{color:var(--primary);font-size:.66rem;font-weight:900;letter-spacing:.12em}.simple-section-heading h2{margin:4px 0 0;font-size:1.18rem}.simple-performance{min-height:0}.simple-performance .performance-overview-card{min-height:210px;padding:21px 24px;border-radius:20px;box-shadow:none}.simple-performance .performance-rank-block{padding:14px 0 18px}.simple-performance .performance-rank-value{font-size:clamp(3rem,9vw,4.5rem)}.simple-primary-action{max-width:360px;margin:14px 0 0}.simple-muted-note{display:flex;align-items:center;gap:8px;margin:14px 0 0;padding:11px 13px;border-radius:12px;background:#f5f7f9;color:var(--muted);font-size:.72rem}.simple-muted-note i{color:var(--primary)}
@media(max-width:620px){.simple-candidate-card{grid-template-columns:1fr;text-align:center;padding:20px}.simple-profile-photo{width:132px;height:156px}.simple-party-row{justify-content:center;text-align:left}.simple-info-strip{grid-template-columns:1fr}.simple-primary-action{max-width:none}.simple-page-head>span{display:none}}

/* Candidate details — refined, simple and consistent with the main interface */
.candidate-detail-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:2px 0 18px}.candidate-detail-back{display:inline-flex;align-items:center;gap:9px;color:var(--text);font-size:.82rem;font-weight:850;text-decoration:none}.candidate-detail-back i{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--line);border-radius:50%;background:#fff}.candidate-detail-page-label{color:var(--muted);font-size:.72rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
.candidate-profile-card{display:grid;grid-template-columns:minmax(210px,250px) minmax(0,1fr);overflow:hidden;border:1px solid var(--line);border-radius:28px;background:#fff;box-shadow:0 18px 48px rgba(20,43,69,.09)}
.candidate-photo-panel{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:390px;padding:24px;background:linear-gradient(155deg,var(--primary-soft),#f8fafc 72%)}.candidate-photo-kicker{align-self:center;width:100%;max-width:205px;margin-bottom:14px;color:var(--primary);font-size:.65rem;font-weight:950;letter-spacing:.12em;text-align:center;text-transform:uppercase}
.candidate-photo-link{position:relative;display:block;width:100%;max-width:205px;text-decoration:none;cursor:zoom-in}.candidate-detail-photo{display:block;width:100%;height:280px;padding:5px;border:1px solid #d5dee8;border-radius:22px;background:#fff;object-fit:contain;object-position:center;box-shadow:0 13px 28px rgba(20,43,69,.12)}.candidate-detail-photo.fallback{display:grid;place-items:center;color:var(--primary);font-size:3.2rem;font-weight:950;background:var(--primary-soft)}.candidate-photo-zoom{position:absolute;right:10px;bottom:10px;display:inline-flex;align-items:center;gap:6px;padding:7px 9px;border-radius:999px;background:rgba(17,32,49,.84);color:#fff;font-size:.65rem;font-weight:800;backdrop-filter:blur(8px)}
.candidate-profile-content{display:flex;flex-direction:column;padding:32px 34px}.candidate-profile-heading{padding-bottom:22px;border-bottom:1px solid var(--line)}.candidate-contest-badge{display:inline-flex;align-items:center;padding:7px 11px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:.66rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.candidate-profile-heading h1{margin:12px 0 8px;font-size:clamp(1.8rem,4.6vw,2.7rem);line-height:1.03;letter-spacing:-.045em}.candidate-profile-heading p{margin:0;color:var(--muted);font-size:.84rem;line-height:1.55}
.candidate-party-panel{display:flex;align-items:center;gap:15px;margin:22px 0;padding:15px;border:1px solid var(--line);border-radius:18px;background:#f8fafc}.candidate-party-logo{flex:0 0 62px;display:grid;place-items:center;width:62px;height:62px;padding:7px;border:1px solid #dbe3eb;border-radius:16px;background:#fff;cursor:zoom-in;text-decoration:none}.candidate-party-logo img{display:block;width:100%;height:100%;margin:0;object-fit:contain;object-position:center}.candidate-party-logo.fallback{color:var(--primary);font-size:.74rem;font-weight:950}.candidate-party-copy{min-width:0}.candidate-party-copy span,.candidate-party-copy strong{display:block}.candidate-party-copy span{margin-bottom:4px;color:var(--muted);font-size:.68rem}.candidate-party-copy strong{font-size:1rem;line-height:1.3}
.candidate-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:auto 0 0}.candidate-facts>div{min-width:0;padding:13px 14px;border:1px solid var(--line);border-radius:15px;background:#fff}.candidate-facts dt{color:var(--muted);font-size:.65rem;font-weight:750}.candidate-facts dd{margin:5px 0 0;color:var(--text);font-size:.82rem;font-weight:850;overflow-wrap:anywhere}
.candidate-profile-note{display:flex;align-items:flex-start;gap:9px;margin-top:12px;padding:12px 14px;border-radius:14px;background:#f3f6f9;color:var(--muted);font-size:.75rem;line-height:1.45}.candidate-profile-note i{margin-top:1px;color:var(--primary)}
.candidate-performance-section{margin-top:24px}.candidate-section-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:11px}.candidate-section-title span{color:var(--primary);font-size:.64rem;font-weight:950;letter-spacing:.13em}.candidate-section-title h2{margin:4px 0 0;font-size:1.3rem;letter-spacing:-.02em}.candidate-section-title>i{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--primary-soft);color:var(--primary);font-size:1.15rem}
.candidate-performance-overview{min-height:0}.candidate-performance-overview .performance-overview-card{min-height:220px;padding:23px 26px;border-radius:22px;box-shadow:0 12px 28px rgba(20,43,69,.07)}.candidate-performance-overview .performance-rank-block{padding:16px 0 20px}.candidate-performance-overview .performance-rank-value{font-size:clamp(3.1rem,9vw,4.7rem)}
.candidate-performance-action{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:13px;margin-top:14px;padding:15px 17px;border:1px solid #c7d7e7;border-radius:18px;background:linear-gradient(135deg,#fff,#f4f8fc);color:var(--text);text-decoration:none;box-shadow:0 8px 22px rgba(20,43,69,.06);transition:transform .18s,box-shadow .18s,border-color .18s}.candidate-performance-action:not(.is-disabled):hover{transform:translateY(-1px);border-color:var(--primary);box-shadow:0 13px 28px rgba(20,43,69,.1)}.candidate-performance-action.is-disabled{opacity:.65;cursor:wait}.candidate-performance-action-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--primary);color:#fff;font-size:1.1rem}.candidate-performance-action-copy{min-width:0}.candidate-performance-action-copy strong,.candidate-performance-action-copy small{display:block}.candidate-performance-action-copy strong{font-size:.88rem}.candidate-performance-action-copy small{margin-top:3px;color:var(--muted);font-size:.68rem}.candidate-performance-action-arrow{color:var(--primary);font-size:1.05rem}
@media(max-width:700px){.candidate-profile-card{grid-template-columns:1fr}.candidate-photo-panel{min-height:auto;padding:22px}.candidate-photo-kicker{align-self:center}.candidate-photo-link{max-width:190px}.candidate-detail-photo{height:240px}.candidate-profile-content{padding:25px 22px}.candidate-profile-heading{text-align:center}.candidate-party-panel{justify-content:center;text-align:left}.candidate-facts{grid-template-columns:1fr 1fr}.candidate-facts>div:last-child:nth-child(odd){grid-column:1/-1}.candidate-detail-page-label{display:none}}
@media(max-width:430px){.candidate-detail-head{margin-bottom:13px}.candidate-profile-card{border-radius:22px}.candidate-photo-panel{padding:18px}.candidate-detail-photo{height:220px;border-radius:18px}.candidate-photo-zoom span{display:none}.candidate-profile-content{padding:22px 17px}.candidate-profile-heading h1{font-size:1.75rem}.candidate-party-panel{align-items:center;padding:13px}.candidate-party-logo{flex-basis:54px;width:54px;height:54px}.candidate-facts{grid-template-columns:1fr}.candidate-facts>div:last-child:nth-child(odd){grid-column:auto}.candidate-performance-overview .performance-overview-card{padding:20px 17px}.candidate-performance-action{grid-template-columns:auto minmax(0,1fr) auto;padding:13px}.candidate-performance-action .spinner{display:none}.candidate-performance-action-arrow{display:none}}


/* Professional detailed-performance layout */
.performance-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:2px 0 14px}.back-link.compact{margin:0}.performance-candidate-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 24px;border:1px solid #d8e2ec;border-radius:24px;background:linear-gradient(135deg,#ffffff 0%,#f4f8fc 100%);box-shadow:0 10px 26px rgba(20,43,69,.07)}.performance-hero-identity{display:flex;align-items:center;gap:16px;min-width:0}.performance-hero-identity .candidate-mini-avatar{width:58px;height:58px;border-radius:18px;font-size:1.2rem}.performance-eyebrow{display:block;margin-bottom:4px;color:var(--primary);font-size:.65rem;font-weight:950;letter-spacing:.12em}.performance-hero-identity h1{margin:0;font-size:clamp(1.25rem,3vw,1.7rem);letter-spacing:-.03em}.performance-hero-identity p{margin:5px 0 0;color:var(--muted);font-size:.8rem;font-weight:650}.performance-topbar .icon-button,.performance-candidate-hero .icon-button{border-radius:13px}.icon-button.primary-soft{background:#eaf2fb;border-color:#c9d9ea;color:var(--primary)}
.compact-performance-filters{display:none;margin:14px 0 16px;padding:0;border:1px solid #d8e2ec;border-radius:22px;background:#fff;box-shadow:0 14px 34px rgba(20,43,69,.1);overflow:hidden}.compact-performance-filters.open{display:block}.performance-filter-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:18px 20px;border-bottom:1px solid #e5ebf1;background:#f7fafc}.performance-filter-heading h2{margin:4px 0 3px;font-size:1.05rem}.performance-filter-heading p{margin:0;color:var(--muted);font-size:.75rem}.compact-performance-filters .filter-grid{padding:18px 20px}.compact-performance-filters .filter-grid>label{grid-template-rows:22px 48px;gap:6px}.compact-performance-filters .filter-grid>label>span{font-size:.72rem}.compact-performance-filters .filter-actions{margin:0}.level-tabs{margin-top:14px;padding:8px 0 12px}.level-tabs a{padding:10px 16px;border-radius:999px;background:#fff}.level-tabs a.active{box-shadow:0 8px 18px rgba(20,75,130,.14)}
@media(max-width:760px){.performance-topbar{align-items:flex-start;flex-direction:column}.performance-head-actions{width:100%}.performance-head-actions .icon-button{flex:1}.performance-candidate-hero{align-items:flex-start;flex-direction:column;padding:18px}.candidate-performance-top-metrics{width:100%}.candidate-performance-top-metrics>div{flex:1;text-align:left}.compact-performance-filters .filter-grid{grid-template-columns:1fr}.performance-filter-heading{padding:16px}.compact-performance-filters .filter-grid{padding:16px}.performance-hero-identity .candidate-mini-avatar{width:52px;height:52px}}
@media(max-width:430px){.performance-hero-identity{align-items:flex-start}.performance-hero-identity p{line-height:1.45}.candidate-performance-top-metrics{flex-direction:column}.performance-topbar .icon-button span{display:inline}.compact-performance-filters{border-radius:18px}.performance-filter-heading p{max-width:240px}}


/* Unified application button system */
:root{
  --button-height:46px;
  --button-radius:14px;
  --button-gap:8px;
  --button-font-size:.78rem;
  --button-shadow:0 7px 16px rgba(20,43,69,.10);
}

.btn,
.icon-button,
.filter-trigger,
.back-link,
.filter-close,
.close-filter-panel{
  -webkit-tap-highlight-color:transparent;
  font-family:inherit;
  font-weight:850;
  line-height:1;
  transition:background-color .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,transform .16s ease,opacity .16s ease;
}

.btn{
  min-height:var(--button-height);
  height:var(--button-height);
  padding:0 17px;
  gap:var(--button-gap);
  border:1px solid transparent;
  border-radius:var(--button-radius);
  font-size:var(--button-font-size);
  letter-spacing:.005em;
  white-space:nowrap;
  box-shadow:none;
}
.btn i{font-size:.96rem;line-height:1}
.btn.primary{
  color:#fff;
  background:var(--primary);
  border-color:var(--primary);
  box-shadow:var(--button-shadow);
}
.btn.primary:hover,.btn.primary:focus-visible{
  color:#fff;
  background:var(--primary-strong,var(--primary-dark));
  border-color:var(--primary-strong,var(--primary-dark));
  transform:translateY(-1px);
  box-shadow:0 10px 22px rgba(20,43,69,.16);
}
.btn.secondary{
  color:var(--primary);
  background:#fff;
  border-color:#b9cadb;
}
.btn.secondary:hover,.btn.secondary:focus-visible{
  color:var(--primary-strong,var(--primary-dark));
  background:var(--primary-soft,#eef4fb);
  border-color:var(--primary);
  transform:translateY(-1px);
}
.btn:focus-visible,.icon-button:focus-visible,.filter-trigger:focus-visible,.back-link:focus-visible,.filter-close:focus-visible,.close-filter-panel:focus-visible{
  outline:3px solid rgba(24,90,188,.20);
  outline-offset:2px;
}
.btn:active,.icon-button:active,.filter-trigger:active,.back-link:active{transform:translateY(0)}
.btn.disabled,.btn[disabled],.btn[aria-disabled="true"],.btn.is-disabled{
  opacity:.48;
  pointer-events:none;
  cursor:not-allowed;
  box-shadow:none;
  transform:none;
}
.btn.wide{min-height:52px;height:52px;border-radius:16px}

.icon-button,
.filter-trigger{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--button-gap);
  min-height:var(--button-height);
  height:var(--button-height);
  padding:0 15px;
  border:1px solid #b9cadb;
  border-radius:var(--button-radius);
  background:#fff;
  color:var(--primary);
  font-size:var(--button-font-size);
  cursor:pointer;
  text-decoration:none;
  white-space:nowrap;
}
.icon-button:hover,.filter-trigger:hover,
.icon-button:focus-visible,.filter-trigger:focus-visible{
  background:var(--primary-soft,#eef4fb);
  border-color:var(--primary);
  color:var(--primary-strong,var(--primary-dark));
  transform:translateY(-1px);
}
.icon-button.primary-soft,.filter-trigger[aria-expanded="true"]{
  background:var(--primary-soft,#eef4fb);
  border-color:#b9cde1;
  color:var(--primary);
}
.icon-button i,.filter-trigger i{font-size:1rem}

.back-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:40px;
  margin:0;
  padding:0 12px;
  border:1px solid transparent;
  border-radius:12px;
  color:var(--primary);
  font-size:.76rem;
  text-decoration:none;
}
.back-link:hover,.back-link:focus-visible{
  background:var(--primary-soft,#eef4fb);
  color:var(--primary-strong,var(--primary-dark));
}

.filter-close,.close-filter-panel,.image-viewer-close{
  width:42px;
  min-width:42px;
  height:42px;
  padding:0;
  border-radius:50%;
  display:inline-grid;
  place-items:center;
}
.filter-close,.close-filter-panel{
  border:1px solid #c9d5e1;
  background:#fff;
  color:var(--muted);
}
.filter-close:hover,.close-filter-panel:hover{
  color:var(--primary);
  border-color:var(--primary);
  background:var(--primary-soft,#eef4fb);
}

.filter-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
}
.filter-actions .btn{min-width:138px}
.pagination-actions .btn{min-width:112px}
.load-more-button{min-width:220px}

.card-action,
.performance-card-action{
  color:var(--primary);
  font-weight:850;
}
.card-action i{
  border:1px solid transparent;
  transition:background-color .16s ease,border-color .16s ease,transform .16s ease;
}
.professional-card:hover .card-action i,
.professional-card:focus-visible .card-action i{
  background:var(--primary);
  border-color:var(--primary);
  color:#fff;
  transform:translateX(2px);
}

.candidate-performance-action{
  border-color:#b9cadb;
  border-radius:18px;
  background:#fff;
  box-shadow:none;
}
.candidate-performance-action:not(.is-disabled):hover,
.candidate-performance-action:not(.is-disabled):focus-visible{
  border-color:var(--primary);
  background:var(--primary-soft,#eef4fb);
  box-shadow:0 10px 24px rgba(20,43,69,.11);
  outline:none;
}
.candidate-performance-action-icon{border-radius:13px}

.btn.is-loading,.load-more-button.is-loading,
a.is-navigating{
  cursor:progress;
}
.btn.is-loading::after,.load-more-button.is-loading::after{
  content:"";
  width:14px;
  height:14px;
  border:2px solid currentColor;
  border-right-color:transparent;
  border-radius:50%;
  animation:spin .7s linear infinite;
}

@media(max-width:640px){
  .filter-actions{align-items:stretch;flex-direction:column-reverse}
  .filter-actions .btn{width:100%;min-width:0}
  .pagination-actions .btn{min-width:0}
  .performance-head-actions .icon-button{min-width:0}
  .load-more-button{width:100%;min-width:0}
}

@media(prefers-reduced-motion:reduce){
  .btn,.icon-button,.filter-trigger,.back-link,.card-action i,.candidate-performance-action{transition:none!important}
  .btn:hover,.icon-button:hover,.filter-trigger:hover,.candidate-performance-action:hover{transform:none!important}
}


/* Searchable geographical dropdown: search is inside the opened control. */
.searchable-select-native.js-enhanced,
.searchable-select-native{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.searchable-select{position:relative;width:100%;min-width:0}
.searchable-select-input{width:100%;height:var(--filter-control-height,48px);min-height:var(--filter-control-height,48px);padding:0 42px 0 13px;border:1px solid var(--outline,#cbd5e1);border-radius:13px;background:#fff;color:var(--text,#1d2939);font:inherit;font-size:.86rem;box-sizing:border-box;cursor:text}
.searchable-select-input::placeholder{color:#667085;opacity:1}
.searchable-select-input:focus{outline:none;border-color:var(--primary,#185abc);box-shadow:0 0 0 3px rgba(24,90,188,.12)}
.searchable-select-arrow{position:absolute;right:13px;top:50%;transform:translateY(-50%);display:grid;place-items:center;color:#667085;pointer-events:auto;cursor:pointer;transition:transform .18s ease}
.searchable-select.open .searchable-select-arrow{transform:translateY(-50%) rotate(180deg)}
.searchable-select-list{position:absolute;z-index:120;left:0;right:0;top:calc(100% + 6px);max-height:260px;overflow:auto;padding:6px;border:1px solid #d8e1eb;border-radius:14px;background:#fff;box-shadow:0 16px 36px rgba(16,36,61,.18)}
.searchable-select-option{display:block;width:100%;min-height:42px;padding:9px 11px;border:0;border-radius:9px;background:transparent;color:var(--text,#1d2939);font:inherit;font-size:.84rem;text-align:left;cursor:pointer}
.searchable-select-option:hover,.searchable-select-option.active{background:#eef4ff;color:var(--primary,#185abc)}
.searchable-select-option[aria-selected="true"]{background:#e5efff;color:var(--primary,#185abc);font-weight:800}
.searchable-select-empty{padding:14px 11px;color:#667085;font-size:.82rem;text-align:center}
.searchable-select.disabled .searchable-select-input,.searchable-select-input:disabled{background:#f2f4f7;color:#8a94a3;cursor:not-allowed}
.compact-performance-filters .filter-grid>label,.geo-control{overflow:visible}
@media(max-width:700px){.searchable-select-input{height:46px;min-height:46px}.searchable-select-list{max-height:220px}}

/* Deferred detailed-performance loading */
.performance-initial-loader{display:grid;gap:14px;padding:4px 0 8px}.performance-loading-heading{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--border,#dde3ea);border-radius:14px;background:var(--surface,#fff)}.performance-loading-heading>div{display:grid;gap:2px}.performance-loading-heading strong{font-size:.98rem}.performance-loading-heading small{color:var(--muted,#64748b)}.performance-skeleton-card{min-height:118px;border-radius:18px;background:linear-gradient(90deg,rgba(148,163,184,.12) 25%,rgba(148,163,184,.24) 50%,rgba(148,163,184,.12) 75%);background-size:200% 100%;animation:performanceSkeleton 1.25s ease-in-out infinite}.performance-load-error{margin-top:0}@keyframes performanceSkeleton{0%{background-position:200% 0}100%{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.performance-skeleton-card{animation:none}}

/* Keep searchable dropdown options fully visible above all filter containers. */
.compact-performance-filters.open,
.filter-panel.open,
.advanced-filter-panel.open{overflow:visible}
.searchable-select{z-index:1}
.searchable-select.open{z-index:500}
.searchable-select-list{
  z-index:1000;
  min-width:min(280px,calc(100vw - 20px));
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.searchable-select-option{
  height:auto;
  min-height:42px;
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
  line-height:1.35;
  overflow-wrap:anywhere;
}
@media(max-width:560px){
  .searchable-select-list{min-width:0;width:calc(100vw - 20px)!important}
}

/* Presidential editorial dashboard concept. Candidate records remain deliberately neutral. */
.presidential-intro{position:relative;isolation:isolate;min-height:230px;padding:34px 38px;overflow:hidden;border:0;border-radius:30px;background:linear-gradient(125deg,#071f36 0%,#0d3b66 54%,#14577f 100%);box-shadow:0 22px 55px rgba(8,35,60,.2)}
.presidential-intro:before{content:"";position:absolute;z-index:-1;right:-90px;bottom:-165px;width:430px;height:430px;border:78px solid rgba(255,255,255,.055);border-radius:50%}
.presidential-intro:after{content:"";position:absolute;z-index:-1;top:-120px;right:270px;width:280px;height:280px;border:1px solid rgba(255,255,255,.09);border-radius:50%}
.presidential-intro .intro-icon{width:64px;height:64px;border:1px solid rgba(255,255,255,.18);border-radius:20px;background:rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.12)}
.presidential-intro .intro-copy{max-width:650px}.presidential-intro .section-kicker{color:#9fd9ff;letter-spacing:.16em}.presidential-intro h1{max-width:640px;color:#fff;font-size:clamp(2rem,3.4vw,3.15rem);line-height:1.02;letter-spacing:-.045em}.presidential-intro p{max-width:550px;color:rgba(255,255,255,.72);font-size:.92rem}
.presidential-intro-stats{align-self:stretch;display:grid;grid-template-columns:repeat(2,minmax(160px,1fr));min-width:min(100%,420px);overflow:hidden;border:1px solid rgba(255,255,255,.16);border-radius:20px;background:rgba(4,23,40,.28);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);backdrop-filter:blur(14px)}
.presidential-intro-stats>div{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:19px 20px}.presidential-intro-stats>div+div{border-left:1px solid rgba(255,255,255,.13)}
.presidential-intro-stats span{color:#9fd9ff;font-size:.59rem;font-weight:850;letter-spacing:.12em;text-transform:uppercase}.presidential-intro-stats strong{margin-top:7px;color:#fff;font-size:1.35rem;font-weight:900;line-height:1;font-variant-numeric:tabular-nums}.presidential-intro-stats small{margin-top:7px;overflow:hidden;color:rgba(255,255,255,.65);font-size:.64rem;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
body:has(.presidential-results-layout) .election-type-nav{margin-top:18px;margin-inline:28px;padding:6px;border-color:rgba(13,59,102,.09);border-radius:18px;box-shadow:0 14px 34px rgba(12,41,67,.12)}
body:has(.presidential-results-layout) .controls-card{margin-top:22px;border-color:#dce5ed;border-radius:22px;background:linear-gradient(180deg,#fff,#fbfcfe);box-shadow:0 12px 32px rgba(12,41,67,.07)}
.presidential-card-status{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:-22px -24px 20px;padding:13px 22px;border-radius:24px 24px 0 0;background:linear-gradient(90deg,#0b2945,#123f65);color:#fff}.presidential-card-status span{display:inline-flex;align-items:center;gap:7px;font-size:.68rem;font-weight:850;letter-spacing:.04em}.presidential-card-status i{color:#6ee7b7}.presidential-card-status small{color:rgba(255,255,255,.62);font-size:.62rem}
.presidential-results-layout .presidential-overview-card{overflow:hidden;border-color:#d7e2ec;box-shadow:0 18px 45px rgba(12,41,67,.12)}
.presidential-overview-heading h2{font-size:1.5rem;line-height:1.08}.presidential-overview-heading p{max-width:310px;line-height:1.55}
.presidential-results-layout .presidential-chart-canvas{height:345px;padding:8px;border-radius:50%;background:radial-gradient(circle,#fff 58%,#f2f6fa 59%,#fff 68%)}
.presidential-legend-item{border-color:#e2e9ef;background:#fff;box-shadow:0 3px 10px rgba(20,43,69,.035);transition:border-color .18s,transform .18s,box-shadow .18s}.presidential-legend-item:hover{transform:translateY(-1px);border-color:#c7d5e1;box-shadow:0 7px 17px rgba(20,43,69,.08)}
.presidential-legend-swatch{border-radius:50%;box-shadow:0 0 0 3px color-mix(in srgb,var(--legend-colour) 14%,transparent)}
.presidential-candidate-column .results-heading{margin:31px 2px 15px;padding-bottom:13px;border-bottom:1px solid #d9e3eb}.presidential-candidate-column .results-heading h2{font-size:1.45rem;letter-spacing:-.025em}
.presidential-record-card{background:linear-gradient(180deg,#fff 0%,#fcfdfe 100%);box-shadow:0 8px 24px rgba(15,42,66,.055)}
.presidential-record-card:hover{border-color:#aebfce;box-shadow:0 14px 34px rgba(15,42,66,.1)}
.presidential-record-card .candidate-photo-placeholder{width:66px;height:66px;border:3px solid #fff;outline:1px solid #d7e0e8;box-shadow:0 5px 16px rgba(20,43,69,.12)}
.presidential-record-card .contest-pill{background:#eaf2f8;color:#174d73;letter-spacing:.08em}.presidential-record-card .clean-party-label{border:1px solid #e3e9ef;background:#f5f7f9;color:#536373}
.presidential-details-action{padding:7px 10px;border-radius:9px}.presidential-record-card:hover .presidential-details-action{background:#edf4fa}
@media(max-width:1120px){.presidential-intro{grid-template-columns:auto minmax(0,1fr);min-height:0}.presidential-intro-stats{grid-column:1/-1;width:100%}}
@media(max-width:720px){.presidential-intro{padding:26px 22px;border-radius:24px}.presidential-intro h1{font-size:2rem}.presidential-intro-stats{grid-template-columns:1fr}.presidential-intro-stats>div{padding:14px 16px}.presidential-intro-stats>div+div{border-top:1px solid rgba(255,255,255,.13);border-left:0}.presidential-intro-stats small{white-space:normal}body:has(.presidential-results-layout) .election-type-nav{margin-top:14px;margin-inline:10px}.presidential-card-status{margin:-18px -16px 18px;border-radius:18px 18px 0 0}.presidential-card-status small{display:none}.presidential-results-layout .presidential-chart-canvas{height:280px}}

/* Keep searchable dropdown options fully visible above all filter containers. */
.compact-performance-filters.open,
.filter-panel.open,
.advanced-filter-panel.open{overflow:visible}
.searchable-select{z-index:1}
.searchable-select.open{z-index:500}
.searchable-select-list{
  z-index:1000;
  min-width:min(280px,calc(100vw - 20px));
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.searchable-select-option{
  height:auto;
  min-height:42px;
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
  line-height:1.35;
  overflow-wrap:anywhere;
}
@media(max-width:560px){
  .searchable-select-list{min-width:0;width:calc(100vw - 20px)!important}
}


/* 2025 election hierarchy and simplified performance cards */
.professional-performance-card { grid-template-columns: 1fr; }
.professional-performance-card .performance-card-main { min-width: 0; }
.professional-performance-card .performance-card-action { border-top: 1px solid var(--border-color, #dce4ee); margin-top: 1rem; padding-top: .9rem; }
.numbered-station-card { display: grid; grid-template-columns: 42px minmax(0,1fr); align-items: center; gap: 1rem; }
.station-number { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; background: #eaf2fb; color: #154f82; font-weight: 800; }
.station-card-copy { min-width: 0; display: grid; gap: .2rem; }
.station-card-copy strong, .station-card-copy small { overflow-wrap: anywhere; }

/* Polling-station identifiers come only from the API and align consistently. */
.numbered-station-card{
  grid-template-columns:minmax(56px,auto) minmax(0,1fr);
  align-items:center;
}
.station-number{
  min-width:56px;
  height:42px;
  padding:0 10px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  justify-self:start;
  border-radius:12px;
  background:var(--primary-soft,#edf3fb);
  color:var(--primary);
  font-weight:850;
  font-variant-numeric:tabular-nums;
  line-height:1;
  white-space:nowrap;
  text-align:center;
}
.station-card-copy strong{
  line-height:1.35;
  font-variant-numeric:tabular-nums;
}
.pagination-copy strong,.page-position,[data-current-page],[data-total-pages],[data-visible-count],[data-total-count]{
  font-variant-numeric:tabular-nums;
}
@media(max-width:560px){
  .numbered-station-card{grid-template-columns:minmax(48px,auto) minmax(0,1fr);gap:.75rem;}
  .station-number{min-width:48px;height:40px;padding:0 8px;}
}

/* Polling Station cards: station information left, candidate votes right. */
.polling-station-performance-card{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:18px;
  padding:18px 20px;
}
.polling-station-left{
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  text-align:left;
}
.polling-station-performance-card .station-card-copy{
  justify-items:start;
  text-align:left;
}
.polling-station-votes{
  min-width:126px;
  padding:12px 16px;
  border-radius:14px;
  background:#f5f7fa;
  text-align:right;
  justify-self:end;
}
.polling-station-votes small{
  display:block;
  margin-bottom:3px;
  color:var(--muted);
  font-size:.62rem;
  font-weight:800;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.polling-station-votes strong{
  display:block;
  color:var(--text);
  font-size:1.12rem;
  font-weight:900;
  line-height:1.2;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
@media(max-width:560px){
  .polling-station-performance-card{
    grid-template-columns:minmax(0,1fr) auto;
    gap:12px;
    padding:16px;
  }
  .polling-station-votes{
    min-width:104px;
    padding:10px 12px;
  }
}

/* Final mobile layout layer: keep page content readable and results before charts. */
@media(max-width:720px){
  html,body{max-width:100%;overflow-x:hidden}
  .app-shell,.app-bar-inner{width:100%;max-width:100%}
  body:has(.presidential-results-layout) .app-shell,
  body:has(.constituency-results-layout) .app-shell,
  body:has(.search-results-layout) .app-shell,
  body:has(.candidate-detail-layout) .app-shell,
  body:has(.local-government-intro) .app-shell,
  body:has(.region-listing-page) .app-shell{padding-inline:12px}

  .page-intro,.election-intro,.controls-card,.candidate-detail-layout,
  .candidate-performance-page,.dashboard-page{min-width:0;max-width:100%}
  .control-row{grid-template-columns:minmax(0,1fr)}
  .filter-control,.candidate-search-wrap,.sort-control,.search-control{width:100%;min-width:0}
  .search-control input{min-width:0}

  .presidential-results-layout,.constituency-results-layout{
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"candidates" "chart";
    gap:18px;
  }
  .presidential-candidate-column,.constituency-candidate-column{grid-area:candidates;min-width:0}
  .presidential-results-layout .presidential-overview-card,
  .constituency-results-layout .presidential-overview-card,
  .constituency-results-layout .parliamentary-overview-card{
    grid-area:chart;position:static;top:auto;width:100%;min-width:0;margin-top:0;
  }
  .presidential-overview-card{padding:17px 14px;border-radius:19px}
  .presidential-overview-heading{flex-direction:column;gap:9px;margin-bottom:14px}
  .presidential-chart-layout,
  .presidential-results-layout .presidential-chart-layout,
  .constituency-results-layout .presidential-chart-layout{grid-template-columns:minmax(0,1fr);gap:16px}
  .presidential-chart-canvas,
  .presidential-results-layout .presidential-chart-canvas,
  .constituency-results-layout .presidential-chart-canvas{height:250px;min-width:0}
  .presidential-chart-legend,
  .presidential-results-layout .presidential-chart-legend,
  .constituency-results-layout .presidential-chart-legend{grid-template-columns:1fr;max-height:none;overflow:visible;padding-right:0}

  .presidential-record-card,.constituency-record-card{
    grid-template-columns:54px minmax(0,1fr);
    grid-template-areas:"photo identity" "result result";
    gap:12px 13px;padding:14px;border-radius:16px;min-width:0;
  }
  .presidential-record-card .candidate-photo-placeholder,
  .constituency-record-card .candidate-avatar,
  .constituency-record-card .candidate-photo-placeholder{
    grid-area:photo;align-self:start;width:54px;height:54px;min-width:54px;
  }
  .presidential-record-card .candidate-main,.constituency-record-card .candidate-main{
    grid-area:identity;align-self:start;min-width:0;
  }
  .presidential-record-card .candidate-main h3,.constituency-record-card .candidate-main h3{
    margin-top:1px;font-size:.98rem;line-height:1.28;overflow-wrap:anywhere;
  }
  .party-mark.clean-party-label,.constituency-record-card .party-mark.clean-party-label{
    max-width:100%;white-space:normal;overflow-wrap:anywhere;font-size:.78rem;line-height:1.3;
  }
  .location-line,.constituency-record-card .location-line{white-space:normal;font-size:.61rem;line-height:1.4;overflow-wrap:anywhere}
  .presidential-card-result,.constituency-record-card .parliamentary-card-result{
    grid-area:result;min-width:0;width:100%;align-self:auto;display:flex;flex-direction:row;
    align-items:flex-end;justify-content:space-between;gap:12px;padding:12px 0 0;
    border-top:1px solid #e6ebf0;border-left:0;text-align:left;
  }
  .presidential-card-result .candidate-total-votes,
  .parliamentary-card-result .candidate-total-votes{align-items:flex-start;min-width:0}
  .presidential-details-action{justify-content:flex-end;min-height:36px;margin-top:0;text-align:right}

  .candidate-detail-layout{grid-template-columns:minmax(0,1fr);gap:16px}
  .candidate-detail-layout .candidate-profile-card{grid-template-columns:minmax(0,1fr);border-radius:21px;overflow:hidden}
  .candidate-detail-layout .candidate-photo-panel{min-height:auto;padding:22px 16px}
  .candidate-detail-layout .candidate-photo-link{width:min(100%,210px);max-width:210px}
  .candidate-detail-layout .candidate-detail-photo{width:100%;height:auto;max-height:275px;aspect-ratio:4/5;object-fit:contain}
  .candidate-detail-layout .candidate-profile-content{min-width:0;padding:22px 18px}
  .candidate-detail-layout .candidate-performance-section{position:static;padding:16px;border-radius:20px}
  .candidate-facts{grid-template-columns:minmax(0,1fr)}
  .candidate-party-panel{min-width:0;overflow-wrap:anywhere}

  .professional-performance-card{min-width:0}
  .performance-candidate-hero,.performance-page-heading{align-items:flex-start}
  .performance-card-metrics{min-width:0}
  .performance-back-bottom{width:100%;justify-content:center}
}

@media(max-width:430px){
  .app-shell{padding-inline:10px}
  .election-type-link{min-width:0}
  .presidential-record-card,.constituency-record-card{grid-template-columns:48px minmax(0,1fr);gap:11px;padding:12px}
  .presidential-record-card .candidate-photo-placeholder,
  .constituency-record-card .candidate-avatar,
  .constituency-record-card .candidate-photo-placeholder{width:48px;height:48px;min-width:48px}
  .presidential-card-result,.constituency-record-card .parliamentary-card-result{align-items:flex-start;flex-direction:column;gap:5px}
  .presidential-details-action{justify-content:flex-start;text-align:left}
  .presidential-chart-canvas,
  .presidential-results-layout .presidential-chart-canvas,
  .constituency-results-layout .presidential-chart-canvas{height:225px}
}

/* Election Dashboard v2 */
body:has(.dashboard-v2) .app-shell,body:has(.dashboard-v2) .app-bar-inner{width:100%;max-width:none}
body:has(.dashboard-v2) .app-shell{padding:clamp(20px,3vw,42px)}
.dashboard-v2{display:grid;gap:clamp(22px,3vw,36px)}
.dashboard-v2-hero{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(250px,.55fr);align-items:center;gap:clamp(30px,5vw,76px);min-height:430px;padding:clamp(38px,5.5vw,80px);border-radius:32px;background:radial-gradient(circle at 77% 18%,rgba(190,239,223,.18),transparent 28%),linear-gradient(120deg,#0a443e 0%,#126052 58%,#208069 100%);color:#fff;box-shadow:0 25px 65px rgba(9,73,64,.22)}
.dashboard-v2-hero:before{content:"";position:absolute;z-index:-1;right:-130px;bottom:-330px;width:680px;height:680px;border:94px solid rgba(255,255,255,.035);border-radius:50%}
.dashboard-v2-hero:after{content:"";position:absolute;right:0;bottom:0;left:0;height:6px;background:linear-gradient(90deg,#111 0 34%,#cf142b 34% 67%,#2f9e44 67%)}
.dashboard-map-hero{grid-template-columns:minmax(350px,.72fr) minmax(0,1.28fr);grid-template-areas:"map copy" "map seal";align-items:center;gap:24px clamp(34px,5vw,76px);min-height:620px;padding:clamp(30px,4vw,54px)}
.dashboard-map-hero .dashboard-v2-hero-copy{grid-area:copy}.dashboard-map-hero .dashboard-map-seal{grid-area:seal;justify-self:start;width:100%;max-width:620px;display:grid;grid-template-columns:58px minmax(0,1fr) auto;grid-template-areas:"icon label year" "icon title year";column-gap:15px;align-items:center;padding:18px 20px;border-radius:19px}.dashboard-map-seal .dashboard-v2-seal-icon{grid-area:icon;margin:0}.dashboard-map-seal .dashboard-v2-seal-label{grid-area:label}.dashboard-map-seal>strong{grid-area:title;margin-top:4px;font-size:1.35rem}.dashboard-map-seal .dashboard-v2-year{grid-area:year;margin:0;padding:0 0 0 16px;border-top:0;border-left:1px solid rgba(255,255,255,.12)}
.dashboard-malawi-map{grid-area:map;align-self:stretch;display:flex;flex-direction:column;min-width:0;padding:22px;border:1px solid rgba(255,255,255,.18);border-radius:25px;background:rgba(3,48,43,.34);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);backdrop-filter:blur(12px)}.dashboard-malawi-map header>span{color:#d8caed;font-size:.61rem;font-weight:950;letter-spacing:.13em}.dashboard-malawi-map header h2{margin:6px 0 0;color:#fff;font-size:1.35rem;letter-spacing:-.025em}.dashboard-malawi-map header p{margin:6px 0 0;color:rgba(255,255,255,.62);font-size:.69rem}.malawi-map-stage{position:relative;flex:1;display:grid;place-items:center;min-height:410px;margin-top:13px;border:1px solid rgba(255,255,255,.09);border-radius:20px;background:rgba(255,255,255,.045);overflow:hidden}.malawi-map-svg{display:block;width:auto;height:400px;max-width:100%;filter:drop-shadow(0 14px 22px rgba(0,0,0,.22))}.malawi-map-shape{fill:#e2f2ec;stroke:#fff;stroke-width:3}.malawi-map-lake{fill:#7fcdbd;opacity:.82}.malawi-district-marker circle{fill:#7659ad;stroke:#fff;stroke-width:2.4;transition:r .15s ease,fill .15s ease}.malawi-district-marker:hover circle,.malawi-district-marker:focus circle{r:9;fill:#cf142b}.malawi-district-marker:focus{outline:none}.malawi-map-legend{position:absolute;right:12px;bottom:11px;left:12px;display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:10px;background:rgba(5,55,49,.82);color:#fff;font-size:.59rem}.malawi-map-legend span{display:flex;align-items:center;gap:6px}.malawi-map-legend i{width:9px;height:9px;border:2px solid #fff;border-radius:50%;background:#7659ad}.malawi-map-legend small{color:rgba(255,255,255,.66)}
.dashboard-district-directory{margin-top:12px;border:1px solid rgba(255,255,255,.12);border-radius:13px;background:rgba(0,0,0,.1)}.dashboard-district-directory summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px;color:#fff;font-size:.68rem;font-weight:850;cursor:pointer;list-style:none}.dashboard-district-directory summary::-webkit-details-marker{display:none}.dashboard-district-directory[open] summary i{transform:rotate(180deg)}.dashboard-district-directory>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-height:230px;padding:0 12px 13px;overflow:auto}.dashboard-district-directory section{display:flex;flex-direction:column;gap:4px}.dashboard-district-directory section>strong{margin-bottom:3px;color:#d9cbed;font-size:.6rem;text-transform:uppercase}.dashboard-district-directory a{padding:5px 6px;border-radius:6px;color:rgba(255,255,255,.78);font-size:.62rem;text-decoration:none}.dashboard-district-directory a:hover,.dashboard-district-directory a:focus{background:rgba(255,255,255,.1);color:#fff}
.malawi-leaflet-map{width:100%;height:410px;background:linear-gradient(145deg,#edf6f3,#dbece7);color:#17302b}.malawi-leaflet-map .leaflet-control-zoom a{color:#166858}.malawi-leaflet-map .leaflet-control-attribution{font-size:8px}.malawi-leaflet-map .leaflet-tooltip{border:0;border-radius:8px;background:#0b4a43;color:#fff;font-size:.66rem;font-weight:800;box-shadow:0 8px 20px rgba(0,0,0,.2)}.malawi-leaflet-map .leaflet-tooltip-top:before{border-top-color:#0b4a43}.malawi-leaflet-map.map-unavailable{display:grid;place-items:center;padding:24px;text-align:center;font-size:.74rem}.malawi-map-legend{z-index:500;pointer-events:none}.malawi-map-choices{display:grid;gap:6px;margin-top:9px}.malawi-map-choices a{display:block;padding:7px 9px;border-radius:8px;background:#7659ad;color:#fff;font-size:.7rem;font-weight:850;text-decoration:none}.malawi-map-choices a:hover{background:#60448f}
.dashboard-v2-hero-copy{position:relative;z-index:1;max-width:820px}.dashboard-v2-kicker{display:inline-flex;align-items:center;gap:9px;color:#d9cdef;font-size:.68rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.dashboard-v2-kicker i{color:#aa8bdb}
.dashboard-v2-hero h1{max-width:780px;margin:18px 0 17px;font-size:clamp(2.7rem,5.5vw,5.2rem);line-height:.94;letter-spacing:-.06em}.dashboard-v2-hero-copy>p{max-width:680px;margin:0;color:rgba(255,255,255,.68);font-size:clamp(.92rem,1.25vw,1.08rem);line-height:1.7}
.dashboard-v2-actions{display:flex;flex-wrap:wrap;align-items:center;gap:21px;margin-top:31px}.dashboard-v2-primary{display:inline-flex;align-items:center;justify-content:center;gap:11px;min-height:56px;padding:0 23px;border-radius:15px;background:#6c50a6;color:#fff;font-size:.79rem;font-weight:900;text-decoration:none;box-shadow:0 12px 28px rgba(0,0,0,.25)}.dashboard-v2-primary:hover{background:#7b60b3}.dashboard-v2-updated{display:flex;align-items:center;gap:10px;color:#fff}.dashboard-v2-updated>i{color:#55d28c}.dashboard-v2-updated span,.dashboard-v2-updated strong,.dashboard-v2-updated small{display:block}.dashboard-v2-updated strong{font-size:.71rem}.dashboard-v2-updated small{margin-top:3px;color:rgba(255,255,255,.53);font-size:.62rem}
.dashboard-v2-seal{position:relative;z-index:1;justify-self:end;width:min(100%,285px);padding:31px;border:1px solid rgba(255,255,255,.15);border-radius:28px;background:rgba(0,0,0,.24);box-shadow:inset 0 1px 0 rgba(255,255,255,.07);backdrop-filter:blur(15px)}.dashboard-v2-seal-icon{display:grid;place-items:center;width:58px;height:58px;margin-bottom:38px;border-radius:18px;background:#6c50a6;color:#fff;font-size:1.45rem}.dashboard-v2-seal-label{display:block;color:#c9cbd0;font-size:.62rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.dashboard-v2-seal>strong{display:block;margin-top:9px;font-size:2rem;line-height:1.02;letter-spacing:-.045em}.dashboard-v2-year{display:block;margin-top:25px;padding-top:17px;border-top:1px solid rgba(255,255,255,.12);color:#b99de2;font-size:.75rem;font-weight:900;letter-spacing:.18em}
.dashboard-v2-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.dashboard-v2-metrics article{display:grid;grid-template-columns:52px minmax(0,1fr);gap:15px;align-items:center;min-width:0;padding:20px;border:1px solid #dedfe2;border-radius:19px;background:#fff;box-shadow:0 8px 24px rgba(0,0,0,.055)}.dashboard-v2-metric-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:15px;background:#eee8f8;color:#5e4491;font-size:1.12rem}.dashboard-v2-metrics small,.dashboard-v2-metrics strong,.dashboard-v2-metrics article div>span{display:block}.dashboard-v2-metrics small{color:#797d84;font-size:.61rem;font-weight:900;letter-spacing:.055em;text-transform:uppercase}.dashboard-v2-metrics strong{margin-top:4px;font-size:1.65rem;line-height:1}.dashboard-v2-metrics article div>span{margin-top:6px;color:#94979c;font-size:.62rem}
.dashboard-v2-section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:19px}.dashboard-v2-section-heading>div>span,.dashboard-v2-guide-copy>span{color:#684e9c;font-size:.64rem;font-weight:950;letter-spacing:.14em}.dashboard-v2-section-heading h2,.dashboard-v2-guide h2{margin:6px 0 0;font-size:clamp(1.6rem,2.6vw,2.25rem);letter-spacing:-.04em}.dashboard-v2-section-heading p,.dashboard-v2-guide-copy p{max-width:670px;margin:8px 0 0;color:var(--muted);font-size:.79rem;line-height:1.55}.dashboard-v2-section-badge{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;padding:9px 12px;border-radius:999px;background:#e8f5ee;color:#187144;font-size:.67rem;font-weight:850}
.dashboard-v2-contest-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.dashboard-v2-contest{position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:345px;padding:27px;border:1px solid #d8e3e0;border-radius:25px;background:#fff;color:inherit;text-decoration:none;box-shadow:0 9px 28px rgba(9,73,64,.06);transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-v2-contest:before{content:"";position:absolute;top:0;right:0;left:0;height:5px;background:#166858}.dashboard-v2-contest:hover{transform:translateY(-5px);border-color:#b7d5cd;box-shadow:0 22px 48px rgba(9,73,64,.13)}.dashboard-v2-card-number{position:absolute;top:25px;right:25px;color:#cedbd7;font-size:1.7rem;font-weight:950;letter-spacing:-.06em}.dashboard-v2-card-icon{display:grid;place-items:center;width:56px;height:56px;margin-bottom:33px;border-radius:17px;background:#eee8f8;color:#5e4491;font-size:1.25rem}.dashboard-v2-card-eyebrow{color:#166858;font-size:.61rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.dashboard-v2-contest>strong{display:block;margin-top:8px;font-size:1.45rem;letter-spacing:-.03em}.dashboard-v2-card-description{display:block;margin-top:10px;color:var(--muted);font-size:.77rem;line-height:1.62}.dashboard-v2-card-action{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:20px;border-top:1px solid #e4ece9;color:#17302b;font-size:.73rem;font-weight:900}.dashboard-v2-card-action i{color:#166858}
.dashboard-v2-guide{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr);gap:clamp(30px,5vw,78px);align-items:center;padding:clamp(29px,4.5vw,54px);border:1px solid #d8e3e0;border-radius:29px;background:linear-gradient(135deg,#fff,#eef5f3);box-shadow:0 9px 28px rgba(9,73,64,.06)}.dashboard-v2-steps{display:grid;gap:10px;margin:0;padding:0;list-style:none}.dashboard-v2-steps li{display:grid;grid-template-columns:43px minmax(0,1fr);gap:14px;align-items:center;padding:14px;border:1px solid #dce7e4;border-radius:16px;background:#fff}.dashboard-v2-steps li>span{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#166858;color:#fff;font-size:.76rem;font-weight:900}.dashboard-v2-steps strong,.dashboard-v2-steps small{display:block}.dashboard-v2-steps strong{font-size:.8rem}.dashboard-v2-steps small{margin-top:4px;color:var(--muted);font-size:.67rem;line-height:1.45}
.dashboard-v2-assurance{display:grid;grid-template-columns:50px minmax(0,1fr) auto;gap:16px;align-items:center;padding:21px 23px;border:1px solid #d8e3e0;border-radius:20px;background:#fff}.dashboard-v2-assurance>span{display:grid;place-items:center;width:50px;height:50px;border-radius:15px;background:#166858;color:#fff;font-size:1.17rem}.dashboard-v2-assurance strong,.dashboard-v2-assurance p{display:block}.dashboard-v2-assurance strong{font-size:.82rem}.dashboard-v2-assurance p{margin:5px 0 0;color:var(--muted);font-size:.68rem}.dashboard-v2-assurance>a{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:0 16px;border-radius:13px;background:#6c50a6;color:#fff;font-size:.7rem;font-weight:900;text-decoration:none}
@media(min-width:721px){body:has(.dashboard-v2){padding-bottom:0}body:has(.dashboard-v2) .bottom-nav{display:none}}
@media(max-width:980px){.dashboard-v2-hero{grid-template-columns:1fr;min-height:0}.dashboard-v2-seal{justify-self:start;width:100%;max-width:530px}.dashboard-v2-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-v2-contest-grid{grid-template-columns:1fr}.dashboard-v2-contest{min-height:285px}.dashboard-v2-guide{grid-template-columns:1fr}}
@media(max-width:980px){.dashboard-map-hero{grid-template-columns:1fr;grid-template-areas:"map" "copy" "seal"}.dashboard-malawi-map{width:100%;max-width:620px}.dashboard-map-hero .dashboard-map-seal{max-width:620px}}
@media(max-width:560px){body:has(.dashboard-v2) .app-shell{padding:14px 12px 95px}.dashboard-v2{gap:23px}.dashboard-v2-hero{padding:31px 22px;border-radius:25px}.dashboard-v2-hero h1{font-size:2.65rem}.dashboard-v2-actions{align-items:stretch;flex-direction:column}.dashboard-v2-primary{width:100%}.dashboard-v2-seal{display:grid;grid-template-columns:58px minmax(0,1fr) auto;grid-template-areas:"icon label year" "icon title year";column-gap:14px;align-items:center;padding:18px;border-radius:18px}.dashboard-v2-seal-icon{grid-area:icon;margin:0}.dashboard-v2-seal-label{grid-area:label}.dashboard-v2-seal>strong{grid-area:title;margin-top:4px;font-size:1.35rem}.dashboard-v2-year{grid-area:year;margin:0;padding:0 0 0 14px;border-top:0;border-left:1px solid rgba(255,255,255,.12)}.dashboard-v2-metrics{grid-template-columns:1fr}.dashboard-v2-section-heading{align-items:flex-start}.dashboard-v2-section-badge{display:none}.dashboard-v2-contest{min-height:300px;padding:22px;border-radius:21px}.dashboard-v2-guide{padding:24px 18px;border-radius:23px}.dashboard-v2-assurance{grid-template-columns:44px minmax(0,1fr)}.dashboard-v2-assurance>span{width:44px;height:44px}.dashboard-v2-assurance>a{grid-column:1/-1}}
@media(max-width:560px){.dashboard-map-hero{padding:18px 14px 26px}.dashboard-malawi-map{padding:16px;border-radius:20px}.malawi-map-stage{min-height:360px}.malawi-map-svg{height:350px}.malawi-leaflet-map{height:360px}.dashboard-district-directory>div{grid-template-columns:1fr 1fr}.dashboard-map-hero .dashboard-v2-hero-copy{padding-inline:4px}.dashboard-map-hero .dashboard-v2-hero-copy h1{font-size:2.35rem}}

/* Full-height Malawi dashboard map. */
body:has(.dashboard-v2) .app-shell{padding-top:16px}
.dashboard-map-hero{display:block;min-height:calc(100vh - 108px);padding:0;border-radius:26px;background:#dcebe7}
.dashboard-map-hero:before,.dashboard-map-hero:after{display:none}
.dashboard-malawi-map{position:relative;width:100%;height:calc(100vh - 108px);min-height:620px;padding:0;border:0;border-radius:26px;background:#dcebe7;box-shadow:0 18px 50px rgba(25,55,48,.16);overflow:hidden}
.dashboard-malawi-map .malawi-map-stage{width:100%;height:100%;min-height:0;margin:0;border:0;border-radius:0;background:#dcebe7}
.dashboard-malawi-map .malawi-leaflet-map{width:100%;height:100%;min-height:100%}
.dashboard-malawi-map>header{position:absolute;z-index:600;top:14px;right:14px;left:auto;width:230px;max-width:calc(100% - 62px);padding:9px 12px;border:1px solid rgba(255,255,255,.75);border-radius:11px;background:rgba(255,255,255,.93);box-shadow:0 7px 20px rgba(22,62,53,.15);backdrop-filter:blur(10px);pointer-events:none}
.dashboard-malawi-map>header>span{color:#7659ad;font-size:.5rem;letter-spacing:.11em}.dashboard-malawi-map>header h2{margin-top:4px;color:#17302b;font-size:.86rem}.dashboard-malawi-map>header p{margin-top:4px;color:#526761;font-size:.57rem;line-height:1.35}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:560px){body:has(.dashboard-v2) .app-shell{padding:8px 8px 95px}.dashboard-map-hero{min-height:calc(100svh - 84px);padding:0;border-radius:18px}.dashboard-malawi-map{height:calc(100svh - 84px);min-height:560px;padding:0;border-radius:18px}.dashboard-malawi-map>header{top:10px;right:10px;left:auto;width:205px;max-width:calc(100% - 56px);padding:8px 10px}.dashboard-malawi-map>header h2{font-size:.8rem}.dashboard-malawi-map>header p{font-size:.54rem}}

/* Election dashboard: full-height map at left, official portal content at right. */
body:has(.dashboard-v2) .app-shell{width:100%;max-width:none;padding:14px 16px 32px}
.dashboard-v2{display:grid;grid-template-columns:minmax(440px,.9fr) minmax(460px,1.1fr);gap:18px;align-items:start;width:100%;max-width:none;margin:0}
.dashboard-v2>.dashboard-map-hero{position:sticky;top:90px;min-height:calc(100vh - 106px);height:calc(100vh - 106px);border-radius:24px}
.dashboard-v2>.dashboard-map-hero .dashboard-malawi-map{height:100%;min-height:0;border-radius:24px}
.dashboard-home-content{display:grid;gap:14px;min-width:0;padding:16px;border:1px solid #dce8e4;border-radius:26px;background:linear-gradient(180deg,#f8fbfa 0%,#eef5f2 100%);box-shadow:0 16px 42px rgba(23,65,55,.09)}
.dashboard-home-intro{position:relative;overflow:hidden;padding:30px 27px;border-radius:20px;background:linear-gradient(145deg,#0f574a,#237b68);color:#fff;box-shadow:0 14px 34px rgba(15,87,74,.2)}
.dashboard-home-intro:after{content:"";position:absolute;right:-75px;bottom:-110px;width:250px;height:250px;border:42px solid rgba(255,255,255,.06);border-radius:50%}
.dashboard-home-kicker{position:relative;z-index:1;display:flex;align-items:center;gap:8px;color:#d7f1e8;font-size:.64rem;font-weight:950;letter-spacing:.11em;text-transform:uppercase}
.dashboard-home-intro h1{position:relative;z-index:1;margin:13px 0 10px;font-size:clamp(1.8rem,2.7vw,2.75rem);line-height:.98;letter-spacing:-.05em}
.dashboard-home-intro p{position:relative;z-index:1;margin:0;color:rgba(255,255,255,.75);font-size:.79rem;line-height:1.65}
.dashboard-home-intro>a{position:relative;z-index:1;display:inline-flex;align-items:center;gap:9px;margin-top:19px;padding:11px 15px;border:1px solid rgba(255,255,255,.28);border-radius:11px;background:#fff;color:#145f51;font-size:.7rem;font-weight:900;text-decoration:none;box-shadow:0 8px 18px rgba(10,55,46,.18);transition:transform .18s ease,background .18s ease}.dashboard-home-intro>a:hover{transform:translateY(-2px);background:#e9f5f1}
.dashboard-home-content .dashboard-v2-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.dashboard-home-content .dashboard-v2-metrics article{min-height:92px;padding:14px;border-color:#dce7e3;border-radius:15px;box-shadow:0 5px 16px rgba(25,62,53,.05)}
.dashboard-home-content .dashboard-v2-metric-icon{width:44px;height:44px;border-radius:12px}
.dashboard-home-content .dashboard-v2-metrics strong{font-size:1.42rem}
.dashboard-home-content .dashboard-v2-contests{padding:20px 17px;border:1px solid #dce7e3;border-radius:19px;background:#fff;box-shadow:0 7px 22px rgba(25,62,53,.055)}
.dashboard-home-content .dashboard-v2-section-heading{align-items:flex-start}
.dashboard-home-content .dashboard-v2-section-heading h2{font-size:1.42rem}
.dashboard-home-content .dashboard-v2-section-badge{display:none}
.dashboard-home-content .dashboard-v2-contest-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.dashboard-home-content .dashboard-v2-contest{display:grid;grid-template-columns:48px minmax(0,1fr);grid-template-areas:"icon eyebrow" "icon title" "icon description";column-gap:13px;align-items:center;min-height:105px;padding:14px;border:1px solid #dce7e3;border-radius:15px;background:#fff;box-shadow:0 5px 16px rgba(25,62,53,.05)}
.dashboard-home-content .dashboard-v2-contest:hover{transform:translateY(-2px);border-color:#b9d2ca;box-shadow:0 10px 24px rgba(9,73,64,.09)}
.dashboard-home-content .dashboard-v2-contest .dashboard-v2-card-icon{width:42px;height:42px;margin-bottom:13px;border-radius:12px}
.dashboard-home-content .dashboard-v2-card-icon{grid-area:icon;width:44px!important;height:44px!important;margin:0!important;background:#e8f4ef!important;color:#166858!important}.dashboard-home-content .dashboard-v2-card-eyebrow{grid-area:eyebrow;align-self:end;color:#5e746d;font-size:.57rem}.dashboard-home-content .dashboard-v2-card-number{display:none}.dashboard-home-content .dashboard-v2-contest>strong{grid-area:title;margin-top:2px;font-size:1.1rem}.dashboard-home-content .dashboard-v2-card-description{grid-area:description;align-self:start;margin:4px 0 0;color:#788b85;font-size:.61rem;line-height:1.35}.dashboard-home-content .dashboard-v2-card-action{display:none}.dashboard-home-content .dashboard-v2-contest:before{display:none}
.dashboard-summary-download{border-color:#bcd8cf!important;background:linear-gradient(145deg,#fff,#edf7f3)!important}
.dashboard-summary-download:before{background:#166858}
.dashboard-summary-download .dashboard-v2-card-icon{background:#166858!important;color:#fff!important}
.malawi-leaflet-map .malawi-district-label{min-width:420px;max-width:min(480px,calc(100vw - 30px));padding:13px 14px;border:1px solid rgba(30,82,45,.16);border-radius:14px;background:#fff;box-shadow:0 12px 30px rgba(22,54,36,.22);color:#173b25;font-size:.72rem;font-weight:800;line-height:1.2;white-space:normal;pointer-events:none;text-align:left}
.malawi-leaflet-map .malawi-district-label strong,.malawi-leaflet-map .malawi-district-label span{display:block}
.malawi-leaflet-map .malawi-district-label strong{font-size:.84rem}.malawi-leaflet-map .malawi-district-label span{margin-top:5px;color:#4e6961;font-size:.67rem;font-weight:800}.malawi-leaflet-map .malawi-district-label b{display:block;margin-top:7px;padding-top:7px;border-top:1px solid #e3ece9;color:#166858;font-size:.78rem;font-variant-numeric:tabular-nums}
.malawi-leaflet-map .malawi-district-label:before{border-top-color:#fff}
.malawi-leaflet-map .district-top-label{margin-top:3px!important;color:#75847f!important;font-size:.58rem!important;font-weight:750!important}.district-top-table{width:100%;margin-top:9px;border-collapse:collapse;table-layout:auto;font-variant-numeric:tabular-nums}.district-top-table th{padding:6px 7px;border-bottom:1px solid #dce7e3;background:#f1f6f4;color:#64766f;font-size:.51rem;text-align:left;text-transform:uppercase;letter-spacing:.055em}.district-top-table th:last-child,.district-top-table td:last-child{text-align:right}.district-top-table td{padding:7px;border-bottom:1px solid #edf1ef;color:#25473f;font-size:.61rem;font-weight:750;vertical-align:middle}.district-top-table tbody tr:last-child td{border-bottom:0}.district-top-table td:first-child{max-width:175px}.district-top-table td i{display:inline-grid;place-items:center;width:17px;height:17px;margin-right:6px;border-radius:50%;background:#e8f2ef;color:#126858;font-size:.51rem;font-style:normal;font-weight:950}.district-top-table td:nth-child(2){color:#684e9c;font-weight:950}.district-top-table td:last-child{color:#153b32;font-weight:950}
@media(max-width:480px){.malawi-leaflet-map .malawi-district-label{min-width:285px;padding:11px}.district-top-table th,.district-top-table td{padding:6px 5px}.district-top-table td{font-size:.56rem}.district-top-table td:first-child{max-width:145px}}
.malawi-leaflet-map .lake-malawi-label{padding:2px 5px;border:1px solid rgba(255,255,255,.55);border-radius:999px;background:rgba(26,121,163,.72);box-shadow:0 2px 6px rgba(14,92,125,.16);color:#fff;font-size:.56rem;font-style:italic;font-weight:800;letter-spacing:.01em;line-height:1.15;pointer-events:none;white-space:nowrap}
.malawi-leaflet-map .lake-malawi-label:before{display:none}

/* Official election-summary PDF library */
body:has(.summary-library) .app-shell,body:has(.summary-library) .app-bar-inner{width:100%;max-width:2000px}
body:has(.summary-library) .app-shell{padding-inline:clamp(12px,2vw,28px)}
.summary-library{width:100%;max-width:2000px;margin:0 auto;padding:6px 0 42px;color:#17312c}
.summary-library-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:22px;align-items:end;padding:26px clamp(20px,4vw,52px) 30px;border:1px solid #d9e6e1;border-radius:28px;background:linear-gradient(135deg,#f5fbf8 0%,#fff 58%,#f3f0fb 100%);box-shadow:0 18px 45px rgba(25,72,61,.08);position:relative;overflow:hidden}
.summary-library-hero:after{content:"";position:absolute;right:-80px;top:-120px;width:280px;height:280px;border:52px solid rgba(103,80,164,.07);border-radius:50%;pointer-events:none}
.summary-back-link{grid-column:1/-1;display:inline-flex;align-items:center;gap:7px;width:max-content;color:#36554e;text-decoration:none;font-size:.78rem;font-weight:850}
.summary-hero-copy{position:relative;z-index:1}.summary-kicker{display:inline-flex;align-items:center;gap:8px;color:#6750a4;font-size:.72rem;font-weight:900;letter-spacing:.11em;text-transform:uppercase}.summary-hero-copy h1{margin:10px 0 8px;font-size:clamp(1.8rem,3vw,3rem);line-height:1.02;letter-spacing:-.045em;color:#122c27}.summary-hero-copy p{max-width:720px;margin:0;color:#587068;font-size:.76rem;line-height:1.55}
.summary-kicker i{color:#d32f2f}
.summary-security-note{position:relative;z-index:1;display:flex;align-items:center;gap:12px;min-width:250px;padding:15px 17px;border:1px solid #cfe2db;border-radius:16px;background:rgba(255,255,255,.84)}.summary-security-note>i{font-size:1.45rem;color:#08755f}.summary-security-note div{display:flex;flex-direction:column;gap:2px}.summary-security-note strong{font-size:.82rem}.summary-security-note span{font-size:.7rem;color:#637870}
.summary-workspace{display:grid;grid-template-columns:minmax(340px,440px) minmax(0,1fr);gap:22px;margin-top:22px;align-items:start}.summary-finder,.summary-preview{border:1px solid #dce7e3;border-radius:24px;background:#fff;box-shadow:0 12px 35px rgba(20,54,47,.07)}.summary-finder{padding:22px;position:sticky;top:82px}.summary-step-heading{display:flex;align-items:center;gap:11px;margin-bottom:14px}.summary-step-heading>span{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:#eaddff;color:#4f378b;font-size:.75rem;font-weight:950}.summary-step-heading div{display:flex;flex-direction:column}.summary-step-heading strong{font-size:.88rem}.summary-step-heading small{margin-top:2px;color:#6a7d77;font-size:.7rem}
.summary-contest-options{display:grid;gap:8px;border:0;margin:0 0 24px;padding:0}.summary-contest-item{display:grid;gap:8px;min-width:0}.summary-contest-options label{display:block;cursor:pointer}.summary-contest-item>.summary-area-filter{width:100%;margin:2px 0 6px}.summary-contest-options input{position:absolute;opacity:0;pointer-events:none}.summary-contest-options label>span{display:grid;grid-template-columns:38px minmax(0,1fr) 22px;grid-template-rows:auto auto;column-gap:11px;align-items:center;padding:11px 13px;border:1px solid #dce5e2;border-radius:14px;transition:.18s;background:#fff}.summary-contest-options i{grid-row:1/3;display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:#edf6f2;color:#0e725f}.summary-contest-options .summary-accordion-chevron{grid-column:3;grid-row:1/3;width:22px;height:22px;border-radius:50%;background:transparent;color:#61736e;font-size:.72rem;transition:transform .2s ease}.summary-contest-item.is-open .summary-accordion-chevron{transform:rotate(180deg)}.summary-contest-options b{font-size:.82rem}.summary-contest-options small{font-size:.67rem;color:#71827d}.summary-contest-options input:checked+span{border-color:#6750a4;background:#f8f4ff;box-shadow:0 0 0 3px rgba(103,80,164,.1)}.summary-contest-options input:checked+span i{background:#6750a4;color:#fff}.summary-contest-options input:checked+span .summary-accordion-chevron{background:transparent;color:currentColor}.summary-contest-options input:focus-visible+span{outline:3px solid rgba(103,80,164,.24);outline-offset:2px}
.summary-contest-options input[value="presidential"]:checked+span{border-color:#c62828;background:#fff5f5;box-shadow:0 0 0 3px rgba(198,40,40,.1)}.summary-contest-options input[value="presidential"]:checked+span i{background:#c62828}.summary-contest-options input[value="parliamentary"]:checked+span{border-color:#14805f;background:#f1faf7;box-shadow:0 0 0 3px rgba(20,128,95,.1)}.summary-contest-options input[value="parliamentary"]:checked+span i{background:#14805f}.summary-contest-options input[value="local_government"]:checked+span{border-color:#7659ad;background:#f8f5ff;box-shadow:0 0 0 3px rgba(118,89,173,.1)}.summary-contest-options input[value="local_government"]:checked+span i{background:#7659ad}
.summary-contest-item.is-disabled label{cursor:not-allowed}.summary-contest-item.is-disabled label>span{border-color:#e1e5e3;background:#f4f5f5;color:#89918e;box-shadow:none;opacity:.72}.summary-contest-item.is-disabled label>span i{background:#e4e7e6;color:#7d8582}.summary-contest-item.is-disabled label>span .summary-accordion-chevron{background:transparent;color:#7d8582}
.summary-finder[data-selected-contest="presidential"]{--summary-election:#c62828;--summary-election-soft:#fff3f3}.summary-finder[data-selected-contest="parliamentary"]{--summary-election:#14805f;--summary-election-soft:#eef9f5}.summary-finder[data-selected-contest="local_government"]{--summary-election:#7659ad;--summary-election-soft:#f6f1ff}.summary-area-filter{--filter-control-height:40px;padding:16px;border:1px solid color-mix(in srgb,var(--summary-election) 34%,#dce7e3);border-top:4px solid var(--summary-election);border-radius:18px;background:linear-gradient(180deg,var(--summary-election-soft),#fff 110px);scroll-margin-top:84px}.summary-area-filter[hidden]{display:none}.summary-area-filter .summary-step-heading>span{background:var(--summary-election);color:#fff}.summary-area-filter .summary-step-heading strong,.summary-area-filter .summary-area-control>span{color:color-mix(in srgb,var(--summary-election) 72%,#183c33)}.summary-area-filter .summary-load-button{background:var(--summary-election);color:#fff}.summary-area-filter select{width:100%;height:40px;min-height:40px;margin:0;padding:0 34px 0 11px;border:1px solid #ccd8d4;border-radius:7px;background-color:#fff;color:#203b35;font:600 .86rem/1.2 inherit;box-shadow:none;transition:none}.summary-area-filter select:focus{outline:2px solid color-mix(in srgb,var(--summary-election) 28%,transparent);outline-offset:1px;border-color:var(--summary-election);box-shadow:none}.summary-area-filter select:disabled{background:#f1f4f3;color:#81908c;cursor:not-allowed}
.summary-area-grid{display:grid;gap:5px}.summary-area-control{display:grid;gap:2px;margin:0;padding:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important}.summary-area-control>span{padding:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;font-size:.72rem;font-weight:600;color:#455b55!important;line-height:1.25}.summary-area-control>span b{color:#a12b24;font-weight:700}.summary-area-control select{margin:0}.summary-finder-footer{display:grid;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid #e7eeeb}.summary-finder-footer p{display:flex;align-items:flex-start;gap:8px;margin:0;color:#62766f;font-size:.67rem;line-height:1.5}.summary-finder-footer p i{color:#6750a4;margin-top:1px}.summary-load-button{width:100%;min-height:44px;border-radius:12px}.summary-load-button:disabled{opacity:.68;cursor:wait}
.summary-preview{min-height:680px;scroll-margin-top:82px;overflow:hidden}.summary-preview-empty,.summary-preview-unavailable{min-height:680px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;text-align:center;background:linear-gradient(180deg,#fff,#f8fbfa)}.summary-preview-empty[hidden],.summary-preview-unavailable[hidden],.summary-document[hidden]{display:none}.summary-preview-empty>span,.summary-preview-unavailable>span{display:grid;place-items:center;width:78px;height:78px;border-radius:24px;background:#edf6f2;color:#12715f;font-size:2.15rem;box-shadow:inset 0 0 0 1px #d6e9e2}.summary-preview h2{margin:18px 0 7px;font-size:1.25rem;letter-spacing:-.025em}.summary-preview-empty p,.summary-preview-unavailable p{max-width:430px;margin:0;color:#71817c;font-size:.8rem;line-height:1.6}.summary-preview-unavailable .btn{margin-top:18px}.summary-document>header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px 20px;border-bottom:1px solid #dce7e3;background:#f8fbfa}.summary-document>header div{min-width:0}.summary-document>header span{color:#6750a4;font-size:.64rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.summary-document>header h2{margin:3px 0;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-document>header small{display:block;color:#6d7f79;font-size:.68rem}.summary-document>header .btn{flex:0 0 auto}.summary-pdf-frame{height:calc(100vh - 190px);min-height:620px;background:#e5e9e8}.summary-pdf-frame iframe{display:block;width:100%;height:100%;border:0;background:#e5e9e8}
.summary-preview-empty>span{background:#fff1f1;color:#d32f2f;box-shadow:inset 0 0 0 1px #f1cccc}
@media(max-width:900px){.summary-workspace{grid-template-columns:1fr}.summary-finder{position:static}.summary-preview,.summary-preview-empty,.summary-preview-unavailable{min-height:600px}.summary-library-hero{grid-template-columns:1fr}.summary-security-note{width:min(100%,340px)}}
@media(max-width:560px){.summary-library{padding-top:0}.summary-library-hero{border-radius:0 0 24px 24px;padding:20px 16px 24px}.summary-workspace{margin-top:14px;gap:14px}.summary-finder{padding:17px;border-radius:20px}.summary-contest-options{grid-template-columns:1fr}.summary-preview{border-radius:20px;min-height:530px}.summary-preview-empty,.summary-preview-unavailable{min-height:530px;padding:28px 20px}.summary-document>header{align-items:flex-start;flex-direction:column}.summary-document>header .btn{width:100%}.summary-pdf-frame{height:72vh;min-height:520px}}

/* Executive institutional treatment for the official document library. */
body:has(.summary-library){background:#eef2f1}body:has(.summary-library) .official-badge{display:none}.summary-library-hero{grid-template-columns:minmax(0,1fr) 310px;padding:26px clamp(24px,3vw,44px) 22px;border:1px solid #cbd6d2;border-radius:12px;background:#fff;box-shadow:0 8px 24px rgba(17,48,42,.07)}.summary-library-hero:after{display:none}.summary-back-link{color:#31554d;font-size:.7rem;letter-spacing:.02em;text-transform:uppercase}.summary-kicker{color:#4b625c;font-size:.65rem;letter-spacing:.14em}.summary-hero-copy h1{max-width:900px;margin:9px 0 7px;color:#132c27;font-size:clamp(1.65rem,2.6vw,2.55rem);font-weight:850;letter-spacing:-.035em}.summary-hero-copy p{color:#5e716c;font-size:.73rem}.summary-security-note{min-width:0;padding:13px 15px;border:1px solid #ccd9d5;border-radius:8px;background:#f7faf9}.summary-security-note>i{color:#0d604f;font-size:1.25rem}.summary-security-note strong{color:#203b35;font-size:.75rem}.summary-security-note span{font-size:.64rem;line-height:1.4}.summary-executive-meta{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px 28px;margin-top:2px;padding-top:16px;border-top:1px solid #dde5e2;color:#526962;font-size:.65rem;font-weight:750}.summary-executive-meta span{display:inline-flex;align-items:center;gap:7px}.summary-executive-meta i{color:#0d604f}
.summary-workspace{grid-template-columns:minmax(350px,410px) minmax(0,1fr);gap:18px}.summary-finder,.summary-preview{border:1px solid #cdd8d4;border-radius:10px;box-shadow:0 6px 18px rgba(18,48,42,.055)}.summary-finder{padding:20px;background:#fff}.summary-step-heading>span{width:34px;height:30px;border-radius:4px;background:#e8eeec;color:#2d5149;font-size:.68rem;letter-spacing:.04em}.summary-step-heading strong{color:#1c3731;font-size:1rem}.summary-step-heading small{margin-top:4px;font-size:.76rem;line-height:1.4}.summary-contest-options label>span{padding:13px 14px;border-color:#d5dedb;border-radius:7px}.summary-contest-options i{width:40px;height:40px;border-radius:6px;font-size:1rem}.summary-contest-options b{font-size:.92rem}.summary-contest-options small{margin-top:2px;font-size:.73rem}.summary-contest-options input:checked+span{box-shadow:none}.summary-contest-options input[value="presidential"]:checked+span{border-left:4px solid #c62828;box-shadow:none}.summary-contest-options input[value="parliamentary"]:checked+span{border-left:4px solid #14805f;box-shadow:none}.summary-contest-options input[value="local_government"]:checked+span{border-left:4px solid #7659ad;box-shadow:none}.summary-area-filter{padding:15px;border-radius:7px;background:#fff;box-shadow:none}.summary-area-filter .summary-load-button{border-radius:5px;font-size:.73rem;letter-spacing:.01em}.summary-preview{background:#fff}.summary-preview-empty,.summary-preview-unavailable{background:#f7f9f8}.summary-preview-empty>span,.summary-preview-unavailable>span{width:68px;height:68px;border-radius:8px;font-size:1.85rem}.summary-preview h2{font-size:1.12rem}.summary-preview-empty p,.summary-preview-unavailable p{font-size:.73rem}.summary-preview-trust{display:inline-flex;align-items:center;gap:6px;margin-top:15px;padding-top:13px;border-top:1px solid #dce4e1;color:#536b64;font-size:.62rem;font-weight:750}.summary-preview-trust i{color:#0d604f}.summary-document>header{padding:15px 18px;border-bottom-color:#cbd7d3;background:#f3f6f5}.summary-document>header span{color:#435d56;font-size:.58rem}.summary-document>header h2{color:#172f2a;font-size:.94rem}.summary-document>header em{display:inline-flex;align-items:center;gap:5px;margin-top:4px;color:#0b6a56;font-size:.58rem;font-style:normal;font-weight:800}.summary-document>header .btn{min-height:40px;border-radius:5px;background:#0d604f;font-size:.7rem}.summary-pdf-frame{border-top:3px solid #263c37}
.summary-database-error{display:flex;align-items:flex-start;gap:9px;margin-bottom:16px;padding:11px 12px;border:1px solid #e3b8b4;border-radius:6px;background:#fff5f4;color:#8b2922;font-size:.68rem;font-weight:750;line-height:1.45}.summary-database-error i{margin-top:1px}
.summary-pdf-frame{position:relative}.summary-pdf-frame iframe{transition:opacity .25s ease}.summary-pdf-frame iframe.is-loading{opacity:0}.summary-pdf-loading{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px;background:linear-gradient(145deg,#f8faf9,#edf2f0);text-align:center}.summary-pdf-loading[hidden]{display:none}.summary-pdf-loader-icon{position:relative;display:grid;place-items:center;width:72px;height:72px;margin-bottom:17px;border-radius:12px;background:#fff1f1;color:#cf2e2e;font-size:2rem;box-shadow:0 8px 22px rgba(59,43,43,.09);animation:summary-pdf-float 1.6s ease-in-out infinite}.summary-pdf-loader-icon:after{content:"";position:absolute;inset:-8px;border:2px solid rgba(207,46,46,.18);border-top-color:#cf2e2e;border-radius:18px;animation:spin .9s linear infinite}.summary-pdf-loading strong{color:#213a34;font-size:.88rem}.summary-pdf-loading small{margin-top:5px;color:#687c76;font-size:.68rem}.summary-pdf-progress{position:relative;width:min(220px,70%);height:3px;margin-top:18px;overflow:hidden;border-radius:999px;background:#d9e2df}.summary-pdf-progress:after{content:"";position:absolute;inset:0;width:42%;border-radius:inherit;background:#0d604f;animation:summary-pdf-progress 1.15s ease-in-out infinite}@keyframes summary-pdf-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes summary-pdf-progress{0%{transform:translateX(-110%)}100%{transform:translateX(260%)}}@media(prefers-reduced-motion:reduce){.summary-pdf-loader-icon,.summary-pdf-loader-icon:after,.summary-pdf-progress:after{animation:none}.summary-pdf-progress:after{width:65%}}
@media(max-width:900px){.summary-library-hero{grid-template-columns:1fr}.summary-workspace{grid-template-columns:1fr}.summary-security-note{width:min(100%,360px)}}
@media(max-width:560px){.summary-library-hero{padding:20px 16px;border-radius:0 0 10px 10px}.summary-finder,.summary-preview{border-radius:8px}.summary-executive-meta{display:grid;grid-template-columns:1fr}.summary-document>header .btn{width:100%}}
.dashboard-home-content .dashboard-v2-guide{grid-template-columns:1fr;padding:20px 18px;border-radius:18px;box-shadow:none}
.dashboard-home-content .dashboard-v2-assurance{grid-template-columns:44px minmax(0,1fr);padding:16px;border-radius:16px;box-shadow:none}
.dashboard-home-content .dashboard-v2-assurance>span{width:44px;height:44px}
.dashboard-home-content .dashboard-v2-assurance>a{grid-column:1/-1}
@media(max-width:1050px){.dashboard-v2{grid-template-columns:1fr}.dashboard-v2>.dashboard-map-hero{position:relative;top:auto;height:72vh;min-height:620px}.dashboard-home-content{grid-template-columns:1fr}.dashboard-home-content .dashboard-v2-contest-grid{grid-template-columns:1fr 1fr}.dashboard-home-content .dashboard-v2-contest{min-height:0}}
@media(max-width:720px){body:has(.dashboard-v2) .app-shell{padding:8px 8px 96px}.dashboard-v2{gap:12px}.dashboard-v2>.dashboard-map-hero{height:calc(100svh - 92px);min-height:540px;border-radius:18px}.dashboard-v2>.dashboard-map-hero .dashboard-malawi-map{border-radius:18px}.dashboard-home-content{padding:10px;border-radius:20px}.dashboard-home-intro{padding:25px 20px;border-radius:17px}.dashboard-home-intro h1{font-size:2.15rem}.dashboard-home-content .dashboard-v2-metrics{grid-template-columns:1fr 1fr}.dashboard-home-content .dashboard-v2-contest-grid{grid-template-columns:1fr}.dashboard-home-content .dashboard-v2-contest{min-height:0}}

/* Keep 25px above and below the Malawi map within the visible browser canvas. */
.dashboard-v2{align-items:start}
.dashboard-v2>.dashboard-map-hero{position:sticky;top:25px;align-self:start;height:calc(100vh - 50px);height:calc(100dvh - 50px);min-height:0}
.dashboard-v2>.dashboard-map-hero .dashboard-malawi-map{position:absolute;inset:0;width:100%;height:100%;min-height:0}
@media(max-width:1050px){.dashboard-v2>.dashboard-map-hero{position:relative;top:auto;height:calc(100vh - 50px);height:calc(100dvh - 50px);min-height:0}.dashboard-v2>.dashboard-map-hero .dashboard-malawi-map{position:absolute;inset:0;height:100%}}

/* Simple, unified election contest directory. */
.dashboard-home-content .dashboard-v2-contests{padding:25px 23px 23px;border:1px solid #dbe5e1;border-radius:22px;background:#fbfdfc;box-shadow:0 10px 30px rgba(27,60,52,.06)}
.dashboard-home-content .dashboard-v2-section-heading{margin-bottom:20px;padding-bottom:18px;border-bottom:1px solid #e6ece9}
.dashboard-home-content .dashboard-v2-section-heading>div>span{color:#7659ad;font-size:.61rem;letter-spacing:.13em}
.dashboard-home-content .dashboard-v2-section-heading h2{margin-top:7px;color:#15352f;font-size:1.55rem;line-height:1.1}
.dashboard-home-content .dashboard-v2-section-heading p{margin-top:7px;color:#6e7f7a;font-size:.72rem}
.dashboard-home-content .dashboard-v2-contest-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.dashboard-home-content .dashboard-v2-contest{display:grid;grid-template-columns:46px minmax(0,1fr) 30px;grid-template-areas:"icon eyebrow action" "icon title action" "icon description action";column-gap:14px;align-items:center;min-height:120px;padding:17px 15px;border:1px solid #dce6e2;border-radius:17px;background:#fff;box-shadow:none;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.dashboard-home-content .dashboard-v2-contest:hover,.dashboard-home-content .dashboard-v2-contest:focus-visible{transform:translateY(-2px);border-color:#a9c9c0;box-shadow:0 10px 24px rgba(24,78,65,.1);outline:none}
.dashboard-home-content .dashboard-v2-card-icon{grid-area:icon;width:46px!important;height:46px!important;margin:0!important;border-radius:13px!important;background:#e9f4f0!important;color:#126a59!important;font-size:1.08rem}
.dashboard-home-content .dashboard-v2-card-eyebrow{grid-area:eyebrow;align-self:end;color:#657a74;font-size:.55rem;line-height:1.2;letter-spacing:.105em}
.dashboard-home-content .dashboard-v2-contest>strong{grid-area:title;margin:3px 0 0;color:#102f29;font-size:1.04rem;line-height:1.15;letter-spacing:-.025em}
.dashboard-home-content .dashboard-v2-card-description{grid-area:description;align-self:start;margin:6px 0 0;color:#748680;font-size:.61rem;line-height:1.42}
.dashboard-home-content .dashboard-v2-card-action{grid-area:action;display:grid;width:30px;height:30px;margin:0;padding:0;border:0;border-radius:50%;background:#f0f5f3;color:transparent;font-size:0;place-items:center}
.dashboard-home-content .dashboard-v2-card-action i{color:#126a59;font-size:.78rem}
.dashboard-home-content .dashboard-v2-contest:hover .dashboard-v2-card-action{background:#126a59}.dashboard-home-content .dashboard-v2-contest:hover .dashboard-v2-card-action i{color:#fff}
.dashboard-home-content .dashboard-summary-download{border-color:#dce6e2!important;background:#fff!important}
.dashboard-home-content .dashboard-summary-download .dashboard-v2-card-icon{background:#eee9f7!important;color:#674b99!important}
.dashboard-home-content .dashboard-summary-download .dashboard-v2-card-action i{color:#674b99}
.dashboard-home-content .dashboard-summary-download:hover .dashboard-v2-card-action{background:#674b99}.dashboard-home-content .dashboard-summary-download:hover .dashboard-v2-card-action i{color:#fff}
.dashboard-home-content .contest-presidential{border-left:4px solid #c62828;background:linear-gradient(100deg,#fff8f8 0,#fff 42%)}
.dashboard-home-content .contest-presidential .dashboard-v2-card-icon{background:#fbe8e8!important;color:#b42323!important}.dashboard-home-content .contest-presidential .dashboard-v2-card-action i{color:#b42323}.dashboard-home-content .contest-presidential:hover .dashboard-v2-card-action{background:#b42323}
.dashboard-home-content .contest-parliamentary{border-left:4px solid #14805f;background:linear-gradient(100deg,#f5fbf8 0,#fff 42%)}
.dashboard-home-content .contest-parliamentary .dashboard-v2-card-icon{background:#e3f3ed!important;color:#126b50!important}.dashboard-home-content .contest-parliamentary .dashboard-v2-card-action i{color:#126b50}.dashboard-home-content .contest-parliamentary:hover .dashboard-v2-card-action{background:#126b50}
.dashboard-home-content .contest-local_government{border-left:4px solid #7659ad;background:linear-gradient(100deg,#faf8fd 0,#fff 42%)}
.dashboard-home-content .contest-local_government .dashboard-v2-card-icon{background:#eee8f8!important;color:#684b9d!important}.dashboard-home-content .contest-local_government .dashboard-v2-card-action i{color:#684b9d}.dashboard-home-content .contest-local_government:hover .dashboard-v2-card-action{background:#684b9d}
.dashboard-home-content .dashboard-summary-download{border-left:4px solid #2878a9!important;background:linear-gradient(100deg,#f5fafe 0,#fff 42%)!important}
.dashboard-home-content .dashboard-summary-download .dashboard-v2-card-icon{background:#e3f1f9!important;color:#236b98!important}.dashboard-home-content .dashboard-summary-download .dashboard-v2-card-action i{color:#236b98}.dashboard-home-content .dashboard-summary-download:hover .dashboard-v2-card-action{background:#236b98}
@media(max-width:620px){.dashboard-home-content .dashboard-v2-contests{padding:21px 15px}.dashboard-home-content .dashboard-v2-contest-grid{grid-template-columns:1fr}.dashboard-home-content .dashboard-v2-contest{min-height:108px;padding:15px 13px}.dashboard-home-content .dashboard-v2-section-heading h2{font-size:1.35rem}}

/* Compact MEC identity in the application header. */
.app-bar .brand-mark{padding:4px;border:1px solid #dce5e2;background:#fff;box-shadow:0 4px 12px rgba(15,62,52,.12)}
.app-bar .brand-mark img{display:block;width:34px;height:31px;object-fit:contain}
@media(max-width:460px){.app-bar .brand-mark{padding:4px}.app-bar .brand-mark img{width:30px;height:28px}}

/* Keep district hover results above every dashboard layer. */
.dashboard-v2>.dashboard-map-hero{z-index:70}
.malawi-leaflet-map .leaflet-districtTooltipPane-pane{z-index:2500!important;pointer-events:none}
.malawi-leaflet-map .malawi-district-label{z-index:2600!important}

/* Final phone portrait sizing — intentionally follows every compact-card rule. */
@media(max-width:720px){
  .professional-card,
  .presidential-record-card,
  .constituency-record-card{
    grid-template-columns:minmax(0,1fr) !important;
    grid-template-areas:"photo" "identity" "result" !important;
    justify-items:center;
    gap:10px;
    padding:17px 15px;
  }
  .professional-card>.candidate-avatar,
  .presidential-record-card .candidate-photo-placeholder,
  .constituency-record-card .candidate-avatar,
  .constituency-record-card .candidate-photo-placeholder{
    grid-area:photo;
    align-self:auto;
    width:clamp(132px,36vw,148px) !important;
    height:clamp(132px,36vw,148px) !important;
    min-width:132px !important;
    margin:0 auto;
    border-radius:0 !important;
    font-size:2rem;
  }
  .professional-card>.candidate-main,
  .presidential-record-card .candidate-main,
  .constituency-record-card .candidate-main{
    grid-area:identity;
    width:100%;
    text-align:center;
  }
  .professional-card .candidate-topline,
  .professional-card .party-line,
  .professional-card .location-line{justify-content:center}
  .professional-card .candidate-list-photo{border-radius:0 !important}
}

@media(max-width:360px){
  .professional-card>.candidate-avatar,
  .presidential-record-card .candidate-photo-placeholder,
  .constituency-record-card .candidate-avatar,
  .constituency-record-card .candidate-photo-placeholder{
    width:120px;
    height:120px;
    min-width:120px;
  }
}

/* Keep candidate portraits prominent on phones. This must remain after the
   compact card rules above so Presidential and constituency cards cannot
   shrink portraits back to thumbnail size. */
@media(max-width:720px){
  .professional-card,
  .presidential-record-card,
  .constituency-record-card{
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"photo" "identity" "result";
    justify-items:center;
    gap:10px;
    padding:17px 15px;
  }
  .professional-card>.candidate-avatar,
  .presidential-record-card .candidate-photo-placeholder,
  .constituency-record-card .candidate-avatar,
  .constituency-record-card .candidate-photo-placeholder{
    grid-area:photo;
    align-self:auto;
    width:clamp(132px,36vw,148px);
    height:clamp(132px,36vw,148px);
    min-width:132px;
    margin:0 auto;
    border-radius:0 !important;
    font-size:2rem;
  }
  .professional-card>.candidate-main,
  .presidential-record-card .candidate-main,
  .constituency-record-card .candidate-main{
    grid-area:identity;
    width:100%;
    text-align:center;
  }
  .professional-card .candidate-topline,
  .professional-card .party-line,
  .professional-card .location-line{justify-content:center}
}

@media(max-width:360px){
  .professional-card>.candidate-avatar,
  .presidential-record-card .candidate-photo-placeholder,
  .constituency-record-card .candidate-avatar,
  .constituency-record-card .candidate-photo-placeholder{
    width:120px;
    height:120px;
    min-width:120px;
  }
}

/* Mobile candidate portraits: make the person the visual focus of every listing card. */
@media(max-width:720px){
  .professional-card,
  .presidential-record-card,
  .constituency-record-card{
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"photo" "identity" "result";
    justify-items:center;
    gap:10px;
    padding:17px 15px;
  }
  .professional-card>.candidate-avatar,
  .presidential-record-card .candidate-photo-placeholder,
  .constituency-record-card .candidate-avatar,
  .constituency-record-card .candidate-photo-placeholder{
    grid-area:photo;
    width:clamp(132px,36vw,148px);
    height:clamp(132px,36vw,148px);
    min-width:132px;
    margin:0 auto;
    border-radius:50%;
    font-size:2rem;
  }
  .professional-card>.candidate-main,
  .presidential-record-card .candidate-main,
  .constituency-record-card .candidate-main{
    grid-area:identity;
    width:100%;
    text-align:center;
  }
  .professional-card .candidate-topline,
  .professional-card .party-line,
  .professional-card .location-line{justify-content:center}
  .professional-card .party-mark.clean-party-label{text-align:center}
  .professional-card>.card-action{
    grid-area:result;
    justify-content:center;
    width:100%;
    min-height:38px;
    padding-top:8px;
    border-top:1px solid #e6ebf0;
  }
  .professional-card>.card-action span{display:inline}
  .presidential-card-result,
  .constituency-record-card .parliamentary-card-result{
    justify-content:center;
    align-items:center;
    text-align:center;
  }
  .presidential-card-result .candidate-total-votes,
  .parliamentary-card-result .candidate-total-votes{align-items:center}
  .presidential-details-action{justify-content:center;text-align:center}
}

@media(max-width:360px){
  .professional-card>.candidate-avatar,
  .presidential-record-card .candidate-photo-placeholder,
  .constituency-record-card .candidate-avatar,
  .constituency-record-card .candidate-photo-placeholder{
    width:120px;
    height:120px;
    min-width:120px;
  }
}

/* Final neutral overrides for components that previously used literal blue shades. */
.election-type-link{color:#5f6266}
.election-type-link:hover{background:#f0f1f2;color:#111315}
.election-type-link:focus-visible,
.parliamentary-tree-node summary:focus-visible,
.constituency-tree-link:focus-visible,
.presidential-record-card:focus-visible{outline-color:rgba(0,0,0,.20)}
.tree-node-icon{border-color:#d1d3d5;background:#eceef0;color:#15171a}
.parliamentary-tree-node summary:hover,.constituency-tree-link:hover{background:#f3f3f4}
.candidate-photo-placeholder{border-color:#d7d9dc;background:#eff0f1}
.candidate-photo-placeholder.is-photo-loading:after{border-color:rgba(0,0,0,.18);border-top-color:#15171a}
.professional-card:hover,.presidential-record-card:hover{border-color:#bfc2c5}
.performance-transition-status,.no-js-notice{border-color:#d8dadd;background:#f5f5f6;color:#15171a}
.rank-metric,.candidate-performance-top-metrics>div{background:#eceef0}
.bottom-nav a{color:#66696d}
.party-mark,.presidential-record-card .clean-party-label{border-color:#e1e2e3;background:#f2f2f3;color:#4d5054}
.performance-bottom-navigation{margin-bottom:84px}

/* Full-width candidate profile shared by all election contests. */
body:has(.candidate-detail-layout) .app-shell,
body:has(.candidate-detail-layout) .app-bar-inner{width:min(100%,1480px)}
body:has(.candidate-detail-layout) .app-shell{padding-inline:clamp(16px,3vw,42px)}
.candidate-detail-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(360px,.78fr);gap:clamp(20px,2.5vw,36px);align-items:start}
.candidate-detail-primary{min-width:0}
.candidate-detail-layout .candidate-profile-card{grid-template-columns:minmax(250px,300px) minmax(0,1fr);box-shadow:0 18px 44px rgba(0,0,0,.09)}
.candidate-detail-layout .candidate-photo-panel{min-height:440px;background:linear-gradient(145deg,#e7e8ea,#f8f8f8 72%)}
.candidate-detail-layout .candidate-photo-link{max-width:230px}
.candidate-detail-layout .candidate-detail-photo{height:315px;border-color:#d6d8da;box-shadow:0 14px 30px rgba(0,0,0,.13)}
.candidate-detail-layout .candidate-profile-content{padding:38px 40px}
.candidate-detail-layout .candidate-party-panel{background:#f5f5f5}
.candidate-detail-layout .candidate-performance-section{position:sticky;top:94px;margin-top:0;padding:22px;border:1px solid var(--line);border-radius:26px;background:#fff;box-shadow:0 16px 38px rgba(0,0,0,.08)}
.candidate-detail-layout .candidate-performance-overview .performance-overview-card{background:linear-gradient(145deg,#fff,#f4f4f5);box-shadow:none}
.candidate-detail-layout .candidate-performance-action{background:linear-gradient(135deg,#fff,#f2f2f3);border-color:#d5d7d9;box-shadow:0 8px 22px rgba(0,0,0,.06)}
@media(max-width:1050px){.candidate-detail-layout{grid-template-columns:1fr}.candidate-detail-layout .candidate-performance-section{position:static}.candidate-detail-layout .candidate-profile-card{grid-template-columns:minmax(230px,280px) minmax(0,1fr)}}
@media(max-width:700px){body:has(.candidate-detail-layout) .app-shell{padding-inline:13px}.candidate-detail-layout{gap:18px}.candidate-detail-layout .candidate-profile-card{grid-template-columns:1fr}.candidate-detail-layout .candidate-photo-panel{min-height:auto}.candidate-detail-layout .candidate-photo-link{max-width:190px}.candidate-detail-layout .candidate-detail-photo{height:240px}.candidate-detail-layout .candidate-profile-content{padding:25px 22px}.candidate-detail-layout .candidate-performance-section{padding:18px;border-radius:22px}}

.candidate-photo-link .image-zoom-notice{opacity:0;transform:translateY(5px);transition:opacity .18s ease,transform .18s ease}
.candidate-photo-link:hover .image-zoom-notice,.candidate-photo-link:focus-visible .image-zoom-notice{opacity:1;transform:translateY(0)}
.candidate-party-logo{position:relative;overflow:visible}
.party-logo-zoom{position:absolute;z-index:4;left:50%;bottom:-38px;display:inline-flex;align-items:center;gap:6px;width:max-content;padding:7px 10px;border-radius:999px;background:rgba(8,9,10,.94);color:#fff;font-size:.65rem;font-weight:850;box-shadow:0 8px 20px rgba(0,0,0,.24);opacity:0;pointer-events:none;transform:translate(-50%,5px);transition:opacity .18s ease,transform .18s ease}
.candidate-party-logo:hover .party-logo-zoom,.candidate-party-logo:focus-visible .party-logo-zoom{opacity:1;transform:translate(-50%,0)}
@media(hover:none){.candidate-photo-link .image-zoom-notice{opacity:1;transform:none}.party-logo-zoom{position:absolute;right:-8px;bottom:-8px;left:auto;width:28px;height:28px;padding:0;justify-content:center;opacity:1;transform:none}.party-logo-zoom span{display:none}}
@media(prefers-reduced-motion:reduce){.candidate-photo-link .image-zoom-notice,.party-logo-zoom{transition:none}}

/* Keep the party-logo zoom instruction visible directly beneath its image. */
.candidate-party-logo:not(.fallback){flex:0 0 78px;width:78px;height:auto;padding:0;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:7px;overflow:visible}
.candidate-party-logo:not(.fallback) .party-logo-image-frame{display:grid;place-items:center;width:62px;height:62px;padding:7px;border:1px solid #d8dadd;border-radius:16px;background:#fff}
.candidate-party-logo:not(.fallback) .party-logo-image-frame img{display:block;width:100%;height:100%;margin:0;object-fit:contain;object-position:center}
.candidate-party-logo .party-logo-zoom{position:static;display:inline-flex;width:max-content;height:auto;padding:0;border-radius:0;background:transparent;color:var(--muted);font-size:.59rem;line-height:1;box-shadow:none;opacity:1;transform:none}
.candidate-party-logo:hover .party-logo-zoom,.candidate-party-logo:focus-visible .party-logo-zoom{color:var(--primary);opacity:1;transform:none}
@media(hover:none){.candidate-party-logo .party-logo-zoom{position:static;width:max-content;height:auto;padding:0}.candidate-party-logo .party-logo-zoom span{display:inline}}

/* Purple remains the dedicated visual identity for filtering controls. */
.filter-trigger,
#active-filter-bar,
#filter-panel,
#performance-filter-toggle,
.performance-filter-panel{
  --primary:#6750a4;
  --primary-dark:#4f378b;
  --primary-strong:#3d286f;
  --primary-container:#eaddff;
  --primary-soft:#f0e8ff;
}
.filter-trigger{background:#f0e8ff;color:#4f378b}
#filter-panel .filter-heading,
.performance-filter-panel .performance-filter-heading{background:linear-gradient(135deg,#eadcff,#f8f4ff)}
#filter-panel .filter-section-title>i{background:#f0e8ff;color:#4f378b}
#filter-panel .filter-selection-summary i,
#filter-panel .geography-breadcrumb button{color:#6750a4}
#active-filter-bar>div>i{color:#6750a4}
#active-filter-bar .active-filter-chip{background:#eaddff;color:#4f378b}
#performance-filter-toggle{background:#f0e8ff;border-color:#d7c5f3;color:#4f378b}
#filter-panel .btn.primary,
.performance-filter-panel .btn.primary{background:#6750a4;color:#fff}
#filter-panel .searchable-select-input:focus,
.performance-filter-panel .searchable-select-input:focus{border-color:#6750a4;box-shadow:0 0 0 3px rgba(103,80,164,.14)}

/* Standalone election dashboard. It is intentionally not the default route. */
body:has(.dashboard-page) .app-shell,body:has(.dashboard-page) .app-bar-inner{width:100%;max-width:none}
body:has(.dashboard-page) .app-shell{padding:clamp(18px,3vw,42px)}
.dashboard-page{display:grid;gap:clamp(22px,3vw,36px)}
.dashboard-hero{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr);gap:clamp(28px,5vw,72px);align-items:center;min-height:390px;padding:clamp(34px,5vw,72px);border-radius:34px;background:radial-gradient(circle at 80% 15%,rgba(255,255,255,.10),transparent 28%),linear-gradient(125deg,#030405 0%,#111418 54%,#292d33 100%);color:#fff;box-shadow:0 26px 65px rgba(0,0,0,.20)}
.dashboard-hero:after{content:"";position:absolute;z-index:-1;right:-120px;bottom:-250px;width:560px;height:560px;border:86px solid rgba(255,255,255,.045);border-radius:50%}
.dashboard-hero-copy{max-width:780px}.dashboard-kicker{display:inline-flex;align-items:center;gap:8px;color:#ddd3f3;font-size:.67rem;font-weight:900;letter-spacing:.14em}.dashboard-kicker i{color:#a98bdc}.dashboard-hero h1{max-width:760px;margin:18px 0 15px;font-size:clamp(2.35rem,5vw,4.6rem);line-height:.98;letter-spacing:-.055em}.dashboard-hero-copy>p{max-width:650px;margin:0;color:rgba(255,255,255,.72);font-size:clamp(.92rem,1.4vw,1.08rem);line-height:1.7}
.dashboard-hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:13px;margin-top:30px}.dashboard-primary-action{min-height:54px;padding-inline:22px;border-radius:16px;background:#6750a4;color:#fff;box-shadow:0 10px 24px rgba(0,0,0,.24)}.dashboard-primary-action:hover{background:#765db5}.dashboard-secondary-action{display:inline-flex;align-items:center;gap:8px;min-height:52px;padding:0 17px;border:1px solid rgba(255,255,255,.18);border-radius:16px;color:#fff;font-size:.78rem;font-weight:850;text-decoration:none;background:rgba(255,255,255,.055)}
.dashboard-status-card{position:relative;z-index:1;padding:26px;border:1px solid rgba(255,255,255,.14);border-radius:24px;background:rgba(0,0,0,.26);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);backdrop-filter:blur(16px)}.dashboard-status-icon{display:grid;place-items:center;width:54px;height:54px;margin-bottom:28px;border-radius:17px;background:#6750a4;color:#fff;font-size:1.35rem}.dashboard-status-card>span{display:block;color:#c8cbd0;font-size:.61rem;font-weight:900;letter-spacing:.13em}.dashboard-status-card>strong{display:block;margin-top:7px;font-size:1.35rem}.dashboard-status-card>p{margin:9px 0 22px;color:rgba(255,255,255,.62);font-size:.78rem;line-height:1.55}.dashboard-status-card>div:last-child{display:flex;align-items:center;gap:7px;padding-top:16px;border-top:1px solid rgba(255,255,255,.11);color:#dfe4e2;font-size:.7rem;font-weight:750}.dashboard-status-card>div:last-child i{color:#4fd18b;font-size:.5rem}
.dashboard-coverage{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.dashboard-stat{display:flex;align-items:center;gap:15px;min-width:0;padding:19px 20px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:var(--shadow-soft)}.dashboard-stat-icon{flex:0 0 auto;display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:#ece6f7;color:#5b428e;font-size:1.05rem}.dashboard-stat>div{min-width:0}.dashboard-stat strong,.dashboard-stat span{display:block}.dashboard-stat strong{font-size:1.35rem;line-height:1}.dashboard-stat>div>span{margin-top:5px;color:var(--muted);font-size:.68rem;font-weight:700}
.dashboard-section{scroll-margin-top:94px}.dashboard-section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:16px}.dashboard-section-heading>div>span,.dashboard-guide-copy>span{color:#6750a4;font-size:.64rem;font-weight:950;letter-spacing:.13em}.dashboard-section-heading h2,.dashboard-guide h2{margin:5px 0 0;font-size:clamp(1.45rem,2.5vw,2rem);letter-spacing:-.035em}.dashboard-section-heading p,.dashboard-guide-copy p{max-width:650px;margin:7px 0 0;color:var(--muted);font-size:.8rem;line-height:1.55}.dashboard-section-count{flex:0 0 auto;padding:8px 11px;border-radius:999px;background:#ece6f7;color:#5b428e;font-size:.68rem;font-weight:850}
.dashboard-contest-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.dashboard-contest-card{position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:315px;padding:25px;border:1px solid var(--line);border-radius:25px;background:#fff;color:inherit;text-decoration:none;box-shadow:var(--shadow-soft);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.dashboard-contest-card:before{content:"";position:absolute;top:0;right:0;left:0;height:4px;background:#17191c}.dashboard-contest-card:hover{transform:translateY(-4px);border-color:#c6b6e4;box-shadow:0 20px 42px rgba(0,0,0,.11)}.dashboard-contest-topline{display:flex;align-items:center;justify-content:space-between;margin-bottom:33px}.dashboard-contest-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:#ece6f7;color:#5b428e;font-size:1.2rem}.dashboard-contest-arrow{color:#8a8e93;font-size:1.1rem}.dashboard-contest-eyebrow{color:#6750a4;font-size:.61rem;font-weight:900;letter-spacing:.11em}.dashboard-contest-card h3{margin:8px 0 9px;font-size:1.35rem;letter-spacing:-.025em}.dashboard-contest-card p{margin:0;color:var(--muted);font-size:.78rem;line-height:1.6}.dashboard-contest-action{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:19px;border-top:1px solid #ececef;color:#17191c;font-size:.74rem;font-weight:900}.dashboard-contest-action i{color:#6750a4}
.dashboard-guide{display:grid;grid-template-columns:minmax(280px,.75fr) minmax(0,1.25fr);gap:clamp(26px,5vw,72px);align-items:center;padding:clamp(26px,4vw,46px);border:1px solid var(--line);border-radius:28px;background:linear-gradient(135deg,#fff,#f3f3f4);box-shadow:var(--shadow-soft)}.dashboard-steps{display:grid;gap:10px;margin:0;padding:0;list-style:none}.dashboard-steps li{display:grid;grid-template-columns:42px minmax(0,1fr);gap:13px;align-items:center;padding:13px;border:1px solid #e2e3e5;border-radius:16px;background:#fff}.dashboard-steps li>span{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#17191c;color:#fff;font-weight:900}.dashboard-steps strong,.dashboard-steps small{display:block}.dashboard-steps strong{font-size:.82rem}.dashboard-steps small{margin-top:4px;color:var(--muted);font-size:.68rem;line-height:1.4}
@media(max-width:980px){.dashboard-hero{grid-template-columns:1fr;min-height:0}.dashboard-status-card{max-width:520px}.dashboard-coverage{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-contest-grid{grid-template-columns:1fr}.dashboard-contest-card{min-height:260px}.dashboard-guide{grid-template-columns:1fr}}
@media(max-width:560px){body:has(.dashboard-page) .app-shell{padding:14px 13px 34px}.dashboard-page{gap:22px}.dashboard-hero{padding:30px 22px;border-radius:26px}.dashboard-hero h1{font-size:2.45rem}.dashboard-hero-actions{align-items:stretch;flex-direction:column}.dashboard-primary-action,.dashboard-secondary-action{width:100%;justify-content:center}.dashboard-status-card{padding:21px}.dashboard-coverage{grid-template-columns:1fr}.dashboard-section-heading{align-items:flex-start}.dashboard-section-count{display:none}.dashboard-contest-card{padding:21px;border-radius:21px}.dashboard-guide{padding:23px 18px;border-radius:23px}}

/* Structured Election Dashboard */
.election-dashboard{gap:22px}
.election-dashboard-header{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:30px;min-height:210px;padding:clamp(30px,4vw,52px);border-radius:30px;background:radial-gradient(circle at 88% 5%,rgba(255,255,255,.11),transparent 28%),linear-gradient(120deg,#020304,#15181c 60%,#2a2e34);color:#fff;box-shadow:0 22px 54px rgba(0,0,0,.19)}
.election-dashboard-header:after{content:"";position:absolute;right:-70px;bottom:-145px;width:340px;height:340px;border:54px solid rgba(255,255,255,.045);border-radius:50%}.election-dashboard-header>div{position:relative;z-index:1}.election-dashboard-eyebrow{display:inline-flex;align-items:center;gap:8px;color:#d7caed;font-size:.65rem;font-weight:900;letter-spacing:.14em}.election-dashboard-eyebrow i{color:#a88bd8}.election-dashboard-header h1{margin:11px 0 8px;font-size:clamp(2.25rem,4vw,3.8rem);line-height:1;letter-spacing:-.055em}.election-dashboard-header p{margin:0;color:rgba(255,255,255,.7);font-size:.9rem}.election-dashboard-status{flex:0 0 auto;min-width:240px;padding:18px 20px;border:1px solid rgba(255,255,255,.14);border-radius:18px;background:rgba(0,0,0,.25)}.election-dashboard-status span,.election-dashboard-status small{display:block}.election-dashboard-status span{font-size:.74rem;font-weight:850}.election-dashboard-status span i{margin-right:7px;color:#4dd38a;font-size:.52rem}.election-dashboard-status small{margin-top:6px;color:rgba(255,255,255,.57);font-size:.64rem}
.election-dashboard-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.election-dashboard-metrics article{display:grid;grid-template-columns:48px minmax(0,1fr);gap:14px;align-items:center;padding:18px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 7px 20px rgba(0,0,0,.055)}.metric-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:#eee8f8;color:#5d4391;font-size:1.05rem}.election-dashboard-metrics article div{min-width:0}.election-dashboard-metrics small,.election-dashboard-metrics strong,.election-dashboard-metrics article div span{display:block}.election-dashboard-metrics small{color:var(--muted);font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.election-dashboard-metrics strong{margin-top:4px;font-size:1.5rem;line-height:1}.election-dashboard-metrics article div span{margin-top:5px;color:#8a8d91;font-size:.62rem}
.election-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(310px,.65fr);gap:18px;align-items:start}.dashboard-panel{border:1px solid var(--line);border-radius:24px;background:#fff;box-shadow:0 9px 28px rgba(0,0,0,.065)}.election-contests-panel{padding:24px}.dashboard-panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.dashboard-panel-heading span{color:#6750a4;font-size:.61rem;font-weight:950;letter-spacing:.11em}.dashboard-panel-heading h2{margin:5px 0 0;font-size:1.28rem;letter-spacing:-.025em}.dashboard-panel-heading p{margin:5px 0 0;color:var(--muted);font-size:.72rem}.dashboard-panel-heading .panel-count{padding:7px 10px;border-radius:999px;background:#eee8f8;color:#5d4391;letter-spacing:0;white-space:nowrap}
.election-dashboard-contests{display:grid;gap:10px}.election-dashboard-contest{display:grid;grid-template-columns:54px minmax(0,1fr) auto;gap:15px;align-items:center;min-height:116px;padding:16px 18px;border:1px solid #e1e2e4;border-radius:18px;background:#fff;color:inherit;text-decoration:none;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.election-dashboard-contest:hover{transform:translateX(3px);border-color:#c8b9e2;box-shadow:0 10px 24px rgba(0,0,0,.075)}.contest-dashboard-icon{display:grid;place-items:center;width:54px;height:54px;border-radius:16px;background:#eee8f8;color:#5d4391;font-size:1.2rem}.contest-dashboard-copy{min-width:0}.contest-dashboard-copy small,.contest-dashboard-copy strong,.contest-dashboard-copy>span{display:block}.contest-dashboard-copy small{color:#6750a4;font-size:.59rem;font-weight:900;text-transform:uppercase;letter-spacing:.07em}.contest-dashboard-copy strong{margin-top:4px;font-size:1rem}.contest-dashboard-copy>span{margin-top:5px;color:var(--muted);font-size:.69rem;line-height:1.4}.contest-dashboard-action{display:inline-flex;align-items:center;gap:8px;color:#17191c;font-size:.69rem;font-weight:900;white-space:nowrap}.contest-dashboard-action i{color:#6750a4}
.election-dashboard-sidebar{display:grid;gap:14px}.quick-access-panel,.coverage-path-panel{padding:21px}.dashboard-quick-links{display:grid;gap:8px}.dashboard-quick-links a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:54px;padding:11px 13px;border:1px solid #e4e5e6;border-radius:14px;color:inherit;text-decoration:none;background:#fafafa}.dashboard-quick-links a:hover{border-color:#cbbce3;background:#f7f4fb}.dashboard-quick-links a>span{display:flex;align-items:center;gap:10px}.dashboard-quick-links a>span i{display:grid;place-items:center;width:31px;height:31px;border-radius:9px;background:#eee8f8;color:#5d4391}.dashboard-quick-links b{font-size:.72rem}.dashboard-quick-links>a>i{color:#8b8e92;font-size:.72rem}.coverage-path{display:flex;align-items:center;flex-wrap:wrap;gap:7px}.coverage-path span{padding:6px 8px;border-radius:8px;background:#eee8f8;color:#513b7c;font-size:.61rem;font-weight:850}.coverage-path i{color:#999ca0;font-size:.58rem}.coverage-path-panel>p{margin:14px 0 0;color:var(--muted);font-size:.68rem;line-height:1.55}
.election-dashboard-footer-card{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:15px;align-items:center;padding:19px 22px;border:1px solid #dfe0e2;border-radius:20px;background:linear-gradient(135deg,#fff,#f2f2f3)}.footer-card-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:#17191c;color:#fff;font-size:1.15rem}.election-dashboard-footer-card strong,.election-dashboard-footer-card p{display:block}.election-dashboard-footer-card strong{font-size:.82rem}.election-dashboard-footer-card p{margin:4px 0 0;color:var(--muted);font-size:.67rem}.election-dashboard-footer-card>a{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 15px;border-radius:12px;background:#6750a4;color:#fff;font-size:.7rem;font-weight:850;text-decoration:none}
@media(max-width:1050px){.election-dashboard-grid{grid-template-columns:1fr}.election-dashboard-sidebar{grid-template-columns:repeat(2,minmax(0,1fr))}.election-dashboard-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.election-dashboard-header{align-items:flex-start;flex-direction:column;padding:29px 23px;border-radius:25px}.election-dashboard-status{width:100%;min-width:0}.election-dashboard-metrics{grid-template-columns:1fr 1fr}.election-dashboard-sidebar{grid-template-columns:1fr}.election-dashboard-contest{grid-template-columns:48px minmax(0,1fr);padding:15px}.contest-dashboard-icon{width:48px;height:48px}.contest-dashboard-action{grid-column:2}.election-dashboard-footer-card{grid-template-columns:42px minmax(0,1fr)}.election-dashboard-footer-card>a{grid-column:1/-1;justify-content:center}.footer-card-icon{width:42px;height:42px}}
@media(max-width:450px){.election-dashboard-metrics{grid-template-columns:1fr}.election-contests-panel{padding:18px}.dashboard-panel-heading .panel-count{display:none}.contest-dashboard-copy>span{display:none}}

/* Calm civic-green election headers: official, welcoming and easy to read. */
.page-intro,
.presidential-intro{
  background:
    linear-gradient(105deg,rgba(5,56,50,.2),transparent 48%,rgba(255,255,255,.05) 72%,transparent),
    radial-gradient(circle at 84% 8%,rgba(171,229,211,.22),transparent 31%),
    linear-gradient(125deg,#0b4a43 0%,#126052 34%,#187461 68%,#21846b 100%);
  box-shadow:0 20px 48px rgba(10,77,68,.2),inset 0 1px 0 rgba(255,255,255,.12);
}
.page-intro:after,
.presidential-intro:after{
  content:"";
  position:absolute;
  z-index:0;
  top:-76px;
  right:-42px;
  width:250px;
  height:250px;
  border:0;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.10) 0%,rgba(255,255,255,.035) 38%,transparent 70%);
  opacity:.8;
  pointer-events:none;
}
.page-intro>*{position:relative;z-index:1}
.page-intro .section-kicker,
.presidential-intro .section-kicker{color:#d9f3e9}
.page-intro .intro-copy h1,
.presidential-intro h1{text-shadow:0 2px 12px rgba(0,0,0,.28)}
.page-intro .intro-copy p,
.page-intro .intro-stat span,
.presidential-intro p{color:rgba(255,255,255,.80)}
.page-intro .intro-icon,
.presidential-intro .intro-icon{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.07);box-shadow:inset 0 1px 0 rgba(255,255,255,.12)}
.presidential-intro-stats{background:rgba(4,53,47,.34)}
.presidential-intro-stats span{color:#d9f3e9}
.presidential-intro-stats small{color:rgba(255,255,255,.72)}

/* Application-wide civic-green theme. Party identities and chart palettes remain unchanged. */
:root{
  --primary:#166858;
  --primary-dark:#0c4b42;
  --primary-strong:#073b35;
  --primary-container:#dcefe9;
  --primary-soft:#e8f4f0;
  --surface:#f4f7f6;
  --surface-2:#eaf1ef;
  --surface-card:#fff;
  --text:#17302b;
  --muted:#62736f;
  --line:#d8e3e0;
  --outline:#7f928d;
  --shadow:0 14px 40px rgba(9,73,64,.1);
  --shadow-soft:0 7px 20px rgba(9,73,64,.07);
}
.brand-mark,
.professional-hero,
.presidential-card-status{background:linear-gradient(135deg,#0b4a43,#1d7966)}
.professional-hero .profile-photo.fallback{background:#e8f4f0;color:#0c4b42}
.hero-content>p,.hero-meta{color:#d8dade}
.filter-heading,.action-card{background:linear-gradient(135deg,#e7f3ef,#f8fbfa)}
.search-control:focus-within,.searchable-select-input:focus{border-color:#166858;box-shadow:0 0 0 3px rgba(22,104,88,.13)}
.searchable-select-option:hover,.searchable-select-option.active,.searchable-select-option[aria-selected="true"]{background:#e3f1ed;color:#0c4b42}
.presidential-record-card .contest-pill,.station-number,.icon-button.primary-soft{background:#e8f4f0;color:#0c4b42;border-color:#cfe3dd}
.candidate-avatar{background:linear-gradient(145deg,#e8f4f0,#d8ebe5);color:#0c4b42;border-color:#cbded9}
.performance-overview-card:after{border-color:rgba(22,104,88,.055)}
.candidate-photo-placeholder.is-photo-loading:after{border-color:rgba(22,104,88,.2);border-top-color:#166858}
.back-to-top{box-shadow:0 10px 26px rgba(9,73,64,.25)}
.back-to-top:hover{box-shadow:0 14px 30px rgba(9,73,64,.3)}
.back-to-top:focus-visible{outline-color:rgba(22,104,88,.26)}

.performance-bottom-navigation{display:flex;justify-content:center;margin:22px 0 8px;padding-top:18px;border-top:1px solid var(--line)}
.performance-bottom-back{width:min(100%,420px);min-height:52px;border-radius:16px;box-shadow:0 10px 24px rgba(0,0,0,.16)}
.performance-bottom-back:hover{background:#073b35;transform:translateY(-1px)}
@media(max-width:560px){.performance-bottom-navigation{margin-top:18px}.performance-bottom-back{width:100%;min-height:54px}}

/* Polling Station card alignment: details at the far left, votes at the far right. */
.polling-station-performance-card{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:"station votes";
  width:100%;
  align-items:center;
  column-gap:24px;
}
.polling-station-performance-card .polling-station-left{
  grid-area:station;
  width:100%;
  min-width:0;
  margin:0;
  padding:0;
  display:block;
  justify-self:stretch;
  text-align:left;
}
.polling-station-performance-card .station-card-copy{
  width:100%;
  min-width:0;
  margin:0;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  gap:.2rem;
  text-align:left;
}
.polling-station-performance-card .station-card-copy > *{
  margin-left:0;
  margin-right:0;
  text-align:left;
}
.polling-station-performance-card .polling-station-votes{
  grid-area:votes;
  justify-self:end;
  align-self:center;
}

/* Wider results home and Presidential overview; detail/performance pages retain their width. */
body:has(.presidential-results-layout) .app-shell,
body:has(.presidential-results-layout) .app-bar-inner,
body:has(.constituency-results-layout) .app-shell,
body:has(.constituency-results-layout) .app-bar-inner,
body:has(.search-results-layout) .app-shell,
body:has(.search-results-layout) .app-bar-inner,
body:has(.local-government-intro) .app-shell,
body:has(.local-government-intro) .app-bar-inner,
body:has(.region-listing-page) .app-shell,
body:has(.region-listing-page) .app-bar-inner{width:min(100%,1480px)}
body:has(.presidential-results-layout) .app-shell,
body:has(.constituency-results-layout) .app-shell,
body:has(.search-results-layout) .app-shell,
body:has(.local-government-intro) .app-shell,
body:has(.region-listing-page) .app-shell{padding-inline:clamp(16px,3vw,42px)}

.election-type-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin-top:14px;padding:4px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 2px 9px rgba(20,43,69,.035)}
.election-intro .intro-copy h1{font-size:clamp(1.2rem,2.2vw,1.65rem)}
.election-type-link{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;min-height:46px;padding:8px 14px;border-radius:11px;color:#5e6f80;font-size:.78rem;font-weight:750;text-align:center;text-decoration:none;transition:background-color .18s,color .18s}
.election-type-link i{font-size:.9rem}.election-type-link:hover{background:#f4f7fa;color:var(--primary)}.election-type-link.active{background:var(--primary-soft);color:var(--primary);font-weight:850}.election-type-link.active:after{content:"";position:absolute;right:18px;bottom:5px;left:18px;height:2px;border-radius:2px;background:var(--primary)}
.election-type-link:focus-visible{outline:3px solid rgba(20,79,128,.2);outline-offset:2px}.election-label-short{display:none}
.parliamentary-tree-heading{align-items:flex-end}.parliamentary-tree-heading p{max-width:680px;margin:5px 0 0;color:var(--muted);font-size:.76rem}.parliamentary-tree{display:grid;gap:12px;margin-top:16px}.parliamentary-tree-node{overflow:hidden;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 3px 12px rgba(20,43,69,.035)}.parliamentary-tree-node summary,.constituency-tree-link{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:13px;align-items:center;min-height:68px;padding:10px 16px;color:inherit;text-decoration:none}.parliamentary-tree-node summary{cursor:pointer;list-style:none}.parliamentary-tree-node summary::-webkit-details-marker{display:none}.parliamentary-tree-node summary:hover,.constituency-tree-link:hover{background:#f7f9fb}.parliamentary-tree-node summary:focus-visible,.constituency-tree-link:focus-visible{outline:3px solid rgba(20,79,128,.2);outline-offset:-3px}.tree-node-icon{display:grid;place-items:center;width:42px;height:42px;border:1px solid #c8d9ea;border-radius:13px;background:var(--primary-soft);color:var(--primary)}.tree-node-copy{min-width:0}.tree-node-copy strong,.tree-node-copy small{display:block}.tree-node-copy strong{font-size:.9rem;line-height:1.3}.tree-node-copy small{margin-top:3px;color:var(--muted);font-size:.68rem}.tree-chevron{color:var(--primary);transition:transform .18s ease}.parliamentary-tree-node[open]>summary .tree-chevron{transform:rotate(180deg)}.tree-children{padding:0 12px 12px 28px;border-top:1px solid #edf1f5}.district-node{margin-top:10px;border-radius:16px;box-shadow:none}.district-node summary{min-height:62px}.constituency-list{display:grid;gap:7px;padding-top:9px}.constituency-tree-link{min-height:58px;padding:7px 11px;border:1px solid #e5eaf0;border-radius:13px}.constituency-tree-link>.bi-arrow-right{color:var(--primary)}

.presidential-results-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(340px,1fr);grid-template-areas:"candidates chart";gap:clamp(20px,2.5vw,36px);align-items:start}
.constituency-results-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(340px,1fr);grid-template-areas:"candidates chart";gap:clamp(20px,2.5vw,36px);align-items:start}.constituency-candidate-column{grid-area:candidates;min-width:0}.constituency-candidate-column .professional-list{grid-template-columns:1fr;gap:12px}.constituency-results-layout .parliamentary-overview-card{grid-area:chart;position:sticky;top:94px;min-width:0;margin-top:28px}.constituency-results-layout .presidential-chart-layout{grid-template-columns:1fr;gap:18px}.constituency-results-layout .presidential-chart-canvas{height:320px}.constituency-results-layout .presidential-chart-legend{grid-template-columns:1fr;max-height:420px}
.presidential-candidate-column{grid-area:candidates;min-width:0}.presidential-candidate-column .professional-list{grid-template-columns:1fr;gap:12px}
.presidential-results-layout .presidential-overview-card{grid-area:chart;position:sticky;top:94px;min-width:0;margin-top:28px}
.presidential-results-layout .presidential-chart-layout{grid-template-columns:1fr;gap:18px}
.presidential-results-layout .presidential-chart-canvas{height:320px}
.presidential-results-layout .presidential-chart-legend{grid-template-columns:1fr;max-height:420px}
.presidential-record-card{grid-template-columns:72px minmax(0,1fr) minmax(155px,180px);gap:18px;align-items:center;padding:18px 20px;border:1px solid #dfe5eb;border-radius:18px;box-shadow:0 3px 12px rgba(20,43,69,.035);transform:none}
.constituency-record-card{grid-template-columns:62px minmax(0,1fr) minmax(155px,180px);gap:18px;align-items:center;padding:18px 20px}.constituency-record-card:hover{transform:none}.parliamentary-card-result{min-width:155px;align-self:stretch;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;padding-left:18px;border-left:1px solid #e6ebf0;text-align:right}
.constituency-record-card .party-mark.clean-party-label{min-height:32px;padding:7px 11px;font-size:.86rem;line-height:1.4;font-weight:900}
.constituency-record-card .location-line{font-size:.66rem;line-height:1.35}
.polling-station-help{display:block;margin:2px 0 6px;color:var(--muted);font-size:.66rem;line-height:1.35}
.presidential-record-card:hover{transform:none;border-color:#b7c5d3;box-shadow:0 6px 16px rgba(20,43,69,.065)}
.presidential-record-card:focus-visible{outline:3px solid rgba(20,79,128,.2);outline-offset:2px;border-color:var(--primary)}
.candidate-photo-placeholder{position:relative;overflow:hidden;border:1px solid #d7e0e8;border-radius:50%;background:#eef2f6;color:var(--primary-strong);box-shadow:none}
.presidential-record-card .candidate-photo-placeholder{width:62px;height:62px}
.candidate-avatar-initials{display:grid;place-items:center;width:100%;height:100%}.candidate-list-photo{position:absolute;inset:0;display:block;width:100%;height:100%;border-radius:50%;object-fit:contain;object-position:center;opacity:0}.candidate-list-photo.is-loaded{opacity:1}
.candidate-photo-placeholder.is-photo-loading:after{content:"";position:absolute;z-index:3;top:50%;left:50%;width:18px;height:18px;margin:-11px 0 0 -11px;border:3px solid rgba(18,63,115,.2);border-top-color:var(--primary);border-radius:50%;background:rgba(255,255,255,.72);box-shadow:0 0 0 4px rgba(255,255,255,.72);animation:spin .7s linear infinite;pointer-events:none}
.presidential-record-card .candidate-main h3{font-size:1.08rem;line-height:1.3;overflow-wrap:anywhere}
.presidential-record-card .party-line{line-height:1.45}.presidential-record-card .clean-party-label{white-space:normal}
.presidential-card-result{min-width:155px;align-self:stretch;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;padding-left:18px;border-left:1px solid #e6ebf0;text-align:right}
.presidential-card-result .candidate-total-votes{display:flex;flex-direction:column;align-items:flex-end;gap:3px;max-width:100%;margin:0;padding:0;border:0;color:var(--muted);font-size:.64rem;letter-spacing:.07em;text-transform:uppercase}
.presidential-card-result .candidate-total-votes span{font-weight:800}.presidential-card-result .candidate-total-votes strong{color:var(--text);font-size:1.28rem;font-weight:900;line-height:1.15;letter-spacing:0;font-variant-numeric:tabular-nums;text-transform:none}
.presidential-details-action{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px;min-height:40px;margin-top:7px;color:var(--primary);font-size:.7rem;font-weight:850;line-height:1.3}.presidential-details-action i{flex:0 0 auto;font-size:.85rem;transition:transform .18s ease}.presidential-record-card:hover .presidential-details-action i{transform:translateX(2px)}
.party-line:has(.clean-party-label){display:block;width:100%}.party-mark.clean-party-label{display:inline-block;width:auto;max-width:100%;height:auto;min-height:30px;padding:6px 10px;line-height:1.35;text-align:left;white-space:nowrap;overflow-wrap:normal;font-size:.84rem;font-weight:900;letter-spacing:-.005em}

.presidential-overview-card{margin-top:18px;padding:22px 24px;border:1px solid var(--line,#dce4ee);border-radius:24px;background:#fff;box-shadow:var(--shadow-soft,0 8px 24px rgba(20,43,69,.06))}
.presidential-overview-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}
.presidential-overview-heading h2{margin:0;font-size:1.25rem;letter-spacing:-.02em}.presidential-overview-heading p{margin:6px 0 0;color:var(--muted);font-size:.8rem}
.presidential-chart-loading{display:flex;align-items:center;justify-content:center;gap:8px;min-height:360px;color:var(--muted);font-size:.78rem}.presidential-chart-loading .spinner{margin:0}.presidential-overview-card:not(.chart-ready) .presidential-chart-layout{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.chart-ready .presidential-chart-loading{display:none}.chart-unavailable .presidential-chart-loading{min-height:120px}.chart-unavailable .presidential-chart-loading .spinner{display:none}.chart-unavailable .presidential-chart-loading span:last-child{font-size:0}.chart-unavailable .presidential-chart-loading span:last-child:after{content:"Presidential results overview is currently unavailable.";font-size:.78rem}
.overview-badge{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;padding:8px 11px;border-radius:999px;background:var(--primary-soft,#edf3fb);color:var(--primary);font-size:.7rem;font-weight:850}

/* Prominent page-level return navigation. */
.page-back-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 15px;border:1px solid #cbd4d1;border-radius:9px;background:#fff;color:#172f2a;font-size:.75rem;font-weight:850;line-height:1;text-decoration:none;box-shadow:0 4px 12px rgba(20,54,47,.08)}
.page-back-button:hover,.page-back-button:focus-visible{border-color:#172f2a;background:#172f2a;color:#fff}
.page-back-button i{font-size:.9rem}
.summary-library-hero>.summary-back-link{position:relative;z-index:2;width:max-content;color:#172f2a;background:#fff}
@media(max-width:560px){.page-back-button{width:100%}}
.presidential-chart-layout{display:grid;grid-template-columns:minmax(300px,.85fr) minmax(340px,1.15fr);gap:28px;align-items:center}
.presidential-chart-canvas{position:relative;width:100%;height:360px;min-width:0}
.presidential-chart-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;max-height:380px;overflow:auto;padding-right:4px}
.presidential-legend-item{display:grid;grid-template-columns:12px minmax(0,1fr);gap:9px;align-items:start;padding:10px;border:1px solid #e5eaf0;border-radius:13px;background:#fbfcfe}
.presidential-legend-swatch{width:12px;height:12px;margin-top:3px;border-radius:4px;background:var(--legend-colour)}
.presidential-legend-copy{min-width:0}.presidential-legend-copy strong,.presidential-legend-copy small{display:block}.presidential-legend-copy strong{font-size:.75rem;line-height:1.35;overflow-wrap:anywhere}.presidential-legend-copy small{margin-top:3px;color:var(--muted);font-size:.66rem;font-variant-numeric:tabular-nums}
.presidential-chart-fallback{margin-top:14px;padding:14px;border-radius:14px;background:#f7f9fb}.presidential-chart-fallback h3{margin:0 0 8px;font-size:.85rem}.presidential-chart-fallback ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 16px;margin:0;padding:0;list-style:none}.presidential-chart-fallback li{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:.7rem}.presidential-chart-fallback strong{color:var(--text);text-align:right;white-space:nowrap}.chart-ready .presidential-chart-fallback{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.presidential-chart-empty{display:flex;align-items:center;justify-content:center;gap:10px;min-height:150px;border-radius:18px;background:#f7f9fb;color:var(--muted);text-align:center}.presidential-chart-empty i{color:var(--primary);font-size:1.3rem}
@media(max-width:1080px){.presidential-results-layout{grid-template-columns:minmax(0,1.5fr) minmax(310px,1fr);gap:20px}.presidential-results-layout .presidential-chart-canvas{height:280px}}
@media(max-width:860px){.presidential-results-layout,.constituency-results-layout{grid-template-columns:1fr;grid-template-areas:"chart" "candidates";gap:0}.presidential-results-layout .presidential-overview-card,.constituency-results-layout .parliamentary-overview-card{position:static;margin-top:18px}.presidential-results-layout .presidential-chart-layout,.constituency-results-layout .presidential-chart-layout{grid-template-columns:minmax(260px,.8fr) minmax(300px,1.2fr)}.presidential-results-layout .presidential-chart-legend,.constituency-results-layout .presidential-chart-legend{max-height:320px}}
@media(max-width:720px){body:has(.presidential-results-layout) .app-shell,body:has(.constituency-results-layout) .app-shell,body:has(.local-government-intro) .app-shell,body:has(.region-listing-page) .app-shell{padding-inline:13px}.constituency-results-layout{grid-template-areas:"candidates" "chart"}.presidential-overview-card{padding:18px 16px}.presidential-overview-heading{flex-direction:column;gap:10px}.presidential-results-layout .presidential-chart-layout,.constituency-results-layout .presidential-chart-layout{grid-template-columns:1fr;gap:18px}.presidential-chart-canvas{height:280px}.presidential-chart-loading{min-height:280px}.presidential-chart-legend{grid-template-columns:1fr;max-height:none}.presidential-chart-fallback ul{grid-template-columns:1fr}}
@media(max-width:520px){.election-type-nav{gap:2px;margin-top:11px;padding:3px;border-radius:13px}.election-type-link{gap:5px;min-height:44px;padding:7px 5px;font-size:.67rem}.election-type-link i{font-size:.8rem}.election-type-link.active:after{right:10px;left:10px}.election-label-full{display:none}.election-label-short{display:inline}}
@media(max-width:520px){.parliamentary-tree-heading{align-items:flex-start}.parliamentary-tree-node summary,.constituency-tree-link{grid-template-columns:42px minmax(0,1fr) auto;padding-inline:11px}.tree-node-icon{width:38px;height:38px}.tree-children{padding-right:8px;padding-left:12px}}
@media(max-width:620px){.presidential-record-card{grid-template-columns:56px minmax(0,1fr);grid-template-areas:"photo identity" "result result";gap:13px 14px;padding:16px}.presidential-record-card .candidate-photo-placeholder{grid-area:photo;align-self:start;width:52px;height:52px}.presidential-record-card .candidate-main{grid-area:identity;align-self:start}.presidential-card-result{grid-area:result;min-width:0;flex-direction:row;align-items:flex-end;justify-content:space-between;gap:16px;padding:13px 0 0;border-top:1px solid #e6ebf0;border-left:0;text-align:left}.presidential-card-result .candidate-total-votes{align-items:flex-start}.presidential-details-action{margin-top:0;text-align:right}}
@media(max-width:620px){.constituency-record-card{grid-template-columns:52px minmax(0,1fr);grid-template-areas:"photo identity" "result result";gap:13px 14px;padding:16px}.constituency-record-card .candidate-avatar{grid-area:photo}.constituency-record-card .candidate-main{grid-area:identity}.constituency-record-card .parliamentary-card-result{grid-area:result;min-width:0;flex-direction:row;align-items:flex-end;justify-content:space-between;gap:16px;padding:13px 0 0;border-top:1px solid #e6ebf0;border-left:0;text-align:left}.parliamentary-card-result .candidate-total-votes{align-items:flex-start}}
@media(max-width:620px){.constituency-record-card .location-line{font-size:.61rem}}
@media(max-width:620px){.party-mark.clean-party-label{min-height:28px;padding:5px 8px;font-size:.76rem}.constituency-record-card .party-mark.clean-party-label{font-size:.78rem}}
@media(max-width:390px){.party-mark.clean-party-label{white-space:normal;overflow-wrap:anywhere}}
@media(max-width:480px){.presidential-chart-canvas{height:240px}.presidential-chart-legend{grid-template-columns:1fr}.presidential-legend-item{padding:9px}.overview-badge{align-self:flex-start}}
@media(prefers-reduced-motion:reduce){.presidential-details-action i{transition:none}.presidential-record-card:hover .presidential-details-action i{transform:none}}
@media(max-width:560px){
  .polling-station-performance-card{
    grid-template-columns:minmax(0,1fr) auto;
    grid-template-areas:"station votes";
    column-gap:12px;
  }
}

/* Final mobile layout: readable pages, candidate lists first and charts second. */
@media(max-width:720px){
  html,body{max-width:100%;overflow-x:hidden}
  .app-shell,.app-bar-inner{width:100%;max-width:100%}
  body:has(.presidential-results-layout) .app-shell,
  body:has(.constituency-results-layout) .app-shell,
  body:has(.search-results-layout) .app-shell,
  body:has(.candidate-detail-layout) .app-shell,
  body:has(.local-government-intro) .app-shell,
  body:has(.region-listing-page) .app-shell{padding-inline:12px}
  .page-intro,.election-intro,.controls-card,.candidate-detail-layout,
  .candidate-performance-page,.dashboard-page{min-width:0;max-width:100%}
  .control-row{grid-template-columns:minmax(0,1fr)}
  .filter-control,.candidate-search-wrap,.sort-control,.search-control{width:100%;min-width:0}
  .search-control input{min-width:0}
  .presidential-results-layout,.constituency-results-layout{
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"candidates" "chart";
    gap:18px;
  }
  .presidential-candidate-column,.constituency-candidate-column{grid-area:candidates;min-width:0}
  .presidential-results-layout .presidential-overview-card,
  .constituency-results-layout .presidential-overview-card,
  .constituency-results-layout .parliamentary-overview-card{
    grid-area:chart;position:static;top:auto;width:100%;min-width:0;margin-top:0;
  }
  .presidential-overview-card{padding:17px 14px;border-radius:19px}
  .presidential-overview-heading{flex-direction:column;gap:9px;margin-bottom:14px}
  .presidential-chart-layout,
  .presidential-results-layout .presidential-chart-layout,
  .constituency-results-layout .presidential-chart-layout{grid-template-columns:minmax(0,1fr);gap:16px}
  .presidential-chart-canvas,
  .presidential-results-layout .presidential-chart-canvas,
  .constituency-results-layout .presidential-chart-canvas{height:250px;min-width:0}
  .presidential-chart-legend,
  .presidential-results-layout .presidential-chart-legend,
  .constituency-results-layout .presidential-chart-legend{grid-template-columns:1fr;max-height:none;overflow:visible;padding-right:0}
  .presidential-record-card,.constituency-record-card{
    grid-template-columns:54px minmax(0,1fr);
    grid-template-areas:"photo identity" "result result";
    gap:12px 13px;padding:14px;border-radius:16px;min-width:0;
  }
  .presidential-record-card .candidate-photo-placeholder,
  .constituency-record-card .candidate-avatar,
  .constituency-record-card .candidate-photo-placeholder{
    grid-area:photo;align-self:start;width:54px;height:54px;min-width:54px;
  }
  .presidential-record-card .candidate-main,.constituency-record-card .candidate-main{grid-area:identity;align-self:start;min-width:0}
  .presidential-record-card .candidate-main h3,.constituency-record-card .candidate-main h3{
    margin-top:1px;font-size:.98rem;line-height:1.28;overflow-wrap:anywhere;
  }
  .party-mark.clean-party-label,.constituency-record-card .party-mark.clean-party-label{
    max-width:100%;white-space:normal;overflow-wrap:anywhere;font-size:.78rem;line-height:1.3;
  }
  .location-line,.constituency-record-card .location-line{white-space:normal;font-size:.61rem;line-height:1.4;overflow-wrap:anywhere}
  .presidential-card-result,.constituency-record-card .parliamentary-card-result{
    grid-area:result;min-width:0;width:100%;align-self:auto;display:flex;flex-direction:row;
    align-items:flex-end;justify-content:space-between;gap:12px;padding:12px 0 0;
    border-top:1px solid #e6ebf0;border-left:0;text-align:left;
  }
  .presidential-card-result .candidate-total-votes,
  .parliamentary-card-result .candidate-total-votes{align-items:flex-start;min-width:0}
  .presidential-details-action{justify-content:flex-end;min-height:36px;margin-top:0;text-align:right}
  .candidate-detail-layout{grid-template-columns:minmax(0,1fr);gap:16px}
  .candidate-detail-layout .candidate-profile-card{grid-template-columns:minmax(0,1fr);border-radius:21px;overflow:hidden}
  .candidate-detail-layout .candidate-photo-panel{min-height:auto;padding:22px 16px}
  .candidate-detail-layout .candidate-photo-link{width:min(100%,210px);max-width:210px}
  .candidate-detail-layout .candidate-detail-photo{width:100%;height:auto;max-height:275px;aspect-ratio:4/5;object-fit:contain}
  .candidate-detail-layout .candidate-profile-content{min-width:0;padding:22px 18px}
  .candidate-detail-layout .candidate-performance-section{position:static;padding:16px;border-radius:20px}
  .candidate-facts{grid-template-columns:minmax(0,1fr)}
  .candidate-party-panel,.professional-performance-card,.performance-card-metrics{min-width:0;overflow-wrap:anywhere}
  .performance-candidate-hero,.performance-page-heading{align-items:flex-start}
  .performance-back-bottom{width:100%;justify-content:center}
}

@media(max-width:430px){
  .app-shell{padding-inline:10px}
  .election-type-link{min-width:0}
  .presidential-record-card,.constituency-record-card{grid-template-columns:48px minmax(0,1fr);gap:11px;padding:12px}
  .presidential-record-card .candidate-photo-placeholder,
  .constituency-record-card .candidate-avatar,
  .constituency-record-card .candidate-photo-placeholder{width:48px;height:48px;min-width:48px}
  .presidential-card-result,.constituency-record-card .parliamentary-card-result{align-items:flex-start;flex-direction:column;gap:5px}
  .presidential-details-action{justify-content:flex-start;text-align:left}
  .presidential-chart-canvas,
  .presidential-results-layout .presidential-chart-canvas,
  .constituency-results-layout .presidential-chart-canvas{height:225px}
}

/* Keep the dashboard map beneath the navigation header at every width. */
body:has(.dashboard-v2) .app-bar{z-index:100}
.dashboard-v2>.dashboard-map-hero{z-index:40}
.bottom-nav a{width:min(25%,180px)}
@media(min-width:1051px){
  .dashboard-v2>.dashboard-map-hero{
    top:101px;
    height:calc(100vh - 126px);
    height:calc(100dvh - 126px)
  }
}

/* Dashboard contest cards: restore the spacious two-column directory design. */
.dashboard-home-content .dashboard-v2-contests{
  padding:20px 17px;
  border:1px solid #dce7e3;
  border-radius:19px;
  background:#fff;
  box-shadow:0 7px 22px rgba(25,62,53,.055)
}
.dashboard-home-content .dashboard-v2-section-heading{
  margin-bottom:19px;
  padding:0;
  border-bottom:0
}
.dashboard-home-content .dashboard-v2-section-heading>div>span{color:#684e9c}
.dashboard-home-content .dashboard-v2-section-heading h2{font-size:1.42rem}
.dashboard-home-content .dashboard-v2-contest-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px
}
.dashboard-home-content .dashboard-v2-contest,
.dashboard-home-content .contest-presidential,
.dashboard-home-content .contest-parliamentary,
.dashboard-home-content .contest-local_government{
  display:grid;
  grid-template-columns:46px minmax(0,1fr);
  grid-template-areas:"icon eyebrow" "icon title" "icon description";
  column-gap:13px;
  align-items:center;
  min-height:105px;
  padding:14px;
  border:1px solid #dce7e3;
  border-radius:15px;
  background:#fff;
  box-shadow:0 5px 16px rgba(25,62,53,.05)
}
.dashboard-home-content .dashboard-v2-contest:hover,
.dashboard-home-content .dashboard-v2-contest:focus-visible{
  transform:translateY(-2px);
  border-color:#b9d2ca;
  box-shadow:0 10px 24px rgba(9,73,64,.09)
}
.dashboard-home-content .dashboard-v2-card-icon,
.dashboard-home-content .contest-presidential .dashboard-v2-card-icon,
.dashboard-home-content .contest-parliamentary .dashboard-v2-card-icon,
.dashboard-home-content .contest-local_government .dashboard-v2-card-icon{
  grid-area:icon;
  width:44px!important;
  height:44px!important;
  margin:0!important;
  border-radius:12px!important;
  background:#e8f4ef!important;
  color:#166858!important
}
.dashboard-home-content .dashboard-v2-card-eyebrow{
  grid-area:eyebrow;
  align-self:end;
  color:#5e746d;
  font-size:.57rem
}
.dashboard-home-content .dashboard-v2-contest>strong{
  grid-area:title;
  margin-top:2px;
  color:#17302b;
  font-size:1.1rem
}
.dashboard-home-content .dashboard-v2-card-description{
  grid-area:description;
  align-self:start;
  margin:4px 0 0;
  color:#788b85;
  font-size:.61rem;
  line-height:1.35
}
.dashboard-home-content .dashboard-v2-card-action{display:none}
.dashboard-home-content .dashboard-summary-download{
  border:1px solid #bcd8cf!important;
  background:linear-gradient(145deg,#fff,#edf7f3)!important
}
.dashboard-home-content .dashboard-summary-download .dashboard-v2-card-icon{
  background:#166858!important;
  color:#fff!important
}
@media(max-width:620px){
  .dashboard-home-content .dashboard-v2-contests{padding:20px 17px}
  .dashboard-home-content .dashboard-v2-contest-grid{grid-template-columns:1fr}
}
@media(max-width:420px){
  .dashboard-home-content .dashboard-v2-metrics{grid-template-columns:1fr}
  .dashboard-home-content .dashboard-v2-metrics article{min-height:86px}
}
@media(max-width:340px){
  .bottom-nav{height:78px}
  .bottom-nav i{padding-inline:12px}
  .bottom-nav a span{font-size:.52rem;line-height:1.15;text-align:center}
}

/* Dashboard: content on the left, map on the right, preserving both widths. */
@media(min-width:1051px){
  .dashboard-v2{grid-template-columns:minmax(460px,1.1fr) minmax(440px,.9fr)}
  .dashboard-home-content{grid-column:1;grid-row:1}
  .dashboard-v2>.dashboard-map-hero{grid-column:2;grid-row:1}
}
@media(max-width:1050px){
  .dashboard-home-content{grid-column:1;grid-row:1}
  .dashboard-v2>.dashboard-map-hero{grid-column:1;grid-row:2}
}
