:root{font-family:Inter,Arial,sans-serif;color:#17253b;background:#eef2f7;font-size:16px;--navy:#101c32;--accent:#176a60}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #47b8a9;outline-offset:3px}header{height:86px;background:var(--navy);color:white;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:3px solid #4cd5b5}.brand{display:flex;align-items:center;gap:16px}.brand svg{width:32px;height:36px;color:#4cd5b5}h1{font-size:22px;letter-spacing:-.5px;margin:0;font-weight:750}h1 span{font-weight:400;color:#a4b7ce}.brand p{font-size:14px;color:#a4b7ce;margin:6px 0 0}.snapshot{text-align:right;display:grid;gap:6px}.snapshot span{font-size:12px;letter-spacing:1.6px;color:#a4b7ce}.snapshot strong{font-size:14px;font-weight:500}main{display:grid;grid-template-columns:330px 1fr;height:calc(100dvh - 86px);min-height:570px}.controls{background:#fff;overflow-y:auto;border-right:1px solid #d8e1ec;padding:6px 22px 24px}.section{padding:19px 0;border-bottom:1px solid #e5eaf1}.section>label,.section-heading>label,#focus-box>label{font-size:12px;letter-spacing:1.3px;font-weight:750;display:block;color:#66758a;margin-bottom:10px}.section-heading{display:flex;align-items:center;justify-content:space-between}.section-heading>label{margin:0}.text-button{border:0;background:transparent;color:#6b7c90;font-size:13px;padding:0;text-decoration:underline;text-underline-offset:3px}.hint{font-size:14px;line-height:1.5;color:#718095;margin:8px 0 12px}select,input[list]{width:100%;border:1px solid #d4deea;border-radius:7px;padding:11px 12px;background:#fff;color:#23334b;font-size:14px;min-height:44px}select{padding-right:6px}.candidate{display:flex;gap:11px;align-items:center;padding:9px 10px;margin:4px 0;border:1px solid transparent;border-radius:7px;cursor:pointer}.candidate.selected{background:#f0f6fa;border-color:#d4e4ec}.candidate input{accent-color:var(--candidate);width:17px;height:17px;flex-shrink:0;margin:0}.candidate .swatch{height:9px;width:9px;border-radius:50%;background:var(--candidate);flex-shrink:0}.candidate .name{font-size:14px;font-weight:650;line-height:1.4}.candidate .party{font-size:12px;color:#718095;display:block;font-weight:400;margin-top:2px}.mode-tabs,.metric-tabs{display:flex;gap:3px;background:#edf1f6;padding:4px;border-radius:8px;margin-bottom:13px}.mode-tabs button,.metric-tabs button{flex:1;background:transparent;border:0;padding:9px 4px;border-radius:5px;font-size:14px;color:#66758a}.mode-tabs button.active,.metric-tabs button.active{background:#fff;color:#162b46;box-shadow:0 2px 5px #17253b12;font-weight:700}.metric-tabs button{font-size:13px;padding:7px 3px}#focus-box{margin:15px 0}.toggle{display:flex;align-items:center;gap:8px;font-size:14px;margin:12px 0;line-height:1.4}.toggle input{accent-color:#1d7668;width:16px;height:16px}.range-label{display:flex;justify-content:space-between;font-size:13px;color:#718095;margin-top:18px}#scale{width:100%;accent-color:#1d7668;margin:12px 0 0}.spaced{margin-top:18px}.outline-button{width:100%;border:1px solid #ccd7e4;background:#fff;border-radius:7px;padding:10px;color:#3d546f;font-size:14px;margin-top:12px}.source-note{font-size:12px;line-height:1.7;color:#738196;padding-top:20px}.source-note a{color:#315f77}.source-note summary{cursor:pointer;color:#3d546f;margin-top:8px}.map-workspace{position:relative;overflow:hidden;background:#e5edf2}#map{height:100%;width:100%;z-index:0}.map-top{position:absolute;left:22px;top:20px;right:72px;z-index:500;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;pointer-events:none}.map-caption{background:#fffffff2;box-shadow:0 4px 20px #243b5212;padding:12px 16px;border-radius:9px;display:grid;gap:5px}.map-caption span,.eyebrow{font-size:11px;font-weight:750;letter-spacing:1.1px;color:#6e7f94}.map-caption strong{font-size:17px}.map-count{background:#101c32e8;color:white;border-radius:6px;padding:10px 13px;font-size:13px;margin-top:4px}.legend{position:absolute;top:103px;left:22px;z-index:500;background:#fffffff2;padding:10px 13px;border-radius:8px;box-shadow:0 3px 18px #162b4612;max-width:340px}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px;margin:5px 0}.dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}.heat-gradient{height:8px;min-width:185px;border-radius:5px;background:linear-gradient(90deg,#203bf7,#19b9e5,#67cf63,#ffc443,#f04034);margin:8px 0 5px}.gradient-labels{font-size:11px;display:flex;justify-content:space-between;color:#70829b}.legend small{font-size:12px;color:#7a8596;display:block;margin-top:8px;line-height:1.4}.totals{position:absolute;bottom:28px;left:22px;z-index:500;display:flex;gap:10px;flex-wrap:wrap;max-width:calc(100% - 385px);pointer-events:none}.total-card{min-width:120px;background:#fffffff3;border-radius:8px;border-top:3px solid var(--candidate);padding:10px 13px;box-shadow:0 4px 20px #243b5215}.total-card span{display:block;color:#60748d;font-size:11px;margin-bottom:5px}.total-card strong{font-size:22px;letter-spacing:-.5px}.total-card small{display:block;font-size:11px;color:#72839a;margin-top:4px}.detail{position:absolute;z-index:700;bottom:28px;right:22px;width:330px;background:#fff;border-radius:11px;padding:20px;box-shadow:0 10px 40px #14243835;max-height:70%;overflow:auto}.detail h2{font-size:23px;line-height:1.2;margin:7px 25px 12px 0;letter-spacing:-.4px}.close-button{position:absolute;right:10px;top:8px;background:transparent;border:0;font-size:26px;line-height:1;color:#7d8da4;padding:7px}.detail-meta{display:flex;gap:12px;color:#718095;font-size:12px;line-height:1.6;margin-bottom:17px}#detail-rows{display:grid;gap:13px}.detail-row .row-title{display:flex;align-items:center;gap:7px;font-size:13px;line-height:1.4}.detail-row .row-values{display:flex;align-items:center;gap:8px;margin-left:auto;white-space:nowrap}.detail-row .row-values strong{font-size:14px}.detail-row .row-values span{color:#7d8ca0;font-size:12px;min-width:41px;text-align:right}.detail-track{height:5px;border-radius:3px;background:#eef2f7;margin-top:6px;overflow:hidden}.detail-fill{height:100%;border-radius:3px}.detail-foot{border-top:1px solid #e7edf4;color:#7a8899;font-size:11px;margin-top:18px;padding-top:12px}.municipality-label{font-size:11px;line-height:1.2;font-weight:600;white-space:nowrap;color:#263c4e;text-shadow:0 1px white,1px 0 white,-1px 0 white,0 -1px white;pointer-events:none;text-align:center}.bars-icon{background:transparent;border:0}.bar-group{display:flex;align-items:flex-end;justify-content:center;gap:2px;height:104px;filter:drop-shadow(1px 3px 2px #20344f44);border-bottom:1px solid #20344f6b}.map-bar{display:block;min-height:2px;position:relative;width:8px;background:var(--bar-color);border-radius:2px 2px 0 0;border-right:2px solid #0002;box-shadow:inset 0 2px 0 #ffffff55}.bars-name{font-size:10px;font-weight:600;white-space:nowrap;color:#293a51;text-shadow:0 1px white,1px 0 white,-1px 0 white;text-align:center;margin-top:3px}.leaflet-tooltip{font-family:inherit;font-size:13px;border:0;box-shadow:0 3px 14px #10243a20;border-radius:6px;padding:8px 11px}.tip-row{display:flex;gap:8px;align-items:center;margin-top:5px}.tip-row strong{margin-left:auto}.leaflet-control-zoom{box-shadow:0 3px 12px #22385415!important;border:1px solid #d1dce6!important}.leaflet-control-attribution{font-size:10px!important;color:#8190a3!important}.empty{position:absolute;top:45%;left:15%;right:15%;z-index:600;background:#fff;border-radius:10px;padding:25px;text-align:center;box-shadow:0 10px 50px #12213c22;font-size:16px}.loading{position:absolute;inset:0;background:#f3f6f9;z-index:1000;display:flex;align-items:center;justify-content:center;gap:14px;color:#526880}.loading[hidden],.empty[hidden],.detail[hidden],[hidden]{display:none!important}.loader{width:23px;height:23px;border:3px solid #d8e4ee;border-top-color:#176a60;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#tile-error{position:absolute;bottom:5px;left:20px;z-index:550;background:#fff3cc;padding:6px;font-size:12px}input[list]{font-size:16px}@media(min-width:1500px){main{grid-template-columns:360px 1fr}.controls{padding:8px 28px 24px}}@media(max-width:1000px){.map-count{display:none}.totals{max-width:calc(100% - 40px);bottom:26px}.detail:not([hidden])~.totals{display:none}.total-card{min-width:90px;padding:8px 10px}.total-card strong{font-size:19px}}@media(max-width:700px){header{height:80px;padding:0 16px}.brand{gap:10px}.brand svg{width:23px}h1{font-size:18px}.brand p{font-size:12px}.snapshot span{display:none}.snapshot strong{font-size:11px}main{display:flex;flex-direction:column;height:auto;min-height:0}.controls{order:2;overflow:visible;border-right:0;display:grid;grid-template-columns:1fr 1fr;gap:0 22px;padding:8px 18px 24px}.controls .section:nth-child(2){grid-row:1 / span 2;grid-column:2}.source-note{grid-column:1 / -1}.map-workspace{height:65dvh;min-height:440px;order:1}.map-top{left:12px;top:12px}.map-caption{padding:10px 12px}.map-caption strong{font-size:15px}.legend{left:12px;top:88px;max-width:210px;padding:7px 10px}.legend-item{font-size:11px}.detail{left:12px;right:12px;bottom:23px;width:auto;max-height:64%}.totals{left:12px;gap:5px;max-width:95%}.total-card{min-width:85px;padding:7px}.total-card span{font-size:10px}.total-card strong{font-size:18px}.total-card small{display:none}.legend small{font-size:10px}.mode-tabs button{font-size:12px}.map-caption span{font-size:10px}}@media(max-width:420px){.controls{grid-template-columns:1fr}.controls .section:nth-child(2){grid-row:auto;grid-column:auto}.snapshot{display:none}}

.map-actions{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.map-metric-switch{pointer-events:auto;background:#fff;box-shadow:0 3px 12px #17253b18;width:165px;margin:0}.map-metric-switch button.active{background:#173c50;color:#fff}.comparison-result{border-left:4px solid var(--candidate);background:#fff;border-radius:7px;padding:10px 13px;box-shadow:0 4px 20px #243b5215;display:grid;gap:4px;min-width:155px}.comparison-result>span{font-size:10px;letter-spacing:.6px;color:#718095}.comparison-result b{font-size:13px;color:var(--candidate)}.comparison-result strong{font-size:21px;line-height:1.2}.comparison-result small{font-size:12px;color:#718095}#detail-comparison .comparison-result{margin-top:18px;background:#f3f6fa;box-shadow:none}.margin-icon{background:transparent;border:0}.margin-badge{background:var(--candidate);color:white;border:2px solid white;border-radius:5px;padding:4px 7px;text-align:center;font-size:12px;font-weight:700;white-space:nowrap;display:inline-block;box-shadow:0 2px 6px #17253b44}.tip-comparison{margin-top:7px;padding-top:7px;border-top:1px solid #e0e6ef;font-size:12px;max-width:290px;white-space:normal}.totals{max-width:calc(100% - 45px)}.detail:not([hidden])~.totals{max-width:calc(100% - 390px)}@media(max-width:1000px){.detail:not([hidden])~.totals{display:none}}@media(max-width:700px){.map-metric-switch{width:105px}.map-metric-switch button{padding:6px 3px}.map-actions{margin-right:-5px}.map-caption{max-width:calc(100% - 105px)}.comparison-result{min-width:125px;padding:7px 9px}.comparison-result strong{font-size:17px}.comparison-result b{font-size:11px}.comparison-result small{font-size:10px}.totals{max-width:calc(100% - 20px)}.total-card small{display:block;font-size:9px;max-width:110px}.mode-tabs button{font-size:11px}.legend small{max-width:190px}}

.mode-tabs{display:grid;grid-template-columns:repeat(3,1fr)}.win-count{margin-left:auto;background:#eef2f7;border-radius:4px;min-width:26px;padding:2px 5px;text-align:center;font-size:12px}.leader-summary{border-left:4px solid var(--candidate);background:#f3f6fa;border-radius:7px;padding:11px 13px;margin-top:15px;display:grid;gap:6px}.leader-summary small{font-size:10px;letter-spacing:.6px;color:#718095}.leader-summary b{font-size:13px;line-height:1.5}

.mobile-toolbar,.mobile-backdrop,.mobile-panel-head,.mobile-panel-foot{display:none}
@media(max-width:700px){
 html,body{height:100%;overflow:hidden}header{height:66px;padding:0 15px;border-bottom-width:2px}.brand p{font-size:11px;margin-top:4px}h1{font-size:18px}.brand svg{width:24px}.snapshot{display:none}
 .mobile-toolbar{height:58px;padding:8px 10px;display:flex;gap:7px;align-items:center;background:#fff;border-bottom:1px solid #dbe3ed}.mobile-toolbar>button{display:flex;align-items:center;justify-content:center;gap:6px;background:#162d43;color:#fff;border:0;border-radius:10px;min-height:42px;padding:0 11px;font-size:13px;font-weight:700;flex-shrink:0}.mobile-toolbar svg{width:18px;height:18px}.mobile-toolbar>button>span{background:#ffffff26;min-width:20px;border-radius:6px;padding:2px 4px;font-size:11px}.mobile-toolbar>select{min-width:0;flex:1;width:auto;min-height:42px;padding:8px;border-radius:10px;font-size:13px;background:#f5f7fa;border-color:#e3e9f0}.mobile-metrics{display:flex;align-items:center;padding:3px;border-radius:10px;background:#edf1f6;flex-shrink:0}.mobile-metrics button{border:0;border-radius:7px;background:transparent;min-height:36px;padding:0 9px;color:#6a7a8d;font-size:12px}.mobile-metrics button.active{background:#fff;color:#18374c;box-shadow:0 2px 6px #152d4510;font-weight:700}
 main{display:block;height:calc(100dvh - 124px);min-height:0}.map-workspace{height:100%;min-height:0;width:100%}.map-top{left:10px;right:60px;top:10px}.map-actions{display:none}.map-caption{max-width:100%;padding:9px 11px;border-radius:10px;box-shadow:0 3px 15px #14243b16}.map-caption span{display:none}.map-caption strong{font-size:12px;line-height:1.4}.legend{left:10px;right:60px;top:55px;max-width:none;width:fit-content;display:flex;flex-wrap:wrap;gap:2px 9px;padding:7px 10px;border-radius:10px}.legend-item{font-size:9px;line-height:1.4;margin:2px 0;gap:5px;max-width:100%}.legend .dot{width:8px;height:8px}.legend>small{display:none}.win-count{font-size:9px;min-width:19px;padding:1px 3px}.legend .heat-gradient{flex-basis:100%;height:5px;margin:4px 0}.legend .gradient-labels{width:100%;font-size:9px}
 .controls{position:fixed;left:0;right:0;bottom:0;z-index:1500;height:min(86dvh,800px);display:block;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:0 18px 0;background:#f7f9fc;border:0;border-radius:23px 23px 0 0;box-shadow:0 -15px 60px #0c20383b;transform:translateY(105%);visibility:hidden;transition:transform .24s ease,visibility .24s}.controls-open .controls{transform:translateY(0);visibility:visible}.controls-open .mobile-backdrop{opacity:1;visibility:visible}.mobile-backdrop{display:block;position:fixed;inset:0;z-index:1400;background:#0d20365e;backdrop-filter:blur(3px);border:0;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}
 .mobile-panel-head{display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:2;padding:21px 0 14px;background:#f7f9fc;border-bottom:1px solid #dfe6ef}.mobile-panel-head:before{content:'';position:absolute;top:8px;left:calc(50% - 20px);width:40px;height:4px;border-radius:3px;background:#cad3df}.mobile-panel-head span{font-size:10px;color:#8291a6;letter-spacing:1.2px}.mobile-panel-head h2{margin:4px 0 0;font-size:20px;color:#173048;letter-spacing:-.4px}.mobile-panel-head button{border:0;border-radius:50%;width:42px;height:42px;background:#e8edf4;color:#64758b;font-size:25px;line-height:1}.controls .section{padding:18px 0}.controls .section:nth-child(2){grid-column:auto;grid-row:auto}.controls .section>label,.controls .section-heading>label{font-size:11px;letter-spacing:1px}.controls select,.controls input[list]{font-size:16px;min-height:48px;border-radius:11px}.controls .hint{font-size:12px;line-height:1.5;margin-bottom:13px}.candidate{background:#fff;border:1px solid #e3e9f1;padding:12px;min-height:58px;border-radius:12px;margin:7px 0}.candidate.selected{background:#edf5f8;border-color:#b9d5e3;box-shadow:0 2px 6px #19374b05}.candidate input{height:20px;width:20px}.candidate .name{font-size:15px}.candidate .party{font-size:11px;line-height:1.35}.candidate .swatch{margin-left:auto;width:11px;height:11px}.mode-tabs{grid-template-columns:repeat(3,1fr);gap:5px;padding:5px;border-radius:12px}.mode-tabs button,.metric-tabs button{min-height:44px;font-size:13px;border-radius:8px}.metric-tabs{border-radius:12px}.toggle{min-height:38px;font-size:14px;gap:10px}.toggle input{width:19px;height:19px}.outline-button{min-height:46px;border-radius:10px}.source-note{padding:16px 0;color:#8190a4;font-size:11px}.mobile-panel-foot{position:sticky;bottom:0;display:block;margin:0 -18px;padding:11px 18px calc(11px + env(safe-area-inset-bottom));background:#f7f9fcf7;border-top:1px solid #dfe6ef;backdrop-filter:blur(8px);z-index:2}.mobile-panel-foot button{width:100%;min-height:48px;border:0;border-radius:12px;background:#17374b;color:#fff;font-size:15px;font-weight:700;display:flex;justify-content:space-between;align-items:center;padding:0 17px}.mobile-panel-foot span{font-size:22px}
 .totals{left:10px;right:10px;bottom:26px;max-width:none;width:auto;display:flex;flex-wrap:nowrap;gap:7px;overflow-x:auto;padding:4px 0;pointer-events:auto;scrollbar-width:none;touch-action:pan-x;overscroll-behavior-x:contain;scroll-snap-type:x proximity}.totals::-webkit-scrollbar{display:none}.total-card{min-width:107px;max-width:145px;flex:0 0 auto;padding:9px 11px;border-radius:11px;scroll-snap-align:start;box-shadow:0 3px 14px #19364a18}.total-card span{font-size:9px;font-weight:600;margin-bottom:4px}.total-card strong{font-size:21px}.total-card small{display:block;max-width:120px;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}.comparison-result{flex:0 0 150px;min-width:150px;padding:8px 11px;border-radius:11px;scroll-snap-align:start}.comparison-result strong{font-size:18px}.comparison-result small{font-size:10px}.detail{left:10px;right:10px;bottom:25px;width:auto;max-height:67%;padding:20px 17px 16px;border-radius:18px;overscroll-behavior:contain;box-shadow:0 8px 45px #152b4440}.detail h2{font-size:23px;margin-right:35px}.close-button{right:8px;top:8px;width:40px;height:40px;border-radius:50%;background:#eff3f7;font-size:24px}.detail-row .row-title{font-size:13px}.detail-foot{font-size:10px}.leaflet-control-zoom a{width:34px!important;height:34px!important;line-height:34px!important}.leaflet-control-attribution{max-width:95%;font-size:8px!important}.empty{left:10px;right:10px;padding:20px;font-size:14px;line-height:1.5}.detail:not([hidden])~.totals{display:none}
}
@media(max-width:350px){.mobile-toolbar{gap:5px;padding:8px}.mobile-toolbar>button{padding:0 8px;font-size:12px}.mobile-toolbar>select{font-size:12px;padding-left:6px}.mobile-metrics button{padding:0 7px;font-size:11px}.legend{right:48px}.total-card{min-width:99px;padding:8px}}
@media(prefers-reduced-motion:reduce){.controls,.mobile-backdrop{transition:none}}
