/* nuvy-ui 1.4.0 — layout padrão NuvyTech (classes nv-). Arquivo gerado: não edite aqui.
   Para mudar, edite layout/layout.css no nuvy-ui, rode "npm run gerar" e copie de novo.
   Use junto com tokens-escuro.css (páginas sem JavaScript) ou tokens.css. */

/* Layout padrão NuvyTech: estrutura de página, cabeçalho com marca, cartões, botões, formulários,
   tabelas, selos, avisos e grade. Usa SÓ as variáveis do tema (tokens.css ou tokens-escuro.css),
   nenhuma cor literal. Todas as classes começam com "nv-". Uso: <body class="nv-pagina">. */

.nv-pagina {
  /* Derivados do tema: hover, fundos e bordas suaves, cantos e foco com contorno cheio. */
  --nv-primario-hover: color-mix(in oklab, var(--primary) 85%, var(--foreground));
  --nv-sucesso-fundo: color-mix(in oklab, var(--success) 12%, var(--card));
  --nv-sucesso-linha: color-mix(in oklab, var(--success) 40%, var(--card));
  --nv-atencao-fundo: color-mix(in oklab, var(--warning) 12%, var(--card));
  --nv-atencao-linha: color-mix(in oklab, var(--warning) 40%, var(--card));
  --nv-perigo-fundo: color-mix(in oklab, var(--destructive) 12%, var(--card));
  --nv-perigo-linha: color-mix(in oklab, var(--destructive) 40%, var(--card));
  --nv-info-fundo: color-mix(in oklab, var(--info) 12%, var(--card));
  --nv-info-linha: color-mix(in oklab, var(--info) 40%, var(--card));
  --nv-destaque-linha: color-mix(in oklab, var(--primary) 35%, var(--card));
  --nv-campo: color-mix(in oklab, var(--input) 30%, transparent);
  --nv-raio-controle: calc(var(--radius) * 0.8);
  --nv-raio-cartao: calc(var(--radius) * 1.4);
  --nv-sombra: 0 1px 2px color-mix(in oklab, var(--background) 80%, transparent);
  --nv-foco: 0 0 0 2px var(--background), 0 0 0 4px var(--ring);
  --nv-controle: 44px;
  --nv-controle-pequeno: 36px;
  --nv-controle-grande: 50px;
  --nv-espaco: 20px;
  /* Escala de espaçamento (tokens.mjs > escalas.espacamento): padding e vão de controle usam estes degraus. */
  --nv-esp-1: 4px;
  --nv-esp-2: 8px;
  --nv-esp-3: 12px;
  --nv-esp-4: 16px;
  --nv-esp-5: 20px;
  --nv-esp-6: 24px;
  --nv-esp-8: 32px;
  margin: 0;
  font: 16px/1.6 var(--font-sans);
  color: var(--foreground);
  background: var(--background);
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
.nv-pagina *,
.nv-pagina *::before,
.nv-pagina *::after {
  box-sizing: border-box;
}
.nv-pagina a {
  color: var(--primary);
  text-underline-offset: 2px;
}
.nv-pagina a:hover {
  color: var(--nv-primario-hover);
}
.nv-pagina [hidden] {
  display: none !important;
}

/* Foco visível: contorno cheio, em qualquer elemento, nunca removido sem substituto. */
.nv-pagina :focus-visible {
  outline: none;
  box-shadow: var(--nv-foco);
  border-radius: 4px;
}

/* Atalho para pular direto ao conteúdo (aparece só com o foco do teclado). */
.nv-pular {
  position: absolute;
  left: -999px;
  top: 8px;
  z-index: 2;
  padding: 8px 12px;
  background: var(--card);
}
.nv-pular:focus {
  left: 8px;
}

/* Estrutura da página */
.nv-principal {
  max-width: 1120px;
  margin: 0 auto;
  padding: 28px 24px 56px;
}
.nv-pagina--estreita .nv-principal {
  max-width: 460px;
  padding-top: 48px;
}
.nv-pagina--leitura .nv-principal {
  max-width: 820px;
}
.nv-rodape {
  margin: 28px 0 0;
  padding-top: 14px;
  border-top: 1px solid var(--border);
  font-size: 14px;
  color: var(--muted-foreground);
}

/* Tipografia: escala curta (30/20/16), títulos firmes e entrelinha folgada no texto. */
.nv-pagina h1,
.nv-pagina h2,
.nv-pagina h3 {
  font-weight: 700;
  color: var(--foreground);
  text-wrap: balance;
}
.nv-pagina h1 {
  font-size: clamp(23px, 1.2vw + 17px, 30px);
  line-height: 1.2;
  margin: 4px 0 20px;
  letter-spacing: -0.022em;
}
.nv-pagina h2 {
  font-size: clamp(18px, 0.3vw + 16.5px, 20px);
  line-height: 1.3;
  margin: 0 0 14px;
  letter-spacing: -0.012em;
}
.nv-pagina h3 {
  font-size: 16px;
  line-height: 1.4;
  margin: 20px 0 8px;
  font-weight: 650;
}
.nv-pagina p {
  margin: 8px 0;
  text-wrap: pretty;
  overflow-wrap: break-word;
}
.nv-texto-suave {
  color: var(--muted-foreground);
  font-size: 14.5px;
  line-height: 1.55;
}
.nv-sobretitulo {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--marca-2);
}
.nv-num {
  font-variant-numeric: tabular-nums;
  text-align: right;
  white-space: nowrap;
}
.nv-codigo {
  font-family: var(--font-mono);
  font-size: 14px;
}

/* Cabeçalho com marca, navegação e conta */
.nv-cabecalho {
  background: var(--card);
  color: var(--foreground);
  border-bottom: 1px solid var(--border);
}
.nv-cabecalho__interno {
  max-width: 1120px;
  margin: 0 auto;
  padding: 10px 20px;
  min-height: 60px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 24px;
}
.nv-pagina--estreita .nv-cabecalho__interno {
  justify-content: center;
}
.nv-marca {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--foreground);
  text-decoration: none;
  font-weight: 700;
  font-size: 17px;
  line-height: 1.15;
  letter-spacing: 0.01em;
  white-space: nowrap;
}
.nv-pagina .nv-marca:hover {
  color: var(--foreground);
}
.nv-marca__logo {
  width: 30px;
  height: 30px;
  flex: none;
}
.nv-marca__sub {
  display: block;
  font-weight: 500;
  font-size: 12px;
  line-height: 1.1;
  color: var(--muted-foreground);
}
.nv-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0 4px;
}
.nv-nav__link {
  padding: 12px 12px 10px;
  font-size: 15px;
  font-weight: 500;
  white-space: nowrap;
  text-decoration: none;
  color: var(--muted-foreground);
  border-bottom: 3px solid transparent;
}
.nv-pagina .nv-nav__link:hover {
  color: var(--foreground);
  border-bottom-color: var(--input);
}
.nv-pagina .nv-nav__link[aria-current='page'] {
  color: var(--foreground);
  font-weight: 600;
  border-bottom-color: var(--marca-2);
}
.nv-conta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-left: auto;
  min-width: 0;
  font-size: 14px;
  color: var(--muted-foreground);
}
.nv-conta__nome {
  min-width: 0;
  overflow-wrap: anywhere;
}
.nv-conta__papel {
  padding: 1px 8px;
  border-radius: 999px;
  font-size: 12px;
  background: color-mix(in oklab, var(--marca-2) 16%, transparent);
  color: var(--marca-2);
}

/* Cabeça da página: título à esquerda, ações à direita */
.nv-titulo-pagina {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 16px;
  margin: 4px 0 22px;
}
.nv-pagina .nv-titulo-pagina h1 {
  margin: 0;
}
.nv-acoes {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
}

/* Cartão */
.nv-cartao {
  margin: 0 0 var(--nv-espaco);
  padding: var(--nv-esp-6);
  background: var(--card);
  color: var(--card-foreground);
  border: 1px solid var(--border);
  border-radius: var(--nv-raio-cartao);
  box-shadow: var(--nv-sombra);
}
.nv-cartao .nv-cartao {
  background: var(--secondary);
  box-shadow: none;
}
.nv-cartao--destaque {
  background: var(--accent);
  border-color: var(--nv-destaque-linha);
  border-left: 4px solid var(--primary);
}
.nv-cartao--atencao {
  background: var(--nv-atencao-fundo);
  border-color: var(--nv-atencao-linha);
  border-left: 4px solid var(--warning);
}

/* Grade de cartões e indicadores */
.nv-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
  gap: var(--nv-espaco);
  margin: 0 0 var(--nv-espaco);
}
.nv-grade > .nv-cartao {
  margin: 0;
}
.nv-indicadores {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 14px;
  margin: 0 0 var(--nv-espaco);
}
.nv-indicador {
  min-width: 0;
  padding: var(--nv-esp-4) var(--nv-esp-5);
  background: var(--card);
  border: 1px solid var(--border);
  border-top: 3px solid var(--primary);
  border-radius: var(--nv-raio-cartao);
  box-shadow: var(--nv-sombra);
}
.nv-indicador__valor {
  display: block;
  font-size: 30px;
  font-weight: 750;
  line-height: 1.15;
  letter-spacing: -0.02em;
  overflow-wrap: anywhere;
  font-variant-numeric: tabular-nums;
  color: var(--foreground);
}
.nv-indicador__nome {
  font-size: 14px;
  line-height: 1.45;
  color: var(--muted-foreground);
}
.nv-indicador--atencao {
  border-top-color: var(--warning);
}
.nv-indicador--atencao .nv-indicador__valor {
  color: var(--warning);
}

/* Botões: primário (cheio) para a ação principal, secundário (contorno) para o resto */
.nv-botao {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--nv-esp-2);
  min-height: var(--nv-controle);
  padding: var(--nv-esp-2) var(--nv-esp-5);
  font: inherit;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.005em;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  color: var(--primary-foreground);
  background: var(--primary);
  border: 1px solid var(--primary);
  border-radius: var(--nv-raio-controle);
  box-shadow: var(--nv-sombra);
  transition: background-color 0.12s ease, border-color 0.12s ease, box-shadow 0.12s ease;
}
.nv-pagina .nv-botao:hover {
  color: var(--primary-foreground);
  background: var(--nv-primario-hover);
  border-color: var(--nv-primario-hover);
}
.nv-botao:active {
  transform: translateY(1px);
}
.nv-pagina .nv-botao--secundario {
  color: var(--primary);
  background: var(--card);
  border-color: var(--input);
  box-shadow: none;
}
.nv-pagina .nv-botao--secundario:hover {
  color: var(--primary);
  background: var(--accent);
  border-color: var(--primary);
}
.nv-pagina .nv-botao--perigo {
  color: var(--destructive-foreground);
  background: var(--destructive);
  border-color: var(--destructive);
}
.nv-pagina .nv-botao--perigo:hover {
  color: var(--destructive-foreground);
  background: var(--destructive);
  border-color: var(--destructive);
  filter: brightness(1.08);
}
.nv-botao--pequeno {
  min-height: var(--nv-controle-pequeno);
  padding: var(--nv-esp-1) var(--nv-esp-4);
  font-size: 14px;
}
.nv-botao--grande {
  min-height: var(--nv-controle-grande);
  padding: var(--nv-esp-3) var(--nv-esp-6);
  font-size: 17px;
}
.nv-botao--total {
  width: 100%;
}
/* Foco: o anel vale também nas variantes (que zeram box-shadow) e o canto do botão não encolhe. */
.nv-pagina .nv-botao:focus-visible,
.nv-pagina .nv-entrada:focus-visible,
.nv-pagina .nv-selecao:focus-visible,
.nv-pagina .nv-area-texto:focus-visible {
  box-shadow: var(--nv-foco);
  border-radius: var(--nv-raio-controle);
}
.nv-botao:disabled,
.nv-botao[aria-disabled='true'] {
  opacity: 0.55;
  cursor: not-allowed;
}
/* Desabilitado não reage ao mouse: mantém a cor da variante. */
.nv-pagina .nv-botao:disabled:hover,
.nv-pagina .nv-botao[aria-disabled='true']:hover {
  color: var(--primary-foreground);
  background: var(--primary);
  border-color: var(--primary);
}
.nv-pagina .nv-botao--secundario:disabled:hover,
.nv-pagina .nv-botao--secundario[aria-disabled='true']:hover {
  color: var(--primary);
  background: var(--card);
  border-color: var(--input);
}
.nv-pagina .nv-botao--perigo:disabled:hover,
.nv-pagina .nv-botao--perigo[aria-disabled='true']:hover {
  color: var(--destructive-foreground);
  background: var(--destructive);
  border-color: var(--destructive);
  filter: none;
}

/* Formulários */
.nv-formulario {
  margin: 0;
}
.nv-campo {
  margin: 0 0 16px;
  min-width: 0;
}
.nv-rotulo {
  display: block;
  margin: 0 0 6px;
  font-size: 14.5px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--foreground);
}
.nv-entrada,
.nv-selecao,
.nv-area-texto {
  display: block;
  width: 100%;
  max-width: 520px;
  min-height: var(--nv-controle);
  padding: var(--nv-esp-2) var(--nv-esp-4);
  font: inherit;
  line-height: 1.4;
  color: var(--foreground);
  background: var(--nv-campo);
  border: 1px solid var(--input);
  border-radius: var(--nv-raio-controle);
  transition: border-color 0.12s ease, box-shadow 0.12s ease;
}
.nv-entrada:hover,
.nv-selecao:hover,
.nv-area-texto:hover {
  border-color: var(--muted-foreground);
}
.nv-entrada:focus,
.nv-selecao:focus,
.nv-area-texto:focus {
  outline: none;
  border-color: var(--ring);
  box-shadow: var(--nv-foco);
}
.nv-area-texto {
  min-height: 96px;
  resize: vertical;
}
.nv-entrada--invalida {
  border-color: var(--destructive);
}
.nv-entrada--total {
  max-width: none;
}
.nv-marcador {
  width: 18px;
  height: 18px;
  margin: 0 6px 0 0;
  vertical-align: -3px;
  accent-color: var(--primary);
}
.nv-ajuda {
  margin: 6px 0 0;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--muted-foreground);
}
.nv-erro-campo {
  margin: 6px 0 0;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--destructive);
}
.nv-grupo {
  margin: 14px 0;
  padding: 12px 16px 16px;
  border: 1px solid var(--border);
  border-radius: var(--nv-raio-controle);
}
.nv-grupo__titulo {
  padding: 0 6px;
  font-weight: 600;
}
.nv-formulario--duas-colunas {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 20px;
}
.nv-formulario--duas-colunas .nv-entrada,
.nv-formulario--duas-colunas .nv-selecao,
.nv-formulario--duas-colunas .nv-area-texto {
  max-width: none;
}
.nv-campo--largo {
  grid-column: 1 / -1;
}
.nv-formulario__acoes {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 20px;
  grid-column: 1 / -1;
}
.nv-filtros {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px 16px;
}
.nv-filtros .nv-campo {
  margin: 0;
}

/* Tabelas */
.nv-tabela-caixa {
  overflow-x: auto;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--nv-raio-controle);
}
.nv-tabela {
  width: 100%;
  border-collapse: collapse;
  font-size: 15px;
  line-height: 1.45;
  font-variant-numeric: tabular-nums;
}
.nv-tabela th,
.nv-tabela td {
  padding: var(--nv-esp-3) var(--nv-esp-4);
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--border);
}
.nv-tabela th {
  font-size: 12px;
  font-weight: 650;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--muted-foreground);
  background: var(--secondary);
}
.nv-tabela tbody tr:last-child td {
  border-bottom: 0;
}
.nv-tabela tbody tr:hover td {
  background: color-mix(in oklab, var(--accent) 45%, var(--card));
}
.nv-tabela .nv-num {
  text-align: right;
}
.nv-tabela__detalhe {
  display: block;
  margin-top: 2px;
  font-size: 13.5px;
  color: var(--muted-foreground);
}

/* Selos de situação */
.nv-selo {
  display: inline-block;
  padding: 0 var(--nv-esp-3);
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.6;
  white-space: nowrap;
  vertical-align: 1px;
  color: var(--muted-foreground);
  background: var(--secondary);
  border: 1px solid var(--border);
  border-radius: 999px;
}
.nv-selo--sucesso {
  color: var(--success);
  background: var(--nv-sucesso-fundo);
  border-color: var(--nv-sucesso-linha);
}
.nv-selo--atencao {
  color: var(--warning);
  background: var(--nv-atencao-fundo);
  border-color: var(--nv-atencao-linha);
}
.nv-selo--perigo {
  color: var(--destructive);
  background: var(--nv-perigo-fundo);
  border-color: var(--nv-perigo-linha);
}
.nv-selo--info {
  color: var(--info);
  background: var(--nv-info-fundo);
  border-color: var(--nv-info-linha);
}
.nv-selo--destaque {
  color: var(--primary);
  background: var(--accent);
  border-color: var(--nv-destaque-linha);
}

/* Avisos */
.nv-aviso {
  position: relative;
  display: block;
  margin: 0 0 18px;
  padding: var(--nv-esp-3) var(--nv-esp-4) var(--nv-esp-3) 42px;
  font-size: 15px;
  color: var(--info);
  background: var(--nv-info-fundo);
  border: 1px solid var(--nv-info-linha);
  border-radius: var(--nv-raio-controle);
}
.nv-aviso::before {
  content: 'i';
  position: absolute;
  left: 13px;
  top: 13px;
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  color: var(--background);
  background: var(--info);
  border-radius: 999px;
}
.nv-aviso--sucesso {
  color: var(--success);
  background: var(--nv-sucesso-fundo);
  border-color: var(--nv-sucesso-linha);
}
.nv-aviso--sucesso::before {
  content: '\2713';
  background: var(--success);
}
.nv-aviso--atencao {
  color: var(--warning);
  background: var(--nv-atencao-fundo);
  border-color: var(--nv-atencao-linha);
}
.nv-aviso--atencao::before {
  content: '!';
  background: var(--warning);
}
.nv-aviso--erro {
  color: var(--destructive);
  background: var(--nv-perigo-fundo);
  border-color: var(--nv-perigo-linha);
}
.nv-aviso--erro::before {
  content: '!';
  background: var(--destructive);
}

/* Listas, vazio, barra de progresso e dados em pares */
.nv-lista {
  margin: 0;
  padding: 0;
  list-style: none;
}
.nv-lista > li {
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}
.nv-lista > li:last-child {
  border-bottom: 0;
}
.nv-vazio {
  margin: 6px 0 12px;
  padding: 26px 16px;
  text-align: center;
  color: var(--muted-foreground);
  background: var(--secondary);
  border: 1px dashed var(--input);
  border-radius: var(--nv-raio-cartao);
}
.nv-vazio__titulo {
  display: block;
  margin-bottom: 4px;
  font-size: 16px;
  font-weight: 650;
  color: var(--foreground);
}
.nv-barra {
  height: 8px;
  margin: 10px 0 4px;
  overflow: hidden;
  background: var(--secondary);
  border-radius: 999px;
}
.nv-barra__preenchimento {
  display: block;
  height: 100%;
  background: var(--gradiente-marca);
}
.nv-dados {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 10px 18px;
  margin: 6px 0 0;
}
.nv-dados > div {
  min-width: 0;
}
.nv-dados dt {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted-foreground);
}
.nv-dados dd {
  margin: 2px 0 0;
  overflow-wrap: anywhere;
}

@media (min-width: 721px) {
  .nv-dados {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Celular */
@media (max-width: 720px) {
  .nv-cabecalho__interno {
    padding: var(--nv-esp-3) var(--nv-esp-4);
    gap: 6px 12px;
  }
  .nv-principal {
    padding: 20px 16px 44px;
  }
  .nv-pagina--estreita .nv-principal {
    padding-top: 24px;
  }
  .nv-cartao {
    padding: var(--nv-esp-4);
  }
  .nv-pagina {
    --nv-espaco: 16px;
  }
  .nv-nav {
    flex-basis: 100%;
    order: 3;
  }
  .nv-conta {
    margin-left: 0;
  }
  .nv-titulo-pagina .nv-acoes {
    width: 100%;
  }
  .nv-entrada,
  .nv-selecao,
  .nv-area-texto {
    max-width: none;
    font-size: 16px;
  }
  .nv-formulario--duas-colunas {
    display: block;
  }
  .nv-formulario__acoes .nv-botao {
    flex: 1 1 100%;
  }
  .nv-indicadores {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
  .nv-indicadores > :last-child:nth-child(odd) {
    grid-column: 1 / -1;
  }
  .nv-indicador__valor {
    font-size: 24px;
  }
  .nv-tabela th,
  .nv-tabela td {
    padding: var(--nv-esp-3);
  }
}

/* Variante com coluna lateral (nv-pagina--lateral): no lugar do cabeçalho no topo, uma coluna com marca,
   grupos de links com título, item atual, sub-itens e conta/sair embaixo. O cabeçalho no topo continua
   sendo o padrão; esta variante só vale quando o <body> leva nv-pagina--lateral.
   Sem JavaScript: a coluna aparece inteira, no alto da página no celular. Com nuvy-lateral.js (que põe
   a classe nv-js no <html>): recolhe no desktop (data-lateral="recolhida") e vira gaveta no celular
   (data-lateral-aberta). Cores: só tokens sidebar/accent, que já têm contraste conferido. */
.nv-pagina--lateral {
  --nv-lateral-largura: 264px;
  --nv-lateral-recolhida: 68px;
}
.nv-app {
  display: block;
}
.nv-lateral {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px;
  background: var(--sidebar);
  color: var(--sidebar-foreground);
  border-bottom: 1px solid var(--sidebar-border);
}
.nv-lateral__topo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 52px;
  padding: 0 4px;
}
.nv-lateral__nav {
  display: flex;
  flex-direction: column;
  gap: 14px;
  flex: 1 1 auto;
  min-height: 0;
  padding: 4px 0;
}
.nv-lateral__grupo {
  margin: 0 0 4px;
  padding: 0 12px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted-foreground);
}
.nv-lateral__lista,
.nv-lateral__sub {
  list-style: none;
  margin: 0;
  padding: 0;
}
.nv-lateral__lista {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.nv-lateral__sub {
  margin: 2px 0 4px 22px;
  padding-left: 10px;
  border-left: 1px solid var(--sidebar-border);
}
.nv-lateral__link {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: var(--nv-controle);
  padding: var(--nv-esp-2) var(--nv-esp-3);
  border-radius: var(--nv-raio-controle);
  font-size: 15px;
  font-weight: 500;
  line-height: 1.3;
  text-decoration: none;
}
.nv-pagina .nv-lateral__link {
  color: var(--muted-foreground);
}
.nv-lateral__sub .nv-lateral__link {
  min-height: 36px;
  padding: var(--nv-esp-2) var(--nv-esp-3);
  font-size: 14px;
}
.nv-pagina .nv-lateral__link:hover {
  background: var(--sidebar-accent);
  color: var(--sidebar-accent-foreground);
}
.nv-pagina .nv-lateral__link[aria-current='page'] {
  background: var(--sidebar-accent);
  color: var(--sidebar-accent-foreground);
  font-weight: 600;
  box-shadow: inset 3px 0 0 var(--marca-2);
}
.nv-pagina .nv-lateral__link:focus-visible {
  border-radius: var(--nv-raio-controle);
  box-shadow: var(--nv-foco);
}
.nv-lateral__icone {
  width: 20px;
  height: 20px;
  flex: none;
}
.nv-lateral__texto {
  flex: 1 1 auto;
  min-width: 0;
  overflow-wrap: anywhere;
}
.nv-lateral__contagem {
  flex: none;
  min-width: 22px;
  padding: 0 7px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  line-height: 20px;
  text-align: center;
  background: var(--primary);
  color: var(--primary-foreground);
}
.nv-lateral__conta {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px 8px 4px;
  border-top: 1px solid var(--sidebar-border);
  font-size: 14px;
  color: var(--muted-foreground);
}
.nv-lateral__conta .nv-conta__nome {
  color: var(--sidebar-foreground);
  font-weight: 600;
}
.nv-lateral__conta .nv-conta__papel {
  align-self: flex-start;
}
.nv-lateral__conta form {
  margin: 0;
}
.nv-lateral__botao {
  display: none;
  align-items: center;
  justify-content: center;
  width: var(--nv-controle);
  height: var(--nv-controle);
  flex: none;
  padding: 0;
  border: 1px solid var(--input);
  border-radius: var(--nv-raio-controle);
  background: transparent;
  color: var(--sidebar-foreground);
  font: inherit;
  cursor: pointer;
}
.nv-pagina .nv-lateral__botao:hover {
  background: var(--sidebar-accent);
  color: var(--sidebar-accent-foreground);
}
.nv-lateral__botao svg {
  width: 20px;
  height: 20px;
}
.nv-lateral__fundo {
  display: none;
}
.nv-barra-topo {
  display: none;
}
.nv-lateral-corpo {
  min-width: 0;
}

/* Desktop: coluna fixa à esquerda */
@media (min-width: 721px) {
  .nv-pagina--lateral .nv-app {
    display: grid;
    grid-template-columns: var(--nv-lateral-largura) minmax(0, 1fr);
    min-height: 100vh;
  }
  .nv-pagina--lateral .nv-lateral {
    position: sticky;
    top: 0;
    height: 100vh;
    border-bottom: 0;
    border-right: 1px solid var(--sidebar-border);
  }
  .nv-pagina--lateral .nv-lateral__nav {
    overflow-y: auto;
  }
  .nv-js .nv-lateral__botao--recolher {
    display: inline-flex;
  }
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-app {
    grid-template-columns: var(--nv-lateral-recolhida) minmax(0, 1fr);
  }
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral {
    padding-inline: 10px;
  }
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral__topo {
    flex-direction: column;
    justify-content: center;
    padding: 8px 0;
  }
  /* Recolhida: os textos saem da tela mas continuam para leitor de tela. */
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-marca > span,
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral__texto,
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral__grupo,
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral__conta .nv-conta__nome,
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral__conta .nv-conta__papel {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral__sub {
    display: none;
  }
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral__link,
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral__conta .nv-botao {
    justify-content: center;
    padding-inline: 0;
    position: relative;
  }
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral__contagem {
    position: absolute;
    top: 2px;
    right: 2px;
    min-width: 18px;
    padding: 0 4px;
    font-size: 11px;
    line-height: 16px;
  }
  .nv-pagina--lateral[data-lateral='recolhida'] .nv-lateral__botao--recolher svg {
    transform: scaleX(-1);
  }
}

/* Celular: a coluna vira gaveta aberta pelo botão de menu */
@media (max-width: 720px) {
  .nv-js .nv-barra-topo {
    position: sticky;
    top: 0;
    z-index: 5;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 16px;
    background: var(--sidebar);
    border-bottom: 1px solid var(--sidebar-border);
  }
  .nv-js .nv-barra-topo .nv-lateral__botao,
  .nv-js .nv-lateral__botao--fechar {
    display: inline-flex;
  }
  .nv-js .nv-lateral {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 20;
    width: min(86vw, 320px);
    border-bottom: 0;
    border-right: 1px solid var(--sidebar-border);
    transform: translateX(-100%);
    visibility: hidden;
    transition: transform 0.2s ease, visibility 0s linear 0.2s;
  }
  .nv-js .nv-lateral__nav {
    overflow-y: auto;
  }
  .nv-js .nv-pagina--lateral[data-lateral-aberta] .nv-lateral {
    transform: none;
    visibility: visible;
    transition: transform 0.2s ease;
  }
  .nv-js .nv-pagina--lateral[data-lateral-aberta] .nv-lateral__fundo {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 10;
    background: color-mix(in oklab, var(--background) 70%, transparent);
  }
}
@media (prefers-reduced-motion: reduce) {
  .nv-js .nv-lateral {
    transition: none;
  }
}
