
/* Mapa interativo: sem bibliotecas externas; cores indicam % das seções apuradas. */
.map-panel{margin:22px 0 28px;border:1px solid #283a54;border-radius:19px;background:#111e31;overflow:hidden;box-shadow:0 12px 35px #0000001a}
.map-panel-header{padding:22px 26px 14px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.map-panel-header .map-eyebrow{font-size:11px;color:#67e6c1;letter-spacing:1.5px;font-weight:780}
.map-panel-header h3{font-size:23px;margin:6px 0 2px;line-height:1.2;letter-spacing:-.6px}
.map-panel-header p{font-size:13px;color:#9baec7;margin:4px 0}
.map-status-chip{border:1px solid #31526b;background:#132b3f;color:#b0d5da;border-radius:9px;font-size:12px;padding:8px 12px;font-weight:700}
.map-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:0}
.map-visual{padding:10px 18px 20px;min-width:0;border-right:1px solid #283951}
.map-actionbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:5px 0 0;font-size:12px;color:#a8b9ce}
.map-actionbar .map-refresh{background:#1b3650;color:#d5eef0;border:1px solid #315b74;border-radius:9px;padding:8px 11px;font-weight:680}
.map-actionbar .map-refresh:hover{background:#234a67}
.map-stage{position:relative;min-height:330px;max-height:540px;display:flex;align-items:center;justify-content:center}
#brasil-map{width:100%;height:auto;max-height:530px;min-height:300px;overflow:visible}
.map-uf{stroke:#0a1525;stroke-width:1.25;stroke-linejoin:round;cursor:pointer;transition:fill .3s ease,stroke .12s}
.map-uf:hover,.map-uf:focus-visible{stroke:#fbdb73;stroke-width:3;outline:none;filter:brightness(1.2)}
.map-uf.active{stroke:#ffd56a;stroke-width:3.8;filter:drop-shadow(0 0 2px #ffd56a55)}
.map-tooltip{position:absolute;max-width:265px;background:#071523;color:#e5f4f6;border:1px solid #4d7187;box-shadow:0 12px 35px #0008;padding:9px 12px;border-radius:8px;font-size:12px;pointer-events:none;z-index:2}
.map-tooltip[hidden]{display:none}
.map-legend{display:flex;gap:10px 15px;align-items:center;flex-wrap:wrap;justify-content:center;padding-top:8px;font-size:12px;color:#a7b7c9}
.map-scale{display:flex;gap:2px;align-items:center}.map-block{width:18px;height:12px;display:inline-block;border-radius:2px;background:#293b50}
.map-scale .map-block:nth-child(1){background:hsl(208 65% 25%)}.map-scale .map-block:nth-child(2){background:hsl(195 65% 31%)}.map-scale .map-block:nth-child(3){background:hsl(182 65% 37%)}.map-scale .map-block:nth-child(4){background:hsl(168 65% 43%)}.map-scale .map-block:nth-child(5){background:hsl(155 65% 49%)}
.map-side{padding:23px 25px;display:flex;flex-direction:column;gap:15px;min-width:0}
.map-side label{display:flex;flex-direction:column;gap:8px;font-size:12px;color:#9eb2c9;font-weight:680}
.map-side select{width:100%;height:46px;background:#0c1829;color:#f5f7fb;border:1px solid #364861;border-radius:10px;padding:0 12px}
.map-side-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.map-side-top h4{font-size:21px;letter-spacing:-.5px;margin:0}
.map-state-progress{font-size:24px;font-weight:820;color:#68e5d0;white-space:nowrap}
.map-status-note{font-size:13px;color:#b4c6d9;line-height:1.6;margin:0}
.map-state-updated{font-size:12px;color:#93a6be;margin:0}
.map-mini-candidate{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #273851;padding:10px 0;font-size:12px}
.map-mini-candidate span{color:#cbd8e8}.map-mini-candidate strong{color:#fff;text-align:right;white-space:nowrap}
.map-side a{color:#69dfc7;font-size:12px;font-weight:730;text-decoration:none}
.map-side a:hover{text-decoration:underline}
.map-side a[hidden]{display:none}
.map-help{color:#8faac0;font-size:12px;margin:10px 0 0;min-height:20px}
.map-footer{border-top:1px solid #293b52;padding:12px 25px;font-size:12px;color:#9cacc1;background:#0f1a2b;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}
.map-footer a{color:#86dbc7;text-decoration:underline}
@media(max-width:900px){.map-layout{grid-template-columns:1fr}.map-visual{border-right:0;border-bottom:1px solid #293951}.map-side{display:grid;grid-template-columns:1fr 1fr;gap:14px 22px}.map-side select,.map-side label,.map-state-message{grid-column:1/-1}}
@media(max-width:600px){.map-panel-header{padding:20px 17px 10px}.map-panel-header h3{font-size:21px}.map-visual{padding:9px 10px 15px}.map-stage{min-height:235px}.map-side{display:flex;padding:18px}.map-footer{padding:13px 18px}.map-tooltip{display:none!important}.map-state-progress{font-size:23px}}
@media(prefers-reduced-motion:reduce){.map-uf{transition:none}}


/* A seleção de estado fica unificada no filtro principal acima do mapa. */
.map-selection-hint{color:#93afc7;font-size:12px;line-height:1.6;margin:0;
  background:#16263b;border:1px solid #2b435a;border-radius:10px;padding:12px 13px}


/* Visualização por candidato com escala porcentual independente do partido. */
.map-candidate-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 0;
  padding:12px;border:1px solid #30465e;background:#17283c;border-radius:10px}
.map-candidate-controls label{font-size:12px;font-weight:760;color:#b2cbd7}
.map-candidate-controls select{flex:1;min-width:180px;max-width:100%;height:36px;
  border:1px solid #3a556e;background:#0c192b;color:#f1f8fa;border-radius:8px;padding:0 10px;font-size:12px}
.map-tooltip{white-space:pre-line;max-width:340px;line-height:1.6}
.map-mini-candidate strong{white-space:normal;min-width:75px}
.map-state-progress{font-size:15px}
@media(max-width:600px){.map-candidate-controls{flex-direction:column;align-items:stretch}.map-tooltip{display:none}}


/* Mapa eleitoral — paleta partidária descritiva, não oficial do TSE. */
.map-legend{gap:8px 14px;justify-content:flex-start}
.map-legend-parties,.map-legend-sections{display:flex;align-items:center;gap:8px 15px;flex-wrap:wrap}
.map-legend-parties[hidden],.map-legend-sections[hidden],.map-ideology-note[hidden]{display:none}
.party-key{display:inline-flex;align-items:center;gap:7px;white-space:normal}
.party-swatch{display:inline-block;width:15px;height:13px;min-width:15px;border-radius:3px;border:1px solid #ffffff24}
.party-right{background:hsl(214 77% 48%)}
.party-left{background:hsl(354 77% 48%)}
.party-unknown{background:#78879c}
.party-no-data{background:#2a3a50}
.map-ideology-note{font-size:11px;line-height:1.65;color:#92a7bc;margin:10px 0 5px}
.map-ideology-note a{color:#83d5eb;text-decoration:underline;text-underline-offset:3px}
.map-side .map-mini-candidate{align-items:flex-start;line-height:1.5}
