/* GOMM Election Centre V4: civic map, quick look and evidence deep dive. */
.map-section{margin-top:26px;padding:22px;background:linear-gradient(138deg,#1c303b,#142530 70%);border:1px solid #405964;border-radius:17px}
.map-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;margin-bottom:15px}
.map-head h2{font-size:clamp(20px,2.2vw,27px);margin:4px 0 3px;letter-spacing:-.025em}
.map-head p{font-size:13px;color:#c4d6da;margin:0}
.map-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(240px,.85fr);gap:14px}
.map-surface{background:radial-gradient(ellipse at 52% 45%,#2b4653 0,#172d3a 68%,#142430);border:1px solid #445d66;border-radius:13px;overflow:hidden;position:relative}
.map-surface:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 34px,rgba(190,214,219,.035) 35px 36px),repeating-linear-gradient(90deg,transparent 0 34px,rgba(190,214,219,.035) 35px 36px);pointer-events:none}
.map-topline{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px 0;font-size:10px;letter-spacing:.13em;color:#b8cdd0;position:relative;z-index:2}
.map-control{color:#f0d39a;background:#233b48;border:1px solid #657881;border-radius:7px;padding:6px 9px;font-size:11px;letter-spacing:normal}
.map-svg-host{height:400px;position:relative;z-index:1}
.map-svg-host svg{display:block;width:100%;height:100%;touch-action:manipulation}
.ward-region{cursor:pointer;transition:filter .15s;outline:none}
.ward-poly{fill:url(#wardFill);stroke:#849ca6;stroke-width:1.65;stroke-linejoin:round;transition:fill .18s,stroke .18s,filter .18s}
.ward-region:nth-child(2n) .ward-poly{fill:#344f5a}
.ward-region.all-active .ward-poly{stroke:#e6ca86;stroke-width:2;fill:#405762}
.ward-region.is-active .ward-poly{fill:url(#wardSelected);stroke:#fff1c9;stroke-width:2.8;filter:drop-shadow(0 0 9px rgba(245,202,113,.35))}
.ward-region:hover .ward-poly,.ward-region:focus .ward-poly{fill:#74928c;stroke:#fbe3ad;stroke-width:3;filter:drop-shadow(0 0 8px rgba(243,207,124,.36))}
.ward-region:focus-visible .ward-poly{stroke:#fff;stroke-width:4}
.map-marker{fill:#1a323d;stroke:#c5d1d3;stroke-width:1.5;pointer-events:none;opacity:.94}
.ward-region.is-active .map-marker{fill:#eac479;stroke:#fff2c3}
.ward-label{fill:#f8f9f4;font-size:14px;font-weight:850;pointer-events:none;paint-order:stroke}
.ward-region.is-active .ward-label{fill:#192733}
.map-info{background:linear-gradient(155deg,#243946,#1b2f3a);border-radius:13px;border:1px solid #4e6670;padding:18px}
.map-label{font-size:10px;color:#edc878;letter-spacing:.16em;font-weight:800}
.map-info h3{font-size:22px;margin:6px 0 3px;letter-spacing:-.02em}
.map-info>p{font-size:13px;color:#cddadd;margin:5px 0 14px}
.map-counter{display:flex;align-items:center;gap:11px;padding:10px 0 14px;border-bottom:1px solid #485d67}
.map-counter strong{font-size:33px;line-height:1;color:#f3d28d}
.map-counter span{font-size:12px;color:#ccd9db}
.map-ward-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:14px 0}
.map-ward-buttons button{padding:9px 5px;font-size:12px;background:#2b444e;border:1px solid #526976;border-radius:7px;color:#d9e5e5;font-weight:700}
.map-ward-buttons button.selected{background:#e4c17a;color:#182731;border-color:#efdcab}
.map-ward-buttons button:hover{border-color:#f0ce81}
.map-small{font-size:11px!important;margin-top:12px!important}
.map-official{display:block;border:1px solid #ae9258;border-radius:8px;padding:10px;font-size:12px;background:#4a4537;color:#ffe0a4;text-align:center;font-weight:700}
.map-attribution{font-size:10px;color:#9eb8c0;margin-top:10px}
.map-attribution a{color:#ebd19f;text-decoration:underline}
.map-fallback,.map-loading{padding:55px 16px;text-align:center;color:#c9dbdd;font-size:13px}
.issue-insights:empty{display:none}
.issue-insights{border:1px solid #3a5360;background:#182b36;border-radius:13px;padding:20px;margin-top:20px}
.insights-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.insights-heading h2{margin:4px 0 5px;font-size:21px}
.insights-heading p{color:#beccd1;font-size:12px;max-width:720px;margin:0}
.chart-caption{font-size:11px;color:#dfc590}
.issue-bars{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin-top:18px}
.issue-bar{display:grid;grid-template-columns:minmax(115px,1.2fr) minmax(70px,1fr) 54px;gap:9px;align-items:center;border:1px solid transparent;background:transparent;color:#e4e9e9;text-align:left;border-radius:7px;padding:7px 6px;font-size:11px}
.issue-bar:hover,.issue-bar:focus-visible{background:#29414b;border-color:#6b7f83}
.issue-bar strong{font-size:10px;color:#f0d395;text-align:right;white-space:nowrap}
.issue-rail{height:9px;background:#334a55;border-radius:10px;overflow:hidden}
.issue-rail span{display:block;height:100%;border-radius:10px;background:linear-gradient(90deg,#8bbfb2,#e3c47b)}
.candidate .cardfoot .subtle{border-color:#7c806a;color:#f2d594}
.profile-header{border:1px solid #536a74;background:linear-gradient(125deg,#263d47,#1d303b);border-radius:14px;padding:22px;margin:15px 0}
.profile-lead{font-size:15px;color:#d8e4e4;max-width:780px;line-height:1.65;margin:0 0 14px}
.depth-switch{display:flex;align-items:stretch;gap:6px;padding:5px;background:#142630;border:1px solid #4e636e;border-radius:11px;max-width:550px;margin-top:20px}
.depth-switch button{flex:1;background:transparent;color:#d4e0e1;border:0;border-radius:8px;padding:10px 12px;font-size:13px;font-weight:800}
.depth-switch button small{display:block;font-size:10px;font-weight:400;opacity:.8}
.depth-switch button.active{background:#e8c57c;color:#182731}
.depth-description{font-size:12px;color:#cbdbdc;margin:11px 0;background:#20333e;padding:10px 12px;border-left:3px solid #edc875;border-radius:0 7px 7px 0}
.quick-look-top{display:grid;grid-template-columns:1.65fr .85fr;gap:12px}
.quick-intro,.quick-coverage{border:1px solid #3f5762;background:#182b36;border-radius:13px;padding:22px}
.quick-intro h3{font-size:22px;letter-spacing:-.02em;margin:6px 0}
.quick-intro p{line-height:1.75;color:#dee6e6}
.quick-tags{display:flex;gap:7px;flex-wrap:wrap}
.quick-tags span{border-radius:99px;border:1px solid #706044;background:#403c31;padding:7px 11px;font-size:11px;color:#f1d79b}
.quick-coverage{display:flex;flex-direction:column;align-items:center;gap:8px}
.quick-coverage .label{align-self:stretch}
.coverage-ring{--share:0%;width:115px;height:115px;border-radius:50%;background:conic-gradient(#dfc17e 0 var(--share),#3c535c var(--share) 100%);display:grid;place-items:center}
.coverage-ring>div{height:88px;width:88px;background:#182b36;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column}
.coverage-ring strong{font-size:30px;line-height:1}
.coverage-ring small{font-size:10px;color:#bbcbce}
.quick-coverage p{font-size:11px;color:#bfced1;text-align:center;margin:0}
.idea-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin-top:15px}
.idea-tile{border:1px solid #45606a;border-radius:12px;padding:18px;background:#1b303b;display:flex;flex-direction:column;gap:10px}
.idea-tile p{font-size:14px;color:#e1e8e8;line-height:1.65;flex:1;margin:0}
.idea-tile button,.idea-tile a{align-self:start;background:none;border:0;color:#eccc87;text-decoration:underline;font-size:12px;padding:4px 0;text-align:left}
.plain-note{border:1px solid #70674d;background:#2b3638;border-radius:11px;padding:17px;margin:17px 0 25px}
.plain-note h3{margin:0 0 4px;font-size:18px}
.plain-note p{font-size:13px;color:#d9dedc}
.deep-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:14px 0}
.deep-metrics div{border:1px solid #405761;background:#1b303a;border-radius:10px;padding:14px}
.deep-metrics strong{display:block;color:#ecc77a;font-size:27px;line-height:1.25}
.deep-metrics span{font-size:11px;color:#c0cfd2}
.deep-background{font-size:13px;color:#d5e1e4}
.deep-background h3{font-size:17px}
.deep-background a,.deep-source a{color:#f1ca77;text-decoration:underline}
.deep-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0 20px}
.deep-issue{border:1px solid #425a65;background:#1a303b;border-radius:10px;overflow:hidden;align-self:start}
.deep-issue summary{cursor:pointer;display:flex;justify-content:space-between;gap:10px;align-items:center;padding:13px;font-weight:750;font-size:13px}
.deep-issue summary:hover{background:#273d48}
.deep-issue[open] summary{border-bottom:1px solid #405760;color:#f4d695}
.deep-issue-count{font-size:10px;color:#b9cbd0;font-weight:500;white-space:nowrap}
.deep-issue-body{padding:13px}
.deep-source{border-bottom:1px solid #37505d;padding:9px 0;color:#d0dbde;font-size:12px}
.deep-source:last-child{border-bottom:0}
.method-note{font-size:10px;color:#95adb4;margin-top:5px}
@media(max-width:920px){.map-layout{grid-template-columns:1fr}.map-svg-host{height:340px}.map-info{display:grid;grid-template-columns:1fr auto;gap:7px 14px}.map-info .map-counter{grid-column:2;grid-row:2 / span 2;border:0}.map-info .map-ward-buttons,.map-info .map-small,.map-info .map-official{grid-column:1/-1}.map-info .map-label,.map-info h3,.map-info>p{grid-column:1}.issue-bars{grid-template-columns:1fr}}
@media(max-width:680px){.map-section{padding:14px}.map-head{align-items:start}.map-svg-host{height:310px}.map-layout{grid-template-columns:1fr}.map-info{display:block}.issue-insights{padding:14px}.issue-bar{grid-template-columns:minmax(110px,1.3fr) minmax(55px,1fr) 51px}.quick-look-top,.idea-grid,.deep-grid{grid-template-columns:1fr}.quick-coverage{flex-direction:row;align-items:center;flex-wrap:wrap}.quick-coverage .label{flex-basis:100%}.quick-coverage p{flex:1;text-align:left}.deep-metrics{grid-template-columns:repeat(2,1fr)}.profile-header{padding:15px}.map-info h3{font-size:20px}}
@media(prefers-reduced-motion:reduce){.ward-poly,.ward-region{transition:none}}
