/* ==========================================================================
   STYLE.CSS — layout do app (Módulo 25) + peças do mapa que o prime.css não cobre.
   Só usa tokens de tokens.css: tema claro/escuro sem duplicar cores.
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

/* barra de rolagem fina e discreta em todo o app (tokens: acompanha os temas). Chromium/Edge/Safari usam os pseudo
   ::-webkit-scrollbar (polegar arredondado, trilho invisível, realce no hover); o Firefox usa scrollbar-width/color. */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track, ::-webkit-scrollbar-corner { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--color-border-default); background-clip: padding-box; border: 2px solid transparent; border-radius: var(--radius-full); }
::-webkit-scrollbar-thumb:hover { background-color: var(--color-border-strong); }
::-webkit-scrollbar-thumb:active { background-color: var(--color-text-muted); }
@supports not selector(::-webkit-scrollbar) {
    * { scrollbar-width: thin; scrollbar-color: var(--color-border-default) transparent; }
}

html, body {
    margin: 0;
    height: 100%;
    background: var(--color-bg-canvas);
    color: var(--color-text-primary);
    font-family: var(--font-family-sans);
    font-size: var(--font-size-base);
}

[hidden] { display: none !important; }

/* app de painel: a página tem exatamente a altura da tela; só rolam os painéis internos (barra lateral, análise, abas com rolagem).
   O body do tokens.css tem min-height: 100vh, que no celular (barra do navegador) passa da área visível: aqui vale 100%. */
@media screen {
    html, body { height: 100%; min-height: 0; overflow: hidden; }
}

/* ---------------------------------------------------------------- layout */

/* Módulo 25.5: header (marca · KPIs · ações) › faixa das 4 abas › filtros (retrátil) | centro (uma vista por aba).
   Na aba Mapa o centro tem o mapa e o painel direito de análise. Faixas de tela em responsive.css. */
:root { --z-gaveta: 1600; --z-modal-app: 1800; --abas-height: 42px; }
.app {
    position: relative;
    overflow: hidden;
    display: grid;
    height: 100vh;
    height: 100dvh;
    grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
    grid-template-rows: auto var(--abas-height) minmax(0, 1fr);
    grid-template-areas:
        "header header"
        "abas abas"
        "sidebar centro";
    transition: grid-template-columns var(--transition-base);
}
.app[data-filtros="fechado"] { grid-template-columns: 0 minmax(0, 1fr); }
.app[data-filtros="fechado"] .app-sidebar { visibility: hidden; border: 0; }
/* "só mapa" (F): sem filtros nem painel; o mapa ocupa tudo abaixo das abas */
.app[data-so-mapa="sim"] { grid-template-columns: 0 minmax(0, 1fr); }
.app[data-so-mapa="sim"] .app-sidebar { visibility: hidden; border: 0; }
.app[data-so-mapa="sim"] .vista--mapa { grid-template-columns: minmax(0, 1fr) 0; }
.app[data-so-mapa="sim"] .painel-direito { visibility: hidden; border: 0; }

.app-centro { grid-area: centro; position: relative; min-height: 0; overflow: hidden; }
.vista { position: absolute; inset: 0; animation: vista-entra var(--transition-base) both; }
@keyframes vista-entra { from { opacity: 0; } to { opacity: 1; } }
/* abas com rolagem (Dashboard, Cadastros, Resultados): mesmo espaçamento interno nas três */
.vista--rolagem { overflow-y: auto; overflow-x: hidden; padding: var(--space-5) var(--space-6) var(--space-8); }
.vista--rolagem > * { max-width: min(1500px, 100%); margin-left: auto; margin-right: auto; }

/* enquadramento: containers ocupam a largura disponível e nenhum filho de grid/flex força o pai a crescer */
.app-centro, .vista, .vista--rolagem > *, #cad-regionalizacao, #cad-parceiros, #resultados-parceiros { width: 100%; max-width: 100%; min-width: 0; }
.vista--rolagem > .cadastros__abas { width: auto; }
.vista--rolagem :is(.dash-card, .grafico, .hierarquia__col, .rp-kpi, .rp-cargo, .mini-painel, form, section, article) { min-width: 0; max-width: 100%; }
.vista--rolagem :is([class*="grade"], [class*="duas"], [class*="kpis"], .hierarquia) > * { min-width: 0; }
/* tabela dentro de cartão: rola dentro dele */
.vista--rolagem :is(.dash-card, .grafico, .mini-painel, .hierarquia__col):has(> table) { overflow-x: auto; }

/* Aba Mapa: mapa ocupa a aba; painel de análise = coluna fixa à direita */
.vista--mapa { display: grid; grid-template-columns: minmax(0, 1fr) var(--panel-width); transition: grid-template-columns var(--transition-base); }
.app-resumo { position: relative; min-height: 0; overflow-y: auto; border-left: var(--border-width-thin) solid var(--color-border-default); display: flex; flex-direction: column; background: var(--color-bg-primary); }

/* faixa das abas principais (abaixo do header, sobre toda a largura) */
.app-abas { grid-area: abas; display: flex; align-items: center; gap: var(--space-1); padding: 0 var(--space-5);
    background: var(--color-bg-primary); border-bottom: var(--border-width-thin) solid var(--color-border-default); overflow-x: auto; scrollbar-width: none; }
.app-abas::-webkit-scrollbar { display: none; }
.abas-principais .prime-tab { flex: 0 0 auto; font-weight: var(--font-weight-semibold); white-space: nowrap; }
/* caminho do território no meio da barra das abas (Maranhão › região › cidade…): cresce com as seleções; rola na
   horizontal se não couber, sem empurrar as abas */
.abas-caminho { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; justify-content: center; gap: 6px; padding: 0 var(--space-4);
    white-space: nowrap; overflow-x: auto; scrollbar-width: none; font-size: var(--font-size-sm); }
.abas-caminho::-webkit-scrollbar { display: none; }
.abas-caminho .prime-breadcrumb__item { flex: 0 0 auto; }
.abas-caminho .prime-breadcrumb__current { font-weight: var(--font-weight-semibold); color: var(--color-text-primary); }
.abas-caminho + .historico-filtros { margin-left: 0; }
@media (max-width: 900px) { .abas-caminho { justify-content: flex-start; padding: 0 var(--space-2); font-size: var(--font-size-xs); } }
/* histórico dos filtros (← →) à direita da barra das abas */
.historico-filtros { margin-left: auto; display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; padding-left: var(--space-3); }
.historico-filtros__rotulo { max-width: 340px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--font-size-xs); color: var(--color-text-secondary); margin-right: 4px; }
.historico-filtros__botao { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: var(--radius-full); border: 1px solid var(--color-border-default);
    background: var(--color-bg-primary); color: var(--color-text-primary); cursor: pointer; transition: background var(--transition-fast), border-color var(--transition-fast); }
.historico-filtros__botao:hover:not(:disabled) { background: var(--color-bg-hover); border-color: var(--color-accent-primary); }
.historico-filtros__botao:disabled { opacity: .35; cursor: default; }
.historico-filtros__limpar { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px 0 10px; margin-right: 4px; border-radius: var(--radius-full);
    border: 1px solid var(--color-border-default); background: var(--color-bg-primary); color: var(--color-text-secondary); font: inherit; font-size: var(--font-size-xs);
    cursor: pointer; white-space: nowrap; transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast); }
.historico-filtros__limpar:hover:not(:disabled) { color: var(--color-text-primary); background: var(--color-bg-hover); border-color: var(--color-accent-primary); }
.historico-filtros__limpar:disabled { opacity: .35; cursor: default; }
.historico-filtros--aplicando .historico-filtros__botao { cursor: progress; }

.vista__cab { margin-bottom: var(--space-4); }
.vista__titulo { margin: 0; font-size: var(--font-size-xl); }

/* Dashboard: etapas numeradas = linha de leitura */
.dash-etapa { margin-bottom: var(--space-6); }
.dash-etapa__titulo { display: flex; align-items: baseline; gap: var(--space-2); flex-wrap: wrap; margin: 0 0 var(--space-3); font-size: var(--font-size-md); }
.dash-etapa__titulo span { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: var(--radius-full); background: var(--color-bg-active); font-size: var(--font-size-xs); }
.dash-etapa__titulo small { color: var(--color-text-tertiary); font-weight: 400; font-size: var(--font-size-xs); }
.dash-duas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-5); align-items: start; }
.dash-graficos { display: grid; gap: var(--space-4); }

/* sub-abas do tamanho do texto (o .prime-tab estica com flex: 1) */
.cadastros__abas { display: inline-flex; width: auto; max-width: 100%; overflow-x: auto; gap: var(--space-1); margin-bottom: var(--space-4); }
.cadastros__abas .prime-tab { flex: 0 0 auto; padding-left: var(--space-4); padding-right: var(--space-4); }
.hierarquia { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.3fr); gap: var(--space-4); align-items: start; }
.hierarquia__col { background: var(--color-bg-primary); border: var(--border-width-thin) solid var(--color-border-default); border-radius: var(--radius-md); padding: var(--space-3); min-width: 0; }
.hierarquia__cab { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); margin-bottom: var(--space-2); }
.hierarquia__cab h3 { margin: 0; font-size: var(--font-size-sm); }
.hierarquia__passo { color: var(--color-text-tertiary); font-size: var(--font-size-xs); }
.lista-sel { list-style: none; margin: 0 0 var(--space-3); padding: 0; display: grid; gap: 2px; max-height: 52vh; overflow-y: auto; }
.lista-sel li { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); }
.lista-sel li.ativa { background: var(--color-bg-active); }
.lista-sel__nome { flex: 1; min-width: 0; text-align: left; background: none; border: 0; color: var(--color-text-primary); cursor: pointer; padding: var(--space-1) 0; font: inherit; }
.lista-sel__nome small { display: block; color: var(--color-text-tertiary); font-size: var(--font-size-xs); }
.form-inline { display: flex; gap: var(--space-2); align-items: flex-end; flex-wrap: wrap; }
.form-inline .campo { margin-bottom: var(--space-2); flex: 1; min-width: 90px; }

/* planilha de metas e resultados */
.planilha td, .planilha th { white-space: nowrap; }
.planilha .grupo-linha td { background: var(--color-bg-secondary); font-weight: var(--font-weight-semibold); }
.planilha tr.alterada td:first-child { box-shadow: inset 3px 0 0 var(--color-accent-primary); }
.planilha .subtotal { color: var(--color-text-secondary); font-weight: 400; font-size: var(--font-size-xs); }
.planilha-acoes { position: sticky; bottom: 0; display: flex; gap: var(--space-3); align-items: center; flex-wrap: wrap; padding: var(--space-3) 0; background: var(--color-bg-canvas); }
.controles { display: flex; gap: var(--space-4); flex-wrap: wrap; align-items: flex-end; margin-bottom: var(--space-4); }
.controles .campo { margin-bottom: 0; min-width: 220px; }
.matriz td { text-align: center; }
.matriz th:first-child, .matriz td:first-child { text-align: left; }
tr.clicavel { cursor: pointer; }
tr.clicavel:hover td, tr.selecionada td { background: var(--color-bg-hover); }

/* header: faixa escura com a marca (ou o candidato, com foto), 4 KPIs do recorte e as ações (Módulo 25.5.2) */
.app-header {
    grid-area: header;
    display: flex;
    align-items: center;
    gap: var(--space-5);
    min-height: var(--header-height);
    padding: var(--space-2) var(--space-5);
    background: var(--color-bg-secondary);
    border-bottom: var(--border-width-thin) solid var(--color-border-default);
}

.app-marca { display: flex; align-items: center; gap: var(--space-3); min-width: 0; flex: 0 1 260px; }
.app-marca__avatar { flex-shrink: 0; display: grid; place-items: center; width: 40px; height: 40px; overflow: hidden; border-radius: var(--radius-md);
    background: var(--color-accent-subtle); color: var(--color-text-primary); font-weight: var(--font-weight-bold); font-size: var(--font-size-sm);
    border: var(--border-width-thin) solid var(--color-accent-border); }
.app-marca__avatar img { width: 100%; height: 100%; object-fit: cover; object-position: top; }
.app-marca__texto { display: flex; flex-direction: column; min-width: 0; }
.app-marca__titulo { font-weight: var(--font-weight-bold); font-size: var(--font-size-lg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.app-marca__sub { color: var(--color-text-secondary); font-size: var(--font-size-xs); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.header-kpis { flex: 1 1 auto; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-2); min-width: 0; max-width: 760px; margin: 0 auto; }
.header-kpi { display: flex; flex-direction: column; gap: 1px; min-width: 0; padding: 6px var(--space-3); border-radius: var(--radius-md);
    background: var(--color-bg-primary); border: var(--border-width-thin) solid var(--color-border-muted); transition: border-color var(--transition-fast); }
.header-kpi:hover { border-color: var(--color-border-strong); }
.header-kpi__rotulo { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: 0.04em; }
.header-kpi__valor { font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.header-kpi__sub { font-size: var(--font-size-2xs); color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.header-acoes { display: flex; align-items: center; gap: var(--space-1); margin-left: auto; flex-shrink: 0; }
.header-acoes .prime-btn[aria-pressed="true"] { background: var(--color-accent-subtle); border-color: var(--color-accent-border); }
.btn-painel { display: none; }   /* só vira botão quando o painel é gaveta (responsive.css) */
.app-usuario { display: flex; align-items: center; gap: var(--space-3); margin-left: var(--space-2); color: var(--color-text-secondary); font-size: var(--font-size-sm); white-space: nowrap; }
/* usuário e cliente ativo no topo: minimizados num ícone (o mouse mostra; o clique abre o formato completo) */
.app-recolhe { display: inline-flex; align-items: center; gap: var(--space-2); }
.app-recolhe__icone { display: inline-grid; place-items: center; width: 30px; height: 30px; padding: 0; border-radius: var(--radius-full);
    border: 1px solid var(--color-border-default); background: var(--color-bg-tertiary); color: var(--color-text-primary); cursor: pointer;
    font-size: 14px; line-height: 1; transition: border-color .15s, background .15s; }
.app-recolhe__icone:hover { border-color: var(--color-accent-border); }
.app-recolhe__icone:focus-visible { outline: 2px solid var(--color-accent-primary); outline-offset: 2px; }
.app-recolhe__icone[aria-expanded="true"] { border-color: var(--color-accent-primary); background: var(--color-accent-subtle); }
.app-recolhe__icone--usuario { background: linear-gradient(135deg, var(--color-accent-primary), var(--color-success)); color: #fff; border-color: transparent;
    font-size: var(--font-size-2xs); font-weight: var(--font-weight-semibold); letter-spacing: .5px; }
/* cliente ativo no topo (só o Master) */
.app-grupo .prime-select { max-width: 220px; padding-top: 2px; padding-bottom: 2px; font-size: var(--font-size-xs); text-overflow: ellipsis; }
@media (max-width: 640px) { .app-grupo .prime-select { max-width: 92px; } }

/* a barra segue a largura da coluna da grade (o .prime-sidebar fixa 320px e, com coluna menor, a barra cobria o conteúdo) */
/* position: relative = os roladores internos contêm os filhos absolutos (ex.: select#f-nivel.u-sr-only); sem isso eles se
   ancoravam na página, ficavam ~1180px abaixo do topo e criavam a rolagem vertical com o espaço preto */
.app-sidebar { position: relative; grid-area: sidebar; width: 100%; max-width: 100%; min-width: 0; overflow-y: auto; overflow-x: hidden; border-right: var(--border-width-thin) solid var(--color-border-default); }

.campo { display: flex; flex-direction: column; gap: var(--space-1); margin-bottom: var(--space-3); color: var(--color-text-secondary); font-size: var(--font-size-sm); }
.campo--linha { flex-direction: row; align-items: center; gap: var(--space-2); }
.campo-ajuda { margin: 0 0 var(--space-3); color: var(--color-text-tertiary); font-size: var(--font-size-xs); line-height: var(--line-height-relaxed); overflow-wrap: anywhere; }

/* ---------------------------------------------------------------- mapa */

.app-mapa { position: relative; min-height: 0; }
.mapa { position: absolute; inset: 0; background: var(--color-bg-canvas); }


.mapa-carregando {
    position: absolute;
    inset: 0;
    z-index: 1001;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-3);
    background: var(--color-bg-canvas);
    color: var(--color-text-secondary);
}
.mapa-carregando__barra { width: 220px; height: 8px; border-radius: var(--radius-full); }

/* controles criados pelo mapa.js */
.prime-mapa-controles {
    position: absolute;
    top: var(--space-3);
    right: var(--space-3);
    z-index: 1000;
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}
.prime-mapa-controle {
    width: 36px;
    height: 36px;
    border: var(--border-width-thin) solid var(--color-border-default);
    border-radius: var(--radius-md);
    background: var(--color-bg-elevated);
    color: var(--color-text-primary);
    font-size: var(--font-size-md);
    cursor: pointer;
    transition: background var(--transition-fast);
}
.prime-mapa-controle:hover { background: var(--color-bg-hover); }
.prime-mapa-controle:focus-visible { outline: var(--focus-ring); outline-offset: var(--focus-ring-offset); }

/* rótulos diretos (nome + valor) */
/* dentro do painel "rotulosValor" do mapa (z 640, abaixo dos balões): ponto de origem da camada, sem recorte */
.prime-mapa-rotulos { position: absolute; left: 0; top: 0; width: 0; height: 0; pointer-events: none; overflow: visible; }
.prime-mapa-rotulo {
    position: absolute;
    transform: translate(-50%, -50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    font-size: var(--font-size-2xs);
    line-height: var(--line-height-tight);
    color: var(--color-text-primary);
    text-shadow: 0 0 3px var(--color-bg-canvas), 0 0 3px var(--color-bg-canvas);
    white-space: nowrap;
}
.prime-mapa-rotulo__nome { font-weight: var(--font-weight-semibold); }
.prime-mapa-rotulo__valor { font-variant-numeric: tabular-nums; color: var(--color-text-secondary); }

/* legenda criada pelo mapa.js: escondida até marcar o check "Legenda"; arrastável para qualquer ponto do mapa
   (sem posição guardada, fica logo acima do check, no canto inferior esquerdo) */
.prime-legend {
    z-index: 1000;
    max-width: 240px;
    min-width: 0;
    padding: var(--space-2) var(--space-3);
    top: auto; right: auto; bottom: 64px; left: var(--space-3);
    cursor: grab; touch-action: none; user-select: none;
}
.prime-legend[hidden] { display: none; }
.prime-legend:focus-visible { outline: var(--focus-ring); }
.prime-legend--arrastando { cursor: grabbing; box-shadow: 0 14px 32px -10px rgb(0 0 0 / 0.6) !important; opacity: .96; }
.prime-legend__cab { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.prime-legend__cab .prime-legend__title { margin: 0; font-size: var(--font-size-xs); flex: 1; }
.prime-legend__alca { color: var(--color-text-tertiary); font-size: var(--font-size-xs); line-height: 1; }
.prime-legend__corpo { margin-top: var(--space-2); }
.prime-legend__items { font-size: var(--font-size-2xs); }
.prime-legend__nota { margin-top: var(--space-2); color: var(--color-text-tertiary); font-size: var(--font-size-2xs); line-height: var(--line-height-relaxed); }
/* check "Legenda": canto inferior esquerdo do mapa */
.prime-legenda-check { position: absolute; z-index: 1000; left: var(--space-3); bottom: var(--space-5); display: inline-flex; align-items: center; gap: 6px;
    padding: 5px 10px; border: 1px solid var(--color-border-muted); border-radius: var(--radius-full); cursor: pointer; user-select: none;
    background: color-mix(in srgb, var(--color-bg-elevated) 92%, transparent); backdrop-filter: blur(6px); box-shadow: 0 6px 18px -10px rgb(0 0 0 / 0.45);
    font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); color: var(--color-text-secondary); }
.prime-legenda-check:hover { color: var(--color-text-primary); border-color: var(--color-border-default); }
.prime-legenda-check input { margin: 0; accent-color: var(--color-accent-primary); cursor: pointer; }
.prime-legend__botao {
    min-width: 24px; height: 24px; padding: 0 var(--space-1);
    border: var(--border-width-thin) solid var(--color-border-default); border-radius: var(--radius-sm);
    background: transparent; color: var(--color-text-secondary); cursor: pointer; font-size: var(--font-size-xs);
}
.prime-legend__botao:hover, .prime-legend__botao[aria-pressed="true"] { background: var(--color-bg-hover); color: var(--color-text-primary); }
.prime-legend__botao:focus-visible { outline: var(--focus-ring); }

/* tooltip do Leaflet com a pele do prime.css — À FRENTE DE TUDO: acima dos rótulos de valor (650), dos nomes,
   da legenda e dos controles; nada se sobrepõe aos dados do balão */
.leaflet-container .leaflet-tooltip-pane { z-index: 1200; }
.leaflet-tooltip.prime-map-tooltip { padding: 0; border: 0; background: none; box-shadow: none; }
.leaflet-tooltip.prime-map-tooltip::before { display: none; }
.leaflet-container { font-family: var(--font-family-sans); background: var(--color-bg-canvas); }

/* ---------------------------------------------------------------- painel */

.painel { padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-5); }
.painel__titulo { margin: 0; font-size: var(--font-size-xl); }
.painel__sub { margin: var(--space-1) 0 0; color: var(--color-text-secondary); font-size: var(--font-size-sm); }
.painel__acoes { display: flex; gap: var(--space-2); flex-wrap: wrap; }

.numeros { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); }
.numeros .prime-kpi__value { font-size: var(--font-size-lg); }

.ranking { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.ranking__linha { display: grid; grid-template-columns: 1.5rem 1fr auto; gap: var(--space-2); align-items: baseline; font-size: var(--font-size-sm); }
.ranking__pos { color: var(--color-text-tertiary); font-variant-numeric: tabular-nums; }
.ranking__nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ranking__valor { font-variant-numeric: tabular-nums; color: var(--color-text-secondary); }
.ranking__barra { grid-column: 2 / 4; height: 6px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.ranking__barra > span { display: block; height: 100%; background: var(--color-accent-primary); border-radius: inherit; }

.painel-fonte { margin-top: auto; padding: var(--space-4) var(--space-5); color: var(--color-text-tertiary); font-size: var(--font-size-2xs); line-height: var(--line-height-relaxed); border-top: var(--border-width-thin) solid var(--color-border-muted); }

/* ---------------------------------------------------------------- Bloco 9: filtros, painel, gráficos, tabelas */

.campo-par { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-2); }
.campo-pilha { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-2); }
.campo-pilha[hidden] { display: none; }
.app-sidebar select:disabled { opacity: var(--opacity-disabled, 0.5); }
#f-candidato-busca { margin-bottom: var(--space-2); }

.estado-msg { margin: 0; font-size: var(--font-size-xs); }
.estado-msg:empty { display: none; }
.estado-msg--carregando { color: var(--color-text-tertiary); }
.estado-msg--erro { color: var(--color-danger); }
.estado-msg--vazio { color: var(--color-warning); }

.secao-desabilitada { opacity: 0.6; }
.secao-desabilitada .prime-sidebar__section-header { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }


.painel-cab { padding: var(--space-5) var(--space-5) 0; }

/* refetch: mantém o conteúdo anterior esmaecido, sem piscar esqueleto */
.recarregando { opacity: 0.5; transition: opacity var(--transition-fast); pointer-events: none; }

.grafico { display: flex; flex-direction: column; gap: var(--space-2); }
.grafico__cab { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-2); }
.grafico__titulo { font-weight: var(--font-weight-semibold); font-size: var(--font-size-sm); }
.grafico__sub { color: var(--color-text-tertiary); font-size: var(--font-size-xs); }
.grafico__area { position: relative; width: 100%; }
.grafico__tabela { max-height: 320px; overflow: auto; }

.tabela { width: 100%; border-collapse: collapse; font-size: var(--font-size-xs); }
.tabela th, .tabela td { padding: var(--space-2) var(--space-2); text-align: left; border-bottom: var(--border-width-thin) solid var(--color-border-muted); vertical-align: top; }
.tabela th { position: sticky; top: 0; background: var(--color-bg-secondary); color: var(--color-text-secondary); font-weight: var(--font-weight-medium); }
.tabela .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.tabela small { color: var(--color-text-tertiary); }
.tabela--clicavel tbody tr { cursor: pointer; }
.tabela--clicavel tbody tr:hover, .tabela--clicavel tbody tr:focus-visible { background: var(--color-bg-hover); outline: none; }
.tabela tr.selecionada { background: var(--color-accent-subtle); }
.tabela-rolagem { max-height: 60vh; overflow: auto; }
/* subtotal (Zonas, Seções, Locais): preso no pé da área de rolagem, sempre visível */
.tabela__total td { position: sticky; bottom: 0; z-index: 1; background: var(--color-bg-tertiary); font-weight: var(--font-weight-bold);
    border-top: 2px solid var(--color-accent-border); color: var(--color-text-primary); }
.tabela__total td small { font-weight: var(--font-weight-normal); color: var(--color-text-tertiary); }

.prime-empty--erro .prime-empty__title { color: var(--color-danger); }

.entrada__aviso { margin: 0 0 var(--space-3); color: var(--color-success); font-size: var(--font-size-sm); }
.entrada__aviso:empty { display: none; }
.entrada__rodape { display: flex; flex-direction: column; gap: var(--space-3); }
.entrada__links { display: flex; justify-content: space-between; font-size: var(--font-size-sm); }
.entrada__links a, .campo-ajuda a { color: var(--color-text-link); }

/* ---------------------------------------------------------------- Bloco 10: grupos, abas, ranking, destaques, comparação */

.grupo { border-bottom: var(--border-width-thin) solid var(--color-border-muted); }
.grupo__titulo {
    display: flex; align-items: center; justify-content: space-between; gap: var(--space-2);
    padding: var(--space-3) var(--space-4); cursor: pointer; list-style: none;
    font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide);
    color: var(--color-text-secondary);
}
.grupo__titulo::-webkit-details-marker { display: none; }
.grupo__titulo::after { content: '▾'; transition: transform var(--transition-fast); }
.grupo:not([open]) .grupo__titulo::after { transform: rotate(-90deg); }
.grupo__titulo:focus-visible { outline: var(--focus-ring); outline-offset: -2px; }
.grupo__corpo { padding: 0 var(--space-4) var(--space-4); display: flex; flex-direction: column; gap: var(--space-2); }
.grupo__corpo .campo { margin-bottom: 0; }

/* filtros modernizados: título com hover suave, o grupo aberto ganha a tinta principal e um traço de destaque */
.app-sidebar .grupo > .grupo__titulo { position: relative; border-radius: var(--radius-md); transition: color var(--transition-fast), background var(--transition-fast); }
.app-sidebar .grupo > .grupo__titulo:hover { color: var(--color-text-primary); background: var(--color-bg-hover); }
.app-sidebar .grupo[open] > .grupo__titulo { color: var(--color-text-primary); }
.app-sidebar .grupo[open] > .grupo__titulo::before { content: ''; position: absolute; left: 4px; top: 50%; width: 3px; height: 14px; margin-top: -7px; border-radius: 2px; background: var(--color-accent-primary); }
.app-sidebar .grupo__titulo::after { font-size: 11px; color: var(--color-text-tertiary); }

/* barra lateral "premium" (2026-10-23): 280px, fundo mais escuro que o mapa (profundidade), cada grupo vira um cartão
   translúcido de canto 12px, com mais respiro; títulos e botões um degrau menores. Tokens --sidebar-* (tema claro incluso) */
.app-sidebar { background: var(--sidebar-bg); padding-block: var(--space-2) var(--space-3); }
.app-sidebar > .grupo--busca { border-bottom: 0; padding: var(--space-2) 12px var(--space-1); }
.app-sidebar > details.grupo { margin: 0 12px 10px; border: 1px solid var(--sidebar-card-border); border-radius: var(--sidebar-card-radius);
    background: var(--sidebar-card-bg); -webkit-backdrop-filter: blur(var(--blur-md)); backdrop-filter: blur(var(--blur-md));
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02) inset, 0 6px 16px -10px rgba(0, 0, 0, 0.6); }
.app-sidebar > details.grupo > .grupo__titulo { padding: 13px 16px; border-radius: calc(var(--sidebar-card-radius) - 1px);
    font-size: 10.5px; letter-spacing: 0.07em; }
.app-sidebar > details.grupo:not([open]) > .grupo__titulo { padding-block: 11px; }
.app-sidebar > details.grupo > .grupo__corpo { padding: 2px 16px 16px; gap: 10px; }
.app-sidebar > details.grupo[open] > .grupo__titulo::before { left: 6px; }
.app-sidebar .prime-btn { font-size: var(--font-size-xs); }
.app-sidebar .prime-btn--sm { font-size: var(--font-size-2xs); }
.app-sidebar .campo { font-size: var(--font-size-xs); }
/* "Mais opções" segue o mesmo cartão; os subgrupos dentro dele ficam lisos (sem cartão dentro de cartão) */
.app-sidebar > .grupo--mais > .grupo__titulo { font-size: var(--font-size-sm); letter-spacing: 0; }
.app-sidebar .grupo--sub { background: none; }

/* "Mais opções": um cartão recolhido no pé dos filtros, com os subgrupos (pouco usados) dentro */
.grupo--mais { margin: var(--space-3) var(--space-3) var(--space-4); border: 1px solid var(--color-border-muted); border-radius: var(--radius-lg); background: var(--color-bg-primary); }
.grupo--mais > .grupo__titulo { flex-wrap: wrap; row-gap: 2px; text-transform: none; letter-spacing: 0; font-size: var(--font-size-sm); }
.grupo--mais > .grupo__titulo::before { display: none; }
.grupo-mais__titulo { display: inline-flex; align-items: center; gap: 8px; }
.grupo-mais__sub { order: 3; flex-basis: 100%; padding-left: 22px; font-weight: var(--font-weight-regular, 400); font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.grupo--mais[open] .grupo-mais__sub { display: none; }
.grupo-mais__corpo { padding: 0 var(--space-2) var(--space-2); gap: 2px; }
.grupo--sub { border-bottom: 0; border-radius: var(--radius-md); }
.grupo--sub + .grupo--sub { border-top: 1px solid var(--color-border-muted); }
.grupo--sub > .grupo__titulo { padding: var(--space-2) var(--space-3); text-transform: none; letter-spacing: 0; font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-text-secondary); }
.grupo--sub > .grupo__titulo::before { display: none; }
.grupo--sub > .grupo__corpo { padding: 0 var(--space-3) var(--space-3); }
/* Ano | Tipo na 1ª linha; Turno na linha inteira, logo acima do aviso de turno (3 selects lado a lado não cabem em 280–320px) */
.campo-trio { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: var(--space-2); }
.campo-trio > :nth-child(3) { grid-column: 1 / -1; }
.app-sidebar .prime-select { text-overflow: ellipsis; }

.mapa-aviso {
    position: absolute; top: 56px; left: 50%; transform: translateX(-50%); z-index: 1002;
    max-width: min(520px, 90%); padding: var(--space-2) var(--space-3);
    background: var(--color-bg-elevated); border: var(--border-width-thin) solid var(--color-warning-border, var(--color-border-default));
    border-radius: var(--radius-md); color: var(--color-text-primary); font-size: var(--font-size-xs); box-shadow: var(--shadow-md);
}


.ranking-cand { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.ranking-cand__item {
    display: grid; grid-template-columns: 1.6rem 36px minmax(0, 1fr) auto; gap: var(--space-2); align-items: center;
    padding: var(--space-1) var(--space-2); border-radius: var(--radius-md);
}
.ranking-cand__item--escolhido { background: var(--color-accent-subtle); }
.ranking-cand__pos { color: var(--color-text-tertiary); font-size: var(--font-size-xs); font-variant-numeric: tabular-nums; }
.ranking-cand__foto { width: 36px; height: 48px; border-radius: var(--radius-sm); object-fit: cover; background: var(--color-bg-tertiary); }
.ranking-cand__foto--iniciais { display: grid; place-items: center; color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); }
.ranking-cand__texto { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ranking-cand__nome { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ranking-cand__meta { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.ranking-cand__barra { height: 4px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.ranking-cand__barra > span { display: block; height: 100%; background: var(--color-accent-primary); border-radius: inherit; }
.ranking-cand__valor { display: flex; flex-direction: column; align-items: flex-end; font-size: var(--font-size-xs); }
.ranking-cand__valor small { color: var(--color-text-tertiary); font-variant-numeric: tabular-nums; }

.destaques-controles { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); }
.destaques-lista { display: flex; flex-direction: column; gap: var(--space-4); }
.destaque { display: flex; flex-direction: column; gap: var(--space-2); padding-bottom: var(--space-3); border-bottom: var(--border-width-thin) solid var(--color-border-muted); }
.destaque--inativo { opacity: 0.7; }
.destaque__titulo { font-weight: var(--font-weight-semibold); font-size: var(--font-size-sm); }
.destaque__itens { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.destaque__item {
    display: grid; grid-template-columns: 1.6rem minmax(0, 1fr) auto; gap: var(--space-2); align-items: baseline;
    padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); cursor: pointer; font-size: var(--font-size-xs);
}
.destaque__item:hover, .destaque__item:focus-visible { background: var(--color-bg-hover); outline: none; }
.destaque__pos { color: var(--color-text-tertiary); }
.destaque__nome { display: flex; flex-direction: column; min-width: 0; }
.destaque__nome small { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.destaque__valor { font-weight: var(--font-weight-semibold); white-space: nowrap; font-variant-numeric: tabular-nums; }
.destaque__criterio summary { cursor: pointer; color: var(--color-text-link); font-size: var(--font-size-2xs); }
.destaque__criterio p { margin: var(--space-1) 0 0; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); line-height: var(--line-height-relaxed); }

/* split-screen: dois mapas lado a lado na área central */
.app-mapa.comparando .mapa:not(.mapa--b) { right: 50%; }
.comparacao { position: absolute; top: 0; right: 0; bottom: 0; left: 50%; border-left: 2px solid var(--color-bg-canvas); }
.comparacao__barra {
    position: absolute; top: var(--space-3); left: var(--space-3); right: var(--space-3); z-index: 1001;
    display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2);
    padding: var(--space-2) var(--space-3); background: var(--color-bg-overlay); border: var(--border-width-thin) solid var(--color-border-default);
    border-radius: var(--radius-md); font-size: var(--font-size-xs);
}
.comparacao__barra .campo { margin: 0; }
.comparacao__info { color: var(--color-text-secondary); flex: 1; min-width: 160px; }
.mapa--b { position: absolute; inset: 0; }

@media (max-width: 900px) {
    .app-mapa.comparando .mapa:not(.mapa--b) { right: 0; bottom: 50%; }
    .comparacao { top: 50%; left: 0; border-left: 0; border-top: 2px solid var(--color-bg-canvas); }
}

/* ---------------------------------------------------------------- Bloco 11: regionalização e parceiros */

.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.swatch { display: inline-block; width: 10px; height: 10px; border-radius: var(--radius-full); flex: none; vertical-align: middle; }
.swatch--grande { width: 18px; height: 18px; }
.grupo__acoes { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.separador { border: 0; border-top: var(--border-width-thin) solid var(--color-border-muted); margin: var(--space-2) 0; }
.acoes-linha { display: flex; gap: var(--space-1); justify-content: flex-end; white-space: nowrap; }
.aviso-edicao { padding: var(--space-2) var(--space-3); border-radius: var(--radius-md); background: var(--color-accent-subtle); color: var(--color-text-primary); font-size: var(--font-size-xs); }

.lista-parceiros { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; max-height: 260px; overflow-y: auto; }
.lista-parceiros li { display: flex; align-items: center; justify-content: space-between; gap: var(--space-1); }
.lista-parceiros label { display: flex; align-items: center; gap: var(--space-2); min-width: 0; font-size: var(--font-size-sm); cursor: pointer; }
.lista-parceiros__nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* recorte do filtro: quem o parceiro apoia no cargo/candidato escolhido; quem não apoia ninguém dele fica esmaecido */
.lista-parceiros__apoio { display: block; overflow: hidden; text-overflow: ellipsis; font-size: var(--font-size-xs); color: var(--color-text-tertiary); }
.lista-parceiros .fora-recorte .lista-parceiros__nome, .lista-parceiros .fora-recorte .swatch, tr.fora-recorte > td:not(.acoes-col) { opacity: 0.55; }
.chip--filtro { border-color: var(--color-accent-border); background: var(--color-accent-subtle); }

/* ==========================================================================
   Resultados dos parceiros (.rp-*) — a entrega principal.
   Hierarquia: título 22px › valores de KPI 26px › % de cargo 22px › texto 13px › apoio 12px. Texto só em tokens de
   texto (primário/secundário); status = ícone + % + rótulo na cor de status; superfícies em camadas (bg-secondary
   sobre o canvas), cantos 12px, bordas finas. Tabela de cidades: nada quebra linha (rola na horizontal, com a
   coluna Cidade fixa), agrupada por região, TOTAL fixo no pé.
   ========================================================================== */
.rp { display: flex; flex-direction: column; gap: 16px; max-width: 1680px; margin: 0 auto; font-size: var(--font-size-sm); color: var(--color-text-primary); }
/* ritmo único da aba: 16px entre TODOS os cartões, na vertical (aqui) e na horizontal (grades abaixo) — antes os
   blocos do corpo encostavam (0px) e cada faixa tinha um espaço diferente (12/16/24px) */
.rp > [data-corpo] { display: flex; flex-direction: column; gap: 16px; }
.rp .num { text-align: right; font-variant-numeric: tabular-nums; }

/* cabeçalho: título + recorte em chips | controles */
.rp-cab { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 24px; padding-bottom: 16px; border-bottom: 1px solid var(--color-border-muted); }
.rp-cab__titulo { margin: 0; font-size: var(--font-size-xl); font-weight: var(--font-weight-medium); letter-spacing: -0.01em; }
.rp-cab__recorte { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.rp-chip { display: inline-flex; align-items: center; height: 22px; padding: 0 9px; border-radius: var(--radius-full); border: 1px solid var(--color-border-default); background: var(--color-bg-secondary); font-size: var(--font-size-xs); color: var(--color-text-primary); white-space: nowrap; }
.rp-chip--cand { border-color: var(--color-accent-border); background: var(--color-accent-subtle); font-weight: var(--font-weight-medium); }
.rp-cab__nota { margin: 8px 0 0; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-cab__controles { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; }
.rp-campo { display: flex; flex-direction: column; gap: 6px; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-campo .prime-select { min-width: 260px; }
/* filtro do card Cidades: estadual fixo › federal › com/sem meta */
.rp-filtro-fed { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--space-3) var(--space-4); margin: 0 0 var(--space-3); padding: var(--space-2) var(--space-3);
    border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); background: var(--color-bg-secondary); }
.rp-filtro-fed__fixo, .rp-filtro-fed__campo { display: flex; flex-direction: column; gap: 4px; }
.rp-filtro-fed__rotulo { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.rp-filtro-fed .prime-select { min-width: 280px; }
/* Com meta | Sem meta | Com e sem meta numa linha só */
.rp-filtro-fed .segmentado { grid-template-columns: repeat(3, auto); margin-bottom: 0; }
.rp-filtro-fed .segmentado label { white-space: nowrap; padding-inline: var(--space-3); }
@media (max-width: 640px) { .rp-filtro-fed .prime-select { min-width: 0; width: 100%; } .rp-filtro-fed__campo { flex: 1 1 100%; } }

/* KPIs */
.rp-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: var(--space-2); }
@media (min-width: 1280px) {
    .rp-kpis:has(> :nth-child(5)) { grid-template-columns: repeat(5, minmax(0, 1fr)); }   /* com o cartão "fora da regional" */
}
.rp-kpi[data-fora] .rp-kpi__sub, .rp-kpi[data-fora-recorte] .rp-kpi__sub { white-space: normal; }
/* KPIs à esquerda (quebram em linhas conforme a largura) + pizza "Votos por região" fixa à direita */
.rp-topo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(360px, 440px); gap: 16px; align-items: stretch; }
/* grade fechada (sem buracos): "% da meta" ocupa 2 linhas à esquerda; os demais em 2×2 (2×3 com o cartão "fora da
   regional"); o último cartão estica quando sobra uma casa; a altura acompanha a pizza */
.rp-topo .rp-kpis { grid-template-columns: minmax(0, 1.2fr) repeat(2, minmax(0, 1fr)); grid-auto-rows: 1fr; margin-bottom: 0; gap: 16px; }
.rp-topo .rp-kpis:has(> :nth-child(6)) { grid-template-columns: minmax(0, 1.2fr) repeat(3, minmax(0, 1fr)); }
.rp-topo .rp-kpis > .rp-kpi { justify-content: center; }
.rp-topo .rp-kpis > :nth-child(4):last-child, .rp-topo .rp-kpis > :nth-child(6):last-child { grid-column: span 2; }
/* destaque: rótulo no topo, número no meio, barra + quanto falta no pé (ocupa a altura sem vazio) */
.rp-kpi__miolo { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.rp-kpi__pe { display: flex; flex-direction: column; gap: 6px; }
.rp-kpi__falta { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-kpi__falta strong { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; }
.rp-topo .rp-kpis > .rp-kpi--destaque { grid-row: span 2; justify-content: space-between; gap: 14px; padding: var(--space-4);
    background: linear-gradient(160deg, color-mix(in srgb, var(--cor) 9%, var(--color-bg-secondary)), var(--color-bg-secondary) 65%);
    border-color: color-mix(in srgb, var(--cor) 35%, var(--color-border-muted)); }
.rp-topo .rp-kpi--destaque .rp-kpi__valor { font-size: 40px; letter-spacing: -0.02em; }
.rp-topo .rp-kpi--destaque .rp-kpi__sub { white-space: normal; color: var(--color-text-tertiary); }
/* centralizado: rótulo, número, faixa, barra e textos no eixo do card */
.rp-topo .rp-kpis > .rp-kpi--destaque { align-items: center; text-align: center; }
.rp-topo .rp-kpi--destaque .rp-kpi__miolo { align-items: center; }
.rp-topo .rp-kpi--destaque .rp-kpi__pe { align-self: stretch; align-items: center; }
.rp-topo .rp-kpi--destaque .rp-kpi__pe .rp-barra { align-self: stretch; }
.rp-topo + .rp-notas { margin-top: -8px; }   /* a nota fica a 8px dos números de cima (o gap do corpo é 16px) */
.rp-topo:has(.rp-pizza[hidden]) { grid-template-columns: minmax(0, 1fr); }
.rp-pizza { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-4); border-radius: var(--radius-lg); border: 1px solid var(--color-border-default); min-width: 0;
    background: radial-gradient(120% 90% at 0% 0%, color-mix(in srgb, var(--color-text-primary) 4%, transparent), transparent 60%), var(--color-bg-secondary);
    box-shadow: 0 1px 2px rgb(0 0 0 / 0.12), 0 8px 24px -12px rgb(0 0 0 / 0.35); }
.rp-pizza:empty, .rp-pizza[hidden] { display: none; }
.rp-pizza__cab { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; min-width: 0; }
.rp-pizza__titulo { font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); white-space: nowrap; }
.rp-pizza__titulo span { color: var(--color-text-tertiary); margin-right: 4px; }
.rp-pizza__sub { font-size: var(--font-size-2xs); color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rp-pizza__corpo { display: flex; align-items: center; gap: var(--space-4); flex: 1; min-height: 0; }
.rp-pizza__area { position: relative; flex: 0 0 auto; width: 190px; height: 190px; }
.rp-pizza__centro { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; }
.rp-pizza__centro strong { font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); font-variant-numeric: tabular-nums; line-height: var(--line-height-tight); color: var(--color-text-primary); }
.rp-pizza__centro span { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.rp-pizza__legenda { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1; font-size: var(--font-size-xs); }
.rp-pizza__legenda li { display: grid; grid-template-columns: 12px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 4px 6px; border-radius: var(--radius-md); color: var(--color-text-secondary); cursor: default;
    transition: background var(--transition-fast); }
.rp-pizza__legenda li:hover { background: var(--color-bg-tertiary); }
.rp-pizza__cor { width: 12px; height: 12px; border-radius: 4px; }
.rp-pizza__nome { display: flex; flex-direction: column; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--color-text-primary); }
.rp-pizza__nome small { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); font-variant-numeric: tabular-nums; }
.rp-pizza__legenda strong { color: var(--color-text-primary); font-variant-numeric: tabular-nums; font-weight: var(--font-weight-semibold); }
@media (max-width: 480px) {
    .rp-pizza__corpo { flex-direction: column; }
}
@media (max-width: 900px) {
    .rp-topo { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
    .rp-topo .rp-kpis, .rp-topo .rp-kpis:has(> :nth-child(6)) { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: auto; }
    .rp-topo .rp-kpi--destaque { grid-row: auto; grid-column: span 2; }
    .rp-topo .rp-kpis > :nth-child(6):last-child { grid-column: auto; }
}
/* Bloco 13: mesma linguagem dos KPIs do Dashboard (rótulo pequeno em caixa alta, número grande, sub em uma linha) */
.rp-kpi { display: flex; flex-direction: column; gap: 4px; padding: var(--space-3) var(--space-4); border-radius: var(--radius-lg); border: 1px solid var(--color-border-muted); background: var(--color-bg-secondary); min-width: 0;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast); }
.rp-kpi__rotulo { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.rp-kpi__rotulo span, .rp-bloco__cab h3 > span[aria-hidden] { color: var(--color-text-tertiary); margin-right: 2px; }
.rp-kpi__valor { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: var(--font-size-2xl); line-height: var(--line-height-tight); font-weight: var(--font-weight-bold); font-variant-numeric: tabular-nums; }
.rp-kpi__sub { font-size: var(--font-size-2xs); color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rp-kpi--destaque { border-color: color-mix(in srgb, var(--cor) 45%, transparent); background: color-mix(in srgb, var(--cor) 6%, var(--color-bg-secondary)); }
.rp-kpi--destaque .rp-barra { height: 6px; }
.rp-status-icone { color: var(--cor); font-size: 0.85em; }
/* etiqueta de status: ícone + rótulo; a cor de status só na borda e no ícone */
.rp-status { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 9px; border-radius: var(--radius-full); border: 1px solid color-mix(in srgb, var(--cor) 55%, transparent);
    background: color-mix(in srgb, var(--cor) 10%, transparent); color: var(--color-text-primary); font-size: var(--font-size-2xs); font-weight: var(--font-weight-medium); white-space: nowrap; letter-spacing: 0; }
/* a nota fica colada aos números de cima (8px), não solta no meio de dois cartões */
.rp-notas { display: flex; flex-direction: column; gap: 6px; margin-top: -8px; }
.rp-aviso { display: flex; align-items: baseline; gap: 8px; margin: 0; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-aviso > span { display: inline-grid; place-items: center; flex-shrink: 0; width: 16px; height: 16px; border-radius: 50%; background: var(--color-bg-tertiary); color: var(--color-text-primary); font-size: 11px; font-weight: var(--font-weight-bold); }
.rp-como-ler { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-como-ler summary { width: fit-content; cursor: pointer; color: var(--color-text-link); }
.rp-como-ler ul { margin: 6px 0 0; padding-left: 18px; display: grid; gap: 3px; line-height: 1.5; }

/* barra de progresso da meta */
.rp-barra { display: block; height: 4px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.rp-barra > span { display: block; height: 100%; border-radius: inherit; }

/* blocos */
.rp-bloco { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px; border-radius: var(--radius-lg); border: 1px solid var(--color-border-muted); background: var(--color-bg-secondary); min-width: 0; }
.rp-bloco__cab { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; }
.rp-bloco__cab h3 { margin: 0; font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); }
/* interruptor "Subtotais e total" (fica à direita do cabeçalho da tabela de cidades) */
.rp-alternar { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; padding: 4px 10px 4px 6px; border: 1px solid var(--color-border-default); border-radius: var(--radius-full);
    background: var(--color-bg-primary); color: var(--color-text-primary); font: inherit; font-size: var(--font-size-xs); cursor: pointer; transition: background var(--transition-fast); }
.rp-alternar:hover { background: var(--color-bg-hover); }
.rp-alternar__trilho { position: relative; width: 28px; height: 16px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); border: 1px solid var(--color-border-strong); transition: background var(--transition-fast); }
.rp-alternar__trilho::after { content: ''; position: absolute; top: 2px; left: 2px; width: 10px; height: 10px; border-radius: 50%; background: var(--color-text-secondary); transition: transform var(--transition-fast), background var(--transition-fast); }
.rp-alternar[aria-checked="true"] .rp-alternar__trilho { background: var(--color-accent-primary); border-color: var(--color-accent-primary); }
.rp-alternar[aria-checked="true"] .rp-alternar__trilho::after { transform: translateX(12px); background: #fff; }
/* interruptores separados: "Subtotais" (o de cada região) e "Total" (a linha final) */
.rp-alternar-grupo { margin-left: auto; display: inline-flex; gap: var(--space-2); }
.rp-alternar-grupo .rp-alternar { margin-left: 0; }
.rp-tabela--sem-subtotais .rp-subtotal, .rp-tabela--sem-total .rp-total { display: none; }
/* o mesmo interruptor nos filtros: "Votos do candidato nas cores do mapa" (abaixo do candidato) */
.alternar-cores-candidato { margin: 8px 0 0; align-self: flex-start; }
.alternar-cores-candidato:disabled { opacity: .5; cursor: not-allowed; }
.alternar-cores-candidato:disabled:hover { background: var(--color-bg-primary); }
.rp-bloco__cab small { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-duas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }

/* atingimento por cargo */
.rp-cargos { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.rp-cargo { display: flex; flex-direction: column; gap: 6px; padding: 12px 14px; border-radius: var(--radius-md); border: 1px solid var(--color-border-muted); background: var(--color-bg-primary); min-width: 0; }
.rp-cargo--recorte { border-color: var(--color-accent-border); box-shadow: inset 0 0 0 1px var(--color-accent-border); }
.rp-cargo__cab { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.rp-cargo__nome { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); }
.rp-selo { padding: 2px 8px; border-radius: var(--radius-full); background: var(--color-accent-subtle); color: var(--color-text-primary); font-size: var(--font-size-xs); }
.rp-cargo__cands { font-size: var(--font-size-xs); color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rp-cargo__pct { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); font-variant-numeric: tabular-nums; }
.rp-cargo:hover, .rp-kpi:hover { border-color: var(--color-border-strong); }
.rp-cargo__sub { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
/* cards de cargo da mesma altura: barra + votos no pé (o do filtro ganha o resultado final embaixo) */
.rp-cargo > .rp-barra { margin-top: auto; }
/* card do cargo do filtro com resultado final: ocupa 2 colunas — atingimento à esquerda, resultado final à direita */
.rp-cargos:has(.rp-final) { grid-template-columns: minmax(0, 2fr) repeat(2, minmax(0, 1fr)); }
.rp-cargo:has(.rp-final) { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); column-gap: 20px; row-gap: 6px; align-content: stretch; }
.rp-cargo:has(.rp-final) > * { grid-column: 1; }
.rp-cargo:has(.rp-final) > .rp-barra { align-self: end; }
.rp-final { grid-column: 2 !important; grid-row: 1 / span 5; display: flex; flex-direction: column; justify-content: center; gap: 8px; padding-left: 20px; border-left: 1px solid var(--color-border-muted); min-width: 0; }
.rp-final__rotulo { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rp-final__grade { display: flex; flex-direction: column; gap: 7px; margin: 0; }
.rp-final__grade > div { display: grid; grid-template-columns: 62px minmax(0, 1fr); align-items: baseline; gap: 8px; }
.rp-final__grade dt { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.rp-final__grade dd { display: flex; align-items: baseline; gap: 8px; margin: 0; min-width: 0; }
.rp-final__grade strong { display: inline-flex; align-items: baseline; gap: 4px; font-size: var(--font-size-md, 15px); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; color: var(--color-text-primary); white-space: nowrap; }
.rp-final__grade strong .rp-status-icone { font-size: var(--font-size-2xs); color: var(--cor); }
.rp-final__grade small { font-size: var(--font-size-2xs); color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 900px) {
    .rp-cargos:has(.rp-final) { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 520px) {
    .rp-cargo:has(.rp-final) { grid-template-columns: minmax(0, 1fr); }
    .rp-final { grid-column: 1 !important; grid-row: auto; padding: 10px 0 0; border-left: 0; border-top: 1px solid var(--color-border-muted); }
}

/* listas por região / por parceiro */
.rp-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
/* minimalista: linhas separadas por fio fino; marca pequena | nome + votos · sub | barra curta de 3px | % */
.rp-lista__item { display: grid; grid-template-columns: 22px minmax(0, 1fr) 96px 72px; align-items: center; gap: 12px; padding: 9px 8px; border-radius: var(--radius-sm); cursor: pointer;
    transition: background var(--transition-fast); }
.rp-lista__item + .rp-lista__item { box-shadow: 0 -1px 0 var(--color-border-muted); }
.rp-lista__item:hover, .rp-lista__item:focus-visible { background: var(--color-bg-hover); box-shadow: none; outline: none; }
.rp-lista__item:hover + .rp-lista__item, .rp-lista__item:focus-visible + .rp-lista__item { box-shadow: none; }
.rp-lista__item:focus-visible { box-shadow: inset 0 0 0 1px var(--color-accent-primary); }
.rp-lista__item--sel { background: var(--color-accent-subtle); }
.rp-lista__marca { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 6px; border: 1px solid color-mix(in srgb, var(--marca) 55%, transparent);
    background: color-mix(in srgb, var(--marca) 12%, transparent); color: var(--color-text-secondary); font-size: var(--font-size-2xs); font-weight: var(--font-weight-medium); font-variant-numeric: tabular-nums; }
.rp-lista__texto { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.rp-lista__nome, .rp-lista__sub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rp-lista__nome { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); letter-spacing: 0.01em; }
.rp-lista__sub { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.rp-lista__votos { color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }
.rp-lista__barra .rp-barra { height: 3px; }
.rp-lista__valor { display: flex; justify-content: flex-end; align-items: baseline; gap: 4px; font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); font-variant-numeric: tabular-nums; white-space: nowrap; }
.rp-lista__valor .rp-status-icone { font-size: 10px; }
/* "Ver todos" do Dashboard (Indicadores.listaCurta): 10 primeiras linhas; aberto, o resto numa área com rolagem.
   Fechado, o "Mostrar mais" das Seções some (só faz sentido com a lista aberta) */
.lc--curta .lc-extra { display: none !important; }
.lc--curta { max-height: none !important; }   /* fechada: as 10 linhas inteiras, sem rolagem interna */
.lc--rolagem { max-height: 420px; overflow-y: auto; overscroll-behavior: contain; }
.lc-ver-todos { display: flex; margin: 6px auto 0; }
.lc--curta ~ .secoes-mais { display: none; }
.rp-bloco--recolhido .lc-ver-todos { display: none; }
/* Por parceiro: 4 primeiros; "Ver todos" abre o resto numa área com rolagem */
.rp-lista--curta > li:nth-child(n + 5) { display: none; }
.rp-lista--rolagem { max-height: 400px; overflow-y: auto; padding-right: 4px; overscroll-behavior: contain; }
/* os dois cards de lista com a mesma altura; rodapé (total / ver todos) sempre no pé */
.rp-duas:has(.rp-bloco--lista) { align-items: stretch; }
.rp-duas:has(.rp-bloco--recolhido) { align-items: start; }
.rp-bloco--lista > .rp-lista__total, .rp-bloco--lista > .rp-ver-todos { margin-top: auto; }
.rp-lista__total { display: grid; grid-template-columns: 22px minmax(0, 1fr) 96px 72px; align-items: center; gap: 12px; padding: 10px 8px 2px; border-top: 1px solid var(--color-border-default); }
.rp-lista__total .rp-lista__marca { border-style: dashed; }
.rp-lista__total .rp-lista__nome { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.rp-bloco--recolhido .rp-lista__total { display: none; }
.rp-ver-todos { align-self: center; display: inline-flex; align-items: center; gap: 8px; padding: 4px 10px; border: 0; border-radius: var(--radius-full);
    background: none; color: var(--color-text-tertiary); font: inherit; font-size: var(--font-size-2xs); letter-spacing: var(--letter-spacing-wide); text-transform: uppercase; cursor: pointer;
    transition: background var(--transition-fast), color var(--transition-fast); }
.rp-ver-todos:hover, .rp-ver-todos:focus-visible { background: var(--color-bg-hover); color: var(--color-text-primary); outline: none; }
.rp-ver-todos .rp-seta { width: 5px; height: 5px; margin-top: -3px; }
.rp-ver-todos .rp-seta--cima { margin-top: 2px; transform: rotate(-135deg); }
.rp-bloco--recolhido .rp-ver-todos, .rp-bloco--recolhido .rp-resumo { display: none; }
/* faixas de meta no topo da lista: texto discreto, só o ícone na cor de status */
.rp-resumo { display: flex; flex-wrap: wrap; gap: 4px 16px; padding-bottom: 2px; }
.rp-resumo__item { display: inline-flex; align-items: baseline; gap: 5px; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); white-space: nowrap; }
.rp-resumo__item .rp-status-icone { font-size: 10px; }
.rp-resumo__item strong { color: var(--color-text-primary); font-weight: var(--font-weight-medium); font-variant-numeric: tabular-nums; }
.rp-vazio-linha { padding: 10px 8px; color: var(--color-text-secondary); }

/* tabelas (matriz e cidades): nada quebra linha */
.rp-rolagem { overflow: auto; border-radius: var(--radius-md); border: 1px solid var(--color-border-muted); }
.rp-rolagem--cidades { max-height: 640px; }
.rp-tabela { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--font-size-sm); }
.rp-tabela th, .rp-tabela td { padding: 8px 12px; white-space: nowrap; text-align: left; vertical-align: middle; border-bottom: 1px solid var(--color-border-muted); }
.rp-tabela thead th { position: sticky; top: 0; z-index: 2; background: var(--color-bg-tertiary); color: var(--color-text-primary); font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); }
.rp-tabela tbody td { background: var(--color-bg-primary); }
.rp-tabela tbody tr:hover td { background: var(--color-bg-elevated); }
.rp-tabela .num { text-align: right; }
.rp-th-cand { display: block; margin-top: 2px; font-weight: var(--font-weight-regular); font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-col-nome { font-weight: var(--font-weight-regular); }
.rp-num-sec { color: var(--color-text-secondary); }
.rp-celula-sub { display: block; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-swatch { display: inline-block; width: 8px; height: 8px; margin-right: 8px; border-radius: 50%; vertical-align: middle; }
.rp-pct { display: inline-flex; align-items: baseline; gap: 3px; font-size: var(--font-size-xs); font-variant-numeric: tabular-nums; }
.rp-legenda { margin: -4px 0 0; font-size: var(--font-size-xs); color: var(--color-text-secondary); }

/* cidades: coluna Cidade fixa na rolagem horizontal; coluna do cargo do filtro realçada; grupos por região */
.rp-tabela--cidades th:first-child, .rp-tabela--cidades td.rp-col-nome { position: sticky; left: 0; z-index: 1; box-shadow: 1px 0 0 var(--color-border-muted); }
/* refinamento (mesma linguagem dos cards): cabeçalho em rótulo pequeno, fios finos, números tabulares, hierarquia
   pela tinta (primária = voto, secundária = contexto), região com a marca colorida das listas */
.rp-rolagem--cidades { border-color: var(--color-border-muted); background: var(--color-bg-primary); }
.rp-tabela--cidades { font-size: var(--font-size-sm); font-variant-numeric: tabular-nums; }
.rp-tabela--cidades th, .rp-tabela--cidades td { padding: 8px 14px; border-bottom-color: color-mix(in srgb, var(--color-border-muted) 70%, transparent); }
.rp-tabela--cidades thead th { padding-top: 11px; padding-bottom: 10px; background: var(--color-bg-secondary); color: var(--color-text-tertiary); font-size: var(--font-size-2xs); font-weight: var(--font-weight-medium);
    text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); border-bottom: 1px solid var(--color-border-default); vertical-align: bottom; }
.rp-tabela--cidades thead .rp-th-cand { text-transform: none; letter-spacing: 0; font-size: var(--font-size-2xs); color: var(--color-text-secondary); }
.rp-tabela--cidades th.rp-col-recorte { background: color-mix(in srgb, var(--color-accent-primary) 12%, var(--color-bg-secondary)); color: var(--color-text-secondary); box-shadow: inset 0 2px 0 var(--color-accent-primary); }
.rp-tabela--cidades td.rp-col-recorte { background: color-mix(in srgb, var(--color-accent-primary) 5%, var(--color-bg-primary)); }
.rp-tabela--cidades tbody tr:not(.rp-grupo):not(.rp-subtotal):hover td { background: var(--color-bg-hover); }
.rp-tabela--cidades tbody td.rp-col-nome { color: var(--color-text-primary); }
.rp-tabela--cidades .rp-voto strong { font-weight: var(--font-weight-medium); color: var(--color-text-primary); }
.rp-tabela--cidades .rp-voto__nome { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.rp-tabela--cidades .rp-voto .rp-pct { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); min-width: 52px; }
.rp-tabela--cidades .rp-pct .rp-status-icone { font-size: 9px; }
.rp-tabela--cidades .rp-swatch { width: 7px; height: 7px; }
.rp-tabela--cidades .rp-celula-sub { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.rp-tabela--cidades .rp-dif { font-weight: var(--font-weight-medium); }
/* linha da região: marca colorida + nome; fio superior separa os grupos */
.rp-tabela--cidades .rp-grupo td { padding-top: 12px; padding-bottom: 10px; background: var(--color-bg-secondary) !important; border-top: 1px solid var(--color-border-default); border-bottom: 1px solid var(--color-border-muted); font-weight: var(--font-weight-medium); }
.rp-tabela--cidades .rp-grupo:first-child td { border-top: 0; }
.rp-grupo__nome { display: inline-flex; align-items: center; gap: 10px; vertical-align: middle; }
.rp-tabela--cidades .rp-grupo .rp-seta { margin: 0 2px 3px 0; width: 6px; height: 6px; color: var(--color-text-tertiary); }
.rp-grupo__marca { flex: 0 0 auto; width: 22px; height: 22px; }
.rp-tabela--cidades .rp-grupo strong { font-weight: var(--font-weight-semibold); letter-spacing: 0.01em; }
/* subtotal e total: só fios finos, rótulo em caixa alta discreta */
.rp-tabela--cidades .rp-subtotal td { background: color-mix(in srgb, var(--color-bg-secondary) 55%, var(--color-bg-primary)) !important; border-top: 1px solid var(--color-border-muted); border-bottom: 1px solid var(--color-border-default); font-weight: var(--font-weight-medium); }
.rp-tabela--cidades .rp-subtotal td.rp-col-nome, .rp-tabela--cidades .rp-total td.rp-col-nome { font-size: var(--font-size-2xs); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); color: var(--color-text-tertiary); }
.rp-tabela--cidades .rp-subtotal td.rp-col-nome .rp-celula-sub, .rp-tabela--cidades .rp-total td.rp-col-nome .rp-celula-sub { text-transform: none; letter-spacing: 0; }
.rp-tabela--cidades .rp-total td { background: var(--color-bg-tertiary) !important; border-top: 1px solid var(--color-border-strong); font-weight: var(--font-weight-semibold); }
.rp-tabela--cidades thead th:first-child { z-index: 3; }
.rp-tabela--cidades td.rp-col-recorte { background: color-mix(in srgb, var(--color-accent-primary) 8%, var(--color-bg-primary)); }
.rp-tabela--cidades th.rp-col-recorte { background: color-mix(in srgb, var(--color-accent-primary) 22%, var(--color-bg-tertiary)); }
.rp-voto { display: flex; justify-content: flex-end; align-items: baseline; gap: 8px; }
.rp-voto + .rp-voto { margin-top: 4px; }
.rp-voto__nome { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-voto strong { font-weight: var(--font-weight-medium); }
/* OUTROS: soma da base abaixo dos 2 mais votados, mais discreta e separada por um fio */
.rp-voto--base { margin-top: 2px; padding-top: 3px; border-top: 1px dashed var(--color-border-muted); color: var(--color-text-secondary); }
.rp-voto--base strong { font-weight: var(--font-weight-regular); }
.rp-voto .rp-pct { min-width: 56px; justify-content: flex-end; color: var(--color-text-secondary); }
/* colunas de votos alinhadas (com meta, sem meta e "—"): nome | número | % em larguras fixas, à direita */
.rp-tabela--cidades .rp-voto { display: grid; grid-template-columns: minmax(0, 1fr) auto 60px; column-gap: 8px; align-items: baseline; }
.rp-tabela--cidades .rp-voto > strong { grid-column: 2; min-width: 4.5ch; text-align: right; white-space: nowrap; }
.rp-tabela--cidades .rp-voto > .rp-voto__nome { grid-column: 1; text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rp-tabela--cidades .rp-voto > .rp-pct { grid-column: 3; min-width: 0; justify-content: flex-end; white-space: nowrap; }
.rp-tabela--cidades .rp-grupo td { padding-left: 14px; padding-right: 14px; }   /* o mesmo recuo das cidades: números na mesma coluna */
.rp-tabela--cidades .rp-voto--nada strong { color: var(--color-text-tertiary); font-weight: var(--font-weight-regular); }
/* linha da região: nome (fixo à esquerda) + os totais brutos de cada coluna, sem % (o % fica no subtotal) */
.rp-grupo td { background: var(--color-bg-secondary) !important; padding: 10px 12px 7px; border-bottom: 1px solid var(--color-border-default); cursor: pointer; user-select: none; font-weight: var(--font-weight-semibold); }
.rp-grupo strong { font-weight: var(--font-weight-semibold); }
.rp-grupo .rp-grupo__info { font-size: var(--font-size-xs); font-weight: var(--font-weight-regular); color: var(--color-text-secondary); }
.rp-dif { font-weight: var(--font-weight-medium); }
/* TOTAL: logo após o último grupo, rola junto com a tabela (não fica preso no pé) */
.rp-total td { background: var(--color-bg-tertiary) !important; border-top: 2px solid var(--color-border-strong); border-bottom: 0; font-weight: var(--font-weight-medium); vertical-align: top; }
/* minimizar: cards Por região / Por parceiro e regiões da tabela (seta ▾ aberto, ▸ minimizado) */
.rp-minimizar { margin-left: auto; display: inline-grid; place-items: center; width: 26px; height: 26px; border: 1px solid transparent; border-radius: var(--radius-sm); background: none; color: var(--color-text-secondary); cursor: pointer; }
.rp-minimizar:hover, .rp-minimizar:focus-visible { border-color: var(--color-border-default); background: var(--color-bg-hover); color: var(--color-text-primary); outline: none; }
.rp-seta { display: inline-block; width: 7px; height: 7px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); transition: transform 0.15s ease; }
.rp-minimizar[aria-expanded="false"] .rp-seta, .rp-grupo[aria-expanded="false"] .rp-seta { transform: rotate(-45deg); }
.rp-bloco--recolhido .rp-lista { display: none; }
.rp-bloco--recolhido { gap: 0; }
.rp-grupo .rp-seta { margin: 0 10px 2px 2px; color: var(--color-text-secondary); }
.rp-grupo:hover td, .rp-grupo:focus-visible td { background: var(--color-bg-tertiary) !important; outline: none; }
.rp-subtotal td { background: var(--color-bg-secondary) !important; border-top: 1px solid var(--color-border-default); border-bottom: 2px solid var(--color-border-default); font-weight: var(--font-weight-medium); vertical-align: top; }
.rp-subtotal td.rp-col-nome { color: var(--color-text-secondary); }
/* lideranças agregadas: marca discreta na cidade + balão ao passar o mouse */
.rp-tabela--cidades td[data-dica] { cursor: help; }
.rp-tabela--cidades td[data-dica]:focus-visible { outline: 2px solid var(--color-accent-primary); outline-offset: -2px; }
.rp-lid-marca { display: inline-block; width: 5px; height: 5px; margin: 0 0 2px 6px; border-radius: 50%; background: var(--color-text-secondary); vertical-align: middle; }
.rp-dica { position: fixed; z-index: 1000; min-width: 220px; max-width: 320px; max-height: 360px; overflow: auto; padding: 10px 12px; border: 1px solid var(--color-border-default); border-radius: var(--radius-md); background: var(--color-bg-elevated); box-shadow: var(--shadow-lg); font-size: var(--font-size-sm); color: var(--color-text-primary); pointer-events: none; }
.rp-dica__cab { display: flex; align-items: center; gap: 4px; padding-bottom: 6px; border-bottom: 1px solid var(--color-border-muted); }
.rp-dica__cab span:last-child { margin-left: auto; padding-left: 10px; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-dica__titulo { margin: 8px 0 4px; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-dica__lista { margin: 0; padding: 0 0 0 16px; display: flex; flex-direction: column; gap: 3px; }
.rp-dica__vazio { margin: 0; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.rp-carregando { padding: 40px; text-align: center; color: var(--color-text-secondary); }

/* Dashboard › Seções (no lugar de sempre, ao lado de Zonas): todas as zonas juntas podem passar de mil linhas —
   rolagem dentro do card, nas duas direções */
#dash-secoes .tabela-rolagem { max-height: 560px; overflow: auto; }
/* Dashboard › Seções: texto (zona/total) à esquerda, ordenador à direita */
.secoes-cab { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; margin-bottom: 8px; }
.secoes-cab .campo-ajuda { margin: 0; }
.secoes-ordem { display: inline-flex; align-items: center; gap: 8px; font-size: var(--font-size-xs); color: var(--color-text-tertiary); }
.secoes-ordem .prime-select { min-width: 230px; }

/* Por região · Por parceiro · Ranking de Votos NA MESMA LINHA (três colunas); abaixo de 1200px, empilhados.
   Cada card com a sua linguagem visual: bala (meta) · status (atingimento) · pódio + barras (volume) */
.rp-duas--tres { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-areas: "regiao parceiro ranking"; }
.rp-duas--tres .rp-area-regiao { grid-area: regiao; }
.rp-duas--tres .rp-area-parceiro { grid-area: parceiro; }
.rp-duas--tres .rp-area-ranking { grid-area: ranking; }

/* 1 · Por região = GRÁFICO DE BALA: trilha, barra dos votos e o traço da meta (100%) */
.rp-balas { gap: 2px; }
.rp-bala { display: flex; flex-direction: column; gap: 6px; padding: 10px 8px; border-radius: var(--radius-sm); cursor: pointer; transition: background var(--transition-fast); }
.rp-bala + .rp-bala { box-shadow: 0 -1px 0 var(--color-border-muted); }
.rp-bala:hover, .rp-bala:focus-visible { background: var(--color-bg-hover); box-shadow: none; outline: none; }
.rp-bala:focus-visible { box-shadow: inset 0 0 0 1px var(--color-accent-primary); }
.rp-bala.rp-lista__item--sel { background: var(--color-accent-subtle); }
.rp-bala__topo { display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; align-items: center; gap: 10px; }
.rp-bala__nome { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rp-bala__pct { display: inline-flex; align-items: baseline; gap: 4px; font-size: var(--font-size-md); font-weight: var(--font-weight-semibold);
    color: var(--cor); font-variant-numeric: tabular-nums; }
.rp-bala__pct .rp-status-icone { font-size: 10px; }
.rp-bala__trilho { position: relative; display: block; height: 8px; margin-left: 32px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); }
.rp-bala__barra { position: absolute; left: 0; top: 0; bottom: 0; border-radius: inherit; background: var(--cor); opacity: 0.9; }
.rp-bala__meta { position: absolute; top: -3px; bottom: -3px; width: 2px; margin-left: -1px; border-radius: 1px; background: var(--color-text-primary); }
.rp-bala__sub { margin-left: 32px; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rp-bala--sem-meta .rp-bala__trilho { background: none; border-top: 1px dashed var(--color-border-default); height: 0; margin-top: 4px; }
.rp-bala--sem-meta .rp-bala__pct { font-size: var(--font-size-2xs); font-weight: var(--font-weight-medium); }

/* total da região na coluna estreita: marca · texto · % (a barra fica com as balas) */
.rp-duas--tres .rp-lista__total { grid-template-columns: 22px minmax(0, 1fr) auto; }
.rp-duas--tres .rp-lista__total .rp-lista__barra { display: none; }
/* Por parceiro na linha das três: cabem 8 antes do "Ver todos" (com 4, sobrava um vazio sob a lista) */
.rp-duas--tres .rp-lista--curta > li:nth-child(n + 5) { display: grid; }
.rp-duas--tres .rp-lista--curta > li:nth-child(n + 9) { display: none; }

/* 2 · Por parceiro = STATUS enxuto: número · nome · % com o ícone · ✎ (sem barra — a barra é da região e do ranking) */
.rp-lista__item--sem-barra { grid-template-columns: 22px minmax(0, 1fr) auto; }
.rp-lista__item--sem-barra.rp-lista__item--acao { grid-template-columns: 22px minmax(0, 1fr) auto 24px; }
.rp-lista__item--sem-barra .rp-lista__valor { font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); color: var(--cor); }
.rp-metas { display: grid; place-items: center; width: 24px; height: 24px; border: 1px solid transparent; border-radius: var(--radius-sm); background: none;
    color: var(--color-text-tertiary); cursor: pointer; font-size: 12px; }
.rp-metas:hover, .rp-metas:focus-visible { color: var(--color-text-primary); border-color: var(--color-border-default); background: var(--color-bg-elevated); outline: none; }

/* 3 · Ranking de Votos = lista única do 1º ao último, com barras de volume */
.rp-rank { margin-top: 4px; }
/* posição | nome + barra fina | votos e % do total dos parceiros */
.rp-rank__item { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 8px; border-radius: var(--radius-sm); cursor: pointer;
    transition: background var(--transition-fast); }
.rp-rank__item + .rp-rank__item { box-shadow: 0 -1px 0 var(--color-border-muted); }
.rp-rank__item:hover, .rp-rank__item:focus-visible { background: var(--color-bg-hover); box-shadow: none; outline: none; }
.rp-rank__item.rp-lista__item--sel { background: var(--color-accent-subtle); }
.rp-rank__pos { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); font-variant-numeric: tabular-nums; text-align: right; }
.rp-rank__texto { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.rp-rank__nome { display: flex; align-items: center; gap: 6px; font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-text-primary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rp-rank__nome .rp-swatch { flex: none; }
.rp-rank__barra { height: 3px; border-radius: 2px; background: var(--color-bg-tertiary); overflow: hidden; }
.rp-rank__barra span { display: block; height: 100%; border-radius: 2px; background: var(--color-accent-primary); }
/* votos e % do total dos parceiros na MESMA linha e no mesmo formato (tamanho, peso e cor) */
.rp-rank__valor { display: flex; flex-direction: row; align-items: baseline; justify-content: flex-end; gap: 10px; font-variant-numeric: tabular-nums; }
.rp-rank__valor strong, .rp-rank__valor small { font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); text-align: right; }
.rp-rank__valor strong { min-width: 58px; }
.rp-rank__valor small { min-width: 46px; }

/* tabela de cidades: a linha é clicável (vai para o mapa e o Dashboard) e a escolhida fica marcada */
.rp-linha-cidade { cursor: pointer; }
.rp-linha-cidade:focus-visible { outline: 1px solid var(--color-accent-primary); outline-offset: -1px; }
.rp-linha--sel > td { background: var(--color-accent-subtle) !important; }
.rp-cidade-sel { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; padding: 8px 12px;
    border: 1px solid var(--color-accent-primary); border-radius: var(--radius-md); background: var(--color-accent-subtle); font-size: var(--font-size-sm); }
.rp-cidade-sel[hidden] { display: none; }
.rp-cidade-sel__acoes { display: flex; gap: 6px; }

@media (max-width: 1200px) {
    .rp-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rp-duas { grid-template-columns: minmax(0, 1fr); }
    .rp-duas--tres { grid-template-columns: minmax(0, 1fr); grid-template-areas: "regiao" "parceiro" "ranking"; }
}
@media (max-width: 640px) {
    .rp-kpis { grid-template-columns: minmax(0, 1fr); }
    .rp-lista__item { grid-template-columns: 22px minmax(0, 1fr) 64px; }
    .rp-lista__barra { display: none; }
    .rp-campo .prime-select { min-width: 0; width: 100%; }
}

.metas { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.metas__item { display: grid; grid-template-columns: 12px minmax(0, 1fr) 72px auto; gap: var(--space-2); align-items: center; padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); cursor: pointer; font-size: var(--font-size-xs); }
.metas__item:hover, .metas__item:focus-visible { background: var(--color-bg-hover); outline: none; }
.metas__nome { display: flex; flex-direction: column; min-width: 0; }
.metas__nome small { color: var(--color-text-tertiary); }
.metas__barra { height: 6px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.metas__barra > span { display: block; height: 100%; border-radius: inherit; }
.metas__valor { white-space: nowrap; font-variant-numeric: tabular-nums; }
.status-meta { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.status-meta > span { color: var(--cor); }

.ficha-parceiro { display: flex; align-items: center; gap: var(--space-3); }
.ficha-parceiro__texto { flex: 1; min-width: 0; }
.ficha-voltar { align-self: flex-start; margin: calc(-1 * var(--space-1)) 0 var(--space-1) calc(-1 * var(--space-2)); }

/* ---------------------------------------------------------------- cadastro de parceiros (mesmo acabamento do dashboard) */

.acoes-icone { display: inline-flex; align-items: center; gap: 2px; flex-shrink: 0; }
.botao-icone { display: inline-grid; place-items: center; width: 28px; height: 28px; padding: 0; border: 0; border-radius: var(--radius-md);
    background: transparent; color: var(--color-text-tertiary); cursor: pointer; transition: background var(--transition-fast, 120ms), color var(--transition-fast, 120ms); }
.botao-icone:hover:not(:disabled), .botao-icone:focus-visible { background: var(--color-bg-hover); color: var(--color-text-primary); }
.botao-icone--perigo:hover:not(:disabled) { color: var(--color-danger); }
.botao-icone:disabled { opacity: 0.35; cursor: not-allowed; }
.lista-parceiros .botao-icone { width: 24px; height: 24px; }

/* título à esquerda; busca + "Novo parceiro" juntos à direita (o par nunca se separa; desce inteiro se faltar espaço) */
.cad-cab { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); flex-wrap: wrap; margin-bottom: var(--space-3); }
.cad-cab__texto { flex: 1 1 180px; min-width: 0; }
.cad-cab__acoes { display: flex; align-items: center; gap: var(--space-2); flex: 0 1 380px; min-width: 0; }
.cad-cab__titulo { margin: 0; font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); }
.cad-cab__sub { color: var(--color-text-tertiary); font-size: var(--font-size-xs); }
.cad-cab__busca { flex: 1 1 auto; width: auto; min-width: 0; }
.cad-cab__acoes .prime-btn { flex-shrink: 0; white-space: nowrap; }

/* tabelas largas rolam dentro do cartão, nunca a página */
.tabela-x { overflow-x: auto; max-width: 100%; }
.tabela-x > table { min-width: 860px; }
.cad-cab .prime-btn svg, .dash-card__cab h3 svg { vertical-align: -2px; }

.tabela-parceiros { width: 100%; }
.tabela-parceiros th { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); font-weight: var(--font-weight-semibold); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.tabela-parceiros td { border-color: var(--color-border-muted); vertical-align: middle; }
.tabela-parceiros tbody tr:hover td { background: var(--color-bg-hover); }
.tabela-parceiros .contato { color: var(--color-text-tertiary); font-size: var(--font-size-xs); max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tabela-parceiros td:nth-child(6) { max-width: 240px; overflow-wrap: anywhere; }
.tabela-parceiros .acoes-col { width: 1%; text-align: right; white-space: nowrap; }
.link-parceiro { display: inline-flex; align-items: center; gap: var(--space-2); padding: 0; border: 0; background: none; color: var(--color-text-primary);
    font: inherit; font-weight: var(--font-weight-semibold); cursor: pointer; text-align: left; }
.link-parceiro:hover { color: var(--color-accent-primary); }
.etiqueta { display: inline-block; padding: 1px var(--space-2); border-radius: var(--radius-full); background: var(--color-bg-tertiary);
    color: var(--color-text-secondary); font-size: var(--font-size-2xs); }

.form-parceiro { max-width: 980px; }
.form-parceiro__grade { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-5); }
.form-parceiro__acoes { display: flex; justify-content: flex-end; gap: var(--space-2); padding-top: var(--space-3); border-top: var(--border-width-thin) solid var(--color-border-muted); }
.form-parceiro .campo small { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.campo-erro { color: var(--color-danger); font-size: var(--font-size-xs); min-height: 1em; }

/* lideranças agregadas (cadastro do parceiro): campo + Adicionar › lista com ✕ */
.liderancas { margin: var(--space-4) 0 0; padding: var(--space-3) 0 0; border: 0; border-top: 1px solid var(--color-border-muted); }
.liderancas legend { padding: 0; font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-text-primary); }
.liderancas legend small { margin-left: 6px; font-weight: var(--font-weight-regular); color: var(--color-text-secondary); }
.liderancas__entrada { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) auto; gap: var(--space-2); margin-top: var(--space-2); max-width: 760px; }
.liderancas__lista { list-style: none; margin: var(--space-2) 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 6px; }
.liderancas__item { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 170px) auto; align-items: center; gap: 8px; padding: 4px 4px 4px 10px; border: 1px solid var(--color-border-muted); border-radius: var(--radius-sm); background: var(--color-bg-secondary); font-size: var(--font-size-sm); }
.liderancas__item--sem-cidade { border-color: color-mix(in srgb, #fab219 55%, transparent); }
.liderancas__nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.liderancas__cidade.prime-select { height: 28px; padding-top: 0; padding-bottom: 0; font-size: var(--font-size-xs); }
.liderancas__aviso { display: block; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.liderancas__vazio { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
@media (max-width: 640px) {
    .liderancas__entrada, .liderancas__item { grid-template-columns: minmax(0, 1fr); }
    .liderancas__lista { grid-template-columns: minmax(0, 1fr); }
}

/* tooltip do mapa: lideranças agregadas da cidade sob o mouse */
.tooltip-liderancas { margin-top: 6px; padding-top: 6px; border-top: 1px solid var(--color-border-muted); }
.tooltip-liderancas__titulo { display: block; margin-bottom: 3px; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.tooltip-liderancas__item { display: flex; align-items: baseline; gap: 6px; }
.tooltip-liderancas__item small { margin-left: auto; padding-left: 8px; font-size: var(--font-size-2xs); color: var(--color-text-secondary); }
.tooltip-liderancas__mais { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.form-parceiro [aria-invalid="true"] { border-color: var(--color-danger); }

/* ficha, apoio, regiões, vínculos e planilha: seções em cartões de fundo suave, sem bordas */
#cad-parceiros section.grafico, #cad-parceiros form.grafico {
    background: var(--color-bg-secondary); border: 0; border-radius: var(--radius-lg); padding: var(--space-4); box-shadow: none; }
#cad-parceiros .cadastro-grade { gap: var(--space-3); }
#cad-parceiros .cadastro-grade > div { display: flex; flex-direction: column; gap: var(--space-3); }
#cad-parceiros .grafico__titulo { font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); }
#cad-parceiros .grafico__sub { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }

.modal-confirmar { z-index: 3000; }
.modal-confirmar .prime-modal { max-width: 440px; }
.modal-confirmar .prime-modal__body p { margin: 0; color: var(--color-text-secondary); line-height: var(--line-height-relaxed); }
.ficha-parceiro .painel__titulo { font-size: var(--font-size-lg); }
.tabela--vinculos td { vertical-align: middle; }
.input-num { width: 88px; padding: var(--space-1) var(--space-2); text-align: right; }
.form-vinculo, .form-parceiro, .form-regiao, .form-regionalizacao { display: flex; flex-direction: column; gap: var(--space-2); }
.seletor-cor { border: 0; padding: 0; margin: 0; flex-direction: row; flex-wrap: wrap; gap: var(--space-2); }
.seletor-cor legend { width: 100%; margin-bottom: var(--space-1); }
.seletor-cor__opcao { position: relative; cursor: pointer; }
.seletor-cor__opcao input { position: absolute; opacity: 0; }
.seletor-cor__opcao .swatch { display: block; outline: 2px solid transparent; outline-offset: 2px; }
.seletor-cor__opcao input:checked + .swatch { outline-color: var(--color-text-primary); }
.seletor-cor__opcao input:focus-visible + .swatch { outline-color: var(--color-accent-primary); }

.lista-regioes { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.lista-regioes li { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); }
.lista-regioes li.ativa { background: var(--color-accent-subtle); }
.lista-regioes__nome { display: flex; flex-direction: column; min-width: 0; font-size: var(--font-size-sm); }
.lista-regioes__nome small { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }

/* ---------------------------------------------------------------- dashboard largo: aproveita a largura */


/* ---------------------------------------------------------------- dashboard executivo */

.vista--dash { background: var(--color-bg-canvas); }   /* espaçamento interno = .vista--rolagem (igual nas 3 abas com rolagem) */
.dash { display: flex; flex-direction: column; gap: var(--space-3); max-width: 1600px; margin: 0 auto; }
.dash__cab { display: flex; align-items: baseline; gap: var(--space-3); flex-wrap: wrap; }
.dash__titulo { margin: 0; font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); line-height: var(--line-height-tight); }
.dash__contexto { color: var(--color-text-tertiary); font-size: var(--font-size-xs); }

/* cartões: fundo levemente diferente, sem bordas grossas; o contraste de fundo separa as seções */
.dash-card { position: relative; display: flex; flex-direction: column; background: var(--color-bg-secondary); border-radius: var(--radius-lg); padding: var(--space-4); min-width: 0; }
.mini-numeros { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); margin: auto 0 0; padding-top: var(--space-4); }
.mini-numeros div { background: var(--color-bg-tertiary); border-radius: var(--radius-md); padding: var(--space-2) var(--space-3); }
.mini-numeros dt { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.mini-numeros dd { margin: 2px 0 0; font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; }
.mini-nota { grid-column: 1 / -1; margin: 0; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.dash-card__cab { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); margin-bottom: var(--space-3); }
.dash-card__cab h3 { margin: 0; font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); }
.dash-card__cab h3 span { color: var(--color-text-tertiary); margin-right: 2px; }
.dash-card__cab small { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); text-align: right; margin-left: auto; }
.dash-card__cab h3 small { margin-left: 0; }
.dash-card .grafico__cab .prime-btn { padding-top: 0; padding-bottom: 0; font-size: var(--font-size-2xs); }

.dash-grade3 { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.15fr) minmax(0, 1fr); gap: var(--space-3); align-items: stretch; }
.dash-grade2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); align-items: start; }
/* Zonas | Seções: as seções levam 2/3 da largura (9 colunas, a última é o bairro do local de votação); até 1279px, um
   embaixo do outro (responsive.css) */

/* KPIs: número grande, rótulo pequeno */
.dash-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--space-3); }
.kpi-exec { background: var(--color-bg-secondary); border-radius: var(--radius-lg); padding: var(--space-3) var(--space-4); display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.kpi-exec__rotulo { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.kpi-exec__valor { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); line-height: var(--line-height-tight); font-variant-numeric: tabular-nums; }
.kpi-exec__sub { color: var(--color-text-secondary); font-size: var(--font-size-2xs); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kpi-exec--lider { flex-direction: row; align-items: center; gap: var(--space-3); }
.kpi-exec--lider > span:last-child { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.kpi-exec--lider .ranking-cand__foto { width: 40px; height: 52px; flex-shrink: 0; }
.kpi-exec--escolhido { border-color: var(--color-accent-border); background: var(--color-accent-subtle); }
/* grade fechada (linguagem do Relatório de Parceiros): candidato/líder em destaque ocupando 2 linhas, 4 números em 2×2 */
.dash-kpis:has(.kpi-exec--hero) { grid-template-columns: minmax(0, 1.25fr) repeat(2, minmax(0, 1fr)); grid-auto-rows: 1fr; }
.dash-kpis .kpi-exec { border: 1px solid var(--color-border-muted); justify-content: center; gap: 4px; transition: border-color var(--transition-fast); }
.dash-kpis .kpi-exec:hover { border-color: var(--color-border-strong); }
.kpi-exec--hero { grid-row: span 2; justify-content: space-between !important; gap: 12px !important; padding: var(--space-4); }
.kpi-exec--hero.kpi-exec--escolhido { background: linear-gradient(160deg, color-mix(in srgb, var(--color-accent-primary) 12%, var(--color-bg-secondary)), var(--color-bg-secondary) 70%);
    border-color: color-mix(in srgb, var(--color-accent-primary) 40%, var(--color-border-muted)); }
.kpi-hero__id { display: flex; align-items: center; gap: 12px; min-width: 0; }
.kpi-hero__id .ranking-cand__foto { width: 48px; height: 64px; flex-shrink: 0; border-radius: var(--radius-md); }
.kpi-hero__nomes { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.kpi-hero__numeros { display: flex; flex-direction: column; gap: 2px; }
.kpi-hero__numeros .kpi-exec__valor { font-size: 34px; letter-spacing: -0.02em; }
.kpi-hero__un { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.kpi-hero__un strong { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }
.kpi-hero__pe { display: flex; flex-direction: column; gap: 6px; }
.kpi-hero__pe .kpi-exec__sub { white-space: normal; }
.kpi-hero__pe strong { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }
.kpi-hero__barra { display: block; height: 3px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.kpi-hero__barra > span { display: block; height: 100%; border-radius: inherit; background: var(--color-accent-primary); }
@media (max-width: 640px) {
    .dash-kpis:has(.kpi-exec--hero) { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: auto; }
    .kpi-exec--hero { grid-row: auto; grid-column: 1 / -1; }
}

/* 1ª dobra: destaque (com anel) | "Onde está a força" (mini mapa); embaixo, a faixa de números */
.dash-kpis:has(.dash-topo) { display: flex; flex-direction: column; gap: var(--space-3); }
.dash-topo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .8fr) minmax(0, 1.15fr); gap: var(--space-3); align-items: stretch; }
.dash-topo .kpi-exec--hero { grid-row: auto; grid-column: auto; }

/* Raio-X do voto: Presença, Concentração, Melhor desempenho e Maior colégio empilhados num cartão só,
   cada um com selo colorido, número e micrográfico */
.dash-raio > .kpi-exec { --raio: var(--color-accent-primary); position: relative; flex: 1; justify-content: center; gap: 1px;
    background: transparent; border: 0 !important; border-radius: 0; border-top: 1px solid var(--color-border-muted) !important; padding: 8px 0 8px 44px; }
.dash-raio > .kpi-exec:nth-of-type(2) { --raio: #a371f7; }
.dash-raio > .kpi-exec:nth-of-type(3) { --raio: var(--color-success); }
.dash-raio > .kpi-exec:nth-of-type(4) { --raio: var(--color-warning); }
.dash-raio > .kpi-exec .kpi-exec__rotulo > span[aria-hidden] { position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 32px; height: 32px;
    border-radius: 50%; display: grid; place-items: center; font-size: 15px; color: var(--raio); background: color-mix(in srgb, var(--raio) 16%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--raio) 35%, transparent); }
.dash-raio > .kpi-exec .kpi-exec__valor { font-size: var(--font-size-xl); }
.dash-raio > .kpi-exec .kpi-exec__valor--texto { font-size: var(--font-size-md, 15px); }
.dash-raio .kpi-micro { height: 5px; margin-top: 5px; }
.dash-raio .kpi-micro > span { background: var(--raio); }
.dash-raio .kpi-faisca { height: 22px; }
.dash-raio .kpi-faisca__area { fill: color-mix(in srgb, var(--raio) 18%, transparent); } .dash-raio .kpi-faisca__linha { stroke: var(--raio); }
.dash-raio, .dash-mapa { background: var(--color-bg-secondary); border: 1px solid var(--color-border-muted); border-radius: var(--radius-lg);
    padding: var(--space-3) var(--space-4); display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; }
.dash-topo__cab { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-2); min-width: 0; }
.dash-topo__nota { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dash-topo__pe { color: var(--color-text-secondary); font-size: var(--font-size-2xs); margin-top: auto; }
.dash-topo__pe strong { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }
@keyframes dash-crescer { from { transform: scaleX(0); } }
@keyframes dash-anel { from { stroke-dasharray: 0 999; } }

/* destaque: número grande + anel */
.kpi-hero__meio { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.dash-topo .kpi-hero__numeros .kpi-exec__valor { font-size: 40px; color: var(--color-accent-hover); }
.kpi-anel { position: relative; width: 84px; height: 84px; flex-shrink: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.kpi-anel svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.kpi-anel__fundo { fill: none; stroke: var(--color-bg-tertiary); stroke-width: 7; }
.kpi-anel__valor { fill: none; stroke: var(--color-accent-primary); stroke-width: 7; stroke-linecap: round; animation: dash-anel 1s ease-out both; }
.kpi-anel--cheio .kpi-anel__valor { stroke: var(--color-success); }
.kpi-anel__num { position: relative; font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); line-height: 1; font-variant-numeric: tabular-nums; }
.kpi-anel__rot { position: relative; font-size: 10px; color: var(--color-text-tertiary); margin-top: 2px; }
.kpi-hero__stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--color-border-muted); border-bottom: 1px solid var(--color-border-muted); }
.kpi-hero__stats > div { display: flex; flex-direction: column; gap: 1px; padding: 8px 10px; min-width: 0; }
.kpi-hero__stats > div + div { border-left: 1px solid var(--color-border-muted); }
.kpi-hero__stats b { font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); font-variant-numeric: tabular-nums; line-height: 1.15; white-space: nowrap; }
.kpi-hero__stats b small { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); font-weight: var(--font-weight-medium); }
.kpi-hero__stats span { font-size: 10px; color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dash-mapa__corpo { flex: 1; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: var(--space-3); align-items: center; }
.dash-mapa__lado { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 3px; font-size: var(--font-size-xs); counter-reset: forte; }
.dash-mapa__lado li { display: grid; grid-template-columns: 18px 10px minmax(0, 1fr) auto; align-items: center; gap: 6px; padding: 4px 6px; border-radius: var(--radius-md); counter-increment: forte; }
.dash-mapa__lado li::before { content: counter(forte) 'º'; color: var(--color-text-tertiary); font-size: 10px; font-variant-numeric: tabular-nums; }
.dash-mapa__lado li[data-cod] { cursor: pointer; } .dash-mapa__lado li:hover { background: var(--color-bg-tertiary); }
.dash-mapa__lado i { width: 10px; height: 10px; border-radius: 2px; }
.dash-mapa__lado span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dash-mapa__lado b { font-variant-numeric: tabular-nums; }
.dash-mapa__lado:empty { display: none; }
/* "Ampliar" (27/10): o cartão ocupa a área principal da tela, sobre um véu; "Voltar" ou Esc devolve */
.dash-mapa__ampliar { flex: 0 0 auto; min-height: 28px; padding: 2px 10px; border: 1px solid var(--color-border-default); border-radius: var(--radius-full);
    background: var(--color-bg-secondary); color: var(--color-text-secondary); font: inherit; font-size: var(--font-size-2xs); font-weight: var(--font-weight-semibold);
    white-space: nowrap; cursor: pointer; }
.dash-mapa__ampliar:hover, .dash-mapa__ampliar:focus-visible { color: var(--color-text-primary); border-color: var(--color-accent-border); }
.dash-mapa:not(.dash-mapa--ampliado) .dash-mapa__lado li:nth-child(n+8) { display: none; }
.dash-mapa--ampliado { position: fixed; inset: var(--space-4); z-index: var(--z-modal-app); display: flex; flex-direction: column; gap: var(--space-3);
    padding: var(--space-4) var(--space-5); background: var(--color-bg-secondary); border: 1px solid var(--color-border-default); border-radius: var(--radius-lg);
    box-shadow: 0 0 0 100vmax var(--color-bg-overlay), var(--shadow-lg); overflow: auto; }
.dash-mapa--ampliado .dash-topo__cab { align-items: center; font-size: var(--font-size-sm); }
.dash-mapa--ampliado .dash-topo__nota { font-size: var(--font-size-xs); }
.dash-mapa--ampliado .dash-mapa__ampliar { min-height: 36px; padding: 4px 16px; font-size: var(--font-size-sm); color: var(--color-text-primary); }
.dash-mapa--ampliado .dash-mapa__corpo { grid-template-columns: minmax(0, 3fr) minmax(240px, 1fr); align-items: center; }
.dash-mapa--ampliado .dash-mapa__svg { max-height: none; height: calc(100vh - 200px); }
.dash-mapa--ampliado .dash-mapa__svg path { stroke-width: .6; }
.dash-mapa--ampliado .dash-mapa__lado { font-size: var(--font-size-sm); gap: 4px; }
.dash-mapa--ampliado .dash-mapa__lado li { grid-template-columns: 26px 14px minmax(0, 1fr) auto; padding: 6px 8px; }
.dash-mapa--ampliado .dash-mapa__lado i { width: 14px; height: 14px; }
.dash-mapa--ampliado .dash-mapa__legenda { font-size: var(--font-size-xs); gap: 4px 16px; }
.dash-mapa--ampliado .dash-mapa__legenda i { width: 14px; height: 14px; }
@media (max-width: 900px) {
    .dash-mapa--ampliado { inset: var(--space-2); padding: var(--space-3); }
    .dash-mapa--ampliado .dash-mapa__corpo { grid-template-columns: 1fr; }
    .dash-mapa--ampliado .dash-mapa__svg { height: 55vh; }
}
.kpi-situacao { align-self: flex-start; margin-top: 4px; padding: 1px 8px; border-radius: var(--radius-full); font-size: 10px; font-weight: var(--font-weight-bold);
    letter-spacing: var(--letter-spacing-wide); text-transform: uppercase; background: var(--color-bg-tertiary); color: var(--color-text-secondary); }
.kpi-situacao--eleito { background: var(--color-success-subtle); color: var(--color-success); }

/* "Onde está a força": classes relativas à força média do candidato (rampa sequencial, escura → clara no tema escuro) */
/* --forca-0…5: tokens.css (a mesma escala na paleta Sequencial da aba Mapa) */
.dash-mapa { --forca-fora: transparent; }
.dash-mapa__svg { width: 100%; height: auto; max-height: 260px; display: block; }
.dash-mapa__svg path { stroke: var(--color-bg-secondary); stroke-width: .4; transition: opacity var(--transition-fast); }
.dash-mapa__svg path[data-cod] { cursor: pointer; }
.dash-mapa__svg path[data-cod]:hover { stroke: var(--color-text-primary); stroke-width: 1; }
.dash-mapa__svg path.fora { fill: var(--color-bg-tertiary); opacity: .35; }
.dash-mapa .f0 { fill: var(--forca-0); background: var(--forca-0); } .dash-mapa .f1 { fill: var(--forca-1); background: var(--forca-1); }
.dash-mapa .f2 { fill: var(--forca-2); background: var(--forca-2); } .dash-mapa .f3 { fill: var(--forca-3); background: var(--forca-3); }
.dash-mapa .f4 { fill: var(--forca-4); background: var(--forca-4); } .dash-mapa .f5 { fill: var(--forca-5); background: var(--forca-5); }
.dash-mapa__legenda { display: flex; flex-wrap: wrap; gap: 2px 8px; font-size: 10px; color: var(--color-text-tertiary); }
.dash-mapa__legenda span { display: inline-flex; align-items: center; gap: 3px; }
.dash-mapa__legenda i { width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
.dash-mapa__vazio { flex: 1; display: grid; place-items: center; color: var(--color-text-tertiary); font-size: var(--font-size-xs); min-height: 160px; }
.dash-mapa__barras { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; font-size: var(--font-size-xs); }
.dash-mapa__barras li { display: grid; grid-template-columns: 70px minmax(0, 1fr) 48px; gap: 8px; align-items: center; }
.dash-mapa__barras li > span:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.dash-mapa__trilho { height: 10px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.dash-mapa__trilho > span { display: block; height: 100%; border-radius: inherit; transform-origin: left; animation: dash-crescer .8s ease-out both; }

/* faixa de números: micrográficos */
.kpi-micro { display: block; height: 4px; margin-top: 4px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.kpi-micro > span { display: block; height: 100%; border-radius: inherit; background: var(--color-accent-primary); transform-origin: left; animation: dash-crescer .8s ease-out both; }
.kpi-faisca { display: block; width: 100%; height: 26px; margin-top: 2px; }
.kpi-faisca__area { fill: var(--color-accent-subtle); } .kpi-faisca__linha { fill: none; stroke: var(--color-accent-primary); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
@media (prefers-reduced-motion: reduce) {
    .dash-mapa__trilho > span, .kpi-micro > span, .kpi-anel__valor { animation: none; }
}
/* topo com 3 colunas estreitas: os 4 números do destaque em 2×2 */
.kpi-hero__stats > div:nth-child(3) { border-left: 0; }
.kpi-hero__stats > div:nth-child(n+3) { border-top: 1px solid var(--color-border-muted); }
@media (max-width: 1279px) {
    .dash-topo { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
    .dash-topo .dash-mapa { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
    .dash-topo { grid-template-columns: minmax(0, 1fr); }
}

/* cartões recolhíveis (Leitura executiva, Zonas, Seções, Locais): fechados por padrão; o cabeçalho abre e fecha.
   O corpo cresce (grid 0fr → 1fr) e os itens surgem em sequência */
.recolhivel__cab { cursor: pointer; user-select: none; align-items: center; }
.recolhivel__cab small + .recolhivel__botao { margin-left: 0; }
/* Zonas | Seções lado a lado (as Seções mais largas: têm a coluna Zona e o local no rótulo); até 1279px, empilhados */
/* Zonas nunca abaixo da largura da tabela dela (7 colunas ≈ 410px + margens); as Seções ficam com o resto */
#dash-etapa-detalhe, #dash-etapa-detalhe:not([hidden]) { grid-template-columns: minmax(445px, 1fr) minmax(0, 1.5fr); align-items: stretch; }
/* os dois cartões com a mesma altura: o corpo do mais curto (Zonas) ocupa o resto e o "Como ler" vai para o pé */
#dash-etapa-detalhe > .recolhivel--aberto > .recolhivel__corpo { flex: 1 1 auto; }
#dash-etapa-detalhe > .recolhivel--aberto .recolhivel__dentro { display: flex; flex-direction: column; height: 100%; }
#dash-etapa-detalhe > .recolhivel--aberto .recolhivel__dentro > div { flex: 1 1 auto; display: flex; flex-direction: column; }
#dash-etapa-detalhe .recolhivel__dentro .an-ler { margin-top: auto; }
#dash-zonas tfoot td:first-child { white-space: nowrap; }
/* vão antes do total da tabela mais curta (app.js › alinharTotaisDetalhe): os dois totais na mesma altura */
.tabela__vao td { padding: 0 !important; border: 0 !important; line-height: 0; font-size: 0; background: none !important; }
#dash-etapa-detalhe .tabela-rolagem:has(.tabela__vao):not(.lc--rolagem) { max-height: none; }
/* Zonas | Seções: todas as colunas à vista em qualquer largura — o título quebra (o nome do candidato vai para baixo),
   o "de 256" da posição desce para a 2ª linha e as células ficam mais justas */
#dash-etapa-detalhe .tabela th, #dash-etapa-detalhe .tabela td { padding: 6px 6px; }
#dash-etapa-detalhe .tabela th.num { white-space: normal; }
#dash-etapa-detalhe .tabela th small { display: block; }
#dash-etapa-detalhe .tabela td.num small { display: block; }
@media (max-width: 1279px) { #dash-etapa-detalhe, #dash-etapa-detalhe:not([hidden]) { grid-template-columns: minmax(0, 1fr); } }
.recolhivel__cab:hover .recolhivel__botao { border-color: var(--color-accent-border); color: var(--color-text-primary); }
.recolhivel__botao { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: var(--radius-full);
    border: 1px solid var(--color-border-muted); background: var(--color-bg-tertiary); color: var(--color-text-secondary);
    font: inherit; font-size: var(--font-size-2xs); font-weight: var(--font-weight-semibold); cursor: pointer; white-space: nowrap;
    transition: border-color var(--transition-fast), color var(--transition-fast), background var(--transition-fast); }
.recolhivel__botao::after { content: '▾'; transition: transform .35s ease; }
.recolhivel--aberto .recolhivel__botao { background: var(--color-accent-subtle); color: var(--color-accent-hover); border-color: var(--color-accent-border); }
.recolhivel--aberto .recolhivel__botao::after { transform: rotate(180deg); }
.recolhivel:not(.recolhivel--aberto) .recolhivel__botao { animation: recolhivel-chamar 2.4s ease-in-out 1s 2; }
.recolhivel__corpo { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .5s cubic-bezier(.2, .8, .2, 1); }
.recolhivel--aberto > .recolhivel__corpo { grid-template-rows: 1fr; }
.recolhivel__dentro { min-height: 0; overflow: hidden; opacity: 0; transform: translateY(-10px) scale(.99); transform-origin: top;
    transition: opacity .3s ease, transform .5s cubic-bezier(.2, .8, .2, 1); }
.recolhivel--aberto .recolhivel__dentro { opacity: 1; transform: none; transition-delay: .08s; }
.recolhivel:not(.recolhivel--aberto) > .dash-card__cab { margin-bottom: 0; }
/* só as primeiras linhas das tabelas animam (seções podem ter centenas: memória do notebook) */
.recolhivel--aberto .leitura-exec__item, .recolhivel--aberto .recolhivel__dentro tbody tr:nth-child(-n+15) { animation: recolhivel-surgir .45s cubic-bezier(.2, .8, .2, 1) both; }
.recolhivel--aberto .leitura-exec__item:nth-child(2) { animation-delay: .07s; } .recolhivel--aberto .leitura-exec__item:nth-child(3) { animation-delay: .14s; }
.recolhivel--aberto .leitura-exec__item:nth-child(4) { animation-delay: .21s; } .recolhivel--aberto .leitura-exec__item:nth-child(5) { animation-delay: .28s; }
.recolhivel--aberto .leitura-exec__item:nth-child(6) { animation-delay: .35s; }
@keyframes recolhivel-surgir { from { opacity: 0; transform: translateY(8px); } }
@keyframes recolhivel-chamar { 0%, 100% { box-shadow: 0 0 0 0 transparent; } 50% { box-shadow: 0 0 0 4px var(--color-accent-subtle); } }
@media (prefers-reduced-motion: reduce) {
    .recolhivel__corpo, .recolhivel__dentro, .recolhivel__botao::after { transition: none; }
    .recolhivel--aberto .leitura-exec__item, .recolhivel--aberto .recolhivel__dentro tbody tr:nth-child(-n+15), .recolhivel:not(.recolhivel--aberto) .recolhivel__botao { animation: none; }
}

/* candidato do filtro (Resumo e Dashboard): foto oficial + resultado completo */
.cand-destaque { display: flex; gap: var(--space-3); align-items: center; }
.cand-destaque__foto.ranking-cand__foto { width: 72px; height: 96px; flex-shrink: 0; border-radius: var(--radius-md); font-size: var(--font-size-lg); }
.cand-destaque__texto { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cand-destaque__rotulo { font-size: var(--font-size-xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: 0.04em; }
.cand-destaque__nome { font-size: var(--font-size-lg); color: var(--color-text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cand-destaque__meta, .cand-destaque__rel { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.cand-destaque__votos { font-size: var(--font-size-sm); color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }
.cand-destaque__votos strong { color: var(--color-text-primary); }
.resumo-candidato { padding: var(--space-3); margin-bottom: var(--space-3); border: 1px solid var(--color-accent-border); border-radius: var(--radius-md); background: var(--color-accent-subtle); }
.dash-candidato { padding: var(--space-4); border-color: var(--color-accent-border); }
.resumo-cidades { margin-top: var(--space-3); }
/* lista de cidades (ou zonas) com votos em ordem decrescente */
.lista-cidades { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.lista-cidades--rolagem { max-height: 520px; overflow-y: auto; }
.lista-cidades__item { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: var(--space-2); align-items: center; padding: 6px var(--space-1); border-bottom: 1px solid var(--color-border-muted); font-size: var(--font-size-sm); }
.lista-cidades__item[data-codigo] { cursor: pointer; }
.lista-cidades__item[data-codigo]:hover, .lista-cidades__item[data-codigo]:focus-visible { background: var(--color-bg-hover); outline: none; }
.lista-cidades__item--marcado { background: var(--color-accent-subtle); }
.lista-cidades__pos { color: var(--color-text-tertiary); font-size: var(--font-size-xs); font-variant-numeric: tabular-nums; }
.lista-cidades__texto { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.lista-cidades__nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--color-text-primary); }
.lista-cidades__texto small { color: var(--color-text-tertiary); font-size: var(--font-size-xs); }
.lista-cidades__barra { height: 3px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.lista-cidades__barra > span { display: block; height: 100%; background: var(--color-accent-primary); border-radius: inherit; }
.lista-cidades__valor { display: flex; flex-direction: column; align-items: flex-end; font-variant-numeric: tabular-nums; }
.lista-cidades__valor small { color: var(--color-text-tertiary); font-size: var(--font-size-xs); }
/* "%" = participação da cidade (ou zona) no total geral de votos do candidato: mesmo formato dos votos (<strong>) */
.lista-cidades__parte { font-variant-numeric: tabular-nums; }
/* ===== Bloco 13B: exportação (menu), tour (Shepherd no tema do sistema) e modo de captura ===== */
.exportar { position: relative; }
.exportar-menu { position: absolute; z-index: 1300; top: calc(100% + 6px); right: 0; width: 240px; padding: 6px; border: 1px solid var(--color-border-default); border-radius: var(--radius-lg);
    background: var(--color-bg-elevated); box-shadow: 0 16px 36px -14px rgb(0 0 0 / 0.6); display: flex; flex-direction: column; gap: 2px; animation: primeFadeIn 0.12s ease-out; }
.exportar-menu[hidden] { display: none; }
.exportar-menu button { display: grid; grid-template-columns: 20px minmax(0, 1fr); grid-template-areas: "ic nome" "ic sub"; align-items: center; column-gap: 8px; padding: 7px 10px;
    border: 0; border-radius: var(--radius-md); background: none; color: var(--color-text-primary); font: inherit; font-size: var(--font-size-sm); text-align: left; cursor: pointer; }
.exportar-menu button > span { grid-area: ic; color: var(--color-text-tertiary); text-align: center; }
.exportar-menu button small { grid-area: sub; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.exportar-menu button:hover, .exportar-menu button:focus-visible { background: var(--color-bg-hover); outline: none; }
.exportar-menu button:focus-visible { box-shadow: inset 0 0 0 1px var(--color-accent-primary); }
/* 1ª visita: o botão do tour pulsa de leve (nunca abre sozinho) */
.btn-tour--novo { position: relative; }
.btn-tour--novo::after { content: ''; position: absolute; top: 3px; right: 3px; width: 7px; height: 7px; border-radius: 50%; background: var(--color-accent-primary); box-shadow: 0 0 0 0 var(--color-accent-primary); animation: tourPulso 2s infinite; }
@keyframes tourPulso { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-accent-primary) 60%, transparent); } 70% { box-shadow: 0 0 0 7px transparent; } 100% { box-shadow: 0 0 0 0 transparent; } }
@media (prefers-reduced-motion: reduce) { .btn-tour--novo::after { animation: none; } .exportar-menu { animation: none; } }
/* captura (PNG/PDF): sem controles e popovers por cima do conteúdo */
body.exportando .leaflet-control-container, body.exportando .prime-mapa-controles, body.exportando .prime-legend__botao, body.exportando .prime-legend__alca,
body.exportando .prime-legenda-check, body.exportando .prime-toast-container { visibility: hidden !important; }
/* na imagem a lista já sai inteira: o botão de expandir não faz sentido */
body.exportando .rp-ver-todos { display: none !important; }
/* texto só para leitor de tela: o html2canvas ignora o recorte (clip) e o desenharia por cima dos títulos */
body.exportando .u-sr-only, body.exportando .sr-only { display: none !important; }
/* tour (Shepherd.js) com os tokens do sistema */
.shepherd-element.tour-passo { max-width: 360px; border-radius: var(--radius-lg); background: var(--color-bg-elevated); border: 1px solid var(--color-border-default); box-shadow: 0 18px 44px -16px rgb(0 0 0 / 0.7); }
.tour-passo .shepherd-content { border-radius: var(--radius-lg); background: transparent; }
.tour-passo .shepherd-header { padding: 14px 16px 4px !important; background: transparent !important; }
.tour-passo .shepherd-title { color: var(--color-text-primary); font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); }
.tour-passo .shepherd-cancel-icon { color: var(--color-text-tertiary); }
.tour-passo .shepherd-cancel-icon:hover { color: var(--color-text-primary); }
.tour-passo .shepherd-text { padding: 4px 16px 8px; color: var(--color-text-secondary); font-size: var(--font-size-sm); line-height: var(--line-height-relaxed); }
.tour-passo .shepherd-text p { margin: 0 0 6px; }
.tour-passo__conta { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.tour-passo .shepherd-footer { padding: 4px 16px 14px; gap: 8px; }
.tour-passo .shepherd-arrow::before { background: var(--color-bg-elevated); border: 1px solid var(--color-border-default); }
.shepherd-button.tour-botao { margin: 0; padding: 6px 14px; border-radius: var(--radius-md); background: var(--color-accent-primary); color: #fff; font: inherit; font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); }
.shepherd-button.tour-botao:not(:disabled):hover { background: color-mix(in srgb, var(--color-accent-primary) 85%, #000); color: #fff; }
.shepherd-button.tour-botao--fantasma { background: transparent; color: var(--color-text-secondary); border: 1px solid var(--color-border-default); }
.shepherd-button.tour-botao--fantasma:not(:disabled):hover { background: var(--color-bg-hover); color: var(--color-text-primary); }
.shepherd-modal-overlay-container.shepherd-modal-is-visible { opacity: 0.6; }
/* ===== Mapa modernizado (mesma linguagem das outras abas): legenda compacta, resumo em fios finos, balão leve ===== */
.prime-legend { min-width: 0; width: 264px; padding: 10px 12px; border-color: var(--color-border-muted); border-radius: var(--radius-lg);
    background: color-mix(in srgb, var(--color-bg-elevated) 92%, transparent); backdrop-filter: blur(6px); box-shadow: 0 8px 24px -10px rgb(0 0 0 / 0.45); }
.prime-legend:has(.leg-rampa), .prime-legend:has(.legenda-regioes) { width: 300px; }
.prime-legend__cab .prime-legend__title { font-size: var(--font-size-2xs); font-weight: var(--font-weight-medium); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.legenda-escala { display: flex; flex-direction: column; gap: 4px; }
.legenda-escala__barra { display: flex; height: 10px; border-radius: var(--radius-full); overflow: hidden; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-text-primary) 8%, transparent); }
.legenda-escala__barra span { flex: 1; cursor: help; transition: transform var(--transition-fast); }
.legenda-escala__barra span:hover { transform: scaleY(1.35); }
.legenda-escala__marcas { display: flex; justify-content: space-between; font-size: var(--font-size-2xs); color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }
.legenda-escala__pe { display: flex; align-items: center; gap: 6px; margin-top: 2px; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.legenda-escala__sem { width: 12px; height: 8px; border-radius: 2px; border: 1px solid var(--color-border-muted); }
.prime-legend--escala .prime-legend__nota { margin-top: 6px; }
/* composição do fundo: o entorno do Maranhão aparece como contexto — OpenFreeMap (vetorial, MapLibre GL), estilo
   "dark" no tema escuro e "positron" no claro, já no tom certo (sem filtro); os nomes do entorno vêm no próprio estilo,
   sob as regiões; e o estado "levantado" do fundo por uma sombra projetada suave (a peça sobre a mesa). */
#mapa.leaflet-container { background: var(--color-bg-canvas); }
/* o contêiner do MapLibre é posicionado pelo Leaflet (translate3d a partir do canto): tem de ser absoluto — a regra
   .maplibregl-map do maplibre-gl.css o deixaria relativo e o fundo sairia deslocado */
.leaflet-pane > .leaflet-gl-layer.maplibregl-map { position: absolute; left: 0; top: 0; }
.leaflet-gl-layer .maplibregl-canvas { outline: none; }
#mapa .leaflet-overlay-pane canvas { filter: drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55)) drop-shadow(0 0 1px rgba(0, 0, 0, 0.5)); }
:root[data-theme="light"] #mapa.leaflet-container { background: #eef0f2; }
:root[data-theme="light"] #mapa .leaflet-overlay-pane canvas { filter: drop-shadow(0 6px 14px rgba(15, 23, 42, 0.22)) drop-shadow(0 0 1px rgba(15, 23, 42, 0.25)); }
/* na exportação a sombra fica de fora (o html2canvas não desenha filtros) — sem diferença de cor */
/* nomes das maiores cidades sobre o mapa: texto pequeno em caixa alta com contorno (legível em qualquer cor) */
.mapa-nome { pointer-events: none; }
.mapa-nome span { position: absolute; left: 0; top: 0; transform: translate(-50%, -50%); white-space: nowrap; font-size: 10px; font-weight: var(--font-weight-semibold);
    letter-spacing: 0.04em; color: #fff; text-shadow: 0 0 3px rgb(0 0 0 / 0.95), 0 0 6px rgb(0 0 0 / 0.7), 0 1px 1px rgb(0 0 0 / 0.9); }
:root[data-theme="light"] .mapa-nome span { color: #1f2328; text-shadow: 0 0 3px #fff, 0 0 6px rgb(255 255 255 / 0.9), 0 1px 1px #fff; }
/* nome da região na visão macro: a mesma tipografia dos nomes de cidade (família do sistema, semibold, sombra para
   ler sobre qualquer cor), um degrau maior; neutras (DIVERSOS, OUTROS) mais discretas */
/* nome do polo (só ao passar o mouse): fonte LEVE (peso médio, espaçada), sombra projetada suave e entrada sutil */
.mapa-nome--regiao span { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); letter-spacing: 0.08em; text-shadow: none;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.85)) drop-shadow(0 0 6px rgba(0, 0, 0, 0.45)); animation: nome-polo-entra 160ms ease-out; }
@keyframes nome-polo-entra { from { opacity: 0; transform: translate(-50%, -40%); } to { opacity: 1; transform: translate(-50%, -50%); } }
@media (prefers-reduced-motion: reduce) { .mapa-nome--regiao span { animation: none; } }
/* visão macro: a caixa de detalhe fica vazia — não aparece */
.leaflet-tooltip.prime-map-tooltip:empty { display: none !important; }
/* o nome da região fica sempre SOBRE a cor dos polos (escura ou clara): branco com sombra escura nos dois temas */
:root[data-theme="light"] .mapa-nome--regiao span { color: #fff; text-shadow: none;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.85)) drop-shadow(0 0 6px rgba(0, 0, 0, 0.45)); }
/* neutras: um degrau menores e mais leves; mesma cor/sombra dos nomes de cidade (lê sobre o cinza cheio de OUTROS) */
.mapa-nome--regiao-neutra span { font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); opacity: 0.9; }
/* nome do polo no tooltip padrão do mapa: quadradinho na cor do polo + nome, na tipografia do sistema */
.tt-polo { display: inline-flex; align-items: center; gap: 6px; }
.tt-polo__cor { width: 10px; height: 10px; flex: none; border-radius: 2px; box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.12); }
.prime-map-tooltip__nota { margin-top: var(--space-2); font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }

/* legenda nas duas camadas: macro = polos (espelho do mapa); micro = matriz região × tons */
.leg-polos { display: grid; gap: 6px; margin: 2px 0 4px; }
.leg-polos__item { display: flex; align-items: center; gap: 8px; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.leg-polos__cor { width: 14px; height: 14px; flex: none; border-radius: 3px; border: 1px solid; }
.leg-polos__item--neutro .leg-polos__cor { border-width: 1px; }
.leg-polos__item--neutro .leg-polos__nome { color: var(--color-text-tertiary); }
.mapa--duas-camadas.mapa--macro .leg-rampa, .mapa--duas-camadas.mapa--macro .leg-camadas--micro,
.mapa--duas-camadas:not(.mapa--macro) .leg-polos, .mapa--duas-camadas:not(.mapa--macro) .leg-camadas--macro { display: none; }
.leg-camadas { display: block; margin-top: 6px; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
/* botão ▦ "cidades sem aproximar": só existe com a regional em duas camadas; ligado = destaque e a nota própria */
.prime-mapa-controle--cidades { display: none; }
.mapa--duas-camadas .prime-mapa-controle--cidades { display: inline-flex; }
.prime-mapa-controle--cidades[aria-pressed="true"] { background: var(--color-accent-subtle); border-color: var(--color-accent-border); color: var(--color-accent-primary); }
.leg-camadas--fixo, .mapa--cidades-sempre .leg-camadas--micro { display: none; }
.mapa--duas-camadas.mapa--cidades-sempre .leg-camadas--fixo { display: block; }
/* Resumo (coluna da direita): 4 números em 2×2 com fios finos, rótulo curto numa linha */
.resumo-numeros { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0 0 var(--space-3); border: 1px solid var(--color-border-muted); border-radius: var(--radius-lg); background: var(--color-bg-secondary); overflow: hidden; }
.resumo-numeros__item { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding: 10px 12px; }
.resumo-numeros__item:nth-child(even) { border-left: 1px solid var(--color-border-muted); }
.resumo-numeros__item:nth-child(n + 3) { border-top: 1px solid var(--color-border-muted); }
.resumo-numeros dt { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); white-space: nowrap; }
.resumo-numeros dd { display: flex; flex-direction: column; gap: 1px; margin: 0; min-width: 0; }
.resumo-numeros strong { font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); font-variant-numeric: tabular-nums; line-height: var(--line-height-tight); }
.resumo-numeros small { font-size: var(--font-size-2xs); color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* card do candidato no Resumo: o mesmo destaque do Dashboard (degradê suave, foto menor, texto em hierarquia) */
.resumo-candidato { padding: var(--space-3); border-color: color-mix(in srgb, var(--color-accent-primary) 40%, var(--color-border-muted)); border-radius: var(--radius-lg);
    background: linear-gradient(160deg, color-mix(in srgb, var(--color-accent-primary) 12%, var(--color-bg-secondary)), var(--color-bg-secondary) 70%); }
#painel-resumo .resumo-candidato .cand-destaque__foto.ranking-cand__foto { width: 72px; height: 96px; border-radius: var(--radius-md); box-shadow: 0 4px 12px -6px rgb(0 0 0 / 0.6); }
.resumo-candidato .cand-destaque__rotulo { font-size: var(--font-size-2xs); letter-spacing: var(--letter-spacing-wide); }
.resumo-candidato .cand-destaque__nome { font-size: var(--font-size-md); font-weight: var(--font-weight-bold); }
.resumo-candidato .cand-destaque__votos, .resumo-candidato .cand-destaque__rel { font-size: var(--font-size-xs); }
/* lista de cidades do Resumo: linhas finas, barra de 3px sob o nome, votos e % alinhados */
.resumo-cidades .lista-cidades__item { grid-template-columns: 24px minmax(0, 1fr) auto; gap: 8px; padding: 7px 4px; border-bottom: 0; }
.resumo-cidades .lista-cidades__item + .lista-cidades__item { box-shadow: 0 -1px 0 color-mix(in srgb, var(--color-border-muted) 70%, transparent); }
.resumo-cidades .lista-cidades__nome { font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); }
.resumo-cidades .lista-cidades__pos { font-size: var(--font-size-2xs); }
.resumo-cidades .lista-cidades__valor strong { font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); }
.resumo-cidades .lista-cidades__valor small { font-size: var(--font-size-2xs); }
/* 5 mais votados no Resumo: foto menor, barra de 3px, nome contido */
#painel-resumo .ranking-cand__foto:not(.cand-destaque__foto) { width: 30px; height: 40px; border-radius: 6px; }
#painel-resumo .ranking-cand__barra { height: 3px; }
#painel-resumo .ranking-cand__nome { font-size: var(--font-size-xs); }
#painel-resumo .ranking-cand__meta { font-size: var(--font-size-2xs); }
#painel-resumo .ranking-cand__valor strong { font-size: var(--font-size-xs); }
/* balão ao passar o mouse: fio fino, rótulos discretos, números tabulares */
/* cartão flutuante (2026-10-23): fundo escuro #161b22, fio sutil #30363d e sombra suave em camadas — tokens
   --map-tooltip-* (o tema claro tem os equivalentes claros) */
.prime-map-tooltip { background: var(--map-tooltip-bg) !important; border: 1px solid var(--map-tooltip-border) !important; border-radius: var(--sidebar-card-radius) !important;
    padding: 12px 14px !important; box-shadow: var(--map-tooltip-shadow) !important; opacity: 1 !important; }
/* a região (polo) logo abaixo do nome da cidade */
.prime-map-tooltip__regiao { margin: -2px 0 6px; padding-bottom: 6px; border-bottom: 1px solid var(--color-border-muted); }
.prime-map-tooltip__name { font-size: var(--font-size-sm); }
.prime-map-tooltip__row { padding: 2px 0; font-size: var(--font-size-xs); }
.prime-map-tooltip__label { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
/* mapa: grupo vindo dos gráficos do Dashboard (nome + limpar) no topo da nota da legenda */
.mapa-grupo { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; padding: 6px 8px; border-radius: var(--radius-md);
    border: 1px solid var(--color-accent-border); background: var(--color-accent-subtle); color: var(--color-text-secondary); }
.mapa-grupo b { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }
.mapa-grupo__limpar { flex: 0 0 auto; padding: 2px 8px; border: 1px solid var(--color-border-default); border-radius: var(--radius-full); background: var(--color-bg-primary);
    color: var(--color-text-primary); font: inherit; font-size: var(--font-size-2xs); cursor: pointer; }
.mapa-grupo__limpar:hover, .mapa-grupo__limpar:focus-visible { border-color: var(--color-accent-primary); outline: none; }
/* mapa com regional inteira: matriz região × 5 tons (a cor da região, do claro ao intenso) na legenda */
.prime-legend__items:empty { display: none; }
.leg-rampa { display: flex; flex-direction: column; gap: 5px; }
.leg-rampa__linha { display: grid; grid-template-columns: 100px minmax(0, 1fr); align-items: center; gap: 10px; }
.leg-rampa__tons { display: grid; grid-template-columns: repeat(5, 1fr); gap: 2px; }
.leg-rampa__tons i { height: 12px; border-radius: 3px; }
.leg-rampa__tons i:first-child { border-radius: 4px 2px 2px 4px; }
.leg-rampa__tons i:last-child { border-radius: 2px 4px 4px 2px; }
.leg-rampa__nome { font-size: var(--font-size-2xs); color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.leg-rampa__escala .leg-rampa__tons { display: flex; justify-content: space-between; }
.leg-rampa__escala b { font-weight: var(--font-weight-medium); font-size: var(--font-size-2xs); color: var(--color-text-tertiary); font-variant-numeric: tabular-nums; }
.leg-rampa__escala .leg-rampa__nome { color: var(--color-text-tertiary); }
.leg-rampa__nota { margin: 2px 0 0; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
/* Dashboard · Análise de desempenho: 4 leituras em 2×2, cada uma com a tese (número + frase) acima do gráfico */
.dash-analise { display: flex; flex-direction: column; gap: var(--space-3); }
.dash-analise[hidden] { display: none; }
.an-cab { display: flex; align-items: baseline; gap: var(--space-3); flex-wrap: wrap; margin-top: var(--space-2); }
.an-cab h2 { margin: 0; font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); }
.an-cab span { font-size: var(--font-size-xs); color: var(--color-text-tertiary); }
.an-grade { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); align-items: stretch; }
.an-card { gap: 10px; border: 1px solid var(--color-border-muted); }
.an-card__cab h3 { margin: 0; font-size: var(--font-size-2xs); font-weight: var(--font-weight-medium); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.an-card__cab h3 span { margin-right: 4px; }
.an-card__tese { display: flex; flex-direction: column; gap: 2px; }
.an-card__tese strong { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); line-height: var(--line-height-tight); letter-spacing: -0.01em; font-variant-numeric: tabular-nums; }
.an-card__tese span { font-size: var(--font-size-xs); color: var(--color-text-secondary); line-height: var(--line-height-relaxed); }
.an-card__tese b, .an-card__nota b { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }
.an-grafico { position: relative; flex: 1; min-height: 200px; }
.an-grafico--alto { min-height: 250px; }
.an-card__nota { margin: 0; padding-top: 8px; border-top: 1px solid var(--color-border-muted); font-size: var(--font-size-2xs); color: var(--color-text-tertiary); line-height: var(--line-height-relaxed); }
.an-quadrantes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.an-quadrantes li { display: flex; flex-direction: column; gap: 1px; padding: 0 10px; min-width: 0; }
.an-quadrantes li:first-child { padding-left: 0; }
.an-quadrantes li + li { border-left: 1px solid var(--color-border-muted); }
.an-quadrantes span { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.an-quadrantes strong { font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; }
.an-quadrantes small { font-size: var(--font-size-2xs); color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }
.an-pos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; flex: 1; justify-content: center; }
.an-pos li { display: grid; grid-template-columns: 10px 110px minmax(0, 1fr) 48px 96px; align-items: center; gap: 12px; padding: 9px 0; font-size: var(--font-size-sm); }
.an-pos li + li { border-top: 1px solid color-mix(in srgb, var(--color-border-muted) 70%, transparent); }
.an-pos__cor { width: 8px; height: 8px; border-radius: 50%; }
.an-pos__rot { color: var(--color-text-secondary); }
.an-pos__barra { height: 3px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.an-pos__barra > span { display: block; height: 100%; border-radius: inherit; }
.an-pos strong { text-align: right; font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; }
.an-pos small { text-align: right; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); font-variant-numeric: tabular-nums; }
/* gráficos ligados à lista: grupos clicáveis, o escolhido em destaque e os irmãos apagados */
.an-quadrantes li[data-grupo], .an-pos li[data-grupo] { cursor: pointer; border-radius: var(--radius-sm); transition: background var(--transition-fast), opacity var(--transition-fast); }
.an-quadrantes li[data-grupo]:hover, .an-pos li[data-grupo]:hover, .an-quadrantes li[data-grupo]:focus-visible, .an-pos li[data-grupo]:focus-visible { background: var(--color-bg-hover); outline: none; }
.an-pos li[data-grupo] { padding-left: 6px; padding-right: 6px; }
li.an-sel { background: var(--color-accent-subtle) !important; box-shadow: inset 2px 0 0 var(--color-accent-primary); }
li.an-apagado { opacity: 0.45; }
.an-grafico canvas { cursor: pointer; }
.an-filtro { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 6px 0 10px; margin-left: var(--space-2); border: 1px solid var(--color-accent-border); border-radius: var(--radius-full);
    background: var(--color-accent-subtle); color: var(--color-text-primary); font: inherit; font-size: var(--font-size-2xs); font-weight: var(--font-weight-medium); cursor: pointer; white-space: nowrap; }
.an-filtro:hover, .an-filtro:focus-visible { border-color: var(--color-accent-primary); outline: none; }
.an-filtro__x { display: inline-grid; place-items: center; width: 16px; height: 16px; border-radius: 50%; background: color-mix(in srgb, var(--color-text-primary) 12%, transparent); font-size: 9px; }
.an-cab .an-cab__dica { margin-left: auto; font-size: var(--font-size-2xs); }

/* "Como ler este gráfico" no pé de cada cartão da Análise (recolhido por padrão) */
.an-ler { border-top: 1px solid var(--color-border-muted); padding-top: 6px; font-size: var(--font-size-2xs); color: var(--color-text-secondary); }
.an-ler summary { cursor: pointer; color: var(--color-accent-primary); font-weight: var(--font-weight-medium); list-style: none; }
.an-ler summary::-webkit-details-marker { display: none; }
.an-ler summary::before { content: 'ⓘ '; }
.an-ler[open] summary { margin-bottom: 6px; }
.an-ler dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 4px 10px; line-height: var(--line-height-relaxed); }
.an-ler dt { color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); font-weight: var(--font-weight-medium); }
.an-ler dd { margin: 0; }
.an-ler b { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }

/* Leitura executiva: conclusões em frases, cada uma com rótulo e tom */
.dash-leitura[hidden] { display: none; }
.leitura-exec { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2) var(--space-4); }
.leitura-exec__item { display: flex; flex-direction: column; gap: 3px; padding: 6px 0 6px var(--space-3); border-left: 3px solid var(--color-border-default, var(--color-border-muted)); min-width: 0; }
.leitura-exec__item--positivo { border-left-color: var(--color-success); }
.leitura-exec__item--alerta { border-left-color: var(--color-warning); }
.leitura-exec__tag { font-size: var(--font-size-2xs); font-weight: var(--font-weight-semibold); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.leitura-exec__item--positivo .leitura-exec__tag { color: var(--color-success); }
.leitura-exec__item--alerta .leitura-exec__tag { color: var(--color-warning); }
.leitura-exec p { margin: 0; font-size: var(--font-size-sm); line-height: 1.5; color: var(--color-text-secondary); }
.leitura-exec b { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; }
.leitura-exec__pe { margin: var(--space-3) 0 0; padding-top: 8px; border-top: 1px solid var(--color-border-muted); font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.leitura-exec__pe b { color: var(--color-text-secondary); }
@media (max-width: 900px) { .leitura-exec { grid-template-columns: minmax(0, 1fr); } }

/* Cargo e partido | Onde crescer (entre a Análise e Votos por cidade) */
/* Cargo e partido | Onde crescer: sempre lado a lado, da mesma altura (abrem e fecham juntos); o "Como ler" no pé */
.dash-crescer { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: var(--space-3); align-items: stretch; }
.dash-crescer[hidden], .dash-crescer > [hidden] { display: none; }
.dash-crescer--so { grid-template-columns: minmax(0, 1fr); }
.dash-crescer > .recolhivel--aberto > .recolhivel__corpo { flex: 1 1 auto; }
.dash-crescer > .recolhivel--aberto .recolhivel__dentro { display: flex; flex-direction: column; height: 100%; }
.dash-crescer .recolhivel__dentro > .an-ler { margin-top: auto; }
@media (max-width: 1100px) { .dash-crescer { grid-template-columns: minmax(0, 1fr); } }
.cp__topo { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); margin-bottom: var(--space-3); }
.cp__nome { font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); }
.cp__sit { font-size: var(--font-size-2xs); font-weight: var(--font-weight-semibold); padding: 2px 8px; border-radius: 999px; background: var(--color-bg-tertiary); color: var(--color-text-secondary); white-space: nowrap; }
.cp__sit--eleito { background: var(--color-success-subtle); color: var(--color-success); border: 1px solid var(--color-success-border); }
.cp { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); }
.cp__item { background: var(--color-bg-tertiary); border-radius: var(--radius-md); padding: var(--space-2) var(--space-3); min-width: 0; }
.cp__item dt { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.cp__item dd { margin: 2px 0 0; display: flex; flex-direction: column; }
.cp__item strong { font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; color: var(--color-text-primary); }
.cp__item strong small { font-size: var(--font-size-xs); color: var(--color-text-tertiary); font-weight: var(--font-weight-normal, 400); }
.cp__item dd > small { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); line-height: 1.35; }
.cp__decisao { margin: var(--space-3) 0 0; padding: var(--space-2) var(--space-3); border-left: 3px solid var(--color-accent-primary); background: var(--color-accent-subtle); font-size: var(--font-size-xs); color: var(--color-text-secondary); border-radius: 0 var(--radius-md) var(--radius-md) 0; }
.cp__decisao b { color: var(--color-text-primary); }
.oc__abas { margin-bottom: var(--space-2); }
.oc__abas .prime-tab { font-size: var(--font-size-xs); padding: 4px 10px; }
.oc__corpo { max-height: 380px; overflow-y: auto; }
.oc__tabela tbody tr[data-codigo] { cursor: pointer; }
.oc__tabela tbody tr[data-codigo]:hover td { background: var(--color-bg-hover, var(--color-bg-tertiary)); }
.oc__perto td { background: var(--color-success-subtle); }
.oc__linha-colega td { background: var(--color-accent-subtle); }
.oc__fraca { color: var(--color-danger); font-weight: var(--font-weight-semibold); }
.oc__partido { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.oc__colega { font-size: var(--font-size-2xs); padding: 0 6px; border-radius: 999px; border: 1px solid var(--color-accent-border); color: var(--color-accent-primary); white-space: nowrap; }

/* Locais de votação (etapa de detalhe, linha inteira) */
.dash-locais { grid-column: 1 / -1; }
.dash-locais[hidden] { display: none; }
.lv__rolagem { max-height: 460px; overflow-y: auto; }
.lv__bairro { display: block; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }

/* Regionais: peso × força das regiões (barras HTML; a tabela continua embaixo) */
.dash-reg__grafico { margin: 0 0 var(--space-3); padding: var(--space-2) var(--space-3); border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); }
.dash-reg__grafico summary { cursor: pointer; font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); }
.dash-reg__grafico[open] summary { margin-bottom: var(--space-2); }
.pf { display: grid; grid-template-columns: minmax(120px, 1.1fr) minmax(0, 1fr) minmax(0, 1fr); gap: 6px var(--space-3); align-items: center; }
.pf__cab, .pf__linha { display: contents; }
.pf__cab span { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.pf__media-leg { font-style: normal; text-transform: none; letter-spacing: 0; margin-left: 4px; }
.pf__nome { font-size: var(--font-size-xs); color: var(--color-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: center; gap: 4px; }
.pf__cel { display: flex; align-items: center; gap: 6px; min-height: 16px; min-width: 0; }
.pf__cel b { flex: 0 0 46px; text-align: right; font-size: var(--font-size-2xs); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; color: var(--color-text-secondary); white-space: nowrap; }
.pf__trilho { position: relative; flex: 1; min-width: 0; height: 10px; }
.pf__barra { display: block; height: 100%; border-radius: 2px; min-width: 2px; }
.pf__barra--peso { background: var(--color-accent-primary); }
.pf__barra--forca { background: var(--color-text-tertiary); opacity: .55; }
.pf__barra--acima { background: var(--color-success); opacity: 1; }
.pf__media { position: absolute; top: -3px; bottom: -3px; width: 0; border-left: 1px dashed var(--color-text-secondary); pointer-events: none; }
@media (max-width: 600px) { .pf { grid-template-columns: minmax(90px, 0.9fr) minmax(0, 1fr) minmax(0, 1fr); } }
@media (max-width: 1100px) {
    .an-grade { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 520px) {
    .an-quadrantes { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 8px; }
    .an-quadrantes li:nth-child(3) { padding-left: 0; border-left: 0; }
    .an-pos li { grid-template-columns: 10px minmax(0, 1fr) 40px 80px; }
    .an-pos__barra { display: none; }
}
/* Dashboard · Votos por cidade: uma linha por cidade — posição | nome | barra curta e fina | votos | % (como as listas do relatório) */
#dash-cidades .lista-cidades__item { grid-template-columns: 30px minmax(0, 1fr) auto; gap: 14px; padding: 8px 8px; border-bottom: 0; border-radius: var(--radius-sm); }
#dash-cidades .lista-cidades__item + .lista-cidades__item { box-shadow: 0 -1px 0 color-mix(in srgb, var(--color-border-muted) 70%, transparent); }
#dash-cidades .lista-cidades__item:hover { box-shadow: none; }
#dash-cidades .lista-cidades__texto { display: grid; grid-template-columns: minmax(0, 1fr) minmax(80px, 160px); align-items: center; column-gap: 16px; row-gap: 1px; }
#dash-cidades .lista-cidades__texto small { grid-column: 1; font-size: var(--font-size-2xs); }
#dash-cidades .lista-cidades__nome { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); letter-spacing: 0.01em; }
#dash-cidades .lista-cidades__barra { grid-column: 2; grid-row: 1; }
#dash-cidades .lista-cidades__valor { flex-direction: row; align-items: baseline; justify-content: flex-end; gap: 12px; }
#dash-cidades .lista-cidades__valor strong { min-width: 56px; text-align: right; font-weight: var(--font-weight-semibold); }
#dash-cidades .lista-cidades__parte { min-width: 50px; text-align: right; }
#dash-cidades .lista-cidades__valor small { min-width: 104px; text-align: right; font-size: var(--font-size-2xs); }
#dash-cidades .lista-cidades__pos { font-size: var(--font-size-2xs); }
#dash-cidades .lista-cidades--rolagem { padding-right: 4px; }
@media (max-width: 640px) {
    #dash-cidades .lista-cidades__texto { grid-template-columns: minmax(0, 1fr); }
    #dash-cidades .lista-cidades__barra { grid-column: 1; grid-row: auto; }
    #dash-cidades .lista-cidades__valor { flex-direction: column; align-items: flex-end; gap: 0; }
    #dash-cidades .lista-cidades__valor small { min-width: 0; }
}
.kpi-exec__nome { font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); line-height: var(--line-height-tight); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* barras finas (composição) */
.barras-finas { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-3); }
.barras-finas li { display: grid; grid-template-columns: 1fr auto; row-gap: 4px; align-items: baseline; }
.barras-finas__nome { display: flex; align-items: center; gap: var(--space-2); color: var(--color-text-secondary); font-size: var(--font-size-xs); }
.barras-finas__valor { font-size: var(--font-size-sm); font-variant-numeric: tabular-nums; }
.barras-finas__valor small { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.barras-finas__trilho { grid-column: 1 / -1; height: 4px; border-radius: 2px; background: var(--color-bg-tertiary); overflow: hidden; }
.barras-finas__trilho span { display: block; height: 100%; border-radius: 2px; }

/* ranking compacto: sem códigos, barra fina, foto menor; “Ver todos” rola dentro do cartão */
.ranking-cand--compacto { gap: var(--space-1); max-height: 380px; overflow-y: auto; margin-bottom: var(--space-2); }
.ranking-cand--compacto .ranking-cand__foto { width: 26px; height: 34px; }
.ranking-cand--compacto .ranking-cand__item { padding: 2px 0; }
.ranking-cand--compacto .ranking-cand__nome { font-size: var(--font-size-sm); }
.ranking-cand--compacto .ranking-cand__meta { font-size: var(--font-size-2xs); }
.ranking-cand--compacto .ranking-cand__barra { height: 3px; }
.ranking-cand--compacto .ranking-cand__valor strong { font-size: var(--font-size-sm); }
.ranking-cand--compacto .ranking-cand__valor small { font-size: var(--font-size-2xs); }

/* gráfico de partidos dentro do cartão: o cabeçalho do cartão substitui o do gráfico */
.dash-card .grafico { background: none; border: 0; padding: 0; box-shadow: none; }
.dash-card .grafico__cab { position: absolute; top: var(--space-3); right: var(--space-3); }
.dash-card .grafico__titulo, .dash-card .grafico__sub { display: none; }

/* destaques: mini-cards (3 por linha); detalhes no tooltip e na lista completa */
.destaques-controles--mini { display: flex; gap: var(--space-2); align-items: flex-end; flex-wrap: wrap; margin-bottom: var(--space-3); }
.destaques-controles--mini .campo { margin: 0; flex-direction: row; align-items: center; font-size: var(--font-size-2xs); }
.destaques-controles--mini .prime-input { width: 80px; }
.destaques-controles--mini .prime-select, .destaques-controles--mini .prime-input { max-width: 130px; padding-top: 2px; padding-bottom: 2px; font-size: var(--font-size-xs); }
.destaques-controles--mini [data-d="completa"] { margin-left: auto; }
#dash-destaques .destaques-lista { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2); }
.mini-card { display: grid; grid-template-columns: 1fr auto; grid-template-areas: "titulo titulo" "nome valor" "sub sub"; gap: 2px var(--space-2); align-items: baseline;
    text-align: left; font: inherit; color: inherit; background: var(--color-bg-tertiary); border: 0; border-radius: var(--radius-md); padding: var(--space-3); cursor: default; min-width: 0; }
button.mini-card { cursor: pointer; transition: background var(--transition-fast, 120ms); }
button.mini-card:hover, button.mini-card:focus-visible { background: var(--color-bg-hover); }
.mini-card__titulo { grid-area: titulo; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.mini-card__nome { grid-area: nome; font-size: var(--font-size-md); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mini-card__valor { grid-area: valor; font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); font-variant-numeric: tabular-nums; }
.mini-card__sub { grid-area: sub; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); min-height: 1em; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-clamp: 2; }
.dash-card__botao { margin-left: var(--space-2); padding-top: 0; padding-bottom: 0; font-size: var(--font-size-2xs); }
.dash-card__cab small + .dash-card__botao, .dash-card__cab h3 + .dash-card__botao { flex-shrink: 0; }
.dash-card__tabela { max-height: 420px; overflow-y: auto; }
.tabela--compacta th, .tabela--compacta td { padding: 4px var(--space-2); font-size: var(--font-size-xs); }
.tabela--compacta th { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.mini-card--inativo { opacity: 0.6; }
#dash-destaques .destaques-lista { align-items: start; }
/* sem buraco na última linha: o último mini-card estica até o fim da linha (3 colunas; 2 colunas no media de 1439px) */
@media (min-width: 1440px) {
    #dash-destaques .destaques-lista > .mini-wrap:last-of-type:nth-of-type(3n + 1) { grid-column: 1 / -1; }
    #dash-destaques .destaques-lista > .mini-wrap:last-of-type:nth-of-type(3n + 2) { grid-column: span 2; }
}
@media (min-width: 1280px) and (max-width: 1439px) {
    #dash-destaques .destaques-lista > .mini-wrap:last-of-type:nth-of-type(odd) { grid-column: 1 / -1; }
}
/* mini-cards na linguagem do relatório: fio fino, nome em peso médio (sem caixa alta pesada), valor tabular */
.mini-card { border: 1px solid var(--color-border-muted); background: var(--color-bg-primary); padding: 12px 14px; }
button.mini-card:hover, button.mini-card:focus-visible { border-color: var(--color-border-strong); background: var(--color-bg-hover); outline: none; }
.mini-card__nome { font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); letter-spacing: 0.01em; }
.mini-card__valor { font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); }
.mini-wrap { display: flex; flex-direction: column; min-width: 0; border-radius: var(--radius-md); background: var(--color-bg-tertiary); }
.mini-wrap .mini-card { width: 100%; grid-template-areas: "titulo seta" "nome valor" "sub sub"; }
.mini-card__seta { grid-area: seta; justify-self: end; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.mini-wrap--aberto { grid-column: 1 / -1; box-shadow: inset 0 0 0 1px var(--color-border-muted); }   /* aberto: a linha inteira, para a tabela respirar */
.mini-wrap--aberto .mini-card { border-radius: var(--radius-md) var(--radius-md) 0 0; background: var(--color-bg-hover); }
.mini-painel { padding: var(--space-2) var(--space-3) var(--space-3); border-top: var(--border-width-thin) solid var(--color-border-muted); }
.mini-painel__titulo { margin: 0 0 var(--space-2); color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); }
.mini-painel__tabela td { vertical-align: top; }
.mini-painel .tabela-rolagem { max-height: 440px; overflow-y: auto; }
.mini-painel [data-completa-id] { margin-top: var(--space-2); }
.mini-painel__acoes { display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); margin-top: var(--space-2); }
.mini-painel__tabela td small, .mini-painel__detalhe { display: block; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); white-space: normal; }
.mini-painel__tabela tr.clicavel:hover td { background: var(--color-bg-secondary); }
.mini-painel__criterio { margin: var(--space-2) 0 0; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); line-height: var(--line-height-relaxed); }
.mini-painel__numeros { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); margin: 0; }
.mini-painel__numeros div { background: var(--color-bg-secondary); border-radius: var(--radius-md); padding: var(--space-2) var(--space-3); }
.mini-painel__numeros dt { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.mini-painel__numeros dd { margin: 2px 0 0; font-weight: var(--font-weight-semibold); }
.mini-painel__numeros small { display: block; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); font-weight: 400; }
.destaques-completa { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--space-3); align-items: start; margin-top: var(--space-3); }
.destaques-completa > .campo-ajuda { grid-column: 1 / -1; margin: 0; }
#dash-zonas .tabela-rolagem, #dash-secoes .tabela-rolagem { max-height: 420px; }

#dash-zonas .tabela-rolagem, #dash-secoes .tabela-rolagem { max-height: 520px; overflow-y: auto; }
.cadastro-grade { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: var(--space-5); align-items: start; }

.resumo-municipio { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.resumo-municipio strong { display: block; color: var(--color-text-primary); font-size: var(--font-size-md); }

.chips { display: flex; flex-wrap: wrap; gap: var(--space-1); min-height: 32px; padding: var(--space-2); border: var(--border-width-thin) solid var(--color-border-default); border-radius: var(--radius-md); background: var(--color-bg-secondary); }
.chip { display: inline-flex; align-items: center; gap: 4px; padding: 2px var(--space-2); border-radius: var(--radius-full); background: var(--color-bg-tertiary); font-size: var(--font-size-xs); }
.chip button { border: 0; background: none; color: var(--color-text-secondary); cursor: pointer; padding: 0 2px; }
.chip button:hover { color: var(--color-danger); }
.busca-municipios { max-height: 220px; overflow-y: auto; border: var(--border-width-thin) solid var(--color-border-muted); border-radius: var(--radius-md); }
.busca-municipios label { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-1) var(--space-2); font-size: var(--font-size-sm); cursor: pointer; }
.busca-municipios label:hover { background: var(--color-bg-hover); }
.busca-municipios .ja { color: var(--color-text-tertiary); }
/* ficha do parceiro: cidades (busca + chips; nova × vinculada) e extração rápida "PARCEIRO / LIDERANÇA / …" */
/* ficha do parceiro na ordem da digitação: ficha › apoio | regiões › metas › vinculados | avulso (embaixo) */
#cad-parceiros > .ficha-parceiro-card, #cad-parceiros > .ficha-duas, #cad-parceiros > .metas-na-ficha,
#cad-parceiros > .apoio-secao, #cad-parceiros > .regioes-secao { margin-bottom: var(--space-3); }
/* etapas numeradas da ficha (1 Apoio › 2 Regiões › 3 Metas) */
.passo { display: inline-grid; place-items: center; width: 22px; height: 22px; margin-right: 6px; border-radius: 50%; background: var(--color-accent-primary); color: #fff;
    font-size: var(--font-size-2xs); font-weight: var(--font-weight-bold); vertical-align: 1px; }
/* 1 · Apoio: aberto, largura total, uma coluna por cargo */
.apoio-secao__cab { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-3); flex-wrap: wrap; margin-bottom: var(--space-3); }
.apoio-secao .apoio-grade { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-3); }
.apoio-secao .candidatos-apoio { display: flex; flex-direction: column; gap: 8px; padding: var(--space-3); border-radius: var(--radius-lg); background: var(--color-bg-primary); }
.candidatos-apoio__cab { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.apoio-secao .candidatos-apoio__cargo { margin: 0; font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.candidatos-apoio__regra { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.candidatos-apoio__escolha { display: flex; flex-wrap: wrap; gap: 4px; min-height: 26px; align-items: center; padding-bottom: 8px; border-bottom: 1px solid var(--color-border-muted); }
.candidatos-apoio__escolha .chip { font-size: var(--font-size-2xs); }
.candidatos-apoio__nenhum { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); font-style: italic; }
.apoio-secao .candidatos-apoio__lista { max-height: 300px; gap: 0; padding-right: 2px; }
.candidatos-apoio__op { display: grid !important; grid-template-columns: 16px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 6px 6px !important; border-radius: var(--radius-sm); cursor: pointer; font-size: var(--font-size-sm); }
.candidatos-apoio__op[hidden] { display: none !important; }   /* o filtro da coluna esconde as linhas (o grid acima não pode vencer) */
.candidatos-apoio__op:hover { background: var(--color-bg-hover); }
.candidatos-apoio__op:has(input:checked) { background: var(--color-accent-subtle); }
.candidatos-apoio__op span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.candidatos-apoio__op small { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); white-space: nowrap; font-variant-numeric: tabular-nums; }
.apoio-barra { position: sticky; bottom: 0; z-index: 3; display: flex; align-items: center; gap: var(--space-2); margin-top: var(--space-3); padding: var(--space-2) var(--space-3);
    border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); background: var(--color-bg-secondary); }
.apoio-barra__estado { margin-right: auto; font-size: var(--font-size-xs); color: var(--color-text-tertiary); }
.apoio-barra .entrada__erro { margin: 0; }
.apoio-barra--pendente { border-color: var(--color-accent-border); background: color-mix(in srgb, var(--color-accent-primary) 8%, var(--color-bg-secondary)); }
.apoio-barra--pendente .apoio-barra__estado { color: var(--color-text-primary); font-weight: var(--font-weight-medium); }
@media (max-width: 1400px) {
    .apoio-secao .apoio-grade { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
    .apoio-secao .apoio-grade { grid-template-columns: minmax(0, 1fr); }
}
/* 1 · Apoio por cidade: tabela cidade × cargo; editor (4 colunas) e duplicar abrem abaixo da tabela */
.apoio-tabela th { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); font-weight: var(--font-weight-medium); }
.apoio-tabela td { vertical-align: middle; border-bottom-color: color-mix(in srgb, var(--color-border-muted) 70%, transparent); }
.apoio-tabela__cidade { font-weight: var(--font-weight-semibold); white-space: nowrap; }
.apoio-tabela__cidade small { display: block; font-weight: var(--font-weight-regular); font-size: var(--font-size-2xs); color: var(--color-text-secondary); }
.apoio-tabela__cand { display: block; font-size: var(--font-size-sm); white-space: nowrap; }
.apoio-tabela__nenhum { color: var(--color-text-tertiary); }
.apoio-tabela__vazia td { background: color-mix(in srgb, #c98500 7%, transparent); }
.apoio-tabela__vazia .apoio-tabela__cidade small { color: #c98500; }
.apoio-tabela__editando td { background: var(--color-accent-subtle); }
.apoio-tabela__editando td:first-child { box-shadow: inset 3px 0 0 var(--color-accent-primary); }
[data-editor-apoio]:not([hidden]) { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--color-border-muted); }
.apoio-editor__cab { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); margin-bottom: var(--space-3); }
.apoio-editor__cab strong { font-size: var(--font-size-md); }
.apoio-editor__tambem, .apoio-duplicar__alvos { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: var(--space-3); }
.apoio-editor__tambem > span { font-size: var(--font-size-xs); color: var(--color-text-secondary); margin-right: 4px; }
.apoio-editor__tambem .cad-filtro input, .apoio-duplicar__alvos .cad-filtro input { margin: 0; }
.apoio-duplicar__cab { display: flex; flex-direction: column; gap: 2px; }
.apoio-duplicar__cab span { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
/* 2 · Regiões: largura total, chips e região identificada lado a lado */
.regioes-secao .regioes-sugeridas { max-width: 760px; }
.ficha-duas { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-3); align-items: start; }
.ficha-duas > .grafico { margin: 0; min-width: 0; }
.ficha-duas--pe { padding-top: var(--space-3); border-top: 1px solid var(--color-border-muted); }
.apoio-grade { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2) var(--space-4); }
.apoio-grade .candidatos-apoio { min-width: 0; padding: var(--space-2) var(--space-3); border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); background: var(--color-bg-primary); }
.apoio-grade .candidatos-apoio__cargo { margin-top: 0; text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.regioes-sugeridas { display: flex; flex-direction: column; gap: 6px; margin: var(--space-2) 0; padding: var(--space-2) var(--space-3); border: 1px solid var(--color-accent-border); border-radius: var(--radius-md); background: var(--color-accent-subtle); }
.regioes-sugeridas[hidden] { display: none; }
.regioes-sugeridas__rotulo { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.regioes-sugeridas ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 3px; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.regioes-sugeridas strong { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }
.regioes-sugeridas small { color: var(--color-text-tertiary); margin-left: 4px; }
.regioes-sugeridas__ok { color: var(--color-text-secondary); font-size: var(--font-size-2xs); }
.regioes-sugeridas > .prime-btn { align-self: flex-start; }
@media (max-width: 1100px) {
    .ficha-duas, .apoio-grade { grid-template-columns: minmax(0, 1fr); }
}
.form-parceiro__topo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-4); align-items: stretch; margin-bottom: var(--space-4);
    padding-bottom: var(--space-4); border-bottom: 1px solid var(--color-border-muted); }
.form-parceiro__topo > fieldset { margin: 0; padding: var(--space-3) var(--space-4); border: 1px solid var(--color-accent-border); border-radius: var(--radius-lg);
    background: linear-gradient(160deg, color-mix(in srgb, var(--color-accent-primary) 7%, var(--color-bg-secondary)), var(--color-bg-secondary) 70%); }
@media (max-width: 900px) {
    .form-parceiro__topo { grid-template-columns: minmax(0, 1fr); }
}
.cidades-parceiro__busca { position: relative; }
.cidades-parceiro__busca .busca-municipios { position: absolute; z-index: 20; left: 0; right: 0; top: calc(100% + 4px); max-height: 240px; background: var(--color-bg-elevated); box-shadow: var(--shadow-lg); }
.busca-municipios__op { display: block; width: 100%; padding: 6px 10px; border: 0; background: none; color: var(--color-text-primary); font: inherit; font-size: var(--font-size-sm); text-align: left; cursor: pointer; }
.busca-municipios__op:hover, .busca-municipios__op:focus-visible, .busca-municipios__op.ativa { background: var(--color-bg-hover); outline: none; }
.cidades-parceiro .chips { margin-top: var(--space-2); }
.chip small { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.chip--novo { border-color: var(--color-accent-border); background: var(--color-accent-subtle); }
.chip--fixo { opacity: 0.85; }
.extracao__entrada { display: flex; gap: var(--space-2); align-items: flex-start; }
.extracao__entrada textarea { flex: 1; min-height: 44px; resize: vertical; }
/* planilha de metas: filtro no topo; grupo ★ das cidades com lideranças primeiro, com os nomes delas na linha */
.planilha-filtro { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); margin-bottom: var(--space-3); }
.planilha-filtro > .prime-input { max-width: 260px; }
.planilha-filtro .cad-filtros { margin: 0; }
.planilha .grupo-linha--lid td { background: color-mix(in srgb, var(--color-accent-primary) 10%, var(--color-bg-secondary)) !important; box-shadow: inset 3px 0 0 var(--color-accent-primary); }
.planilha-regiao { display: block; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.planilha-lids { display: block; margin-top: 2px; color: var(--color-text-secondary); font-size: var(--font-size-2xs); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 320px; }
/* lista colada (, ; ou linhas): resumo do que foi encontrado e marcado, e o que não foi */
.busca-lote { margin: 0 0 var(--space-2); padding: 6px 10px; border: 1px solid var(--color-accent-border); border-radius: var(--radius-md); background: var(--color-accent-subtle);
    font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.busca-lote strong { color: var(--color-text-primary); }
.busca-lote__falta { color: var(--color-text-primary); }

.meta-modo { display: flex; gap: var(--space-3); font-size: var(--font-size-sm); }
.meta-previa { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.candidatos-apoio { display: flex; flex-direction: column; gap: var(--space-1); }
.candidatos-apoio__cargo { font-size: var(--font-size-xs); color: var(--color-text-secondary); font-weight: var(--font-weight-semibold); margin-top: var(--space-2); }
.candidatos-apoio__lista { max-height: 200px; overflow-y: auto; display: flex; flex-direction: column; }
.candidatos-apoio__lista label { display: flex; align-items: center; gap: var(--space-2); padding: 2px var(--space-1); font-size: var(--font-size-sm); }

/* ---------------------------------------------------------------- entrada (login) */

.entrada {
    position: fixed;
    inset: 0;
    z-index: var(--z-modal);
    display: grid;
    justify-items: center;
    align-items: safe center;   /* cartão mais alto que a tela: começa no topo e rola (a página não rola mais) */
    overflow-y: auto;
    padding: var(--space-4);
    background: var(--color-bg-canvas);
}
.entrada__cartao { width: min(400px, 100%); }
/* cartões de entrada: o título em cima e o subtítulo embaixo (lado a lado o título quebrava: "Defina sua / senha") */
.entrada__cartao .prime-card__header { flex-direction: column; align-items: flex-start; gap: 4px; }
/* definição de senha: o olho (mostrar/ocultar) e os requisitos marcados enquanto digita */
.senha-campo { position: relative; display: block; }
.senha-campo .prime-input { width: 100%; padding-right: 44px; }
.senha-campo__olho { position: absolute; top: 50%; right: 4px; transform: translateY(-50%); display: inline-grid; place-items: center; width: 34px; height: 34px;
    padding: 0; border: 0; border-radius: var(--radius-md); background: transparent; color: var(--color-text-tertiary); cursor: pointer; font-size: 16px; opacity: .65; }
.senha-campo__olho:hover { opacity: 1; background: var(--color-bg-tertiary); }
.senha-campo__olho:focus-visible { outline: 2px solid var(--color-accent-primary); outline-offset: 1px; opacity: 1; }
.senha-campo__olho--ativo { opacity: 1; color: var(--color-accent-hover); background: var(--color-accent-subtle); }
.senha-req { list-style: none; margin: -4px 0 var(--space-3); padding: 0; display: grid; gap: 2px; font-size: var(--font-size-xs); color: var(--color-text-tertiary); }
.senha-req li > span:first-child { display: inline-block; width: 14px; text-align: center; }
.senha-req--ok { color: var(--color-success); }
.entrada__erro { min-height: 1.25em; margin: 0; color: var(--color-danger); font-size: var(--font-size-sm); }

/* ---------------------------------------------------------------- responsivo: responsive.css (4 faixas) */

@media (prefers-reduced-motion: reduce) {
    * { transition: none !important; }
}
/* "Reduzir animações" nas Opções (independe do sistema) */
[data-movimento="reduzido"] *, [data-movimento="reduzido"] *::before, [data-movimento="reduzido"] *::after {
    animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important;
}

/* ---------------------------------------------------------------- Bloco 13A: barra lateral (9 blocos) */

.sidebar-fechar { display: none; }
/* o layout de 3 colunas é da aba Mapa: fora dela, os blocos que só mexem no desenho do mapa somem da barra lateral */
.app:not([data-vista="mapa"]) :is(#sec-pintar, #sec-nivel, #sec-paleta) { display: none; }
/* nada na barra lateral força largura: selects e campos encolhem com a gaveta/folha */
.app-sidebar > *, .app-sidebar .campo, .app-sidebar .grupo__corpo { min-width: 0; }
.app-sidebar select, .app-sidebar input:not([type="checkbox"]):not([type="radio"]) { min-width: 0; max-width: 100%; }
.grupo--busca { padding: var(--space-3) var(--space-4) var(--space-2); }
.busca { position: relative; }
.busca__campo { width: 100%; }
.busca__lista { position: absolute; z-index: var(--z-dropdown); top: calc(100% + 4px); left: 0; right: 0; max-height: 320px; overflow-y: auto; margin: 0; padding: var(--space-1);
    list-style: none; background: var(--color-bg-elevated); border: var(--border-width-thin) solid var(--color-border-default); border-radius: var(--radius-md); box-shadow: var(--shadow-lg); }
.busca__item { display: grid; grid-template-columns: 78px minmax(0, 1fr); gap: 0 var(--space-2); padding: 6px var(--space-2); border-radius: var(--radius-sm); cursor: pointer; }
.busca__item--ativo, .busca__item:hover { background: var(--color-bg-hover); }
.busca__tipo { grid-row: span 2; align-self: center; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: 0.04em; }
.busca__nome { font-size: var(--font-size-sm); color: var(--color-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.busca__sub { font-size: var(--font-size-xs); color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.busca__vazio { padding: var(--space-2); font-size: var(--font-size-sm); color: var(--color-text-secondary); }

.chips-ir { display: flex; flex-wrap: wrap; gap: 6px; }
.chip-ir { padding: 4px 10px; border-radius: var(--radius-full); border: var(--border-width-thin) solid var(--color-border-default); background: var(--color-bg-primary);
    color: var(--color-text-primary); font: inherit; font-size: var(--font-size-xs); cursor: pointer; transition: background var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast); }
.chip-ir:hover { background: var(--color-bg-hover); border-color: var(--color-border-strong); }
.chip-ir:active { transform: scale(0.97); }
.chip-ir--ativo { border-color: var(--color-accent-border); background: var(--color-accent-subtle); }
a.chip-ir { text-decoration: none; display: inline-block; }

/* aba Geral: um bloco por cargo (composição | candidatos | partidos), atalhos para cada cargo no topo */
.dash__ir-geral { margin-left: auto; }
.geral-ir { position: sticky; top: calc(-1 * var(--space-5)); z-index: 5; display: flex; flex-wrap: wrap; gap: 6px; padding: var(--space-2) 0;
    background: var(--color-bg-canvas); border-bottom: var(--border-width-thin) solid var(--color-border-muted); }
.geral-cargo { display: flex; flex-direction: column; gap: var(--space-3); scroll-margin-top: 56px; }
.geral-cargo + .geral-cargo { margin-top: var(--space-6); }
.geral-cargo__cab { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); padding-bottom: var(--space-2); border-bottom: var(--border-width-thin) solid var(--color-border-muted); }
.geral-cargo__cab h3 { margin: 0; font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); }
.geral-cargo__cab small { color: var(--color-text-secondary); font-size: var(--font-size-xs); }
.geral-cargo__cab .prime-btn { margin-left: auto; }
/* Cadastros modernizados: KPIs do recorte/regional, filtros por faixa, tabela ordenável e hierarquia em 3 colunas */
.cad-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-3); margin-bottom: var(--space-3); }
.cad-kpi { display: flex; flex-direction: column; justify-content: center; gap: 4px; min-width: 0; padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border-muted);
    border-radius: var(--radius-lg); background: var(--color-bg-secondary); transition: border-color var(--transition-fast); }
.cad-kpi:hover { border-color: var(--color-border-strong); }
.cad-kpi[data-destaque] { background: linear-gradient(160deg, color-mix(in srgb, var(--cor) 10%, var(--color-bg-secondary)), var(--color-bg-secondary) 70%); border-color: color-mix(in srgb, var(--cor) 35%, var(--color-border-muted)); }
.cad-kpi__rotulo { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.cad-kpi__valor { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); line-height: var(--line-height-tight); font-variant-numeric: tabular-nums; }
.cad-kpi__valor small { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-text-secondary); }
.cad-kpi__valor--texto { font-size: var(--font-size-md); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cad-kpi__sub { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: var(--font-size-2xs); color: var(--color-text-secondary); }
.cad-kpi__barra { display: block; width: 100%; height: 3px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.cad-kpi__barra > span { display: block; height: 100%; border-radius: inherit; background: var(--color-accent-primary); }
.cad-filtros { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: var(--space-3); }
.cad-filtro { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px; border: 1px solid var(--color-border-default); border-radius: var(--radius-full);
    background: none; color: var(--color-text-secondary); font: inherit; font-size: var(--font-size-xs); cursor: pointer; transition: background var(--transition-fast), border-color var(--transition-fast); }
.cad-filtro b { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; }
.cad-filtro__icone { color: var(--cor, var(--color-text-tertiary)); font-size: 11px; }
.cad-filtro:hover, .cad-filtro:focus-visible { background: var(--color-bg-hover); outline: none; }
.cad-filtro[aria-pressed="true"] { border-color: var(--cor, var(--color-accent-primary)); background: color-mix(in srgb, var(--cor, var(--color-accent-primary)) 12%, transparent); color: var(--color-text-primary); }
.cad-filtros__conta { margin-left: auto; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.tabela-parceiros thead th { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); font-weight: var(--font-weight-medium); }
.th-ordenar { display: inline-flex; align-items: center; gap: 4px; padding: 0; border: 0; background: none; color: inherit; font: inherit; text-transform: inherit; letter-spacing: inherit; cursor: pointer; }
.th-ordenar:hover, .th-ordenar:focus-visible { color: var(--color-text-primary); outline: none; }
.th-ordenar__seta { width: 6px; height: 6px; border-right: 1.5px solid transparent; border-bottom: 1.5px solid transparent; transform: rotate(45deg); margin-top: -3px; }
th[aria-sort="descending"] .th-ordenar__seta { border-color: currentColor; }
th[aria-sort="ascending"] .th-ordenar__seta { border-color: currentColor; transform: rotate(-135deg); margin-top: 3px; }
/* setas ▲▼ discretas no título (lista de parceiros): as duas sempre visíveis e apagadas; a da ordem atual acende */
.th-setas { display: inline-flex; flex-direction: column; gap: 2px; margin-left: 2px; }
.th-setas i { width: 0; height: 0; border-left: 3.5px solid transparent; border-right: 3.5px solid transparent; opacity: .28; transition: opacity var(--transition-fast); }
.th-setas__cima { border-bottom: 4px solid currentColor; }
.th-setas__baixo { border-top: 4px solid currentColor; }
.th-ordenar--setas:hover .th-setas i { opacity: .5; }
th[aria-sort="ascending"] .th-setas__cima, th[aria-sort="descending"] .th-setas__baixo { opacity: 1; color: var(--color-accent-primary); }
/* coluna da direita: Metas (acesso ao cadastro de metas) + editar · excluir · ficha */
.acoes-com-metas { display: inline-flex; align-items: center; justify-content: flex-end; gap: 6px; white-space: nowrap; }
.botao-metas { padding: 2px 10px; font-size: var(--font-size-xs); }
th[aria-sort="descending"], th[aria-sort="ascending"] { color: var(--color-text-primary) !important; }
.tabela-parceiros tbody tr { transition: background var(--transition-fast); }
.tabela-parceiros tbody td { border-bottom-color: color-mix(in srgb, var(--color-border-muted) 70%, transparent); }
.tabela-parceiros td.atingimento { min-width: 130px; }
.tabela-parceiros td.apoio { color: var(--color-text-secondary); font-size: var(--font-size-xs); }
.mini-barra { display: block; width: 96px; height: 3px; margin-top: 4px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.mini-barra > span { display: block; height: 100%; border-radius: inherit; }
/* Regionais: as 3 colunas lado a lado até 1100px (a de cidades não cai sozinha numa linha vazia) */
@media (min-width: 1101px) {
    .vista .hierarquia { grid-template-columns: minmax(0, 0.95fr) minmax(0, 1fr) minmax(0, 1.25fr); }
    .vista .hierarquia__col--cidades { grid-column: auto; }
}
.hierarquia { align-items: stretch; }
.hierarquia__col { background: var(--color-bg-secondary); border-color: var(--color-border-muted); border-radius: var(--radius-lg); padding: var(--space-4); }
.hierarquia__cab h3 { font-size: var(--font-size-2xs); font-weight: var(--font-weight-medium); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.hierarquia__passo { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }
.lista-sel { gap: 0; }
.lista-sel li { padding: 2px 6px; border-radius: var(--radius-md); transition: background var(--transition-fast); }
.lista-sel li + li { box-shadow: 0 -1px 0 color-mix(in srgb, var(--color-border-muted) 70%, transparent); }
.lista-sel li:hover { background: var(--color-bg-hover); }
.lista-sel li.ativa { background: var(--color-accent-subtle); box-shadow: inset 2px 0 0 var(--color-accent-primary); }
.lista-sel li.ativa + li { box-shadow: none; }
.lista-sel__nome { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); }
.lista-sel__nome strong { display: inline-grid; place-items: center; min-width: 22px; height: 20px; margin-right: 6px; padding: 0 5px; border-radius: 6px; border: 1px solid var(--color-border-default); font-size: var(--font-size-2xs); color: var(--color-text-secondary); }
.lista-sel__nome small { font-weight: var(--font-weight-regular); font-size: var(--font-size-2xs); }
.cad-ajuda { margin: 0 0 var(--space-3); }
.chips { background: var(--color-bg-primary); border-color: var(--color-border-muted); max-height: 280px; overflow-y: auto; }
.chip { border: 1px solid var(--color-border-muted); background: var(--color-bg-secondary); }
@media (max-width: 900px) {
    .cad-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* Geral modernizada: panorama do território (uma vez) › por cargo: 4 números › Candidatos | Composição + Partidos */
.geral-panorama { display: flex; flex-direction: column; gap: 8px; padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border-muted); border-radius: var(--radius-lg);
    background: linear-gradient(160deg, color-mix(in srgb, var(--color-accent-primary) 7%, var(--color-bg-secondary)), var(--color-bg-secondary) 60%); }
.geral-panorama__rotulo { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.geral-panorama__itens { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.geral-panorama__item { display: flex; flex-direction: column; gap: 1px; padding: 0 var(--space-4); min-width: 0; }
.geral-panorama__item:first-child { padding-left: 0; }
.geral-panorama__item + .geral-panorama__item { border-left: 1px solid var(--color-border-muted); }
.geral-panorama__item span { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.geral-panorama__item strong { font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); font-variant-numeric: tabular-nums; line-height: var(--line-height-tight); }
.geral-panorama__item small { font-size: var(--font-size-2xs); color: var(--color-text-secondary); }
.geral-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-3); }
.geral-kpis .kpi-exec, .dash-kpis .kpi-exec { border: 1px solid var(--color-border-muted); }
.geral-grade { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: var(--space-3); align-items: stretch; }
.geral-lado { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }
.geral-lado > [data-part] { flex: 1; }
.geral-cargo .dash-card { border: 1px solid var(--color-border-muted); }
.geral-cargo .mini-numeros { display: none; }   /* aptos/compareceram/malha: no Panorama do território, uma vez só */
.geral-cargo__cab h3 { letter-spacing: -0.01em; }
@media (max-width: 1100px) {
    .geral-grade { grid-template-columns: minmax(0, 1fr); }
    .geral-panorama__itens { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 10px; }
    .geral-panorama__item:nth-child(4) { padding-left: 0; border-left: 0; }
}
@media (max-width: 640px) {
    .geral-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .geral-panorama__itens { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .geral-panorama__item:nth-child(odd) { padding-left: 0; border-left: 0; }
    .geral-panorama__item:nth-child(4) { padding-left: var(--space-4); border-left: 1px solid var(--color-border-muted); }
}
/* Dashboard: valor em texto (nome de cidade/partido) nos cards essenciais */
.kpi-exec__valor--texto { font-size: var(--font-size-lg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kpi-exec__valor small { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-text-secondary); }
.kpi-exec__sub strong { color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }

.botoes-nivel { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; margin-bottom: var(--space-2); }
.botao-nivel { padding: 6px 4px; border-radius: var(--radius-sm); border: var(--border-width-thin) solid var(--color-border-default); background: var(--color-bg-primary);
    color: var(--color-text-secondary); font: inherit; font-size: var(--font-size-xs); cursor: pointer; transition: background var(--transition-fast), color var(--transition-fast); }
.botao-nivel:hover:not(:disabled) { background: var(--color-bg-hover); color: var(--color-text-primary); }
.botao-nivel--ativo { background: var(--color-accent-subtle); border-color: var(--color-accent-border); color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }
.botao-nivel:disabled { opacity: 0.45; cursor: not-allowed; }

.opcoes-paleta { display: grid; gap: 6px; margin-bottom: var(--space-2); }
.opcao-paleta { position: relative; display: grid; grid-template-columns: 64px minmax(0, 1fr); align-items: center; gap: var(--space-2); padding: 6px var(--space-2);
    border-radius: var(--radius-md); border: var(--border-width-thin) solid var(--color-border-default); background: var(--color-bg-primary); cursor: pointer;
    transition: border-color var(--transition-fast), background var(--transition-fast); }
.opcao-paleta:hover { background: var(--color-bg-hover); }
.opcao-paleta input { position: absolute; opacity: 0; pointer-events: none; }
.opcao-paleta:has(input:checked) { border-color: var(--color-accent-border); background: var(--color-accent-subtle); }
.opcao-paleta:has(input:focus-visible) { outline: 2px solid var(--focus-ring-color, var(--color-accent-primary)); outline-offset: 1px; }
.opcao-paleta:has(input:disabled) { opacity: 0.5; cursor: not-allowed; }
.opcao-paleta__amostra { display: flex; height: 14px; border-radius: 3px; overflow: hidden; gap: 1px; }
.opcao-paleta__amostra i { flex: 1; }
.opcao-paleta__texto { display: flex; flex-direction: column; min-width: 0; font-size: var(--font-size-sm); color: var(--color-text-primary); }
.opcao-paleta__texto small { font-size: var(--font-size-xs); color: var(--color-text-secondary); }

.prime-toggle-linha { justify-content: space-between; }
.prime-toggle-linha kbd, .lista-atalhos kbd { display: inline-block; min-width: 20px; padding: 1px 6px; border-radius: 4px; border: var(--border-width-thin) solid var(--color-border-strong);
    border-bottom-width: 2px; background: var(--color-bg-primary); color: var(--color-text-primary); font: 600 var(--font-size-2xs)/1.5 var(--font-family-mono, monospace); text-align: center; }
.lista-atalhos { display: grid; gap: 6px; margin: 0; }
.lista-atalhos__item { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: var(--space-2); align-items: baseline; }
.lista-atalhos dt { white-space: nowrap; }
.lista-atalhos dd { margin: 0; font-size: var(--font-size-xs); color: var(--color-text-secondary); }

/* ---------------------------------------------------------------- Bloco 13A: painel direito (blocos) */

.painel-cab { position: relative; }
.painel-cab__rotulo { display: block; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 2px; }
.painel-fechar { display: none; position: absolute; top: var(--space-3); right: var(--space-3); }
.painel-blocos { display: flex; flex-direction: column; }
.painel-bloco { border-top: var(--border-width-thin) solid var(--color-border-muted); }
.painel-bloco__titulo { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); padding: var(--space-3) var(--space-4); cursor: pointer; list-style: none;
    font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-text-secondary); }
.painel-bloco__titulo::-webkit-details-marker { display: none; }
.painel-bloco__titulo::after { content: '▾'; color: var(--color-text-tertiary); transition: transform var(--transition-fast); }
.painel-bloco:not([open]) > .painel-bloco__titulo::after { transform: rotate(-90deg); }
.painel-bloco__titulo:hover { color: var(--color-text-primary); }
.painel-bloco > .painel { padding-top: 0; }
#painel-resumo [data-ver-dashboard] { white-space: normal; height: auto; min-height: 32px; line-height: 1.35; padding-top: 6px; padding-bottom: 6px; }

.leitura { margin: 0 0 var(--space-2); padding: 0 0 0 var(--space-4); display: grid; gap: 6px; font-size: var(--font-size-sm); line-height: 1.45; color: var(--color-text-secondary); }
.leitura li::marker { color: var(--color-accent-primary); }
.leitura strong { color: var(--color-text-primary); }

.abas-destaque { display: flex; gap: 2px; margin-bottom: var(--space-2); overflow-x: auto; }
.abas-destaque .prime-tab { font-size: var(--font-size-xs); padding: 4px 8px; white-space: nowrap; }
.destaque__itens--painel { margin: 0; }

.vinculados__ordem { margin-bottom: var(--space-2); font-size: var(--font-size-xs); }
.vinculados__ordem .prime-select { width: auto; padding-top: 2px; padding-bottom: 2px; }
.vinculados { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.vinculados__item { width: 100%; display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; align-items: center; gap: var(--space-2); padding: 6px var(--space-2);
    border: var(--border-width-thin) solid transparent; border-radius: var(--radius-sm); background: none; color: var(--color-text-primary); font: inherit; text-align: left; cursor: pointer;
    transition: background var(--transition-fast); }
.vinculados__item:hover { background: var(--color-bg-hover); }
.vinculados__item--ativo { border-color: var(--color-accent-border); background: var(--color-accent-subtle); }
.vinculados__texto { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.vinculados__nome { font-size: var(--font-size-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vinculados__texto small { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.vinculados__barra { height: 4px; border-radius: var(--radius-full); background: var(--color-bg-tertiary); overflow: hidden; }
.vinculados__barra > span { display: block; height: 100%; border-radius: inherit; }
.vinculados__valor { font-size: var(--font-size-sm); font-variant-numeric: tabular-nums; white-space: nowrap; }

/* tabela do mapa (T) */
.modal-tabela { z-index: var(--z-modal-app); }
.modal-tabela .prime-modal { width: min(880px, 94vw); max-height: 86vh; display: flex; flex-direction: column; }
.modal-tabela .prime-modal__body { display: flex; flex-direction: column; gap: var(--space-3); min-height: 0; }
.modal-tabela__rolagem { max-height: 60vh; }

/* fundos das gavetas (responsive.css decide quando aparecem) */
.painel-fundo, .sidebar-fundo { position: fixed; inset: 0; background: rgba(1, 4, 9, 0.55); backdrop-filter: blur(2px); animation: vista-entra var(--transition-base) both; }
.painel-fundo { z-index: calc(var(--z-gaveta) - 1); }
.sidebar-fundo { z-index: calc(var(--z-gaveta) - 1); }

/* micro-interações (Módulo 25.7.2): cartões sobem levemente ao passar o mouse; foco sempre visível */
.dash-card, .rp-kpi, .rp-cargo, .header-kpi { transition: transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast); }
.dash-card:hover, .rp-kpi:hover, .rp-cargo:hover { box-shadow: var(--shadow-md); }
:where(button, a, input, select, textarea, summary, [tabindex]):focus-visible { outline: var(--focus-ring-width, 2px) solid var(--focus-ring-color, var(--color-accent-primary)); outline-offset: 2px; }
[data-contrast="high"] .leaflet-interactive { stroke-width: 1.6px; }

.metas__item.selecionada { background: var(--color-bg-active); }


/* hierarquia do território (IBGE | Regional) e destaque da cidade escolhida */
.segmentado { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; padding: 2px; margin-bottom: var(--space-3); background: var(--color-bg-tertiary); border-radius: var(--radius-md); }
.segmentado label { display: flex; align-items: center; justify-content: center; gap: var(--space-1); padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); font-size: var(--font-size-xs); color: var(--color-text-secondary); cursor: pointer; }
.segmentado input { position: absolute; opacity: 0; pointer-events: none; }
.segmentado label:has(input:checked) { background: var(--color-bg-primary); color: var(--color-text-primary); font-weight: var(--font-weight-semibold); }
.segmentado label:has(input:focus-visible) { outline: 2px solid var(--color-accent-primary); }
.mini-painel__tabela tr.marcada td { background: var(--color-bg-active); }
.mini-painel__tabela tr.marcada td:first-child { box-shadow: inset 3px 0 0 var(--color-accent-primary); }

/* Cadastros › Perfis e permissões: permissão × perfil */
.perfis { width: 100%; }
.perfis th, .perfis td { vertical-align: middle; }
.perfis__perm { text-align: left; font-weight: var(--font-weight-medium); color: var(--color-text-primary); }
.perfis__perm small, .perfis__col small { display: block; font-weight: var(--font-weight-normal, 400); font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.perfis__col { text-align: center; min-width: 110px; }
.perfis__celula { text-align: center; }
.perfis__chave { display: inline-flex; padding: var(--space-2); cursor: pointer; }
.perfis__chave input { width: 18px; height: 18px; accent-color: var(--color-accent-primary); cursor: inherit; }
/* matriz cadastro × ação (Fase 2): bloco por cadastro; o valor é palavra + cor (— · Só os meus · Todos do grupo) */
.perfis__titulo { margin: var(--space-4) 0 var(--space-2); font-size: var(--font-size-md); }
.perfis__cadastro th { text-align: left; background: var(--color-bg-tertiary, rgba(127, 127, 127, 0.08)); font-weight: var(--font-weight-semibold, 600); }
.perfis__cadastro small { display: block; font-weight: var(--font-weight-normal, 400); font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.perfis__perm--acao { padding-left: var(--space-5); font-weight: var(--font-weight-normal, 400); }
.perfis__valor { min-width: 128px; padding-top: 2px; padding-bottom: 2px; font-size: var(--font-size-xs); }
.perfis__valor--todos { border-color: var(--color-success-border); background: var(--color-success-subtle); }
.perfis__valor--meus { border-color: var(--color-warning-border, rgba(210, 153, 34, 0.4)); background: var(--color-warning-subtle); }
.perfis__celula--na { color: var(--color-text-tertiary); }
/* exceções de permissão de um usuário (Cadastros › Usuários) */
.usuarios__excecoes { margin: var(--space-3) 0; }
.usuarios__excecoes summary { cursor: pointer; font-weight: var(--font-weight-medium); }
.usuarios__exc-tabela th[scope="row"] { text-align: left; font-weight: var(--font-weight-normal, 400); }
.usuarios__exc-tabela .prime-select { min-width: 150px; padding-top: 2px; padding-bottom: 2px; font-size: var(--font-size-xs); }
.usuarios__excecao--ativa { background: var(--color-accent-subtle); }
.perfis__chave:has(input:disabled) { cursor: not-allowed; opacity: 0.6; }
.ficha-leitura { margin-top: var(--space-2); }
.perfis__acoes { display: flex; flex-wrap: wrap; justify-content: center; gap: 2px; margin-top: var(--space-1); font-weight: var(--font-weight-normal, 400); }
.perfis__form { margin-top: var(--space-3); align-items: flex-end; flex-wrap: wrap; }

/* Bloco 13B: modal de sessão expirada (acima de tudo, inclusive dos outros modais) */
#modal-sessao { z-index: 5000; }
.modal-sessao { max-width: 420px; width: calc(100% - 32px); }
.modal-sessao .prime-modal__body { display: flex; flex-direction: column; gap: var(--space-3); }
.modal-sessao .prime-modal__body p { margin: 0; color: var(--color-text-secondary); }
.modal-sessao__acoes { display: flex; justify-content: flex-end; gap: var(--space-2); }

/* Exportar › Relatório executivo (PDF): janela de opções */
.relatorio-modal { max-width: 640px; width: calc(100% - 32px); max-height: calc(100vh - 48px); display: flex; flex-direction: column; }
.relatorio-modal .prime-modal__body { display: flex; flex-direction: column; gap: var(--space-3); overflow-y: auto; }
.relatorio-recorte { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--space-2); margin: 0; }
.relatorio-recorte div { padding: 8px 10px; border-radius: var(--radius-md); background: var(--color-bg-tertiary); }
.relatorio-recorte dt { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.relatorio-recorte dd { margin: 2px 0 0; font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); }
.relatorio-par { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: var(--space-2); }
.relatorio-par--busca { grid-template-columns: minmax(0, 1fr) auto; align-items: center; margin-bottom: var(--space-2); }
.relatorio-bloco { border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); padding: var(--space-3); margin: 0; min-width: 0; }
.relatorio-bloco legend { padding: 0 var(--space-1); font-weight: var(--font-weight-semibold); font-size: var(--font-size-sm); }
.relatorio-lista { list-style: none; margin: 0; padding: 0; max-height: 240px; overflow-y: auto; border: 1px solid var(--color-border-muted); border-radius: var(--radius-sm); }
.relatorio-lista li + li { border-top: 1px solid var(--color-border-muted); }
.relatorio-lista label { display: grid; grid-template-columns: auto 34px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 6px 8px; cursor: pointer; font-size: var(--font-size-sm); }
.relatorio-lista label:hover { background: var(--color-bg-hover); }
.relatorio-lista__pos { color: var(--color-text-tertiary); text-align: right; font-variant-numeric: tabular-nums; }
.relatorio-lista__nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.relatorio-lista small { color: var(--color-text-tertiary); }
.relatorio-ordem { margin: 0 0 var(--space-2); padding-left: 1.3em; font-size: var(--font-size-sm); color: var(--color-text-secondary); display: grid; gap: 2px; }
.relatorio-modal .segmentado { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.relatorio-modal .segmentado label:has(input:disabled) { opacity: 0.5; cursor: not-allowed; }
.relatorio-eleito { display: inline-block; margin-left: 4px; padding: 0 6px; border-radius: var(--radius-full); font-size: var(--font-size-2xs);
    font-weight: var(--font-weight-semibold); color: #fff; background: #1a7f37; vertical-align: 1px; }
.relatorio-progresso { margin: 0; min-height: 1.2em; font-size: var(--font-size-sm); color: var(--color-accent-primary); font-weight: var(--font-weight-medium); }
.relatorio-acoes { display: flex; justify-content: flex-end; gap: var(--space-2); }

/* Cadastros › Acessos: sessões abertas e registro */
.acessos__evento--alerta td:nth-child(2) { color: var(--color-danger); font-weight: var(--font-weight-medium); }
.acessos__navegador { max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }

/* Cadastros › Usuários (usuário do sistema, não parceiro) */
/* Cadastros › Lideranças (liderancas.js) */
.lid-filtros { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin-bottom: var(--space-3); }
.lid-filtros .prime-select { width: auto; min-width: 180px; flex: 0 1 240px; }
.lid-filtros__check { display: inline-flex; align-items: center; gap: 6px; font-size: var(--font-size-xs); color: var(--color-text-secondary); cursor: pointer; }
.lid-tipos { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: var(--space-3); }
.lid-tipos__item { border: 1px solid transparent; cursor: pointer; font: inherit; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.lid-tipos__item strong { color: var(--color-text-primary); margin-left: 4px; }
.lid-tipos__item:hover, .lid-tipos__item--ativo { border-color: var(--color-accent-border); background: var(--color-accent-subtle); }
.lid-tabela td { vertical-align: middle; }
.lid-sub { display: block; margin-top: 2px; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.lid-paginas { display: flex; align-items: center; justify-content: center; gap: var(--space-3); margin-top: var(--space-2); }
.lid-local { display: flex; flex-direction: column; gap: var(--space-2); }
.lid-local__entrada { display: flex; gap: var(--space-2); align-items: flex-start; }
.lid-local__entrada textarea { flex: 1 1 auto; min-width: 0; resize: vertical; font-size: var(--font-size-xs); }
.lid-local__botoes { display: flex; flex-direction: column; gap: 6px; flex-shrink: 0; }
.lid-local__lido { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: var(--font-size-xs); }
.lid-local__mapa { height: 240px; border-radius: var(--radius-md); border: 1px solid var(--color-border-muted); overflow: hidden; }
.lid-local__mapa[hidden] { display: none; }
/* formulário de liderança em 3 passos (27/10): parceiro › cidade e nome › onde fica (bairros do OSM + mapa) */
.lid-passo { display: flex; flex-direction: column; gap: var(--space-2); margin: 0; padding: var(--space-3); border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); }
.lid-passo legend { display: inline-flex; align-items: center; gap: 8px; padding: 0 6px; font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); }
.lid-passo__n { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--color-accent-subtle); color: var(--color-accent-primary); font-size: var(--font-size-xs); }
.lid-passo__corpo { display: flex; flex-direction: column; gap: var(--space-2); }
.lid-passo__corpo[hidden], .lid-passo__espera[hidden] { display: none; }
.lid-passo__espera { margin: 0; padding: var(--space-3); border: 1px dashed var(--color-border-default); border-radius: var(--radius-md);
    color: var(--color-text-secondary); font-size: var(--font-size-sm); text-align: center; }
.lid-regioes { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: var(--font-size-xs); }
.lid-regioes:empty { display: none; }
.lid-regioes__rot { color: var(--color-text-secondary); }
.lid-regioes__item small { color: var(--color-text-tertiary); margin-left: 4px; }
.lid-mapa__barra { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-2); }
.lid-mapa__barra p { margin: 0; }
.lid-mapa { height: 400px; border-radius: var(--radius-md); border: 1px solid var(--color-border-default); overflow: hidden; cursor: crosshair; }
.lid-mapa.leaflet-container { cursor: crosshair; }
.lid-mapa__legenda { margin-top: 0; }
.lid-leg--bairro { background: var(--map-bairro); }
.lid-pino span { display: block; width: 26px; height: 26px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: var(--map-lideranca);
    border: 2px solid #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, .45); cursor: grab; }
.lid-whats summary { cursor: pointer; font-size: var(--font-size-xs); color: var(--color-accent-primary); padding: 4px 0; }
.lid-whats[open] summary { margin-bottom: var(--space-2); }
@media (max-width: 640px) { .lid-mapa { height: 320px; } }

/* ---- Aba Eleitores (captador, pensada para o celular): cartões na lista, formulário em blocos com toques grandes ---- */
.ele { max-width: 980px; margin: 0 auto; padding: var(--space-4); }
.ele-lista { list-style: none; margin: var(--space-3) 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--space-3); }
.ele-cartao { display: flex; flex-direction: column; gap: 6px; padding: var(--space-3); background: var(--color-bg-secondary); border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); }
.ele-cartao__topo { display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); }
.ele-cartao__linha { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.ele-cartao__demandas { display: flex; flex-wrap: wrap; gap: 4px; }
.ele-cartao__pe { display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); margin-top: auto; padding-top: 6px; border-top: 1px solid var(--color-border-muted); font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.ele-apoio--apoia { background: var(--color-success-subtle); color: var(--color-success); }
.ele-apoio--indeciso { background: var(--color-warning-subtle); color: var(--color-warning); }
.ele-apoio--nao_apoia { background: var(--color-danger-subtle); color: var(--color-danger); }
.ele-form { display: flex; flex-direction: column; gap: var(--space-3); margin-bottom: var(--space-4); }
.ele-bloco { border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); padding: var(--space-3); margin: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.ele-bloco legend { padding: 0 6px; font-weight: 600; font-size: var(--font-size-sm); color: var(--color-text-primary); }
.ele-duas { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); }
.ele-checks { display: flex; flex-wrap: wrap; gap: 6px; }
.ele-check { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 6px 12px; border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); cursor: pointer; font-size: var(--font-size-xs); }
.ele-check:has(input:checked) { border-color: var(--color-accent-border); background: var(--color-accent-subtle); }
.ele-check input { width: 18px; height: 18px; margin: 0; }
.ele-consentimento { align-items: flex-start; line-height: 1.4; }
.ele-acoes-local { display: flex; gap: var(--space-2); }
.ele-form .prime-input, .ele-form .prime-select { min-height: 42px; font-size: 16px; }   /* 16px: o iPhone não dá zoom ao focar */
@media (max-width: 640px) {
    .ele { padding: var(--space-2); }
    .ele-lista { grid-template-columns: 1fr; }
    .ele-novo { width: 100%; }
    .ele .lid-filtros > * { flex: 1 1 100%; min-width: 0; }
}
/* ---- Aba Planejamento: macro › subatividades › plano de ação ---- */
.pla { max-width: 1280px; margin: 0 auto; padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-3); }
.pla .cad-cab__titulo { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.pla .cad-cab { margin-bottom: 0; }
.pla .cad-cab__acoes, .ele .cad-cab__acoes { justify-content: flex-end; }
.pla > [data-voltar] { align-self: flex-start; }
.pla-sub__titulo { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.pla-numeros { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--space-2); }
.pla-numeros > div { display: flex; flex-direction: column; gap: 2px; padding: var(--space-3); background: var(--color-bg-secondary); border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); }
.pla-numeros strong { font-size: var(--font-size-lg); font-variant-numeric: tabular-nums; color: var(--color-text-primary); }
.pla-numeros span { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.pla-geral { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: var(--space-4); align-items: start; }
.pla-macros, .pla-subs, .pla-acoes, .pla-agenda ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.pla-macro, .pla-agenda__item { display: flex; flex-direction: column; gap: 6px; width: 100%; text-align: left; font: inherit; color: inherit; cursor: pointer;
    padding: var(--space-3); background: var(--color-bg-secondary); border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); }
.pla-macro:hover, .pla-agenda__item:hover { border-color: var(--color-accent-border); }
.pla-macro__topo, .pla-acao__topo { display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); }
.pla-macro__linha { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.pla-macro__objetivo, .pla-objetivo { font-size: var(--font-size-xs); color: var(--color-text-secondary); line-height: 1.5; margin: 0; }
.pla-barra { display: block; height: 6px; border-radius: 3px; background: var(--color-border-muted); overflow: hidden; }
.pla-barra > span { display: block; height: 100%; background: var(--color-accent-primary); }
.pla-agenda h3 { margin: 0 0 var(--space-2); font-size: var(--font-size-sm); }
.pla-agenda__item { padding: var(--space-2); gap: 2px; }
.pla-agenda__data { font-size: var(--font-size-2xs); font-weight: 600; color: var(--color-accent-primary); }
.pla-sub { display: flex; flex-direction: column; gap: var(--space-2); }
.pla-sub__cab { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-3); }
.pla-sub__cab > div:first-child { display: flex; flex-direction: column; gap: 4px; }
.pla-oe { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3); border: 1px solid var(--color-border-muted); border-left: 4px solid var(--color-accent-primary); border-radius: var(--radius-md); }
.pla-oe__cab { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-3); }
.pla-oe__cab > div:first-child { display: flex; flex-direction: column; gap: 4px; }
.pla-oe__cod { display: inline-block; padding: 1px 8px; border-radius: 999px; background: var(--color-accent-subtle); color: var(--color-accent-primary); font-size: var(--font-size-2xs); font-weight: 700; white-space: nowrap; }
/* caminho visível para montar a hierarquia: passos na lista, barra de estrutura no detalhe */
.pla-passos { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-2); }
.pla-passos li { display: flex; gap: 8px; align-items: flex-start; padding: var(--space-2) var(--space-3); border: 1px dashed var(--color-accent-border); border-radius: var(--radius-md); font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.pla-passos b { display: inline-grid; place-items: center; min-width: 20px; height: 20px; border-radius: 50%; background: var(--color-accent-subtle); color: var(--color-accent-primary); font-size: var(--font-size-2xs); }
.pla-passos strong { color: var(--color-text-primary); }
.pla-macro__abrir { align-self: flex-end; font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); color: var(--color-accent-primary); }
.pla-estrutura { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-2) var(--space-3); padding: var(--space-3); border: 1px solid var(--color-accent-border); border-radius: var(--radius-md); background: var(--color-bg-secondary); }
.pla-estrutura > div:first-child { display: flex; flex-direction: column; gap: 2px; }
.pla-estrutura__acoes { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.pla-estrutura__linha { display: inline-flex; align-items: center; gap: 6px; font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); color: var(--color-text-secondary); }
.pla-estrutura__linha .prime-select { width: auto; max-width: 320px; }
@media (max-width: 900px) { .pla-passos { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.pla-geral-obj { display: flex; flex-direction: column; gap: 6px; padding: var(--space-3); border-radius: var(--radius-md); background: var(--color-accent-subtle); }
.pla-geral-obj .pla-oe__cod { align-self: flex-start; }
.pla-geral-obj p { margin: 0; font-size: var(--font-size-sm); line-height: 1.55; color: var(--color-text-primary); }
.pla-sub__num { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 7px; white-space: nowrap; border-radius: 50%; background: var(--color-accent-subtle); color: var(--color-text-primary); font-size: var(--font-size-2xs); font-weight: 700; }
.pla-acoes { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: var(--space-2); }
.pla-acao { display: flex; flex-direction: column; gap: 6px; padding: var(--space-3); border: 1px solid var(--color-border-muted); border-left: 3px solid var(--color-border-muted); border-radius: var(--radius-md); }
.pla-acao--confirmada { border-left-color: var(--color-accent-primary); }
.pla-acao--realizada { border-left-color: var(--color-success); }
.pla-acao--cancelada { border-left-color: var(--color-danger); opacity: .75; }
.pla-acao__pe { display: flex; justify-content: flex-end; gap: 6px; margin-top: auto; }
.pla-sit--em_andamento, .pla-sit--confirmada { background: var(--color-accent-subtle); color: var(--color-accent-primary); }
.pla-sit--concluido, .pla-sit--realizada { background: var(--color-success-subtle); color: var(--color-success); }
.pla-sit--cancelado, .pla-sit--cancelada { background: var(--color-danger-subtle); color: var(--color-danger); }
.pla-form__campos { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--space-2) var(--space-3); }
.pla-form__largo { grid-column: 1 / -1; }
.pla-form textarea { resize: vertical; }
.pla-lids { display: flex; flex-wrap: wrap; gap: 6px; max-height: 220px; overflow-y: auto; }
.pla-lids [hidden] { display: none; }
/* agendamento e confirmações: ⏳ aguardando · ✔ confirmado · ✖ recusado; o deputado tem marcação exclusiva (dourada) */
.pla-pendencias { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; padding: var(--space-2) var(--space-3); border-radius: var(--radius-md);
    background: var(--color-warning-subtle); color: var(--color-warning); font-size: var(--font-size-xs); }
.pla-pedido { display: inline-flex; align-items: center; gap: 3px; padding: 1px 7px; border-radius: 999px; font-size: var(--font-size-2xs); font-weight: 600; white-space: nowrap; }
.pla-pedido--pendente { background: var(--color-warning-subtle); color: var(--color-warning); }
.pla-pedido--ok { background: var(--color-success-subtle); color: var(--color-success); }
.pla-pedido--nao { background: var(--color-danger-subtle); color: var(--color-danger); }
.pla-deputado { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 6px 10px; border-radius: var(--radius-md);
    border: 1px solid var(--color-deputado-border); background: var(--color-deputado-subtle); font-size: var(--font-size-xs); }
.pla-deputado--ok { background: var(--color-deputado-subtle); border-color: var(--color-deputado); border-width: 2px; }
.pla-deputado--nao { border-color: var(--color-border-muted); background: transparent; opacity: .8; }
.pla-deputado--mini { padding: 2px 8px; font-weight: 600; align-self: flex-start; }
.pla-acao--deputado { border-color: var(--color-deputado); box-shadow: 0 0 0 1px var(--color-deputado-border); }
.pla-conf { display: inline-flex; gap: 4px; margin-left: 4px; }
.pla-conf .prime-btn { padding: 1px 8px; min-height: 0; font-size: var(--font-size-2xs); }
.pla-equipe { display: flex; flex-direction: column; gap: 4px; padding: 6px 8px; border-radius: var(--radius-md); background: var(--color-bg-tertiary); }
.pla-equipe__tit { font-size: var(--font-size-2xs); font-weight: 600; color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: .03em; }
.pla-equipe ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 3px; }
.pla-equipe__item { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 4px 8px; font-size: var(--font-size-xs); }
.pla-equipe__item--nao { opacity: .65; }
.pla-detalhe-bt { align-self: flex-start; border: 0; background: none; padding: 0; font: inherit; font-size: var(--font-size-xs); color: var(--color-accent-primary); cursor: pointer; }
.pla-detalhe { display: flex; flex-direction: column; gap: 6px; }
.pla-detalhe[hidden] { display: none; }
.pla-detalhe h4 { margin: 4px 0 0; font-size: var(--font-size-xs); }
.pla-roteiro { margin: 0; padding-left: 20px; font-size: var(--font-size-xs); display: flex; flex-direction: column; gap: 2px; }
.pla-recursos { font-size: var(--font-size-xs); }
.pla-recursos tfoot td { font-weight: 600; border-top: 1px solid var(--color-border-muted); }
.pla-linha { display: grid; grid-template-columns: 110px minmax(0, 1fr) 180px auto; gap: 6px; align-items: center; margin-bottom: 6px; }
.pla-linha[data-recurso] { grid-template-columns: 120px minmax(0, 1fr) 80px 110px 100px auto; }
.pla-linha__total { font-size: var(--font-size-xs); font-variant-numeric: tabular-nums; text-align: right; color: var(--color-text-secondary); }
.pla-mais { align-self: flex-start; }
.pla-orcamento { align-self: flex-end; font-size: var(--font-size-sm); }
.pla-check-deputado { border-color: var(--color-deputado); align-self: flex-start; }
.equipe--inativo td { opacity: .55; }
/* ---- Aba Financeiro: orçado × executado, baixa, fechamento, fluxo de caixa e gerencial ---- */
.fin-abas { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 1px solid var(--color-border-muted); }
.fin-sit { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: var(--font-size-2xs); font-weight: 600; white-space: nowrap; }
.fin-sit--aberto, .fin-sit--previsto { background: var(--color-warning-subtle); color: var(--color-warning); }
.fin-sit--em_execucao { background: var(--color-accent-subtle); color: var(--color-accent-primary); }
.fin-sit--pendente_aprovacao, .fin-sit--pendente { background: var(--color-warning-subtle); color: var(--color-warning); }
.fin-sit--aprovado { background: var(--color-info-subtle); color: var(--color-info); }
.fin-sit--nao_enviado { background: var(--color-border-muted); color: var(--color-text-secondary); }
.pla-numeros > .fin-alerta { border-color: var(--color-warning); }
.fin-aprovacao { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3); border: 2px solid var(--color-warning); border-radius: var(--radius-md); background: var(--color-warning-subtle); }
.fin-aprovacao h4 { margin: 0; }
.fin-aprovacao--espera { border-width: 1px; font-size: var(--font-size-xs); }
.fin-aprovacao__grade { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: var(--space-3); align-items: start; }
.fin-valor { text-align: right; font-variant-numeric: tabular-nums; }
.fin-lanc .fin-valor { width: 120px; padding: 4px 8px; min-height: 0; }
/* erro junto do campo (formularios.js): o campo fica marcado e a mensagem logo abaixo, anunciada pelo aria-describedby */
small.campo-erro { display: block; margin-top: 2px; font-weight: var(--font-weight-medium); }   /* cor e tamanho: .campo-erro (linha ~967) */
.prime-input[aria-invalid="true"], .prime-select[aria-invalid="true"] { border-color: var(--color-danger); box-shadow: 0 0 0 1px var(--color-danger-border); }
.ele-check:has(input[aria-invalid="true"]) { border-color: var(--color-danger); }
button[aria-busy="true"] { cursor: progress; }
.fin-historico ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; max-height: 320px; overflow-y: auto; }
.fin-historico li { display: flex; gap: 8px; align-items: flex-start; font-size: var(--font-size-xs); padding-left: 4px; border-left: 2px solid var(--color-border-muted); }
.fin-historico__ic { width: 20px; text-align: center; }
@media (max-width: 900px) { .fin-aprovacao__grade { grid-template-columns: 1fr; } }
.fin-sit--finalizado, .fin-sit--pago { background: var(--color-success-subtle); color: var(--color-success); }
.fin-sit--cancelado { background: var(--color-border-muted); color: var(--color-text-secondary); }
.fin-negativo { color: var(--color-danger) !important; }
.fin-positivo { color: var(--color-success); }
.pla-numeros > .fin-negativo strong { color: var(--color-danger); }
.fin-barra { display: inline-block; vertical-align: middle; width: 70px; height: 6px; border-radius: 3px; background: var(--color-border-muted); overflow: hidden; }
.fin-barra > span { display: block; height: 100%; background: var(--color-success); }
.fin-barra--estouro > span { background: var(--color-danger); }
.fin-tabela td { vertical-align: middle; }
.fin-linha { cursor: pointer; }
.fin-linha:hover td, .fin-linha--aberta td { background: var(--color-accent-subtle); }
.fin-detalhe-linha > td { padding: 0 !important; }
.fin-detalhe { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-3); border-left: 3px solid var(--color-accent-primary); background: var(--color-bg-secondary); }
.fin-detalhe__cab { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: var(--space-2); }
.fin-resumo { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: var(--font-size-xs); }
.fin-detalhe__grade { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: var(--space-3); align-items: start; }
.fin-detalhe h4 { margin: 0 0 6px; font-size: var(--font-size-xs); text-transform: uppercase; letter-spacing: .03em; color: var(--color-text-secondary); }
.fin-lanc { font-size: var(--font-size-xs); }
.fin-cancelado td { opacity: .5; text-decoration: line-through; }
.fin-previsto td { color: var(--color-text-secondary); font-style: italic; }
.fin-baixa { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px var(--space-2); align-items: end; padding: 6px 0; }
.fin-fechamento { display: flex; justify-content: space-between; align-items: flex-end; flex-wrap: wrap; gap: var(--space-2); padding: var(--space-2) var(--space-3);
    border-radius: var(--radius-md); background: var(--color-accent-subtle); font-size: var(--font-size-xs); }
.fin-fechamento .campo { flex: 1 1 320px; }
.fin-meses { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.fin-meses > div { display: flex; flex-direction: column; gap: 2px; padding: 6px 12px; border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); font-size: var(--font-size-xs); }
.fin-gerencial .fin-g--plano td { font-weight: 600; background: var(--color-accent-subtle); }
.fin-gerencial .fin-g--oe td:first-child { padding-left: 18px; }
.fin-gerencial .fin-g--la td:first-child { padding-left: 40px; color: var(--color-text-secondary); }
.fin .lid-filtros .campo { flex-direction: row; align-items: center; gap: 6px; }
.fin-avulso { margin-left: auto; }
.pla-fin { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: var(--font-size-xs); padding: 4px 8px; border-radius: var(--radius-md); align-self: flex-start; }
.pla-fin--nao_enviado { background: var(--color-bg-tertiary); color: var(--color-text-secondary); }
.pla-fin--pendente_aprovacao { background: var(--color-warning-subtle); color: var(--color-warning); }
.pla-fin--aprovado { background: var(--color-info-subtle); color: var(--color-info); }
.pla-fin--aberto { background: var(--color-warning-subtle); color: var(--color-warning); }
.pla-fin--em_execucao { background: var(--color-accent-subtle); color: var(--color-accent-primary); }
.pla-fin--finalizado { background: var(--color-success-subtle); color: var(--color-success); }
@media (max-width: 900px) { .fin-detalhe__grade { grid-template-columns: 1fr; } }
.pla-hierarquia { display: flex; flex-direction: column; gap: 4px; }
.pla-hierarquia__item { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.pla-hierarquia__nivel { padding: 2px 8px; border-radius: 999px; background: var(--color-accent-subtle); color: var(--color-text-primary); }
.pla-form select[size] { height: auto; margin-top: 6px; }
@media (max-width: 1100px) { .pla-geral { grid-template-columns: 1fr; } .pla-numeros { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 640px) {
    .pla { padding: var(--space-2); }
    .pla-numeros { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .pla-acoes { grid-template-columns: 1fr; }
    .pla-sub__cab { flex-direction: column; }
    .pla-linha, .pla-linha[data-recurso], .pla-linha[data-item] { grid-template-columns: 1fr 1fr auto; }
    .pla-linha > :nth-child(2) { grid-column: 1 / -1; order: -1; }
}

/* ---- Planejamento em ABAS (27/10/2026): objetivo geral · específicos · linhas · planos com atividades e mapa ---- */
.pla-abas .prime-tab { flex: 0 0 auto; padding-left: var(--space-4); padding-right: var(--space-4); }
.pla-abas .prime-tab[disabled] { opacity: .45; cursor: not-allowed; }
.pla-abas__n { display: inline-grid; place-items: center; min-width: 20px; height: 18px; padding: 0 6px; margin-left: 4px; border-radius: var(--radius-full);
    background: var(--color-bg-tertiary); color: var(--color-text-secondary); font-size: var(--font-size-2xs); font-variant-numeric: tabular-nums; }
.pla-painel { display: flex; flex-direction: column; gap: var(--space-3); }
.pla-cad-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.pla-cad-item { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-3); }
.pla-cad-item > div:first-child { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.pla-cad-item .acoes-icone { flex: 0 0 auto; display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }
.pla-minis { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.pla-mini { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; width: 100%; padding: 6px 8px; text-align: left; font: inherit; font-size: var(--font-size-xs);
    color: inherit; cursor: pointer; background: var(--color-bg-tertiary); border: 1px solid transparent; border-radius: var(--radius-md); }
.pla-mini:hover, .pla-mini:focus-visible { border-color: var(--color-accent-border); }
.pla-planos-cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-2); }
.pla-planos { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: var(--space-3); align-items: start; }
.pla-planos__lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-2); position: sticky; top: var(--space-2);
    max-height: calc(100vh - 140px); overflow-y: auto; }
.pla-plano-item[aria-current="true"] { border-color: var(--color-accent-primary); background: var(--color-accent-subtle); box-shadow: inset 3px 0 0 var(--color-accent-primary); }
.pla-plano-item--realizada .pla-barra > span { background: var(--color-success); }
.pla-plano { gap: var(--space-2); }
.pla-plano__titulo { margin: 0; font-size: var(--font-size-md, 1rem); display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; }
.pla-plano__sub { margin: var(--space-2) 0 0; font-size: var(--font-size-sm); }
.pla-progresso { display: flex; flex-direction: column; gap: 4px; font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.pla-progresso--ok { color: var(--color-success); font-weight: var(--font-weight-semibold); }
.pla-progresso--ok .pla-barra > span { background: var(--color-success); }
.pla-sit--finalizado { background: var(--color-success-subtle); color: var(--color-success); }
.pla-sit--aberto { background: var(--color-warning-subtle); color: var(--color-warning); }
.pla-saldo--neg { color: var(--color-danger); }
/* mapa do plano: a rede da liderança (pontos com cor + forma + legenda com palavras) */
.pla-mapa { height: 320px; border-radius: var(--radius-md); border: 1px solid var(--color-border-muted); overflow: hidden; }
.pla-mapa--marcando { outline: 2px dashed var(--map-atividade); outline-offset: 2px; cursor: crosshair; }
.pla-mapa--marcando .leaflet-container, .pla-mapa--marcando.leaflet-container { cursor: crosshair; }
.pla-legenda { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: var(--font-size-2xs); color: var(--color-text-secondary); }
.pla-leg { display: inline-block; width: 11px; height: 11px; margin-right: 5px; vertical-align: -1px; border-radius: 50%; }
/* as mesmas formas do mapa (GruposMapa.SIMBOLOS): hexágono = agregado, losango = comunitária, casa = apoiador */
.pla-leg--lid, .esc-ic--com, .rede-ic--com { border-radius: 0; background: var(--map-lideranca); clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
.pla-leg--ag, .esc-ic--ag, .rede-ic--ag { border-radius: 0; background: var(--map-lideranca); box-shadow: none; clip-path: polygon(25% 4%, 75% 4%, 100% 50%, 75% 96%, 25% 96%, 0 50%); }
.pla-leg--apo, .esc-ic--apo, .rede-ic--apo { border-radius: 0; background: var(--map-apoiador); clip-path: polygon(50% 0, 100% 42%, 100% 100%, 0 100%, 0 42%); }
.pla-leg--apo { width: 10px; height: 10px; }
.pla-leg--local { background: var(--map-local); }
.pla-leg--atv { border-radius: 3px; background: var(--map-atividade); }
.pla-pino span { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 6px; background: var(--map-atividade); color: #fff;
    font: 700 11px/1 var(--font-family-sans); border: 2px solid #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .45); }
/* detalhe do plano em blocos (27/10): cabeçalho › lideranças › quando e onde › atividades minimizadas › orçamento › equipe › mapa */
.pla-plano { gap: var(--space-3); }
.pla-plano__cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: var(--space-2) var(--space-3);
    padding-bottom: var(--space-3); border-bottom: 1px solid var(--color-border-muted); }
.pla-plano__ident { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.pla-plano__cab-dir { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--space-2); }
.pla-plano__botoes { display: flex; gap: 6px; }
.pla-bloco { display: flex; flex-direction: column; gap: var(--space-2); }
.pla-bloco + .pla-bloco { padding-top: var(--space-3); border-top: 1px solid var(--color-border-muted); }
.pla-bloco__cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-2); }
.pla-bloco__tit { margin: 0; font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); text-transform: uppercase; letter-spacing: .04em;
    color: var(--color-text-secondary); display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; }
.pla-bloco__tit .pla-macro__linha { text-transform: none; letter-spacing: 0; font-weight: 400; }
.pla-bloco--lid { padding: var(--space-3); border: 1px solid var(--color-accent-border); border-radius: var(--radius-md); background: var(--color-accent-subtle); }
.pla-bloco--lid + .pla-bloco { border-top: 0; }
.pla-bloco--falta { border-color: var(--color-warning); background: var(--color-warning-subtle); }
/* pares rótulo › valor: rótulo numa coluna fixa, valor ao lado (no celular, um embaixo do outro) */
.pla-dl { display: flex; flex-direction: column; gap: 6px; margin: 0; }
.pla-dl > div { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 2px var(--space-3); align-items: baseline; }
.pla-dl dt { font-size: var(--font-size-xs); color: var(--color-text-tertiary); }
.pla-dl dd { margin: 0; font-size: var(--font-size-sm); color: var(--color-text-primary); display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; }
.pla-dl--lid dd { font-size: var(--font-size-md, 1rem); }
.pla-dl--compacta > div { grid-template-columns: 120px minmax(0, 1fr); }
.pla-dl--compacta dd { font-size: var(--font-size-xs); }
.pla-falta { color: var(--color-warning); font-weight: var(--font-weight-semibold); }
.pla-cadeia-curta { display: flex; flex-direction: column; gap: 1px; font-size: var(--font-size-xs); color: var(--color-text-primary); }
.pla-cadeia-curta__rot { display: inline-block; min-width: 96px; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
/* atividades minimizadas: número + título (abre) e a situação ao lado */
.pla-atvs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.pla-atv2 { border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); }
.pla-atv2--finalizado { border-color: var(--color-success-border); }
.pla-atv2--cancelado .pla-atv2__tit { text-decoration: line-through; color: var(--color-text-tertiary); }
.pla-atv2__linha { display: flex; align-items: center; gap: var(--space-2); padding: 4px 6px 4px 4px; }
.pla-atv2__abrir { flex: 1 1 auto; min-width: 0; min-height: 40px; display: flex; align-items: center; gap: 8px; padding: 4px 6px; border: 0; border-radius: var(--radius-md);
    background: none; color: var(--color-text-primary); font: inherit; font-size: var(--font-size-sm); text-align: left; cursor: pointer; }
.pla-atv2__abrir:hover, .pla-atv2__abrir:focus-visible { background: var(--color-bg-tertiary); }
.pla-atv2__seta::before { content: '▸'; display: inline-block; width: 12px; color: var(--color-text-tertiary); transition: transform .15s; }
.pla-atv2__abrir[aria-expanded="true"] .pla-atv2__seta::before { transform: rotate(90deg); }
.pla-atv2__tit { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: var(--font-weight-medium); }
.pla-atv2__corpo { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-2) var(--space-3) var(--space-3) 44px; border-top: 1px solid var(--color-border-muted); }
.pla-atv2__corpo[hidden] { display: none; }
/* situação da atividade: cor + ícone/palavra (o select mostra a palavra) */
.pla-status { flex: 0 0 auto; width: auto; min-width: 150px; min-height: 36px; font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); border-radius: var(--radius-full); }
span.pla-status { display: inline-flex; align-items: center; padding: 0 12px; min-width: 0; }
.pla-status--aberto { background: var(--color-warning-subtle); color: var(--color-warning); border-color: var(--color-warning); }
.pla-status--em_andamento { background: var(--color-accent-subtle); color: var(--color-accent-primary); border-color: var(--color-accent-border); }
.pla-status--finalizado { background: var(--color-success-subtle); color: var(--color-success); border-color: var(--color-success-border); }
.pla-status--cancelado { background: var(--color-danger-subtle); color: var(--color-danger); border-color: var(--color-danger); }
.pla-status option { background: var(--color-bg-secondary); color: var(--color-text-primary); }
/* atividades no formulário */
.pla-atv { display: flex; flex-direction: column; gap: var(--space-2); margin: 0 0 var(--space-3); padding: var(--space-3); border: 1px solid var(--color-border-default); border-radius: var(--radius-md); }
.pla-atv legend { padding: 0 6px; font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); }
.pla-atv__pessoas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); }
.pla-atv__pessoas .campo, .pla-atv > .campo { display: flex; flex-direction: column; gap: 4px; }
.pla-pessoas { display: flex; flex-wrap: wrap; gap: 4px; }
.pla-pessoa { display: inline-flex; align-items: center; gap: 2px; padding: 0 2px 0 10px; border-radius: var(--radius-full); background: var(--color-accent-subtle);
    color: var(--color-text-primary); font-size: var(--font-size-xs); }
.pla-pessoa button { display: inline-grid; place-items: center; min-width: 32px; min-height: 32px; border: 0; border-radius: 50%; background: none; color: inherit; cursor: pointer; }
.pla-pessoa button:hover, .pla-pessoa button:focus-visible { background: var(--color-bg-tertiary); }
.pla-linha[data-item] { grid-template-columns: 120px minmax(0, 1fr) 80px 110px 100px auto; }
.pla-atv__saldo, .pla-resumo-orc { display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: var(--font-size-xs); color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }
.pla-resumo-orc { justify-content: flex-end; font-size: var(--font-size-sm); }
.pla-atv__pe { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.pla-atv__remover { margin-left: auto; }
@media (max-width: 900px) {
    .pla-planos { grid-template-columns: 1fr; }
    .pla-planos__lista { position: static; max-height: none; }
    .pla-atv__pessoas { grid-template-columns: 1fr; }
    .pla-dl > div, .pla-dl--compacta > div { grid-template-columns: 1fr; }
    .pla-atv2__corpo { padding-left: var(--space-3); }
    .pla-status { min-width: 0; }
    .pla-cad-item { flex-direction: column; }
}
/* ---- Formulário de apoiadores (nível campo/celular): etapas, combos, chips, contadores, interruptores, barra fixa ---- */
.ele-form { gap: var(--space-3); padding-bottom: 0; }
.ele-form__cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 4px var(--space-2); }
.ele-form__cab h3 { margin: 0; font-size: var(--font-size-lg); }
.ele-form__salvo { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.ele-casa, .ele-rascunho { margin: 0; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-2);
    padding: var(--space-2) var(--space-3); border-radius: var(--radius-md); font-size: var(--font-size-xs); }
.ele-casa { background: var(--color-success-subtle); border: 1px solid var(--color-success-border); color: var(--color-text-primary); }
.ele-rascunho { background: var(--color-warning-subtle); border: 1px solid var(--color-warning-border); color: var(--color-text-primary); }
.ele-rascunho > span:last-child { display: inline-flex; gap: 6px; }
/* etapas: rola na horizontal no celular; ✓ nas completas, destaque na atual */
.ele-etapas { position: sticky; top: 0; z-index: 3; margin: 0 calc(-1 * var(--space-3)); padding: var(--space-2) var(--space-3);
    background: var(--color-bg-secondary); border-bottom: 1px solid var(--color-border-muted); overflow-x: auto; scrollbar-width: none; }
.ele-etapas ol { list-style: none; margin: 0; padding: 0; display: flex; gap: 6px; min-width: max-content; }
.ele-etapas button { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px 4px 4px; border: 1px solid var(--color-border-muted); border-radius: var(--radius-full);
    background: var(--color-bg-primary); color: var(--color-text-secondary); font: inherit; font-size: var(--font-size-xs); cursor: pointer; white-space: nowrap; }
.ele-etapas button:hover { color: var(--color-text-primary); border-color: var(--color-border-default); }
.ele-etapas__n { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--color-bg-tertiary); font-weight: var(--font-weight-semibold); }
.ele-etapas--ok .ele-etapas__n { background: var(--color-success); color: var(--color-text-inverse); font-size: 0; }
.ele-etapas--ok .ele-etapas__n::after { content: '✓'; font-size: 12px; }
.ele-etapas--atual { border-color: var(--color-accent-primary) !important; color: var(--color-text-primary) !important; background: var(--color-accent-subtle) !important; }
.ele-bloco { scroll-margin-top: 84px; }   /* a barra de etapas (fixa no alto) não cobre o título da etapa */
/* busca em listas longas (Formularios.combo) */
.combo { position: relative; display: flex; flex-direction: column; gap: 4px; }
.combo__lista { position: absolute; z-index: 20; top: 100%; left: 0; right: 0; margin: 4px 0 0; padding: 4px; list-style: none; max-height: 280px; overflow-y: auto;
    background: var(--color-bg-elevated); border: 1px solid var(--color-border-default); border-radius: var(--radius-md); box-shadow: var(--shadow-lg, 0 8px 24px rgba(0, 0, 0, .25)); }
.combo__lista [role="option"] { display: flex; flex-direction: column; gap: 1px; padding: 8px 10px; border-radius: var(--radius-sm, 4px); cursor: pointer; }
.combo__lista [role="option"] small { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.combo__lista [aria-selected="true"], .combo__lista [role="option"]:hover { background: var(--color-accent-subtle); }
.combo__vazio { padding: 8px 10px; color: var(--color-text-tertiary); font-size: var(--font-size-xs); }
/* título conferido ao digitar */
.ele-titulo { letter-spacing: .06em; font-variant-numeric: tabular-nums; }
.ele-titulo--ok { border-color: var(--color-success) !important; }
.ele-titulo--erro { border-color: var(--color-danger) !important; }
.ele-titulo-status { min-height: 1em; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.ele-titulo-status--ok { color: var(--color-success); font-weight: var(--font-weight-medium); }
.ele-titulo-status--erro { color: var(--color-danger); font-weight: var(--font-weight-medium); }
/* votação e localização */
.ele-local-secao:not(:empty) { padding: 6px 10px; border-radius: var(--radius-md); background: var(--color-info-subtle); font-size: var(--font-size-xs); }
/* a casa (etapa 4): o mapa abre na comunidade da liderança; os dados da casa vêm abaixo, depois da linha */
.ele-localizacao { display: flex; flex-direction: column; gap: var(--space-2); padding-bottom: var(--space-3); border-bottom: 1px dashed var(--color-border-muted); }
.ele-casa-local, .ele-casa-local__campos, .ele-casa-local__mapa { display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; }
.ele-casa-local[hidden] { display: none; }
.ele-gps { min-height: 48px; justify-content: center; font-weight: var(--font-weight-semibold); }
/* o mapa tem caixa própria: altura fixa, moldura e nada vaza dela (o fundo MapLibre é maior que a caixa) */
.ele-mapa-casa { position: relative; height: 360px; width: 100%; flex: none; isolation: isolate; }
@media (max-width: 640px) { .ele-mapa-casa { height: 300px; } }
/* notebook: campos à esquerda, o mapa à direita (fica à vista enquanto se preenchem os campos) */
@media (min-width: 1024px) {
    .ele-casa-local:not([hidden]) { display: grid; grid-template-columns: minmax(260px, 2fr) 3fr; gap: var(--space-4); align-items: start; }
    .ele-casa-local__mapa { position: sticky; top: 96px; padding: var(--space-2); border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); background: var(--color-bg-tertiary); }
    .ele-mapa-casa { height: 420px; }
}
/* ---- Grupos de marcadores (grupos-mapa.js, requisito H.07): círculo com o total; cor e forma = o tipo ---- */
.grupo-mapa { background: none; border: 0; }
.grupo-mapa span { display: grid; place-items: center; box-sizing: border-box; border-radius: 50%; cursor: pointer;
    font: 700 11px/1 var(--font-family-sans); color: #fff; text-shadow: 0 1px 2px rgb(0 0 0 / .55);
    box-shadow: 0 2px 8px rgb(0 0 0 / .45); transition: transform .12s ease; }
.grupo-mapa:hover span, .grupo-mapa:focus-visible span { transform: scale(1.12); }
.grupo-mapa:focus-visible { outline: none; }
.grupo-mapa:focus-visible span { outline: 2px solid var(--color-accent-primary); outline-offset: 2px; }
/* líder agregado: hexágono, comunitária: losango, apoiador: casa laranja, escola: quadrado roxo */
/* o anel do grupo de agregados vem dividido nas cores dos parceiros (--aneis, conic-gradient montado no rede.js) */
/* o grupo tem a FORMA do nível (hexágono, losango, casa, quadrado): o span é o contorno (clip-path), o ::before o miolo */
.grupo-mapa { filter: drop-shadow(0 2px 4px rgb(0 0 0 / .5)); }
.grupo-mapa--ag span, .grupo-mapa--com span, .grupo-mapa--apo span, .grupo-mapa--escola span { position: relative; isolation: isolate; border: 0; border-radius: 0; box-shadow: none; clip-path: var(--forma); }
.grupo-mapa--ag span::before, .grupo-mapa--com span::before, .grupo-mapa--apo span::before, .grupo-mapa--escola span::before { content: ''; position: absolute; inset: var(--espessura, 2px); z-index: -1; clip-path: var(--forma); background: var(--miolo); }
.grupo-mapa--ag { --forma: polygon(25% 4%, 75% 4%, 100% 50%, 75% 96%, 25% 96%, 0 50%); --espessura: 5px; --miolo: var(--color-bg-primary); }
.grupo-mapa--ag span { background: var(--aneis, var(--map-lideranca)); color: var(--color-text-primary); text-shadow: none; font-size: 12px; }
.grupo-mapa--com { --forma: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); --espessura: 3px; --miolo: var(--map-lideranca); }
.grupo-mapa--com span { background: #fff; }
.grupo-mapa--apo { --forma: polygon(50% 0, 100% 42%, 100% 100%, 0 100%, 0 42%); --espessura: 2px; --miolo: color-mix(in srgb, var(--map-apoiador) 90%, transparent); }
.grupo-mapa--apo span { background: #fff; padding-top: 22%; }
.grupo-mapa--escola { --forma: inset(0 round 22%); }
.grupo-mapa--escola span { --miolo: color-mix(in srgb, var(--cor) 88%, transparent); background: var(--anel); }   /* --cor vem no próprio span */
/* ponto com a forma do nível (GruposMapa.simbolo) */
.forma-mapa { background: none; border: 0; }
.forma-mapa svg { display: block; overflow: visible; filter: drop-shadow(0 1px 2px rgb(0 0 0 / .55)); transition: transform .12s ease; }
.forma-mapa:hover svg { transform: scale(1.25); }
@media (prefers-reduced-motion: reduce) { .forma-mapa svg { transition: none; } }
/* balão didático: a forma + o que é, o nome, a cadeia da hierarquia, os dados e "como ler" */
.esc-dica { max-width: 300px; padding: 8px 10px; font-size: var(--font-size-xs); line-height: 1.4; white-space: normal; }
.esc-dica__tipo { display: flex; align-items: center; gap: 6px; margin-bottom: 2px; font-size: var(--font-size-2xs); font-weight: 600; text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); color: var(--color-text-secondary); }
.esc-dica__tipo svg { flex: none; }
.esc-dica__nome { font-size: var(--font-size-sm); color: var(--color-text-primary); }
.esc-dica__cadeia { margin: 3px 0; color: var(--color-text-secondary); font-size: var(--font-size-2xs); }
.esc-dica__cor { display: inline-block; width: 8px; height: 8px; margin-right: 4px; border-radius: 2px; vertical-align: 0; }
.esc-dica__linha { margin-top: 2px; }
.esc-dica__linha .esc-hier { justify-content: flex-start; font-size: var(--font-size-2xs); }
.esc-dica__como { margin-top: 6px; padding-top: 5px; border-top: 1px solid var(--color-border-muted); color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.leaflet-tooltip.esc-dica-balao { padding: 0; }
/* fundo do mapa da escala: Simples | Ruas (botões com aria-pressed, no canto do mapa) */
.esc-fundo { display: flex; padding: 2px; border: 1px solid var(--color-border-default); border-radius: var(--radius-md); background: var(--color-bg-elevated); box-shadow: var(--shadow-md); }
.esc-fundo button { padding: 4px 10px; border: 0; border-radius: var(--radius-sm); background: none; color: var(--color-text-secondary); font: 600 var(--font-size-2xs)/1.2 var(--font-family-sans); cursor: pointer; }
.esc-fundo button:hover { color: var(--color-text-primary); background: var(--color-bg-hover); }
.esc-fundo button[aria-pressed="true"] { background: var(--color-accent-primary); color: #fff; }
.esc-fundo button:focus-visible { outline: 2px solid var(--color-accent-primary); outline-offset: 1px; }
/* aba Mapa: no alto, à esquerda da coluna de botões (+ − ⌂ …) */
.prime-mapa-fundo { position: absolute; z-index: 1000; top: var(--space-3); right: calc(var(--space-3) + 46px); }
body.exportando .prime-mapa-fundo { visibility: hidden !important; }
/* a rede de campo da cidade no balão do município (check "Agregados") */
.prime-map-tooltip__rede { margin-top: 6px; padding-top: 6px; border-top: 1px solid var(--color-border-muted); }
.prime-map-tooltip__rede .esc-hier { display: flex; justify-content: flex-start; margin-top: 2px; font-size: var(--font-size-2xs); }
.rede-escala-mapa { margin-top: var(--space-2); }
/* "Onde está o mouse" (escala-mapa.js): região › cidade (com a rede) › zona, no canto do mapa */
.esc-onde { min-width: 170px; max-width: 260px; padding: 6px 9px; border: 1px solid var(--color-border-default); border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--color-bg-elevated) 94%, transparent); box-shadow: var(--shadow-md); font-size: var(--font-size-2xs); line-height: 1.5; color: var(--color-text-primary); pointer-events: none; }
.esc-onde[hidden] { display: none; }
.esc-onde__tit { color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); }
.esc-onde .esc-ic { margin-right: 5px; }
.esc-onde__rede .esc-hier { justify-content: flex-start; font-size: var(--font-size-2xs); }
.esc-onde__nada { color: var(--color-text-tertiary); }
@media (max-width: 640px) { .esc-onde { display: none; } }
.grupo-mapa-leg { display: inline-grid; place-items: center; width: 18px; height: 18px; margin-right: 5px; vertical-align: -4px; border-radius: 50%;
    border: 2px solid var(--map-lideranca); font-size: 9px; font-weight: 700; color: var(--color-text-primary); }
@media (prefers-reduced-motion: reduce) { .grupo-mapa span { transition: none; } }

/* o Leaflet só libera o max-width do SVG no overlayPane: nos painéis próprios (escRegioes, escCidades, escZonas…) o
   "svg { max-width: 100% }" global deixava o SVG com largura 0 — as regiões e os contornos sumiam */
.leaflet-container .leaflet-pane svg { max-width: none !important; max-height: none !important; }

/* ---- Escala do território nos mapas de cadastro (escala-mapa.js) ---- */
.esc-leg-caixa:empty { display: none; }
.esc-leg-caixa { padding: var(--space-2); border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); background: var(--color-bg-secondary); font-size: var(--font-size-2xs); }
.esc-leg__cab { display: flex; justify-content: space-between; margin-bottom: 4px; color: var(--color-text-secondary); }
.esc-leg { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 2px 8px; }
.esc-leg button { display: flex; align-items: center; gap: 6px; width: 100%; padding: 3px 4px; border: 0; border-radius: var(--radius-sm); background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.esc-leg button:hover { background: var(--color-bg-tertiary); }
.esc-leg__nome { flex: 1; color: var(--color-text-primary); }
.esc-leg__nome small { color: var(--color-text-tertiary); }
.esc-leg__estado { white-space: nowrap; }
.esc-leg__item--on .esc-leg__estado { color: var(--color-success); }
.esc-leg__item--grupo .esc-leg__estado { color: var(--color-info); }
.esc-leg__item--off { opacity: .6; }
.esc-ic { flex: none; display: inline-block; width: 11px; height: 11px; border-radius: 50%; vertical-align: -1px; }
.esc-ic--regiao { border-radius: 3px; background: var(--partner-5); opacity: .6; }
.esc-ic--parceiro { background: conic-gradient(var(--partner-1) 0 33%, var(--partner-4) 0 66%, var(--partner-6) 0); }
.esc-ic--cidade { border-radius: 2px; border: 1.5px solid var(--color-text-tertiary); }
.esc-ic--ag, .esc-ic--com, .esc-ic--apo { border-radius: 0; }   /* a forma vem do clip-path (junto do .pla-leg) */
.esc-ic--zona { border-radius: 0; height: 0; border-top: 2px dashed #f0883e; }
.esc-ic--bairro { border-radius: 0; background: var(--map-bairro); clip-path: polygon(50% 4%, 100% 96%, 0 96%); }
.esc-ic--escola { border-radius: 2px; background: #a371f7; }
.esc-ic--secao { border-radius: 2px; background: #a371f7; opacity: .5; transform: scale(.75); }
/* rótulos no mapa: nome do território + a rede somada (parceiros, agregados, comunitárias, apoiadores) */
.esc-rotulo { background: none; border: 0; pointer-events: none; }
/* só o span de fora (> span): os de dentro da rede somada (.esc-hier) não podem herdar o deslocamento nem a coluna */
.esc-rotulo > span { display: inline-flex; flex-direction: column; align-items: center; transform: translate(-50%, -50%); white-space: nowrap;
    font: 600 10px/1.2 var(--font-family-sans); color: var(--color-text-primary); text-shadow: 0 0 3px var(--color-bg-primary), 0 0 3px var(--color-bg-primary); }
.esc-rotulo--regiao > span { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; }
.esc-rotulo--bairro > span { font-weight: 500; color: var(--color-text-secondary); }
/* cidade: o rótulo fica ACIMA do centro — no centro estão os agregados sem ponto marcado (não podem ficar cobertos) */
.esc-rotulo--cidade > span { transform: translate(-50%, calc(-100% - 14px)); }
/* bairro: o nome acima do triângulo (no ponto ficam o triângulo, a comunitária e as casas do bairro) */
.esc-rotulo--bairro > span { transform: translate(-50%, calc(-100% - 8px)); }
.esc-rotulo--bairro.esc-rotulo--com-rede > span { transform: translate(-50%, calc(-100% - 12px)); }
.esc-rotulo--com-rede > span { padding: 3px 7px; border-radius: var(--radius-sm); background: color-mix(in srgb, var(--color-bg-primary) 82%, transparent);
    border: 1px solid var(--color-border-muted); text-shadow: none; color: var(--color-text-primary); }
.esc-rotulo--regiao.esc-rotulo > span .esc-hier, .esc-rotulo--regiao > span .esc-hier { text-transform: none; }
.esc-hier { display: inline-flex; flex-wrap: wrap; justify-content: center; gap: 2px 7px; margin-top: 1px; font-weight: 600; font-size: 10px; text-transform: none; letter-spacing: 0; }
.esc-hier > span { display: inline-flex; align-items: center; gap: 3px; }
.esc-hier .esc-ic { width: 9px; height: 9px; }

/* ---- Rede de campo (rede.js): Parceiro › Líder agregado › Liderança comunitária › Apoiador ---- */
.rede-painel { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: var(--space-4); align-items: start; }
@media (max-width: 1023px) { .rede-painel { grid-template-columns: 1fr; } }
.rede-painel__mapa { display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; }
.rede-mapa { position: relative; height: 420px; width: 100%; isolation: isolate; border-radius: var(--radius-md); border: 1px solid var(--color-border-default); overflow: hidden; }
@media (max-width: 640px) { .rede-mapa { height: 320px; } }
.rede-painel__arvore { max-height: 520px; overflow: auto; min-width: 0; padding-right: var(--space-2); font-size: var(--font-size-xs); }
.rede-painel__titulo { margin: 0 0 var(--space-2); font-weight: var(--font-weight-semibold); }
.rede-arvore, .rede-ags, .rede-coms, .rede-apo { list-style: none; margin: 0; padding: 0; }
.rede-ags { margin-top: var(--space-2); display: flex; flex-direction: column; gap: var(--space-2); }
.rede-coms { margin: 6px 0 0 18px; display: flex; flex-direction: column; gap: 4px; }
.rede-apo { margin: 4px 0 4px 22px; display: flex; flex-direction: column; gap: 2px; color: var(--color-text-secondary); }
.rede-linha, .rede-ag > summary, .rede-com > summary { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.rede-ag > summary, .rede-com > summary { cursor: pointer; padding: 4px 6px; border-radius: var(--radius-sm); }
.rede-ag > summary:hover, .rede-com > summary:hover { background: var(--color-bg-tertiary); }
.rede-ag { padding: 4px; border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); }
.rede-num { margin-left: auto; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); white-space: nowrap; }
.rede-direto { margin: 4px 0 0 18px; color: var(--color-text-tertiary); }
.rede-oculto { margin: 4px 0 4px 22px; }
.rede-ic { flex: none; display: inline-block; width: 11px; height: 11px; border-radius: 50%; }
.rede-ic--ag, .rede-ic--com, .rede-ic--apo { border-radius: 0; }
.rede-ic--apo { width: 9px; height: 9px; margin-right: 6px; }
.rede-secao .rede-painel { margin-top: var(--space-1); }
/* largura total: o mapa ocupa a linha e a árvore desce, com os agregados em colunas */
.rede-painel__barra { grid-column: 1 / -1; display: flex; justify-content: flex-end; margin-bottom: calc(-1 * var(--space-2)); }
.rede-painel--largo { grid-template-columns: 1fr; }
.rede-painel--largo .rede-mapa { height: 620px; }
@media (max-width: 640px) { .rede-painel--largo .rede-mapa { height: 420px; } .rede-painel__barra { display: none; } }
.rede-painel--largo .rede-painel__arvore { max-height: none; overflow: visible; }
.rede-painel--largo .rede-ags { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); align-items: start; }
/* minimizar os cards da ficha do parceiro (botão ▾ dos Resultados dos parceiros): minimizado fica só o título */
.card-minimizavel { position: relative; }
.card-minimizavel > :first-child { padding-right: 36px; }
.card-minimizar { position: absolute; top: var(--space-3); right: var(--space-3); margin: 0; }
.card-recolhido > :not(:first-child):not(.card-minimizar), .card-recolhido > :first-child :is(.grafico__sub, small) { display: none !important; }
.rede-caixa { margin: var(--space-3) 0; display: flex; flex-direction: column; gap: var(--space-2); }
.rede-caixa__cab { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.rede-caixa__cab h3 { margin: 0; font-size: var(--font-size-md); }
.lid-link { padding: 0; border: 0; background: none; color: var(--color-accent-primary); font: inherit; text-decoration: underline; cursor: pointer; }
/* aba Mapa: o check "Agregados" fica ao lado do "Legenda" (canto inferior esquerdo) */
.prime-rede-check { left: calc(var(--space-3) + 108px); }
.prime-rede-check[hidden] { display: none; }
/* Filtros › Marcadores no mapa: cada tipo com a caixa e, embaixo, a partir de qual zoom ele aparece */
.mk-lista { list-style: none; margin: 0 0 var(--space-2); padding: 0; display: grid; gap: 2px; }
.mk-item { align-items: flex-start; }
.mk-item > span { display: flex; flex-direction: column; line-height: 1.3; }
.mk-item small { font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
#marcadores-resumo { margin-left: 6px; font-weight: var(--font-weight-regular, 400); }
/* Conselho Tutelar: o botão ao lado de "Agregados", os rótulos das regiões e a legenda */
.prime-ct-check { left: calc(var(--space-3) + 228px); }
.prime-ct-check[hidden] { display: none; }
.ct-rotulo > span { display: inline-flex; align-items: center; transform: translate(-50%, -50%); white-space: nowrap; padding: 2px 8px 2px 2px; border-radius: var(--radius-full);
    background: var(--color-bg-secondary); color: var(--color-text-primary); border: 2px solid var(--ct-cor); font-size: var(--font-size-2xs);
    font-weight: var(--font-weight-semibold); box-shadow: var(--shadow-sm); cursor: pointer; }
.ct-rotulo__n { display: inline-grid; place-items: center; min-width: 18px; height: 18px; padding: 0 4px; margin-right: 5px; border-radius: var(--radius-full); background: var(--ct-cor); color: #fff; font-size: 10px; letter-spacing: .3px; }
.ct-compacto .ct-rotulo > span { padding: 2px; }
.ct-compacto .ct-rotulo__n { margin-right: 0; }
.ct-compacto .ct-rotulo__nome { display: none; }
.ct-legenda__cor { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px; vertical-align: -1px; }
.ct-popup ol { margin: 6px 0; padding-left: 20px; }
.ct-popup li span { float: right; font-variant-numeric: tabular-nums; margin-left: var(--space-3); }
.ct-mover { display: flex; flex-direction: column; gap: 6px; min-width: 200px; }
body.exportando .prime-ct-check { visibility: hidden !important; }
/* aba Conselho Tutelar: números, o mapa ao lado das regiões e as fontes */
.ct-aba { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-3) var(--space-4) var(--space-5); }
.ct-aba__cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: var(--space-2) var(--space-4); }
.ct-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-2); }
.ct-kpi { display: flex; flex-direction: column; gap: 2px; padding: var(--space-3); border: 1px solid var(--color-border-muted); border-radius: var(--radius-lg);
    background: linear-gradient(180deg, var(--color-bg-tertiary), var(--color-bg-secondary)); min-width: 0; }
.ct-kpi__rot { font-size: var(--font-size-2xs); text-transform: uppercase; letter-spacing: .5px; color: var(--color-text-tertiary); }
.ct-kpi__val { font-size: var(--font-size-lg); line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ct-kpi__sub { font-size: var(--font-size-2xs); color: var(--color-text-secondary); }
.ct-aba__grade { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: var(--space-3); align-items: start; }
.ct-aba__mapa { position: sticky; top: var(--space-2); padding: var(--space-2); }
.ct-mapa { height: 560px; border-radius: var(--radius-md); background: var(--color-bg-primary); }
.ct-regioes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); }
.ct-regiao { display: flex; flex-direction: column; gap: 6px; padding: var(--space-2) var(--space-3); border-left: 4px solid var(--ct-cor); cursor: pointer; transition: box-shadow .15s, border-color .15s; }
.ct-regiao:hover, .ct-regiao:focus-visible { box-shadow: var(--shadow-sm); outline: none; }
.ct-regiao--ativa { box-shadow: 0 0 0 2px var(--ct-cor); }
.ct-regiao__cab { display: flex; align-items: center; gap: 6px; font-size: var(--font-size-sm); }
.ct-regiao__cab strong { flex: 1 1 auto; min-width: 0; }
.ct-regiao__total { font-weight: var(--font-weight-semibold); font-variant-numeric: tabular-nums; }
.ct-regiao .ct-rotulo__n { margin-right: 0; }
.ct-barra { display: block; height: 4px; border-radius: 2px; background: var(--color-bg-tertiary); overflow: hidden; }
.ct-barra span { display: block; height: 100%; background: var(--ct-cor); }
.ct-eleitos { margin: 0; padding-left: 18px; font-size: var(--font-size-xs); }
.ct-eleitos li { display: flex; justify-content: space-between; gap: var(--space-2); }
.ct-eleitos li > span:last-child { font-variant-numeric: tabular-nums; white-space: nowrap; }
.ct-eleitos small { color: var(--color-text-tertiary); margin-left: 4px; }
.ct-fontes h3 { margin: 0 0 var(--space-2); font-size: var(--font-size-md); }
.ct-fontes ul { margin: 0 0 var(--space-2); padding-left: 18px; font-size: var(--font-size-xs); }
@media (max-width: 1100px) { .ct-aba__grade { grid-template-columns: 1fr; } .ct-aba__mapa { position: static; } .ct-mapa { height: 420px; } }
@media (max-width: 640px) { .ct-kpis, .ct-regioes { grid-template-columns: 1fr; } .ct-aba { padding: var(--space-2); } .ct-mapa { height: 340px; } }
.prime-rede-check__n { color: var(--color-text-tertiary); font-weight: var(--font-weight-regular); }
.rede-legenda-mapa { margin: var(--space-2) 0 0; padding-top: var(--space-2); border-top: 1px solid var(--color-border-muted); font-size: var(--font-size-2xs); }
.rede-legenda-mapa[hidden] { display: none; }
.rede-legenda-mapa__titulo { font-weight: var(--font-weight-semibold); color: var(--color-text-primary); }
body.exportando .prime-rede-check { visibility: hidden !important; }

/* exibição dos apoiadores: cartões (celular) ou lista em linhas (notebook) */
.ele .cad-cab__acoes { flex-wrap: wrap; }   /* celular: o "+ Cadastrar" (largura toda) desce para a linha de baixo */
.ele-vistas { flex: none; display: inline-flex; gap: 2px; padding: 2px; border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); }
.ele-vistas .prime-btn[aria-pressed="true"] { background: var(--color-accent-primary-subtle); color: var(--color-accent-primary); }
.ele-tabela-caixa { margin: var(--space-3) 0; }
.ele-tabela td { vertical-align: top; }
.ele-tabela__demandas { white-space: nowrap; }
.ele-tabela__demandas .etiqueta { padding: 1px 4px; margin-right: 2px; }
.ele-leg--casa { border-radius: 3px; background: var(--map-apoiador); }
.ele-pino-casa span { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg);
    background: var(--map-apoiador); border: 2px solid #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, .45); cursor: grab; font-size: 14px; line-height: 1; }
.ele-pino-casa b { display: block; transform: rotate(45deg); font-weight: normal; }
/* ficha da liderança escolhida (etapa 1): a cadeia, a comunidade e o local de votação dela */
.ele-lid-ficha { display: flex; flex-direction: column; gap: 2px; margin-top: var(--space-2); padding: 8px 10px; border-radius: var(--radius-md);
    background: var(--color-info-subtle); border-left: 3px solid var(--map-lideranca); font-size: var(--font-size-xs); }
.ele-lid-ficha__cadeia { color: var(--color-text-secondary); font-size: var(--font-size-2xs); }
/* chips (moradia, demandas): toque grande, marcado = tom de destaque */
.ele-chips { display: flex; flex-wrap: wrap; gap: 6px; }
/* Cadastros › Grupos: os estados a que o grupo tem acesso (chips das 27 UFs) */
.grupo-estados { display: flex; flex-wrap: wrap; gap: 6px; margin: var(--space-2) 0; }
/* ---------- Cadastros › Clientes (grupos políticos): lista em cartões e o formulário em etapas ---------- */
.cli-lista { list-style: none; margin: var(--space-3) 0 0; padding: 0; display: grid; gap: var(--space-2); }
.cli-item { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-3); border: 1px solid var(--color-border-muted);
    border-radius: var(--radius-lg); background: var(--color-bg-secondary); transition: border-color .15s, box-shadow .15s; }
.cli-item:hover { border-color: var(--color-border-default); box-shadow: var(--shadow-sm); }
.cli-item--inativo { opacity: .65; }
.cli-item__corpo { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.cli-item__topo { display: flex; flex-wrap: wrap; align-items: center; gap: 6px var(--space-2); font-size: var(--font-size-md); }
.cli-item__linha { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.cli-item__numeros { display: flex; flex-wrap: wrap; gap: 4px var(--space-3); margin-top: 2px; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
.cli-item__numeros strong { color: var(--color-text-primary); font-variant-numeric: tabular-nums; }
.cli-avatar { flex: 0 0 auto; display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: var(--radius-full);
    background: linear-gradient(135deg, var(--color-accent-primary), var(--color-success)); color: #fff; font-weight: var(--font-weight-semibold); letter-spacing: .5px; }
.cli-avatar--grande { width: 64px; height: 64px; font-size: var(--font-size-lg); box-shadow: var(--shadow-md); }
.cli-chave { display: inline-block; padding: 1px 8px; border-radius: var(--radius-full); border: 1px solid var(--color-accent-border);
    background: var(--color-accent-subtle); color: var(--color-text-primary); font: var(--font-weight-semibold) var(--font-size-xs)/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: 1px; }
.cli-chave--grande { font-size: var(--font-size-lg); padding: 2px 12px; align-self: flex-start; }
.cli-chave-campo { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: 3px; font-size: 18px !important; max-width: 9ch; }
/* cartão do cliente, montado ao vivo no alto do formulário */
.cli-cartao { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4); border-radius: var(--radius-xl);
    border: 1px solid var(--color-accent-border);
    background: radial-gradient(120% 140% at 0% 0%, var(--color-accent-subtle), transparent 60%), linear-gradient(180deg, var(--color-bg-tertiary), var(--color-bg-secondary)); }
.cli-cartao__corpo { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.cli-cartao__chave { font: var(--font-weight-semibold) var(--font-size-xs)/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: 3px; color: var(--color-accent-hover); }
.cli-cartao__nome { font-size: var(--font-size-xl, 1.25rem); line-height: 1.2; overflow-wrap: anywhere; }
.cli-cartao__linha { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.cli-cartao__abas { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 2px; }
.cli-grade { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2) var(--space-3); align-items: start; }
.cli-grade__largo { grid-column: 1 / -1; }
.cli-estados { display: grid; grid-template-columns: repeat(auto-fill, minmax(56px, 1fr)); }
.cli-regioes { display: flex; flex-wrap: wrap; gap: 6px; }
.cli-regiao__cor { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px; vertical-align: -1px; }
.cli-especial { margin: 0; padding: var(--space-2) var(--space-3); border-radius: var(--radius-md); border: 1px solid var(--color-warning-border, rgba(210, 153, 34, 0.4));
    background: var(--color-warning-subtle); font-size: var(--font-size-xs); }
.cli-estado--local span { box-shadow: 0 0 0 2px var(--color-accent-border); font-weight: var(--font-weight-semibold); }   /* estado desta instalação */
.cli-aba { border: 1px dashed var(--color-border-default); border-radius: var(--radius-md); padding: var(--space-2); display: flex; flex-direction: column; gap: var(--space-2); transition: border-color .15s; }
.cli-aba--ligada { border-style: solid; border-color: var(--color-success-border); }
.cli-form .ele-switch > span:last-child { flex: 1 1 auto; order: 1; }
.cli-form .ele-switch__trilho { order: 2; }
.cli-form .ele-switch small { display: block; }
@media (max-width: 640px) {
    .cli-grade { grid-template-columns: 1fr; }
    .cli-cartao { padding: var(--space-3); }
    .cli-avatar--grande { width: 52px; height: 52px; }
    .cli-item { flex-wrap: wrap; }
}
.ele-chip { position: relative; cursor: pointer; }
.ele-chip input { position: absolute; opacity: 0; pointer-events: none; }
.ele-chip span { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 6px 12px; border: 1px solid var(--color-border-default); border-radius: var(--radius-full);
    font-size: var(--font-size-xs); color: var(--color-text-secondary); background: var(--color-bg-primary); }
.ele-chip input:checked + span { border-color: var(--color-accent-primary); background: var(--color-accent-subtle); color: var(--color-text-primary); font-weight: var(--font-weight-medium); }
.ele-chip input:focus-visible + span { outline: 2px solid var(--color-accent-primary); outline-offset: 2px; }
.ele-demandas__cab { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 6px; }
.ele-demandas__cab small { color: var(--color-accent-primary); font-weight: var(--font-weight-medium); }
/* contadores − / + */
.ele-contador { display: flex; flex-direction: column; gap: 4px; }
.ele-contador__ctl { display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px; gap: 6px; }
.ele-contador__ctl .prime-btn { min-height: 44px; padding: 0; font-size: var(--font-size-lg); border: 1px solid var(--color-border-default); }
.ele-contador__ctl input { text-align: center; font-variant-numeric: tabular-nums; -moz-appearance: textfield; }
.ele-contador__ctl input::-webkit-outer-spin-button, .ele-contador__ctl input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
/* interruptores (serviços, aceita contato) */
.ele-switches { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.ele-switch { position: relative; display: flex; align-items: center; gap: 8px; min-height: 48px; padding: 6px 10px; border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); cursor: pointer; font-size: var(--font-size-xs); }
.ele-switch input { position: absolute; opacity: 0; pointer-events: none; }
.ele-switch__rot { flex: 1 1 auto; }
.ele-switch__trilho { flex: 0 0 auto; position: relative; width: 36px; height: 20px; border-radius: 10px; background: var(--color-bg-tertiary); transition: background .15s; }
.ele-switch__trilho::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--color-text-secondary); transition: transform .15s, background .15s; }
.ele-switch:has(input:checked) { border-color: var(--color-success-border); background: var(--color-success-subtle); }
.ele-switch input:checked ~ .ele-switch__trilho { background: var(--color-success); }
.ele-switch input:checked ~ .ele-switch__trilho::after { transform: translateX(16px); background: var(--color-text-inverse); }
.ele-switch:has(input:focus-visible) { outline: 2px solid var(--color-accent-primary); outline-offset: 2px; }
/* apoio: botões grandes com ponto de cor + palavra (nunca só cor) */
.ele-apoio { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.ele-apoio__op { position: relative; display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 6px 10px;
    border: 1px solid var(--color-border-default); border-radius: var(--radius-md); cursor: pointer; font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); }
.ele-apoio__op input { position: absolute; opacity: 0; pointer-events: none; }
.ele-apoio__ponto { width: 10px; height: 10px; border-radius: 50%; background: var(--color-text-tertiary); }
.ele-apoio__op--apoia .ele-apoio__ponto { background: var(--color-success); }
.ele-apoio__op--indeciso .ele-apoio__ponto { background: var(--color-warning); }
.ele-apoio__op--nao_apoia .ele-apoio__ponto { background: var(--color-danger); }
.ele-apoio__op--apoia:has(input:checked) { border-color: var(--color-success); background: var(--color-success-subtle); }
.ele-apoio__op--indeciso:has(input:checked) { border-color: var(--color-warning); background: var(--color-warning-subtle); }
.ele-apoio__op--nao_apoia:has(input:checked) { border-color: var(--color-danger); background: var(--color-danger-subtle); }
.ele-apoio__op--nao_informou:has(input:checked) { border-color: var(--color-border-strong); background: var(--color-bg-tertiary); }
.ele-apoio__op:has(input:focus-visible) { outline: 2px solid var(--color-accent-primary); outline-offset: 2px; }
/* barra de salvar fixa embaixo */
.ele-barra { position: sticky; bottom: 0; z-index: 3; display: flex; align-items: center; justify-content: flex-end; gap: var(--space-2);
    margin: 0 calc(-1 * var(--space-3)); padding: var(--space-2) var(--space-3); background: var(--color-bg-secondary); border-top: 1px solid var(--color-border-muted); }
.ele-barra__progresso { margin-right: auto; font-size: var(--font-size-2xs); color: var(--color-text-tertiary); }
/* depois de cadastrar */
.ele-sucesso { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--space-2) var(--space-3); align-items: center; margin-bottom: var(--space-3);
    border-color: var(--color-success-border); background: var(--color-success-subtle); }
.ele-sucesso__marca { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--color-success); color: var(--color-text-inverse); font-size: 20px; font-weight: 700; }
.ele-sucesso strong { display: block; font-size: var(--font-size-md); }
.ele-sucesso__linha { font-size: var(--font-size-xs); color: var(--color-text-secondary); }
.ele-sucesso__acoes { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: var(--space-2); }
@media (max-width: 640px) {
    .ele-apoio { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ele-barra .prime-btn--primary { flex: 1 1 auto; }
    .ele-barra__progresso { display: none; }
    .ele-sucesso__acoes .prime-btn { flex: 1 1 100%; }
}
/* só cadastro de campo (captador): sem filtros, números do topo, Tabela e Exportar */
#app[data-so-campo="sim"] #btn-filtros, #app[data-so-campo="sim"] #sidebar, #app[data-so-campo="sim"] #header-kpis,
#app[data-so-campo="sim"] #btn-tabela, #app[data-so-campo="sim"] .exportar { display: none !important; }
@media (max-width: 640px) { .lid-local__entrada { flex-direction: column; } .lid-local__botoes { flex-direction: row; } }
.usuarios td { vertical-align: middle; }
.usuarios__inativo td { color: var(--color-text-tertiary); }
.etiqueta--alerta { background: color-mix(in srgb, var(--color-warning, #c98500) 22%, transparent); color: var(--color-text-primary); }
.usuarios__form { margin-top: var(--space-3); display: flex; flex-direction: column; gap: var(--space-3); }
.usuarios__form h3, .usuarios__senha h3 { margin: 0; font-size: var(--font-size-md, 1rem); }
.usuarios__grade { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--space-3); }
.usuarios__acesso { border: 1px solid var(--color-border-muted); border-radius: var(--radius-md); padding: var(--space-3); margin: 0; min-width: 0; }
.usuarios__acesso legend { padding: 0 var(--space-1); font-weight: var(--font-weight-semibold); }
.usuarios__acesso .segmentado { max-width: 520px; }
.usuarios__duas { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--space-4); margin-bottom: var(--space-3); }
.usuarios__duas h4 { margin: 0 0 var(--space-2); font-size: var(--font-size-sm); }
.usuarios__duas h4 small { color: var(--color-text-tertiary); font-weight: var(--font-weight-normal, 400); }
.usuarios__chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: var(--space-2); max-height: 180px; overflow-y: auto; }
.usuarios__senha { margin-top: var(--space-3); border: 1px solid var(--color-accent-border); }
.usuarios__senha-valor { font-family: var(--font-family-mono, monospace); font-size: var(--font-size-lg); letter-spacing: 0.04em; user-select: all; }

/* Dashboard: Votos por cidade | Ranking de parceiros (lado a lado; sem permissão ou sem parceiro, a lista ocupa tudo) */
.dash-cidades-ranking { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: var(--space-3); align-items: stretch; }
.dash-cidades-ranking:has(> #dash-ranking[hidden]) { grid-template-columns: minmax(0, 1fr); }
#dash-ranking .rp-bloco { height: 100%; margin: 0; }
#dash-ranking .rp-rank { max-height: 420px; }
/* lado a lado: o ranking acompanha a altura do card ao lado (Votos por cidade / Regionais) — expandiu lá, cresce aqui
   (a lista rola dentro dele); quem define a altura da linha é sempre o card da esquerda. Na exportação volta ao fluxo
   normal (a lista abre inteira, sem sobrepor o que vem abaixo) */
@media (min-width: 1101px) {
    #dash-ranking { position: relative; min-height: 320px; }
    #dash-ranking > .rp-bloco { position: absolute; inset: 0; height: auto; }
    #dash-ranking .rp-rank { flex: 1 1 auto; min-height: 0; max-height: none; }
    body.exportando #dash-ranking > .rp-bloco { position: static; }
}
@media (max-width: 1100px) { .dash-cidades-ranking { grid-template-columns: minmax(0, 1fr); } }

/* Relatório executivo: escolha do item 2 (lista de municípios | por regional) */
.relatorio-item2 { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin-top: var(--space-2); }
.relatorio-item2__rotulo { color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); }

/* Dashboard: abas "Votos por cidade" | "Regionais" (agrupamento.js) DENTRO do cartão (sem faixa vazia acima dele) —
   o contorno é o do conjunto; os dois painéis ficam sem moldura própria. Grupos como as regiões do relatório de parceiros */
.dash-abas-cidades { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0;
    background: var(--color-bg-secondary); border-radius: var(--radius-lg); padding: var(--space-3) var(--space-4) var(--space-4); }
.dash-abas-cidades__abas { align-self: flex-start; }
.dash-abas-cidades__abas .prime-tab { flex: 0 0 auto; }
.dash-abas-cidades > .dash-card { flex: 1 1 auto; padding: 0; background: transparent; border-radius: 0; }
/* Mapa: detalhe pelo zoom (detalhe-mapa.js) — contornos das zonas (laranja) e escolas com as seções (roxo) */
/* fica dentro da legenda do mapa (.prime-legend__extra): aparece com o check "Legenda" e arrasta junto */
.prime-legend__extra:empty { display: none; }
.prime-legend__extra .mapa-detalhe-leg { position: static; max-width: none; margin-top: var(--space-2); padding: var(--space-2) 0 0; border: 0;
    border-top: 1px solid var(--color-border-muted); border-radius: 0; background: none; }
.prime-legend__extra .mapa-detalhe-leg[hidden] { display: none; }
.mapa-detalhe-leg { position: absolute; left: 12px; top: 64px; z-index: 800; display: flex; flex-direction: column; gap: 4px; max-width: 290px;
    padding: 8px 10px; border-radius: var(--radius-md); border: 1px solid var(--color-border-muted);
    background: color-mix(in srgb, var(--color-bg-secondary) 92%, transparent); font-size: var(--font-size-2xs); color: var(--color-text-secondary); pointer-events: none; }
.mapa-detalhe-leg__item { display: flex; align-items: center; gap: 8px; color: var(--color-text-primary); transition: opacity 0.2s ease; }
.mapa-detalhe-leg__item--off { color: var(--color-text-tertiary); opacity: 0.75; }
.mapa-detalhe-leg__item small { color: var(--color-text-tertiary); }
.mapa-detalhe-leg__linha { flex: 0 0 auto; width: 20px; height: 0; border-top: 2px dashed var(--cor); }
.mapa-detalhe-leg__ponto { flex: 0 0 auto; width: 10px; height: 10px; border-radius: 2px;   /* quadrado = escola */ margin: 0 5px; box-shadow: 0 0 0 1.5px var(--color-bg-canvas); }
.mapa-detalhe-leg__nota { color: var(--color-text-tertiary); line-height: 1.35; display: flex; align-items: flex-start; gap: 6px; }
.mapa-detalhe-leg__erro { color: var(--color-danger-fg, #f85149); }
.mapa-detalhe-leg__carregando { flex: 0 0 auto; width: 10px; height: 10px; margin-top: 2px; border-radius: 50%; border: 2px solid var(--color-border-default); border-top-color: var(--color-accent-primary); animation: girar 0.8s linear infinite; }
@keyframes girar { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .mapa-detalhe-leg__carregando { animation: none; } }
/* as camadas de detalhe surgem suaves; o SVG das escolas só recebe o mouse nos círculos (o resto do mapa segue clicável) */
.mapa-detalhe-painel > * { animation: detalhe-surge 0.25s ease-out; }
@keyframes detalhe-surge { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .mapa-detalhe-painel > * { animation: none; } }
.leaflet-detalheEscolas-pane > svg { pointer-events: none; }
.leaflet-detalheEscolas-pane > svg .mapa-escola-ponto { pointer-events: auto; cursor: pointer; }
.mapa-escola-rotulo span { display: inline-block; transform: translate(10px, -50%); white-space: nowrap; padding: 0 5px; border-radius: 8px;
    font-size: 10px; font-weight: 600; color: var(--color-text-primary); background: color-mix(in srgb, var(--color-bg-secondary) 88%, transparent);
    border: 1px solid var(--color-border-muted); }
.mapa-zona-rotulo span { display: inline-block; transform: translate(-50%, -50%); white-space: nowrap; padding: 1px 6px; border-radius: 10px;
    font-size: 11px; font-weight: 600; color: #fff; background: var(--cor-zona); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35); }
.mapa-escola { max-width: 340px; }
.mapa-escola__sub { color: var(--color-text-tertiary); font-size: var(--font-size-2xs); margin-bottom: 4px; }
.mapa-escola__total { font-size: var(--font-size-xs); margin-bottom: 6px; }
.mapa-escola__secoes { width: 100%; border-collapse: collapse; font-size: var(--font-size-2xs); font-variant-numeric: tabular-nums; }
.mapa-escola__secoes th { text-align: left; color: var(--color-text-tertiary); font-weight: var(--font-weight-medium); padding: 2px 4px; border-bottom: 1px solid var(--color-border-muted); }
.mapa-escola__secoes td { padding: 2px 4px; }
.mapa-escola__secoes .num { text-align: right; }
.mapa-escola__mais { margin-top: 4px; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
/* seções em lotes (regional inteira) */
.secoes-mais { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin-top: var(--space-2); }
.dash-reg__barra { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin-bottom: var(--space-1); }
.dash-reg__barra .prime-select { width: auto; max-width: 340px; }
.dash-reg__ajuda { margin: 0 0 var(--space-2); }
.dash-reg__rolagem { max-height: 620px; }
.dash-reg__tabela .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.dash-reg__tabela .rp-grupo td { padding: 9px var(--space-2) 7px; }
.dash-reg__tabela .rp-grupo .rp-grupo__info { margin-left: 10px; }
.dash-reg__tabela .dash-reg__grupo--n2 td { background: color-mix(in srgb, var(--color-bg-secondary) 55%, transparent) !important; font-weight: var(--font-weight-medium); }
.dash-reg__tabela .dash-reg__grupo--n2 td:first-child { padding-left: 30px; }
.dash-reg__marca { --marca: var(--color-accent-primary); }.dash-reg__cidade td { border-bottom: 1px solid color-mix(in srgb, var(--color-border-muted) 70%, transparent); }
.dash-reg__cidade--n1 td:first-child { padding-left: 34px; }
.dash-reg__cidade--n2 td:first-child { padding-left: 56px; }
.dash-reg__cidade[data-codigo] { cursor: pointer; }
.dash-reg__cidade[data-codigo]:hover td, .dash-reg__cidade[data-codigo]:focus-visible td { background: var(--color-bg-hover); outline: none; }
.dash-reg__pos { display: inline-block; min-width: 30px; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); font-variant-numeric: tabular-nums; }
.dash-reg__cidade small { display: block; margin-left: 30px; color: var(--color-text-tertiary); font-size: var(--font-size-2xs); }
.dash-reg__tabela tfoot td { border-top: 1px solid var(--color-border-default); font-weight: var(--font-weight-semibold); padding-top: 8px; }
