:root{color-scheme:dark;--bg:#0d1117;--panel:#161b22;--line:#2a3038;--text:#e6edf3;--muted:#9aa4b2;--accent:#4aa3ff}*{box-sizing:border-box}body,html{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,sans-serif}body{height:100vh}.topnav{justify-content:space-between;gap:1rem;height:48px;box-sizing:border-box;padding:0 1rem;border-bottom:1px solid var(--line);background:var(--panel)}.topnav,.topnav .brand{display:flex;align-items:center}.topnav .brand{gap:8px;font-weight:800;font-size:15.5px;letter-spacing:-.02em;color:var(--text)}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:var(--accent);color:#05213f;font-weight:800;font-size:14px;flex:none}.topnav-links{display:flex;align-items:center;gap:1rem}.topnav a{color:var(--text);text-decoration:none;font-weight:600}.topnav .builtby{color:var(--muted);font-weight:500;font-size:13px;margin-left:.25rem;padding-left:.9rem;border-left:1px solid var(--line);white-space:nowrap}.topnav .builtby a{color:var(--muted);font-weight:600}.topnav .builtby a:hover{color:var(--accent);text-decoration:underline}.layout{display:flex;height:calc(100vh - 48px)}.map-pane{position:relative;flex:1 1;min-width:0}.map{width:100%;height:calc(100vh - 48px);background:#0b0f14}.map-loading{display:flex;align-items:center;justify-content:center;color:var(--muted)}.rail{flex:0 0 420px;border-left:1px solid var(--line);padding:1.25rem;background:var(--panel);overflow:hidden}.chat,.rail{display:flex;flex-direction:column}.chat{flex:1 1;min-height:0}.chat-top{flex:none}.chat-results{flex:1 1;min-height:0;overflow-y:auto}@media (max-width:820px){.layout,body,html{height:auto}.layout{flex-direction:column;min-height:100dvh}.map-pane{flex:none;width:100%}.map,.map-pane{height:48vh;height:48dvh}.rail{flex:none;width:100%;border-left:none;border-top:1px solid var(--line);overflow:visible;padding:.9rem}.chat,.rail{display:block}.chat-results{overflow:visible}.scoreboard table{font-size:.72rem}.topnav{padding:0 .8rem;gap:.5rem}.topnav-links{gap:.7rem}.topnav a{font-size:12.5px}.topnav .builtby{display:none}.page{padding:1rem}}@media (orientation:landscape) and (max-height:560px){body,html{height:100dvh}.layout{flex-direction:row;height:calc(100dvh - 48px)}.map-pane{flex:1 1;min-width:0}.map,.map-pane{height:100%}.rail{flex:0 0 42%;max-width:360px;width:auto;height:100%;border-left:1px solid var(--line);border-top:none;overflow:hidden;padding:.85rem}.chat,.rail{display:flex;flex-direction:column}.chat{min-height:0}.chat-results{flex:1 1;min-height:0;overflow-y:auto}}.chat h1{margin:0 0 .25rem;font-size:1.4rem}.subtle{color:var(--muted);font-size:.85rem;margin-top:0}form{display:flex;gap:.5rem;margin:1rem 0}input{flex:1 1;padding:.5rem .6rem;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--text)}button{padding:.5rem .9rem;border:none;border-radius:6px;background:var(--accent);color:#05213f;font-weight:700;cursor:pointer}button:disabled{opacity:.6;cursor:default}.trace{list-style:none;padding:0;margin:.5rem 0;font-family:ui-monospace,monospace;font-size:.8rem;color:var(--muted)}.trace li{display:flex;align-items:center;gap:.5rem;padding:.25rem 0}.trace-icon{flex:none;width:1rem;text-align:center}.trace-active{color:var(--muted)}.trace-done{color:#e6edf3}.trace-done .trace-icon{color:#3ddc84}.trace-spinner{flex:none;width:11px;height:11px;border:2px solid hsla(0,0%,100%,.18);border-top:2px solid var(--accent);border-radius:50%;animation:otm-spin .7s linear infinite}@keyframes otm-spin{to{transform:rotate(1turn)}}.dots:after{content:"";animation:otm-dots 1.4s step-end infinite}@keyframes otm-dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.answer{margin-top:1rem;padding:1rem;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.stat-row{display:flex;gap:.75rem;margin:.7rem 0;flex-wrap:wrap}.stat{display:flex;flex-direction:column;padding:.5rem .8rem;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.stat-value{font-size:1.25rem;font-weight:800}.stat-label{color:var(--muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}.answer-body p{margin:.4rem 0}.answer-body strong{color:var(--text)}.answer-body table{width:100%;border-collapse:collapse;font-size:.78rem;margin:.5rem 0}.answer-body td,.answer-body th{text-align:left;padding:.3rem .5rem;border-bottom:1px solid var(--line)}.answer-body a{color:var(--accent)}.map-legend{position:absolute;bottom:12px;left:12px;z-index:5;display:flex;gap:.75rem;padding:6px 10px;border-radius:6px;background:rgba(13,17,23,.85);border:1px solid var(--line);font-size:.72rem;color:var(--muted)}.map-legend i{display:inline-block;width:18px;height:3px;vertical-align:middle;margin-right:5px;border-radius:2px}.map-legend i.in{background:#3ddc84}.map-legend i.out{background:#ff9d3c}.maplibregl-popup{z-index:6}.otm-popup .maplibregl-popup-content{background:#161b22!important;color:#e6edf3!important;border:1px solid #2a3038;border-radius:6px;font:12px ui-sans-serif,system-ui,sans-serif;padding:5px 9px;box-shadow:0 2px 10px rgba(0,0,0,.5)}.otm-popup .maplibregl-popup-content b{color:#ffd24a!important}.otm-popup .maplibregl-popup-tip{display:none}.scoreboard .coverage{margin-top:-.25rem;color:var(--accent);font-size:.8rem}.otm-overlay{inset:0;overflow:hidden;pointer-events:none}.otm-label,.otm-overlay{position:absolute;z-index:2}.otm-label{top:0;left:0;padding:4px 7px;font:600 11px ui-sans-serif,system-ui,sans-serif;white-space:nowrap;letter-spacing:.02em;text-shadow:0 0 3px #0d1117,0 0 3px #0d1117,0 1px 2px #0d1117;transition:opacity .15s ease;pointer-events:auto;cursor:pointer;will-change:transform}.otm-label:hover{background:hsla(0,0%,100%,.08);border-radius:4px}.otm-label.is-in{color:#3ddc84}.otm-label.is-out{color:#ffd0a3}.switcher{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:6;max-width:calc(100% - 24px);padding:8px 10px;border:1px solid var(--line);border-radius:11px;background:rgba(13,17,23,.82);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);box-shadow:0 6px 22px rgba(0,0,0,.35)}.switcher-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:7px;text-align:center}.switcher-pills{display:flex;gap:6px;max-width:min(48vw,560px);overflow-x:auto;scrollbar-width:thin}.pill{display:inline-flex;align-items:center;gap:6px;flex:none;white-space:nowrap;padding:5px 11px;border:1px solid var(--line);border-radius:999px;background:hsla(0,0%,100%,.05);color:var(--text);font-size:12.5px;font-weight:500;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .05s ease}.pill:hover{background:hsla(0,0%,100%,.1)}.pill:active{transform:translateY(1px)}.pill.active{color:#fff;font-weight:600}.pill-letter{flex:none;font-weight:700;font-size:11px}.pill.active .pill-letter{color:#fff!important}.otm-candidate{position:absolute;top:0;left:0;z-index:3;max-width:230px;padding:7px 10px;background:rgba(13,17,23,.92);border:1px solid #2a3038;border-left:3px solid var(--party-color,var(--accent));border-radius:6px;box-shadow:0 3px 14px rgba(0,0,0,.5);pointer-events:none;opacity:0;transition:opacity .25s ease;will-change:transform}.otm-candidate .cand-name{font:700 13px ui-sans-serif,system-ui,sans-serif;color:#f0f3f6}.otm-candidate .cand-party{margin-left:7px;font-size:13px;font-weight:700;color:var(--party-color,var(--accent))}.otm-candidate .cand-district{margin-top:2px;font-size:12px;letter-spacing:.04em;color:var(--muted)}.otm-candidate .cand-stats{display:flex;flex-direction:column;gap:2px;margin-top:8px;font-size:11px;color:var(--muted);text-align:left}.otm-candidate .cand-stats b{color:#e6edf3;font-weight:600}.otm-candidate .cand-head{display:flex;align-items:center;gap:9px}.otm-candidate .cand-avatar{flex:none;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font:700 12px ui-sans-serif,system-ui,sans-serif;color:#fff;background:var(--party-color,var(--accent));letter-spacing:.02em}.otm-district-code{z-index:1;font-weight:800;letter-spacing:.04em;color:rgba(255,216,102,.32);text-shadow:0 1px 12px rgba(0,0,0,.55);transition:opacity .2s ease;will-change:transform,font-size}.otm-district-code,.otm-region-label{position:absolute;top:0;left:0;line-height:1;white-space:nowrap;pointer-events:none}.otm-region-label{z-index:2;font-weight:700;font-size:13px;letter-spacing:.02em;color:rgba(255,224,138,.94);text-shadow:0 0 3px rgba(13,17,23,.95),0 1px 4px rgba(0,0,0,.85);transition:opacity .15s ease;will-change:transform}.otm-pulse{width:12px;height:12px;border-radius:50%;background:#ffd24a;box-shadow:0 0 8px 2px rgba(255,210,74,.8);animation:otm-pulse 2s ease-out infinite}@keyframes otm-pulse{0%{box-shadow:0 0 0 0 rgba(255,210,74,.55)}70%{box-shadow:0 0 0 16px rgba(255,210,74,0)}to{box-shadow:0 0 0 0 rgba(255,210,74,0)}}.chip{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:700}.chip-high{background:#163a24;color:#6ee7a0}.chip-partial{background:#3a3316;color:#e7d76e}.chip-insufficient{background:#3a1f16;color:#e79b6e}.citations{margin:.75rem 0 0;padding-left:1.1rem;font-size:.85rem}.citations a{color:var(--accent)}.page{padding:1.5rem}.scoreboard h2{margin-bottom:.25rem}.metrics{display:flex;gap:1rem;flex-wrap:wrap;margin:1rem 0}.metric{display:flex;flex-direction:column;padding:.75rem 1rem;border:1px solid var(--line);border-radius:8px;background:var(--panel);min-width:96px}.metric-value{font-size:1.5rem;font-weight:800}.metric-label{color:var(--muted);font-size:.75rem}table{width:100%;border-collapse:collapse;font-size:.85rem}td,th{text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--line)}.error{color:#e79b6e}.intro{padding:2px 2px 8px}.intro-lead{color:var(--muted);font-size:14px;line-height:1.55;margin:6px 0 20px}.intro-label{color:var(--text);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;opacity:.65;margin:0 0 10px}.intro-chips{display:flex;flex-direction:column;gap:8px}.intro-chips .chip{text-align:left;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--text);font-size:13.5px;line-height:1.3;cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .05s ease}.intro-chips .chip:hover{border-color:var(--accent);background:#11171f}.intro-chips .chip:active{transform:translateY(1px)}.run-stats{margin:.35rem 0 .7rem;padding-bottom:.7rem;border-bottom:1px solid var(--line);font-size:.8rem;color:var(--muted)}.run-stats summary{cursor:pointer;list-style:none}.run-stats summary a{margin-left:.5rem}.run-stats-detail{margin:.5rem 0 0;padding-left:1rem}.run-stats-warn{color:#d98324}.regime-breakdown{margin:.75rem 0;display:grid;grid-gap:.4rem;gap:.4rem}.regime{display:grid;grid-template-columns:6rem 1fr auto;align-items:center;grid-gap:.6rem;gap:.6rem;font-size:.85rem}.regime-bar{background:hsla(0,0%,100%,.08);border-radius:3px;height:.5rem}.regime-fill{display:block;height:100%;background:#4c8bf5;border-radius:3px}.how{max-width:46rem;margin:0 auto;padding:2rem 1.25rem;line-height:1.55}.how section{margin:1.75rem 0}.how h2{font-size:1.05rem;margin-bottom:.4rem}.how-metrics{display:flex;flex-wrap:wrap;gap:.75rem;margin:.5rem 0;font-size:.85rem}.how-metrics span{background:hsla(0,0%,100%,.06);padding:.2rem .5rem;border-radius:4px}.how-regression{margin-top:1rem;border-left:2px solid #4c8bf5;padding-left:.9rem}.how-regression table{border-collapse:collapse;margin:.5rem 0;font-size:.85rem}.how-regression td,.how-regression th{text-align:left;padding:.2rem .8rem .2rem 0}