/* =============================================================================
   BiH MAP — hierarchical selectable map widget. Reads tokens; theme-aware.
   Load AFTER dataviz.css (shares chart-kicker/btn classes from kit.css).
   ========================================================================== */
.oz-map{font-family:var(--font-data);color:var(--ink);border:1px solid var(--rule);background:var(--surface);}
/* political-map analysis additions */
.oz-pm-seats{display:flex;flex-direction:column;gap:7px;margin:10px 0 6px;}
.oz-pm-seat{display:grid;grid-template-columns:44px 1fr 24px;gap:9px;align-items:center;}
.oz-pm-seat .lab{display:inline-flex;align-items:center;gap:5px;font:700 11px/1 var(--font-data);color:var(--ink2);}
.oz-pm-seat .lab i{width:9px;height:9px;flex:none;}
.oz-pm-seat .track{height:11px;background:var(--chip);border:1px solid var(--rule);}
.oz-pm-seat .track i{display:block;height:100%;}
.oz-pm-seat .n{font:700 12px/1 var(--font-data);color:var(--ink);text-align:right;}
.oz-pm-coalition{font:400 11px/1.5 var(--font-data);color:var(--muted);border-top:1px solid var(--rule);margin-top:10px;padding-top:10px;display:flex;gap:7px;align-items:baseline;flex-wrap:wrap;}
.oz-pm-coalition i{color:var(--accent);}
.oz-pm-coalition b{color:var(--ink);}
.oz-pm-legend-h{font:400 9px/1 var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:11px 12px 4px;}
.oz-pm-mayor{display:flex;align-items:center;gap:10px;border:1px solid var(--rule);background:var(--bg);padding:9px 11px;margin:10px 0;}
.oz-pm-mayor .av{width:32px;height:32px;flex:none;border:2px solid var(--accent);display:flex;align-items:center;justify-content:center;font:700 11px/1 var(--font-data);}
.oz-pm-mayor div{display:flex;flex-direction:column;gap:2px;min-width:0;}
.oz-pm-mayor b{font:700 13px/1.2 var(--font-data);color:var(--ink);}
.oz-pm-mayor span{font:400 11px/1.2 var(--font-data);color:var(--muted);}
.oz-map-top{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding:13px 15px;border-bottom:2px solid var(--ink);flex-wrap:wrap;}
.oz-map-title{font:700 19px/1 var(--font-head);color:var(--ink);letter-spacing:-.01em;margin-top:4px;}
.oz-map-levels{display:inline-flex;border:1px solid var(--ink);}
.oz-map-lvl{font:700 10px/1 var(--font-data);letter-spacing:.03em;background:none;border:none;color:var(--ink2);padding:8px 11px;cursor:pointer;}
.oz-map-lvl:not(:last-child){border-right:1px solid var(--rule);}
.oz-map-lvl.is-on{background:var(--ink);color:var(--bg);}

.oz-map-body{display:grid;grid-template-columns:1fr 270px;gap:0;}
.oz-map-stage{position:relative;border-right:1px solid var(--rule);background:
  radial-gradient(var(--rule) 0.6px,transparent 0.6px);background-size:22px 22px;background-color:var(--bg);}
.oz-map-svg{cursor:grab;touch-action:none;}
.oz-map-svg.is-grabbing,.oz-map-svg:active{cursor:grabbing;}
.oz-map-stage svg{display:block;width:100%;height:auto;padding:14px;}
.oz-map-stage svg path{transition:fill var(--fast) var(--ease),fill-opacity var(--fast) var(--ease);}
/* zoom controls */
.oz-map-zoom{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;z-index:2;border:1px solid var(--ink);}
.oz-map-zoom button{width:30px;height:30px;background:var(--surface);border:none;color:var(--ink);cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:16px;}
.oz-map-zoom button:not(:last-child){border-bottom:1px solid var(--rule);}
.oz-map-zoom button:hover{background:var(--accent);color:var(--bg);}
.oz-map-note{position:absolute;left:12px;bottom:10px;right:12px;font:400 10px/1.4 var(--font-data);color:var(--muted);
  display:flex;gap:6px;align-items:flex-start;}
.oz-map-note i{color:var(--accent);flex:none;margin-top:1px;}

/* regions (entity base layer) */
.oz-map-region{stroke:var(--bg);stroke-width:1.2;cursor:pointer;transition:fill-opacity var(--fast) var(--ease);fill-opacity:.6;}
.oz-map-region:hover,.oz-map-region.is-hover{fill-opacity:.8;}
.oz-map-region.is-active{fill-opacity:.92;stroke:var(--ink);stroke-width:1.5;}

/* sub layer (cantons / municipalities drawn over entities) */
.oz-map-sub{fill:color-mix(in srgb,var(--ink) 4%,transparent);stroke:var(--bg);stroke-width:1;cursor:pointer;
  transition:fill var(--fast) var(--ease);}
.oz-map-sub:hover,.oz-map-sub.is-hover{fill:color-mix(in srgb,var(--accent) 28%,transparent);}
.oz-map-sub.is-sel{fill:var(--accent);stroke:var(--ink);stroke-width:1.5;}
.oz-map-sub--m{stroke-width:.7;}
.oz-map-mklab{font:700 10px/1 var(--font-data);fill:var(--muted);paint-order:stroke;stroke:var(--bg);stroke-width:3px;pointer-events:none;}
.oz-map-mklab.is-hot{fill:var(--ink);font-size:11px;}
.oz-map-mklab--ent{font:700 14px/1 var(--font-head);fill:var(--ink);stroke-width:4px;letter-spacing:.01em;}

/* side panel */
.oz-map-side{display:flex;flex-direction:column;background:var(--header);}
.oz-map-info{padding:14px 15px;border-bottom:1px solid var(--rule);}
.oz-map-info-kind{font:400 9px/1 var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);}
.oz-map-info-name{font:700 18px/1.15 var(--font-head);color:var(--ink);margin:5px 0 12px;}
.oz-map-kv{display:flex;flex-direction:column;gap:2px;padding:5px 0;border-bottom:1px solid var(--rule);}
.oz-map-kv:last-of-type{border-bottom:none;}
.oz-map-kv span{font:400 9px/1 var(--font-display);letter-spacing:.07em;text-transform:uppercase;color:var(--muted);}
.oz-map-kv b{color:var(--ink);font:700 13px/1.3 var(--font-data);overflow-wrap:anywhere;}
.oz-map-kv b.acc{color:var(--accent);}
.oz-map-prov{display:flex;height:10px;margin:12px 0 6px;border:1px solid var(--ink);}
.oz-map-prov .seg{display:block;}
.oz-map-prov .seg.pv{background:var(--pv);}.oz-map-prov .seg.pu{background:var(--pu);}.oz-map-prov .seg.pd{background:var(--pd);}
.oz-map-prov-lab{display:flex;gap:12px;font:400 9px/1 var(--font-data);color:var(--muted);flex-wrap:wrap;}
.oz-map-prov-lab .dot{display:inline-block;width:8px;height:8px;margin-right:4px;vertical-align:-1px;}
.oz-map-prov-lab .dot.pv{background:var(--pv);}.oz-map-prov-lab .dot.pu{background:var(--pu);}.oz-map-prov-lab .dot.pd{background:var(--pd);}

.oz-map-list-wrap{flex:1;display:flex;flex-direction:column;min-height:0;}
.oz-map-search{display:flex;align-items:center;gap:7px;padding:9px 12px;border-bottom:1px solid var(--rule);color:var(--faint);font:12px/1 var(--font-data);}
.oz-map-search input{border:none;outline:none;background:none;color:var(--ink);font:inherit;flex:1;width:100%;}
.oz-map-list{list-style:none;margin:0;padding:0;overflow-y:auto;max-height:230px;}
.oz-map-list li{display:flex;align-items:center;gap:9px;padding:9px 12px;border-bottom:1px solid var(--rule);
  font:400 12px/1.2 var(--font-data);color:var(--ink);cursor:pointer;}
.oz-map-list li i{font-size:14px;color:var(--muted);}
.oz-map-list li:hover{background:color-mix(in srgb,var(--accent) 6%,transparent);}
.oz-map-list li.is-sel{background:var(--ink);color:var(--bg);}
.oz-map-list li.is-sel i{color:var(--bg);}
.oz-map-list li .cnt{margin-left:auto;font:700 11px/1 var(--font-data);color:var(--accent);}
.oz-map-list li.is-sel .cnt{color:var(--bg);}
.oz-map-list li.empty{color:var(--muted);cursor:default;justify-content:center;}

/* legend */
.oz-map-legend{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;padding:11px 15px;border-top:1px solid var(--rule);
  font:400 11px/1 var(--font-data);color:var(--ink2);}
.oz-map-legend .it{display:inline-flex;align-items:center;gap:6px;}
.oz-map-legend .sw{width:12px;height:12px;border:1px solid var(--ink);}
.oz-map-legend .sw.e-fbih{background:var(--link);}.oz-map-legend .sw.e-rs{background:var(--pu);}.oz-map-legend .sw.e-brcko{background:var(--pr);}
.oz-map-legend .it i{color:var(--muted);}

@media (max-width:680px){ .oz-map-body{grid-template-columns:1fr;} .oz-map-side{border-top:1px solid var(--rule);} }
