/* cnpj.ai — design system do site público (SSR): tokens --c-* claro/escuro */

:root{
  --c-surface:#FAFAF7; --c-surface-2:#F2F0E9; --c-surface-3:#E8E5DC;
  --c-ink:#0A1628; --c-ink-2:#2A3547; --c-ink-3:#5C6678;
  --c-line:#E2DFD5; --c-line-2:#D8D4C7;
  --c-accent:#10B981; --c-accent-ink:#065F46; --c-accent-soft:#D1FAE5;
  --c-warm:#F59E0B; --c-warm-soft:#FEF3C7;
  --c-danger:#DC2626; --c-danger-soft:#FEE2E2;
  --c-page:#EFECE6;
  --r-card:14px; --r-chip:8px;
  --shadow-1:0 1px 0 rgba(10,22,40,.04), 0 2px 6px rgba(10,22,40,.04);
  --shadow-2:0 1px 0 rgba(10,22,40,.04), 0 8px 24px rgba(10,22,40,.06);
  --sans:'Geist',system-ui,sans-serif;
  --mono:'Geist Mono',ui-monospace,Menlo,monospace;
  --serif:'Instrument Serif',Georgia,serif;
}
[data-theme="dark"]{
  --c-surface:#0B1220; --c-surface-2:#111B2D; --c-surface-3:#18243B;
  --c-ink:#F4F4EE; --c-ink-2:#C8CDD8; --c-ink-3:#8C95A6;
  --c-line:#1F2D44; --c-line-2:#2A3A56;
  --c-accent:#34D399; --c-accent-ink:#A7F3D0; --c-accent-soft:rgba(52,211,153,.15);
  --c-warm:#FBBF24; --c-warm-soft:rgba(251,191,36,.16);
  --c-danger:#F87171; --c-danger-soft:rgba(248,113,113,.16);
  --c-page:#0B1220;
  --shadow-1:0 1px 0 rgba(0,0,0,.4), 0 2px 6px rgba(0,0,0,.3);
  --shadow-2:0 1px 0 rgba(0,0,0,.4), 0 12px 32px rgba(0,0,0,.4);
}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em;}
.nums{font-variant-numeric:tabular-nums;}
.serif{font-family:var(--serif);font-weight:400;letter-spacing:-.01em;}

/* Tokens dark-theme legados (--bg/--surface/--line/--bone/--faint/--accent/
   --muted/--ativa/--baixada) removidos por completo na Fase 5 Task 3 — o site
   inteiro usa os tokens --c-* (claro/escuro). Nenhuma regra os referencia mais. */

*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--c-page); color:var(--c-ink); font-family:var(--sans);
  line-height:1.5; min-height:100vh; position:relative;
  -webkit-font-smoothing:antialiased;
}

a{color:inherit}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,
[tabindex]:focus-visible{outline:2px solid var(--c-accent);outline-offset:3px;}
.skip-link{position:fixed;left:16px;top:12px;z-index:1000;padding:10px 14px;border-radius:9px;
  background:var(--c-ink);color:var(--c-surface);font-weight:600;text-decoration:none;
  transform:translateY(-160%);transition:transform .15s ease;}
.skip-link:focus{transform:translateY(0);}
h1,h2,h3{font-weight:500; letter-spacing:-.01em; text-wrap:balance}
em{color:var(--c-accent); font-style:italic}
.muted{color:var(--c-ink-3)}

:focus-visible{outline:2px solid var(--c-accent); outline-offset:3px; border-radius:3px}

/* ---------- layout geral ---------- */
.kicker{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--c-ink-3);margin:0 0 10px;}
.secao{margin-top:40px}
.secao-titulo{font-size:19px; margin-bottom:14px}

/* ---------- hero (busca / erro) ---------- */
.busca-hero{display:flex; max-width:520px; margin:0 auto; gap:0}
.busca-hero input{
  flex:1; padding:15px 18px; border-radius:11px 0 0 11px; border:1px solid var(--c-line);
  border-right:0; background:var(--c-surface); color:var(--c-ink); font-family:var(--sans);
  font-size:15.5px; outline:none;
}
.busca-hero input::placeholder{color:var(--c-ink-3)}
.busca-hero input:focus{border-color:var(--c-accent)}
.busca-hero button{
  padding:15px 22px; border-radius:0 11px 11px 0; border:1px solid var(--c-ink);
  background:var(--c-ink); color:var(--c-surface); font-family:var(--mono); font-size:13.5px;
  font-weight:500; cursor:pointer; white-space:nowrap; transition:.2s;
}
.busca-hero button:hover{opacity:.88}
.busca-hero--compacta{margin:0 0 18px}

/* ---------- autocomplete (dropdown de sugestões) ---------- */
.autocomplete-dropdown{
  text-align:left;
  position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:50;
  max-height:70vh; overflow-y:auto;
  background:var(--c-surface); border:1px solid var(--c-line); border-radius:12px;
  box-shadow:var(--shadow-2);
}
.autocomplete-grupo{
  font-family:var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--c-ink-3); padding:10px 16px 6px;
}
.autocomplete-item{
  display:flex; flex-direction:column; gap:4px; padding:10px 16px; text-decoration:none;
  color:var(--c-ink); border-left:2px solid transparent; cursor:pointer;
}
.autocomplete-item:hover, .autocomplete-item.is-ativo{
  background:var(--c-surface-2); border-left-color:var(--c-accent);
}
.autocomplete-titulo{font-size:14px}
.autocomplete-meta{display:flex; gap:10px; align-items:center; flex-wrap:wrap; font-size:12px; color:var(--c-ink-3)}
.autocomplete-meta .mono{font-family:var(--mono)}
.sug-situacao--ativa{color:var(--c-accent-ink)}
.sug-situacao--baixa{color:var(--c-danger)}

/* ---------- busca: resultados ---------- */
.busca-header{margin-bottom:8px}
.resultado-legenda{color:var(--c-ink-3); font-size:13.5px}
.lista-cartoes{list-style:none; display:flex; flex-direction:column; gap:1px; background:var(--c-line); border:1px solid var(--c-line); border-radius:12px; overflow:hidden}
.item-empresa,.item-pessoa{
  background:var(--c-surface); padding:14px 18px; display:flex; align-items:center; gap:12px; flex-wrap:wrap;
}
/* razão social ocupa o espaço livre e empurra a meta (badge · CNPJ · cidade/UF)
   para a borda direita da linha — sem isso a linha fica amontoada à esquerda
   deixando a largura da lista vazia (handoff §2: meta distribuída na linha). */
.item-titulo{flex:1; min-width:0; font-size:15px; font-weight:500; text-decoration:none; color:var(--c-ink)}
.item-titulo:hover{color:var(--c-accent-ink); text-decoration:underline}
.item-meta{font-size:12.5px; color:var(--c-ink-3)}
.vazio{padding:40px 0; text-align:center}
.vazio-titulo{font-size:17px; margin-bottom:8px}
.vazio-dica{color:var(--c-ink-3); font-size:13.5px}

/* ---------- badges de situação ---------- */
.badge,.badge-divida{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;}
.badge-ponto{width:6px;height:6px;border-radius:999px;background:currentColor;}
.badge-ativa{color:var(--c-accent-ink);background:var(--c-accent-soft);}
.badge-baixa,.badge-inapta{color:var(--c-ink-3);background:var(--c-surface-3);}
.badge-susp{color:var(--c-warm);background:var(--c-warm-soft);}
.badge-neutra{color:var(--c-ink-3);background:var(--c-surface-3);}
.badge-divida{color:var(--c-danger);background:var(--c-danger-soft);text-transform:none;font-size:12.5px;}
.stat-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1px;background:var(--c-line);border:1px solid var(--c-line);border-radius:12px;overflow:hidden;}
.stat-cel{background:var(--c-surface);padding:16px 18px;display:flex;flex-direction:column;gap:2px;}
.stat-rotulo{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--c-ink-3);}
.stat-valor{font-size:20px;font-weight:600;}
.stat-valor.danger{color:var(--c-danger);}
.stat-sub{font-size:12px;color:var(--c-ink-3);}
.barra{display:block;height:7px;border-radius:999px;background:var(--c-surface-3);overflow:hidden;}
.barra-fill{display:block;height:100%;background:var(--c-accent);opacity:.85;transition:width .3s ease;}

/* ---------- dossiê (uf / municipio) ---------- */
.dossie-cabecalho{margin-bottom:32px}
.dossie-cabecalho h1{font-size:clamp(24px,3.6vw,34px)}
.cabecalho-meta{display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-top:14px}
.cnpj-grande{font-size:15px; color:var(--c-ink)}

/* ---------- perfil (sócio) — namespace neutro (o produto não usa "dossiê") ----------
   "Empresas vinculadas" mora num card de superfície branca, igual ao QSA da
   empresa (.fic-card): sem o card a tabela flutuava nua sobre o bege da página. */
.perfil-cabecalho{margin-bottom:24px}
.perfil-cabecalho h1{font-size:clamp(24px,3.6vw,34px)}
.perfil-card{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-card);box-shadow:var(--shadow-1);padding:28px;}
@media(max-width:560px){
  .perfil-card{padding:18px;}
}

/* .rede-container/.rede-vazio/.rede-nota são exclusivas do embed do grafo em
   empresa.html (#rede, Fase 2 Task 3): paleta clara --c-* porque moram dentro
   do .fic-card claro, não mais os tokens escuros legados (--bg/--faint). */
.rede-container{height:400px; min-height:220px; display:flex; align-items:center; justify-content:center; border-radius:12px; background:var(--c-surface-2); border:1px solid var(--c-line)}
.rede-vazio{color:var(--c-ink-3); font-size:13px; font-family:var(--mono)}
.rede-nota{font-family:var(--mono); font-size:11px; color:var(--c-ink-3); margin:8px 0 0}
.rede-legenda{display:flex; flex-wrap:wrap; gap:8px 16px; margin:12px 0 0; font-size:12px; color:var(--c-ink-3)}
.rede-legenda-item{display:inline-flex; align-items:center; gap:6px}
.rede-legenda-cor{width:10px; height:10px; border-radius:999px; flex-shrink:0}
.link-grafo{
  display:inline-block; margin-top:14px; font-family:var(--mono); font-size:12.5px;
  color:var(--c-accent); text-decoration:none; border-bottom:1px dotted var(--c-accent);
}
.link-grafo:hover{color:var(--c-ink)}

.lgpd-aviso{margin-top:32px; color:var(--c-ink-3); font-size:12px; text-align:center}

/* ---------- tabelas (QSA, sócio, listagem) ---------- */
/* selectors sem classe (table/thead th/tbody td/table a) são o tema escuro
   legado do dossiê original — nenhum <table> do site usa mais a tag pura
   (todos têm classe própria: .fic-tabela/.list-tabela/.mun-tabela/
   .tabela-ranking/.tabela-qsa), mas ficam aqui por segurança; .tabela-qsa
   abaixo tem especificidade de classe e vence essas regras de qualquer forma
   (mesma técnica de .mun-tabela/.list-tabela — ver notas nessas seções). */
table{width:100%; border-collapse:collapse; border:1px solid var(--c-line); border-radius:12px; overflow:hidden; background:var(--c-surface)}
thead th{
  text-align:left; font-family:var(--mono); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--c-ink-3); padding:12px 16px; border-bottom:1px solid var(--c-line); background:var(--c-surface-2);
}
tbody td{padding:12px 16px; border-bottom:1px solid var(--c-line); font-size:13.5px}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:var(--c-surface-2)}
table a{text-decoration:none; color:var(--c-ink)}
table a:hover{color:var(--c-accent)}

/* .tabela-qsa: exclusiva de socio.html ("Empresas vinculadas") — mesmo
   padrão visual de .fic-tabela (cabeçalho --c-surface-2, células com
   borda --c-line, sem grade própria). */
.tabela-qsa{width:100%;border-collapse:collapse;border:0;border-radius:0;background:transparent;overflow:visible;font-size:14px;}
.tabela-qsa thead tr{text-align:left;}
.tabela-qsa thead th{padding:0 16px 10px 0;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--c-ink-3);background:var(--c-surface-2);border-bottom:1px solid var(--c-line);}
.tabela-qsa tbody td{padding:13px 16px 13px 0;border-bottom:1px solid var(--c-line);color:var(--c-ink-2);}
.tabela-qsa tbody tr:last-child td{border-bottom:0;}
.tabela-qsa tbody tr:hover{background:var(--c-surface-2);}
.tabela-qsa a{color:var(--c-ink);font-weight:500;text-decoration:none;}
.tabela-qsa a:hover{text-decoration:underline;}

/* ---------- listagem /empresas ---------- */
.acao-csv{margin-bottom:16px}
.botao-csv{
  display:inline-block; font-family:var(--mono); font-size:13px; letter-spacing:.04em; text-decoration:none;
  color:var(--c-accent-ink); border:1px solid var(--c-accent); padding:10px 20px; border-radius:9px;
  transition:.2s;
}
.botao-csv:hover{background:var(--c-accent); color:var(--c-surface); transform:translateY(-1px)}

/* ---------- erro (404/503) ---------- */
.erro{text-align:center; max-width:560px; margin:48px auto}
.erro h1{font-size:clamp(24px,4vw,32px); margin-bottom:14px}
.erro .sub{font-size:15.5px; line-height:1.65; color:var(--c-ink-3); max-width:52ch; margin:0 auto 28px}
.erro .busca-hero{margin-top:26px}
.voltar{margin-top:20px; font-size:13.5px}
.voltar a{color:var(--c-ink-3); text-decoration:underline dotted; text-underline-offset:4px}
.voltar a:hover{color:var(--c-accent)}

/* ---------- responsivo: 900px — tabela .tabela-qsa vira cards ---------- */
@media (max-width:900px){
  table.tabela-qsa{border:0; background:transparent}
  table.tabela-qsa thead{display:none}
  table.tabela-qsa tbody{display:flex; flex-direction:column; gap:10px}
  table.tabela-qsa tr{
    display:block; border:1px solid var(--c-line); border-radius:10px; padding:6px 14px; background:var(--c-surface);
  }
  table.tabela-qsa td{
    display:flex; justify-content:space-between; align-items:center; gap:12px; text-align:right;
    padding:8px 0; border-bottom:1px solid var(--c-line);
  }
  table.tabela-qsa td:last-child{border-bottom:0}
  table.tabela-qsa td::before{
    content:attr(data-rotulo); font-family:var(--mono); font-size:9.5px; text-transform:uppercase;
    letter-spacing:.08em; color:var(--c-ink-3); text-align:left; flex-shrink:0;
  }
}

/* ---- hubs regionais (perfil) ---- */
.numeros-grandes { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 1px; margin: 1.5rem 0; background: var(--c-line); border: 1px solid var(--c-line);
  border-radius: var(--r-card); overflow: hidden; }
.numero { display: flex; flex-direction: column; gap: .15rem; padding: .9rem 1rem;
  background: var(--c-surface); }
.numero-valor { font-family: var(--mono); font-size: 1.35rem; font-weight: 600; }
.numero-rotulo { font-size: .78rem; opacity: .7; }
.secao-sub { font-size: .75rem; font-weight: 400; opacity: .6; margin-left: .5rem; }
.grafico-barras, .grafico-sparkline { width: 100%; height: auto; display: block; margin-top: .75rem; }
.grafico-barras rect { fill: var(--c-accent); opacity: .85; }
.grafico-barras text { fill: currentColor; opacity: .55; font-size: 11px;
  font-family: var(--mono); }
.grafico-sparkline polyline { stroke: var(--c-accent); stroke-width: 2; }
.barras-cnae { list-style: none; padding: 0; margin: .75rem 0 0; display: flex;
  flex-direction: column; gap: .45rem; }
.barras-cnae li { display: grid; grid-template-columns: minmax(180px, 38%) 1fr auto;
  gap: .6rem; align-items: center; font-size: .9rem; }
.barras-cnae .barra-n { font-size: .8rem; opacity: .75; }
.familias-natureza { display: flex; flex-direction: column; gap: .5rem; margin-top: .75rem; }
.familia summary { cursor: pointer; display: flex; justify-content: space-between; padding: .5rem 0; }
.familia ul { list-style: none; margin: 0 0 .5rem; padding: 0 0 0 1rem; display: flex;
  flex-direction: column; gap: .3rem; font-size: .9rem; }
.familia li { display: flex; justify-content: space-between; gap: 1rem; }
.tabela-ranking { width: 100%; border-collapse: collapse; margin-top: .75rem; font-size: .92rem;
  border: 1px solid var(--c-line); border-radius: 12px; overflow: hidden; background: var(--c-surface); }
.tabela-ranking th, .tabela-ranking td { text-align: left; padding: .45rem .6rem;
  border-bottom: 1px solid var(--c-line); color: var(--c-ink); }
.tabela-ranking thead th { font-family: var(--mono); font-size: 10.5px; letter-spacing: .1em;
  text-transform: uppercase; color: var(--c-ink-3); background: var(--c-surface-2); }
.tabela-ranking tbody tr:hover { background: var(--c-surface-2); }
.tabela-ranking a { color: var(--c-ink); text-decoration: none; }
.tabela-ranking a:hover { color: var(--c-accent); }
.lista-municipios { list-style: none; padding: 0; margin: .75rem 0 0;
  columns: 3 220px; column-gap: 2rem; }
.lista-municipios li { display: flex; justify-content: space-between; gap: .8rem;
  padding: .18rem 0; break-inside: avoid; font-size: .9rem; }
.metodologia { margin-top: 2rem; font-size: .78rem; opacity: .6; }
@media (max-width: 640px) {
  /* mantém a barra de magnitude: rótulo+número na 1ª linha, barra em largura
     total na 2ª (padrão do protótipo mobile), em vez de escondê-la. */
  .barras-cnae li { grid-template-columns: 1fr auto;
    grid-template-areas: "rotulo numero" "barra barra"; row-gap: .4rem; }
  .barras-cnae li > a { grid-area: rotulo; }
  .barras-cnae li > .barra-n { grid-area: numero; }
  .barras-cnae li > .barra { grid-area: barra; }
}

/* .tabela-ranking (maiores por capital / top PGFN) vira cartões no mobile —
   as colunas de texto longo (razão social + CNAE) estouravam o viewport a 390px.
   Mesma técnica data-rotulo de .tabela-qsa. */
@media (max-width: 760px) {
  .tabela-ranking { border: 0; background: transparent; border-radius: 0; overflow: visible; }
  .tabela-ranking thead { display: none; }
  .tabela-ranking, .tabela-ranking tbody { display: block; }
  .tabela-ranking tbody { display: flex; flex-direction: column; gap: 10px; }
  .tabela-ranking tr { display: block; border: 1px solid var(--c-line); border-radius: 10px;
    padding: 6px 14px; background: var(--c-surface); }
  .tabela-ranking td { display: flex; justify-content: space-between; align-items: baseline;
    gap: 14px; text-align: right; padding: 8px 0; border-bottom: 1px solid var(--c-line); }
  .tabela-ranking tr td:last-child { border-bottom: 0; }
  .tabela-ranking td::before { content: attr(data-rotulo); font-family: var(--mono);
    font-size: 9.5px; text-transform: uppercase; letter-spacing: .08em; color: var(--c-ink-3);
    text-align: left; flex-shrink: 0; }
}

/* ---- gráfico interativo dos hubs (Chart.js, tema claro/esmeralda) ---- */
.grafico-container { position: relative; height: 280px; margin-top: .75rem; }
.visao-botoes { display: inline-flex; margin-top: .9rem; border: 1px solid var(--c-line);
  border-radius: 8px; overflow: hidden; background: var(--c-surface); }
.visao-botao { font-family: var(--mono); font-size: .74rem;
  letter-spacing: .08em; text-transform: uppercase; padding: .5rem 1.15rem;
  border: 0; background: transparent; color: var(--c-ink-3);
  cursor: pointer; transition: color .15s ease, background-color .15s ease; }
.visao-botao + .visao-botao { border-left: 1px solid var(--c-line); }
.visao-botao:hover { color: var(--c-accent); }
.visao-botao:focus-visible { outline: 2px solid var(--c-accent); outline-offset: -2px; }
.visao-botao.ativo { background: var(--c-ink); color: var(--c-surface); font-weight: 600; }
@media (max-width: 640px) {
  .grafico-container { height: 220px; }
  .visao-botao { padding: .45rem .85rem; }
}

/* ---------- dívida ativa (PGFN) ---------- */
.pgfn-frase{margin:.25rem 0 .75rem}

/* ---------- Fundação (Task 3): chrome global — nav, rodapé, tema ----------
   Deliberadamente no fim do arquivo (não logo após os tokens): `body`
   ainda existe no bloco "legado" acima com o mesmo seletor. Em empate
   de especificidade, quem vem depois no arquivo vence a cascata —
   então este bloco precisa vir por último para o chrome novo (claro)
   realmente substituir o antigo (escuro). As demais classes de chrome
   antigo (.topo, .frame, .carimbo etc.) foram removidas do bloco
   legado — não há mais sombreamento a evitar para elas. */
html{overflow-x:hidden;}
body{font-feature-settings:'ss01','ss02','cv11';}
.nav{position:sticky;top:0;z-index:5;background:var(--c-surface);border-bottom:1px solid var(--c-line);}
.nav a{text-decoration:none;}
.nav-inner{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:24px;padding:14px 24px;}
.marca{display:inline-flex;align-items:center;gap:9px;color:var(--c-ink);font-weight:600;}
.marca-txt{font-size:17px;font-weight:600;letter-spacing:-.02em;}
.marca-ai{color:var(--c-accent);}
.nav-menu{display:flex;gap:2px;}
.nav-menu a{padding:8px 12px;border-radius:8px;font-size:14px;font-weight:500;color:var(--c-ink-2);}
.nav-menu a[aria-current]{color:var(--c-ink);font-weight:600;}
.nav-busca{flex:1;position:relative;}
.nav-busca-lupa{position:absolute;left:11px;top:50%;transform:translateY(-50%);display:inline-flex;color:var(--c-ink-3);pointer-events:none;}
.nav-busca input{width:100%;max-width:320px;height:36px;padding:0 12px 0 34px;border:1px solid var(--c-line-2);border-radius:10px;background:var(--c-surface);color:var(--c-ink);font:inherit;}
.nav-acoes{display:flex;align-items:center;gap:10px;}
.pill-carga{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--c-ink-3);white-space:nowrap;}
.pill-carga .ponto{width:6px;height:6px;border-radius:999px;background:var(--c-accent);}
.btn-grafo{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:10px;background:var(--c-ink);color:var(--c-surface);font-weight:600;font-size:13px;white-space:nowrap;}
.btn-tema{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--c-line-2);border-radius:10px;background:var(--c-surface);color:var(--c-ink-2);flex:none;}
.btn-tema .i-lua{display:none;}
[data-theme="dark"] .btn-tema .i-sol{display:none;}
[data-theme="dark"] .btn-tema .i-lua{display:inline;}
.nav-menu-toggle{display:none;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--c-line-2);border-radius:10px;background:var(--c-surface);color:var(--c-ink-2);flex:none;cursor:pointer;}
.nav-drawer{display:none;}
.nav-drawer-busca{position:relative;}
.nav-drawer-busca input{width:100%;height:42px;padding:0 12px 0 36px;border:1px solid var(--c-line-2);border-radius:10px;background:var(--c-surface);color:var(--c-ink);font:inherit;}
.nav-drawer-menu{display:flex;flex-direction:column;gap:2px;margin-top:12px;}
.nav-drawer-menu a{padding:12px;border-radius:10px;font-size:15px;font-weight:500;color:var(--c-ink-2);}
.nav-drawer-menu a[aria-current]{color:var(--c-ink);font-weight:600;background:var(--c-surface-2);}
.nav-drawer-grafo{display:inline-flex;align-items:center;gap:6px;margin-top:8px;color:var(--c-ink);font-weight:600;}
.conteudo{max-width:1180px;margin:0 auto;padding:40px 24px 64px;}
.rodape{background:var(--c-surface);border-top:1px solid var(--c-line);margin-top:64px;}
.rodape-inner{max-width:1180px;margin:0 auto;padding:48px 24px 24px;display:grid;grid-template-columns:1.5fr repeat(2,1fr);gap:32px;}
.rodape-marca p{font-size:14px;color:var(--c-ink-3);max-width:300px;}
.rodape-cols{display:contents;}
.rodape-cols h4{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--c-ink-3);margin:0 0 12px;}
.rodape-cols a{display:block;font-size:14px;color:var(--c-ink-2);margin-bottom:8px;}
.rodape-base{max-width:1180px;margin:0 auto;padding:20px 24px;border-top:1px solid var(--c-line);font-size:13px;color:var(--c-ink-3);}
@media(max-width:760px){
  .nav-menu,.nav-busca,.pill-carga,.btn-grafo{display:none;}
  .nav-inner{gap:12px;}
  .nav-menu-toggle{display:inline-flex;width:44px;height:44px;}
  .btn-tema{width:44px;height:44px;}
  .nav-drawer:not([hidden]){display:block;padding:16px 24px 20px;border-top:1px solid var(--c-line);background:var(--c-surface);}
  .rodape-inner{grid-template-columns:1fr;}
}

/* Respeita a preferência de menos animação do usuário (spec §Responsividade). */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    transition-duration:.001ms!important;
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    scroll-behavior:auto!important;
  }
}

/* ---------- Fase 2 (Task 1): ficha da empresa — namespace `.fic-*` ----------
   Namespace novo e exclusivo de empresa.html: NÃO reusar/restilizar as classes
   legadas de ficha (.dossie, .campo, .cabecalho-meta, .cnpj-grande, .secao*,
   .tabela-qsa, .lista-cartoes, .item-*, .metodologia, .link-grafo), que
   continuam servindo socio/uf/municipio/busca sem alteração. Exceção: .rede-*
   (#rede/.rede-container/.rede-vazio/.rede-nota) é exclusiva de empresa.html
   e FOI restilizada na Task 3 pra paleta clara — ver bloco "dossiê" acima. */
.fic{display:flex;flex-direction:column;gap:20px;}
.fic-breadcrumb{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--c-ink-3);}
.fic-breadcrumb a{color:var(--c-ink-3);text-decoration:none;}
.fic-breadcrumb a:hover{color:var(--c-ink);}
.fic-breadcrumb .mono{color:var(--c-ink-2);}
.fic-acoes{margin-left:auto;display:flex;gap:8px;}
.fic-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:9px;border:1px solid var(--c-line-2);background:var(--c-surface);color:var(--c-ink);font-family:var(--sans);font-size:13px;font-weight:500;cursor:pointer;}
.fic-btn:hover{border-color:var(--c-ink-3);}
.fic-btn-dark{border:none;background:var(--c-ink);color:var(--c-surface);}
.fic-btn-dark:hover{opacity:.9;}

.fic-header{padding:2px 0 4px;}
.fic-razao{font-size:clamp(28px,4.2vw,42px);font-weight:500;letter-spacing:-.03em;line-height:1.08;margin:0 0 8px;}
.fic-fantasia{font-size:22px;font-style:italic;color:var(--c-ink-3);margin:0 0 16px;}
.fic-selos{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.fic-cnpj{font-size:16px;font-weight:500;color:var(--c-ink);}
.fic-meta{font-size:13px;color:var(--c-ink-3);}
.fic-motivo{margin-top:10px;font-size:13.5px;color:var(--c-ink-3);}

.fic-card{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-card);box-shadow:var(--shadow-1);padding:28px;}
.fic-dados{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-card);
  box-shadow:var(--shadow-1);overflow:hidden;}
.fic-dados>.fic-card{border:0;border-radius:0;box-shadow:none;}
.fic-dados>.fic-card:not(:last-child){border-bottom:1px solid var(--c-line);}
.fic-h2{display:flex;align-items:baseline;flex-wrap:wrap;font-size:19px;font-weight:500;letter-spacing:-.015em;margin:0 0 18px;}
.fic-sub{font-size:13px;font-weight:400;color:var(--c-ink-3);margin-left:10px;}

/* Sem grid "boxed": cada campo é uma célula transparente com hairline inferior
   (protótipo cnpj-dossie.jsx, componente Campo). Assim colunas sem campo ficam
   apenas em branco — nunca uma caixa colorida (célula fantasma). */
.fic-campos{display:grid;grid-template-columns:repeat(3,1fr);gap:0 32px;}
.fic-campo{padding:14px 0;border-bottom:1px solid var(--c-line);}
.fic-largo{grid-column:1/-1;}
.fic-rot{display:block;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--c-ink-3);margin-bottom:6px;}
.fic-val{display:block;font-size:15px;font-weight:500;color:var(--c-ink);line-height:1.45;}
.fic-val a{color:inherit;text-decoration:none;}
.fic-val a:hover{text-decoration:underline;}
.fic-lista{list-style:none;display:flex;flex-direction:column;gap:8px;margin-top:8px;font-size:14px;color:var(--c-ink-2);}
.fic-cnae-codigo{font-size:.9em;color:var(--c-ink-3);}

.fic-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px;}
.fic-chip{padding:6px 12px;border-radius:var(--r-chip);font-size:13px;font-weight:500;background:var(--c-surface-3);color:var(--c-ink-3);}
.fic-chip-on{background:var(--c-accent-soft);color:var(--c-accent-ink);}

.fic-tabela{width:100%;border-collapse:collapse;border:0;border-radius:0;background:transparent;overflow:visible;font-size:14px;}
.fic-tabela thead tr{text-align:left;}
.fic-tabela thead th{padding:0 16px 10px 0;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--c-ink-3);background:var(--c-surface-2);border-bottom:1px solid var(--c-line);}
.fic-tabela tbody td{padding:13px 16px 13px 0;border-bottom:1px solid var(--c-line);color:var(--c-ink-2);}
.fic-tabela tbody tr:last-child td{border-bottom:0;}
.fic-tabela tbody tr:hover{background:var(--c-surface-2);}
.fic-tabela a{color:var(--c-ink);font-weight:500;text-decoration:none;}
.fic-tabela a:hover{text-decoration:underline;}

.fic-tipo{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:600;letter-spacing:.02em;}
.fic-tipo-pj{background:var(--c-warm-soft);color:var(--c-warm);}
.fic-tipo-pf{background:var(--c-accent-soft);color:var(--c-accent-ink);}
.fic-tipo-ext{background:var(--c-surface-3);color:var(--c-ink-3);}

.fic-filiais{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.fic-filial{display:flex;align-items:center;gap:8px;padding:13px 16px;border-radius:10px;background:var(--c-surface-2);border:1px solid var(--c-line);text-decoration:none;color:inherit;font-size:13px;}
.fic-filial:hover{border-color:var(--c-line-2);}
.fic-filial-loc{margin-left:auto;font-size:12px;color:var(--c-ink-3);}

@media(max-width:900px){
  .fic-campos{grid-template-columns:1fr 1fr;}
  .fic-filiais{grid-template-columns:1fr 1fr;}
}
@media(max-width:560px){
  .fic-campos{grid-template-columns:1fr;}
  .fic-filiais{grid-template-columns:1fr;}
  .fic-acoes{margin-left:0;}
  /* densidade do protótipo no mobile: ~18px de padding de página e de card. */
  .conteudo{padding-left:18px;padding-right:18px;}
  .fic-card{padding:18px;}
  /* selo de dívida: só "dívida ativa" no mobile (spec §badge dívida-ativa). */
  .badge-divida-val{display:none;}
}

/* ---------- Fase 2 (Task 3): abas mobile + tabelas em cartão + print ---------- */
.fic-abas{display:none;}
@media(max-width:760px){
  .fic-dados{display:contents;}
  .fic-dados>.fic-card{border:1px solid var(--c-line);border-radius:var(--r-card);box-shadow:var(--shadow-1);}
  .fic-dados>.fic-card:not(:last-child){border-bottom:1px solid var(--c-line);}
  /* gruda logo abaixo do rodapé da nav mobile (14+14 + controles de 44px). */
  .fic-abas{display:flex;gap:2px;overflow-x:auto;position:sticky;top:72px;background:var(--c-surface);border-bottom:1px solid var(--c-line);z-index:4;}
  .fic-aba{min-height:44px;padding:11px 14px;border:0;border-bottom:2px solid transparent;
    background:transparent;color:var(--c-ink-3);font:inherit;font-size:14px;cursor:pointer;white-space:nowrap;}
  .fic-aba.is-ativa{color:var(--c-ink);border-bottom-color:var(--c-ink);font-weight:600;}
  .fic[data-aba-ativa] [data-aba]{display:none;}
  .fic[data-aba-ativa="geral"] [data-aba="geral"],
  .fic[data-aba-ativa="socios"] [data-aba="socios"],
  .fic[data-aba-ativa="cnae"] [data-aba="cnae"],
  .fic[data-aba-ativa="endereco"] [data-aba="endereco"],
  .fic[data-aba-ativa="divida"] [data-aba="divida"]{display:block;}

  /* tabelas .fic-tabela (QSA, inscrições PGFN) viram cartões, mesmo padrão de .tabela-qsa */
  .fic-tabela thead{display:none;}
  .fic-tabela tbody{display:flex;flex-direction:column;gap:10px;}
  .fic-tabela tr{display:block;border:1px solid var(--c-line);border-radius:10px;padding:6px 14px;background:var(--c-surface);}
  .fic-tabela td{display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:right;padding:8px 0;border-bottom:1px solid var(--c-line);}
  .fic-tabela td:last-child{border-bottom:0;}
  .fic-tabela td::before{
    content:attr(data-rotulo);font-family:var(--mono);font-size:9.5px;text-transform:uppercase;
    letter-spacing:.08em;color:var(--c-ink-3);text-align:left;flex-shrink:0;
  }

  /* PGFN: em vez do cartão de 6 campos, cada inscrição vira 2 linhas condensadas —
     receita + valor (à direita) na 1ª; origem · situação na 2ª (protótipo cnpj-mobile2). */
  .fic-insc tbody tr{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px;row-gap:2px;padding:12px 14px;}
  .fic-insc tbody td{display:inline;border:0;padding:0;text-align:left;}
  .fic-insc tbody td::before{display:none;}
  .fic-insc td[data-rotulo="Inscrição"],.fic-insc td[data-rotulo="Data"]{display:none;}
  .fic-insc td[data-rotulo="Receita"]{order:1;flex:1 1 auto;font-size:13.5px;font-weight:500;color:var(--c-ink);}
  .fic-insc td[data-rotulo="Valor"]{order:2;margin-left:auto;font-size:13px;font-weight:600;white-space:nowrap;}
  .fic-insc td[data-rotulo="Origem"]{order:3;font-size:11.5px;color:var(--c-ink-3);}
  .fic-insc td[data-rotulo="Origem"]::after{content:"·";margin-left:6px;color:var(--c-ink-3);}
  .fic-insc td[data-rotulo="Situação"]{order:4;flex:1 1 auto;font-size:11.5px;color:var(--c-ink-3);}
}
@media print{
  .nav,.rodape,.fic-breadcrumb .fic-acoes,.fic-abas,#rede,.rede-legenda,.link-grafo{display:none!important;}
  .fic-card{break-inside:avoid;}
}

/* ---------- Fase 2 (Task 2): seção PGFN — `.fic-pgfn*` / `.fic-insc*` ---------- */
/* .fic-h2-acao é item flex de .fic-h2 (não float): margin-left:auto o empurra pra
   direita sem sair do fluxo, então não sobrepõe o stat-strip logo abaixo. */
.fic-h2-acao{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:400;color:var(--c-ink-3);text-decoration:none;}
.fic-h2-acao:hover{color:var(--c-ink);}

.fic-origens{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px;}
.fic-origem{display:inline-flex;align-items:baseline;gap:8px;padding:7px 13px;border-radius:8px;background:var(--c-surface-2);border:1px solid var(--c-line);font-size:13px;color:var(--c-ink-2);font-weight:500;}
.fic-origem .mono{color:var(--c-ink);}

.fic-td-dir{text-align:right;}
.fic-insc-danger td[data-rotulo="Situação"],
.fic-insc-danger td.fic-td-dir{color:var(--c-danger);font-weight:600;}
.fic-ponto-danger{display:inline-block;width:6px;height:6px;border-radius:999px;background:var(--c-danger);margin-right:6px;vertical-align:middle;}

.fic-nota{font-size:13px;color:var(--c-ink-3);margin:14px 0 0;}
.fic-metodo{font-size:13px;font-style:italic;color:var(--c-ink-3);line-height:1.6;margin:18px 0 0;padding-top:16px;border-top:1px solid var(--c-line);}

/* ---------- Fase 3 (Task 2): mapa do Brasil (geo real, svg-maps CC-BY-4.0) ---------- */
.mapa{width:100%;height:auto;display:block;overflow:visible;}
.mapa-uf{stroke:var(--c-surface);stroke-width:0.7;stroke-linejoin:round;cursor:pointer;transition:filter .12s ease;}
.mapa-uf.is-hover{filter:brightness(1.06);}
.mapa-uf.is-sel{stroke:var(--c-ink);stroke-width:1.5;}
.mapa-uf:focus{outline:none;stroke:var(--c-ink);stroke-width:2;}

/* ---------- Fase 3 (Task 3): home nova — panorama nacional + mapa (paleta clara) ---------- */
.home-hero{text-align:center;max-width:820px;margin:24px auto 48px;}
.home-hero h1{font-size:clamp(34px,5.4vw,58px);line-height:1.06;letter-spacing:-.03em;margin:0 0 18px;font-weight:500;}
.home-hero h1 em{font-size:1.05em;}
.home-hero-sub{font-size:17px;line-height:1.5;color:var(--c-ink-3);max-width:560px;margin:0 auto 30px;}

.home-busca{display:flex;align-items:center;gap:8px;max-width:660px;margin:0 auto;padding:8px 8px 8px 22px;background:var(--c-surface);border:1px solid var(--c-line);border-radius:16px;box-shadow:var(--shadow-2);}
.home-busca svg{color:var(--c-ink-3);flex-shrink:0;}
.home-busca input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-family:inherit;font-size:17px;padding:14px 0;color:var(--c-ink);}
.home-busca input::placeholder{color:var(--c-ink-3);}
.home-busca button{display:inline-flex;align-items:center;gap:8px;height:48px;padding:0 22px;border:none;border-radius:11px;background:var(--c-ink);color:var(--c-surface);font-family:var(--sans);font-size:15px;font-weight:500;cursor:pointer;white-space:nowrap;transition:opacity .15s;}
.home-busca button:hover{opacity:.88;}

.home-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:18px;}
.home-chips span{font-size:13px;color:var(--c-ink-3);align-self:center;}
.home-chips a{padding:6px 13px;border-radius:999px;background:var(--c-surface-2);border:1px solid var(--c-line);color:var(--c-ink-2);font-size:13px;font-weight:500;text-decoration:none;transition:.15s;}
.home-chips a:hover{border-color:var(--c-accent);color:var(--c-ink);}

.home-numeros{margin-top:40px;}

.home-card{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-card);box-shadow:var(--shadow-1);padding:28px;}

.home-grafico{margin-top:48px;}
.home-grafico-card{padding:32px;}
.home-grafico-cabecalho{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px;margin-bottom:8px;}
.home-grafico-cabecalho h2{font-size:26px;font-weight:500;letter-spacing:-.02em;margin:6px 0 0;}
.home-grafico-recorde{text-align:right;}
.home-grafico-recorde-valor{display:block;font-size:28px;font-weight:600;letter-spacing:-.02em;color:var(--c-accent-ink);}
.home-grafico-recorde-rotulo{font-size:12.5px;color:var(--c-ink-3);}
.home-grafico-container{position:relative;height:300px;margin-top:18px;}
.home-grafico-rodape{text-align:right;margin-top:14px;}

.home-mapa{margin-top:56px;}
.home-mapa h2{font-size:26px;font-weight:500;letter-spacing:-.02em;margin:6px 0 26px;}
.home-mapa-grid{display:grid;grid-template-columns:minmax(280px,420px) 1fr;gap:40px;align-items:start;}
.home-mapa-svg{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-card);box-shadow:var(--shadow-1);padding:20px;}
.mapa-legenda{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:11px;color:var(--c-ink-3);}
.mapa-legenda-barra{flex:1;height:8px;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--c-accent) 14%,var(--c-surface-3)),var(--c-accent));}

.home-mapa-lado{display:flex;flex-direction:column;gap:20px;min-width:0;}
.home-mapa-readout{min-width:0;}
.home-mapa-readout-pos{font-size:13px;color:var(--c-ink-3);margin:0 0 6px;}
.home-mapa-readout-nome{font-size:clamp(30px,4.4vw,44px);font-weight:500;letter-spacing:-.03em;line-height:1.05;}
.home-mapa-readout-n{font-size:28px;font-weight:600;letter-spacing:-.02em;color:var(--c-accent-ink);margin-top:2px;}
.home-mapa-readout-rot{font-size:14px;color:var(--c-ink-3);margin:4px 0 16px;}
.home-mapa-readout-desc{font-size:14.5px;line-height:1.55;color:var(--c-ink-2);margin:0 0 18px;max-width:400px;}
.home-mapa-readout-cta{display:inline-flex;align-items:center;gap:7px;height:42px;padding:0 18px;border-radius:11px;background:var(--c-ink);color:var(--c-surface);font-size:14px;font-weight:500;text-decoration:none;transition:opacity .15s;}
.home-mapa-readout-cta:hover{opacity:.88;}

.home-mapa-ranking{list-style:none;display:flex;flex-direction:column;gap:1px;background:var(--c-line);border:1px solid var(--c-line);border-radius:12px;overflow:hidden;max-height:360px;overflow-y:auto;}
.home-mapa-ranking li{background:var(--c-surface);}
.home-mapa-ranking li.is-sel{background:var(--c-accent-soft);}
.home-mapa-ranking a{display:grid;grid-template-columns:22px minmax(100px,1fr) minmax(54px,90px) auto;
  align-items:center;gap:12px;padding:10px 16px;text-decoration:none;color:inherit;font-size:14px;}
.home-mapa-ranking a:hover{background:var(--c-surface-2);}
.home-mapa-ranking li.is-sel a:hover{background:transparent;}
.home-mapa-pos{width:22px;flex-shrink:0;color:var(--c-ink-3);}
.home-mapa-nome{font-weight:500;color:var(--c-ink-2);}
.home-mapa-barra{min-width:54px;}
.home-mapa-n{color:var(--c-ink);}

.home-atalhos{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:56px;}
.home-atalho{display:block;text-decoration:none;color:inherit;transition:.2s;}
.home-atalho:hover{border-color:var(--c-line-2);transform:translateY(-2px);}
.home-atalho-topo{display:flex;align-items:center;gap:10px;margin-bottom:18px;}
.home-atalho-icone{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;background:var(--c-surface-2);color:var(--c-accent);flex-shrink:0;}
.home-atalho h2{font-size:22px;font-weight:500;letter-spacing:-.02em;margin:0 0 8px;}
.home-atalho p{font-size:14.5px;line-height:1.55;color:var(--c-ink-3);margin:0 0 16px;max-width:420px;}
.home-atalho-cta{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:500;color:var(--c-accent-ink);}

.home-ufs{margin-top:56px;padding-top:40px;border-top:1px solid var(--c-line);}
.home-ufs h2{font-size:26px;font-weight:500;letter-spacing:-.02em;margin:6px 0 8px;}
.home-ufs-sub{font-size:14.5px;color:var(--c-ink-3);margin:0 0 24px;max-width:560px;}
.home-ufs-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:8px;}
.home-uf-tile{display:block;padding:16px 0;text-align:center;font-size:15px;font-weight:600;letter-spacing:.02em;color:var(--c-ink-2);background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-card);text-decoration:none;transition:.15s;}
.home-uf-tile:hover{border-color:var(--c-accent);color:var(--c-ink);transform:translateY(-1px);}

@media(max-width:900px){
  .home-atalhos{grid-template-columns:1fr;}
  .home-mapa-grid{grid-template-columns:1fr;}
  .home-ufs-grid{grid-template-columns:repeat(6,1fr);}
}
@media(max-width:560px){
  /* lupa + input na 1ª linha (input flex:1); só o botão quebra em largura total */
  .home-busca{flex-wrap:wrap;padding:10px 12px 10px 16px;}
  .home-busca input{padding:12px 0;}
  .home-busca button{flex:1 0 100%;justify-content:center;}
  .home-ufs-grid{grid-template-columns:repeat(4,1fr);}
  .home-grafico-card{padding:22px;}
  .home-grafico-container{height:240px;}
}

/* Estados — panorama nacional (/estados) */
.est-header{margin:28px 0 32px;}
.est-header h1{font-size:clamp(30px,4.4vw,46px);font-weight:500;letter-spacing:-.03em;margin:10px 0 0;}

.est-numeros{margin-bottom:40px;}

.est-grafico{margin-bottom:20px;}
.est-grafico-card{padding:32px;}
.est-grafico-cabecalho{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px;margin-bottom:8px;}
.est-grafico-cabecalho h2{font-size:26px;font-weight:500;letter-spacing:-.02em;margin:6px 0 0;}
.est-grafico-unidade{font-size:13px;font-weight:400;color:var(--c-ink-3);margin-left:8px;}
.est-grafico-cabecalho .visao-botoes{margin-top:0;}
.est-grafico-container{position:relative;height:380px;margin-top:18px;}

.est-mapa{margin-bottom:32px;}
.est-mapa-grid{display:grid;grid-template-columns:1fr minmax(320px,420px);gap:16px;align-items:start;}
.est-mapa-lado{display:flex;flex-direction:column;gap:16px;min-width:0;}
.est-readout{padding:24px;}
.est-mapa-svg h2,.est-ranking-card h2{font-size:20px;font-weight:500;letter-spacing:-.015em;margin:0 0 4px;}
.est-mapa-sub{font-size:13px;color:var(--c-ink-3);margin:0 0 20px;}
.est-ranking{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:520px;overflow-y:auto;}
.est-ranking li{border-radius:8px;}
.est-ranking li a{display:grid;grid-template-columns:22px 34px 1fr auto;gap:10px;align-items:center;padding:8px 10px;border-radius:8px;text-decoration:none;color:inherit;}
.est-ranking li a:hover{background:var(--c-surface-2);}
.est-ranking li.is-sel{background:var(--c-accent-soft);}
.est-ranking li.is-sel a:hover{background:transparent;}
.est-ranking-pos{font-size:12px;color:var(--c-ink-3);}
.est-ranking-uf{font-size:13px;font-weight:600;}
.est-ranking-n{font-size:12.5px;color:var(--c-ink-2);text-align:right;}

.est-vazio{padding:30px 0 40px;color:var(--c-ink-3);}
.est-fallback-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:8px;margin-top:20px;}

.est-nota{font-size:12.5px;color:var(--c-ink-3);line-height:1.55;margin:0 0 40px;}

@media(max-width:900px){
  .est-mapa-grid{grid-template-columns:1fr;}
  .est-fallback-grid{grid-template-columns:repeat(6,1fr);}
}
@media(max-width:560px){
  .est-grafico-card{padding:22px;}
  .est-grafico-container{height:260px;}
  .est-fallback-grid{grid-template-columns:repeat(4,1fr);}
}

/* ---------- Municípios (/municipios) ---------- */
.mun-header{margin:28px 0 32px;}
.mun-header h1{font-size:clamp(30px,4.4vw,46px);font-weight:500;letter-spacing:-.03em;margin:10px 0 0;}

.mun-numeros{margin-bottom:28px;}

.mun-busca{margin-bottom:28px;}
.mun-busca-caixa{display:flex;align-items:center;gap:8px;max-width:480px;padding:8px 8px 8px 16px;background:var(--c-surface);border:1px solid var(--c-line);border-radius:12px;box-shadow:var(--shadow-1);}
.mun-busca-caixa svg{color:var(--c-ink-3);flex-shrink:0;}
.mun-busca-caixa input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-family:inherit;font-size:14.5px;padding:8px 0;color:var(--c-ink);}
.mun-busca-caixa input::placeholder{color:var(--c-ink-3);}
.mun-busca-botao{flex-shrink:0;height:40px;padding:0 18px;border:none;border-radius:10px;background:var(--c-ink);color:var(--c-surface);font-family:inherit;font-size:14px;font-weight:500;cursor:pointer;}

.mun-ranking{margin-bottom:20px;}
.mun-ranking-card{padding:28px;}
.mun-ranking-card h2{font-size:20px;font-weight:500;letter-spacing:-.015em;margin:0;display:inline;}
.mun-ranking-cabecalho{display:flex;align-items:center;justify-content:space-between;gap:16px;}
.mun-ranking-sub{font-size:13px;color:var(--c-ink-3);font-weight:400;margin-left:8px;}
.mun-ranking-nota{font-size:13px;color:var(--c-ink-3);margin:4px 0 20px;}

/* selectors sem classe (table, thead th, tbody td, table a — site.css:182-191)
   pertencem ao tema escuro legado do dossiê e vazam pra qualquer <table> nova
   sem background/border próprios: overrides explícitos abaixo neutralizam isso. */
.mun-tabela{width:100%;border-collapse:collapse;font-size:14px;background:transparent;border:none;border-radius:0;overflow:visible;}
.mun-tabela th{padding:0 16px 12px 0;font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--c-ink-3);background:transparent;border-bottom:1px solid var(--c-line);text-align:left;}
.mun-tabela th.mun-col-num{text-align:right;}
.mun-tabela td{padding:12px 16px 12px 0;border-bottom:1px solid var(--c-line);color:var(--c-ink-2);font-size:14px;}
.mun-tabela tr:last-child td{border-bottom:none;}
.mun-tabela tbody tr:hover{background:var(--c-surface-2);}
.mun-pos{color:var(--c-ink-3);}
.mun-nome a{font-weight:500;color:var(--c-ink);text-decoration:none;}
.mun-nome a:hover{color:var(--c-accent-ink);text-decoration:underline;}
.mun-col-num{text-align:right;font-weight:500;color:var(--c-ink);}
.mun-col-abertos{color:var(--c-accent-ink);font-weight:500;}
.mun-col-barra{width:200px;}

.mun-sem-resultado{padding:20px 0 4px;color:var(--c-ink-3);font-size:14px;}
.mun-nota{font-size:12.5px;color:var(--c-ink-3);line-height:1.55;margin:0 0 40px;}
.mun-vazio{padding:30px 0 40px;color:var(--c-ink-3);}

/* mobile: a tabela de 6 colunas vira cartões (data-rotulo), sem scroll lateral */
@media(max-width:760px){
  .mun-ranking-card{padding:20px;}
  .mun-tabela thead{display:none;}
  .mun-tabela,.mun-tabela tbody{display:block;}
  .mun-tabela tbody{display:flex;flex-direction:column;gap:10px;}
  .mun-tabela tr{display:block;border:1px solid var(--c-line);border-radius:10px;padding:6px 14px;background:var(--c-surface);}
  .mun-tabela td{display:flex;justify-content:space-between;align-items:center;gap:14px;text-align:right;padding:9px 0;border-bottom:1px solid var(--c-line);font-size:13.5px;}
  .mun-tabela tr td:last-child{border-bottom:0;}
  .mun-tabela td::before{content:attr(data-rotulo);font-family:var(--mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--c-ink-3);text-align:left;flex-shrink:0;}
  .mun-tabela .mun-col-barra{width:auto;}
  .mun-tabela .mun-col-barra .barra{flex:1;max-width:180px;}
  .mun-ranking-cabecalho{align-items:flex-start;}
}

/* ---------- Fase 4 (Task 3): listagem /empresas — namespace `.list-*` ----------
   Mesmo motivo do .mun-tabela (linha 630 acima): os seletores sem classe
   table/thead th/tbody td/table a (linhas 182-191) pertencem ao tema escuro
   legado do dossiê e vazam pra qualquer <table> nova sem background/border
   próprios — overrides explícitos abaixo neutralizam isso pra .list-tabela. */
.list-cabecalho{margin:28px 0 24px;}
.list-cabecalho h1{font-size:clamp(30px,4.4vw,44px);font-weight:500;letter-spacing:-.03em;margin:8px 0 6px;}
.list-contagem{font-size:14.5px;color:var(--c-ink-3);margin:0;}
.list-contagem strong{color:var(--c-ink);font-weight:600;}

.list-filtros{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-card);box-shadow:var(--shadow-1);margin-bottom:16px;}
.list-filtros-resumo{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 24px;cursor:pointer;list-style:none;font-size:15px;font-weight:600;color:var(--c-ink);}
.list-filtros-resumo::-webkit-details-marker{display:none;}
.list-filtros-titulo{display:inline-flex;align-items:center;gap:9px;}
.list-filtros-badge{font-size:12px;font-weight:500;color:var(--c-accent-ink);background:var(--c-accent-soft);padding:2px 9px;border-radius:999px;}
.list-form{padding:0 24px 24px;}
.list-form-grade{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.list-campo{display:flex;flex-direction:column;gap:6px;min-width:0;}
.list-campo-grupo{border:0;padding:0;margin:0;}
.list-campo>label,.list-campo>legend{font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--c-ink-3);}
.list-campo>legend{padding:0;margin:0 0 6px;}
.list-campo select,.list-campo input{height:38px;padding:0 12px;border-radius:9px;border:1px solid var(--c-line-2);background:var(--c-surface);color:var(--c-ink);font-family:inherit;font-size:13.5px;width:100%;}
.list-campo select:focus,.list-campo input:focus{border-color:var(--c-accent);outline:none;}

/* range: dois inputs mono à direita com "até" no meio, numa só célula do grid */
.list-range{display:flex;align-items:center;gap:6px;}
.list-range input{flex:1;min-width:0;text-align:right;}
.list-range input[type=date],.list-range input[type=month]{text-align:left;}
.list-range-ate{flex-shrink:0;font-size:12px;color:var(--c-ink-3);}

/* tri-toggle: segmented control de 3 opções (todos/sim/não) sobre trilha surface-2 */
.list-tritoggle{display:flex;gap:3px;padding:3px;border-radius:9px;background:var(--c-surface-2);}
.list-tritoggle input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;}
.list-tritoggle label{flex:1;text-align:center;padding:7px 4px;border-radius:6px;font-size:12px;font-weight:500;color:var(--c-ink-3);cursor:pointer;user-select:none;}
.list-tritoggle input:checked + label{background:var(--c-surface);color:var(--c-ink);box-shadow:var(--shadow-1);}
.list-tritoggle input:focus-visible + label{outline:2px solid var(--c-accent);outline-offset:1px;}

.list-form-rodape{display:flex;align-items:center;gap:12px;margin-top:18px;}
.list-form-limpar{font-size:13px;color:var(--c-ink-3);text-decoration:underline;}
.list-form-limpar:hover{color:var(--c-ink);}
.list-form-limpar[hidden]{display:none;}
.list-form-botao{margin-left:auto;display:inline-flex;align-items:center;gap:7px;height:40px;padding:0 20px;border-radius:10px;border:none;background:var(--c-ink);color:var(--c-surface);font-size:14px;font-weight:500;cursor:pointer;}
.list-form-botao:hover{opacity:.9;}

.list-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px;}
.list-chips{display:flex;flex-wrap:wrap;gap:6px;}
.list-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;background:var(--c-ink);color:var(--c-surface);font-size:12px;font-weight:500;text-decoration:none;}
.list-chip:hover{opacity:.85;}
.list-toolbar-acoes{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.list-view-toggle{display:flex;gap:3px;padding:3px;border-radius:10px;background:var(--c-surface-2);}
.list-view-botao{padding:7px 13px;border-radius:7px;border:none;background:transparent;color:var(--c-ink-3);font-size:13px;font-weight:500;cursor:pointer;}
.list-view-botao.is-ativo{background:var(--c-surface);color:var(--c-ink);box-shadow:var(--shadow-1);}
.list-colunas{position:relative;}
.list-colunas-botao{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;border-radius:10px;border:1px solid var(--c-line-2);background:var(--c-surface);color:var(--c-ink);font-size:13px;font-weight:500;cursor:pointer;}
.list-colunas-painel{position:absolute;top:44px;right:0;z-index:20;width:250px;padding:8px;background:var(--c-surface);border:1px solid var(--c-line);border-radius:12px;box-shadow:var(--shadow-2);}
.list-colunas-painel[hidden]{display:none;}
.list-colunas-titulo{font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--c-ink-3);padding:6px 8px 8px;}
.list-colunas-lista{max-height:320px;overflow-y:auto;}
.list-colunas-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px;border-radius:8px;font-size:13.5px;cursor:pointer;}
.list-colunas-item:hover{background:var(--c-surface-2);}
.list-colunas-item input{width:15px;height:15px;accent-color:var(--c-ink);flex-shrink:0;}
.list-colunas-fixa{margin-left:auto;font-size:10px;color:var(--c-ink-3);}
.list-csv{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 15px;border-radius:10px;border:1px solid var(--c-line-2);background:var(--c-surface);color:var(--c-ink);font-size:13px;font-weight:600;text-decoration:none;}
.list-csv:hover{border-color:var(--c-ink-3);}

.list-aviso{margin-bottom:16px;padding:12px 16px;border-radius:10px;border:1px solid var(--c-warm);background:var(--c-warm-soft);color:var(--c-ink-2);font-size:13px;}
.list-aviso a{color:inherit;text-decoration:underline;}

.list-tabela-wrap{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-card);box-shadow:var(--shadow-1);overflow-x:auto;}
.list-tabela-wrap[hidden]{display:none;}
.list-tabela{width:100%;border-collapse:collapse;border:0;border-radius:0;background:transparent;overflow:visible;font-size:14px;}
.list-tabela thead tr{background:var(--c-surface-2);text-align:left;}
.list-tabela thead th{padding:13px 16px;font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--c-ink-3);background:var(--c-surface-2);border-bottom:1px solid var(--c-line);white-space:nowrap;}
.list-ordem-link{display:inline-flex;align-items:center;gap:4px;color:inherit;text-decoration:none;}
.list-ordem-link svg{opacity:.45;}
.list-ordem-link:hover,.list-ordem-link.is-ativa{color:var(--c-ink);}
.list-ordem-link:hover svg,.list-ordem-link.is-ativa svg{opacity:1;}
.list-tabela tbody td{padding:14px 16px;border-bottom:1px solid var(--c-line);color:var(--c-ink-2);white-space:nowrap;}
.list-tabela tbody td[data-col-chave="razao"]{white-space:normal;}
.list-tabela th[data-col-chave="capital"],.list-tabela td[data-col-chave="capital"],
.list-tabela th[data-col-chave="socios"],.list-tabela td[data-col-chave="socios"]{text-align:right;}
.list-cnae-cod{font-size:12px;color:var(--c-ink-3);margin-right:2px;}
.list-tabela tbody tr:last-child td{border-bottom:0;}
.list-tabela tbody tr:hover{background:var(--c-surface-2);}
.list-tabela a{color:var(--c-ink);font-weight:500;text-decoration:none;}
.list-tabela a:hover{text-decoration:underline;}
.list-vazio{text-align:center;color:var(--c-ink-3);padding:30px;}

.list-cartoes{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.list-cartoes[hidden]{display:none;}
.list-cartao{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-card);box-shadow:var(--shadow-1);padding:20px;}
.list-cartao-topo{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px;}
.list-cartao-cnpj{font-size:12px;color:var(--c-ink-3);}
.list-cartao-razao{display:block;font-size:16px;font-weight:500;letter-spacing:-.01em;color:var(--c-ink);text-decoration:none;}
.list-cartao-razao:hover{text-decoration:underline;}
.list-cartao-fantasia{font-size:14px;font-style:italic;color:var(--c-ink-3);margin:2px 0 14px;}
.list-cartao-grade{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;font-size:13px;}
.list-cartao-rot{display:block;font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--c-ink-3);}
.list-cartao-val{display:block;color:var(--c-ink-2);margin-top:2px;}
.list-cartao-rodape{margin-top:12px;padding-top:12px;border-top:1px solid var(--c-line);font-size:12.5px;color:var(--c-ink-3);}

.list-paginacao{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-top:24px;font-size:13px;}
.list-paginacao-info{color:var(--c-ink-3);}
.list-paginacao-nav{display:flex;gap:6px;flex-wrap:wrap;}
.list-paginacao-nav a,.list-pagina-atual{text-decoration:none;min-width:36px;height:36px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;border:1px solid var(--c-line);color:var(--c-ink-2);font-size:13px;font-weight:500;}
.list-paginacao-nav a:hover{border-color:var(--c-ink-3);color:var(--c-ink);}
.list-pagina-atual{background:var(--c-ink);color:var(--c-surface);border-color:var(--c-ink);}
.list-reticencias{color:var(--c-ink-3);padding:0 4px;}

@media(max-width:1080px){
  .list-form-grade{grid-template-columns:repeat(2,1fr);}
  .list-cartoes{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:760px){
  .list-form-grade{grid-template-columns:1fr;}
  .list-cartoes{grid-template-columns:1fr;}
  /* tabela vira cartões: neutraliza o wrapper (scroll/borda/sombra) e torna a
     tabela block, espelhando .mun-tabela/.tabela-ranking. Sem isto a tabela
     mantinha layout de tabela dentro de um box com overflow-x e não virava card. */
  .list-tabela-wrap{overflow-x:visible;border:0;border-radius:0;box-shadow:none;background:transparent;}
  .list-tabela{display:block;}
  .list-tabela thead{display:none;}
  .list-tabela tbody{display:flex;flex-direction:column;gap:10px;}
  .list-tabela tr{display:block;border:1px solid var(--c-line);border-radius:10px;padding:6px 14px;background:var(--c-surface);}
  .list-tabela td{display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:right;padding:8px 0;border-bottom:1px solid var(--c-line);white-space:normal;}
  .list-tabela td:last-child{border-bottom:0;}
  .list-tabela td::before{content:attr(data-rotulo);font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--c-ink-3);text-align:left;flex-shrink:0;}
}
