.election-map {
.layout{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;margin:24px 0}.panel{background:white;border:1px solid #ded7ca;border-radius:12px;padding:16px;min-width:0}svg{width:100%;height:auto;display:block;background:#edf4f7;border-radius:8px}path[data-code]{fill:var(--vote-fill,#c5cfd4);stroke:#fff;stroke-width:.8;cursor:pointer}path[data-code]:is(:hover,:focus,[aria-pressed=true]){stroke:#173a50;stroke-width:2;outline:none}circle{fill:var(--vote-fill,#c5cfd4);stroke:#fff;stroke-width:.8}.hit{fill:transparent;cursor:pointer}.muted{color:#485960}select{width:100%;padding:8px;font:inherit}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:7px;border-bottom:1px solid #ddd}td:last-child,th:last-child{text-align:right}summary{cursor:pointer;font-weight:700}
.map-frame{position:relative}.map-tooltip{position:absolute;z-index:1;max-width:calc(100% - 12px);padding:6px 10px;border-radius:7px;background:#173a50;color:white;box-shadow:0 2px 8px #173a5040;pointer-events:none;font-size:.85rem;line-height:1.3}.map-tooltip strong{display:block;font-size:1.05rem}.vote-legend{display:flex;flex-wrap:wrap;gap:6px 15px;list-style:none;padding:0;font-size:.88rem}.vote-legend li{display:flex;align-items:center;gap:6px}.vote-legend span{width:16px;height:16px;border:1px solid #55636b55;border-radius:3px}
}
.election-map table td:last-child { white-space: nowrap; }
.election-map .map-tooltip { z-index: 2; }
