/* =========================================================================
   TEMA ESCURO — nfe-portal
   -------------------------------------------------------------------------
   Ativado por `data-tema="escuro"` no <html> (ver js_system/tema.js). Sem esse
   atributo nada aqui se aplica e o tema claro de ux.css continua valendo —
   este arquivo é puramente aditivo.

   Mesma paleta do webgescomercial, para os dois sistemas parecerem um só:
   cinza-azulado escuro (NÃO preto), fundo #161d25 e superfícies em degraus
   (#1e2731 → #26313d → #303c4a).

   O portal é bem mais simples que o webgescomercial: não tem DataTables,
   não tem Chart.js e quase não tem cor fixa em atributo `style` — por isso
   este arquivo é menor que o de lá.

   Carregar SEMPRE depois de ux.css (e de idx.css, na tela de login).
   ========================================================================= */

/* ===== TOKENS =====
   O ux.css do portal já centraliza tudo em variáveis, então redefini-las
   resolve a maior parte do tema; o resto são casos em que a variável é usada
   como FUNDO e não como texto. */
html[data-tema="escuro"] {
  /* Azuis da marca clareados: em fundo escuro o tom original (#305272) não
     alcança contraste de leitura. */
  --c-primary:        #5b8fb0;
  --c-primary-lt:     #6ea3c4;
  --c-primary-ltr:    #8bbcd8;
  --c-primary-dk:     #3d6a8a;
  --c-primary-dkr:    #2c4e70;

  --c-accent:         #1d97a7;
  --c-accent-hover:   #25aebf;
  --c-hover-text:     #93bfc4;

  --c-bg-body:        #161d25;
  --c-bg-login:       #161d25;
  --c-text:           #dce4ee;
  --c-text-muted:     #93a4b8;
  --c-text-light:     #f1f5f9;
  --c-border:         #35455a;
  --c-row-hover:      #2c3947;

  /* Superfícies (só existem no tema escuro; no claro o branco cumpre o papel) */
  --c-surface:        #1e2731;   /* cards, modais, painéis        */
  --c-surface-2:      #26313d;   /* header/footer de card, inputs */
  --c-surface-3:      #303c4a;   /* hover, elementos elevados     */
  --c-surface-inset:  #131920;   /* áreas rebaixadas              */

  /* Sombras precisam ser mais densas para aparecer sobre fundo escuro. */
  --shadow-sm:  0 1px 4px rgba(0,0,0,.40);
  --shadow-md:  0 3px 10px rgba(0,0,0,.50);
  --shadow-lg:  0 6px 24px rgba(0,0,0,.60);

  color-scheme: dark;   /* controles nativos (scroll, date picker, select) */
}

/* ===== BASE ===== */
html[data-tema="escuro"] body {
  background-color: var(--c-bg-body) !important;   /* ux.css usa !important */
  color: var(--c-text);
}

html[data-tema="escuro"] ::-webkit-scrollbar-track { background: #12181f; }
html[data-tema="escuro"] ::-webkit-scrollbar-thumb { background: #3d4d60; }
html[data-tema="escuro"] ::-webkit-scrollbar-thumb:hover { background: var(--c-primary); }

html[data-tema="escuro"] hr { border-color: var(--c-border); opacity: 1; }
html[data-tema="escuro"] a { color: var(--c-primary-lt); }
html[data-tema="escuro"] a:hover { color: var(--c-primary-ltr); }

/* ===== TOPBAR / SIDEBAR =====
   Já são escuras no tema claro; aqui descem mais um degrau para não ficarem
   *mais claras* que o conteúdo. */
html[data-tema="escuro"] .portal-navbar,
html[data-tema="escuro"] #portalTopbar .navbar,
html[data-tema="escuro"] #menuindex {
  background: linear-gradient(135deg, #1b2733 0%, #2a3f52 100%) !important;
  border-bottom: 1px solid rgba(255,255,255,.06);
}

html[data-tema="escuro"] .portal-navbar .user-chip { background: rgba(255,255,255,.10); }
html[data-tema="escuro"] .portal-navbar .user-chip:hover { background: rgba(255,255,255,.20); }
html[data-tema="escuro"] .portal-navbar #toggleSidebar { background: rgba(255,255,255,.10); }
html[data-tema="escuro"] .portal-navbar #toggleSidebar:hover { background: rgba(255,255,255,.22); }
html[data-tema="escuro"] .portal-logo { box-shadow: 0 1px 4px rgba(0,0,0,.5); }

html[data-tema="escuro"] .sidenav {
  background: linear-gradient(180deg, #1c2733 0%, #141c25 100%);
}
html[data-tema="escuro"] .sidenav .dropdown-divider { border-color: rgba(255,255,255,.14); }

/* ===== SUPERFÍCIES QUE USAM O AZUL DA MARCA COMO FUNDO =====
   Os tokens --c-primary* foram clareados acima para servirem de TEXTO sobre
   fundo escuro. Onde o ux.css os usa como FUNDO, o resultado ficaria claro
   demais — estes blocos devolvem o tom escuro. */
html[data-tema="escuro"] .table thead th,
html[data-tema="escuro"] .table > thead.table-dark th {
  background: #263748;
  color: var(--c-text);
}
html[data-tema="escuro"] .modal-header { background: #223345; }
html[data-tema="escuro"] .btn-primary {
  background: #3f739a;
  border-color: #3f739a;
  color: #fff;
}
html[data-tema="escuro"] .btn-primary:hover { background: #4b83ad; border-color: #4b83ad; }

/* ===== CARDS ===== */
html[data-tema="escuro"] .card {
  background-color: var(--c-surface);
  border-color: var(--c-border);
  color: var(--c-text);
}
html[data-tema="escuro"] .card-header {
  background: var(--c-surface-2);
  border-bottom-color: var(--c-border);
  color: var(--c-primary-ltr);
}
html[data-tema="escuro"] .card-footer {
  background: var(--c-surface-2);
  border-top-color: var(--c-border);
}
html[data-tema="escuro"] .card-title { color: var(--c-primary-ltr); }

/* ===== FORMULÁRIOS ===== */
html[data-tema="escuro"] .form-control,
html[data-tema="escuro"] .form-select,
html[data-tema="escuro"] textarea.form-control {
  background-color: var(--c-surface-2);
  border-color: var(--c-border);
  color: var(--c-text);
}
html[data-tema="escuro"] .form-control:focus,
html[data-tema="escuro"] .form-select:focus {
  background-color: var(--c-surface-2);
  border-color: var(--c-accent);
  color: var(--c-text);
  box-shadow: 0 0 0 3px rgba(29,151,167,.22);
}
html[data-tema="escuro"] .form-control::placeholder { color: #6d7f93; }
html[data-tema="escuro"] .form-control[readonly],
html[data-tema="escuro"] .form-control:disabled,
html[data-tema="escuro"] .form-select:disabled {
  background-color: #1a222b;
  color: var(--c-text-muted);
  border-color: #2c3846;
}
/* Seta do <select>: o SVG do Bootstrap é escuro e some no fundo escuro. */
html[data-tema="escuro"] .form-select {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2393a4b8' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
}
html[data-tema="escuro"] .input-group-text {
  background: var(--c-surface-3);
  border-color: var(--c-border);
  color: var(--c-text);
}
html[data-tema="escuro"] label,
html[data-tema="escuro"] .control-label,
html[data-tema="escuro"] .form-label { color: #a9bbd0; }
html[data-tema="escuro"] .form-check-input {
  background-color: var(--c-surface-3);
  border-color: #4a5a6d;
}
html[data-tema="escuro"] .form-check-input:checked {
  background-color: var(--c-accent);
  border-color: var(--c-accent);
}

/* ===== TABELAS =====
   Bootstrap pinta as linhas com box-shadow (--bs-table-accent-bg); trocar as
   variáveis resolve zebra e hover de uma vez. */
html[data-tema="escuro"] .table {
  color: var(--c-text);
  border-color: var(--c-border);
  --bs-table-bg: transparent;
  --bs-table-color: var(--c-text);
  --bs-table-striped-bg: rgba(255,255,255,.035);
  --bs-table-striped-color: var(--c-text);
  --bs-table-hover-bg: rgba(255,255,255,.07);
  --bs-table-hover-color: var(--c-text);
  --bs-table-border-color: var(--c-border);
}
html[data-tema="escuro"] .table > :not(caption) > * > * { border-bottom-color: var(--c-border); }
html[data-tema="escuro"] .table-bordered,
html[data-tema="escuro"] .table-bordered > :not(caption) > * > * { border-color: var(--c-border); }
/* ux.css fixa a zebra em #f4f8fb — precisa ser desfeito aqui. */
html[data-tema="escuro"] .table-striped tbody tr:nth-of-type(odd) { background: rgba(255,255,255,.035); }
html[data-tema="escuro"] .table-striped tbody tr:nth-of-type(odd):hover,
html[data-tema="escuro"] .table-hover tbody tr:hover { background: var(--c-row-hover); }

/* ===== MODAIS ===== */
html[data-tema="escuro"] .modal-content {
  background-color: var(--c-surface);
  color: var(--c-text);
}
html[data-tema="escuro"] .modal-footer {
  background: var(--c-surface-2);
  border-top-color: var(--c-border);
}
html[data-tema="escuro"] .modal-body { color: var(--c-text); }
/* O "x" do Bootstrap é um SVG preto: inverter para ficar visível. */
html[data-tema="escuro"] .btn-close { filter: invert(1) grayscale(100%) brightness(2); }

/* ===== DROPDOWNS ===== */
html[data-tema="escuro"] .dropdown-menu {
  background-color: var(--c-surface-2);
  border-color: var(--c-border);
  color: var(--c-text);
}
html[data-tema="escuro"] .dropdown-item { color: var(--c-text); }
html[data-tema="escuro"] .dropdown-item:hover,
html[data-tema="escuro"] .dropdown-item:focus {
  background: var(--c-surface-3);
  color: var(--c-primary-ltr);
}
html[data-tema="escuro"] .dropdown-divider { border-color: var(--c-border); }
html[data-tema="escuro"] .dropdown-header { color: var(--c-text-muted); }

/* ===== BOTÕES ===== */
html[data-tema="escuro"] .btn-light {
  background: var(--c-surface-3);
  border-color: var(--c-border);
  color: var(--c-text);
}
html[data-tema="escuro"] .btn-light:hover { background: #3a4757; color: #fff; }
html[data-tema="escuro"] .btn-secondary {
  background: #4a5a6d;
  border-color: #4a5a6d;
  color: #fff;
}
html[data-tema="escuro"] .btn-secondary:hover { background: #56687d; border-color: #56687d; }
html[data-tema="escuro"] .btn-outline-primary { color: var(--c-primary-lt); border-color: var(--c-primary-dk); }
html[data-tema="escuro"] .btn-outline-primary:hover { background: var(--c-primary-dk); color: #fff; }
html[data-tema="escuro"] .btn-outline-secondary { color: #a9bbd0; border-color: #4a5a6d; }
html[data-tema="escuro"] .btn-outline-secondary:hover { background: #4a5a6d; border-color: #4a5a6d; color: #fff; }
html[data-tema="escuro"] .btn-outline-danger { color: #eda0a0; border-color: #6b3232; }
html[data-tema="escuro"] .btn-outline-danger:hover { background: #8e3b3b; border-color: #8e3b3b; color: #fff; }

/* ===== UTILITÁRIOS BOOTSTRAP QUE ASSUMEM FUNDO CLARO =====
   O portal usa bg-light no <body> das telas internas e bg-white nas tabelas. */
html[data-tema="escuro"] .bg-white { background-color: var(--c-surface) !important; }
html[data-tema="escuro"] .bg-light { background-color: var(--c-bg-body) !important; color: var(--c-text); }
html[data-tema="escuro"] .text-dark { color: var(--c-text) !important; }
html[data-tema="escuro"] .text-black { color: var(--c-text) !important; }
html[data-tema="escuro"] .text-muted { color: var(--c-text-muted) !important; }
html[data-tema="escuro"] .text-secondary { color: var(--c-text-muted) !important; }
html[data-tema="escuro"] .text-primary { color: var(--c-primary-ltr) !important; }
html[data-tema="escuro"] .border,
html[data-tema="escuro"] .border-top,
html[data-tema="escuro"] .border-bottom,
html[data-tema="escuro"] .border-start,
html[data-tema="escuro"] .border-end { border-color: var(--c-border) !important; }
html[data-tema="escuro"] .shadow-sm { box-shadow: var(--shadow-sm) !important; }

/* Badges de status (statusBadge em api.js) sobre superfície escura. */
html[data-tema="escuro"] .badge.bg-dark { background-color: #4a5a6d !important; }
html[data-tema="escuro"] .badge.bg-light { background-color: var(--c-surface-3) !important; color: var(--c-text) !important; }
html[data-tema="escuro"] .badge.bg-secondary { background-color: #55677c !important; }
html[data-tema="escuro"] .badge.bg-warning { color: #1a2029 !important; }

html[data-tema="escuro"] .list-group-item {
  background-color: var(--c-surface);
  border-color: var(--c-border);
  color: var(--c-text);
}
html[data-tema="escuro"] .list-group-item-action:hover { background-color: var(--c-surface-3); color: var(--c-text); }

/* Alertas — valem também para os toasts (toast() em api.js usa .alert-*). */
html[data-tema="escuro"] .alert-info      { background: #17303a; border-color: #245061; color: #96d3e4; }
html[data-tema="escuro"] .alert-warning   { background: #3a3018; border-color: #6a5423; color: #e8c877; }
html[data-tema="escuro"] .alert-danger    { background: #3a1f1f; border-color: #6b3232; color: #eda0a0; }
html[data-tema="escuro"] .alert-success   { background: #17301f; border-color: #285a3a; color: #8fd9ac; }
html[data-tema="escuro"] .alert-secondary { background: #262e38; border-color: #3d4854; color: #b6c2d0; }
html[data-tema="escuro"] .alert-primary   { background: #1b2b3a; border-color: #2e4a63; color: #9dc4e0; }

html[data-tema="escuro"] .spinner-border { color: var(--c-primary-ltr); }

/* ===== RODAPÉ ===== */
html[data-tema="escuro"] .portal-footer,
html[data-tema="escuro"] footer.fixed-bottom { background: #1b2733; }

/* ===== PÁGINA DE LOGIN ===== */
html[data-tema="escuro"] #boxinformacoes.card,
html[data-tema="escuro"] #boxlogin.card { box-shadow: var(--shadow-lg); }
html[data-tema="escuro"] .custom-modal-content { background: var(--c-surface); color: var(--c-text); }
html[data-tema="escuro"] .close-btn { color: var(--c-text-muted); }
html[data-tema="escuro"] .close-btn:hover { color: var(--c-text); }
html[data-tema="escuro"] .login-bg {
  background: linear-gradient(135deg, #17212c 0%, #24374a 100%);
}

/* ===== NEUTRALIZAÇÃO DE ESTILOS INLINE =====
   Poucas cores fixas sobraram no HTML do portal; o seletor de atributo as
   intercepta enquanto não migram para os tokens. O sinalizador `i` é
   necessário porque o HTML traz `#2C4E70` em maiúsculas. */
html[data-tema="escuro"] [style*="#2c4e70" i] {
  background-color: #223345 !important;
  color: var(--c-text) !important;
}
html[data-tema="escuro"] [style*="#3a536a" i] { color: var(--c-text) !important; }
html[data-tema="escuro"] [style*="#1a8c5e" i] { color: #4cc38a !important; }

/* ===== BOTÃO DE ALTERNÂNCIA DE TEMA ===== */
.btn-tema {
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.22);
  color: var(--c-text-light);
  border-radius: var(--r-sm, 6px);
  padding: .3rem .55rem;
  line-height: 1;
  transition: background .18s ease;
}
.btn-tema:hover {
  background: rgba(255,255,255,.26);
  color: #fff;
}
.btn-tema:focus { color: #fff; }
