:root{--bg:#f6f7f9;--ink:#16181d;--mute:#667085;--line:#e4e7ec;--card:#fff;--acc:#3b4a6b;--dem:#3d6fb6;--rep:#c8463d;--oth:#8a7fb0;--non:#8c95a3;--vac:#d0d5dd}
*{box-sizing:border-box}html,body{margin:0;height:100%;font-family:Inter,system-ui,sans-serif;color:var(--ink);background:var(--bg)}
body{display:flex;flex-direction:column}
.top{display:flex;gap:16px;align-items:center;justify-content:space-between;padding:10px 18px;background:#fff;border-bottom:1px solid var(--line)}
.brand{display:flex;gap:10px;align-items:center}.logo{font-size:26px;color:var(--acc)}.brand b{display:block;font-size:18px;letter-spacing:-.02em}.brand small{color:var(--mute);font-size:12px}
.search{position:relative;flex:0 1 460px}.search input{width:100%;padding:10px 14px;border:1px solid var(--line);border-radius:10px;font:inherit;background:var(--bg)}
.results{position:absolute;top:44px;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px #0002;max-height:60vh;overflow:auto;z-index:1000;display:none}
.results.on{display:block}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 18px;background:#fff;border-bottom:1px solid var(--line);font-size:13px}
select{font:inherit;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:#fff}.chk{color:var(--mute)}
.legend{margin-left:auto;display:flex;gap:12px;align-items:center;color:var(--mute)}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px}.legend em{font-size:11px}
main{flex:1;display:flex;min-height:0}#map{flex:1;background:#eef1f5}
aside{width:390px;background:#fff;border-left:1px solid var(--line);overflow:auto;padding:14px 16px}
.grip{display:none}.crumbs{font-size:12px;color:var(--mute);margin-bottom:8px}.crumbs a{color:var(--acc);cursor:pointer;text-decoration:none}.crumbs a:hover{text-decoration:underline}
h2{font-size:20px;margin:4px 0 2px;letter-spacing:-.02em}.sub{color:var(--mute);font-size:13px;margin-bottom:12px}
h3{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin:16px 0 6px}
.row{display:flex;gap:10px;align-items:center;padding:8px;border-radius:10px;cursor:pointer}.row:hover{background:var(--bg)}
.row .nm{font-weight:600;font-size:14px}.row .of{font-size:12px;color:var(--mute)}
.av{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:600;font-size:13px;color:#fff;background:#98a2b3}
.pill{font-size:10px;font-weight:600;padding:2px 6px;border-radius:99px;margin-left:auto;white-space:nowrap}
.p-Democratic{background:#e7eef9;color:var(--dem)}.p-Republican{background:#fbeceb;color:var(--rep)}.p-Independent{background:#efedf6;color:var(--oth)}.p-Nonpartisan{background:#eef0f3;color:#555e6c}
.tag{font-size:10px;padding:1px 6px;border-radius:4px;background:#fff4d6;color:#8a6100;margin-left:4px}
.child{display:inline-block;margin:3px;padding:5px 10px;border:1px solid var(--line);border-radius:99px;font-size:12px;cursor:pointer}.child:hover{border-color:var(--acc)}
.modal{position:fixed;inset:0;background:#0006;display:grid;place-items:center;z-index:2000;padding:16px}.modal[hidden]{display:none}
.card{background:#fff;border-radius:16px;width:min(440px,100%);max-height:90vh;overflow:auto;box-shadow:0 20px 60px #0004}
.card .hd{padding:22px;display:flex;gap:16px;align-items:center;border-bottom:1px solid var(--line)}.card .av{width:76px;height:76px;font-size:26px}
.card .bd{padding:18px 22px}.card dl{display:grid;grid-template-columns:110px 1fr;gap:6px 10px;font-size:13px;margin:0 0 12px}.card dt{color:var(--mute)}.card dd{margin:0}
.card p{font-size:14px;line-height:1.55}.x{margin-left:auto;align-self:flex-start;border:0;background:none;font-size:22px;cursor:pointer;color:var(--mute)}
.link{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--ink);font-size:13px}
.link.sponsored{border-color:#f0d58a;background:#fffbef}
.badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:99px;text-transform:uppercase;letter-spacing:.04em}
.badge.verified{background:#e3f4ea;color:#1f7a45}.badge.sponsored{background:#fbe8b8;color:#8a6100}
.warn{font-size:12px;background:#fff4d6;color:#7a5600;padding:8px 10px;border-radius:8px}
footer{font-size:11.5px;color:var(--mute);padding:8px 18px;background:#fff;border-top:1px solid var(--line)}
.leaflet-tooltip{font-family:Inter,sans-serif}.city-dot{background:var(--acc);border:2px solid #fff;border-radius:50%;box-shadow:0 1px 4px #0005}
@media (max-width:760px){.top{flex-wrap:wrap}.search{flex-basis:100%}.legend em{display:none}
main{position:relative}aside{position:absolute;left:0;right:0;bottom:0;width:auto;max-height:45%;border-left:0;border-top:1px solid var(--line);border-radius:16px 16px 0 0;box-shadow:0 -8px 24px #0002;z-index:900;transition:max-height .25s}
aside.full{max-height:85%}.grip{display:block;width:40px;height:4px;background:#d0d5dd;border-radius:4px;margin:0 auto 10px;cursor:pointer}}
.p-Vacant{background:#f2f4f7;color:#667085}
.leaflet-control-layers{font-family:Inter,sans-serif;font-size:12px}
.modes{display:flex;background:#fff;border-radius:10px;box-shadow:0 1px 6px #0003;overflow:hidden}.modes button{font:600 12px Inter,sans-serif;border:0;background:#fff;padding:8px 12px;cursor:pointer;color:#475467}.modes button.on{background:#16181d;color:#fff}
.cards{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;max-width:920px}.cards .card{width:min(440px,100%)}
.av{position:relative;overflow:hidden}.av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 20%}
.src{font-size:11px;color:var(--acc)}.credit{font-size:10.5px;color:var(--mute);margin:-4px 0 12px}.credit a{color:inherit}
.p-Appointed,.p-Unverified{background:#eef0f3;color:#475467}
.legend.courts>span{display:none}
.row .sel{font-size:11px;color:#475467;font-weight:500}
.modes{max-width:calc(100vw - 70px);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.modes::-webkit-scrollbar{display:none}.modes button{flex:0 0 auto;white-space:nowrap}
details.sec{border:1px solid #eaecf0;border-radius:10px;margin:10px 0;padding:0 8px;background:#fff}details.sec>summary{cursor:pointer;list-style:none;font:700 11px Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:#475467;padding:9px 2px;display:flex;align-items:center;gap:6px}details.sec>summary::-webkit-details-marker{display:none}details.sec>summary:before{content:'▸';transition:transform .15s}details.sec[open]>summary:before{transform:rotate(90deg)}details.sec .n{margin-left:auto;background:#f2f4f7;border-radius:999px;padding:1px 7px;font-size:10px;color:#667085}
.local-pin{background:#0f766e;color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 1px 5px #0006;display:flex;align-items:center;justify-content:center;font-size:13px}
.scope{display:flex;align-items:center;gap:6px;flex-wrap:wrap;background:#16181d;color:#fff;border-radius:999px;padding:5px 6px 5px 12px;font:500 12px Inter,sans-serif;margin:0 0 10px;width:max-content;max-width:100%}.scope a{background:#fff;color:#16181d;border-radius:999px;padding:2px 9px;text-decoration:none;font-weight:600}
.lgroups{background:#fff;border-radius:10px;box-shadow:0 1px 6px #0003;padding:8px 10px;font:500 12px Inter,sans-serif;color:#344054;max-height:50vh;overflow:auto}.lgroups b{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#475467;margin-bottom:4px}.lgroups label{display:flex;gap:6px;align-items:center;padding:2px 0;cursor:pointer;white-space:nowrap}
@media(max-width:760px){.lgroups{font-size:11px;padding:6px 8px;max-width:58vw}.lgroups label{white-space:normal}}
.lgroups summary{cursor:pointer;list-style:none}.lgroups summary b{display:inline;margin:0}.lgroups summary::-webkit-details-marker{display:none}.lgroups summary:after{content:' ▾';color:#98a2b3}
.allbtn{display:block;width:100%;margin:6px 0 4px;border:1px solid #d0d5dd;background:#fff;border-radius:8px;padding:6px 10px;font:600 12px Inter,sans-serif;cursor:pointer;color:#344054;text-align:left}.allbtn.on{background:#16181d;color:#fff;border-color:#16181d}
.lgroups .gh{margin:8px 0 2px;font:700 10px Inter,sans-serif;text-transform:uppercase;letter-spacing:.05em;color:#667085;display:flex;flex-wrap:wrap;gap:6px;justify-content:space-between}.lgroups .gh span{text-transform:none;letter-spacing:0;font-weight:500}.lgroups .gh a{color:#2563eb;text-decoration:none}
.lgroups{min-width:170px}
.modes .ls{display:none}
@media(max-width:760px){.modes{display:grid;grid-template-columns:repeat(3,1fr);max-width:none;width:calc(100vw - 120px);overflow:visible}.modes .lf{display:none}.modes .ls{display:inline}.modes button{padding:8px 4px;font-size:12px;text-align:center}.lgroups{min-width:0;max-width:calc(100vw - 30px)}.lgroups:not(:has(details[open])){width:auto}}
