.election-map-section{margin-top:20px}.map-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.map-section-head h2{margin:0 0 7px}.map-subtitle{margin:0;color:#625b68;font-size:13px;line-height:1.5}.map-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:16px 0}.map-controls label{font-size:13px;font-weight:700}.map-controls input,.map-controls select,.map-controls button{font:inherit;border:1px solid #b8adca;background:#fff;color:#35106a;border-radius:7px;padding:8px 10px;min-height:38px}.map-controls input{width:260px;max-width:100%}.map-controls button{font-weight:800;cursor:pointer}.map-controls button:hover{background:#ede4f7}.map-pair{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.map-panel{min-width:0;border:1px solid #d8d2de;border-radius:12px;overflow:hidden;background:#f0f5f8}.map-panel h3{font-size:18px;margin:0;padding:14px 16px 4px;background:#fff}.map-panel .map-caption{font-size:12px;margin:0;padding:0 16px 12px;background:#fff;color:#625b68}.election-map{display:block;width:100%;height:560px;max-height:65vh;touch-action:none;cursor:grab}.election-map:active{cursor:grabbing}.election-map path:hover,.election-map path.map-selected{stroke:#21102e;stroke-width:2;filter:brightness(1.08)}.map-legend{display:flex;flex-wrap:wrap;gap:8px 14px;padding:12px;background:#fff;min-height:52px;font-size:12px}.map-legend span{display:inline-flex;align-items:center;gap:5px}.map-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid #0002}.map-status{background:#ede4f7;color:#35106a;border-radius:8px;padding:12px;font-size:14px;min-height:44px;line-height:1.5;margin:12px 0}.map-source{font-size:11px;color:#706978;line-height:1.5}.map-source a{color:inherit}.map-controls input:focus,.map-controls select:focus,.map-controls button:focus{outline:3px solid #12a9bd;outline-offset:2px}@media(max-width:680px){.map-pair{gap:8px}.map-panel h3{padding:10px 8px 4px;font-size:15px}.map-panel .map-caption{padding:0 8px 8px;font-size:11px}.election-map{height:350px}.map-legend{gap:6px;padding:8px;font-size:10px}.map-controls{align-items:stretch}.map-controls input{width:100%}.map-controls label{width:100%}.map-controls select{max-width:100%;width:100%}}

@media(max-width:680px){.map-panel h3{min-height:48px}.map-panel .map-caption{min-height:56px}.election-map-section[data-map-scope="london"] .election-map{height:180px}}

.map-canvas{position:relative;overflow:hidden}.map-watermark{position:absolute;right:2%;top:45%;transform:translateY(-50%) scale(.7);transform-origin:right center;width:clamp(100px,36%,230px);pointer-events:none;user-select:none;text-align:center;z-index:2;padding:8px;border-radius:0;background:none;box-shadow:none}.map-watermark img{display:block;max-width:100%;max-height:92px;width:auto;height:auto;margin:0 auto 5px;opacity:.85}.map-watermark span{display:block;font-family:Arial,Helvetica,sans-serif;font-size:clamp(10px,1.25vw,17px);font-weight:800;color:#440099;white-space:nowrap;text-shadow:0 1px 1px #fff}@media(max-width:680px){.map-watermark{width:94%;padding:4px}.map-watermark img{max-height:45px}.map-watermark span{font-size:10px}}

.map-controls input.map-zoom{width:160px;min-width:100px;max-width:100%;padding:0;accent-color:#440099;cursor:pointer}

.election-map-section[data-map-scope="national"] .map-pair{max-width:850px;margin-left:auto;margin-right:auto}.election-map-section[data-map-scope="national"] .election-map{height:auto;max-height:none;aspect-ratio:2 / 3}
