/* ===========================================================================
   TEMA ESCURO — AT-ERP  (implantação por blocos)
   ---------------------------------------------------------------------------
   OPT-IN por tela: a tela adiciona {% block bs_theme %}dark{% endblock %} e o
   <body> passa a ter data-bs-theme="dark". Telas ainda NÃO convertidas ficam
   100% claras (não têm o atributo) — nada muda para elas.

   Estratégia: aproveitamos o modo escuro NATIVO do Bootstrap 5.3
   ([data-bs-theme="dark"]) e apenas RETINTAMOS com a paleta da ATIVA
   (charcoal-verde + verde esmeralda), igual ao piloto aprovado (PRO002).

   Documentos/PDF (proposta, orçamento, nota de circulação) NÃO recebem o
   atributo — continuam claros (papel branco), por exigência de impressão.
   =========================================================================== */

[data-bs-theme="dark"] {
  /* Paleta base */
  --at-bg:#0d120e; --at-surface:#141a15; --at-surface-2:#182019;
  --at-line:#232c24; --at-ink:#eef3ee; --at-ink-2:#aebbb0; --at-muted:#7c8a7f;
  --at-accent:#2ecc71;

  /* Retinta as variáveis do Bootstrap para a nossa paleta */
  --bs-body-bg:#0d120e;
  --bs-body-color:#eef3ee;
  --bs-emphasis-color:#ffffff;
  --bs-secondary-color:#aebbb0;
  --bs-tertiary-color:#7c8a7f;
  --bs-body-bg-rgb:13,18,14;
  --bs-secondary-bg:#141a15;
  --bs-tertiary-bg:#182019;
  --bs-border-color:#232c24;
  --bs-border-color-translucent:rgba(255,255,255,.10);
  --bs-link-color:#4bd488;
  --bs-link-hover-color:#6fe0a0;
  --bs-heading-color:#eef3ee;
  color-scheme: dark;
}

/* O <body> tem background inline (#f8f9fa) — precisa do !important para escurecer. */
body[data-bs-theme="dark"] { background:var(--at-bg) !important; color:var(--at-ink);
  /* A TARJA BRANCA DO FIM DA TELA. O <html> também tem o fundo claro inline, e
     onde o body acabava aparecia ele — uma faixa branca embaixo do conteúdo,
     gritante dentro do quadro da entrada de compra (POU052), que é alto e mostra
     pouca coisa. Com o body ocupando a altura inteira, não sobra html à mostra. */
  min-height:100vh; }

/* --- Cards e superfícies --------------------------------------------------- */
[data-bs-theme="dark"] .card {
  --bs-card-bg:var(--at-surface); --bs-card-cap-bg:var(--at-surface-2);
  --bs-card-border-color:var(--at-line);
  background-color:var(--at-surface); border-color:var(--at-line); }
[data-bs-theme="dark"] .shadow-sm { box-shadow:0 1px 3px rgba(0,0,0,.4) !important; }

/* --- Tabelas --------------------------------------------------------------- */
[data-bs-theme="dark"] .table {
  --bs-table-bg:transparent; --bs-table-color:var(--at-ink);
  --bs-table-border-color:var(--at-line);
  --bs-table-hover-bg:var(--at-surface-2); --bs-table-hover-color:#ffffff;
  --bs-table-striped-bg:rgba(255,255,255,.02); }
[data-bs-theme="dark"] .table > :not(caption) > * > * { border-color:var(--at-line); }
/* Cabeçalho (thead class="table-light") vira faixa escura discreta */
[data-bs-theme="dark"] .table-light,
[data-bs-theme="dark"] .table-light > th,
[data-bs-theme="dark"] .table-light > td {
  --bs-table-bg:var(--at-surface-2); --bs-table-color:var(--at-ink-2);
  background-color:var(--at-surface-2); color:var(--at-ink-2);
  border-color:var(--at-line); }

/* --- Moldura das listagens (lista.css) ------------------------------------- */
[data-bs-theme="dark"] .lst-sec {
  background:var(--at-surface); border-color:var(--at-line); }
[data-bs-theme="dark"] .lst-head {
  background:transparent; color:var(--at-ink); border-bottom-color:var(--at-line); }
[data-bs-theme="dark"] .lst-sec--secundaria { background:transparent; }
[data-bs-theme="dark"] .lst-sec--secundaria td { color:var(--at-muted); }
[data-bs-theme="dark"] .lst-head--discreto { color:var(--at-muted); }
/* Seção de destaque (âmbar) — mantém o alerta, mas em tom escuro */
[data-bs-theme="dark"] .lst-sec--destaque { border-color:#b8912f; }
[data-bs-theme="dark"] .lst-sec--destaque > .lst-head {
  background:#241f0d; color:#e0b83a; border-bottom-color:#3a3416; }
/* Linha cancelada */
[data-bs-theme="dark"] .lst-cancelada > td {
  background:#2a1c1c !important; color:#c98a8a; }

/* --- Formulários ----------------------------------------------------------- */
/* PADRÃO (vale para todas as telas):
     campo que se PREENCHE (editável) = poço PRETO TOTAL  -> --at-campo
     campo SÓ LEITURA (readonly/disabled) = GRAFITE ESCURO -> --at-campo-bloq
   O contraste entre os dois é o que diz, de olho, onde se pode digitar. */
[data-bs-theme="dark"] { --at-campo:#000000; --at-campo-bloq:#26292b; }
/* !important: o campo editável é preto em QUALQUER tela — nenhuma folha local
   (nem o realce do navegador) pode clarear o poço. O grafite do bloqueado vem
   depois, também com !important, então continua vencendo este. */
[data-bs-theme="dark"] .form-control,
[data-bs-theme="dark"] .form-select,
[data-bs-theme="dark"] textarea.form-control {
  /* A BORDA do campo é mais clara que a das caixas: o poço preto sobre uma
     superfície escura só se enxerga pela borda, e com `--at-line` ela sumia —
     o campo virava um buraco sem contorno no meio do formulário. */
  background-color:var(--at-campo) !important; border-color:#3b4a3e; color:var(--at-ink); }
/* O padrão vale para QUALQUER campo, mesmo SEM a classe do Bootstrap: várias telas
   estilizam `input`/`textarea` direto (EST012, por exemplo) e ficavam grafite, com
   cara de bloqueado. Botões e caixas de marcar ficam de fora (têm regra própria). */
[data-bs-theme="dark"] input:not([type=checkbox],[type=radio],[type=button],[type=submit],[type=reset],[type=range],[type=color],[type=image]),
[data-bs-theme="dark"] textarea,
[data-bs-theme="dark"] select {
  background-color:var(--at-campo) !important; border-color:#3b4a3e; color:var(--at-ink); }
/* color-scheme direto nos campos: sem isto o navegador renderiza o popup do
   <datalist> (e date/select nativos) em CLARO, e o texto do input fica escuro. */
[data-bs-theme="dark"] input,
[data-bs-theme="dark"] select,
[data-bs-theme="dark"] textarea { color-scheme:dark; }
/* Marcador do campo (placeholder): legível, mas sem competir com o que se digita.
   Vale também para campo sem a classe do Bootstrap. */
[data-bs-theme="dark"] .form-control::placeholder,
[data-bs-theme="dark"] input::placeholder,
[data-bs-theme="dark"] textarea::placeholder { color:#8f9a91 !important; opacity:1; }
[data-bs-theme="dark"] .form-control:focus,
[data-bs-theme="dark"] .form-select:focus {
  background-color:var(--at-campo); border-color:var(--at-accent);
  box-shadow:0 0 0 .2rem rgba(46,204,113,.22); color:var(--at-ink); }
/* `.rd-falso` = campo que usa readonly só como TRUQUE contra o autofill do
   navegador (ele sai no primeiro clique). Não é campo bloqueado: segue preto. */
[data-bs-theme="dark"] .form-control[readonly]:not(.rd-falso),
[data-bs-theme="dark"] .form-control:disabled,
[data-bs-theme="dark"] .form-select:disabled,
[data-bs-theme="dark"] textarea.form-control[readonly]:not(.rd-falso),
[data-bs-theme="dark"] input[readonly]:not(.rd-falso),
[data-bs-theme="dark"] input:disabled,
[data-bs-theme="dark"] textarea[readonly]:not(.rd-falso),
[data-bs-theme="dark"] textarea:disabled,
[data-bs-theme="dark"] select:disabled {
  background-color:var(--at-campo-bloq) !important; color:var(--at-ink-2); cursor:not-allowed; }
[data-bs-theme="dark"] .form-control[readonly].rd-falso { cursor:text; }
/* O autofill do Chrome pinta o campo por conta própria — no escuro ele sai
   GRAFITE, dando a impressão de campo bloqueado. Mantém o poço preto do padrão
   (o box-shadow interno é a única forma de vencer o estilo interno do navegador). */
[data-bs-theme="dark"] .form-control:-webkit-autofill,
[data-bs-theme="dark"] .form-control:-webkit-autofill:hover,
[data-bs-theme="dark"] .form-control:-webkit-autofill:focus,
[data-bs-theme="dark"] .form-control:autofill,
[data-bs-theme="dark"] .form-select:-webkit-autofill {
  -webkit-box-shadow:0 0 0 1000px var(--at-campo) inset !important;
  box-shadow:0 0 0 1000px var(--at-campo) inset !important;
  background-color:var(--at-campo) !important;
  -webkit-text-fill-color:var(--at-ink) !important; caret-color:var(--at-ink); }
[data-bs-theme="dark"] .input-group-text {
  background-color:var(--at-surface-2); border-color:var(--at-line); color:var(--at-ink-2); }
/* Caixas de marcar / radio: no escuro o padrão do Bootstrap fica apagado (some
   no fundo). Borda mais viva, caixa um pouco maior e marcado no verde da ATIVA. */
[data-bs-theme="dark"] .form-check-input {
  width:1.15em; height:1.15em; margin-top:.15em;
  background-color:#0f120f; border:2px solid #6d8a75; cursor:pointer; }
[data-bs-theme="dark"] .form-check-input:hover { border-color:var(--at-accent); }
[data-bs-theme="dark"] .form-check-input:checked {
  background-color:var(--at-accent); border-color:var(--at-accent); }
[data-bs-theme="dark"] .form-check-input:focus {
  border-color:var(--at-accent); box-shadow:0 0 0 .2rem rgba(46,204,113,.25); }
[data-bs-theme="dark"] .form-check-input:disabled { opacity:.5; cursor:not-allowed; }
/* Caixa/opção SEM a classe do Bootstrap (várias telas usam <input type=radio> puro):
   o controle nativo fica cinza-apagado no escuro. `accent-color` pinta no verde da
   ATIVA e o tamanho acompanha o do Bootstrap. */
[data-bs-theme="dark"] input[type=checkbox]:not(.form-check-input),
[data-bs-theme="dark"] input[type=radio]:not(.form-check-input) {
  accent-color:var(--at-accent); width:1.05em; height:1.05em; cursor:pointer; }

/* --- Botões (mantêm sentido; só afinamos os "claros") ---------------------- */
[data-bs-theme="dark"] .btn-outline-secondary {
  --bs-btn-color:var(--at-ink-2); --bs-btn-border-color:var(--at-line);
  --bs-btn-hover-bg:var(--at-surface-2); --bs-btn-hover-color:#fff;
  --bs-btn-hover-border-color:var(--at-line); }
[data-bs-theme="dark"] .btn-light {
  --bs-btn-bg:var(--at-surface-2); --bs-btn-border-color:var(--at-line);
  --bs-btn-color:var(--at-ink); --bs-btn-hover-bg:var(--at-line); --bs-btn-hover-color:#fff; }
/* Outline com a cor do MÓDULO (base.html pinta com --mod): as cores dos módulos
   foram feitas para fundo claro e no escuro ficam sem contraste (texto quase
   invisível). Aqui clareamos a cor do texto/borda; o hover continua na cor cheia. */
[data-bs-theme="dark"] .btn-outline-primary,
[data-bs-theme="dark"] .btn-outline-success {
  --bs-btn-color:color-mix(in srgb, var(--mod, #198754) 40%, #fff);
  --bs-btn-border-color:color-mix(in srgb, var(--mod, #198754) 62%, #fff);
  --bs-btn-hover-bg:var(--mod, #198754); --bs-btn-hover-color:#fff;
  --bs-btn-hover-border-color:var(--mod, #198754);
  --bs-btn-active-bg:var(--mod, #198754); --bs-btn-active-color:#fff;
  --bs-btn-disabled-color:color-mix(in srgb, var(--mod, #198754) 34%, #fff);
  --bs-btn-disabled-border-color:color-mix(in srgb, var(--mod, #198754) 40%, #fff); }
/* Danger/warning outline: tons claros o suficiente para ler no escuro. */
[data-bs-theme="dark"] .btn-outline-danger {
  --bs-btn-color:#f28b82; --bs-btn-border-color:#a8443c;
  --bs-btn-hover-bg:#a8443c; --bs-btn-hover-color:#fff; --bs-btn-hover-border-color:#a8443c; }
[data-bs-theme="dark"] .btn-outline-warning {
  --bs-btn-color:#f5c761; --bs-btn-border-color:#8a6b22;
  --bs-btn-hover-bg:#8a6b22; --bs-btn-hover-color:#fff; --bs-btn-hover-border-color:#8a6b22; }

/* --- Texto de apoio / links dentro do conteúdo ----------------------------- */
[data-bs-theme="dark"] .text-secondary { color:var(--at-ink-2) !important; }
[data-bs-theme="dark"] .text-muted { color:var(--at-muted) !important; }
/* app.css pinta links do conteúdo com a cor do módulo; no escuro usamos o verde */
[data-bs-theme="dark"] main a:not(.btn) { color:#4bd488; }
[data-bs-theme="dark"] main a:not(.btn):hover { color:#6fe0a0; }

/* --- Popup PADRÃO do sistema (appConfirm/appAlert) -------------------------
   Quando ele abre POR CIMA de outro popup (ex.: a ficha da empresa, POU013), os
   dois ficavam com a mesma cor e parecia que nada tinha acontecido. Aqui o de
   cima ganha superfície mais clara, borda no verde da ATIVA e sombra funda —
   lê-se na hora que é uma resposta nova, e não a tela de trás. */
[data-bs-theme="dark"] #appDialog .modal-content {
  background:#20241f; border:1px solid var(--at-accent); border-radius:12px;
  box-shadow:0 26px 70px rgba(0,0,0,.78), 0 0 0 4px rgba(46,204,113,.12); }
[data-bs-theme="dark"] #appDialog .modal-header {
  background:#1a1f19; border-bottom-color:#2c352c; }
[data-bs-theme="dark"] #appDialog .modal-footer { border-top-color:#2c352c; }
[data-bs-theme="dark"] #appDialog .modal-body { color:var(--at-ink); }
/* Popup sobre popup: escurece mais o que está atrás. */
[data-bs-theme="dark"] .modal-backdrop.show { opacity:.65; }

/* --- Badges/contadores claros (text-bg-light / secondary) ------------------ */
[data-bs-theme="dark"] .text-bg-light {
  background-color:var(--at-surface-2) !important; color:var(--at-ink-2) !important; }
/* .bg-light cravado (ex.: campos Descrição/Total dos itens) -> superfície escura */
[data-bs-theme="dark"] .bg-light {
  background-color:var(--at-surface-2) !important; color:var(--at-ink) !important; }

/* --- Padrões comuns das telas com estilo próprio (fiscal/financeiro/estoque)
   São classes repetidas em vários <style> de tela; escurecidas aqui de uma vez.
   Só afetam telas em data-bs-theme="dark" (opt-in). --------------------------- */
[data-bs-theme="dark"] .panel {
  background:var(--at-surface) !important; border-color:var(--at-line) !important;
  box-shadow:0 1px 3px rgba(0,0,0,.4) !important; }
[data-bs-theme="dark"] table.nf thead th { color:var(--at-muted); }
[data-bs-theme="dark"] table.nf tbody tr.nfrow {
  background:var(--at-surface); box-shadow:0 1px 3px rgba(0,0,0,.35); }
[data-bs-theme="dark"] table.nf td { border-color:var(--at-line); }
[data-bs-theme="dark"] table.t tbody tr { background:var(--at-surface) !important; }
[data-bs-theme="dark"] table.t td { border-color:var(--at-line) !important; }
[data-bs-theme="dark"] table.t thead th { color:var(--at-muted); }
/* Caixas de aviso (info claras) → tom escuro correspondente */
[data-bs-theme="dark"] .aviso-local {
  background:#12241d !important; color:#bfe3d5 !important; }
[data-bs-theme="dark"] .aviso-mini {
  background:#241f10 !important; color:#e0c98a !important; border-color:#5a4a1e !important; }
/* Hovers claros comuns (#f7f9fc / #f4f7fb) em linhas/itens */
[data-bs-theme="dark"] .it-line:hover,
[data-bs-theme="dark"] .it-line[aria-expanded="true"],
[data-bs-theme="dark"] .ent-head:hover,
[data-bs-theme="dark"] .ent-head[aria-expanded="true"],
[data-bs-theme="dark"] .orc-head:hover,
[data-bs-theme="dark"] .orc-head[aria-expanded="true"],
[data-bs-theme="dark"] .it .l1:hover,
[data-bs-theme="dark"] .it .l1[aria-expanded="true"] { background:var(--at-surface-2) !important; }
[data-bs-theme="dark"] .it .l1[aria-expanded="true"] { border-bottom-color:var(--at-line) !important; }
[data-bs-theme="dark"] .itens-box,
[data-bs-theme="dark"] .ent,
[data-bs-theme="dark"] .det-grid {
  background:var(--at-surface) !important; border-color:var(--at-line) !important; }
[data-bs-theme="dark"] .it-header,
[data-bs-theme="dark"] .det-grid { background:var(--at-surface-2) !important; }

/* Superfícies "cartão/caixa" recorrentes nas telas custom (fundo branco -> escuro) */
[data-bs-theme="dark"] .nota-card,
[data-bs-theme="dark"] .busca-bar,
[data-bs-theme="dark"] .vazio,
[data-bs-theme="dark"] .card2,
[data-bs-theme="dark"] .dcard,
[data-bs-theme="dark"] .refbox,
[data-bs-theme="dark"] .afbox,
[data-bs-theme="dark"] .acbox,
[data-bs-theme="dark"] .chave-card,
[data-bs-theme="dark"] .consulta-card,
[data-bs-theme="dark"] .bm-sug,
[data-bs-theme="dark"] .bm-auto,
[data-bs-theme="dark"] .porque,
[data-bs-theme="dark"] .ano-blk {
  background:var(--at-surface) !important; border-color:var(--at-line) !important; }
/* Botões-ícone claros e "btn-nova" (fundo branco) */
[data-bs-theme="dark"] .btn-ico {
  background:var(--at-surface) !important; border-color:var(--at-line) !important; color:var(--at-ink-2) !important; }
[data-bs-theme="dark"] .btn-ico:hover { background:var(--at-surface-2) !important; }
/* Faixas de cabeçalho de mês/ano (claras) */
[data-bs-theme="dark"] .mes-head,
[data-bs-theme="dark"] .ano-head { background:var(--at-surface-2) !important; color:var(--at-ink) !important; }
/* Títulos/valores em texto ESCURO -> claro (senão somem no fundo escuro) */
[data-bs-theme="dark"] .emit,
[data-bs-theme="dark"] .prest,
[data-bs-theme="dark"] .valor,
[data-bs-theme="dark"] .ent-num,
[data-bs-theme="dark"] .serie-mono,
[data-bs-theme="dark"] .dval,
[data-bs-theme="dark"] .cli,
[data-bs-theme="dark"] .ea-nome { color:var(--at-ink) !important; }
[data-bs-theme="dark"] .meta b,
[data-bs-theme="dark"] .dlbl { color:var(--at-ink-2) !important; }
/* Títulos de seção dentro de painéis (color escuro fixo -> claro) */
[data-bs-theme="dark"] .panel h1,
[data-bs-theme="dark"] .panel h2,
[data-bs-theme="dark"] .panel h3,
[data-bs-theme="dark"] .panel h4,
[data-bs-theme="dark"] .panel .h2,
[data-bs-theme="dark"] .panel .h5 { color:var(--at-ink) !important; }
/* Rótulos/títulos/valores em texto escuro fixo dentro de cartões custom -> claro */
[data-bs-theme="dark"] .ck-label,
[data-bs-theme="dark"] .cc-nome,
[data-bs-theme="dark"] .kv .vl,
[data-bs-theme="dark"] .dado-val,
[data-bs-theme="dark"] .page-title { color:var(--at-ink) !important; }
[data-bs-theme="dark"] .card2 h3,
[data-bs-theme="dark"] .dado-lbl { color:var(--at-ink-2) !important; }
/* Telas custom de estoque/reparo/aprovação — superfícies cravadas em branco */
[data-bs-theme="dark"] .it,
[data-bs-theme="dark"] .doc,
[data-bs-theme="dark"] .rec,
[data-bs-theme="dark"] .pr,
[data-bs-theme="dark"] .orc-item,
[data-bs-theme="dark"] .apcard,
[data-bs-theme="dark"] .apvazio {
  background:var(--at-surface) !important; border-color:var(--at-line) !important; }
/* .descr saiu daqui: é um TEXTAREA (campo editável) e segue o padrão do campo —
   PRETO. Tratado como superfície, ficava grafite, com cara de bloqueado. */
[data-bs-theme="dark"] .doc .top,
[data-bs-theme="dark"] .orc-fields,
[data-bs-theme="dark"] .itens th,
[data-bs-theme="dark"] .anexo-btn { background:var(--at-surface-2) !important; }
[data-bs-theme="dark"] .navproc a,
[data-bs-theme="dark"] .ativa-tabs a,
[data-bs-theme="dark"] .st-chips a,
[data-bs-theme="dark"] .apf {
  background:var(--at-surface) !important; border-color:var(--at-line) !important; color:var(--at-ink-2) !important; }
[data-bs-theme="dark"] .st-chips a .cnt { background:var(--at-surface-2) !important; color:var(--at-ink-2) !important; }
/* Chips de status (verde/âmbar/vermelho claros) -> tom escuro */
[data-bs-theme="dark"] .st.ok { background:#12241a !important; color:#3ddc8b !important; border-color:#26533a !important; }
[data-bs-theme="dark"] .st.warn { background:#241f10 !important; color:#e0c98a !important; border-color:#5a4a1e !important; }
[data-bs-theme="dark"] .st.pend { background:#2c1618 !important; color:#ff7a7a !important; border-color:#5a2a2c !important; }
/* Textos/títulos escuros -> claros */
[data-bs-theme="dark"] .serie-mono,
[data-bs-theme="dark"] .cli,
[data-bs-theme="dark"] .doc .tit,
[data-bs-theme="dark"] .oi,
[data-bs-theme="dark"] .apnum,
[data-bs-theme="dark"] .apforn,
[data-bs-theme="dark"] .apval,
[data-bs-theme="dark"] .apgrid .v,
[data-bs-theme="dark"] .descr-lbl { color:var(--at-ink) !important; }
[data-bs-theme="dark"] .sec,
[data-bs-theme="dark"] .apsec,
[data-bs-theme="dark"] .apgrid .k { color:var(--at-ink-2) !important; }
/* Números coloridos por ATIVA na aprovação (azul/teal) — clareia */
[data-bs-theme="dark"] .apa-auto .apnum { color:#60A5FA !important; }
[data-bs-theme="dark"] .apa-pro .apnum { color:#34D399 !important; }
/* Caixas de info/aviso claras -> tom escuro */
[data-bs-theme="dark"] .aviso,
[data-bs-theme="dark"] .box-novo-funil { background:#15233a !important; border-color:#2a3f66 !important; color:#cfe0ff !important; }
[data-bs-theme="dark"] .apobs,
[data-bs-theme="dark"] .orc-anexo { background:#241f10 !important; border-color:#5a4a1e !important; color:#e0c98a !important; }
[data-bs-theme="dark"] .apfoot { border-top-color:var(--at-line) !important; }
/* Textos de apoio (dica/sub/meta/discriminação) escuros -> tom claro legível */
[data-bs-theme="dark"] .chave-hint,
[data-bs-theme="dark"] .sub,
[data-bs-theme="dark"] .meta,
[data-bs-theme="dark"] .cc-sub,
[data-bs-theme="dark"] .ea-sub,
[data-bs-theme="dark"] .disc,
[data-bs-theme="dark"] .step,
[data-bs-theme="dark"] .consulta-title { color:var(--at-ink-2) !important; }
/* Campo da chave (FIS002): fundo claro -> escuro, texto legível */
[data-bs-theme="dark"] .chave-input {
  background:var(--at-surface-2) !important; color:var(--at-ink) !important; border-color:#2F5FAE !important; }
[data-bs-theme="dark"] .chave-input:focus { background:var(--at-surface) !important; }
[data-bs-theme="dark"] .chave-input::placeholder { color:var(--at-muted) !important; }
[data-bs-theme="dark"] .cc-ic { background:#1c2b3f !important; }
/* Cabeçalho de tabelas "itens" (fundo claro) */
[data-bs-theme="dark"] table.itens th { background:var(--at-surface-2) !important; color:var(--at-ink-2) !important; }
[data-bs-theme="dark"] table.itens th,
[data-bs-theme="dark"] table.itens td { border-color:var(--at-line) !important; }
/* Linha de item "de reparo" (verde clarinho) -> verde escuro tingido */
[data-bs-theme="dark"] table.itens tr.rep { background:#12241a !important; }
/* Espelho da nota (FIS004): rótulos e valores cravados em tons de fundo claro */
[data-bs-theme="dark"] .doc .val,
[data-bs-theme="dark"] .doc .nome-big { color:var(--at-ink) !important; }
[data-bs-theme="dark"] .doc .lbl,
[data-bs-theme="dark"] .doc .sec-tit,
[data-bs-theme="dark"] .dsub { color:var(--at-ink-2) !important; }
/* Divisórias internas do espelho (bordas claras viravam traços brancos) */
[data-bs-theme="dark"] .doc .sec,
[data-bs-theme="dark"] .doc .grid2 > div:first-child { border-color:var(--at-line) !important; }
/* Faixas "cliente cadastrado / sem cadastro" (verde e âmbar claros) -> tom escuro */
[data-bs-theme="dark"] .cli-ok {
  background:#12241a !important; border-color:#26533a !important; color:#3ddc8b !important; }
[data-bs-theme="dark"] .cli-no {
  background:#241f10 !important; border-color:#5a4a1e !important; color:#e0c98a !important; }
[data-bs-theme="dark"] .cli-ok strong,
[data-bs-theme="dark"] .cli-no strong { color:inherit !important; }
/* Chips .pill (color-mix com #fff -> claro): reescreve para tom escuro tingido.
   A LETRA TAMBEM CLAREIA. Sem isto, o fundo escurecia e o texto continuava na
   cor cheia (o ambar #C77800, o roxo #7A4FB0): escuro sobre escuro, contraste de
   3,4 para 1 num texto de 10,5 px -- abaixo do minimo que se le' sem esforco
   (4,5). Misturado com branco, o mesmo selo passa de 8. */
[data-bs-theme="dark"] .pill {
  background:color-mix(in srgb, var(--c, var(--at-accent)) 24%, #0c110d) !important;
  border-color:color-mix(in srgb, var(--c, var(--at-accent)) 45%, #0c110d) !important;
  color:color-mix(in srgb, var(--c, var(--at-accent)) 50%, #fff) !important; }
/* Hovers CLAROS de linha/cartão (viravam branco no escuro) */
[data-bs-theme="dark"] table.af tbody tr:hover td,
[data-bs-theme="dark"] table.ac tbody tr:hover td { background:var(--at-surface-2) !important; }
[data-bs-theme="dark"] .cand:hover,
[data-bs-theme="dark"] .ano-head:hover,
[data-bs-theme="dark"] .mes-head:hover { background:var(--at-surface-2) !important; }
[data-bs-theme="dark"] .btn-ico.del:hover { background:#2a1c1c !important; }
[data-bs-theme="dark"] .btn-reconhecer {
  background:var(--at-surface) !important; border-color:#6b4fa0 !important; color:#c9b6e6 !important; }
[data-bs-theme="dark"] .btn-reconhecer:hover { background:var(--at-surface-2) !important; }

/* Card-botão das telas de sequência (.seqcard em cards.css): fundo branco -> escuro.
   Mantém o RELEVO colorido por etapa (--c) na sombra de baixo. */
[data-bs-theme="dark"] .seqcard {
  background:linear-gradient(180deg,#1a221b 0%,#121812 100%);
  border-color:var(--at-line); color:var(--at-ink);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05),
              0 4px 0 color-mix(in srgb, var(--c) 42%, #0a0f0a),
              0 9px 18px rgba(0,0,0,.45); }
[data-bs-theme="dark"] .seqcard:hover {
  color:var(--at-ink);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06),
              0 7px 0 color-mix(in srgb, var(--c) 52%, #0a0f0a),
              0 14px 26px rgba(0,0,0,.5); }
[data-bs-theme="dark"] .seqcard:active {
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05),
              0 0 0 color-mix(in srgb, var(--c) 42%, #0a0f0a),
              0 3px 8px rgba(0,0,0,.5); }
[data-bs-theme="dark"] .seqcard .ir { color:var(--at-muted); }

/* ===========================================================================
   PALETA "ATIVA" (design novo — referência do Painel).  OPT-IN por tela via
   {% block body_class %}theme-ativa{% endblock %}.  Só REDEFINE as cores (tokens);
   a estrutura/estilos continuam os mesmos. Especificidade alta para vencer o
   bloco [data-bs-theme="dark"] padrão. NÃO altera telas sem a classe.
   =========================================================================== */
body.theme-ativa[data-bs-theme="dark"] {
  /* Superfícies neutras (#121212 / #1E1E1E / #242424 / #2D2D2D) */
  --at-bg:#121212; --at-surface:#1E1E1E; --at-surface-2:#242424; --at-line:#2D2D2D;
  --at-ink:#FFFFFF; --at-ink-2:#E0E0E0; --at-muted:#B0B0B0; --at-accent:#10B981;
  /* Tokens da grade de fluxo de caixa */
  --dx-ink:#E0E0E0; --dx-muted:#B0B0B0; --dx-faint:#717171;
  --dx-line:#2D2D2D; --dx-line2:#3A3A3A;
  --dx-cat:#242424; --dx-cat-h:#2D2D2D; --dx-has:#3A3416; --dx-has-h:#4A4320;
  --dx-wknd:#242424; --dx-danger:#F87171; --dx-neg:#F87171; --dx-pos:#34D399;
}
/* Texto dos valores/campos mais claro na paleta nova */
body.theme-ativa[data-bs-theme="dark"] .plan input,
body.theme-ativa[data-bs-theme="dark"] .plan tr.apl .totcol { color:#93C5FD !important; }
/* Ajusta as poucas superfícies cravadas em tom esverdeado -> neutro */
body.theme-ativa[data-bs-theme="dark"] .dxwrap tr.sub1 td,
body.theme-ativa[data-bs-theme="dark"] .dxwrap tr.sub1 td.lbl { background:#242424 !important; }
body.theme-ativa[data-bs-theme="dark"] .dxwrap tr.sub1:hover td,
body.theme-ativa[data-bs-theme="dark"] .dxwrap tr.sub1:hover td.lbl { background:#2D2D2D !important; }
/* Acentos de status na paleta nova (azul=info, vermelho=alerta, esmeralda=ok) */
body.theme-ativa[data-bs-theme="dark"] .dxwrap .v.st-previsao { color:#60A5FA !important; }
body.theme-ativa[data-bs-theme="dark"] .dxwrap .v.st-aberto { color:#10B981 !important; }
body.theme-ativa[data-bs-theme="dark"] .dxwrap .v.st-pago { color:#EF4444 !important; }
/* Neutraliza os poucos verdes "cravados" (viravam neutro na paleta nova) */
body.theme-ativa[data-bs-theme="dark"] .seqcard {
  background:linear-gradient(180deg,#242424 0%,#1a1a1a 100%); border-color:#2D2D2D; }
body.theme-ativa[data-bs-theme="dark"] .aviso-local {
  background:#242424 !important; color:#E0E0E0 !important; }
body.theme-ativa[data-bs-theme="dark"] .dxmo .m-anot {
  background:#242424 !important; border-color:#2D2D2D !important; }
body.theme-ativa[data-bs-theme="dark"] .dxmo .m-li.sel {
  background:#242424 !important; }
body.theme-ativa[data-bs-theme="dark"] .dxwrap td.dxc.aut,
body.theme-ativa[data-bs-theme="dark"] .dxwrap tr.gleaf td.mes-col,
body.theme-ativa[data-bs-theme="dark"] .dxwrap tr.sub1 td.mes-col { background:#3A3416 !important; }

/* ===========================================================================
   FLUXO DE CAIXA — grades Desencaixe/Encaixe (.dx*) e Saldo (.plan/.ext/.sit)
   As grades usam tokens --dx-*; redefinimos os NEUTROS (mantendo o accent do
   módulo) e escurecemos as superfícies cravadas em #fff, preservando os tons
   semânticos: azul = encaixe, vermelho = desencaixe, verde = saldo, âmbar = mês.
   =========================================================================== */
[data-bs-theme="dark"] {
  --dx-ink:#eef3ee; --dx-muted:#a6b3a8; --dx-faint:#7c8a7f;
  --dx-line:#232c24; --dx-line2:#2c362e;
  --dx-cat:#1b2620; --dx-cat-h:#22302a; --dx-has:#3a3416; --dx-has-h:#4a4320;
  --dx-wknd:#232d30; --dx-danger:#ef6b62; --dx-neg:#ff7a7a; --dx-pos:#3ddc8b;
}
/* Desencaixe/Encaixe: superfícies cravadas em branco */
[data-bs-theme="dark"] .dxbt,
[data-bs-theme="dark"] .dxsel,
[data-bs-theme="dark"] .dxwrap .lbl { background:var(--at-surface) !important; color:var(--at-ink); }
/* Restaura os botões COLORIDos (o override .dxbt acima os apagava) */
[data-bs-theme="dark"] .dxbt.primary {
  background:var(--dx-accent) !important; color:var(--dx-on) !important; border-color:var(--dx-accent) !important; }
[data-bs-theme="dark"] .dxbt.primary:disabled { opacity:.55; }
[data-bs-theme="dark"] .dxbt.nfse {
  background:#E8A317 !important; color:#0c110d !important; border-color:#E8A317 !important; }
[data-bs-theme="dark"] .dxbt.danger { background:transparent !important; color:var(--dx-danger) !important; }
/* Opções do <select> no modal (cores inline escuras -> legíveis no dropdown) */
[data-bs-theme="dark"] .dxmo select option { background:#1a221b; color:var(--at-ink); }
[data-bs-theme="dark"] .dxmo select option[value="apagar"] { color:#eef3ee !important; }
[data-bs-theme="dark"] .dxmo select option[value="previsao"] { color:#6f9bff !important; }
[data-bs-theme="dark"] .dxmo select option[value="pago"] { color:#ff7a7a !important; }
[data-bs-theme="dark"] .dxmo select option[value="aguardando"] { color:#a6b3a8 !important; }
[data-bs-theme="dark"] .dxwrap thead th,
[data-bs-theme="dark"] .dxwrap thead th.lbl { background:var(--at-surface-2) !important; }
[data-bs-theme="dark"] .dxwrap tr.sub1 td,
[data-bs-theme="dark"] .dxwrap tr.sub1 td.lbl { background:#1c2620 !important; }
[data-bs-theme="dark"] .dxwrap tr.sub1:hover td,
[data-bs-theme="dark"] .dxwrap tr.sub1:hover td.lbl { background:#243029 !important; }
[data-bs-theme="dark"] .dxwrap tr.lan td.dxc:hover { background:var(--at-surface-2) !important; }
/* Coluna do mês (âmbar) */
[data-bs-theme="dark"] .dxwrap tr.sub1 td.mes-col,
[data-bs-theme="dark"] .dxwrap tr.gleaf td.mes-col { background:#2c2612 !important; }
[data-bs-theme="dark"] .dxwrap th.mes-col { background:#322b14 !important; color:#e0c98a !important; }
[data-bs-theme="dark"] .dxwrap tr.lan td.mes-col { background:#322b14 !important; color:#f0e6c8 !important; }
[data-bs-theme="dark"] .dxwrap td.dxc.aut { background:#2a2410 !important; }
[data-bs-theme="dark"] .dxwrap td.dxc.aut:hover { background:#352d14 !important; }
/* Cores de status dos valores (as escuras não legíveis -> tons claros) */
[data-bs-theme="dark"] .dxwrap .v.st-previsao { color:#6f9bff !important; }
[data-bs-theme="dark"] .dxwrap .v.st-aberto { color:#3ddc8b !important; }
[data-bs-theme="dark"] .dxwrap .v.st-pago { color:#ff7a7a !important; }
[data-bs-theme="dark"] .dxwrap .v.st-apagar,
[data-bs-theme="dark"] .dxwrap .v.st-multi { color:var(--at-ink) !important; }
/* "Aguardando entrega" ficou de fora quando as outras foram clareadas: o valor
   saía em #6B7280 (cinza de papel branco) sobre fundo escuro e quase sumia — e é
   o status de todo PA de reparo aprovado, ou seja, boa parte da tela. Cinza claro
   mantém a leitura de "ainda não é uma dívida vencida" sem esconder o número. */
/* "Aguardando entrega": o CAMPO em cinza e o valor em BRANCO. A cor sai do texto
   e vai para o fundo — em cinza-no-texto ele ficava a um fio do "a pagar" (quase
   branco), e o ambar que se tentou antes ja' e' a cor de espera por APROVACAO no
   resto do sistema. O cinza cheio diz o que e': mercadoria nao chegou. */
[data-bs-theme="dark"] .dxwrap td.dxc.agd { background:#6B7280 !important; }
[data-bs-theme="dark"] .dxwrap td.dxc.agd:hover { background:#7A8290 !important; }
[data-bs-theme="dark"] .dxwrap td.dxc.agd .v,
[data-bs-theme="dark"] .dxwrap .v.st-aguardando { color:#FFFFFF !important; }
/* Modal de lançamento (.dxmo) */
[data-bs-theme="dark"] .dxmo { background:var(--at-surface) !important; color:var(--at-ink) !important; }
[data-bs-theme="dark"] .dxmo .m-head:hover,
[data-bs-theme="dark"] .dxmo .m-li:hover,
[data-bs-theme="dark"] .dxmo .m-add:hover { background:var(--at-surface-2) !important; }
[data-bs-theme="dark"] .dxmo .m-tab,
[data-bs-theme="dark"] .dxmo .m-add { background:var(--at-surface) !important; }
[data-bs-theme="dark"] .dxmo input,
[data-bs-theme="dark"] .dxmo select,
[data-bs-theme="dark"] .dxmo .cur-wrap { background:var(--at-surface-2) !important; color:var(--at-ink) !important; }
[data-bs-theme="dark"] .dxmo .m-li.sel { background:#14301f !important; }
[data-bs-theme="dark"] .dxmo .m-anot { background:#12241d !important; border-color:#26533a !important; }
[data-bs-theme="dark"] .m-nfse { background:#241f10 !important; border-color:#5a4a1e !important; }
[data-bs-theme="dark"] .m-nfse .mn-txt { color:#e0c98a !important; }
[data-bs-theme="dark"] .dxbt.danger:hover { background:#2a1c1c !important; }

/* Saldo — grade .plan (tons de linha por tipo) */
[data-bs-theme="dark"] .plan thead th,
[data-bs-theme="dark"] .plan .rowlbl { background:var(--at-surface) !important; }
[data-bs-theme="dark"] .plan td.totcol,
[data-bs-theme="dark"] .plan th.totcol { background:#322b14 !important; }
[data-bs-theme="dark"] .plan tr.enc td:not(.rowlbl):not(.totcol) { background:#15233a !important; }
[data-bs-theme="dark"] .plan tr.des td:not(.rowlbl):not(.totcol) { background:#2c1618 !important; }
[data-bs-theme="dark"] .plan tr.sld td:not(.rowlbl):not(.totcol) { background:#12241a !important; }
[data-bs-theme="dark"] .plan tr.apl td:not(.rowlbl):not(.totcol) { background:var(--at-surface) !important; }
[data-bs-theme="dark"] .plan tr.acum td:not(.rowlbl):not(.totcol) { background:var(--at-surface-2) !important; }
[data-bs-theme="dark"] .plan tr.enc td.passado:not(.rowlbl):not(.totcol) { background:#1b2f4d !important; }
[data-bs-theme="dark"] .plan tr.des td.passado:not(.rowlbl):not(.totcol) { background:#3a1c1f !important; }
[data-bs-theme="dark"] .plan tr.sld td.passado:not(.rowlbl):not(.totcol) { background:#173424 !important; }
[data-bs-theme="dark"] .plan tr.apl td.passado:not(.rowlbl):not(.totcol) { background:#20282a !important; }
[data-bs-theme="dark"] .plan tr.acum td.passado:not(.rowlbl):not(.totcol) { background:#252d2f !important; }
[data-bs-theme="dark"] .plan tr.enc .rowlbl { color:#6f9bff !important; }
[data-bs-theme="dark"] .plan tr.des .rowlbl { color:#ff7a7a !important; }
[data-bs-theme="dark"] .plan tr.sld .rowlbl { color:#3ddc8b !important; }
[data-bs-theme="dark"] .plan tr.acum .rowlbl { color:var(--at-muted) !important; }
/* FIM DE SEMANA e CONFERENCIA no quadro do mes (FLU004).
   As regras acima pintam a linha inteira com !important e especificidade alta
   (`tr.acum td.passado:not()...`): tanto o amarelo da conferencia quanto o
   sabado/domingo eram engolidos por elas. Estas duas vem DEPOIS e empatam em
   especificidade -- e no empate manda a ordem.
   O fim de semana nao troca a cor da linha: recebe um VEU azul-noite por cima
   (background-image, que o `background:` shorthand acima nao alcanca), para o
   encaixe continuar azul e o desencaixe vermelho no sabado. */
[data-bs-theme="dark"] .plan tr.acum td.conf:not(.rowlbl):not(.totcol) { background:#5A4A0E !important; }
[data-bs-theme="dark"] .plan tr td.wknd:not(.rowlbl):not(.totcol):not(.conf),
[data-bs-theme="dark"] .plan thead th.wknd {
  background-image: linear-gradient(rgba(6,11,22,.62), rgba(6,11,22,.62)) !important; }
/* O cabecalho do fim de semana ainda diz o nome do dia, mas em voz baixa: o veu
   sozinho, num fundo ja' escuro, quase nao se ve. */
[data-bs-theme="dark"] .plan thead th.wknd { color:#7C8794 !important; }
[data-bs-theme="dark"] .plan input { background:var(--at-surface-2) !important; color:#7fb0ff !important; }
[data-bs-theme="dark"] .plan tr.apl .totcol { color:#7fb0ff !important; }
/* Saldo — extrato (.ext-*) e badges de situação (.sit-*) */
[data-bs-theme="dark"] .extbt { background:var(--at-surface) !important; color:var(--at-ink) !important; }
[data-bs-theme="dark"] tr.ext-dia td { background:var(--at-surface-2) !important; }
[data-bs-theme="dark"] tr.ext-saldo td { background:var(--at-surface-2) !important; color:var(--at-ink) !important; }
[data-bs-theme="dark"] tr.ext-enc .ext-org,
[data-bs-theme="dark"] tr.ext-enc .ext-val { color:#3ddc8b !important; }
[data-bs-theme="dark"] tr.ext-des .ext-org,
[data-bs-theme="dark"] tr.ext-des .ext-val { color:#ff7a7a !important; }
[data-bs-theme="dark"] .sit-EM_ABERTO { color:#3ddc8b !important; background:#12241a !important; border-color:#26533a !important; }
[data-bs-theme="dark"] .sit-PREVISAO { color:#6f9bff !important; background:#15233a !important; border-color:#2a3f66 !important; }
[data-bs-theme="dark"] .sit-A_REALIZAR { color:var(--at-ink) !important; background:var(--at-surface-2) !important; border-color:var(--at-line) !important; }
[data-bs-theme="dark"] .sit-REALIZADO { color:#ff7a7a !important; background:#2c1618 !important; border-color:#5a2a2c !important; }
[data-bs-theme="dark"] .sit-AGUARDANDO { color:var(--at-muted) !important; background:var(--at-surface-2) !important; border-color:var(--at-line) !important; }

/* --- Divisores / bordas utilitárias --------------------------------------- */
[data-bs-theme="dark"] .border,
[data-bs-theme="dark"] .border-top,
[data-bs-theme="dark"] .border-bottom,
[data-bs-theme="dark"] .border-start,
[data-bs-theme="dark"] .border-end { border-color:var(--at-line) !important; }
