/* =====================================================================
   MODELO NOVO — casca leve (01/11/2026)
   Cores: as da modelo (verde #059669 / cinzas / âmbar / #3c3c3c).
   Estrutura: canvas branco, tipografia grande com tracking negativo,
   bordas finas de 1px, cantos 8px (cards) e 4px (botões, campos).
   Sem fontes externas: pilha de fontes do sistema.
   Prefixo nv- para conviver com o Bootstrap 3 das páginas de dados.
   ===================================================================== */

:root {
  --nv-verde: #059669;
  --nv-verde-escuro: #047857;
  --nv-verde-claro: #d1fae5;
  --nv-verde-fundo: #f0fdf4;
  --nv-verde-vivo: #10b981;
  --nv-ambar: #f59e0b;
  --nv-escuro: #3c3c3c;
  --nv-tinta: #111827;
  --nv-texto: #374151;
  --nv-suave: #6b7280;
  --nv-borda: #e5e7eb;
  --nv-borda-forte: #d1d5db;
  --nv-fundo: #ffffff;
  --nv-fundo-2: #f9fafb;
  --nv-fundo-3: #f3f4f6;
  --nv-rodape: #1f2937;
  --nv-foco: #f59e0b;

  --nv-fonte: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
  --nv-max: 1200px;
  --nv-r-card: 0;
  --nv-r-ctl: 0;
  --nv-sombra: 0 1px 2px rgba(17, 24, 39, .04), 0 8px 24px -12px rgba(17, 24, 39, .18);
  --nv-secao: 80px;
}

/* ---------------------------------------------------------------- base */
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 88px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { transition: none !important; animation: none !important; } }

body.nv-body { margin: 0; background: var(--nv-fundo); color: var(--nv-texto); font-family: var(--nv-fonte); font-size: 16px; line-height: 1.6; }
body.nv-leve *, body.nv-leve *::before, body.nv-leve *::after { box-sizing: border-box; }
.nv-casca, .nv-casca *, .nv-casca *::before, .nv-casca *::after { box-sizing: border-box; }
body.nv-leve img { max-width: 100%; height: auto; }
body.nv-leve h1, body.nv-leve h2, body.nv-leve h3, body.nv-leve h4 { color: var(--nv-tinta); line-height: 1.2; margin: 0 0 .5em; font-weight: 650; letter-spacing: -.01em; }
body.nv-leve a { color: var(--nv-verde-escuro); }
body.nv-leve a:hover { color: var(--nv-verde); }
body.nv-leve p { margin: 0 0 1em; }

.nv-i { width: 1.25em; height: 1.25em; flex: none; vertical-align: -.25em; }
.nv-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.nv-wrap { width: 100%; max-width: var(--nv-max); margin: 0 auto; padding: 0 24px; }
@media (max-width: 640px) { .nv-wrap { padding: 0 16px; } }

:focus-visible { outline: 3px solid var(--nv-foco) !important; outline-offset: 2px; }

/* ---------------------------------------------------------------- pular links (eMAG) */
.nv-pular { position: absolute; left: 8px; top: -100px; z-index: 1000; display: flex; gap: 8px; }
.nv-pular a { background: var(--nv-tinta); color: #fff !important; padding: 8px 12px; border-radius: var(--nv-r-ctl); font: 600 14px/1 var(--nv-fonte); text-decoration: none; }
.nv-pular:focus-within { top: 8px; }

/* ---------------------------------------------------------------- barra de acessibilidade (topo) */
.nv-a11y { background: var(--nv-escuro); color: #fff; font: 500 13px/1 var(--nv-fonte); }
.nv-a11y .nv-wrap { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 40px; flex-wrap: wrap; }
.nv-a11y ul { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.nv-a11y a, .nv-a11y button { display: inline-flex; align-items: center; gap: 6px; padding: 7px 9px; color: #fff !important; background: none; border: 0; border-radius: var(--nv-r-ctl); font: inherit; text-decoration: none; cursor: pointer; }
.nv-a11y a:hover, .nv-a11y button:hover, .nv-a11y button[aria-pressed="true"] { background: rgba(255, 255, 255, .14); }
.nv-a11y kbd { font: 600 11px/1 var(--nv-fonte); background: rgba(255, 255, 255, .16); border-radius: 0; padding: 2px 5px; }
.nv-a11y .nv-a11y-simbolo { background: var(--nv-verde); }
.nv-a11y .nv-a11y-simbolo:hover { background: var(--nv-verde-escuro); }
@media (max-width: 760px) { .nv-a11y .nv-atalhos { display: none; } .nv-a11y .nv-wrap { justify-content: flex-end; } .nv-a11y .nv-rot { display: none; } }

/* ---------------------------------------------------------------- cabeçalho */
.nv-header { position: sticky; top: 0; z-index: 900; background: rgba(255, 255, 255, .97); border-bottom: 1px solid var(--nv-borda); backdrop-filter: saturate(1.2) blur(6px); }
.nv-header .nv-wrap { display: flex; align-items: center; gap: 24px; min-height: 80px; padding-top: 8px; padding-bottom: 8px; }
.nv-marca { display: flex; align-items: center; gap: 12px; text-decoration: none !important; color: var(--nv-tinta) !important; min-width: 0; }
.nv-marca img, body.nv-leve .nv-marca img { width: auto; height: 60px; max-width: 200px; object-fit: contain; flex: none; }
@media (max-width: 640px) { .nv-marca img, body.nv-leve .nv-marca img { height: 44px; max-width: 120px; } }
.nv-rodape .nv-marca img, body.nv-leve .nv-rodape .nv-marca img { height: 52px; }
.nv-marca-txt { display: block; min-width: 0; }
.nv-marca strong { display: block; font: 650 17px/1.15 var(--nv-fonte); letter-spacing: -.01em; }
.nv-marca-txt > span { display: block; font: 500 12px/1.3 var(--nv-fonte); color: var(--nv-suave); text-transform: uppercase; letter-spacing: .08em; }
.nv-nav { margin-left: auto; }
.nv-nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 2px; }
.nv-nav a { display: block; padding: 10px 12px; color: var(--nv-tinta) !important; font: 500 15px/1 var(--nv-fonte); text-decoration: none !important; border-radius: var(--nv-r-ctl); }
.nv-nav a:hover { background: var(--nv-fundo-3); }
.nv-nav a[aria-current="page"] { color: var(--nv-verde-escuro) !important; box-shadow: inset 0 -2px 0 var(--nv-verde); border-radius: 0; }
.nv-acoes { display: flex; align-items: center; gap: 8px; }
.nv-btn-icone { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 40px; min-width: 40px; padding: 0 10px; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-ctl); background: #fff; color: var(--nv-tinta); font: 500 14px/1 var(--nv-fonte); cursor: pointer; }
.nv-btn-icone:hover { border-color: var(--nv-borda-forte); background: var(--nv-fundo-2); }
.nv-menu-btn { display: none; }
@media (max-width: 1080px) {
  .nv-menu-btn { display: inline-flex; }
  .nv-nav { position: fixed; inset: 0 0 0 auto; width: min(340px, 88vw); background: #fff; border-left: 1px solid var(--nv-borda); padding: 80px 16px 24px; transform: translateX(100%); transition: transform .2s ease; box-shadow: var(--nv-sombra); overflow-y: auto; }
  .nv-nav.is-aberto { transform: none; }
  .nv-nav ul { flex-direction: column; }
  .nv-nav a { padding: 14px 12px; font-size: 17px; }
  .nv-nav .nv-fechar { position: absolute; top: 16px; right: 16px; }
  .nv-acoes { margin-left: auto; }
}
@media (min-width: 1081px) { .nv-nav .nv-fechar { display: none; } }
@media (max-width: 480px) { .nv-marca-txt > span { display: none; } .nv-marca strong { font-size: 15px; } }

/* busca (1.4) */
.nv-busca-painel { border-top: 1px solid var(--nv-borda); background: #fff; }
.nv-busca-painel[hidden] { display: none; }
.nv-busca-painel .nv-wrap { padding-top: 16px; padding-bottom: 16px; }
.nv-busca { display: flex; gap: 8px; width: 100%; }
.nv-busca input, .nv-busca select { height: 48px; border: 1px solid var(--nv-borda-forte); border-radius: var(--nv-r-ctl); background: #fff; color: var(--nv-tinta); font: 400 16px/1 var(--nv-fonte); padding: 0 14px; min-width: 0; }
.nv-busca input { flex: 1 1 auto; }
.nv-busca select { flex: 0 0 220px; padding-right: 8px; }
.nv-busca input:focus, .nv-busca select:focus { border-color: var(--nv-verde); outline: 0; box-shadow: 0 0 0 3px var(--nv-verde-claro); }
@media (max-width: 640px) { .nv-busca { flex-wrap: wrap; } .nv-busca select { flex: 1 1 100%; order: 3; } }

/* botões */
.nv-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 12px 18px; border-radius: var(--nv-r-ctl); border: 1px solid transparent; font: 600 15px/1.1 var(--nv-fonte); text-decoration: none !important; cursor: pointer; white-space: nowrap; }
.nv-btn-primario { background: var(--nv-verde); color: #fff !important; }
.nv-btn-primario:hover { background: var(--nv-verde-escuro); }
.nv-btn-secundario { background: #fff; color: var(--nv-tinta) !important; border-color: var(--nv-borda-forte); }
.nv-btn-secundario:hover { background: var(--nv-fundo-2); }
.nv-btn-claro { background: #fff; color: var(--nv-verde-escuro) !important; }
.nv-btn-claro:hover { background: var(--nv-verde-fundo); }

/* ---------------------------------------------------------------- faixa da página: breadcrumb + atualização */
.nv-faixa { background: var(--nv-fundo-2); border-bottom: 1px solid var(--nv-borda); }
.nv-faixa .nv-wrap { display: flex; align-items: center; justify-content: space-between; gap: 8px 16px; flex-wrap: wrap; min-height: 48px; padding-top: 8px; padding-bottom: 8px; }
.nv-trilha ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 4px; font: 400 14px/1.4 var(--nv-fonte); }
.nv-trilha li { display: inline-flex; align-items: center; gap: 4px; color: var(--nv-suave); }
.nv-trilha li + li::before { content: "/"; color: var(--nv-borda-forte); margin-right: 4px; }
.nv-trilha a { color: var(--nv-suave) !important; text-decoration: none; }
.nv-trilha a:hover { color: var(--nv-verde-escuro) !important; text-decoration: underline; }
.nv-trilha [aria-current] { color: var(--nv-tinta); font-weight: 600; }
.nv-atualizado { display: inline-flex; align-items: center; gap: 6px; font: 500 13px/1.3 var(--nv-fonte); color: var(--nv-verde-escuro); background: var(--nv-verde-fundo); border: 1px solid var(--nv-verde-claro); border-radius: 0; padding: 5px 12px; }
.nv-atualizado .nv-i { width: 15px; height: 15px; }

/* ---------------------------------------------------------------- seções */
.nv-secao { padding: var(--nv-secao) 0; }
.nv-secao-tinta { background: var(--nv-fundo-2); border-top: 1px solid var(--nv-borda); border-bottom: 1px solid var(--nv-borda); }
.nv-sobrancelha { display: inline-flex; align-items: center; gap: 8px; margin: 0 0 16px; font: 600 13px/1 var(--nv-fonte); letter-spacing: .1em; text-transform: uppercase; color: var(--nv-verde-escuro); }
.nv-titulo { font: 650 clamp(30px, 4vw, 44px)/1.08 var(--nv-fonte) !important; letter-spacing: -.02em !important; color: var(--nv-tinta) !important; margin: 0 0 16px !important; }
.nv-lead { font: 400 clamp(17px, 2vw, 20px)/1.5 var(--nv-fonte); color: var(--nv-suave); max-width: 640px; margin: 0 0 32px; }
.nv-cab-secao { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin-bottom: 40px; }
.nv-cab-secao .nv-lead { margin-bottom: 0; }
@media (max-width: 640px) { :root { --nv-secao: 56px; } }

/* ---------------------------------------------------------------- hero */
.nv-hero { padding: 72px 0 64px; background:
  radial-gradient(900px 400px at 85% -10%, rgba(5, 150, 105, .10), transparent 60%),
  radial-gradient(600px 300px at 0% 110%, rgba(245, 158, 11, .08), transparent 60%), #fff; border-bottom: 1px solid var(--nv-borda); }
.nv-hero h1 { font: 650 clamp(36px, 6vw, 64px)/1.02 var(--nv-fonte) !important; letter-spacing: -.03em !important; max-width: 880px; margin: 0 0 20px !important; color: var(--nv-tinta) !important; }
.nv-hero h1 em { font-style: normal; color: var(--nv-verde); }
.nv-hero .nv-lead { margin-bottom: 32px; }
.nv-hero .nv-busca { max-width: 880px; background: #fff; padding: 8px; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); box-shadow: var(--nv-sombra); }
.nv-hero .nv-busca input, .nv-hero .nv-busca select { border-color: transparent; background: var(--nv-fundo-2); }
.nv-atalhos-rapidos { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; max-width: 880px; }
.nv-chip { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border: 1px solid var(--nv-borda); border-radius: 0; background: #fff; color: var(--nv-tinta) !important; font: 500 14px/1 var(--nv-fonte); text-decoration: none !important; }
.nv-chip:hover { border-color: var(--nv-verde); color: var(--nv-verde-escuro) !important; }
.nv-chip .nv-i { color: var(--nv-verde); width: 16px; height: 16px; }

/* ---------------------------------------------------------------- acesso à informação: categorias */
.nv-filtro { position: relative; max-width: 520px; flex: 1 1 320px; }
.nv-filtro input { width: 100%; height: 48px; padding: 0 14px 0 44px; border: 1px solid var(--nv-borda-forte); border-radius: var(--nv-r-ctl); font: 400 16px/1 var(--nv-fonte); color: var(--nv-tinta); background: #fff; }
.nv-filtro input:focus { border-color: var(--nv-verde); outline: 0; box-shadow: 0 0 0 3px var(--nv-verde-claro); }
.nv-filtro .nv-i { position: absolute; left: 14px; top: 14px; color: var(--nv-suave); }
.nv-filtro-status { font: 400 14px/1.4 var(--nv-fonte); color: var(--nv-suave); margin: -24px 0 24px; min-height: 1.4em; }

.nv-indice { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 32px; padding: 0; list-style: none; }

.nv-cats { display: grid; gap: 12px; }
.nv-cat { border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); background: #fff; scroll-margin-top: 96px; }
.nv-cat[open] { box-shadow: var(--nv-sombra); }
.nv-cat > summary { list-style: none; display: flex; align-items: center; gap: 16px; padding: 18px 20px; cursor: pointer; border-radius: var(--nv-r-card); }
.nv-cat > summary::-webkit-details-marker { display: none; }
.nv-cat > summary:hover { background: var(--nv-fundo-2); }
.nv-cat-ico { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: var(--nv-r-card); background: var(--nv-verde-fundo); color: var(--nv-verde-escuro); flex: none; }
.nv-cat-ico .nv-i { width: 22px; height: 22px; }
.nv-cat-tit { flex: 1; min-width: 0; }
.nv-cat-tit h3 { margin: 0 !important; font: 650 18px/1.25 var(--nv-fonte) !important; color: var(--nv-tinta) !important; letter-spacing: -.01em; }
.nv-cat-tit small { display: block; font: 400 14px/1.4 var(--nv-fonte); color: var(--nv-suave); margin-top: 2px; }
.nv-cat-cont { font: 600 12px/1 var(--nv-fonte); color: var(--nv-suave); background: var(--nv-fundo-3); border-radius: 0; padding: 6px 10px; }
.nv-cat > summary .nv-seta { transition: transform .2s; color: var(--nv-suave); }
.nv-cat[open] > summary .nv-seta { transform: rotate(180deg); }
.nv-cat-tag { font: 600 11px/1 var(--nv-fonte); letter-spacing: .06em; text-transform: uppercase; color: #92400e; background: #fef3c7; border-radius: var(--nv-r-ctl); padding: 4px 6px; margin-left: 8px; vertical-align: 2px; }
.nv-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; padding: 4px 20px 20px; }

.nv-card { position: relative; display: flex; flex-direction: column; gap: 6px; padding: 20px; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); background: #fff; color: var(--nv-texto) !important; text-decoration: none !important; transition: border-color .15s, box-shadow .15s, transform .15s; min-height: 100%; }
.nv-card:hover { border-color: var(--nv-verde); box-shadow: var(--nv-sombra); transform: translateY(-1px); }
.nv-card strong { font: 650 16px/1.3 var(--nv-fonte); color: var(--nv-tinta); padding-right: 24px; }
.nv-card span.nv-card-txt { font: 400 14px/1.5 var(--nv-fonte); color: var(--nv-suave); }
.nv-card .nv-card-seta { position: absolute; right: 16px; top: 20px; color: var(--nv-borda-forte); transition: transform .15s, color .15s; }
.nv-card:hover .nv-card-seta { color: var(--nv-verde); transform: translateX(3px); }
.nv-card .nv-pntp { margin-top: auto; padding-top: 8px; font: 500 12px/1 var(--nv-fonte); color: var(--nv-suave); letter-spacing: .02em; }
.nv-card[hidden], .nv-cat[hidden] { display: none !important; }
mark.nv-hl { background: #fef3c7; color: inherit; padding: 0 1px; border-radius: 0; }

/* grade simples de cards (serviços etc.) */
.nv-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.nv-servico { display: flex; gap: 16px; align-items: flex-start; padding: 24px; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); background: #fff; color: var(--nv-texto) !important; text-decoration: none !important; transition: border-color .15s, box-shadow .15s; }
.nv-servico:hover { border-color: var(--nv-verde); box-shadow: var(--nv-sombra); }
.nv-servico strong { display: block; font: 650 16px/1.3 var(--nv-fonte); color: var(--nv-tinta); margin-bottom: 4px; }
.nv-servico span { font: 400 14px/1.5 var(--nv-fonte); color: var(--nv-suave); }

/* ---------------------------------------------------------------- dividido (SIC, diário) */
.nv-dividido { display: grid; grid-template-columns: 1.1fr 1fr; gap: 48px; align-items: start; }
@media (max-width: 900px) { .nv-dividido { grid-template-columns: 1fr; gap: 32px; } }
.nv-lista-seta { list-style: none; margin: 0 0 32px; padding: 0; border-top: 1px solid var(--nv-borda); }
.nv-lista-seta li { display: flex; gap: 12px; align-items: flex-start; padding: 14px 0; border-bottom: 1px solid var(--nv-borda); font: 400 16px/1.5 var(--nv-fonte); color: var(--nv-texto); }
.nv-lista-seta .nv-i { color: var(--nv-verde); margin-top: 2px; }
.nv-botoes { display: flex; flex-wrap: wrap; gap: 12px; }

.nv-painel { border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); background: #fff; padding: 28px; }
.nv-painel h3 { font: 650 18px/1.3 var(--nv-fonte) !important; margin: 0 0 16px !important; }
.nv-dados { display: grid; gap: 14px; margin: 0; }
.nv-dados div { display: flex; gap: 12px; align-items: flex-start; }
.nv-dados dt { flex: none; color: var(--nv-verde-escuro); }
.nv-dados dd { margin: 0; font: 400 15px/1.5 var(--nv-fonte); color: var(--nv-texto); }
.nv-dados dd b { display: block; font: 600 13px/1.4 var(--nv-fonte); color: var(--nv-suave); text-transform: uppercase; letter-spacing: .06em; }
.nv-aviso { display: flex; gap: 10px; padding: 14px 16px; border-radius: var(--nv-r-card); background: #fffbeb; border: 1px solid #fde68a; color: #78350f; font: 400 14px/1.5 var(--nv-fonte); }
.nv-aviso .nv-i { color: var(--nv-ambar); margin-top: 1px; }

/* faixa de destaque (radar) */
.nv-destaque { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; padding: 32px; border-radius: var(--nv-r-card); background: var(--nv-tinta); color: #e5e7eb; }
.nv-destaque h2 { color: #fff !important; font: 650 26px/1.2 var(--nv-fonte) !important; margin: 0 0 6px !important; }
.nv-destaque p { margin: 0; color: #d1d5db; }

/* ---------------------------------------------------------------- conteúdo (páginas, posts) */
.nv-pagina { padding: 48px 0 var(--nv-secao); }
.nv-pagina > .nv-wrap > h1, .nv-pagina-titulo { font: 650 clamp(30px, 4.4vw, 48px)/1.08 var(--nv-fonte) !important; letter-spacing: -.02em !important; color: var(--nv-tinta) !important; margin: 0 0 24px !important; }
.nv-prosa { max-width: 760px; font: 400 17px/1.7 var(--nv-fonte); color: var(--nv-texto); }
.nv-prosa h2 { font-size: 26px; margin-top: 1.6em; } .nv-prosa h3 { font-size: 20px; margin-top: 1.4em; }
.nv-prosa ul, .nv-prosa ol { padding-left: 1.3em; }
.nv-prosa table { width: 100%; border-collapse: collapse; font-size: 15px; margin: 1.5em 0; }
.nv-prosa th, .nv-prosa td { border: 1px solid var(--nv-borda); padding: 8px 10px; text-align: left; }
.nv-prosa th { background: var(--nv-fundo-2); }
.nv-prosa img { border-radius: var(--nv-r-card); }
.nv-prosa blockquote { margin: 1.5em 0; padding: 4px 0 4px 20px; border-left: 3px solid var(--nv-verde); color: var(--nv-suave); }
.nv-meta { font: 400 14px/1.4 var(--nv-fonte); color: var(--nv-suave); margin: -12px 0 24px; display: flex; gap: 16px; flex-wrap: wrap; }

.nv-posts { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; }
.nv-post { display: flex; flex-direction: column; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); overflow: hidden; background: #fff; color: var(--nv-texto) !important; text-decoration: none !important; transition: box-shadow .15s, border-color .15s; }
.nv-post:hover { box-shadow: var(--nv-sombra); border-color: var(--nv-borda-forte); }
.nv-post img { width: 100%; aspect-ratio: 16/9; object-fit: cover; background: var(--nv-fundo-3); display: block; border-radius: 0; }
.nv-post div { padding: 20px; }
.nv-post time { font: 500 13px/1 var(--nv-fonte); color: var(--nv-suave); }
.nv-post strong { display: block; margin-top: 8px; font: 650 18px/1.3 var(--nv-fonte); color: var(--nv-tinta); }
.nv-paginacao { display: flex; gap: 8px; justify-content: center; margin-top: 40px; flex-wrap: wrap; }
.nv-paginacao a, .nv-paginacao span { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; height: 40px; padding: 0 12px; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-ctl); color: var(--nv-tinta) !important; text-decoration: none !important; font: 500 15px/1 var(--nv-fonte); }
.nv-paginacao .current { background: var(--nv-verde); border-color: var(--nv-verde); color: #fff !important; }

/* tabela (matriz PNTP) */
.nv-tabela-wrap { overflow-x: auto; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); }
.nv-tabela { width: 100%; border-collapse: collapse; font: 400 14px/1.5 var(--nv-fonte); min-width: 720px; }
.nv-tabela th { text-align: left; background: var(--nv-fundo-2); color: var(--nv-tinta); font-weight: 600; padding: 12px 14px; border-bottom: 1px solid var(--nv-borda); position: sticky; top: 0; }
.nv-tabela td { padding: 12px 14px; border-bottom: 1px solid var(--nv-borda); vertical-align: top; }
.nv-tabela tr:last-child td { border-bottom: 0; }
.nv-tabela td a { display: inline-block; margin: 0 8px 4px 0; }
.nv-selo { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 0; font: 600 12px/1.2 var(--nv-fonte); white-space: nowrap; }
.nv-selo-ess { background: #fee2e2; color: #991b1b; } .nv-selo-obr { background: #fef3c7; color: #92400e; } .nv-selo-rec { background: var(--nv-fundo-3); color: var(--nv-texto); }
.nv-selo-ok { background: var(--nv-verde-claro); color: var(--nv-verde-escuro); } .nv-selo-nao { background: #fee2e2; color: #991b1b; } .nv-selo-sem { background: var(--nv-fundo-3); color: var(--nv-suave); }
.nv-resumo { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px; margin-bottom: 32px; }
.nv-resumo div { border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); padding: 18px; }
.nv-resumo b { display: block; font: 650 32px/1 var(--nv-fonte); color: var(--nv-tinta); letter-spacing: -.02em; }
.nv-resumo span { font: 500 13px/1.4 var(--nv-fonte); color: var(--nv-suave); }

/* mapa do site */
.nv-mapa { columns: 3 260px; column-gap: 32px; }
.nv-mapa section { break-inside: avoid; margin-bottom: 28px; }
.nv-mapa h2 { font: 650 17px/1.3 var(--nv-fonte) !important; display: flex; gap: 8px; align-items: center; margin: 0 0 10px !important; }
.nv-mapa ul { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--nv-borda); }
.nv-mapa li a { display: block; padding: 5px 0 5px 14px; font-size: 15px; text-decoration: none; }
.nv-mapa li a:hover { text-decoration: underline; }

/* ---------------------------------------------------------------- rodapé */
.nv-rodape { background: var(--nv-rodape); color: #d1d5db; font: 400 15px/1.6 var(--nv-fonte); margin-top: 0; }
.nv-rodape a { color: #fff !important; text-decoration: none; }
.nv-rodape a:hover { text-decoration: underline; }
.nv-rodape h2 { color: #fff !important; font: 650 13px/1.2 var(--nv-fonte) !important; letter-spacing: .1em; text-transform: uppercase; margin: 0 0 16px !important; }
.nv-rodape-grade { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: 40px; padding: 64px 0 40px; }
@media (max-width: 1000px) { .nv-rodape-grade { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .nv-rodape-grade { grid-template-columns: 1fr; gap: 32px; padding-top: 48px; } }
.nv-rodape .nv-marca { color: #fff !important; margin-bottom: 16px; }
.nv-rodape .nv-marca-txt > span { color: #9ca3af; }
.nv-rodape dl { margin: 0; display: grid; gap: 10px; }
.nv-rodape dl div { display: flex; gap: 10px; }
.nv-rodape dt { flex: none; color: var(--nv-verde-vivo); }
.nv-rodape dd { margin: 0; }
.nv-rodape dd b { display: block; color: #9ca3af; font-weight: 500; font-size: 13px; }
.nv-rodape ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.nv-redes { display: flex; gap: 8px; margin-top: 20px; }
.nv-redes a { display: inline-flex; width: 40px; height: 40px; align-items: center; justify-content: center; border-radius: var(--nv-r-ctl); background: rgba(255, 255, 255, .08); }
.nv-redes a:hover { background: var(--nv-verde); }
.nv-rodape-base { border-top: 1px solid rgba(255, 255, 255, .1); padding: 20px 0 28px; font-size: 13px; color: #9ca3af; }
.nv-rodape-base .nv-wrap { display: flex; justify-content: space-between; gap: 12px 24px; flex-wrap: wrap; }
.nv-rodape-base ul { display: flex; flex-wrap: wrap; gap: 6px 18px; }
.nv-falta { color: #fcd34d; font-size: 14px; }

/* aviso de cookies (sem jQuery) */
.nv-cookies { position: fixed; left: 16px; bottom: 16px; z-index: 1200; max-width: 400px; padding: 18px; background: #fff; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); box-shadow: var(--nv-sombra); font: 400 14px/1.5 var(--nv-fonte); color: var(--nv-texto); }
.nv-cookies[hidden] { display: none; }
.nv-cookies p { margin: 0 0 12px; }
.nv-cookies .nv-botoes { gap: 8px; }
.nv-cookies .nv-btn { min-height: 40px; padding: 8px 14px; font-size: 14px; }
@media (max-width: 480px) { .nv-cookies { left: 8px; right: 8px; bottom: 8px; max-width: none; } }

.nv-topo { position: fixed; right: 16px; bottom: 16px; z-index: 800; width: 44px; height: 44px; border-radius: var(--nv-r-ctl); border: 1px solid var(--nv-borda); background: #fff; color: var(--nv-tinta); display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--nv-sombra); cursor: pointer; opacity: 0; pointer-events: none; transition: opacity .2s; }
.nv-topo.is-visivel { opacity: 1; pointer-events: auto; }
.nv-topo .nv-i { transform: rotate(180deg); }

/* ---------------------------------------------------------------- páginas de dados (Bootstrap 3): ajustes de convivência */
body.nv-modo-dados { font-size: 15px; }
body.nv-modo-dados .nv-conteudo { min-height: 50vh; }
body.nv-modo-dados .page-title { letter-spacing: -.01em; }
body.nv-modo-dados #page-container { overflow: visible; }
/* gráfico escondido (contratos, autoridades) reservava ~400px em branco: só ocupa espaço quando o botão o mostra */
body.nv-modo-dados .header-wrapper .box-chart:not([style*="visible"]) { display: none !important; }

/* ---------------------------------------------------------------- acessibilidade: alto contraste e fonte */
html.nv-contraste body, html.nv-contraste .nv-header, html.nv-contraste .nv-faixa, html.nv-contraste .nv-hero, html.nv-contraste .nv-secao-tinta,
html.nv-contraste .nv-card, html.nv-contraste .nv-cat, html.nv-contraste .nv-painel, html.nv-contraste .nv-servico, html.nv-contraste .nv-post,
html.nv-contraste .nv-busca-painel, html.nv-contraste .nv-cookies, html.nv-contraste .nv-nav, html.nv-contraste .nv-rodape, html.nv-contraste .nv-destaque,
html.nv-contraste .nv-chip, html.nv-contraste input, html.nv-contraste select, html.nv-contraste .nv-btn, html.nv-contraste table, html.nv-contraste th, html.nv-contraste td,
html.nv-contraste .panel, html.nv-contraste .well, html.nv-contraste .modal-content, html.nv-contraste .page-header-section, html.nv-contraste .main-content-section,
html.nv-contraste .form-control, html.nv-contraste .dataTables_wrapper, html.nv-contraste .nv-cat-ico, html.nv-contraste .nv-atualizado, html.nv-contraste .nv-aviso {
  background: #000 !important; color: #fff !important; border-color: #fff !important; box-shadow: none !important;
}
html.nv-contraste body *:not(svg):not(use):not(path) { color: #fff !important; }
html.nv-contraste a, html.nv-contraste a *, html.nv-contraste .nv-card strong { color: #ffeb3b !important; text-decoration: underline !important; }
html.nv-contraste img { filter: grayscale(1) contrast(1.2); }
html.nv-contraste .nv-a11y { background: #000 !important; border-bottom: 1px solid #fff; }

html[data-nv-fonte="1"] body { zoom: 1.12; }
html[data-nv-fonte="2"] body { zoom: 1.25; }
html[data-nv-fonte="-1"] body { zoom: .92; }

@media print {
  .nv-a11y, .nv-header, .nv-cookies, .nv-topo, .nv-rodape, .nv-pular, .nv-faixa .nv-atualizado + * { display: none !important; }
  .nv-cat > *:not(summary) { display: block !important; }
}

/* ---------------------------------------------------------------- SIC completo (dimensão 12) */
.nv-subtitulo { font: 650 22px/1.25 var(--nv-fonte) !important; color: var(--nv-tinta) !important; letter-spacing: -.01em; margin: 48px 0 16px !important; }
.nv-dividido .nv-subtitulo { margin-top: 0 !important; }
.nv-passos { list-style: none; counter-reset: passo; margin: 0 0 24px; padding: 0; display: grid; gap: 12px; }
.nv-passos li { counter-increment: passo; position: relative; padding: 2px 0 0 48px; min-height: 34px; font: 400 15px/1.55 var(--nv-fonte); color: var(--nv-texto); }
.nv-passos li::before { content: counter(passo); position: absolute; left: 0; top: 0; width: 32px; height: 32px; border-radius: 50%; background: var(--nv-verde-claro); color: var(--nv-verde-escuro); font: 700 15px/32px var(--nv-fonte); text-align: center; }
.nv-passos b { color: var(--nv-tinta); }
.nv-nota { margin: 16px 0 0; font: 400 14px/1.5 var(--nv-fonte); color: var(--nv-suave); }
#sic .nv-tabela { min-width: 640px; }
#sic .nv-tabela td:first-child { white-space: nowrap; }
.nv-servico > div { min-width: 0; }
.nv-servico > .nv-i { flex: none; color: var(--nv-verde); width: 24px; height: 24px; }

/* ---------------------------------------------------------------- Diário Oficial (home) */
.nv-doem-conta { margin: 0; font: 400 15px/1.4 var(--nv-fonte); color: var(--nv-suave); }
.nv-doem-conta b { display: block; font: 700 40px/1 var(--nv-fonte); color: var(--nv-verde-escuro); letter-spacing: -.02em; }
.nv-doem-busca { display: grid; grid-template-columns: 1fr 170px 170px auto; gap: 12px; align-items: end; padding: 20px; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); background: #fff; }
.nv-campo label { display: block; margin: 0 0 6px; font: 600 13px/1.3 var(--nv-fonte); color: var(--nv-texto); }
.nv-campo input { width: 100%; height: 48px; border: 1px solid var(--nv-borda-forte); border-radius: var(--nv-r-ctl); background: #fff; color: var(--nv-tinta); font: 400 16px/1 var(--nv-fonte); padding: 0 12px; }
.nv-campo input:focus { border-color: var(--nv-verde); outline: 0; box-shadow: 0 0 0 3px var(--nv-verde-claro); }
@media (max-width: 900px) { .nv-doem-busca { grid-template-columns: 1fr 1fr; } .nv-campo-largo, .nv-doem-busca .nv-btn { grid-column: 1 / -1; } }
.nv-doem-anos { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 16px 0 32px; font: 500 14px/1 var(--nv-fonte); color: var(--nv-suave); }
.nv-doem { display: grid; grid-template-columns: 1.4fr 1fr; gap: 24px; align-items: start; }
@media (max-width: 900px) { .nv-doem { grid-template-columns: 1fr; } }
.nv-doem-destaque { padding: 32px; border: 1px solid var(--nv-borda); border-top: 4px solid var(--nv-verde); border-radius: var(--nv-r-card); background: #fff; display: flex; flex-direction: column; }
.nv-doem-rotulo { display: inline-flex; align-items: center; gap: 8px; margin: 0 0 8px; font: 600 12px/1 var(--nv-fonte); text-transform: uppercase; letter-spacing: .1em; color: var(--nv-verde-escuro); }
.nv-doem-destaque h3 { font: 700 clamp(26px, 3vw, 34px)/1.1 var(--nv-fonte) !important; letter-spacing: -.02em; margin: 0 0 6px !important; color: var(--nv-tinta) !important; }
.nv-doem-data { margin: 0 0 20px; color: var(--nv-suave); font: 400 16px/1.4 var(--nv-fonte); }
.nv-doem-sumario { display: grid; gap: 14px; margin: 0 0 24px; padding: 16px 0 0; border-top: 1px solid var(--nv-borda); }
.nv-doem-sumario b { display: block; font: 600 13px/1.3 var(--nv-fonte); text-transform: uppercase; letter-spacing: .06em; color: var(--nv-tinta); margin-bottom: 4px; }
.nv-doem-sumario ul { margin: 0; padding-left: 18px; font: 400 15px/1.5 var(--nv-fonte); color: var(--nv-texto); }
.nv-doem-sumario small { color: var(--nv-suave); }
.nv-doem-lista { list-style: none; margin: 0 0 16px; padding: 0; border-top: 1px solid var(--nv-borda); }
.nv-doem-lista li > a, .nv-doem-lista li > span { display: flex; gap: 12px; align-items: center; padding: 12px 4px; border-bottom: 1px solid var(--nv-borda); text-decoration: none !important; color: var(--nv-texto) !important; }
.nv-doem-lista li > a:hover { background: var(--nv-fundo-2); }
.nv-doem-lista .nv-i { flex: none; color: var(--nv-verde); }
.nv-doem-lista b { display: block; font: 600 15px/1.3 var(--nv-fonte); color: var(--nv-tinta); }
.nv-doem-lista small { font: 400 13px/1.4 var(--nv-fonte); color: var(--nv-suave); }
.nv-mais { display: inline-flex; align-items: center; gap: 6px; font: 600 14px/1.2 var(--nv-fonte); }
html.nv-contraste .nv-doem-busca, html.nv-contraste .nv-doem-destaque, html.nv-contraste .nv-campo input { background: #000 !important; color: #fff !important; border-color: #fff !important; }

/* ---------------------------------------------------------------- Fale Conosco */
.nv-grade-1 { grid-template-columns: 1fr; }
.nv-secao-pagina { padding-top: 40px; }
.nv-contato-form .nf-form-cont input:not([type=button]):not([type=submit]):not([type=checkbox]):not([type=radio]),
.nv-contato-form .nf-form-cont textarea, .nv-contato-form .nf-form-cont select { width: 100%; min-height: 48px; border: 1px solid var(--nv-borda-forte); border-radius: var(--nv-r-ctl); padding: 10px 12px; font: 400 16px/1.4 var(--nv-fonte); background: #fff; color: var(--nv-tinta); box-shadow: none; }
.nv-contato-form .nf-form-cont textarea { min-height: 140px; }
.nv-contato-form .nf-form-cont label { font: 600 14px/1.3 var(--nv-fonte); color: var(--nv-texto); }
.nv-contato-form .nf-form-cont input[type=button], .nv-contato-form .nf-form-cont input[type=submit] { min-height: 48px; padding: 12px 22px; border: 0; border-radius: var(--nv-r-ctl); background: var(--nv-verde); color: #fff; font: 600 15px/1 var(--nv-fonte); cursor: pointer; }
.nv-contato-form .nf-form-cont input[type=button]:hover, .nv-contato-form .nf-form-cont input[type=submit]:hover { background: var(--nv-verde-escuro); }
.nv-contato-form .nf-form-fields-required { font-size: 13px; color: var(--nv-suave); margin-bottom: 12px; }
.nv-btn-bloco { display: flex; width: 100%; white-space: normal; text-align: center; min-height: 52px; font-size: 16px; box-shadow: 0 6px 16px -8px rgba(5, 150, 105, .7); }
.nv-rodape-base .nv-wrap { align-items: center; }
.nv-ibdm { display: inline-flex; align-items: center; gap: 10px; color: #9ca3af !important; text-decoration: none !important; font-size: 12px; letter-spacing: .04em; }
.nv-ibdm img { display: block; width: 96px; height: auto; opacity: .9; }
.nv-ibdm:hover img { opacity: 1; }
.nv-trilha a, .nv-trilha [aria-current] { display: inline-flex; align-items: center; gap: 6px; }
.nv-trilha .nv-i { width: 16px; height: 16px; flex: none; color: var(--nv-verde); }
.nv-trilha li > .nv-i { margin-right: -2px; }

/* ---------------------------------------------------------------- menu de acessibilidade flutuante (esquerda) */
.nv-a11y-flut { position: fixed; left: 0; top: 50%; transform: translateY(-50%); z-index: 1000; }
.nv-a11y-flut-btn { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; border: 0; border-radius: 0; background: var(--nv-verde); color: #fff; cursor: pointer; box-shadow: var(--nv-sombra); }
.nv-a11y-flut-btn:hover { background: var(--nv-verde-escuro); }
.nv-a11y-flut-btn .nv-i { width: 30px; height: 30px; }
.nv-a11y-painel { position: absolute; left: 60px; top: 50%; transform: translateY(-50%); width: 280px; max-height: 86vh; overflow-y: auto; background: #fff; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); box-shadow: 0 12px 40px -12px rgba(17,24,39,.35); padding: 16px; font: 400 14px/1.4 var(--nv-fonte); color: var(--nv-texto); }
.nv-a11y-painel[hidden] { display: none; }
.nv-a11y-painel-cab { display: flex; align-items: center; justify-content: space-between; }
.nv-a11y-painel-cab strong { font: 650 17px/1.2 var(--nv-fonte); color: var(--nv-tinta); }
.nv-a11y-fechar { border: 0; background: none; padding: 6px; cursor: pointer; color: var(--nv-texto); border-radius: var(--nv-r-ctl); }
.nv-a11y-fechar:hover { background: var(--nv-fundo-3); }
.nv-a11y-dica { margin: 4px 0 12px; font-size: 12px; color: var(--nv-suave); }
.nv-a11y-dica kbd { font: 600 11px/1 var(--nv-fonte); background: var(--nv-fundo-3); border: 1px solid var(--nv-borda); border-radius: 0; padding: 2px 5px; }
.nv-a11y-fonte { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-bottom: 10px; }
.nv-a11y-fonte button, .nv-a11y-opcoes button, .nv-a11y-reset { width: 100%; min-height: 42px; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-ctl); background: #fff; color: var(--nv-tinta); font: 600 14px/1.2 var(--nv-fonte); cursor: pointer; }
.nv-a11y-opcoes { list-style: none; margin: 0 0 10px; padding: 0; display: grid; gap: 6px; }
.nv-a11y-opcoes button { display: flex; align-items: center; gap: 10px; padding: 8px 12px; text-align: left; font-weight: 500; }
.nv-a11y-opcoes .nv-i { color: var(--nv-verde); width: 18px; height: 18px; flex: none; }
.nv-a11y-fonte button:hover, .nv-a11y-opcoes button:hover, .nv-a11y-reset:hover { border-color: var(--nv-verde); background: var(--nv-verde-fundo); }
.nv-a11y-opcoes button[aria-pressed="true"] { background: var(--nv-verde); border-color: var(--nv-verde); color: #fff; }
.nv-a11y-opcoes button[aria-pressed="true"] .nv-i { color: #fff; }
.nv-a11y-reset { display: flex; align-items: center; justify-content: center; gap: 8px; }
.nv-a11y-decl { display: block; margin-top: 10px; text-align: center; font-size: 13px; color: var(--nv-verde-escuro) !important; }
@media (max-width: 640px) { .nv-a11y-flut { top: auto; bottom: 88px; transform: none; } .nv-a11y-painel { top: auto; bottom: 0; transform: none; width: min(280px, calc(100vw - 76px)); } .nv-a11y-flut-btn { width: 46px; height: 46px; } }
/* efeitos */
html.nv-cinza { filter: grayscale(1); }
html.nv-animacao *, html.nv-animacao *::before, html.nv-animacao *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
html.nv-legivel body, html.nv-legivel body * { font-family: Verdana, Tahoma, Arial, sans-serif !important; letter-spacing: .02em !important; }
html.nv-sublinhar a { text-decoration: underline !important; }
html.nv-claro body, html.nv-claro body *:not(svg):not(use):not(path):not(img) { background-color: #fff !important; color: #000 !important; border-color: #000 !important; box-shadow: none !important; }
html.nv-claro a, html.nv-claro a * { color: #0000c8 !important; text-decoration: underline !important; }
html.nv-claro .nv-btn-primario, html.nv-claro .nv-a11y-flut-btn, html.nv-claro .nv-a11y-opcoes button[aria-pressed="true"] { background-color: #000 !important; color: #fff !important; }
html.nv-claro .nv-a11y-flut-btn *, html.nv-claro .nv-btn-primario *, html.nv-claro .nv-a11y-opcoes button[aria-pressed="true"] * { background-color: transparent !important; color: #fff !important; }
html.nv-contraste .nv-a11y-painel, html.nv-contraste .nv-a11y-painel button { background: #000 !important; border-color: #fff !important; }
html.nv-contraste .nv-a11y-flut-btn { background: #ffeb3b !important; }
html.nv-contraste .nv-a11y-flut-btn .nv-i { color: #000 !important; }

/* =====================================================================
   PÁGINAS DE DADOS — padrão único (02/11/2026)
   Vale para todas as páginas do ExternalApps (contratos, licitações, despesas, documentos...).
   Só aparência: filtros, exportação e tabelas continuam com o JS de cada página.
   Prefixo body.nv-modo-dados para vencer o CSS próprio de cada template.
   ===================================================================== */
body.nv-modo-dados { background: var(--nv-fundo-2); color: var(--nv-texto); font-family: var(--nv-fonte); }
body.nv-modo-dados .nv-conteudo { padding-bottom: 56px; }
/* só links de texto (sem classe); botões e cards com estilo próprio (btn-modern, link-card...) ficam como estão */
body.nv-modo-dados .nv-conteudo a:not([class]) { color: var(--nv-verde-escuro); }

/* largura: tudo dentro da grade de 1200px, alinhado ao breadcrumb */
body.nv-modo-dados .licitacoes-fullwidth,
body.nv-modo-dados .nv-conteudo > .row,
body.nv-modo-dados .nv-conteudo > .container,
body.nv-modo-dados .nv-conteudo > .container-fluid,
body.nv-modo-dados .ep-page { max-width: var(--nv-max) !important; width: auto !important; margin: 0 auto !important; padding: 0 24px !important; background: transparent !important; float: none !important; }
body.nv-modo-dados .nv-conteudo > .row > [class*="col-"] { padding-left: 0; padding-right: 0; }

/* cabeçalho da página */
body.nv-modo-dados .page-header-section,
body.nv-modo-dados .ep-page-header { background: transparent !important; border: 0 !important; padding: 40px 0 24px !important; margin: 0 !important; box-shadow: none !important; }
body.nv-modo-dados h1.page-title,
body.nv-modo-dados .ep-page-header h1 { display: flex; align-items: center; gap: 14px; font: 650 clamp(28px, 3.6vw, 40px)/1.1 var(--nv-fonte) !important; letter-spacing: -.02em !important; color: var(--nv-tinta) !important; margin: 0 0 8px !important; padding: 0 !important; text-transform: none !important; border: 0 !important; }
body.nv-modo-dados h1.page-title > i, body.nv-modo-dados h1.page-title > .fa, body.nv-modo-dados h1.page-title > .fas,
body.nv-modo-dados .ep-page-header h1 > i { display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; flex: none; border-radius: 0; background: var(--nv-verde-claro); color: var(--nv-verde-escuro) !important; font-size: 24px !important; }
body.nv-modo-dados .header-wrapper { margin-top: 16px; }

/* cartões: filtros, conteúdo, declarações */
body.nv-modo-dados .filters-section { background: transparent !important; border: 0 !important; padding: 0 !important; margin: 0 0 24px !important; }
body.nv-modo-dados .modern-card,
body.nv-modo-dados .filters-section .modern-card,
body.nv-modo-dados .nv-dados-card,
body.nv-modo-dados .panel { background: #fff !important; border: 1px solid var(--nv-borda) !important; border-radius: var(--nv-r-card) !important; box-shadow: none !important; padding: 24px !important; margin: 0 0 24px !important; }
body.nv-modo-dados .main-content-section { background: transparent !important; padding: 0 !important; min-height: 0 !important; }
body.nv-modo-dados .main-content-section > .dataTables-container,
body.nv-modo-dados .main-content-section > div:not(.row):not(.modern-card):not(.clearfix):not(#recdes-reports) { background: #fff; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); padding: 20px; min-height: 0 !important; box-shadow: none !important; }
body.nv-modo-dados .nv-dados-card .dataTables-container { border: 0; padding: 0; }

/* títulos dos blocos ("Filtros de Pesquisa", legend) */
body.nv-modo-dados .filters-header,
body.nv-modo-dados legend { display: flex; align-items: center; gap: 8px; width: 100%; margin: 0 0 20px !important; padding: 0 0 14px !important; border: 0 !important; border-bottom: 1px solid var(--nv-borda) !important; font: 650 13px/1.2 var(--nv-fonte) !important; letter-spacing: .08em; text-transform: uppercase; color: var(--nv-verde-escuro) !important; }
body.nv-modo-dados .filters-header i { color: var(--nv-verde) !important; }
body.nv-modo-dados fieldset { border: 0 !important; margin: 0 !important; padding: 0 !important; min-width: 0; }

/* campos */
body.nv-modo-dados .nv-conteudo label, body.nv-modo-dados .nv-conteudo .control-label { font: 600 13px/1.3 var(--nv-fonte) !important; color: var(--nv-texto) !important; margin-bottom: 6px !important; }
body.nv-modo-dados .nv-conteudo .form-control,
body.nv-modo-dados .nv-conteudo .select2-container--default .select2-selection--single,
body.nv-modo-dados .nv-conteudo .select2-container--default .select2-selection--multiple,
body.nv-modo-dados .nv-conteudo .dataTables_filter input,
body.nv-modo-dados .nv-conteudo .dataTables_length select { height: 44px !important; min-height: 44px; border: 1px solid var(--nv-borda-forte) !important; border-radius: var(--nv-r-ctl) !important; background: #fff !important; color: var(--nv-tinta) !important; font: 400 15px/1.3 var(--nv-fonte) !important; padding: 8px 12px !important; box-shadow: none !important; }
body.nv-modo-dados .nv-conteudo textarea.form-control { height: auto !important; }
body.nv-modo-dados .nv-conteudo .select2-selection__rendered { line-height: 26px !important; padding-left: 0 !important; color: var(--nv-tinta) !important; }
body.nv-modo-dados .nv-conteudo .select2-selection__arrow { height: 42px !important; }
body.nv-modo-dados .nv-conteudo .form-control:focus,
body.nv-modo-dados .nv-conteudo .dataTables_filter input:focus { border-color: var(--nv-verde) !important; box-shadow: 0 0 0 3px var(--nv-verde-claro) !important; outline: 0; }
body.nv-modo-dados .nv-conteudo .form-group { margin-bottom: 16px; }

/* botões */
body.nv-modo-dados .nv-conteudo .btn { min-height: 44px; border-radius: var(--nv-r-ctl) !important; font: 600 14px/1.2 var(--nv-fonte) !important; padding: 10px 18px !important; box-shadow: none !important; text-shadow: none !important; background-image: none !important; }
body.nv-modo-dados .nv-conteudo .btn-primary, body.nv-modo-dados .nv-conteudo .btn-success,
body.nv-modo-dados .nv-conteudo .btn-modern-primary, body.nv-modo-dados .nv-conteudo input[type="submit"].btn,
body.nv-modo-dados .nv-conteudo button[type="submit"] { background: var(--nv-verde) !important; border: 1px solid var(--nv-verde) !important; color: #fff !important; }
body.nv-modo-dados .nv-conteudo .btn-primary:hover, body.nv-modo-dados .nv-conteudo .btn-success:hover,
body.nv-modo-dados .nv-conteudo .btn-modern-primary:hover, body.nv-modo-dados .nv-conteudo button[type="submit"]:hover { background: var(--nv-verde-escuro) !important; border-color: var(--nv-verde-escuro) !important; }
body.nv-modo-dados .nv-conteudo .btn-default, body.nv-modo-dados .nv-conteudo .btn-modern-secondary, body.nv-modo-dados .nv-conteudo .btn-secondary { background: #fff !important; border: 1px solid var(--nv-borda-forte) !important; color: var(--nv-tinta) !important; }
body.nv-modo-dados .nv-conteudo .btn-default:hover, body.nv-modo-dados .nv-conteudo .btn-modern-secondary:hover { border-color: var(--nv-verde) !important; color: var(--nv-verde-escuro) !important; background: var(--nv-verde-fundo) !important; }
body.nv-modo-dados .btn-modern { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 18px !important; border-radius: var(--nv-r-ctl) !important; font: 600 14px/1.2 var(--nv-fonte) !important; }

/* exportação (Excel, CSV, PDF...) */
body.nv-modo-dados .dt-buttons { display: flex !important; flex-wrap: wrap; gap: 6px; background: transparent !important; padding: 0 !important; margin: 0 0 12px !important; float: none !important; }
body.nv-modo-dados .dt-buttons .dt-button,
body.nv-modo-dados .dt-buttons .btn,
body.nv-modo-dados .dt-buttons a { display: inline-flex !important; align-items: center; gap: 6px; min-height: 36px !important; margin: 0 !important; padding: 6px 12px !important; border: 1px solid var(--nv-borda-forte) !important; border-radius: var(--nv-r-ctl) !important; background: #fff !important; background-image: none !important; color: var(--nv-tinta) !important; font: 600 13px/1 var(--nv-fonte) !important; text-decoration: none !important; box-shadow: none !important; }
body.nv-modo-dados .dt-buttons .dt-button:hover, body.nv-modo-dados .dt-buttons .btn:hover, body.nv-modo-dados .dt-buttons a:hover { border-color: var(--nv-verde) !important; color: var(--nv-verde-escuro) !important; background: var(--nv-verde-fundo) !important; }
body.nv-modo-dados .dataTables_length, body.nv-modo-dados .dataTables_filter, body.nv-modo-dados .dataTables_info { font: 400 14px/1.4 var(--nv-fonte) !important; color: var(--nv-suave) !important; }
body.nv-modo-dados .dataTables_filter input { margin-left: 8px !important; width: 220px !important; height: 40px !important; min-height: 40px; }
body.nv-modo-dados .dataTables_length select { width: auto !important; height: 40px !important; min-height: 40px; display: inline-block; }

/* tabelas */
body.nv-modo-dados .nv-conteudo table.table, body.nv-modo-dados .nv-conteudo table.dataTable { border-collapse: collapse !important; border: 0 !important; margin: 0 !important; font: 400 14px/1.5 var(--nv-fonte) !important; color: var(--nv-texto); background: #fff; }
body.nv-modo-dados .nv-conteudo table.table > thead > tr > th, body.nv-modo-dados .nv-conteudo table.dataTable thead th { background: var(--nv-fundo-2) !important; color: var(--nv-suave) !important; font: 650 12px/1.3 var(--nv-fonte) !important; letter-spacing: .06em; text-transform: uppercase; border: 0 !important; border-bottom: 1px solid var(--nv-borda) !important; padding: 12px 14px !important; vertical-align: middle !important; }
body.nv-modo-dados .nv-conteudo table.table > tbody > tr > td, body.nv-modo-dados .nv-conteudo table.dataTable tbody td { border: 0 !important; border-bottom: 1px solid var(--nv-borda) !important; padding: 12px 14px !important; vertical-align: middle !important; background: transparent; }
body.nv-modo-dados .nv-conteudo .table-striped > tbody > tr:nth-of-type(odd), body.nv-modo-dados .nv-conteudo table.dataTable.stripe tbody tr.odd { background: #fff !important; }
body.nv-modo-dados .nv-conteudo .table-striped > tbody > tr:nth-of-type(even) { background: var(--nv-fundo-2) !important; }
body.nv-modo-dados .nv-conteudo table.table > tbody > tr:hover { background: var(--nv-verde-fundo) !important; }
body.nv-modo-dados .nv-conteudo .table-responsive { border: 0 !important; margin: 0; }

/* paginação */
body.nv-modo-dados .dataTables_paginate, body.nv-modo-dados .pagination { display: flex !important; flex-wrap: wrap; justify-content: flex-end; gap: 4px; margin: 16px 0 0 !important; padding: 0 !important; }
body.nv-modo-dados .pagination > li > a, body.nv-modo-dados .pagination > li > span,
body.nv-modo-dados .dataTables_paginate .paginate_button { float: none !important; display: inline-flex !important; align-items: center; justify-content: center; min-width: 40px; height: 40px; margin: 0 !important; padding: 0 12px !important; border: 1px solid var(--nv-borda) !important; border-radius: var(--nv-r-ctl) !important; background: #fff !important; color: var(--nv-tinta) !important; font: 500 14px/1 var(--nv-fonte) !important; box-shadow: none !important; }
body.nv-modo-dados .pagination > li { display: inline-flex; padding: 0 !important; border: 0 !important; background: none !important; }
body.nv-modo-dados .pagination > .active > a, body.nv-modo-dados .pagination > .active > span,
body.nv-modo-dados .dataTables_paginate .paginate_button.current { background: var(--nv-verde) !important; border-color: var(--nv-verde) !important; color: #fff !important; }
body.nv-modo-dados .pagination > .disabled > a, body.nv-modo-dados .dataTables_paginate .paginate_button.disabled { color: var(--nv-borda-forte) !important; background: #fff !important; }
body.nv-modo-dados .pagination > li > a:hover, body.nv-modo-dados .dataTables_paginate .paginate_button:not(.current):hover { border-color: var(--nv-verde) !important; color: var(--nv-verde-escuro) !important; background: var(--nv-verde-fundo) !important; }

/* caixinhas de resumo do Bootstrap (Última atualização, totais) */
body.nv-modo-dados .panel { padding: 0 !important; overflow: hidden; }
body.nv-modo-dados .panel > .panel-heading { background: var(--nv-fundo-2) !important; border: 0 !important; border-bottom: 1px solid var(--nv-borda) !important; color: var(--nv-suave) !important; padding: 12px 16px !important; font: 600 13px/1.3 var(--nv-fonte) !important; }
body.nv-modo-dados .panel > .panel-heading * { color: inherit !important; font: inherit !important; margin: 0; }
body.nv-modo-dados .panel > .panel-heading small, body.nv-modo-dados .panel > .panel-heading .help-block { font-weight: 400 !important; font-size: 12px !important; }
body.nv-modo-dados .panel > .panel-body { padding: 14px 16px !important; font: 650 18px/1.3 var(--nv-fonte) !important; color: var(--nv-tinta) !important; }
body.nv-modo-dados .panel-info > .panel-heading { background: var(--nv-verde-fundo) !important; color: var(--nv-verde-escuro) !important; }
body.nv-modo-dados .alert { border-radius: var(--nv-r-card) !important; font: 400 14px/1.5 var(--nv-fonte); }
body.nv-modo-dados .alert-info { background: var(--nv-verde-fundo) !important; border-color: var(--nv-verde-claro) !important; color: var(--nv-verde-escuro) !important; }
body.nv-modo-dados .alert-warning { background: #fffbeb !important; border-color: #fde68a !important; color: #78350f !important; }
body.nv-modo-dados .label-default, body.nv-modo-dados .badge { background: var(--nv-fundo-3) !important; color: var(--nv-texto) !important; border-radius: 0 !important; font-weight: 600; }

/* abas (nav-tabs) */
body.nv-modo-dados .nav-tabs { border-bottom: 1px solid var(--nv-borda) !important; }
body.nv-modo-dados .nav-tabs > li > a { border: 0 !important; border-radius: 0 !important; color: var(--nv-texto) !important; font: 500 15px/1.2 var(--nv-fonte) !important; padding: 12px 16px !important; }
body.nv-modo-dados .nav-tabs > li.active > a, body.nv-modo-dados .nav-tabs > li > a:hover { background: none !important; color: var(--nv-verde-escuro) !important; box-shadow: inset 0 -2px 0 var(--nv-verde); }

/* Declarações de Atualidade */
.nv-declaracoes { padding: 48px 0 8px; }
.nv-dados-h2 { font: 650 clamp(24px, 3vw, 32px)/1.15 var(--nv-fonte) !important; letter-spacing: -.02em; color: var(--nv-tinta) !important; margin: 0 0 8px !important; }
.nv-dados-lead { font: 400 16px/1.5 var(--nv-fonte); color: var(--nv-suave); margin: 0 0 20px; max-width: 760px; }
body.nv-modo-dados .nv-declaracoes .form-filters { margin: 0; }
body.nv-modo-dados .nv-declaracoes .form-filters > [class*="col-"] { padding: 0; }
body.nv-modo-dados .nv-declaracoes .row { margin-left: -8px; margin-right: -8px; }
body.nv-modo-dados .nv-declaracoes .row > [class*="col-"] { padding-left: 8px; padding-right: 8px; }

@media (max-width: 768px) {
  body.nv-modo-dados .page-header-section { padding: 28px 0 16px !important; }
  body.nv-modo-dados .modern-card, body.nv-modo-dados .nv-dados-card { padding: 16px !important; }
  body.nv-modo-dados .dataTables_filter input { width: 100% !important; margin: 6px 0 0 !important; }
  body.nv-modo-dados h1.page-title > i { width: 44px; height: 44px; font-size: 20px !important; }
}
html.nv-contraste body.nv-modo-dados, html.nv-contraste body.nv-modo-dados .nv-dados-card, html.nv-contraste body.nv-modo-dados .modern-card, html.nv-contraste body.nv-modo-dados .panel,
html.nv-contraste body.nv-modo-dados .nv-conteudo table, html.nv-contraste body.nv-modo-dados .nv-conteudo th, html.nv-contraste body.nv-modo-dados .nv-conteudo tr, html.nv-contraste body.nv-modo-dados .panel-heading,
html.nv-contraste body.nv-modo-dados .dt-buttons a, html.nv-contraste body.nv-modo-dados .dt-button, html.nv-contraste body.nv-modo-dados .paginate_button, html.nv-contraste body.nv-modo-dados .pagination a,
html.nv-contraste body.nv-modo-dados .main-content-section > div { background: #000 !important; border-color: #fff !important; color: #fff !important; }
/* componentes do tema dentro das páginas de dados (Fale Conosco, Diário): o CSS legado escondia os h3 e pintava links de azul */
body.nv-modo-dados .nv-painel h3, body.nv-modo-dados .nv-secao h1, body.nv-modo-dados .nv-secao h2, body.nv-modo-dados .nv-secao h3 { color: var(--nv-tinta) !important; visibility: visible !important; opacity: 1 !important; display: block; font-family: var(--nv-fonte) !important; }
body.nv-modo-dados .nv-painel h3 { font: 650 18px/1.3 var(--nv-fonte) !important; margin: 0 0 16px !important; }
body.nv-modo-dados .nv-secao a:not([class]) { color: var(--nv-verde-escuro) !important; }
body.nv-modo-dados .nv-secao { background: transparent; }
body.nv-modo-dados .dataTables_wrapper .row, body.nv-modo-dados .dataTables_wrapper .row > div,
body.nv-modo-dados .dataTables_wrapper .dataTables_paginate, body.nv-modo-dados .dataTables_wrapper .dataTables_info { background: transparent !important; box-shadow: none !important; }
body.nv-modo-dados legend { display: block !important; float: none !important; }
body.nv-modo-dados .dataTables_info { padding-top: 24px !important; }
body.nv-modo-dados .main-content-section > div:empty, body.nv-modo-dados .modern-card:empty { display: none !important; }

body.nv-modo-dados a.btn-modern:not(.btn-modern-secondary), body.nv-modo-dados a.btn-modern:not(.btn-modern-secondary) * { color: #fff !important; }
body.nv-modo-dados .nv-conteudo h1.page-title { margin-top: 36px !important; }
body.nv-modo-dados .page-header-section h1.page-title, body.nv-modo-dados .ep-page-header h1 { margin-top: 0 !important; }

/* ---------------------------------------------------------------- cantos retos em todo o portal (02/11/2026)
   Vale também para o CSS legado das páginas de dados. Ficam de fora: VLibras (widget do governo),
   indicadores de "carregando" (giram em círculo) e o marcador de rádio nativo. */
body.nv-body *:not([vw] *):not([class*="spin"]):not([class*="load"]):not(input[type="radio"]),
body.nv-body *:not([vw] *)::before, body.nv-body *:not([vw] *)::after { border-radius: 0 !important; }
.nv-passos li::before { border-radius: 0 !important; }

/* ---------------------------------------------------------------- paginação das tabelas (DataTables + Bootstrap) — 02/11/2026
   Marcação: .dataTables_paginate > ul.pagination > li.paginate_button(.active|.disabled|.previous|.next) > a
   O CSS legado de cada página desenhava caixa no <li> E no <a> (caixa dentro de caixa). Aqui: o <li> é neutro, só o <a> é botão. */
body.nv-modo-dados .dataTables_wrapper .dataTables_info { float: left !important; clear: none !important; padding: 26px 0 0 !important; margin: 0 !important; font: 400 14px/1.4 var(--nv-fonte) !important; color: var(--nv-suave) !important; background: none !important; border: 0 !important; }
body.nv-modo-dados .dataTables_wrapper .dataTables_paginate { float: right !important; display: block !important; padding: 16px 0 0 !important; margin: 0 !important; background: none !important; border: 0 !important; text-align: right !important; }
body.nv-modo-dados .dataTables_wrapper::after { content: ""; display: table; clear: both; }
body.nv-modo-dados .dataTables_paginate ul.pagination { display: flex !important; flex-wrap: wrap; justify-content: flex-end; gap: 6px; margin: 0 !important; padding: 0 !important; background: none !important; border: 0 !important; }
body.nv-modo-dados .dataTables_wrapper .dataTables_paginate li.paginate_button,
body.nv-modo-dados .dataTables_wrapper .dataTables_paginate li.paginate_button:hover,
body.nv-modo-dados .dataTables_wrapper .dataTables_paginate li.paginate_button.current,
body.nv-modo-dados .dataTables_wrapper .dataTables_paginate li.paginate_button.disabled { display: block !important; min-width: 0 !important; height: auto !important; margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; box-shadow: none !important; transform: none !important; opacity: 1 !important; }
body.nv-modo-dados .dataTables_paginate li.paginate_button > a,
body.nv-modo-dados .pagination > li > a, body.nv-modo-dados .pagination > li > span { display: inline-flex !important; align-items: center; justify-content: center; gap: 6px; min-width: 42px; height: 42px; margin: 0 !important; padding: 0 14px !important; border: 1px solid var(--nv-borda-forte) !important; background: #fff !important; color: var(--nv-tinta) !important; font: 500 14px/1 var(--nv-fonte) !important; text-decoration: none !important; box-shadow: none !important; transform: none !important; float: none !important; }
body.nv-modo-dados .dataTables_paginate li.paginate_button:not(.disabled):not(.active) > a:hover,
body.nv-modo-dados .pagination > li:not(.disabled):not(.active) > a:hover { border-color: var(--nv-verde) !important; background: var(--nv-verde-fundo) !important; color: var(--nv-verde-escuro) !important; }
body.nv-modo-dados .dataTables_paginate li.paginate_button.active > a,
body.nv-modo-dados .pagination > li.active > a, body.nv-modo-dados .pagination > li.active > span { background: var(--nv-verde) !important; border-color: var(--nv-verde) !important; color: #fff !important; font-weight: 700 !important; cursor: default; }
body.nv-modo-dados .dataTables_paginate li.paginate_button.disabled > a,
body.nv-modo-dados .pagination > li.disabled > a { background: var(--nv-fundo-2) !important; border-color: var(--nv-borda) !important; color: #9ca3af !important; cursor: not-allowed; pointer-events: none; }
/* reticências: sem caixa */
body.nv-modo-dados .dataTables_paginate li.paginate_button.disabled:not(.previous):not(.next) > a { background: none !important; border-color: transparent !important; min-width: 24px; padding: 0 4px !important; color: var(--nv-suave) !important; }
/* setas em Anterior / Próximo */
body.nv-modo-dados .dataTables_paginate li.previous > a::before { content: "‹"; font: 400 20px/1 var(--nv-fonte); margin-top: -2px; }
body.nv-modo-dados .dataTables_paginate li.next > a::after { content: "›"; font: 400 20px/1 var(--nv-fonte); margin-top: -2px; }
/* DataTables sem Bootstrap (a.paginate_button direto) */
body.nv-modo-dados .dataTables_paginate > a.paginate_button, body.nv-modo-dados .dataTables_paginate > span > a.paginate_button { display: inline-flex !important; align-items: center; justify-content: center; min-width: 42px; height: 42px; margin: 0 3px 0 0 !important; padding: 0 14px !important; border: 1px solid var(--nv-borda-forte) !important; background: #fff !important; color: var(--nv-tinta) !important; }
body.nv-modo-dados .dataTables_paginate a.paginate_button.current { background: var(--nv-verde) !important; border-color: var(--nv-verde) !important; color: #fff !important; }
@media (max-width: 768px) {
  body.nv-modo-dados .dataTables_wrapper .dataTables_info, body.nv-modo-dados .dataTables_wrapper .dataTables_paginate { float: none !important; text-align: center !important; padding-top: 14px !important; }
  body.nv-modo-dados .dataTables_paginate ul.pagination { justify-content: center; }
  body.nv-modo-dados .dataTables_paginate li.paginate_button > a { min-width: 38px; height: 38px; padding: 0 10px !important; }
}

/* ---------------------------------------------------------------- gráficos das páginas de dados (licitações por modalidade) */
.nv-grafico { background: #fff; border: 1px solid var(--nv-borda); border-top: 4px solid var(--nv-verde); padding: 24px; margin: 0 0 24px; }
.nv-grafico[hidden] { display: none !important; }
.nv-grafico-cab h2 { font: 650 22px/1.2 var(--nv-fonte) !important; color: var(--nv-tinta) !important; letter-spacing: -.01em; margin: 0 0 6px !important; }
.nv-grafico-cab p { margin: 0 0 20px; font: 400 14px/1.5 var(--nv-fonte); color: var(--nv-suave); }
.nv-grafico-corpo { display: grid; grid-template-columns: minmax(240px, 340px) 1fr; gap: 40px; align-items: center; }
@media (max-width: 860px) { .nv-grafico-corpo { grid-template-columns: 1fr; gap: 24px; } }
.nv-grafico-rosca { position: relative; height: 320px; max-width: 340px; width: 100%; margin: 0 auto; }
.nv-grafico-total { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; }
.nv-grafico-total b { font: 700 40px/1 var(--nv-fonte); color: var(--nv-tinta); letter-spacing: -.03em; }
.nv-grafico-total span { margin-top: 6px; font: 500 13px/1 var(--nv-fonte); color: var(--nv-suave); text-transform: uppercase; letter-spacing: .08em; }
.nv-grafico-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; max-height: 340px; overflow-y: auto; }
.nv-grafico-lista button { display: grid; grid-template-columns: 14px 1fr auto; grid-template-areas: "cor nome num" ". barra barra"; align-items: center; column-gap: 10px; row-gap: 6px; width: 100%; padding: 10px 12px; border: 1px solid transparent; background: none; text-align: left; cursor: pointer; font: inherit; color: var(--nv-texto); }
.nv-grafico-lista button:hover { background: var(--nv-fundo-2); border-color: var(--nv-borda); }
.nv-grafico-lista button[aria-pressed="false"] { opacity: .45; }
.nv-grafico-lista button[aria-pressed="false"] .nv-g-nome { text-decoration: line-through; }
.nv-g-cor { grid-area: cor; width: 14px; height: 14px; }
.nv-g-nome { grid-area: nome; font: 500 14px/1.3 var(--nv-fonte); color: var(--nv-tinta); }
.nv-g-num { grid-area: num; font: 700 15px/1 var(--nv-fonte); color: var(--nv-tinta); white-space: nowrap; }
.nv-g-num small { margin-left: 6px; font: 500 12px/1 var(--nv-fonte); color: var(--nv-suave); }
.nv-g-barra { grid-area: barra; height: 6px; background: var(--nv-fundo-3); overflow: hidden; }
.nv-g-barra span { display: block; height: 100%; transition: width .6s ease; }
html.nv-contraste .nv-grafico, html.nv-contraste .nv-grafico-lista button { background: #000 !important; border-color: #fff !important; }
/* cabeçalhos com wrapper extra (licitações: .row > .col > .page-title-wrapper com linha verde) ficam iguais aos demais */
body.nv-modo-dados .page-header-section > .row, body.nv-modo-dados .page-header-section > .row > [class*="col-"] { margin: 0 !important; padding: 0 !important; }
body.nv-modo-dados .page-title-wrapper { border: 0 !important; padding: 0 !important; margin: 0 !important; }

/* ---------------------------------------------------------------- selects (02/11/2026)
   Nativos (.form-control, .form-control-modern, .ep-select) e Select2 4.1 em qualquer tema (default/bootstrap).
   A lista aberta do Select2 é anexada ao <body>, por isso o seletor do dropdown não usa .nv-conteudo. */
body.nv-modo-dados .nv-conteudo select.form-control, body.nv-modo-dados .nv-conteudo select.form-control-modern, body.nv-modo-dados .nv-conteudo select.ep-select,
body.nv-modo-dados .nv-conteudo .form-control-modern:not(select), body.nv-modo-dados .nv-conteudo input.ep-input {
  height: 44px !important; min-height: 44px; border: 1px solid var(--nv-borda-forte) !important; background-color: #fff !important; color: var(--nv-tinta) !important; font: 400 15px/1.3 var(--nv-fonte) !important; padding: 8px 12px !important; box-shadow: none !important; width: 100%;
}
body.nv-modo-dados .nv-conteudo select.form-control, body.nv-modo-dados .nv-conteudo select.form-control-modern, body.nv-modo-dados .nv-conteudo select.ep-select,
body.nv-modo-dados .dataTables_length select, .nv-busca select {
  -webkit-appearance: none !important; -moz-appearance: none !important; appearance: none !important; padding-right: 40px !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important; background-position: right 12px center !important; background-size: 16px 16px !important;
}
body.nv-modo-dados .nv-conteudo select:focus, body.nv-modo-dados .nv-conteudo .form-control-modern:focus { border-color: var(--nv-verde) !important; box-shadow: 0 0 0 3px var(--nv-verde-claro) !important; outline: 0; }
body.nv-modo-dados .nv-conteudo select[multiple] { height: auto !important; background-image: none !important; padding-right: 12px !important; }

/* Select2: caixa */
body.nv-modo-dados .select2-container { width: 100% !important; max-width: 100%; }
body.nv-modo-dados .select2-container .select2-selection--single {
  display: flex !important; align-items: center; height: 44px !important; min-height: 44px; padding: 0 40px 0 12px !important;
  border: 1px solid var(--nv-borda-forte) !important; background: #fff !important; box-shadow: none !important;
}
body.nv-modo-dados .select2-container .select2-selection--single .select2-selection__rendered { padding: 0 !important; line-height: 1.3 !important; color: var(--nv-tinta) !important; font: 400 15px/1.3 var(--nv-fonte) !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.nv-modo-dados .select2-container .select2-selection__placeholder { color: var(--nv-suave) !important; }
body.nv-modo-dados .select2-container .select2-selection--single .select2-selection__arrow {
  position: absolute !important; top: 0 !important; right: 10px !important; width: 20px !important; height: 42px !important;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat center / 16px 16px !important;
}
body.nv-modo-dados .select2-container .select2-selection__arrow b { display: none !important; }
body.nv-modo-dados .select2-container--open .select2-selection__arrow { transform: rotate(180deg); }
body.nv-modo-dados .select2-container .select2-selection__clear { margin-right: 6px; color: var(--nv-suave); font-size: 18px; }
body.nv-modo-dados .select2-container .select2-selection--multiple {
  min-height: 44px !important; padding: 4px 8px !important; border: 1px solid var(--nv-borda-forte) !important; background: #fff !important; box-shadow: none !important;
}
body.nv-modo-dados .select2-container .select2-selection--multiple .select2-selection__choice {
  margin: 3px 6px 3px 0 !important; padding: 4px 8px !important; border: 1px solid var(--nv-verde-claro) !important; background: var(--nv-verde-fundo) !important; color: var(--nv-verde-escuro) !important; font: 500 13px/1.3 var(--nv-fonte) !important;
}
body.nv-modo-dados .select2-container .select2-search--inline .select2-search__field { height: 32px !important; margin: 2px 0 !important; font: 400 15px/1.3 var(--nv-fonte) !important; }
body.nv-modo-dados .select2-container--focus .select2-selection, body.nv-modo-dados .select2-container--open .select2-selection { border-color: var(--nv-verde) !important; box-shadow: 0 0 0 3px var(--nv-verde-claro) !important; }

/* Select2: lista aberta */
body.nv-modo-dados .select2-dropdown { border: 1px solid var(--nv-verde) !important; background: #fff !important; box-shadow: var(--nv-sombra) !important; font: 400 14px/1.4 var(--nv-fonte) !important; z-index: 1060; }
body.nv-modo-dados .select2-search--dropdown { padding: 8px !important; }
body.nv-modo-dados .select2-search--dropdown .select2-search__field { height: 40px !important; padding: 6px 10px !important; border: 1px solid var(--nv-borda-forte) !important; font: 400 15px/1.3 var(--nv-fonte) !important; outline: 0; }
body.nv-modo-dados .select2-search--dropdown .select2-search__field:focus { border-color: var(--nv-verde) !important; }
body.nv-modo-dados .select2-results__option { padding: 10px 12px !important; color: var(--nv-texto) !important; }
body.nv-modo-dados .select2-results__option--selected, body.nv-modo-dados .select2-results__option[aria-selected="true"] { background: var(--nv-verde-fundo) !important; color: var(--nv-verde-escuro) !important; font-weight: 600; }
body.nv-modo-dados .select2-results__option--highlighted, body.nv-modo-dados .select2-results__option--highlighted[aria-selected] { background: var(--nv-verde) !important; color: #fff !important; }
body.nv-modo-dados .select2-results > .select2-results__options { max-height: 280px !important; }

/* título "Filtros de Pesquisa" em <h4> (despesas, receitas) igual ao .filters-header */
body.nv-modo-dados .modern-card > h4:first-child { display: flex; align-items: center; gap: 8px; margin: 0 0 20px !important; padding: 0 0 14px !important; border-bottom: 1px solid var(--nv-borda) !important; font: 650 13px/1.2 var(--nv-fonte) !important; letter-spacing: .08em; text-transform: uppercase; color: var(--nv-verde-escuro) !important; }
body.nv-modo-dados .modern-card > h4:first-child i { margin-right: 0 !important; color: var(--nv-verde) !important; font-size: 13px; }
/* botão sozinho numa coluna com <label>&nbsp;</label> (Filtrar): mesma altura dos campos */
body.nv-modo-dados .nv-conteudo .btn-block { min-height: 44px; height: 44px; display: inline-flex !important; align-items: center; justify-content: center; gap: 6px; padding: 0 12px !important; white-space: nowrap; }
body.nv-modo-dados .main-content-section > .clearfix { border: 0 !important; padding: 0 !important; background: none !important; }
body.nv-modo-dados #recdes-reports:has(#recdes-reports-container:empty) { display: none !important; }
body.nv-modo-dados #recdes-reports { margin-bottom: 24px; }

/* ---------------------------------------------------------------- hover sem deslocamento (02/11/2026)
   O CSS legado aumentava a linha (tr:hover scale 1.002) e levantava botões (translateY -1px/-2px) dentro de caixas
   com overflow escondido: a borda de cima "cortava". No padrão novo o hover é só de cor. */
body.nv-modo-dados .nv-conteudo tr:hover, body.nv-modo-dados .nv-conteudo td:hover,
body.nv-modo-dados .nv-conteudo .btn:hover, body.nv-modo-dados .nv-conteudo button:hover, body.nv-modo-dados .nv-conteudo a:hover,
body.nv-modo-dados .nv-conteudo input[type="submit"]:hover, body.nv-modo-dados .nv-conteudo .dt-button:hover,
body.nv-modo-dados .nv-conteudo .paginate_button:hover, body.nv-modo-dados .nv-conteudo .page-link:hover,
body.nv-modo-dados .nv-conteudo .category-item:hover, body.nv-modo-dados .nv-conteudo .btn-view-more:hover,
body.nv-modo-dados .nv-conteudo .btn-table-action:hover, body.nv-modo-dados .nv-conteudo .btn-modern:hover,
body.nv-modo-dados .nv-conteudo [class*="ep-"]:hover, body.nv-modo-dados .nv-conteudo .link-card:hover,
body.nv-modo-dados .nv-conteudo .link-card:hover .link-card-icon, body.nv-modo-dados .nv-conteudo .link-card:hover .link-card-arrow,
body.nv-modo-dados .nv-conteudo .google-visualization-orgchart-node:hover { transform: none !important; }
body.nv-modo-dados .nv-conteudo table.dataTable tbody tr:hover, body.nv-modo-dados .nv-conteudo .table tbody tr:hover { background: var(--nv-verde-fundo) !important; box-shadow: none !important; }
body.nv-modo-dados .dt-buttons .is-carregando { opacity: .6; pointer-events: none; cursor: progress; }
.nv-aviso-flutuante { position: fixed; left: 50%; bottom: 32px; transform: translateX(-50%); z-index: 2000; background: var(--nv-tinta); color: #fff; padding: 12px 18px; font: 500 14px/1.4 var(--nv-fonte); box-shadow: var(--nv-sombra); transition: opacity .4s; }
.nv-aviso-flutuante.is-saindo { opacity: 0; }

/* ---------------------------------------------------------------- categorias da home mais compactas (02/11/2026)
   Telas largas: descrição ao lado do título, numa linha só (mais categorias visíveis sem rolar).
   Telas menores (< 900px): continua título em cima e descrição embaixo. */
@media (min-width: 900px) {
  .nv-cats { gap: 8px !important; }
  .nv-cat > summary { padding: 10px 16px; gap: 14px; }
  .nv-cat-ico { width: 36px; height: 36px; }
  .nv-cat-ico .nv-i { width: 19px; height: 19px; }
  .nv-cat-tit { display: flex; align-items: baseline; gap: 12px; }
  .nv-cat-tit h3 { flex: none; font-size: 17px !important; white-space: nowrap; }
  .nv-cat-tit small { margin-top: 0; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .nv-cat-tit small::before { content: "—"; margin-right: 10px; color: var(--nv-borda-forte); }
}

/* ---------------------------------------------------------------- Dados Abertos (/dados-abertos) */
.nv-da-grade { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.nv-da-total { display: inline-block; margin-top: 10px; font: 600 12px/1 var(--nv-fonte); font-style: normal; color: var(--nv-verde-escuro); background: var(--nv-verde-fundo); padding: 6px 8px; }
.nv-da-sobre { margin-top: 24px; }
.nv-da-code { display: inline-block; max-width: 100%; overflow-wrap: anywhere; font: 500 13px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; background: var(--nv-fundo-3); color: var(--nv-tinta); padding: 4px 6px; }
.nv-da-filtro { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; padding: 20px; border: 1px solid var(--nv-borda); background: #fff; margin: 0 0 20px; }
.nv-da-filtro .nv-campo { flex: 0 0 170px; }
.nv-da-filtro .nv-campo-largo { flex: 1 1 280px; }
.nv-da-filtro select { width: 100%; height: 48px; border: 1px solid var(--nv-borda-forte); background: #fff; padding: 0 12px; font: 400 16px/1 var(--nv-fonte); }
.nv-da-barra { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin: 0 0 12px; }
.nv-da-info { margin: 0; color: var(--nv-suave); font: 400 15px/1.4 var(--nv-fonte); }
.nv-da-info b { color: var(--nv-tinta); }
.nv-da-baixar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font: 600 14px/1 var(--nv-fonte); color: var(--nv-texto); }
.nv-da-baixar .nv-btn { min-height: 40px; padding: 8px 14px; font-size: 14px; }
.nv-da-tabela .nv-tabela { min-width: 100%; }
.nv-da-tabela td { white-space: normal; min-width: 110px; max-width: 420px; }
.nv-da-pag { display: flex; justify-content: flex-end; align-items: center; gap: 12px; margin-top: 16px; font: 400 15px/1 var(--nv-fonte); color: var(--nv-suave); }
.nv-da-pag .nv-btn { min-height: 42px; padding: 8px 16px; }

/* ==== matriz (Matriz PNTP: só check verde para "atende"; vazio nos demais) ==== */
.nv-tabela th.nv-matriz-col-ok, .nv-tabela td.nv-matriz-col-ok { text-align: center; }
.nv-matriz-ok { display: inline-flex; align-items: center; justify-content: center; color: var(--nv-verde, #059669); }
.nv-matriz-ok .nv-i { width: 24px; height: 24px; }
.nv-matriz-vazio { color: #9ca3af; }

/* ==== dados-abertos (explicação da API: geral na página inicial e por conjunto) ==== */
.nv-da-api { margin-top: 8px; }
.nv-da-api-bloco { border: 1px solid var(--nv-borda); background: #fff; padding: 24px; margin: 0 0 16px; }
.nv-da-api-bloco h3 { font: 650 18px/1.3 var(--nv-fonte) !important; margin: 0 0 12px !important; }
.nv-da-api-bloco h4 { font: 650 15px/1.3 var(--nv-fonte) !important; margin: 0 0 8px !important; }
.nv-da-api-bloco > p { margin: 0 0 12px; }
.nv-da-refs { gap: 24px; margin: 8px 0 20px; }
.nv-da-lista { margin: 0; padding-left: 18px; font: 400 15px/1.7 var(--nv-fonte); }
.nv-da-notas { margin: 16px 0 0; }
.nv-da-doc { margin: 0 0 8px; }
.nv-da-doc .nv-tabela { min-width: 0; }
.nv-da-doc th[scope="row"] { position: static; background: #fff; font-weight: 500; white-space: nowrap; }
.nv-da-doc code, .nv-da-opcoes code { font: 500 13px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color: var(--nv-tinta); }
.nv-da-doc td small { color: var(--nv-suave); }
.nv-da-copia { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 8px; }
.nv-da-copia .nv-da-code { flex: 1 1 260px; padding: 10px 12px; }
.nv-da-copia .nv-btn { min-height: 40px; padding: 8px 14px; font-size: 14px; }
.nv-da-como { border: 1px solid var(--nv-borda); border-left: 4px solid var(--nv-verde); background: #fff; margin: 0 0 8px; }
.nv-da-como > summary { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; padding: 16px 20px; cursor: pointer; list-style: none; font: 650 18px/1.3 var(--nv-fonte); color: var(--nv-tinta); background: var(--nv-verde-fundo); }
.nv-da-como > summary::-webkit-details-marker { display: none; }
.nv-da-como > summary::after { content: "+"; margin-left: auto; font: 600 22px/1 var(--nv-fonte); color: var(--nv-verde-escuro); }
.nv-da-como[open] > summary::after { content: "–"; }
.nv-da-como > summary .nv-i { color: var(--nv-verde-escuro); }
.nv-da-como > summary small { flex-basis: 100%; font: 400 14px/1.4 var(--nv-fonte); color: var(--nv-suave); padding-left: 34px; }
.nv-da-como-corpo { padding: 20px; }
.nv-da-pular { margin: 0 0 12px; font: 500 14px/1.4 var(--nv-fonte); }
.nv-da-resumo { margin: 0 0 16px; font: 400 16px/1.55 var(--nv-fonte); color: var(--nv-texto); }
.nv-da-ficha { display: grid; grid-template-columns: 200px 1fr; gap: 10px 16px; margin: 0 0 20px; }
.nv-da-ficha dt { font: 600 14px/1.5 var(--nv-fonte); color: var(--nv-tinta); padding-top: 8px; }
.nv-da-ficha dd { margin: 0; font: 400 15px/1.7 var(--nv-fonte); min-width: 0; }
.nv-da-ficha dd .nv-da-copia { margin: 0; }
@media (max-width: 640px) { .nv-da-ficha { grid-template-columns: 1fr; gap: 2px; } .nv-da-ficha dd { margin-bottom: 10px; } .nv-da-como-corpo, .nv-da-api-bloco { padding: 16px; } }
.nv-da-h3 { font: 650 17px/1.3 var(--nv-fonte) !important; margin: 24px 0 10px !important; }
.nv-da-opcoes { margin-top: 6px; }
.nv-da-opcoes > summary { cursor: pointer; color: var(--nv-verde-escuro); font: 600 13px/1.4 var(--nv-fonte); }
.nv-da-opcoes table { border-collapse: collapse; margin-top: 6px; font: 400 13px/1.4 var(--nv-fonte); }
.nv-da-opcoes th, .nv-da-opcoes td { position: static; border: 1px solid var(--nv-borda); padding: 4px 8px; background: #fff; text-align: left; }
.nv-da-sub { margin: 12px 0 0; border: 1px solid var(--nv-borda); }
.nv-da-sub > summary { cursor: pointer; padding: 12px 16px; font: 600 15px/1.3 var(--nv-fonte); color: var(--nv-tinta); background: var(--nv-fundo-2); }
.nv-da-sub > *:not(summary) { margin-left: 16px; margin-right: 16px; }
.nv-da-sub > .nv-nota { margin-bottom: 12px; }
.nv-da-pre { margin: 8px 0 0; padding: 14px 16px; background: var(--nv-tinta); color: #e5e7eb; overflow-x: auto; font: 500 13px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; max-height: 420px; white-space: pre; }
.nv-da-pre code { font: inherit; color: inherit; background: none; }
#da-dados { scroll-margin-top: 90px; }
html.nv-contraste .nv-da-como, html.nv-contraste .nv-da-como > summary, html.nv-contraste .nv-da-api-bloco, html.nv-contraste .nv-da-sub > summary { background: #000 !important; color: #fff !important; border-color: #fff !important; }
.nv-da-doc th[scope="row"] { vertical-align: top; }
@media (max-width: 640px) {
  .nv-da-doc { border: 0; overflow: visible; }
  .nv-da-doc .nv-tabela, .nv-da-doc .nv-tabela tbody, .nv-da-doc .nv-tabela tr { display: block; width: 100%; }
  .nv-da-doc .nv-tabela thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .nv-da-doc .nv-tabela tr { border: 1px solid var(--nv-borda); border-bottom: 0; padding: 10px 12px; }
  .nv-da-doc .nv-tabela tr:last-child { border-bottom: 1px solid var(--nv-borda); }
  .nv-da-doc .nv-tabela th[scope="row"], .nv-da-doc .nv-tabela td { display: inline; padding: 0; border: 0; white-space: normal; overflow-wrap: anywhere; }
  .nv-da-doc .nv-tabela th[scope="row"] { font-weight: 650; margin-right: 8px; }
  .nv-da-doc .nv-tabela td + td { display: block; margin-top: 4px; }
  .nv-da-doc .nv-tabela td:nth-of-type(1) code { color: var(--nv-suave); }
}

/* ==== exportacao ==== */
/* barra criada pelo novo-dados.js (6) em tabelas sem exportação; herda o visual de .dt-buttons */
body.nv-modo-dados .nv-exp-barra { align-items: center; margin: 0 0 12px !important; }
body.nv-modo-dados .nv-exp-barra .nv-exp-rotulo { font: 600 13px/1 var(--nv-fonte); color: var(--nv-suave); margin-right: 4px; }
body.nv-modo-dados .nv-exp-barra .dt-button { cursor: pointer; border-radius: 0 !important; }
html.nv-contraste body.nv-modo-dados .nv-exp-barra .nv-exp-rotulo { color: #fff; }

/* ==== emendas ==== */
/* emendas-parlamentares: o .ep-table-wrap tinha overflow:hidden e a tabela (11 colunas) é mais larga que o
   conteúdo em telas até ~1450 px — a coluna "Ações" (botão Ver detalhes) ficava cortada/invisível.
   Agora: rolagem horizontal na própria tabela, células mais compactas e coluna Ações fixa à direita. */
body.nv-modo-dados .ep-table-wrap { overflow-x: auto !important; overflow-y: visible !important; border-radius: 0 !important; -webkit-overflow-scrolling: touch; }
body.nv-modo-dados .ep-table-wrap > .ep-table > thead > tr > th { padding: 12px 10px; }
body.nv-modo-dados .ep-table-wrap > .ep-table > tbody > tr.ep-row-data > td { padding: 14px 10px; }
body.nv-modo-dados .ep-table .ep-toggle-details { white-space: nowrap; }
@media (min-width: 901px) {
  body.nv-modo-dados .ep-table-wrap > .ep-table > thead > tr > th:last-child,
  body.nv-modo-dados .ep-table-wrap > .ep-table > tbody > tr.ep-row-data > td:last-child { position: sticky; right: 0; z-index: 1; background: #fff; box-shadow: -1px 0 0 var(--nv-borda); }
  body.nv-modo-dados .ep-table-wrap > .ep-table > thead > tr > th:last-child { background: var(--ep-table-head, #f9fafb); }
  body.nv-modo-dados .ep-table-wrap > .ep-table > tbody > tr.ep-row-data:hover > td:last-child { background: var(--ep-accent-soft, #ecfdf5); }
  /* a linha de detalhes ocupa a largura visível, sem depender da rolagem horizontal */
  body.nv-modo-dados .ep-table-wrap > .ep-table > tbody > tr.ep-row-details > td > .ep-details-inner { position: sticky; left: 0; max-width: calc(min(var(--nv-max, 1200px), 100vw) - 50px); box-sizing: border-box; }
}
html.nv-contraste body.nv-modo-dados .ep-table-wrap > .ep-table > thead > tr > th:last-child,
html.nv-contraste body.nv-modo-dados .ep-table-wrap > .ep-table > tbody > tr.ep-row-data > td:last-child { background: #000 !important; }

/* ==== revisor: menu lateral fechado não alarga a página no celular ==== */
/* O menu fechado ficava deslocado (translateX(100%)) para fora da tela e o Chrome móvel alargava a viewport
   de 390 para 730 px (botões fixos fora do lugar, rolagem lateral). Fechado, ele fica no lugar e invisível. */
@media (max-width: 1080px) {
  .nv-nav { transition: opacity .2s ease, visibility .2s; }
  .nv-nav:not(.is-aberto) { transform: none; visibility: hidden; opacity: 0; }
}
/* licitações: os 3 botões do filtro (Pesquisar / gráfico / Regulamentação) quebram linha no celular em vez de alargar a página */
body.nv-modo-dados .form-actions { flex-wrap: wrap; }

/* ==== agente ajustes (02/11): cabeçalho fixo, rolagem lateral no celular, dados abertos ==== */
/* Cabeçalho fixo: o .nv-header é sticky, mas ficava dentro da div.nv-casca (barra de acessibilidade + cabeçalho +
   trilha, ~121 px) e por isso rolava junto com ela. A casca do topo vira "display: contents" (a caixa some, as regras
   .nv-casca * continuam valendo) e o sticky passa a valer para a página inteira. A altura real do cabeçalho vai para
   --nv-cab-h (novo.js) e é usada no deslocamento das âncoras, para o título não ficar escondido embaixo dele. */
.nv-casca-topo { display: contents; }
.nv-header { position: sticky; top: 0; z-index: 900; }
html { scroll-padding-top: 0; }
[id], .nv-cat, #da-dados, #da-api-conj { scroll-margin-top: calc(var(--nv-cab-h, 80px) + 12px); }
/* no celular o menu lateral (position: fixed) mora dentro do cabeçalho: sem backdrop-filter ele volta a ocupar a tela toda */
@media (max-width: 1080px) { .nv-header { backdrop-filter: none; -webkit-backdrop-filter: none; background: #fff; } }
html.nv-contraste .nv-header { background: #000 !important; }

/* Rolagem lateral no celular (390 px) */
/* .nv-sr (texto para leitor de tela, position:absolute) dentro de tabelas roláveis escapava do recorte e alargava a
   página (Matriz PNTP: viewport 695 px). O invólucro passa a ser o bloco de contenção. */
.nv-tabela-wrap, .nv-da-doc { position: relative; }
/* Diário Oficial na home: campos de data com largura mínima própria empurravam a grade 3 px para fora */
.nv-doem-busca > * { min-width: 0; }
.nv-doem-busca input { min-width: 0; max-width: 100%; }
@media (max-width: 900px) { .nv-doem-busca { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
@media (max-width: 420px) { .nv-doem-busca { padding: 14px; gap: 10px; } }
/* Editais (Doem) e demais listas carregadas do Doem: tabela larga rola dentro da caixa, não a página */
body.nv-modo-dados #doem-container { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
body.nv-modo-dados #doem-container > table, body.nv-modo-dados #doem-container table.table { margin-bottom: 0; }
/* Emendas parlamentares: no celular a linha de detalhes (cartões de autoridade com mínimo de 280 px) passava ~20 px da borda */
@media (max-width: 900px) {
  body.nv-modo-dados .ep-table-wrap > .ep-table { width: 100%; min-width: 0; }
  body.nv-modo-dados .ep-details-inner { padding: 14px; max-width: 100%; }
  body.nv-modo-dados .ep-details-inner * { min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
  body.nv-modo-dados .ep-autoridades-grid { grid-template-columns: minmax(0, 1fr); }
}

/* Dados abertos: explicação completa (igual ao sistema LAI) */
.nv-da-desc { display: block; }
.nv-da-formato { display: block; margin-top: 2px; color: var(--nv-suave); }
.nv-da-tipo > summary small { font-weight: 400; color: var(--nv-suave); }
.nv-da-tipo-link { text-decoration: none; border-bottom: 1px dashed currentColor; }
.nv-da-tipo:target > summary, .nv-da-tipo[open] > summary { box-shadow: inset 4px 0 0 var(--nv-verde); }
.nv-da-sub > .nv-tabela-wrap { margin-top: 12px; margin-bottom: 12px; }
@media (max-width: 640px) {
  .nv-da-doc .nv-tabela td .nv-da-desc, .nv-da-doc .nv-tabela td .nv-da-formato { display: block; }
  .nv-da-opcoes table { width: 100%; }
}

/* ==== exportação no celular (03/11/2026) ====
 * O novo-dados.js (7) põe um <select> "Exportar como…" + "Baixar" antes de cada grupo de botões de exportação.
 * Tela larga: só os botões. Até 640 px: só o select (os botões continuam no HTML e o select chama o clique deles). */
.nv-exp-sel { display: none; }
@media (max-width: 640px) {
  body .nv-exp-sel-grupo.nv-exp-sel-todo, body .nv-exp-sel-grupo .nv-exp-sel-item, body .nv-exp-sel-rotvelho { display: none !important; }
  .nv-exp-sel { display: flex; flex-direction: column; gap: 6px; width: 100%; max-width: 100%; min-width: 0; flex: 1 1 100%; margin: 0 0 12px; box-sizing: border-box; float: none; clear: both; text-align: left; }
  .nv-exp-sel label { margin: 0 !important; font: 600 14px/1.3 var(--nv-fonte) !important; color: var(--nv-tinta) !important; text-transform: none !important; letter-spacing: normal !important; }
  .nv-exp-sel-linha { display: flex; gap: 8px; width: 100%; min-width: 0; }
  .nv-exp-sel select { flex: 1 1 auto; min-width: 0; width: auto !important; height: 44px !important; min-height: 44px; margin: 0 !important; padding: 8px 36px 8px 12px !important;
    border: 1px solid var(--nv-borda-forte) !important; border-radius: 0 !important; color: var(--nv-tinta) !important; font: 400 15px/1.3 var(--nv-fonte) !important; box-shadow: none !important;
    -webkit-appearance: none; appearance: none;
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23111827' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 12px center !important; }
  .nv-exp-sel select:focus { border-color: var(--nv-verde) !important; box-shadow: 0 0 0 3px var(--nv-verde-claro) !important; outline: 0; }
  .nv-exp-sel select[aria-invalid="true"] { border-color: #b91c1c !important; }
  .nv-exp-sel-baixar { flex: 0 0 auto; min-height: 44px; padding: 0 18px; border: 1px solid var(--nv-verde) !important; border-radius: 0 !important; background: var(--nv-verde) !important; color: #fff !important;
    font: 600 15px/1 var(--nv-fonte) !important; cursor: pointer; box-shadow: none !important; }
  .nv-exp-sel-baixar:hover { background: var(--nv-verde-escuro) !important; border-color: var(--nv-verde-escuro) !important; }
  .nv-exp-sel-baixar:focus-visible, .nv-exp-sel select:focus-visible { outline: 3px solid var(--nv-foco) !important; outline-offset: 2px; }
  html.nv-contraste .nv-exp-sel label { color: #fff !important; }
  html.nv-contraste .nv-exp-sel select { background-color: #000 !important; color: #fff !important; border-color: #fff !important; }
  html.nv-contraste .nv-exp-sel-baixar { background: #000 !important; color: #ff0 !important; border-color: #ff0 !important; }
}

/* ==== revisor3 (03/11/2026): pequenos acertos em tela estreita ====
 * 1) Rodapé: o padding de .nv-rodape-grade zerava o padding lateral do .nv-wrap (conteúdo colado na borda abaixo de 1200 px).
 * 2) Contas Públicas (Doem): .form-horizontal .form-group com margem -15px dentro do #doem-container (overflow auto) cortava os rótulos.
 * 3) Busca das tabelas (DataTables) ≤ 640 px: o label tem white-space:nowrap e o campo passava da borda do card. */
.nv-wrap.nv-rodape-grade { padding-left: 24px; padding-right: 24px; }
@media (max-width: 640px) { .nv-wrap.nv-rodape-grade { padding-left: 16px; padding-right: 16px; } }
body.nv-modo-dados #doem-container .form-horizontal .form-group { margin-left: 0; margin-right: 0; }
@media (max-width: 640px) {
  body.nv-modo-dados .dataTables_filter { float: none !important; text-align: left !important; width: 100%; }
  body.nv-modo-dados .dataTables_filter label { display: block !important; width: 100% !important; white-space: normal !important; text-align: left !important; }
  body.nv-modo-dados .dataTables_filter input { display: block !important; width: 100% !important; max-width: 100%; margin: 6px 0 0 !important; }
}

/* ==== hover dos arquivos ==== (03/11, agente hover-arquivo)
   Nome de arquivo/anexo ficava branco no hover: o CSS inline das páginas (ex. page-documentos.php
   "table.dataTable tbody td:last-child .btn:hover {background:#059669;color:white!important}") dava texto
   branco, mas o novo.css forçava o fundo claro dos .btn-default -> branco sobre #f0fdf4 (1,05:1).
   Padrão único: link de arquivo em hover/foco = fundo verde-claro, texto verde-escuro sublinhado
   (≥ 4,5:1); botões verdes cheios continuam com texto branco e só escurecem o fundo.
   Fica fora dos modos de contraste do menu de acessibilidade (html.nv-contraste / html.nv-claro). */
html:not(.nv-contraste):not(.nv-claro) :is(body.nv-modo-dados, body.nv-leve) :is(.nv-conteudo, .modal) :is(
  table.dataTable tbody td:last-child a.btn, .diario-btn
) { color: var(--nv-verde-escuro) !important; }
html:not(.nv-contraste):not(.nv-claro) :is(body.nv-modo-dados, body.nv-leve) :is(.nv-conteudo, .modal) :is(
  a[href*=".pdf" i], a[href*=".doc" i], a[href*=".xls" i], a[href*=".odt" i], a[href*=".ods" i], a[href*=".zip" i], a[href*=".rar" i],
  a[href*="download" i], a[href*="/arquivo" i], a[href*="storage" i], a[href*="uploads" i], a[href*="/export/" i],
  .arquivos-list a, a.list-group-item, table.dataTable tbody td:last-child a.btn, .diario-btn
):not(.btn-modern:not(.btn-modern-secondary)):not(.nv-btn-primario):not(.btn-modern-primary):not(.btn-primary):not(.btn-success):is(:hover, :focus-visible) {
  background-color: var(--nv-verde-fundo) !important;
  background-image: none !important;
  color: var(--nv-verde-escuro) !important;
  text-decoration: underline !important;
  text-underline-offset: 2px;
  border-color: var(--nv-verde) !important;
  box-shadow: none !important;
  transform: none !important;
}
html:not(.nv-contraste):not(.nv-claro) :is(body.nv-modo-dados, body.nv-leve) :is(.nv-conteudo, .modal) :is(
  a[href*=".pdf" i], a[href*=".doc" i], a[href*=".xls" i], a[href*=".odt" i], a[href*=".ods" i], a[href*=".zip" i], a[href*=".rar" i],
  a[href*="download" i], a[href*="/arquivo" i], a[href*="storage" i], a[href*="uploads" i], a[href*="/export/" i],
  .arquivos-list a, a.list-group-item, table.dataTable tbody td:last-child a.btn, .diario-btn
):not(.btn-modern:not(.btn-modern-secondary)):not(.nv-btn-primario):not(.btn-modern-primary):not(.btn-primary):not(.btn-success):is(:hover, :focus-visible) * {
  color: inherit !important;
}
/* item da lista do modal "Lista de Arquivos": o li também fica claro, sem fundo herdado do Bootstrap */
html:not(.nv-contraste):not(.nv-claro) body.nv-modo-dados .arquivos-list .list-group-item:is(:hover, :focus-within) { background-color: var(--nv-verde-fundo) !important; }
/* texto da prosa (posts/páginas leves): o hover ia para #059669 (3,77:1); fica verde-escuro sublinhado */
html:not(.nv-contraste):not(.nv-claro) body.nv-leve .nv-prosa a:not(.nv-btn):is(:hover, :focus-visible) { color: var(--nv-verde-escuro) !important; text-decoration: underline !important; }
/* botões verdes cheios (Baixar PDF, Diário): texto branco, fundo escurece */
html:not(.nv-contraste):not(.nv-claro) :is(body.nv-modo-dados, body.nv-leve) :is(a.btn-modern:not(.btn-modern-secondary), a.nv-btn-primario, a.btn-modern-primary):is(:hover, :focus-visible) {
  background-color: var(--nv-verde-escuro) !important; background-image: none !important; border-color: var(--nv-verde-escuro) !important; color: #fff !important;
}
/* foco por teclado visível em todos eles */
:is(body.nv-modo-dados, body.nv-leve) :is(.nv-conteudo, .modal) :is(
  a[href*=".pdf" i], a[href*=".doc" i], a[href*=".xls" i], a[href*="download" i], a[href*="/arquivo" i], a[href*="storage" i], a[href*="uploads" i], a[href*="/export/" i],
  .arquivos-list a, a.list-group-item, table.dataTable tbody td:last-child a.btn, .diario-btn, a.btn-modern, a.nv-btn-primario
):focus-visible { outline: 2px solid var(--nv-verde-escuro) !important; outline-offset: 2px !important; }
/* ==== hover dos arquivos (2) ==== nome do arquivo no modal "Lista de Arquivos": em repouso era azul do Bootstrap
   (#428bca, 3,63:1) ou #059669 (3,77:1); fica verde-escuro, e o item inteiro (li) em hover clareia sem perder o texto */
html:not(.nv-contraste):not(.nv-claro) body.nv-modo-dados .arquivos-list a { color: var(--nv-verde-escuro) !important; }
html:not(.nv-contraste):not(.nv-claro) body.nv-modo-dados .arquivos-list .list-group-item:is(:hover, :focus-within) a { color: var(--nv-verde-escuro) !important; text-decoration: underline !important; }

/* ==== largura total das páginas de dados ==== (03/11/2026, agente largura)
 * Pedido do usuário: listas/tabelas ocupam TODA a largura da janela (antes: grade de 1200 px e rolagem lateral).
 * Vale para body.nv-largo = todas as páginas do modo dados + páginas leves com tabela (dados-abertos, matriz-pntp).
 * Cabeçalho, trilha, título e rodapé acompanham a mesma largura para alinhar. Home e páginas de texto (prosa)
 * NÃO têm nv-largo e continuam com a grade de leitura. Respiro lateral fluido: --nv-lateral. */
body.nv-largo { --nv-max: 100%; --nv-lateral: clamp(16px, 2vw, 32px); } /* mín. 16: as .row do Bootstrap têm margem -15 px */
body.nv-largo .nv-wrap,
body.nv-largo .nv-wrap.nv-rodape-grade { max-width: none; padding-left: var(--nv-lateral); padding-right: var(--nv-lateral); }
body.nv-largo.nv-modo-dados .licitacoes-fullwidth,
body.nv-largo.nv-modo-dados .nv-conteudo > .row,
body.nv-largo.nv-modo-dados .nv-conteudo > .container,
body.nv-largo.nv-modo-dados .nv-conteudo > .container-fluid,
body.nv-largo.nv-modo-dados .nv-conteudo > .main-content-section,
body.nv-largo.nv-modo-dados .ep-page { max-width: none !important; width: auto !important; padding-left: var(--nv-lateral) !important; padding-right: var(--nv-lateral) !important; }
/* containers do Bootstrap aninhados (largura fixa de 970/1170 px) */
body.nv-largo.nv-modo-dados .nv-conteudo .container { width: auto !important; max-width: none !important; }
body.nv-largo.nv-modo-dados .licitacoes-fullwidth .container,
body.nv-largo.nv-modo-dados .nv-conteudo > .container .container { padding-left: 0; padding-right: 0; }
/* cartões com padding um pouco menor em telas médias, para sobrar largura à tabela */
@media (max-width: 1400px) {
  body.nv-largo.nv-modo-dados .main-content-section > .dataTables-container,
  body.nv-largo.nv-modo-dados .main-content-section > div:not(.row):not(.modern-card):not(.clearfix):not(#recdes-reports) { padding: 16px; }
}

/* tabelas: 100% da largura disponível (DataTables grava width em px inline; o JS de novo-dados.js recalcula no resize) */
body.nv-largo .nv-conteudo table.dataTable,
body.nv-largo .nv-conteudo table.table,
body.nv-largo .nv-conteudo .dataTables_wrapper,
body.nv-largo .nv-conteudo .dataTables_scrollHeadInner,
body.nv-largo .nv-conteudo .dataTables_scrollHeadInner > table { width: 100% !important; max-width: 100%; }
body.nv-largo .nv-conteudo table.dataTable,
body.nv-largo .nv-conteudo table.table { max-width: none; }
/* texto longo quebra a linha; números, valores e datas (.nv-td-num, marcado pelo JS) não */
body.nv-largo .nv-conteudo table.dataTable td,
body.nv-largo .nv-conteudo table.table td,
body.nv-largo .nv-conteudo table.nowrap td { white-space: normal !important; overflow-wrap: break-word; word-break: normal; }
body.nv-largo .nv-conteudo table.dataTable th,
body.nv-largo .nv-conteudo table.table th { white-space: normal !important; }
body.nv-largo .nv-conteudo table td.nv-td-num { white-space: nowrap !important; }
/* invólucros de tabela: rolam por dentro só quando é inevitável (nunca a página) */
body.nv-largo .nv-conteudo .table-responsive,
body.nv-largo .nv-conteudo .index-table { width: 100%; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
/* emendas: o detalhe aberto acompanha a largura visível */
@media (min-width: 901px) {
  body.nv-largo.nv-modo-dados .ep-table-wrap > .ep-table > tbody > tr.ep-row-details > td > .ep-details-inner { max-width: calc(100vw - 2 * var(--nv-lateral) - 60px); }
}
/* dados abertos: células de texto podiam chegar a 420 px; agora quebram mais cedo */
body.nv-largo .nv-da-tabela td { max-width: 320px; }
/* textos de apoio (lead, avisos) continuam com largura de leitura */
body.nv-largo .nv-dados-lead, body.nv-largo .nv-lead { max-width: 760px; }
/* botões/links de arquivo dentro das células (.btn do Bootstrap é nowrap): nomes longos quebram em vez de alargar a coluna */
body.nv-largo .nv-conteudo table td .btn,
body.nv-largo .nv-conteudo table td a { white-space: normal; overflow-wrap: anywhere; }
body.nv-largo .nv-conteudo table td .btn { text-align: left; height: auto; }
/* Contas Públicas (Doem): .row com margem -10 px passava 10 px da borda do #doem-container (rolagem à toa) */
body.nv-largo.nv-modo-dados #doem-container .row { margin-left: 0; margin-right: 0; }
/* celular: tabela DataTables sem invólucro com rolagem (ex. documentos?tipo=relacao-nominal...) alargava a página;
   o próprio wrapper passa a rolar por dentro */
@media (max-width: 768px) {
  body.nv-largo .nv-conteudo .dataTables_wrapper { overflow-x: auto; -webkit-overflow-scrolling: touch; }
}
/* título longo sem espaço ("Servidores/Autoridades/Membros") alargava a página no celular */
@media (max-width: 640px) { body.nv-modo-dados h1.page-title, body.nv-modo-dados .ep-page-header h1 { overflow-wrap: anywhere; } }
/* ...mas o botão de arquivo não pode espremer a ponto de quebrar letra a letra */
body.nv-largo .nv-conteudo table td .btn { min-width: 12em; }
@media (max-width: 640px) { body.nv-largo .nv-conteudo table td .btn { min-width: 9em; } }
body.nv-largo .nv-conteudo table td .btn small { white-space: nowrap; overflow-wrap: normal; }
body.nv-largo .nv-conteudo table td a.btn { display: inline-block !important; line-height: 1.35 !important; }
body.nv-largo .nv-conteudo table td a.btn small { display: block; margin-top: 2px; }

/* ==== revisor largura: botão de acessibilidade × conteúdo ==== (03/11/2026, revisor4)
 * Com a margem lateral menor (largura total), o botão flutuante de 52 px cobria o início de campos/botões à esquerda.
 * a) o botão vira uma aba estreita (28 px) encostada na borda; ao passar o mouse/foco (ou com o menu aberto) abre para 52 px;
 * b) nas páginas largas a margem lateral mínima passa a 34 px a partir de 641 px (a aba nunca cobre conteúdo;
 *    também folga o botão do VLibras à direita). Margens continuam iguais dos dois lados. */
.nv-a11y-flut-btn { width: 28px; height: 52px; transition: width .15s ease; overflow: hidden; }
.nv-a11y-flut-btn .nv-i { width: 22px; height: 22px; flex: none; }
.nv-a11y-flut-btn:hover, .nv-a11y-flut-btn:focus-visible, .nv-a11y-flut-btn[aria-expanded="true"] { width: 52px; }
.nv-a11y-flut-btn:hover .nv-i, .nv-a11y-flut-btn:focus-visible .nv-i, .nv-a11y-flut-btn[aria-expanded="true"] .nv-i { width: 28px; height: 28px; }
.nv-a11y-painel { left: 60px; }
@media (max-width: 640px) { .nv-a11y-flut-btn { width: 28px; height: 46px; } .nv-a11y-flut-btn[aria-expanded="true"] { width: 46px; } }
@media (prefers-reduced-motion: reduce) { .nv-a11y-flut-btn { transition: none; } }
@media (min-width: 641px) { body.nv-largo { --nv-lateral: clamp(34px, 2.5vw, 40px); } }
/* emendas: as duas faixas de valor (mín/máx) ocupam 2 colunas cada, para os textos dos campos não ficarem cortados */
@media (min-width: 1101px) { body.nv-largo .ep-filters-grid .ep-range-group { grid-column: span 2; } }
/* painel de acessibilidade: "Atalho: Alt + A" — o kbd do Bootstrap (cor branca) ficava invisível no fundo claro */
.nv-a11y-dica kbd { color: var(--nv-tinta); box-shadow: none; }

/* ==== cabeçalho: nome, e-mail, telefone e redes na barra do topo ==== (03/11/2026, agente cabecalho)
 * A faixa cinza (.nv-a11y) ganhou à esquerda: nome da entidade · e-mail · telefone · redes sociais (itens vazios não saem).
 * Os atalhos visíveis (Conteúdo 1, Menu 2...) só aparecem quando a barra é larga (container query: páginas largas em
 * telas grandes); nos demais casos continuam no .nv-pular (aparece no foco/Tab) e nos accesskey 1–4.
 * Barra larga demais para uma linha: some primeiro o nome (já está ao lado do logo, logo abaixo); ≤ 900 px e-mail e
 * telefone viram só ícone (o texto continua para leitor de tela). Cor da faixa mantida (#3c3c3c, branco = 11:1). */
.nv-a11y .nv-wrap { container: nvtopo / inline-size; }
.nv-a11y .nv-atalhos { display: none; }
@container nvtopo (min-width: 1500px) { .nv-a11y .nv-atalhos { display: flex; } .nv-a11y .nv-atalhos + .nv-topo-contato .nv-topo-nome { padding-left: 10px; border-left: 1px solid rgba(255, 255, 255, .4); } }
.nv-topo-contato { display: flex; align-items: center; gap: 0 6px; min-width: 0; flex-wrap: wrap; margin-right: auto; }
.nv-topo-nome { font-weight: 650; white-space: nowrap; padding: 7px 12px 7px 0; margin-right: 2px; border-right: 1px solid rgba(255, 255, 255, .4); line-height: 1; }
.nv-a11y .nv-topo-canais, .nv-a11y .nv-topo-redes { gap: 0; flex-wrap: nowrap; }
.nv-a11y .nv-topo-canais a { white-space: nowrap; }
.nv-a11y .nv-topo-redes a { padding: 7px; }
.nv-a11y .nv-topo-contato .nv-i { width: 16px; height: 16px; }
@container nvtopo (max-width: 1099px) { .nv-topo-nome { display: none; } }
@media (max-width: 900px) {
  .nv-topo-txt { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
  .nv-a11y .nv-topo-canais a { padding: 7px; }
  .nv-topo-nome { display: none; }
}
@media (max-width: 760px) { .nv-a11y .nv-wrap { justify-content: space-between; } }
@media (max-width: 420px) {
  .nv-a11y .nv-wrap { gap: 0; padding-left: 8px; padding-right: 8px; }
  .nv-a11y .nv-topo-ferramentas { gap: 0; }
  .nv-a11y .nv-topo-ferramentas a, .nv-a11y .nv-topo-ferramentas button, .nv-a11y .nv-topo-contato a { padding: 7px 6px; }
}
html.nv-contraste .nv-topo-nome { border-color: #fff !important; color: #fff !important; }
/* "Acessibilidade" (fundo verde na faixa): branco sobre #059669 dava 3,8:1; com o verde escuro do tema dá 5,5:1 */
.nv-a11y .nv-a11y-simbolo { background: var(--nv-verde-escuro); }
.nv-a11y .nv-a11y-simbolo:hover { background: #065f46; }

/* ==== faixa do topo: atalhos visíveis em ≥ 1024 px ==== (03/11/2026, revisor5)
 * Os atalhos "Conteúdo 1 · Menu 2 · Busca 3 · Rodapé 4" voltam a aparecer sempre que a faixa (container nvtopo) tiver
 * ≥ 940 px (= janela ≥ ~1000 px), em versão compacta (12 px, rótulo + tecla), à esquerda e na ordem do DOM (= ordem do Tab).
 * Para caber numa linha (~40 px): abaixo de 1500 px de faixa as ferramentas mostram só o ícone (o rótulo continua
 * para leitor de tela e no title); o nome some < 1100 px (já está ao lado do logo). < 940 px: como antes (atalhos no .nv-pular). */
@container nvtopo (min-width: 940px) {
  .nv-a11y .nv-atalhos { display: flex; gap: 0; padding-right: 6px; margin-right: 4px; border-right: 1px solid rgba(255, 255, 255, .4); }
  .nv-a11y .nv-atalhos + .nv-topo-contato .nv-topo-nome { padding-left: 0; border-left: 0; }
}
/* Uma linha só: a faixa inteira (.nv-a11y = container nvfaixa) ≥ 1000 px não quebra; se faltar espaço (nome/e-mail
 * longos), encolhe primeiro o nome e depois o e-mail, com reticências (texto completo no title/leitor de tela). */
.nv-a11y { container: nvfaixa / inline-size; }
@container nvfaixa (min-width: 1000px) {
  .nv-a11y .nv-wrap { flex-wrap: nowrap; gap: 4px; }
  .nv-a11y .nv-atalhos, .nv-a11y .nv-topo-ferramentas, .nv-a11y .nv-topo-redes { flex: none; }
  .nv-a11y .nv-topo-contato { flex: 1 1 auto; min-width: 0; flex-wrap: nowrap; }
  .nv-a11y .nv-topo-nome { flex: 0 100000 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
  .nv-a11y .nv-topo-canais { flex: 0 1 auto; min-width: 0; }
  .nv-a11y .nv-topo-canais li { min-width: 0; }
  .nv-a11y .nv-topo-canais li + li { flex: none; }
  .nv-a11y .nv-topo-canais a { max-width: 100%; }
  .nv-a11y .nv-topo-canais .nv-i { flex: none; }
  .nv-a11y .nv-topo-txt { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}
@container nvtopo (min-width: 940px) and (max-width: 1499px) {
  .nv-a11y .nv-atalhos a { padding: 7px 6px; gap: 4px; font-size: 12px; }
  .nv-a11y .nv-atalhos kbd { font-size: 10px; padding: 2px 4px; }
  .nv-a11y .nv-topo-contato { flex-wrap: nowrap; gap: 0 2px; }
  .nv-a11y .nv-topo-canais a { padding: 7px 6px; }
  .nv-a11y .nv-topo-redes a { padding: 7px 5px; }
  .nv-a11y .nv-topo-ferramentas { gap: 0; flex-wrap: nowrap; }
  .nv-a11y .nv-topo-ferramentas a, .nv-a11y .nv-topo-ferramentas button { padding: 7px 7px; }
  .nv-a11y .nv-topo-ferramentas .nv-rot { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
}
/* Alto contraste: botões da lupa e "Menu" do cabeçalho ficavam brancos com ícone/texto brancos (invisíveis). */
html.nv-contraste .nv-header .nv-btn-icone { background: #000 !important; border-color: #fff !important; color: #fff !important; }
html.nv-contraste .nv-header .nv-btn-icone:hover { background: #222 !important; }

/* ==== categorias abertas com o fundo do hover + ícone nos cards (03/11/2026, IBDM_NOVO_VERSAO 20261103m) ====
   1) Categoria ABERTA (<details open>) mantém o cinza do hover no cabeçalho (#f9fafb; título #111827 = 17:1, descrição #6b7280 = 4,6:1),
      com um filete embaixo (box-shadow, sem mexer na altura). Alto contraste: preto/cinza-escuro com filete branco; contraste claro: cinza claro.
   2) Ícone do card (ibdm_card_icone(): o mesmo significado do ícone Font Awesome do card no tema antigo), quadrado reto à esquerda do título. */
.nv-cat[open] > summary { background: var(--nv-fundo-2); box-shadow: inset 0 -1px 0 var(--nv-borda); }
html.nv-contraste .nv-cat > summary { background: #000 !important; }
html.nv-contraste .nv-cat > summary:hover, html.nv-contraste .nv-cat[open] > summary { background: #1f1f1f !important; box-shadow: inset 0 -2px 0 #fff !important; }
html.nv-claro .nv-cat > summary:hover, html.nv-claro .nv-cat[open] > summary { background-color: #f0f0f0 !important; box-shadow: inset 0 -2px 0 #000 !important; }
html.nv-claro .nv-cat > summary:hover *:not(svg):not(use):not(path), html.nv-claro .nv-cat[open] > summary *:not(svg):not(use):not(path):not(.nv-cat-ico):not(.nv-cat-cont) { background-color: transparent !important; }

.nv-card .nv-card-cab { display: flex; align-items: center; gap: 10px; padding-right: 24px; min-width: 0; }
.nv-card .nv-card-cab strong { padding-right: 0; min-width: 0; overflow-wrap: anywhere; }
.nv-card .nv-card-ico { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 0; background: var(--nv-verde-fundo); color: var(--nv-verde-escuro); transition: background-color .15s, color .15s; }
.nv-card .nv-card-ico .nv-i { width: 17px; height: 17px; }
.nv-card:hover .nv-card-ico, .nv-card:focus-visible .nv-card-ico { background: var(--nv-verde-escuro); color: #fff; }
@media (max-width: 640px) {
  .nv-card .nv-card-ico { width: 28px; height: 28px; }
  .nv-card .nv-card-ico .nv-i { width: 16px; height: 16px; }
}
html.nv-contraste .nv-card .nv-card-ico { background: #000 !important; color: #ffeb3b !important; outline: 1px solid #fff; }
html.nv-claro .nv-card .nv-card-ico { background-color: #fff !important; color: #0000c8 !important; outline: 1px solid #000; }
html.nv-contraste .nv-cat-cont { background: #000 !important; color: #fff !important; outline: 1px solid #fff; } /* contador ficava branco sobre branco no alto contraste */

/* ==== manuais (03/11/2026, agente manuais): /manual-de-navegacao e /manual-estrutura-json ====
   Páginas leves; sumário lateral fixo em telas largas; âncoras usam o scroll-margin de [id] (--nv-cab-h). */
.nv-manual-titulo { display: flex; align-items: center; gap: 14px; }
.nv-manual-titulo .nv-i { width: 44px; height: 44px; flex: 0 0 auto; color: var(--nv-verde); }
.nv-manual-acoes { display: flex; flex-wrap: wrap; gap: 12px; margin: 0; }
.nv-manual-acoes .nv-btn { white-space: normal; text-align: left; }
.nv-manual-grade { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; margin-top: 32px; }
.nv-manual-sumario { border: 1px solid var(--nv-borda); background: var(--nv-fundo-2); padding: 18px 20px; align-self: start; }
.nv-manual-sumario h2 { display: flex; align-items: center; gap: 8px; font-size: 17px !important; margin: 0 0 10px !important; }
.nv-manual-sumario ol { margin: 0; padding-left: 1.3em; font: 400 15px/1.45 var(--nv-fonte); }
.nv-manual-sumario li { margin: 4px 0; }
.nv-manual-sumario ol ol { padding-left: 1.1em; font-size: 14px; }
.nv-manual-sumario a { text-decoration: none; }
.nv-manual-sumario a:hover, .nv-manual-sumario a:focus { text-decoration: underline; }
@media (min-width: 1100px) {
  .nv-manual-grade { grid-template-columns: 280px minmax(0, 1fr); gap: 48px; }
  .nv-manual-sumario { position: sticky; top: calc(var(--nv-cab-h, 80px) + 16px); max-height: calc(100vh - var(--nv-cab-h, 80px) - 32px); overflow-y: auto; }
}
.nv-manual-corpo { max-width: 860px; min-width: 0; }
.nv-manual-corpo > section + section { border-top: 1px solid var(--nv-borda); margin-top: 40px; padding-top: 8px; }
.nv-manual-corpo h2 { margin-top: 1em; }
.nv-manual-corpo code, .nv-manual-tabela code { font: 500 .88em/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; background: var(--nv-fundo-3); color: var(--nv-tinta); padding: 1px 5px; overflow-wrap: anywhere; }
.nv-manual-passos { counter-reset: nvpasso; list-style: none; padding-left: 0 !important; }
.nv-manual-passos > li { counter-increment: nvpasso; position: relative; padding: 2px 0 10px 46px; }
.nv-manual-passos > li::before { content: counter(nvpasso); position: absolute; left: 0; top: 0; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; background: var(--nv-verde); color: #fff; font: 700 15px/1 var(--nv-fonte); }
.nv-manual-atual { display: flex; gap: 10px; padding: 12px 14px; background: var(--nv-verde-fundo); border: 1px solid var(--nv-verde-claro); border-left: 4px solid var(--nv-verde); font-size: 15px; line-height: 1.55; }
.nv-manual-atual > .nv-i { flex: 0 0 auto; color: var(--nv-verde-escuro); margin-top: 3px; }
.nv-manual-fig { margin: 20px 0 28px; }
.nv-manual-fig img { display: block; max-width: 100%; height: auto; border: 1px solid var(--nv-borda); border-radius: 0 !important; background: #fff; }
.nv-manual-fig figcaption { margin-top: 8px; font: 500 14px/1.45 var(--nv-fonte); color: var(--nv-texto); }
.nv-manual-fig figcaption span { display: block; font-weight: 400; color: var(--nv-suave); font-size: 13px; }
.nv-manual-tabela { margin: 16px 0 20px; }
.nv-manual-tabela .nv-tabela { min-width: 0; font-size: 14px; }
.nv-manual-tabela .nv-tabela th[scope="row"] { font-weight: 600; white-space: nowrap; background: none; position: static; }
.nv-manual-tabela .nv-tabela th, .nv-manual-tabela .nv-tabela td { border-left: 0; border-right: 0; }
.nv-manual-codigo { margin: 16px 0 24px; border: 1px solid var(--nv-borda-forte); background: var(--nv-tinta); }
.nv-manual-codigo-barra { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 6px 6px 6px 14px; background: #1f2937; color: #e5e7eb; font: 500 13px/1.3 var(--nv-fonte); }
.nv-manual-codigo-barra .nv-btn { min-height: 34px; padding: 6px 12px; font-size: 13px; }
.nv-manual-codigo-barra .nv-btn[data-copiado] { background: var(--nv-verde-claro); }
.nv-manual-codigo pre { margin: 0; padding: 14px 16px; overflow-x: auto; max-width: 100%; color: #f9fafb; background: transparent; font: 400 13.5px/1.55 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; white-space: pre; }
.nv-manual-codigo pre code { background: none !important; color: inherit !important; padding: 0 !important; font: inherit !important; overflow-wrap: normal !important; }
.nv-manual-codigo pre:focus-visible { outline-offset: -3px; }
.nv-manual-links { display: flex; flex-wrap: wrap; gap: 8px 20px; font-size: 15px; }
.nv-manual-links a, .nv-manual-veja a { display: inline-flex; align-items: center; gap: 6px; }
.nv-manual-veja { margin-top: 48px; padding: 18px 20px; border: 1px solid var(--nv-borda); background: var(--nv-fundo-2); }
.nv-manual-veja h2 { font-size: 18px !important; margin: 0 0 8px !important; }
.nv-manual-veja ul { list-style: none; padding: 0 !important; margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 6px 20px; }
@media (max-width: 640px) {
  .nv-manual-titulo .nv-i { width: 34px; height: 34px; }
  .nv-manual-acoes .nv-btn { width: 100%; justify-content: flex-start; }
  .nv-manual-tabela .nv-tabela, .nv-manual-tabela .nv-tabela tbody, .nv-manual-tabela .nv-tabela tr { display: block; width: 100%; }
  .nv-manual-tabela .nv-tabela thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .nv-manual-tabela .nv-tabela tr { border-bottom: 1px solid var(--nv-borda); padding: 10px 12px; }
  .nv-manual-tabela .nv-tabela th[scope="row"], .nv-manual-tabela .nv-tabela td { display: inline; padding: 0; border: 0; white-space: normal; }
  .nv-manual-tabela .nv-tabela td:nth-of-type(1) { color: var(--nv-suave); margin-left: 6px; font-size: 13px; }
  .nv-manual-tabela .nv-tabela td + td { display: block; margin-top: 4px; }
}
html.nv-contraste .nv-manual-sumario, html.nv-contraste .nv-manual-veja, html.nv-contraste .nv-manual-atual { background: #000 !important; color: #fff !important; border-color: #fff !important; }
html.nv-contraste .nv-manual-corpo code { background: #000 !important; color: #ff0 !important; }
/* ==== fim manuais ==== */

/* ==== faixa cinza fixa junto com o cabeçalho ==== (03/11/2026, agente faixa-fixa)
 * Pedido do usuário: a faixa cinza (.nv-a11y: contato, redes, atalhos, botões de acessibilidade) acompanha o cabeçalho
 * em toda a navegação. __header_menu.php envolve .nv-a11y + header.nv-header em div.nv-topo-fixo, que é o ÚNICO
 * elemento sticky (o header deixa de ter sticky próprio). A casca do topo continua "display: contents", então o sticky
 * vale para a página inteira; a trilha (.nv-faixa) fica fora do bloco e rola normalmente.
 * --nv-cab-h (novo.js) mede o bloco inteiro → scroll-margin das âncoras e sumário dos manuais param abaixo dele.
 * O bloco não pode ter transform/filter/backdrop-filter: o menu lateral do celular (position: fixed) mora dentro dele.
 * Ao rolar (html.nv-rolado, novo.js, > 80 px; volta < 8 px) o bloco compacta: logo menor, cabeçalho mais baixo e faixa
 * de 34 px — os botões de acessibilidade NUNCA somem. Transições curtas; prefers-reduced-motion e a opção "parar
 * animações" (html.nv-animacao) já zeram as transições (regras gerais no início/meio do arquivo). */
.nv-topo-fixo { position: sticky; top: 0; z-index: 900; }
.nv-topo-fixo > .nv-header { position: relative; top: auto; }
html.nv-rolado .nv-topo-fixo { box-shadow: 0 6px 16px -10px rgba(17, 24, 39, .45); }
html.nv-contraste.nv-rolado .nv-topo-fixo { box-shadow: 0 1px 0 #fff; }
/* atalhos "Ir para o conteúdo..." aparecem no foco mesmo com a página rolada (acima do bloco: z-index 1000) */
.nv-pular:focus-within { position: fixed; top: 8px; }
.nv-header .nv-wrap { transition: min-height .2s ease, padding .2s ease; }
.nv-header .nv-marca img { transition: height .2s ease, max-width .2s ease; }
.nv-a11y .nv-wrap { transition: min-height .2s ease; }
html.nv-rolado .nv-a11y .nv-wrap { min-height: 34px; }
html.nv-rolado .nv-a11y a, html.nv-rolado .nv-a11y button { padding-top: 4px; padding-bottom: 4px; }
html.nv-rolado .nv-header .nv-wrap { min-height: 60px; padding-top: 6px; padding-bottom: 6px; }
@media print { .nv-topo-fixo { position: static; box-shadow: none !important; } }
/* logo 60 → 44 px (celular 44 → 36 px) com o bloco compactado */
html.nv-rolado .nv-header .nv-marca img, html.nv-rolado body.nv-leve .nv-header .nv-marca img { height: 44px; }
@media (max-width: 640px) {
  html.nv-rolado .nv-header .nv-marca img, html.nv-rolado body.nv-leve .nv-header .nv-marca img { height: 36px; }
  html.nv-rolado .nv-header .nv-wrap { min-height: 52px; }
}
/* (faixa fixa) menu lateral aberto fica acima de tudo (aviso de cookies 1200, botão flutuante 1000); contraste claro com filete */
.nv-topo-fixo:has(.nv-nav.is-aberto) { z-index: 1300; }
html.nv-claro.nv-rolado .nv-topo-fixo { box-shadow: 0 1px 0 #000; }

/* ==== revisor-final (03/11): alto contraste — botão "voltar ao topo" tinham fundo branco fixo (ícone/texto brancos sumiam) ==== */
html.nv-contraste .nv-topo { background: #000 !important; border-color: #fff !important; box-shadow: none !important; }

/* ==== VLibras escondido com o menu lateral aberto (pedido 03/11/2026) ==== */
body:has(.nv-nav.is-aberto) div[vw], body:has(.nv-nav.is-aberto) [vw].enabled { display: none !important; }

/* ==== Câmara de Barrocas (03/11/2026): blocos genéricos vindos da Câmara de Esplanada (logo 538×228 com texto preto, igual) ==== */
/* ==== layout novo por entidade (03/11/2026): botões do topo da home e Vereadores (Câmara) ==== */
.nv-hero-botoes { margin-top: 20px; max-width: 880px; }
.nv-hero-botoes .nv-btn .nv-i { width: 18px; height: 18px; }
.nv-vereadores { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 180px), 1fr)); gap: 16px; }
.nv-vereador { display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; padding: 20px 12px; background: #fff; border: 1px solid var(--nv-borda); border-radius: var(--nv-r-card); text-align: center; color: var(--nv-texto) !important; text-decoration: none !important; transition: border-color .15s, box-shadow .15s; }
.nv-vereador:hover, .nv-vereador:focus-visible { border-color: var(--nv-verde); box-shadow: var(--nv-sombra); }
.nv-vereador img { width: 128px; height: 128px; object-fit: cover; object-position: top; border-radius: 0; background: var(--nv-fundo-2, #f3f4f6); margin-bottom: 8px; }
.nv-vereador strong { font: 650 15px/1.3 var(--nv-fonte); color: var(--nv-tinta); }
.nv-vereador-partido { font: 400 13px/1.4 var(--nv-fonte); color: var(--nv-suave); }
.nv-vereador-cargo { font: 600 12px/1.4 var(--nv-fonte); color: var(--nv-verde-escuro); text-transform: uppercase; letter-spacing: .04em; }
@media (max-width: 640px) { .nv-vereadores { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .nv-vereador img { width: 96px; height: 96px; } }
.nv-rodape-extra { padding-top: 0 !important; border-top: 1px solid rgba(255,255,255,.12); margin-top: 8px; }
.nv-rodape-extra nav { padding-top: 24px; }

/* ==== Sugira um Projeto como no original (Câmara de Laje, 03/11/2026) ====
   CSS do __section_sugestoes.php do tema anterior, escopado em #sugestoes.sugira-projeto-section (não vaza no tema novo).
   O tema anterior herdava a fonte Cabin (Google Fonts 400/600) e line-heights do Bootstrap; aqui ficam explícitos.
   scroll-margin-top fica com a regra geral do tema novo (altura real do cabeçalho fixo). */
@font-face { font-family: 'Cabin'; font-style: normal; font-weight: 400; font-display: swap; src: url(fonts/cabin-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Cabin'; font-style: normal; font-weight: 600; font-display: swap; src: url(fonts/cabin-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
#sugestoes.sugira-projeto-section { box-sizing: border-box; max-width: 1140px; margin: 40px auto; padding: 0; border: 1px solid #d4d4d4; border-radius: 6px; background: #ffffff; font-family: 'Segoe UI', Arial, sans-serif; font-size: 15px; line-height: 1.5; color: #333; overflow: hidden; }
#sugestoes.sugira-projeto-section *, #sugestoes.sugira-projeto-section *::before, #sugestoes.sugira-projeto-section *::after { box-sizing: border-box; }
#sugestoes .sugira-projeto-header, #sugestoes .sugira-projeto-body { font-family: Cabin, Helvetica, sans-serif; }
#sugestoes .sugira-projeto-header { padding: 28px 30px; border-bottom: 1px solid #e5e5e5; background: #fafafa; }
#sugestoes .sugira-projeto-header h2 { margin: 0; text-align: center; font-family: Cabin, Helvetica, sans-serif; font-size: 26px; font-weight: 700; line-height: 1.1; letter-spacing: 1px; text-transform: uppercase; color: #404040; }
#sugestoes .sugira-projeto-body { padding: 30px 35px 35px; }
#sugestoes .sugira-projeto-item { display: flex; align-items: flex-start; gap: 18px; margin-bottom: 28px; }
#sugestoes .sugira-projeto-item:last-child { margin-bottom: 0; }
#sugestoes .sugira-projeto-icon { flex-shrink: 0; width: 54px; height: 54px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
#sugestoes .sugira-projeto-icon.icon-primary { background: #7a9b8e; }
#sugestoes .sugira-projeto-icon.icon-secondary { background: #7e93ad; }
#sugestoes .sugira-projeto-icon svg { width: 28px; height: 28px; fill: #ffffff; }
#sugestoes .sugira-projeto-content h3 { margin: 4px 0 8px; font-family: Cabin, Helvetica, sans-serif; font-size: 19px; font-weight: 600; line-height: 1.1; letter-spacing: normal; color: #4b5563; }
#sugestoes .sugira-projeto-content p { margin: 0; font-size: 14.5px; line-height: 1.65; color: #6b7280; text-align: justify; }
#sugestoes .sugira-projeto-footer { margin-top: 30px; padding-top: 22px; border-top: 1px solid #e5e5e5; text-align: right; }
#sugestoes .sugira-projeto-footer p { margin: 0; font-size: 14.5px; line-height: 1.7; color: #4b5563; }
#sugestoes .sugira-projeto-footer a { color: #5a7186; font-weight: 600; text-decoration: none; }
#sugestoes .sugira-projeto-footer a:hover { color: #3d4f5e; text-decoration: underline; }
@media (max-width: 600px) {
  #sugestoes .sugira-projeto-item { flex-direction: column; align-items: center; text-align: center; }
  #sugestoes .sugira-projeto-content p { text-align: left; }
  #sugestoes .sugira-projeto-footer { text-align: center; }
}
html.nv-contraste #sugestoes.sugira-projeto-section, html.nv-contraste #sugestoes .sugira-projeto-header { background: #000 !important; border-color: #fff !important; }
/* o tema novo tem cantos retos em tudo (!important); aqui volta o arredondado do original: caixa 6px e ícones redondos (ID vence a regra geral) */
body.nv-body #sugestoes.sugira-projeto-section { border-radius: 6px !important; }
body.nv-body #sugestoes .sugira-projeto-icon { border-radius: 50% !important; }

/* ==== logo maior (Câmara de Laje, 03/11/2026) ==== */
.nv-header .nv-marca img, body.nv-leve .nv-header .nv-marca img { height: 88px; max-width: 260px; }
.nv-rodape .nv-marca img, body.nv-leve .nv-rodape .nv-marca img { height: 84px; max-width: 260px; }
@media (max-width: 900px) { .nv-header .nv-marca img, body.nv-leve .nv-header .nv-marca img { height: 64px; max-width: 170px; } }
@media (max-width: 640px) { .nv-header .nv-marca img, body.nv-leve .nv-header .nv-marca img { height: 54px; max-width: 140px; } .nv-rodape .nv-marca img, body.nv-leve .nv-rodape .nv-marca img { height: 70px; } }

/* ==== Transparência LC 131 na home (Câmara de Esplanada, 03/11/2026): __section_transparencia.php ==== */
.nv-transp { display: grid; gap: 28px; }
.nv-transp-grupo h3 { display: flex; align-items: center; gap: 8px; margin: 0 0 12px; font: 650 18px/1.3 var(--nv-fonte); color: var(--nv-tinta); }
.nv-transp-grupo h3 .nv-i { width: 20px; height: 20px; color: var(--nv-verde-escuro); }
.nv-transp-grupo ul.nv-grade { list-style: none; margin: 0; padding: 0; }
.nv-transp-grupo ul.nv-grade > li { margin: 0; }
.nv-transp-grupo .nv-servico { height: 100%; padding: 18px 20px; align-items: center; }

/* ==== menu com 7 itens (Câmara de Esplanada, 03/11/2026: "Transparência" volta ao menu) ====
   rótulos numa linha só; entre 1081 e 1440 px os itens ficam mais compactos para caber ao lado da logo grande */
.nv-nav a { white-space: nowrap; }
@media (min-width: 1081px) and (max-width: 1440px) { .nv-nav ul { gap: 0; } .nv-nav a { padding: 10px 8px; font-size: 14px; } }
@media (min-width: 1081px) and (max-width: 1240px) { .nv-header .nv-marca-txt { max-width: 150px; } }

/* ==== logo no rodapé (Esplanada/Barrocas, 03/11/2026): a logo (538×228) tem texto preto e não há versão clara;
   no rodapé escuro ela fica sobre um fundo branco. Com 'logo_rodape' (versão clara) no inc/entidade.php, basta tirar este bloco. ==== */
.nv-rodape .nv-marca img, body.nv-leve .nv-rodape .nv-marca img { background: #fff; padding: 6px 10px; box-sizing: content-box; height: 72px; }
@media (max-width: 640px) { .nv-rodape .nv-marca img, body.nv-leve .nv-rodape .nv-marca img { height: 60px; } }

/* ==== logo sem encolher ao rolar (pedido 03/11/2026: a logo grande deve permanecer) ==== */
html.nv-rolado .nv-header .nv-marca img, html.nv-rolado body.nv-leve .nv-header .nv-marca img { height: 88px; max-width: 260px; }
@media (max-width: 900px) { html.nv-rolado .nv-header .nv-marca img, html.nv-rolado body.nv-leve .nv-header .nv-marca img { height: 64px; max-width: 170px; } }
@media (max-width: 640px) { html.nv-rolado .nv-header .nv-marca img, html.nv-rolado body.nv-leve .nv-header .nv-marca img { height: 54px; max-width: 140px; } }
html.nv-contraste .nv-topo, html.nv-contraste .nv-vereador { background: #000 !important; border-color: #fff !important; box-shadow: none !important; }
