:root {
  --fundo: #f3f0e8;
  --texto: #1c1b18;
  --muted: #6d675d;
  --linha: #ded7ca;
  --cartao: #fffaf0;
  --verde: #0b2f56;
  --dourado: #c28d2c;
  --vermelho: #9d3b32;
  --sombra: 0 18px 50px rgba(32, 25, 12, .10);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
  background: radial-gradient(circle at top left, #fff7df, var(--fundo) 42%, #ebe3d3);
  color: var(--texto);
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 92px;
}

.topo {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  padding: 36px clamp(18px, 5vw, 64px);
  background: linear-gradient(135deg, var(--verde), #061a30);
  color: white;
}

.topo h1 {
  margin: 4px 0 10px;
  font-size: clamp(32px, 5vw, 58px);
  letter-spacing: -1.8px;
}

.topo p { max-width: 760px; margin: 0; opacity: .9; }

/* Volta para a landing page. Fica no cabeçalho, que só aparece dentro do app — na tela
   de login o .topo está oculto, por isso existe o .link-voltar-site no cartão de login. */
.botao-voltar-site {
  flex: 0 0 auto;
  align-self: flex-start;
  padding: 11px 18px;
  border: 1px solid rgba(255, 255, 255, .35);
  border-radius: 999px;
  background: rgba(255, 255, 255, .08);
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  transition: background .2s ease, border-color .2s ease;
}
.botao-voltar-site:hover { background: rgba(255, 255, 255, .18); border-color: rgba(255, 255, 255, .6); }
.botao-voltar-site:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }

.link-voltar-site {
  display: inline-block;
  margin-top: 16px;
  color: var(--verde);
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
}
.link-voltar-site:hover { text-decoration: underline; }
.link-voltar-site:focus-visible { outline: 2px solid var(--verde); outline-offset: 3px; }

.marca-topo {
  display: flex;
  align-items: center;
  gap: clamp(14px, 2.5vw, 24px);
}

.marca-topo-icone {
  width: clamp(68px, 9vw, 112px);
  height: clamp(68px, 9vw, 112px);
  flex: 0 0 auto;
  border-radius: 24%;
  box-shadow: 0 12px 30px rgba(0, 0, 0, .24);
}

.menu-mobile {
  display: none;
}

.etiqueta {
  text-transform: uppercase;
  letter-spacing: .12em;
  font-size: 13px;
  font-weight: 800;
  color: var(--dourado);
  margin: 0 0 6px;
}

.grade {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);
  align-items: start;
  gap: 18px;
  padding: 24px clamp(18px, 5vw, 64px) 48px;
}

.navegacao-app {
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 10px clamp(18px, 5vw, 64px);
  background: rgba(243, 240, 232, .96);
  border-bottom: 1px solid var(--linha);
  box-shadow: 0 8px 24px rgba(32, 25, 12, .08);
  scrollbar-width: none;
}

.navegacao-app::-webkit-scrollbar { display: none; }

.aba-botao {
  flex: 0 0 auto;
  border: 1px solid var(--linha);
  border-radius: 999px;
  padding: 10px 14px;
  background: #fffaf0;
  color: var(--verde);
  font: inherit;
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
}

.aba-botao.ativa {
  border-color: var(--verde);
  background: var(--verde);
  color: white;
}

.aba-oculta { display: none !important; }

.painel-comando {
  border: 2px solid rgba(37, 77, 63, .42);
  background: linear-gradient(145deg, #fffdf7, #f3f7ee);
}

.painel-cabecalho {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}

.painel-cabecalho h2 { margin-bottom: 8px; font-size: clamp(24px, 3vw, 34px); }
.painel-cabecalho .texto-apoio { margin: 0; }

.leitura-executiva {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 14px 0;
}
.leitura-executiva > div {
  padding: 13px;
  border-left: 4px solid var(--dourado);
  border-radius: 12px;
  background: #fff;
}
.leitura-executiva small { display:block; margin-bottom:5px; color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.leitura-executiva strong { font-size:14px; line-height:1.3; }

.resumo-forcas-apoios { display:grid; gap:8px; margin-top:14px; }
.form-forca-central { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:14px; padding:14px; border:1px solid var(--linha); border-radius:16px; background:#fff; }
.quadro-forcas-checklist { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:14px; }
.quadro-forcas-checklist section { padding:12px; border:1px solid var(--linha); border-radius:14px; background:#fff; }
.quadro-forcas-checklist h3 { margin:0 0 8px; font-size:15px; color:var(--verde); }
.quadro-forcas-checklist label { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px; padding:7px 0; border-top:1px solid rgba(222,215,202,.65); cursor:pointer; font-size:12px; }
.quadro-forcas-checklist input { width:18px; height:18px; margin:0; accent-color:var(--verde); }
.quadro-forcas-checklist b { color:var(--dourado); font-size:12px; }
.quadro-forcas-checklist.municipal label { grid-template-columns:auto 1fr; }
.forcas-avaliacao-municipal { margin-top:12px; border:1px solid var(--linha); border-radius:16px; background:#f8f5ed; overflow:hidden; }
.forcas-avaliacao-municipal > summary { padding:13px; cursor:pointer; }
.forcas-avaliacao-municipal > summary span { display:grid; }
.forcas-avaliacao-municipal > summary small { color:var(--dourado); font-size:12px; text-transform:uppercase; font-weight:800; }
.forcas-avaliacao-municipal > p { margin:0; padding:0 13px; color:var(--muted); font-size:12px; }
.forcas-avaliacao-municipal .quadro-forcas-checklist { padding:0 13px 10px; }
.forcas-avaliacao-municipal > .status-campo { display:block; padding:0 13px 13px; }
.acoes-forcas-local { display:grid; gap:8px; padding:0 13px 13px; }
.acoes-forcas-local .botao { justify-self:start; max-width:100%; }
.acoes-forcas-local .status-campo { display:block; margin:0; max-width:100%; font-size:12px; line-height:1.45; overflow-wrap:anywhere; }
.total-forcas { display:flex; justify-content:space-between; align-items:center; margin-top:10px; padding:13px 15px; border-radius:14px; background:var(--verde); color:#fff; }
.total-forcas small { text-transform:uppercase; font-weight:800; letter-spacing:.08em; }
.total-forcas strong { font-size:22px; }
.apoios-nominais { margin-top:14px; }
.form-forca-central label { display:grid; gap:5px; font-size:13px; font-weight:800; }
.form-forca-central .botao,.form-forca-central .status-campo { grid-column:1/-1; }
.resumo-forcas-apoios > div { display:flex; justify-content:space-between; gap:14px; align-items:center; padding:11px 12px; border:1px solid var(--linha); border-radius:13px; background:#fff; }
.resumo-forcas-apoios span { display:grid; gap:2px; }
.resumo-forcas-apoios small { color:var(--muted); }
.resumo-forcas-apoios b { flex:0 0 auto; color:var(--verde); font-size:12px; }
.forcas-por-municipio { display:grid; gap:8px; margin-top:18px; }
.forcas-por-municipio h3 { margin:0 0 3px; font-size:17px; }
.forcas-por-municipio > details { border:1px solid var(--linha); border-radius:14px; background:#fff; overflow:hidden; }
.forcas-por-municipio > details > summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px; cursor:pointer; list-style:none; }
.forcas-por-municipio > details > summary::-webkit-details-marker { display:none; }
.forcas-por-municipio > details > summary span { display:grid; gap:2px; flex:1; }
.forcas-por-municipio > details > summary small { color:var(--muted); }
.forcas-por-municipio > details > summary::after { content:"▼"; display:grid; place-items:center; width:30px; height:30px; flex:0 0 30px; border-radius:50%; background:var(--creme); color:var(--verde); font-size:13px; font-weight:800; }
.forcas-por-municipio > details[open] > summary::after { content:"▲"; }

.lista-plataformas { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:16px; }
.item-plataforma { border:1px solid var(--linha); border-radius:14px; background:#fff; overflow:hidden; }
.item-plataforma.ativo { border-color:var(--verde); background:#f7f9fc; }
.item-plataforma > summary { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px; cursor:pointer; list-style:none; }
.item-plataforma > summary::-webkit-details-marker { display:none; }
.item-plataforma > summary span { display:grid; gap:3px; }
.item-plataforma > summary small { color:var(--muted); font-size:12px; }
.item-plataforma > summary::after { content:"▼"; display:grid; place-items:center; width:28px; height:28px; border-radius:50%; background:var(--creme); color:var(--verde); font-size:12px; }
.item-plataforma[open] > summary::after { content:"▲"; }
.plataforma-check { display:flex; align-items:center; gap:9px; cursor:pointer; }
.plataforma-check input { width:18px; height:18px; accent-color:var(--verde); }
.plataforma-descricao { display:grid; gap:10px; padding:0 12px 12px; }
.plataforma-descricao textarea { width:100%; min-height:82px; resize:vertical; }
.lista-propostas-plataforma { display:grid; gap:10px; }
.lista-propostas-plataforma article,.nova-proposta-plataforma { padding:10px; border:1px solid var(--linha); border-radius:12px; background:#fff; }
.nova-proposta-plataforma { display:grid; gap:8px; background:#f4f1e8; }
.lista-propostas-plataforma label,.nova-proposta-plataforma label { display:grid; gap:6px; font-size:13px; font-weight:800; color:var(--verde); }
.acoes-plataforma { display:flex; gap:8px; flex-wrap:wrap; }
.acoes-plataforma .botao { width:auto; }
.propostas-comunicacao { display:grid; gap:10px; margin:14px 0; }
.proposta-comunicacao-item { border:1px solid var(--linha); border-radius:14px; background:#fff; overflow:hidden; }
.proposta-comunicacao-item > summary { display:flex; align-items:center; justify-content:space-between; padding:12px; cursor:pointer; list-style:none; }
.proposta-comunicacao-item > summary::-webkit-details-marker { display:none; }
.proposta-comunicacao-item > summary span { display:grid; gap:3px; }
.proposta-comunicacao-item > summary small { color:var(--muted); }
.proposta-comunicacao-item > summary::after { content:"▼"; color:var(--verde); font-weight:800; }
.proposta-comunicacao-item[open] > summary::after { content:"▲"; }
.proposta-comunicacao-item > div { padding:0 12px 12px; }
.proposta-comunicacao-item p { margin:7px 0; line-height:1.45; }
.sem-propostas-comunicacao { padding:14px; border-radius:14px; background:var(--creme); }
.sem-propostas-comunicacao p { margin:5px 0 0; }

@media (max-width:700px){
  .lista-plataformas { grid-template-columns:1fr; }
}
.forcas-municipio-itens { display:grid; gap:7px; padding:0 12px 12px; }
.forcas-municipio-itens > div { display:flex; align-items:center; gap:8px; padding:9px; border-radius:11px; background:var(--fundo); }
.forcas-municipio-itens > div > span:nth-child(2) { display:grid; flex:1; }
.forcas-municipio-itens small { color:var(--muted); }
.forcas-municipio-itens b { font-size:13px; color:var(--verde); }
.forca-editavel { border-radius:11px; background:var(--fundo); overflow:hidden; }
.forca-editavel > summary { display:flex; align-items:center; gap:8px; padding:10px; cursor:pointer; }
.forca-editavel > summary > span:nth-child(2) { display:grid; flex:1; }
.editar-forca-central { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; padding:0 10px 10px; }
.editar-forca-central label { display:grid; gap:4px; font-size:12px; font-weight:800; }
.editar-forca-central .botao { margin:0; }
.orientacao-forcas { margin-top:14px; padding:14px; border-radius:14px; background:#eaf0f6; color:var(--verde); }
.orientacao-forcas p { margin:5px 0 0; color:var(--texto); font-size:13px; }
.evidencia-forcas { margin-top:12px; }

.meta-eleitoral-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 20px 0 14px;
}

.meta-eleitoral-form label { font-size: 12px; font-weight: 800; }
.pesquisa-dupla-form { grid-template-columns: minmax(180px, .7fr) repeat(2, minmax(260px, 1fr)); align-items: stretch; }
/* As colunas esticam até a altura da mais alta (a do Território, que tem quatro itens).
   Como cada label é um grid de duas linhas, o espaço extra caía no intervalo entre o
   título e o campo, afastando os dois. Ancorar o conteúdo no topo mantém as colunas com a
   mesma altura, mas com os campos logo abaixo dos seus rótulos. */
.pesquisa-dupla-form > label,
.pesquisa-dupla-form .bloco-pesquisa-direta,
.pesquisa-dupla-form .bloco-pesquisa-direta label { align-content: start; }
.bloco-pesquisa-direta { min-width: 0; margin: 0; padding: 10px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; border: 1px solid var(--linha); border-radius: 14px; }
.bloco-pesquisa-direta legend { padding: 0 5px; color: var(--verde); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.pesquisa-estadual-opcional { background: rgba(37,77,63,.04); }
@media (max-width: 900px) { .pesquisa-dupla-form { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .bloco-pesquisa-direta { grid-template-columns: 1fr; } }

.indicadores-comando {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.indicadores-comando > div {
  min-width: 0;
  padding: 13px;
  border: 1px solid var(--linha);
  border-radius: 15px;
  background: white;
}

.indicadores-comando small,
.decisao-dia small {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.indicadores-comando strong { display: block; margin-top: 5px; color: var(--verde); font-size: 20px; overflow-wrap: anywhere; }

.progresso-meta {
  height: 12px;
  margin-top: 16px;
  overflow: hidden;
  border-radius: 999px;
  background: #ded7ca;
}

.progresso-meta span { display: block; width: 0; height: 100%; background: linear-gradient(90deg, var(--dourado), var(--verde)); transition: width .25s ease; }

.legenda-progresso {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-top: 7px;
  color: var(--muted);
  font-size: 12px;
}

.legenda-progresso span { color: var(--verde); font-weight: 800; }

.decisao-dia {
  margin-top: 18px;
  padding: 15px;
  border-left: 5px solid var(--dourado);
  border-radius: 13px;
  background: #fff7df;
}

.decisao-dia strong { display: block; margin-top: 6px; line-height: 1.4; }
.decisao-dia p { margin: 7px 0 0; color: var(--muted); font-size: 12px; line-height: 1.45; }

.referencia-eleitoral {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--linha);
}

.referencia-eleitoral > div { padding: 11px; border-radius: 13px; background: rgba(37, 77, 63, .07); }
.referencia-eleitoral small { display: block; color: var(--muted); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.referencia-eleitoral strong { display: block; margin-top: 4px; color: var(--verde); font-size: 18px; }
.referencia-eleitoral .referencia-territorio span { display:block; margin-top:6px; color:var(--muted); font-size:12px; font-weight:800; line-height:1.35; }
.referencia-eleitoral p { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: 12px; line-height: 1.4; }

.cenarios-projecao { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.cenarios-projecao.quatro-cenarios { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cenarios-projecao > div { min-width: 0; padding: 11px; border: 1px dashed rgba(37,77,63,.35); border-radius: 13px; }
.cenarios-projecao small, .cenarios-projecao strong, .cenarios-projecao span { display: block; overflow-wrap: anywhere; }
.cenarios-projecao small { color: var(--muted); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.cenarios-projecao strong { margin-top: 4px; color: var(--verde); font-size: 14px; }
.cenarios-projecao span { margin-top: 4px; color: var(--muted); font-size: 12px; }

.coeficiente-historico-form { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 10px 0 16px; }
.coeficiente-historico-form > div { padding: 11px; border-radius: 13px; background: rgba(37,77,63,.06); border: 1px solid var(--linha); }
.coeficiente-historico-form small, .coeficiente-historico-form strong, .coeficiente-historico-form span { display: block; }
.coeficiente-historico-form small { color: var(--muted); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.coeficiente-historico-form strong { margin-top: 4px; color: var(--verde); }
.coeficiente-historico-form span { margin-top: 4px; color: var(--muted); font-size: 12px; }
@media (max-width: 760px) { .coeficiente-historico-form { grid-template-columns: 1fr; } }

.historico-cadastro-compacto { grid-column: 1 / -1; margin-top: 8px; border: 1px solid var(--linha); border-radius: 16px; background: rgba(255,255,255,.52); overflow: hidden; }
.historico-cadastro-compacto summary { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 14px; padding: 14px 16px; cursor: pointer; list-style: none; font-weight: 800; }
.historico-cadastro-compacto summary::-webkit-details-marker { display: none; }
.historico-cadastro-compacto summary::after { content: "+"; grid-column: 2; grid-row: 1; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--bege); color: var(--verde); font-size: 20px; }
.historico-cadastro-compacto[open] summary::after { content: "−"; }
.historico-cadastro-compacto summary > span { display: grid; gap: 3px; }
.historico-cadastro-compacto summary > strong { grid-column: 1; color: var(--verde); font-size: 12px; font-weight: 800; }
.historico-cadastro-conteudo { padding: 0 16px 16px; border-top: 1px solid var(--linha); }
.historico-cadastro-conteudo .texto-apoio { margin: 12px 0; }
.historico-cadastro-conteudo .acoes-inline { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.historico-candidato-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

.historico-candidato-grid > div { padding: 12px; border-radius: 14px; background: white; border: 1px solid var(--linha); }
.historico-cadastro-grid label { display: grid; gap: 6px; color: var(--muted); font-size: 13px; font-weight: 800; }
.historico-cadastro-grid input, .historico-cadastro-grid select { width: 100%; min-width: 0; }
.bloco-historico-candidato .acoes-inline { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.historico-candidato-grid small { display: block; color: var(--muted); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.historico-candidato-grid strong { display: block; margin-top: 5px; color: var(--verde); }

.perfil-voto-estimado {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 14px;
  margin-bottom: 10px;
  padding: 10px 12px;
  border-left: 4px solid var(--dourado);
  border-radius: 10px;
  background: rgba(194, 141, 44, .09);
  color: var(--texto);
  font-size: 13px;
  line-height: 1.4;
}

.perfil-voto-estimado span { color: var(--muted); }
.ranking-territorial small { display: block; margin-top: 3px; color: var(--muted); font-size: 12px; font-weight: 400; line-height: 1.35; }
.ranking-territorial small span { display: block; }
.perfil-concorrente-geral { margin-top: 3px; color: var(--verde) !important; }
.perfil-concorrente-geral span { display: block; margin-top: 2px; color: var(--muted); }
.votacao-comparada { display: block; margin: 3px 0; color: var(--verde); }

.resumo-concorrentes-territorio { display: grid; gap: 7px; margin: 12px 0; }
.resumo-concorrentes-territorio h3 { margin: 0 0 3px; color: var(--verde); font-size: 14px; }
.resumo-concorrentes-territorio > div { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; padding: 9px; border-radius: 11px; background: rgba(37,77,63,.06); }
.resumo-concorrentes-territorio span { min-width: 0; }
.resumo-concorrentes-territorio strong, .resumo-concorrentes-territorio small { display: block; }
.resumo-concorrentes-territorio small { margin-top: 3px; color: var(--muted); font-size: 12px; line-height: 1.35; }
.resumo-concorrentes-territorio small span { display: block; }
.resumo-concorrentes-territorio > div > b { flex: 0 0 auto; color: var(--verde); font-size: 13px; }
.resumo-concorrentes-territorio > p { margin: 2px 0 0; color: var(--muted); font-size: 12px; }

.form-desempenho-conteudo { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
.form-desempenho-conteudo label { font-size: 13px; font-weight: 800; }
.lista-desempenho-conteudo { display: grid; gap: 7px; margin-top: 12px; }
.lista-desempenho-conteudo > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px; border: 1px solid var(--linha); border-radius: 12px; background: white; }
.lista-desempenho-conteudo span { min-width: 0; }
.lista-desempenho-conteudo strong, .lista-desempenho-conteudo small { display: block; overflow-wrap: anywhere; }
.lista-desempenho-conteudo small { margin-top: 4px; color: var(--muted); font-size: 12px; line-height: 1.45; }
.lista-desempenho-conteudo b { flex: 0 0 auto; color: var(--verde); font-size: 13px; }
.cabecalho-meta-ads { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.cabecalho-meta-ads h2 { margin-bottom:0; }
.status-meta-ads { flex:0 0 auto; padding:7px 10px; border-radius:999px; background:#eee4ce; color:#755d2d; font-size:12px; font-weight:800; text-transform:uppercase; }
.configuracao-meta-ads { margin-top:16px; padding:0 13px; border:1px solid var(--linha); border-radius:14px; background:#fff; }
.configuracao-meta-ads summary { padding:13px 0; cursor:pointer; font-weight:800; color:var(--verde); }
.configuracao-meta-ads summary span { display:grid; gap:2px; }
.form-meta-ads { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; padding:0 0 13px; }
.form-meta-ads label { display:grid; gap:5px; min-width:0; font-size:13px; font-weight:800; }
.form-meta-ads .campo-token-meta,.form-meta-ads .status-campo { grid-column:1/-1; }
.form-meta-ads .botao:disabled { opacity:.55; cursor:not-allowed; }
.periodos-meta-ads { display:flex; gap:7px; margin-top:16px; padding-bottom:3px; overflow-x:auto; }
.periodo-meta { flex:0 0 auto; padding:8px 11px; border:1px solid var(--linha); border-radius:999px; background:#fff; color:var(--verde); font-size:12px; font-weight:800; cursor:pointer; }
.periodo-meta.ativo { border-color:var(--verde); background:var(--verde); color:#fff; }
.metricas-meta-ads { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; margin-top:14px; }
.metricas-meta-ads > div { min-width:0; padding:12px; border:1px solid var(--linha); border-radius:13px; background:#fff; }
.metricas-meta-ads small,.metricas-meta-ads span { display:block; color:var(--texto-suave); font-size:12px; font-weight:800; text-transform:uppercase; }
.metricas-meta-ads strong { display:block; margin-top:5px; color:var(--verde); font-size:22px; }
.metricas-meta-ads .metrica-resultado-meta { grid-column:1/-1; }
.metricas-meta-ads .metrica-resultado-meta span { margin-top:4px; text-transform:none; }
.cabecalho-campanhas-meta { display:flex; justify-content:space-between; align-items:end; gap:12px; margin-top:18px; }
.cabecalho-campanhas-meta h3 { margin:3px 0 0; color:var(--verde); }
.cabecalho-campanhas-meta > small { color:var(--texto-suave); text-align:right; }
.lista-campanhas-meta { display:grid; gap:8px; margin-top:10px; }
.campanha-meta-vazia { padding:18px; border:1px dashed var(--linha); border-radius:14px; background:rgba(255,255,255,.55); text-align:center; }
.campanha-meta-vazia p { margin:5px 0 0; color:var(--texto-suave); }
.direcao-comunicacao { border:2px solid var(--dourado); background:linear-gradient(145deg,#fffdf7,#fff4d7); }
.norte-comunicacao { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; }
.norte-comunicacao > div { padding:11px; border-radius:13px; background:white; border:1px solid rgba(194,141,44,.3); }
.norte-comunicacao small { display:block; color:var(--muted); font-size:12px; text-transform:uppercase; font-weight:800; letter-spacing:.02em; }
.norte-comunicacao strong { display:block; margin-top:4px; color:var(--verde); }
.norte-comunicacao p { grid-column:1/-1; margin:2px 0 8px; line-height:1.5; }
.gestao-conteudos { display:grid; gap:8px; }
.gestao-conteudos h3 { margin:6px 0 0; color:var(--verde); }
.conteudo-gestao { display:grid; grid-template-columns:minmax(0,1fr) 150px; align-items:center; gap:12px; padding:10px; border-radius:13px; background:white; border:1px solid var(--linha); }
.conteudo-gestao.estrategico { grid-template-columns:1fr; align-items:start; }
.titulo-linha-editorial { margin-top:14px !important; }
.linha-editorial-fase { background:#f4f7f2; border-color:rgba(11,47,86,.28); }
.indices-estrategicos-painel { margin-top:18px; padding-top:15px; border-top:1px solid var(--linha); }
.cabecalho-indices-estrategicos { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.cabecalho-indices-estrategicos h3 { margin:3px 0 0; font-size:20px; }
.cabecalho-indices-estrategicos > small { color:var(--muted); font-size:12px; font-weight:800; }
.grade-indices-estrategicos { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-top:12px; }
.resumo-indices-painel { grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.indice-estrategico-resumo { display:grid; gap:3px; min-height:92px; padding:11px; border:1px solid var(--linha); border-radius:13px; background:#fff; }
.indice-estrategico-resumo small { color:var(--verde); font-size:12px; font-weight:800; text-transform:uppercase; }
.indice-estrategico-resumo strong { color:#111; font-size:20px; line-height:1.05; }
.indice-estrategico-resumo span { color:var(--muted); font-size:12px; line-height:1.35; }
.indice-estrategico { border:1px solid var(--linha); border-radius:14px; background:#fff; }
.indice-estrategico summary { padding:12px; cursor:pointer; }
.indice-estrategico summary span { display:grid; gap:3px; }
.indice-estrategico small { color:var(--verde); font-size:12px; font-weight:800; text-transform:uppercase; }
.indice-estrategico strong { color:var(--texto); font-size:20px; }
.indice-estrategico em { color:var(--muted); font-size:12px; font-style:normal; line-height:1.35; }
.variaveis-indice { padding:0 12px 12px; border-top:1px solid var(--linha); }
.variaveis-indice p { margin:8px 0 0; color:var(--texto); font-size:12px; line-height:1.35; }
.movimento-pilares-f5m { margin-top:16px; }
.cabecalho-movimento-pilares { display:flex; justify-content:space-between; align-items:end; gap:10px; }
.cabecalho-movimento-pilares small { color:var(--muted); font-size:12px; }
.infografico-movimento-pilares { display:grid; gap:7px; margin-top:8px; }
.linha-movimento-pilar { display:grid; grid-template-columns:minmax(145px,1.15fr) minmax(100px,2fr) auto auto; align-items:center; gap:12px; padding:10px 12px; border:1px solid var(--linha); border-radius:12px; background:#fff; }
.linha-movimento-pilar > strong { color:var(--texto); font-size:12px; }
.trilha-movimento { height:7px; overflow:hidden; border-radius:999px; background:#e7e3d8; }
.trilha-movimento span { display:block; height:100%; border-radius:inherit; background:var(--verde); }
.estado-estavel .trilha-movimento span { background:#9b927f; }
.estado-retomada .trilha-movimento span { background:#c98d24; }
.valores-movimento { display:flex; align-items:center; gap:5px; white-space:nowrap; font-size:13px; }
.valores-movimento em { min-width:26px; color:var(--verde); font-size:12px; font-style:normal; font-weight:800; }
.estado-retomada .valores-movimento em { color:#a96518; }
.selo-movimento { min-width:64px; padding:5px 7px; border-radius:999px; background:#e8eef5; color:var(--verde); font-size:12px; font-weight:800; text-align:center; text-transform:uppercase; }
.estado-estavel .selo-movimento { background:#efede7; color:#6d675b; }
.estado-retomada .selo-movimento { background:#f8ead0; color:#915713; }
.leitura-movimento-pilares { padding:12px; border:1px solid var(--linha); border-radius:14px; background:#fff; }
.leitura-movimento-pilares strong { color:var(--verde); font-size:13px; }
.leitura-movimento-pilares p { margin:7px 0 0; font-size:12px; line-height:1.4; }
.conteudo-gestao p { margin:4px 0 0; color:var(--muted); font-size:13px; line-height:1.4; }

.oculto {
  display: none !important;
}

.admin-geral {
  padding: 18px clamp(18px, 5vw, 64px) 0;
}

body.modo-admin { min-height:100vh; background:linear-gradient(145deg,#f7f1e3 0%,#ebe5d7 100%); }
body.modo-admin .topo,
body.modo-admin .navegacao-app,
body.modo-admin .atalhos-admin,
body.modo-admin main { display:none !important; }
body.modo-admin .admin-geral { min-height:100vh; display:grid; place-items:center; padding:28px; }
body.modo-admin .admin-card { width:min(920px,100%); box-shadow:0 24px 70px rgba(35,50,43,.14); }

.atalhos-admin {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 14px clamp(18px, 5vw, 64px) 0;
}

.admin-card {
  border-color: rgba(37, 77, 63, .35);
  background: #fffdf7;
}

.admin-form {
  margin: 10px 0 14px;
}

.admin-erro {
  margin: 10px 0 0;
  color: var(--vermelho);
  font-weight: 800;
}

.campo-senha {
  position: relative;
  display: block;
}

.campo-senha input {
  padding-right: 48px;
}

.campo-senha button {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 50%;
  background: #eadfca;
  cursor: pointer;
  font-size: 16px;
}

.acoes-admin {
  display: flex;
  justify-content: flex-end;
  gap:10px;
  margin: -4px 0 14px;
}

.lista-candidatos-admin {
  display: grid;
  gap: 12px;
}

.candidato-admin {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px;
  border-radius: 18px;
  border: 1px solid var(--linha);
  background: white;
}

.candidato-admin strong {
  display: block;
  color: var(--verde);
  font-size: 17px;
}

.candidato-admin span {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.35;
}
.acoes-candidato-admin { display:flex; align-items:center; gap:8px; flex-wrap:wrap; justify-content:flex-end; }

body.modo-cadastro-novo #cadastro { max-width:none; }
body.modo-cadastro-novo .coluna-principal { grid-column:1; }
body.modo-cadastro-novo .barra-lateral { grid-column:2; }
body.modo-cadastro-novo #faseBox { align-self:start; }

.acoes-cadastro-candidato { display:flex; align-items:center; justify-content:flex-end; gap:10px; flex-wrap:wrap; }
body:not(.modo-cadastro-novo) .limpar-cadastro-novo { display:none; }
.botao.perigo { border-color:#b5473c; background:#fff5f3; color:#9d2f26; }
.botao.perigo:hover { background:#9d2f26; color:#fff; }
.cadastro-base-admin { display: grid; gap: 14px; }
.cadastro-base-admin.oculto { display: none; }
.cabecalho-cadastro-base-admin { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-top: 6px; }
.cabecalho-cadastro-base-admin h3 { margin: 4px 0 0; font-size: 26px; }
.conteudo-cadastro-base-admin { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.conteudo-cadastro-base-admin > div { min-width: 0; padding: 13px; border: 1px solid var(--linha); border-radius: 14px; background: #fff; }
.conteudo-cadastro-base-admin small, .conteudo-cadastro-base-admin strong { display: block; }
.conteudo-cadastro-base-admin small { color: var(--muted); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.conteudo-cadastro-base-admin strong { margin-top: 5px; color: var(--verde); line-height: 1.4; overflow-wrap: anywhere; }
.pesquisa-referencia-cargo { padding: 18px; border: 1px solid var(--linha); border-radius: 18px; background: #fffaf0; }
.pesquisa-referencia-cargo h4 { margin: 4px 0 6px; font-size: 22px; }
.pesquisa-referencia-cargo p { margin: 6px 0; line-height: 1.45; }
.acoes-referencia-cargo { display: flex; flex-wrap: wrap; gap: 10px; margin: 12px 0; }
.resultado-referencia-cargo { padding: 14px; border-radius: 14px; background: #fff; border: 1px solid var(--linha); }
.resultado-referencia-cargo small { display: block; line-height: 1.45; }
@media (max-width: 700px) { .conteudo-cadastro-base-admin { grid-template-columns: 1fr; } .cabecalho-cadastro-base-admin { flex-direction: column; } }
.doc-calculo-f5m { display: block; }
.doc-calculo-f5m h4 { margin: 18px 0 6px; color: var(--verde); font-size: 15px; }
.doc-calculo-f5m h4:first-child { margin-top: 0; }
.doc-calculo-f5m p, .doc-calculo-f5m ul { margin: 0 0 6px; line-height: 1.5; }
.doc-calculo-f5m ul { padding-left: 18px; }
.doc-calculo-f5m li { margin-bottom: 4px; }
.cadastro-protegido { padding:7px 9px; border-radius:999px; background:#eaf0f6; color:var(--verde); font-size:12px; font-weight:800; }
.btn-excluir-concorrente { margin-top:10px; border-color:#b5473c; color:#9d2f26; }
.candidato-pesos-f5m { margin:6px 0 0; color:var(--dourado-escuro); font-size:13px; font-weight:800; line-height:1.4; }
.perfis-pontuacao-f5m { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-top:14px; }
.perfis-pontuacao-f5m article { display:grid; align-content:start; gap:6px; padding:12px; border:1px solid var(--linha); border-radius:14px; background:#fff; }
.perfis-pontuacao-f5m article.ativo { border-color:var(--dourado); box-shadow:inset 0 0 0 2px rgba(206,148,38,.18); }
.perfis-pontuacao-f5m strong { color:var(--verde); font-size:13px; }
.perfis-pontuacao-f5m span { color:var(--dourado-escuro); font-size:13px; font-weight:800; }
.perfis-pontuacao-f5m small { min-height:42px; color:var(--muted); font-size:12px; line-height:1.35; }
.perfis-pontuacao-f5m .botao { margin-top:3px; padding:8px 9px; font-size:12px; }
.categoria-candidato-admin { display:grid; gap:5px; margin-top:10px; color:var(--muted); font-size:13px; font-weight:800; }
.categoria-candidato-admin select { width:min(330px,100%); padding:8px 10px; font-size:12px; }
.categoria-candidato-principal { display:grid; grid-template-columns:minmax(0,1fr) minmax(240px,.7fr); gap:12px; align-items:end; margin:12px 0 16px; padding:13px; border:1px solid rgba(206,148,38,.4); border-radius:15px; background:#fbf5e7; }
.categoria-candidato-principal small,.categoria-candidato-principal strong,.categoria-candidato-principal span { display:block; }
.categoria-candidato-principal small { color:var(--dourado-escuro); font-size:12px; font-weight:800; text-transform:uppercase; }
.categoria-candidato-principal strong { margin-top:3px; color:var(--verde); font-size:16px; }
.categoria-candidato-principal span { margin-top:3px; color:var(--muted); font-size:13px; line-height:1.35; }
.controle-categoria-candidato { display:grid; gap:5px; color:var(--verde); font-size:13px; font-weight:800; }
.controle-categoria-candidato select { width:100%; padding:9px 10px; }
.estrategia-matriz-projetada { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:10px 0 14px; }
.estrategia-matriz-projetada div { padding:10px; border-radius:12px; background:rgba(11,47,86,.08); }
.estrategia-matriz-projetada small,.estrategia-matriz-projetada strong { display:block; }
.estrategia-matriz-projetada small { color:var(--muted); font-size:12px; font-weight:800; text-transform:uppercase; }
.estrategia-matriz-projetada strong { margin-top:3px; color:var(--verde); font-size:13px; }
.estrategia-matriz-projetada p { grid-column:1/-1; margin:0; font-size:13px; line-height:1.4; }

body.modo-pesos-f5m { min-height:100vh; background:linear-gradient(145deg,#f7f1e3 0%,#ebe5d7 100%); }
body.modo-pesos-f5m > * { display:none !important; }
body.modo-pesos-f5m > #painelPesosF5M { display:block !important; width:min(1100px,calc(100% - 32px)); margin:24px auto; }

.pesos-f5m-admin { margin-top:22px; padding:18px; border:1px solid var(--linha); border-radius:18px; background:#f8f3e8; }
.voltar-pesos-f5m { margin-bottom:14px; }
.cabecalho-pesos-f5m { display:flex; justify-content:space-between; align-items:flex-start; gap:14px; padding-bottom:10px; }
.cabecalho-pesos-f5m + .texto-apoio { margin-top:4px; line-height:1.45; }
.cabecalho-pesos-f5m h3 { margin:3px 0 0; font-size:22px; }
.total-pesos-f5m { flex:0 0 auto; padding:7px 10px; border-radius:999px; background:rgba(11,47,86,.1); color:var(--verde); font-size:12px; font-weight:800; }
.total-pesos-f5m.invalido { background:rgba(180,58,45,.1); color:var(--vermelho); }
.blocos-pesos-f5m { display:grid; gap:12px; margin-top:14px; }
.bloco-peso-f5m { padding:14px; border:1px solid var(--linha); border-radius:16px; background:#fff; }
.peso-geral-f5m { display:grid; grid-template-columns:1fr 90px; align-items:center; gap:14px; color:var(--verde); font-size:14px; font-weight:800; }
.peso-geral-f5m input { width:100%; }
.bloco-impulso-f5m { border-color:rgba(206,148,38,.48); background:linear-gradient(135deg,#fff 0%,#fbf4e4 100%); }
.explicacao-pesos-f5m { padding:14px 16px; border:1px solid var(--linha); border-radius:14px; background:#f4f2e8; color:var(--verde); }
.explicacao-pesos-f5m > strong { display:block; margin-bottom:8px; font-size:15px; }
.explicacao-pesos-f5m p { margin:5px 0; color:var(--texto); font-size:12px; line-height:1.5; }
.explicacao-pesos-f5m small { display:block; margin-top:9px; padding-top:9px; border-top:1px solid var(--linha); color:var(--muted); line-height:1.5; }
.titulo-impulso-f5m { display:flex; justify-content:space-between; align-items:center; gap:14px; color:var(--verde); }
.titulo-impulso-f5m strong { font-size:14px; }
.titulo-impulso-f5m span { display:flex; align-items:center; gap:7px; color:var(--muted); font-size:13px; font-weight:800; }
.titulo-impulso-f5m input { width:64px; padding:7px; }
.grade-impulso-f5m label::after { content:"x"; position:absolute; right:22px; bottom:10px; color:var(--muted); font-weight:800; }
.grade-impulso-f5m label { position:relative; }
.grade-impulso-f5m input { padding-right:27px; }
.nota-metodo-f5m { margin:0 14px 14px; padding:10px; border-radius:10px; background:rgba(11,47,86,.07); color:var(--verde); font-size:13px; line-height:1.4; font-weight:700; }
.nivel-municipio-campanha { display:grid; grid-template-columns:1fr minmax(150px,220px); align-items:center; gap:10px; margin:12px 14px 4px; color:var(--verde); font-size:13px; font-weight:800; }
.nivel-municipio-campanha select { width:100%; padding:8px 10px; }
.nivel-municipio-campanha.somente-leitura select { opacity:.8; }
.grupo-pesos-f5m { margin-top:10px; border:1px solid var(--linha); border-radius:14px; background:#faf7ef; }
.grupo-pesos-f5m summary { padding:13px 14px; color:var(--verde); font-weight:800; cursor:pointer; }
.grade-pesos-f5m { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; padding:0 14px 14px; }
.grade-pesos-f5m label { display:grid; gap:5px; color:var(--muted); font-size:13px; font-weight:800; }
.grade-pesos-f5m input { width:100%; }
.acoes-pesos-f5m { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin-top:14px; }
.status-pesos-f5m { color:var(--verde); font-size:12px; font-weight:800; }
body.modo-pesos-f5m .texto-apoio { font-size:16px; }
body.modo-pesos-f5m .explicacao-pesos-f5m p { font-size:14px; }
body.modo-pesos-f5m .explicacao-pesos-f5m small { font-size:13px; }
body.modo-pesos-f5m .perfis-pontuacao-f5m strong { font-size:14px; }
body.modo-pesos-f5m .perfis-pontuacao-f5m span { font-size:12px; }
body.modo-pesos-f5m .perfis-pontuacao-f5m small { font-size:12px; }
body.modo-pesos-f5m .perfis-pontuacao-f5m .botao { font-size:12px; }
body.modo-pesos-f5m .nota-metodo-f5m { font-size:13px; }
body.modo-pesos-f5m .grupo-pesos-f5m summary { font-size:16px; }
body.modo-pesos-f5m .grade-pesos-f5m label { font-size:13px; }
body.modo-pesos-f5m .grade-pesos-f5m input,
body.modo-pesos-f5m .peso-geral-f5m input { font-size:14px; }

@media (max-width: 720px) {
  .grade-pesos-f5m { grid-template-columns:1fr; }
  .cabecalho-pesos-f5m { flex-direction:column; }
  .perfis-pontuacao-f5m { grid-template-columns:1fr; }
  .categoria-candidato-principal { grid-template-columns:1fr; }
  .nivel-municipio-campanha { grid-template-columns:1fr; }
  .grade-indices-estrategicos { grid-template-columns:1fr; }
  .cabecalho-indices-estrategicos { flex-direction:column; }
  .linha-movimento-pilar { grid-template-columns:1fr auto; }
  .trilha-movimento { grid-column:1 / -1; grid-row:2; }
  .valores-movimento { grid-column:1; grid-row:3; }
  .selo-movimento { grid-column:2; grid-row:1; }
}

.coluna-principal,
.barra-lateral {
  display: grid;
  align-content: start;
  gap: 18px;
  min-width: 0;
}

.cartao {
  background: rgba(255, 250, 240, .92);
  border: 1px solid var(--linha);
  border-radius: 24px;
  padding: 22px;
  box-shadow: var(--sombra);
  align-self: start;
  width: 100%;
  min-width: 0;
  max-width: 100%;
}

/* Impede formulários, métricas e textos longos de invadirem a outra coluna. */
.cartao > *,
.fontes-inteligencia,
.fontes-inteligencia > *,
.metricas-municipio,
.metricas-municipio > *,
.form-pesquisa-territorial,
.ficha-territorial,
.gestao-recomendacoes {
  min-width: 0;
  max-width: 100%;
}

.cartao p,
.cartao strong,
.cartao small,
.cartao label {
  overflow-wrap: anywhere;
}

.grande { grid-column: auto; }

.lateral { grid-column: auto; }

.cabecalho-cartao {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 16px;
}

h2 { margin: 0 0 18px; font-size: 24px; }

.formulario {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  align-items: start;
}
#formCandidato .campo-bandeiras,
#formCandidato .campo-perfil-candidato { min-width: 0; }
#formCandidato .campo-bandeiras { align-self: start; }
#bandeiras, #perfilCandidato { width: 100%; height: 96px; min-height: 96px; max-height: 96px; overflow-y: auto; resize: none; font-size: 14px; font-weight: 400; line-height: 1.35; }
.campo-perfil-candidato { display: grid; gap: 7px; }
.campo-perfil-candidato > label { font-weight: 700; }
.acoes-perfil-candidato { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.upload-documento-perfil input { display: none; }
.acoes-perfil-candidato .botao { padding: 10px 14px; }
.campo-perfil-candidato .status-pdf { margin: 0; }

.pesquisa-candidato {
  margin: 10px 0 18px;
  padding: 16px;
  border: 1px dashed rgba(37, 77, 63, .35);
  border-radius: 20px;
  background: rgba(255, 255, 255, .56);
}

.pesquisa-candidato.acordeao:not([open]) {
  padding-bottom: 16px;
}

.pesquisa-candidato summary {
  min-height: 44px;
  font-size: 18px;
}

.conteudo-pesquisa-candidato {
  display: grid;
  gap: 12px;
  margin-top: 12px;
}

.conteudo-pesquisa-candidato .texto-apoio {
  margin: 0;
}

.pesquisa-form {
  grid-template-columns: minmax(0, 1fr) 220px;
}

.acoes-pesquisa {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.status-pesquisa {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.4;
}

.resultado-pesquisa {
  display: grid;
  gap: 8px;
  padding: 14px;
  border-radius: 18px;
  background: #f5ead5;
  border-left: 5px solid var(--verde);
  line-height: 1.45;
}

.resultado-pesquisa strong {
  color: var(--verde);
  font-size: 18px;
}

.resultado-pesquisa span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.resultado-pesquisa p {
  margin: 0;
}

.aviso-cadastro-existente {
  color: var(--verde);
  background: rgba(37, 77, 63, .08);
  padding: 10px;
  border-radius: 12px;
}

label {
  display: grid;
  gap: 7px;
  font-size: 13px;
  font-weight: 700;
  color: var(--muted);
}

input, select, textarea {
  width: 100%;
  border: 1px solid var(--linha);
  border-radius: 14px;
  padding: 12px 13px;
  background: white;
  color: var(--texto);
  font: inherit;
}

textarea { min-height: 88px; resize: vertical; }
.linha-inteira { grid-column: 1 / -1; }

.botao {
  border: 0;
  border-radius: 999px;
  padding: 12px 18px;
  background: #e7dcc8;
  color: var(--texto);
  cursor: pointer;
  font-weight: 800;
}

.botao:hover { filter: brightness(.96); }
.botao.destaque { background: var(--dourado); color: #221606; }

.pill {
  display: inline-flex;
  padding: 8px 12px;
  border-radius: 999px;
  background: rgba(194, 141, 44, .18);
  color: #6f4c0e;
  font-weight: 800;
  font-size: 12px;
}

.destaque-nota {
  background: #1f4438;
  color: white;
}

.destaque-nota strong {
  display: inline-block;
  font-size: 76px;
  line-height: 1;
  letter-spacing: -4px;
}

.destaque-nota span { font-size: 24px; opacity: .72; }
.destaque-nota p:last-child { color: rgba(255,255,255,.78); }

.item-nota {
  display: grid;
  grid-template-columns: minmax(110px, 1fr) minmax(0, 214px);
  align-items: center;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid var(--linha);
}

.compacta .item-nota { grid-template-columns: minmax(110px, 1fr) minmax(0, 214px); }
.item-nota:last-child { border-bottom: 0; }

input[type="range"] { accent-color: var(--verde); padding: 0; }

.diagnostico {
  background: #f5ead5;
  border-left: 5px solid var(--dourado);
  padding: 18px;
  border-radius: 18px;
  line-height: 1.55;
}

.calendario-box strong {
  display: block;
  font-size: 20px;
  margin-bottom: 8px;
}

.linha-tempo {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.marco {
  display: grid;
  grid-template-columns: 118px 1fr;
  gap: 12px;
  padding: 12px;
  border: 1px solid var(--linha);
  border-radius: 16px;
  background: white;
}

.marco.ativo {
  border-color: var(--dourado);
  background: #fff3d6;
  box-shadow: inset 4px 0 0 var(--dourado);
}

.marco-data {
  font-weight: 800;
  color: var(--verde);
}

.marco small {
  display: block;
  color: var(--muted);
  margin-top: 4px;
  line-height: 1.35;
}

.aviso-legal {
  margin: 14px 0 0;
  color: var(--vermelho);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.5;
}

.texto-livro {
  min-height: 58px;
  margin-bottom: 12px;
}

.pergunta-consultor {
  min-height: 58px;
}

.nota-biblioteca {
  margin: 14px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.area-reflexao {
  background: #fffdf7;
  border-color: rgba(194, 141, 44, .45);
}

.area-reflexao h2 {
  font-size: 30px;
}

.etiqueta-resposta {
  margin-top: 16px;
}

.resposta-consultor {
  margin-top: 14px;
  padding: 16px;
  border-radius: 18px;
  background: #f5ead5;
  border-left: 5px solid var(--verde);
  color: var(--texto);
  line-height: 1.5;
  max-height: 190px;
  overflow: auto;
}

.fase-box {
  border-color: rgba(37, 77, 63, .28);
}

.texto-apoio {
  margin: -8px 0 16px;
  color: var(--muted);
  line-height: 1.45;
}

.fases-opcoes {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.fase-opcao {
  display: flex;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--linha);
  border-radius: 16px;
  padding: 12px;
  background: white;
  color: var(--texto);
  cursor: pointer;
  font-size: 14px;
}

.fase-opcao input {
  width: 18px;
  height: 18px;
  accent-color: var(--verde);
}

.fase-opcao:has(input:checked) {
  border-color: var(--verde);
  background: #edf5ef;
  box-shadow: inset 4px 0 0 var(--verde);
}
/* A fase vem do calendário: as opções mostram onde a campanha está, não são escolha. */
.fase-opcao:has(input:disabled) { cursor: default; }
.fase-opcao:has(input:disabled):not(:has(input:checked)) { opacity: 0.55; }
.nota-fase-anterior {
  margin: 14px 0 0;
  padding: 12px 14px;
  border-left: 3px solid var(--verde);
  background: #f4f8f5;
  border-radius: 0 10px 10px 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--texto-suave, #55606c);
}

@media (min-width: 901px) {
  .barra-lateral { gap: 14px; }
  .barra-lateral > .cartao { border-radius: 20px; }
  .barra-lateral .fase-box { padding: 18px; }
  .barra-lateral .fase-box h2 { margin-bottom: 8px; font-size: 25px; line-height: 1.1; }
  .barra-lateral .fase-box .texto-apoio { margin-bottom: 12px; font-size: 13px; line-height: 1.4; }
  .barra-lateral .fases-opcoes { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .barra-lateral .fase-opcao { min-width: 0; min-height: 52px; gap: 7px; padding: 9px; border-radius: 13px; font-size: 12px; line-height: 1.12; }
  .barra-lateral .fase-opcao input { flex: 0 0 auto; width: 15px; height: 15px; }
  .barra-lateral .fase-opcao span { min-width: 0; overflow-wrap: anywhere; }
  .barra-lateral .comunicacao-digital { padding: 15px; }
  .barra-lateral .comunicacao-digital h2 { font-size: 21px; }
  .barra-lateral .perfil-digital { gap: 5px; }
  .barra-lateral .linha-conteudo { padding: 16px; }
  .barra-lateral .linha-conteudo h2 { font-size: 21px; line-height: 1.12; }
  .barra-lateral .linha-conteudo-intro { margin-bottom: 14px; font-size: 14px; }
  .barra-lateral .trilha-conteudo { gap: 10px; padding-left: 21px; }
  .barra-lateral .trilha-etapa { padding: 10px; border-radius: 13px; }
  .barra-lateral .trilha-etapa h3 { font-size: 16px; }
  .barra-lateral .trilha-etapa p { font-size: 13px; line-height: 1.45; }
  .barra-lateral .trilha-etapa::before { left: -15px; width: 11px; height: 11px; }
  .barra-lateral .bloco-concorrentes { padding: 15px; }
  .barra-lateral .bloco-concorrentes .acordeao summary { font-size: 17px; }
  .barra-lateral .concorrente-form { grid-template-columns: 1fr; }
  .barra-lateral .concorrente summary { padding: 10px; }
  .barra-lateral .concorrente-conteudo { padding: 0 10px 10px; }
  .barra-lateral .bloco-inteligencia { padding: 15px; }
  .barra-lateral .bloco-inteligencia h2 { font-size: 21px; line-height: 1.15; }
  .barra-lateral .fontes-inteligencia { grid-template-columns: 1fr; }
  .barra-lateral .metricas-municipio { grid-template-columns: 1fr; }
  .barra-lateral .bloco-inteligencia { overflow: hidden; }
  .barra-lateral .bloco-inteligencia *,
  .barra-lateral .painel-territorial,
  .barra-lateral .detalhe-municipio {
    min-width: 0;
    max-width: 100%;
  }
  .barra-lateral .bloco-inteligencia input,
  .barra-lateral .bloco-inteligencia select,
  .barra-lateral .bloco-inteligencia textarea {
    display: block;
    width: 100%;
  }
  .barra-lateral .detalhe-municipio { overflow: hidden; padding: 12px; }
  .barra-lateral .detalhe-municipio p { overflow-wrap: anywhere; }
  .barra-lateral .ranking-territorial li {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: 8px;
  }
  .barra-lateral .ranking-territorial span { min-width: 0; overflow-wrap: anywhere; }
  .barra-lateral .ranking-territorial b { font-size: 12px; }
  .barra-lateral .fonte-linha,
  .barra-lateral .aviso-legal { font-size: 13px; line-height: 1.5; }
}


.acordeao summary,
.subacordeao summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 64px;
  font-size: 22px;
  font-weight: 800;
}

.acordeao:not([open]) {
  padding-bottom: 22px;
}

.acordeao:not([open]) > :not(summary) {
  display: none;
}

.acordeao summary::-webkit-details-marker,
.subacordeao summary::-webkit-details-marker {
  display: none;
}

.acordeao summary::after,
.subacordeao summary::after {
  content: "+";
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: inline-grid;
  place-items: center;
  background: #eadfca;
  color: var(--verde);
  font-weight: 800;
  flex: 0 0 auto;
}

.acordeao[open] > summary::after,
.subacordeao[open] > summary::after {
  content: "−";
}

.acordeao summary span,
.subacordeao summary span {
  display: grid;
  gap: 4px;
}

.subacordeao {
  margin-top: 14px;
  border: 1px dashed var(--linha);
  border-radius: 18px;
  padding: 14px;
  background: rgba(255,255,255,.55);
}

.subacordeao summary {
  min-height: 34px;
  font-size: 15px;
}

.subacordeao summary::after {
  width: 26px;
  height: 26px;
}

.lista-acordeao {
  margin-top: 18px;
}

/* Tópicos com marcador próprio. A altura é limitada e o bloco rola por dentro: as
   prioridades geradas por IA podem passar do tamanho da lista fixa, e sem isso o cartão
   esticaria e desalinharia a coluna no desktop. */
.rotulo-opcional {
  margin-left: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
}

.acoes {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-height: 340px;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.acoes li {
  position: relative;
  margin: 0;
  padding-left: 20px;
  font-size: 14px;
  line-height: 1.5;
}

.acoes li::before {
  content: "";
  position: absolute;
  top: 8px;
  left: 3px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--verde);
}

.acoes:focus-visible { outline: 2px solid var(--verde); outline-offset: 3px; }

@media (max-width: 900px) {
  /* No mobile o cartão já empilha: rolagem dentro de rolagem só atrapalha. */
  .acoes { max-height: none; overflow-y: visible; }
}

.comunicacao-digital {
  border-color: rgba(11, 47, 86, .22);
  padding: 16px;
}

.comunicacao-digital h2 {
  margin-bottom: 8px;
  font-size: 22px;
}

.comunicacao-digital .etiqueta {
  font-size: 12px;
  margin-bottom: 4px;
}

.comunicacao-digital .texto-apoio {
  font-size: 15px;
  line-height: 1.5;
}

.perfil-digital {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 6px 0 9px;
}

/* Mesma frase de arco da campanha em Prioridades e Comunicação digital: os dois blocos
   precisam abrir do mesmo lugar para não parecerem falar de momentos diferentes. */
.enquadramento-fase {
  margin: 0 0 12px;
  padding: 9px 12px;
  border-left: 3px solid var(--verde);
  border-radius: 0 8px 8px 0;
  background: rgba(11, 47, 86, .05);
  color: var(--verde);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.45;
}

.enquadramento-fase:empty {
  display: none;
}

.perfil-digital span {
  padding: 5px 11px;
  border-radius: 999px;
  background: rgba(11, 47, 86, .08);
  color: var(--verde);
  font-size: 13px;
  font-weight: 800;
}

.cards-digitais {
  display: grid;
  gap: 7px;
  margin-top: 10px;
}

.canal-digital {
  display: block;
  padding: 9px 10px;
  border-radius: 13px;
  background: rgba(255,255,255,.68);
  border: 1px solid var(--linha);
}

.canal-digital summary {
  color: var(--verde);
  font-size: 15px;
  font-weight: 800;
  cursor: pointer;
}

.canal-digital p {
  margin: 8px 0 0;
  color: var(--texto);
  font-size: 14px;
  line-height: 1.5;
}

/* Leitura ampliada dos boxes da coluna direita de Comunicação digital */
.barra-lateral .comunicacao-digital .texto-apoio { font-size:15px; line-height:1.5; }
.barra-lateral .comunicacao-digital .perfil-digital span { font-size:13px; }
.barra-lateral .comunicacao-digital .canal-digital { padding:13px 14px; }
.barra-lateral .comunicacao-digital .canal-digital summary { line-height:1.25; }
.comunicacao-digital .aviso-legal {
  margin-top: 10px;
  font-size: 13px;
  line-height: 1.5;
}

.linha-conteudo {
  overflow: hidden;
  border-color: rgba(186, 128, 38, .28);
  background:
    radial-gradient(circle at 100% 0, rgba(211, 164, 79, .13), transparent 34%),
    var(--cartao);
}

.linha-conteudo h2 {
  margin-bottom: 6px;
}

.linha-conteudo-intro {
  max-width: 680px;
  margin: 0 0 22px;
  color: var(--texto-suave);
  font-size: 15px;
  line-height: 1.55;
}

/* Acordeão de bloco: recolhe seções longas mantendo o título da seção visível. */
.acordeao-bloco > summary {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 10px;
  padding: 12px 14px;
  border: 1px solid var(--linha);
  border-radius: 12px;
  background: rgba(11, 47, 86, .04);
  cursor: pointer;
  list-style: none;
}
.acordeao-bloco > summary::-webkit-details-marker { display: none; }
/* Mesmo círculo usado nos outros acordeões do app: a seta solta ficava pequena demais
   para servir de alvo de clique. */
.acordeao-bloco > summary::after {
  content: "▼";
  margin-left: auto;
  display: grid;
  place-items: center;
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--creme);
  color: var(--verde);
  font-size: 15px;
  font-weight: 800;
}
.acordeao-bloco[open] > summary::after { content: "▲"; }
.acordeao-bloco > summary:hover { border-color: var(--verde); }
.acordeao-bloco > summary:focus-visible { outline: 2px solid var(--verde); outline-offset: 2px; }
.acordeao-bloco > summary span { font-size: 15px; font-weight: 700; color: var(--texto); }
.acordeao-bloco > summary small { font-size: 13px; color: var(--texto-suave); }
.acordeao-bloco[open] > summary { margin-bottom: 16px; }

.fase-midia-paga { padding: 11px 13px; border-left: 3px solid var(--linha); }
.fase-midia-paga + .fase-midia-paga { margin-top: 8px; }
.fase-midia-paga small {
  display: block;
  color: var(--texto-suave);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.fase-midia-paga p { margin: 4px 0 0; font-size: 14px; line-height: 1.5; }
.fase-midia-paga-atual { border-left-color: var(--verde); background: rgba(45, 107, 87, .06); border-radius: 0 10px 10px 0; }
.fase-midia-paga-atual small { color: var(--verde); }

.trilha-conteudo {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
  margin: 0;
  padding: 0 0 0 24px;
  list-style: none;
}
.canal-etapa { display:grid; grid-template-columns:auto minmax(150px,1fr); align-items:center; gap:9px; margin-top:11px; padding-top:10px; border-top:1px solid var(--linha); color:var(--texto-suave); font-size:12px; font-weight:800; text-transform:uppercase; }
.canal-etapa select { min-width:0; width:100%; padding:9px 11px; border:1px solid var(--linha); border-radius:10px; background:#fff; color:var(--texto); font-size:13px; font-weight:700; text-transform:none; }
.etapa-prazo-digital { border-color:var(--dourado); box-shadow:0 0 0 2px rgba(206,148,38,.12); }
.alerta-prazo-digital { display:block; margin-top:10px; padding:10px 11px; border-radius:10px; background:#fff2cf; color:#7b5510; font-size:13px; line-height:1.5; }
.trilha-etapa.canal-organico { box-shadow:inset 4px 0 0 var(--verde); }
.trilha-etapa.canal-impulsionado { box-shadow:inset 4px 0 0 var(--dourado); }
.trilha-etapa.canal-ambos { box-shadow:inset 4px 0 0 var(--verde), inset 8px 0 0 var(--dourado); }
.trilha-etapa.etapa-sugestao-ia { outline:2px solid var(--dourado); outline-offset:2px; }
.etiqueta-ia { display:inline-block; padding:4px 10px; border-radius:999px; background:#fff2cf; color:#7b5510; font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; vertical-align:middle; }
.acoes-sugestao-editorial { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:10px; }
.acoes-sugestao-editorial .status-campo { flex-basis:100%; }
.orientacao-distribuicao { margin-top:9px; padding:10px 11px; border-radius:11px; background:rgba(11,47,86,.06); color:var(--texto); }
.canal-impulsionado .orientacao-distribuicao { background:rgba(206,148,38,.12); }
.canal-ambos .orientacao-distribuicao { background:linear-gradient(90deg,rgba(11,47,86,.07),rgba(206,148,38,.12)); }
.orientacao-distribuicao strong { display:block; color:var(--verde); font-size:12px; text-transform:uppercase; letter-spacing:.03em; }
.canal-impulsionado .orientacao-distribuicao strong { color:#8a5e0b; }
/* Texto de leitura corrida, não legenda: estava em 11px, menor que o corpo do app. */
.orientacao-distribuicao p { margin:6px 0 0; font-size:14px; line-height:1.55; }

.trilha-conteudo::before {
  content: "";
  position: absolute;
  top: 8px;
  bottom: 8px;
  left: 7px;
  width: 3px;
  border-radius: 999px;
  background: linear-gradient(180deg, #2d6b57 0 25%, #56856a 25% 50%, #d3a44f 50% 75%, #a83b35 75% 100%);
}

.trilha-etapa {
  position: relative;
  min-width: 0;
  padding: 14px 12px 12px;
  border: 1px solid var(--linha);
  border-radius: 16px;
  background: rgba(255, 255, 255, .78);
}

.trilha-etapa::before {
  content: "";
  position: absolute;
  top: 20px;
  left: -18px;
  width: 14px;
  height: 14px;
  border: 4px solid #fff;
  border-radius: 50%;
  background: var(--verde);
  box-shadow: 0 0 0 2px var(--verde);
  transform: translateX(-50%);
}

.etapa-posicionamento::before { background: #56856a; box-shadow: 0 0 0 2px #56856a; }
.etapa-proposta::before { background: #d3a44f; box-shadow: 0 0 0 2px #d3a44f; }
.etapa-voto::before { background: #a83b35; box-shadow: 0 0 0 2px #a83b35; }

/* A fase e o período orientam o consultor sobre onde a campanha está: ficavam no menor
   corpo da tela, menores que o texto que eles rotulam. */
.trilha-periodo {
  color: var(--texto-suave);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.trilha-etapa h3 {
  margin: 6px 0 8px;
  color: var(--verde);
  font-size: 18px;
  line-height: 1.15;
}

.etapa-voto h3 { color: var(--vermelho); }

.trilha-etapa p {
  margin: 0 0 10px;
  color: var(--texto);
  font-size: 14px;
  line-height: 1.5;
}

.trilha-etapa span {
  display: inline-block;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(11, 47, 86, .08);
  color: var(--verde);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .03em;
  text-transform: uppercase;
}

.etapa-voto span {
  background: rgba(168, 59, 53, .09);
  color: var(--vermelho);
}

.fonte-linha {
  margin: 16px 0 0;
  color: var(--texto-suave);
  font-size: 12px;
  line-height: 1.4;
}

.concorrente-form {
  display: grid;
  grid-template-columns: 1fr 170px auto;
  gap: 10px;
  margin-bottom: 14px;
}

.concorrentes {
  display: grid;
  gap: 10px;
}

.concorrente {
  border-radius: 16px;
  background: white;
  border: 1px solid var(--linha);
  overflow: hidden;
}

.concorrente summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px;
  cursor: pointer;
  list-style: none;
}

.concorrente summary::-webkit-details-marker { display: none; }

.concorrente-resumo {
  display: grid;
  gap: 4px;
}

.concorrente-resumo small {
  color: var(--texto-suave);
  font-size: 13px;
  line-height: 1.35;
}

.concorrente-abrir {
  color: var(--verde);
  font-size: 20px;
  font-weight: 800;
  transition: transform .2s ease;
}

.concorrente[open] .concorrente-abrir { transform: rotate(45deg); }

.concorrente-conteudo {
  display: grid;
  gap: 10px;
  padding: 0 12px 12px;
  border-top: 1px solid var(--linha);
}

.concorrente p {
  margin: 10px 0 0;
  color: var(--texto-suave);
  font-size: 12px;
  line-height: 1.45;
}

.concorrente a {
  width: fit-content;
  color: var(--verde);
  font-size: 13px;
  font-weight: 800;
}

.fontes-inteligencia { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 16px; }
.fonte-inteligencia { padding: 12px; border: 1px solid var(--linha); border-radius: 16px; background: white; }
.fonte-inteligencia small, .detalhe-municipio small, .metricas-municipio small { display: block; color: var(--texto-suave); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.fonte-inteligencia p { margin: 6px 0 0; color: var(--texto-suave); font-size: 13px; line-height: 1.4; }
.fonte-aguardando { border-left: 4px solid #d3a44f; }
.pesquisa-pdf-agente .envio-pdf-pesquisa { grid-template-columns: 1fr; margin-top: 10px; padding: 10px; }
.pesquisa-pdf-agente .envio-pdf-pesquisa .botao, .pesquisa-pdf-agente > .botao { width: 100%; }
.pesquisa-pdf-agente .status-campo { margin: 9px 0; text-transform: none; }
.pesquisa-pdf-agente .previa-pesquisa-pdf { margin: 10px 0; }
.pesquisa-pdf-agente .previa-pesquisa-pdf label { display: grid; gap: 4px; font-size: 12px; }
.fonte-carregada { border-left: 4px solid var(--verde); }
.painel-territorial { display: grid; gap: 8px; }
.cabecalho-selecao-municipio { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.cabecalho-selecao-municipio small { color: var(--muted); }
.envio-pdf-pesquisa { display: grid; grid-template-columns: minmax(210px, 1fr) auto auto; align-items: center; gap: 10px; padding: 14px; border: 1px dashed var(--dourado); border-radius: 14px; background: rgba(199, 143, 31, .07); }
.envio-pdf-pesquisa div, .envio-pdf-pesquisa strong, .envio-pdf-pesquisa small { display: block; }
.envio-pdf-pesquisa small { margin-top: 4px; color: var(--muted); line-height: 1.35; }
@media (max-width: 760px) { .envio-pdf-pesquisa { grid-template-columns: 1fr; } .envio-pdf-pesquisa .botao { width: 100%; } }
.painel-territorial label { font-size: 13px; font-weight: 800; }
.detalhe-municipio { min-height: 46px; padding: 10px 12px; border-radius: 14px; background: rgba(11, 47, 86, .05); color: var(--texto-suave); font-size: 13px; line-height: 1.35; }
.municipio-cabecalho { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.municipio-cabecalho h3 { margin: 3px 0 10px; color: var(--verde); font-size: 19px; }
.municipio-cabecalho > span { padding: 5px 8px; border-radius: 999px; background: rgba(168, 59, 53, .09); color: var(--vermelho); font-size: 12px; font-weight: 800; }
.municipio-cabecalho-acoes { display:flex; align-items:center; gap:8px; }
.municipio-cabecalho-acoes > span { padding:5px 8px; border-radius:999px; background:rgba(168,59,53,.09); color:var(--vermelho); font-size:12px; font-weight:800; }
.botao-recolher-municipio { display:grid; place-items:center; width:34px; height:34px; padding:0; border:0; border-radius:50%; background:#eee4ce; color:var(--verde); font-size:14px; font-weight:800; cursor:pointer; }
.botao-recolher-municipio:hover { background:#dfcfac; }
.conteudo-municipio-expandido { min-width:0; max-width:100%; }
.metricas-municipio { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 12px; }
.metricas-municipio > div { padding: 8px; border-radius: 10px; background: white; }
.metricas-municipio strong { display: block; margin-top: 3px; color: var(--texto); }
.detalhe-municipio p { margin: 8px 0; color: var(--texto); }
.detalhe-municipio h4 { margin: 14px 0 6px; color: var(--verde); font-size: 12px; }
.ranking-territorial { display: grid; gap: 5px; margin: 0; padding: 0; list-style: none; }
.ranking-territorial li { display: flex; justify-content: space-between; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--linha); }
.ranking-territorial b { white-space: nowrap; }
.municipios-territorio { margin-top: 14px; }
.lista-municipios-territorio { display: grid; gap: 12px; padding-top: 12px; }
.lista-municipios-territorio p { margin: 5px 0 0; color: var(--texto-suave); font-size: 13px; line-height: 1.5; }
.form-pesquisa-territorial,.ficha-territorial,.gestao-recomendacoes { display:grid; gap:9px; padding-top:12px; }
.form-pesquisa-territorial textarea,.ficha-territorial textarea { min-height:78px; }
.percentuais-pesquisa-municipal { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.leitura-territorial-campanha { grid-template-columns:repeat(5,minmax(0,1fr)); }
.leitura-territorial-campanha div { min-width:0; }
.leitura-territorial-campanha span { line-height:1.35; }
@media (max-width:1100px){.leitura-territorial-campanha{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:700px){.leitura-territorial-campanha,.percentuais-pesquisa-municipal{grid-template-columns:1fr;}}
.status-campo { color:var(--texto-suave); line-height:1.4; }
.lista-pesquisas { display:grid; gap:7px; }
.previa-pesquisa-pdf { display:grid; gap:7px; padding:12px; border:1px solid var(--linha); border-radius:14px; background:#fff; }
.previa-pesquisa-pdf article { display:grid; gap:3px; padding:9px; border-radius:10px; background:rgba(11,47,86,.06); }
.previa-pesquisa-pdf small { color:var(--muted); }
.resumo-motor-f5m { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.resumo-motor-f5m article { padding:13px; border:1px solid var(--linha); border-radius:14px; background:#fff; }
.resumo-motor-f5m small,.resumo-motor-f5m strong,.resumo-motor-f5m span { display:block; }
.resumo-motor-f5m strong { margin:4px 0; color:var(--verde); font-size:20px; }
.resumo-motor-f5m span { color:var(--muted); font-size:13px; line-height:1.4; }
@media(max-width:900px){.resumo-motor-f5m{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:600px){.resumo-motor-f5m{grid-template-columns:1fr;}}
.lista-pesquisas div { display:grid; gap:2px; padding:8px; background:rgba(11,47,86,.05); border-radius:10px; }
.municipio-lista-item { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px; width:100%; padding:9px 10px; border:1px solid var(--linha); border-radius:11px; background:white; color:var(--texto); text-align:left; cursor:pointer; }
.municipio-lista-item small { color:var(--texto-suave); text-transform:capitalize; }
.bolinha { display:inline-block; width:11px; height:11px; margin-right:7px; border-radius:50%; box-shadow:0 0 0 3px rgba(0,0,0,.05); vertical-align:middle; }
.bolinha.verde { background:#279562; }.bolinha.amarelo { background:#e0aa31; }.bolinha.vermelho { background:#c7443e; }
.ficha-territorial,.gestao-recomendacoes { margin-top:14px; padding:13px; border:1px solid var(--linha); border-radius:14px; background:white; }
.gestao-recomendacoes > h4 { margin:0; }
.gestao-recomendacoes > p { margin:8px 0 0; line-height:1.5; overflow-wrap:anywhere; }
.gestao-recomendacoes > small { display:block; margin-top:4px; padding-top:9px; border-top:1px solid var(--linha); line-height:1.45; overflow-wrap:anywhere; }
.ficha-territorial label { display:grid; gap:5px; font-weight:800; color:var(--texto); }
.recomendacoes-municipio { display:grid; gap:8px; }
.recomendacao-item { padding:9px; border:1px solid var(--linha); border-radius:11px; }
.recomendacao-item summary { display:flex; justify-content:space-between; gap:8px; cursor:pointer; font-weight:800; }
.recomendacao-item[open] { display:grid; gap:8px; }
.mapa-sustentacao { margin-top:14px; padding:12px; border:1px solid var(--linha); border-radius:14px; background:#fffdf7; }
.mapa-sustentacao > summary { cursor:pointer; font-weight:800; color:var(--verde); }
.mapa-sustentacao > summary small { display:block; color:var(--texto-suave); font-size:12px; text-transform:uppercase; }
.fluxo-sustentacao { display:flex; align-items:center; gap:7px; overflow-x:auto; padding:12px 0 6px; }
.fluxo-sustentacao span { min-width:max-content; padding:7px 9px; border-radius:999px; background:rgba(11,47,86,.09); color:var(--verde); font-size:12px; font-weight:800; }
.fluxo-sustentacao b { color:var(--dourado); }
.form-apoio,.editar-apoio { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; padding-top:10px; }
.form-apoio input,.form-apoio select,.editar-apoio input,.editar-apoio select { min-width:0; }
.form-apoio .botao,.editar-apoio .botao { grid-column:1/-1; }
.lista-apoios { display:grid; gap:8px; margin-top:12px; }
.apoio-item { padding:9px; border:1px solid var(--linha); border-radius:11px; background:white; }
.apoio-item summary { display:flex; align-items:center; gap:6px; cursor:pointer; }
.apoio-item summary span:nth-child(2) { display:grid; }
.apoio-item summary small { color:var(--texto-suave); }
.editar-apoio label { display:grid; gap:4px; font-size:12px; font-weight:800; }

.evolucao-f5m { border-color: rgba(37, 77, 63, .28); }
.cabecalho-evolucao { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.cabecalho-evolucao h2 { margin-bottom: 8px; }
.status-sincronizacao { display: inline-flex; align-items: center; min-height: 28px; padding: 5px 9px; border-radius: 999px; font-size: 12px; font-weight: 800; white-space: nowrap; }
.status-salvando { color: #7a551d; background: rgba(211, 164, 79, .18); }
.status-sincronizado { color: var(--verde); background: rgba(11, 47, 86, .10); }
.status-local { color: var(--texto-suave); background: rgba(109, 103, 93, .10); }
.comparacao-fases { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 14px 0; }
.comparacao-fases > div { padding: 11px; border: 1px solid var(--linha); border-radius: 14px; background: white; }
.comparacao-fases small { display: block; margin-bottom: 4px; color: var(--texto-suave); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.comparacao-fases strong { color: var(--verde); font-size: 13px; }
.campo-motivo-fase { margin-bottom: 12px; }
.evolucao-f5m textarea { min-height: 86px; margin-bottom: 12px; }
.historico-f5m { margin-top: 14px; }
.lista-historico-f5m { display: grid; gap: 8px; padding-top: 12px; }
.registro-f5m { overflow: hidden; border: 1px solid var(--linha); border-radius: 14px; background: white; }
.registro-f5m summary { display: flex; justify-content: space-between; align-items: center; gap: 10px; min-height: 0; padding: 11px; list-style: none; cursor: pointer; font-size: 12px; }
.registro-f5m summary::-webkit-details-marker { display: none; }
.registro-f5m summary span:first-child { display: grid; gap: 3px; }
.registro-f5m summary small { color: var(--texto-suave); font-size: 12px; }
.registro-f5m > div { padding: 0 11px 11px; border-top: 1px solid var(--linha); }
.registro-f5m p { margin: 9px 0 0; color: var(--texto); font-size: 13px; line-height: 1.45; }

.relatorio {
  min-height: 140px;
  height: 140px;
  line-height: 1.5;
  white-space: pre-wrap;
}

.acoes-relatorio {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: -6px 0 14px;
}

.botao-ditar { display: inline-flex; align-items: center; gap: 8px; }
.icone-microfone { font-size: 17px; line-height: 1; }
.botao-ditar.gravando {
  border-color: var(--vermelho);
  background: #fdecea;
  color: var(--vermelho);
}
.botao-ditar.gravando .icone-microfone { animation: pulso-microfone 1.1s ease-in-out infinite; }
@keyframes pulso-microfone { 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) {
  .botao-ditar.gravando .icone-microfone { animation: none; }
}

.acoes-consultor {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin: 14px 0;
}

.botao.secundario {
  background: rgba(234, 223, 202, .75);
}

.upload-pdf {
  cursor: pointer;
}

.upload-pdf input {
  display: none;
}

.status-pdf {
  margin: -4px 0 14px;
  color: var(--muted);
  font-size: 13px;
}

.documento-pdf-consultor {
  display: none;
}

@media print {
  body {
    background: white;
  }

  body * {
    visibility: hidden;
  }

  #relatorio,
  #relatorio * {
    visibility: visible;
  }

  #relatorio {
    position: fixed;
    inset: 20px;
    width: calc(100% - 40px);
    height: calc(100% - 40px);
    border: 0;
    color: black;
    background: white;
    font-size: 12pt;
  }

  body.imprimir-consultor #relatorio,
  body.imprimir-editorial #relatorio {
    display: none;
  }

  body.imprimir-consultor #documentoPdfConsultor,
  body.imprimir-consultor #documentoPdfConsultor *,
  body.imprimir-editorial #documentoPdfEditorial,
  body.imprimir-editorial #documentoPdfEditorial * {
    visibility: visible;
  }

  body.imprimir-consultor #documentoPdfConsultor,
  body.imprimir-editorial #documentoPdfEditorial {
    display: block;
    position: absolute;
    inset: 0;
    padding: 18mm 16mm;
    color: #17231f;
    background: white;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11pt;
    line-height: 1.55;
  }

  #documentoPdfConsultor h1,
  #documentoPdfEditorial h1 {
    margin: 4mm 0 2mm;
    color: #0757a6;
    font-size: 22pt;
  }

  #documentoPdfConsultor h2,
  #documentoPdfEditorial h2 {
    margin: 8mm 0 2mm;
    padding-bottom: 2mm;
    border-bottom: 1px solid #d9d2c2;
    color: #0757a6;
    font-size: 13pt;
  }

  #documentoPdfConsultor p,
  #documentoPdfEditorial p {
    margin: 0 0 3mm;
    white-space: pre-wrap;
  }

  #documentoPdfEditorial ul {
    margin: 0 0 3mm;
    padding-left: 5mm;
  }

  #documentoPdfEditorial li {
    margin-bottom: 1.5mm;
  }

  #documentoPdfConsultor .pdf-consultor-marca,
  #documentoPdfEditorial .pdf-consultor-marca {
    color: #0757a6;
    font-size: 9pt;
    font-weight: 800;
    letter-spacing: .12em;
  }

  #documentoPdfConsultor .pdf-consultor-candidato,
  #documentoPdfEditorial .pdf-consultor-candidato {
    font-size: 12pt;
    font-weight: 700;
  }

  #documentoPdfConsultor .pdf-consultor-data,
  #documentoPdfEditorial .pdf-consultor-data {
    color: #5f6864;
    font-size: 9pt;
  }

  #documentoPdfConsultor .pdf-consultor-rodape,
  #documentoPdfEditorial .pdf-consultor-rodape {
    margin-top: 12mm;
    padding-top: 4mm;
    border-top: 1px solid #d9d2c2;
    color: #5f6864;
    font-size: 8.5pt;
  }
}

@media (max-width: 920px) {
  html {
    scroll-padding-top: 82px;
  }

  body {
    background: #f3f0e8;
  }

  .topo {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
    padding: 24px 16px 18px;
  }

  .topo h1 {
    font-size: 34px;
    letter-spacing: -1px;
  }

  .topo p {
    font-size: 14px;
    line-height: 1.4;
  }

  .topo .botao {
    width: 100%;
  }

  .navegacao-app { padding: 9px 12px; scroll-snap-type:x proximity; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
  .navegacao-app::-webkit-scrollbar { display:none; }
  .aba-botao { flex:0 0 auto; min-height:44px; padding:9px 13px; font-size:12px; scroll-snap-align:start; }

  .menu-mobile {
    position: sticky;
    top: 0;
    z-index: 20;
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding: 10px 12px;
    background: rgba(243, 240, 232, .96);
    border-bottom: 1px solid var(--linha);
    box-shadow: 0 8px 20px rgba(32, 25, 12, .08);
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    scroll-snap-type: x proximity;
  }

  .menu-mobile::-webkit-scrollbar { display: none; }

  .menu-mobile a {
    flex: 0 0 auto;
    text-decoration: none;
    color: var(--verde);
    background: #fffaf0;
    border: 1px solid var(--linha);
    border-radius: 999px;
    padding: 9px 12px;
    font-size: 13px;
    font-weight: 800;
    scroll-snap-align: start;
  }

  .admin-geral {
    padding: 14px 12px 0;
  }
  body.modo-admin .admin-geral { padding:18px 12px; place-items:center; }
  body.modo-admin .admin-card { width:100%; max-width:520px; }

  .atalhos-admin {
    position: sticky;
    top: 53px;
    z-index: 19;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    padding: 8px 12px;
    background: rgba(243, 240, 232, .96);
    border-bottom: 1px solid var(--linha);
  }

  .atalhos-admin .botao {
    width: 100%;
    padding: 10px 12px;
  }

  .grade {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 14px 12px 32px;
  }

  /* No mobile, a coluna da esquerda vem inteira antes da direita. Antes as duas viravam
     display:contents e os blocos das duas se intercalavam pelo order. Empilhando as
     colunas, os mesmos valores de order passam a ordenar dentro de cada uma. */
  .coluna-principal,
  .barra-lateral {
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-width: 0;
  }

  /* Coluna sem nenhum bloco visível na aba atual não deixa espaço sobrando. */
  .coluna-principal:not(:has(> section:not(.aba-oculta))),
  .barra-lateral:not(:has(> section:not(.aba-oculta))) { display: none; }

  .coluna-principal > *,
  .barra-lateral > * { min-width:0; }

  .cartao {
    width: 100%;
    border-radius: 20px;
    padding: 16px;
    box-shadow: 0 10px 28px rgba(32, 25, 12, .08);
  }

  body { overflow-x: hidden; }

  .bloco-painel { order: 1; }
  .bloco-nota { order: 2; }
  .bloco-direcao { order: 3; }
  .bloco-proxima { order: 4; }
  .bloco-calendario { order: 5; }
  .bloco-cadastro { order: 3; }
  .bloco-historico-candidato { order: 4; }
  .bloco-plataforma-candidato { order: 5; }
  .bloco-fase { order: 6; }
  .bloco-diagnostico { order: 7; }
  .bloco-marca { order: 8; }
  .bloco-evolucao { order: 9; }
  .bloco-propostas-comunicacao { order:3; }
  .bloco-plano { order:4; }
  .bloco-desempenho-conteudo { order:5; }
  .bloco-digital { order:6; }
  .bloco-linha-conteudo { order:7; }
  .bloco-midia-paga { order:8; }
  .bloco-inteligencia, .bloco-concorrentes, .bloco-consultor { order:3; }
  .bloco-biblioteca { order:4; }
  .bloco-relatorio { order:5; }

  h2 {
    font-size: 22px;
    margin-bottom: 14px;
  }

  .area-reflexao h2 {
    font-size: 26px;
  }

  .formulario,
  .pesquisa-form,
  .concorrente-form,
  .admin-form {
    grid-template-columns: 1fr;
  }

  .painel-cabecalho { display: grid; }
  .meta-eleitoral-form,
  .indicadores-comando,
  .referencia-eleitoral,
  .cenarios-projecao,
  .historico-candidato-grid,
  .form-desempenho-conteudo { grid-template-columns: 1fr; }
  .form-meta-ads,.metricas-meta-ads { grid-template-columns:1fr; }
  .form-meta-ads .campo-token-meta,.form-meta-ads .status-campo,.metricas-meta-ads .metrica-resultado-meta { grid-column:auto; }
  .cabecalho-meta-ads,.cabecalho-campanhas-meta { display:grid; }
  .cabecalho-campanhas-meta > small { text-align:left; }
  .leitura-executiva { grid-template-columns:1fr; }
  .form-forca-central { grid-template-columns:1fr; }
  .quadro-forcas-checklist { grid-template-columns:1fr; }
  .form-forca-central .botao,.form-forca-central .status-campo { grid-column:auto; }
  .editar-forca-central { grid-template-columns:1fr; }
  .referencia-eleitoral p { grid-column: auto; }
  .legenda-progresso { display: grid; }

  .fontes-inteligencia,
  .metricas-municipio,
  .comparacao-fases { grid-template-columns: 1fr; }

  input,
  select,
  textarea {
    width:100%;
    max-width:100%;
    min-width:0;
    min-height:46px;
    font-size: 16px;
    border-radius: 13px;
  }

  .fases-opcoes {
    grid-template-columns: 1fr;
  }

  .fase-opcao {
    min-height: 48px;
  }

  .trilha-conteudo {
    grid-template-columns: 1fr;
    gap: 18px;
    padding: 0 0 0 24px;
  }

  .canal-etapa { grid-template-columns:1fr; }

  .trilha-conteudo::before {
    top: 8px;
    bottom: 8px;
    left: 7px;
    width: 3px;
    height: auto;
    background: linear-gradient(180deg, #2d6b57 0 25%, #56856a 25% 50%, #d3a44f 50% 75%, #a83b35 75% 100%);
  }

  .trilha-etapa::before {
    top: 20px;
    left: -18px;
  }

  .item-nota,
  .compacta .item-nota {
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 12px 0;
  }

  .item-nota input[type="range"] {
    width: 100%;
  }

  .item-nota span {
    justify-self: end;
    margin-top: -34px;
    background: #fffaf0;
    padding-left: 8px;
    font-weight: 800;
  }

  .destaque-nota strong {
    font-size: 62px;
  }


  .acoes-cadastro-candidato { width:100%; justify-content:space-between; }
  .cabecalho-cartao,
  .candidato-admin,
  .concorrente {
    flex-direction: column;
    align-items: stretch;
  }

  .botao,
  .upload-pdf {
    width: 100%;
    min-height:44px;
    justify-content: center;
    text-align: center;
  }

  summary { overflow-wrap:anywhere; }
  .painel-cabecalho .pill { width:100%; text-align:center; }
  .acoes-plataforma { display:grid; grid-template-columns:1fr; }
  .acoes-plataforma .botao { width:100%; }
  .lista-desempenho-conteudo > div { display:grid; gap:7px; align-items:start; }
  .lista-desempenho-conteudo b { justify-self:start; text-align:left; }
  .proposta-comunicacao-item > summary,
  .item-plataforma > summary,
  .forcas-por-municipio > details > summary { min-height:54px; }

  .acoes-consultor,
  .acoes-pesquisa,
  .acoes-relatorio,
  .acoes-admin {
    display: grid;
    grid-template-columns: 1fr;
  }

  .resposta-consultor {
    max-height: none;
  }

  .marco {
    grid-template-columns: 1fr;
  }

  .acordeao summary,
  .subacordeao summary {
    font-size: 19px;
    min-height: 54px;
  }

  .relatorio {
    min-height: 140px;
  }
}

@media (max-width: 480px) {
  .topo { padding: 22px 14px 18px; }
  .topo h1 { font-size: 30px; line-height: 1.05; }
  .grade { gap: 12px; padding: 12px 10px 32px; }
  .admin-geral { padding-inline: 10px; }
  .cartao { padding: 14px; border-radius: 18px; }
  body.modo-admin .admin-geral { padding:12px 10px; }
  body.modo-admin .admin-card { padding:16px; }
  .menu-mobile { padding-inline: 10px; }
  .menu-mobile a { padding: 8px 11px; font-size: 12px; }
  .municipio-cabecalho { flex-direction: column; gap: 2px; }
  .municipio-cabecalho > span { align-self: flex-start; margin-bottom: 8px; }
  .detalhe-municipio { padding: 12px; }
  .ranking-territorial li { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 8px; }
  .ranking-territorial span { min-width: 0; overflow-wrap: anywhere; }
  .ranking-territorial b { font-size: 12px; }
  .concorrente summary { padding: 11px; }
  .concorrente-conteudo { padding: 0 11px 11px; }
  .linha-conteudo-intro { margin-bottom: 18px; }
  .cabecalho-evolucao { display: grid; }
  .status-sincronizacao { justify-self: start; white-space: normal; }
  .form-apoio,.editar-apoio { grid-template-columns:1fr; }
  .fluxo-sustentacao { align-items:stretch; flex-direction:column; overflow:visible; }
  .fluxo-sustentacao b { transform:rotate(90deg); align-self:center; }
  .norte-comunicacao { grid-template-columns:1fr; }
  .norte-comunicacao p { grid-column:auto; }
  .conteudo-gestao { grid-template-columns:1fr; }
  .conteudo-gestao select { width:100%; }
  .historico-candidato-grid > div,
  .cenarios-projecao > div,
  .referencia-eleitoral > div,
  .leitura-executiva > div { padding:10px; }
  .plataforma-descricao { padding:0 10px 10px; }
  .item-plataforma > summary { padding:11px 10px; }
}

/* Controles F5M por clique: evitam alteração acidental em telas de toque. */
.opcoes-nota { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:5px; width:100%; min-width:0; }
.opcoes-nota button { min-width:0; min-height:38px; padding:6px 2px; border:1px solid var(--linha); border-radius:9px; background:#fff; color:var(--muted); font-weight:800; cursor:pointer; touch-action:manipulation; }
.opcoes-nota button.ativo { border-color:var(--dourado); background:var(--verde); color:#fff; box-shadow:0 0 0 2px rgba(206,148,38,.18); }
.quadro-forcas-checklist.municipal label { grid-template-columns:minmax(120px,1fr) minmax(120px,150px); }
.quadro-forcas-checklist.municipal select { width:100%; padding:7px 8px; font-size:13px; }
.gestao-municipio-f5m { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:12px 14px; padding:12px; border:1px solid rgba(206,148,38,.4); border-radius:14px; background:#fbf5e7; }
.gestao-municipio-f5m label { display:grid; gap:5px; color:var(--verde); font-size:13px; font-weight:800; }
.acoes-gestao-municipio { grid-column:1 / -1; display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:4px; }
.acoes-gestao-municipio .status-campo { flex:1 1 240px; }
.gestao-municipio-f5m select,.gestao-municipio-f5m input[type="number"] { width:100%; padding:8px 9px; }
.gestao-municipio-f5m .prioridade-municipio { display:flex; align-items:center; gap:8px; }
.gestao-municipio-f5m .prioridade-municipio input { width:20px; height:20px; accent-color:var(--dourado); }
.gestao-municipio-f5m > small { grid-column:1 / -1; color:var(--muted); font-size:12px; font-weight:800; }
.gestao-municipio-f5m .nota-porte-eleitoral { justify-self:end; max-width:440px; margin:-2px 0 0; text-align:right; font-size:12px; font-weight:700; line-height:1.35; opacity:.78; }
@media (max-width:760px) {
  .opcoes-nota { grid-template-columns:repeat(6,1fr); }
  .opcoes-nota button { min-height:44px; }
  .gestao-municipio-f5m { grid-template-columns:1fr; margin:10px; }
  .gestao-municipio-f5m > small { grid-column:auto; }
  .quadro-forcas-checklist.municipal label { grid-template-columns:1fr; }
}
.configuracao-territorio { margin:14px 0; border:1px solid var(--linha); border-radius:16px; background:#faf7ef; overflow:hidden; }
.configuracao-territorio > summary { padding:13px 14px; cursor:pointer; font-weight:800; color:var(--verde); }
.configuracao-territorio > summary span { display:grid; }
.configuracao-territorio-conteudo { display:grid; gap:12px; padding:0 14px 14px; }
.resumo-configuracao-territorio { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.resumo-configuracao-territorio > div { padding:10px; border-radius:12px; background:#fff; }
.resumo-configuracao-territorio small,.resumo-configuracao-territorio strong { display:block; }
.resumo-configuracao-territorio small { color:var(--muted); font-size:12px; text-transform:uppercase; font-weight:800; }
.seletor-municipios-territorio { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; max-height:200px; overflow:auto; padding:8px; border:1px solid var(--linha); border-radius:12px; background:#fff; }
.seletor-municipios-territorio label { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:3px 7px; padding:7px; border-radius:9px; font-size:13px; cursor:pointer; }
.seletor-municipios-territorio label:hover { background:#f4efe3; }
.seletor-municipios-territorio input { grid-row:1 / 3; width:18px; height:18px; accent-color:var(--verde); }
.seletor-municipios-territorio small { color:var(--muted); font-size:12px; }
.acoes-configuracao-territorio { display:flex; flex-wrap:wrap; gap:8px; }
@media(max-width:760px){.resumo-configuracao-territorio,.seletor-municipios-territorio{grid-template-columns:1fr}.seletor-municipios-territorio{max-height:220px}.acoes-configuracao-territorio{display:grid}.acoes-configuracao-territorio .botao{width:100%}}
@media (max-width: 760px) { .historico-cadastro-compacto summary { grid-template-columns: 1fr auto; } .historico-cadastro-grid { grid-template-columns: 1fr; } }

@media (max-width: 900px) { .resumo-indices-painel { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width: 600px) { .resumo-indices-painel { grid-template-columns:1fr; } }

/* Tipografia ampliada dos dados estratégicos e textos de consulta */
.referencia-eleitoral small { font-size:13px; }
.referencia-eleitoral .referencia-territorio span { font-size:12px; }
.referencia-eleitoral p { font-size:12px; }
.cenarios-projecao small { font-size:13px; line-height:1.3; }
.cenarios-projecao strong { font-size:17px; }
.cenarios-projecao span { font-size:13px; line-height:1.4; }
.indice-estrategico-resumo small { font-size:13px; }
.indice-estrategico-resumo span { font-size:13px; line-height:1.45; }
.conteudo-gestao.estrategico strong { font-size:16px; line-height:1.3; }
.conteudo-gestao.estrategico p { font-size:13px; line-height:1.5; }
.linha-editorial-fase strong { font-size:17px; }
.pesquisa-historico-conteudo { display:grid; gap:16px; padding:0 16px 16px; border-top:1px solid var(--linha); }
.pesquisa-historico-conteudo > section { min-width:0; padding-top:15px; }
.pesquisa-historico-conteudo > section + section { border-top:1px solid var(--linha); }
.pesquisa-historico-conteudo h3 { margin:0 0 8px; color:var(--verde); font-size:17px; }
.pesquisa-historico-unificado .conteudo-pesquisa-candidato,
.pesquisa-historico-unificado .historico-cadastro-conteudo { padding:0; border:0; }
.pesquisa-historico-unificado .conteudo-pesquisa-candidato > .texto-apoio,
.pesquisa-historico-unificado .historico-cadastro-conteudo > .texto-apoio:first-child { display:none; }
.resultado-pesquisa-bloco { margin-top:10px; padding:12px; border:1px solid var(--linha); border-radius:12px; background:#fff; }
.resultado-pesquisa-bloco > strong { display:block; color:var(--verde); font-size:14px; }
.resultado-pesquisa-bloco p { margin:6px 0; font-size:13px; line-height:1.45; }
.resultado-pesquisa-bloco small { color:var(--muted); font-size:13px; line-height:1.4; }
.resultado-bandeiras { border-left:4px solid var(--dourado); }
.rodape-cadastro-candidato { grid-column:1 / -1; display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:10px; padding-top:18px; border-top:1px solid var(--linha); }
.rodape-cadastro-candidato p { margin:0; color:var(--muted); font-size:13px; line-height:1.4; }
.rodape-cadastro-candidato .botao { flex:0 0 auto; min-width:190px; }
@media(max-width:600px){.rodape-cadastro-candidato{align-items:stretch;flex-direction:column}.rodape-cadastro-candidato .botao{width:100%}}
.resultado-pesquisa-concorrente { grid-column: 1 / -1; padding: 12px; border-radius: 14px; background: #fffaf0; border: 1px solid var(--linha); }
.resultado-pesquisa-concorrente.oculto { display: none; }

.pesquisa-rapida-municipio { grid-column: 1 / -1; padding: 15px; border: 1px solid #d7a23a; border-radius: 14px; background: #fff8e8; }
.pesquisa-rapida-municipio h4 { margin: 4px 0; }
.pesquisa-rapida-municipio p { margin: 4px 0 12px; }
.campos-pesquisa-rapida { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin-bottom: 10px; }
@media(max-width:700px){.campos-pesquisa-rapida{grid-template-columns:1fr;}}

.acoes-concorrente-resumo { display:flex; align-items:center; gap:10px; margin-left:auto; }
.acoes-concorrente-resumo .btn-excluir-concorrente { padding:9px 14px; min-height:auto; }


.acoes-salvar-bloco {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 18px;
}

.acoes-salvar-bloco .status-campo {
  margin: 0;
}

.identificacao-candidato { display:flex; align-items:center; gap:6px; padding:5px clamp(18px,5vw,64px); background:#fffaf0; border-bottom:1px solid var(--linha); color:var(--verde); font-size:12px; }
.identificacao-candidato small { color:var(--muted); font-size:13px; }
body.modo-admin .identificacao-candidato { display:none; }
