/*
 * Tema escuro global do Portal SGA.
 *
 * Reaproveita a paleta "Vault" já validada no módulo financeiro
 * (backend/financeiro/templates/financeiro/_base_financeiro.html), agora
 * como tokens compartilhados e alternáveis via atributo `data-theme="dark"`
 * na tag <html> — em vez de forçado só num módulo isolado.
 *
 * Ativado/desativado por portal/static/portal/js/theme-toggle.js.
 * Bootstrap 5.1.3 (versão usada aqui) não tem suporte nativo a dark mode
 * (isso só chegou no Bootstrap 5.3), então os overrides abaixo são manuais,
 * cobrindo os componentes mais usados (cards, tabelas, dropdowns, modais,
 * formulários, badges, listas) em vez de cada classe utilitária isolada.
 */

:root[data-theme="dark"] {
  --dt-accent: #3b82f6;
  --dt-accent-dark: #2563eb;
  --dt-accent-soft: rgba(59, 130, 246, 0.12);
  --dt-ink: #f4f5f7;
  --dt-ink-soft: #c7cad1;
  --dt-muted: #8b8f98;
  --dt-line: #1f2229;
  --dt-bg: #06070a;
  --dt-surface: #0e0f13;
  --dt-card: #131519;
  --dt-card-hover: #17191d;
}

/* ── Barra de rolagem (nativa do navegador) ────────────────────────
   Sem isso, qualquer `.table-responsive`/overflow-x fica com o
   scrollbar claro padrão do SO/navegador destacado sobre o fundo
   escuro — a "faixa branca" mais comum em telas com tabela larga. ── */
:root[data-theme="dark"] * {
  scrollbar-color: var(--dt-line) var(--dt-surface);
}
:root[data-theme="dark"] ::-webkit-scrollbar {
  width: 12px;
  height: 12px;
}
:root[data-theme="dark"] ::-webkit-scrollbar-track {
  background: var(--dt-surface);
}
:root[data-theme="dark"] ::-webkit-scrollbar-thumb {
  background: var(--dt-line);
  border-radius: 6px;
  border: 2px solid var(--dt-surface);
}
:root[data-theme="dark"] ::-webkit-scrollbar-thumb:hover {
  background: #2a2e37;
}

/* ── Barra lateral — mesma paleta "Vault" já usada no financeiro
   (_base_financeiro.html tem um bloco idêntico a este, mas só carrega
   nas páginas do módulo financeiro; aqui é a versão que vale pro resto
   do site, alternável junto com o tema escuro global). ─────────────── */
:root[data-theme="dark"] #sidebarMenu {
  background: #0a0b0e !important;
  border-right: 1px solid #17191d;
}
:root[data-theme="dark"] #sidebarMenu .nav-link,
:root[data-theme="dark"] #sidebarMenu .btn,
:root[data-theme="dark"] #sidebarMenu .btn-toggle,
:root[data-theme="dark"] #sidebarMenu .sidebar-text {
  color: #9aa0ab !important;
}
:root[data-theme="dark"] #sidebarMenu .nav-link:hover {
  color: #fff !important;
  background: #15171c !important;
}
:root[data-theme="dark"] #sidebarMenu .nav-item.active > .nav-link,
:root[data-theme="dark"] #sidebarMenu .nav-link.active {
  color: #fff !important;
  background: rgba(59, 130, 246, 0.16) !important;
}
:root[data-theme="dark"] #sidebarMenu .nav-link .sidebar-icon,
:root[data-theme="dark"] #sidebarMenu .nav-link i {
  color: #6b7280 !important;
}
:root[data-theme="dark"] #sidebarMenu .nav-link:hover .sidebar-icon,
:root[data-theme="dark"] #sidebarMenu .nav-link:hover i,
:root[data-theme="dark"] #sidebarMenu .nav-item.active > .nav-link .sidebar-icon,
:root[data-theme="dark"] #sidebarMenu .nav-item.active > .nav-link i,
:root[data-theme="dark"] #sidebarMenu .nav-link.active i {
  color: #60a5fa !important;
}
:root[data-theme="dark"] #sidebarMenu .fin-sidebar-group-label {
  color: #4b5058 !important;
}
:root[data-theme="dark"] #sidebarMenu #sidebar-search-item .input-group-text,
:root[data-theme="dark"] #sidebarMenu #sidebar-search-item input,
:root[data-theme="dark"] #sidebarMenu #sidebar-search-item .btn {
  background: #131519 !important;
  border-color: #1f2229 !important;
  color: #cfd2d8 !important;
}
:root[data-theme="dark"] #sidebarMenu #sidebar-search-item input:focus {
  outline: none;
  box-shadow: 0 0 0 0.15rem rgba(59, 130, 246, 0.35) !important;
  border-color: #3b82f6 !important;
}
:root[data-theme="dark"] #sidebarMenu #sidebar-search-item input::placeholder {
  color: #565b66 !important;
}

/* ── Casca da página ──────────────────────────────────────────────── */
:root[data-theme="dark"] body {
  background: var(--dt-bg) !important;
  color: var(--dt-ink-soft);
}
:root[data-theme="dark"] main.content {
  background: var(--dt-bg);
}
:root[data-theme="dark"] .navbar-top {
  background: var(--dt-bg) !important;
  border-bottom: 1px solid var(--dt-line);
  box-shadow: none !important;
}
:root[data-theme="dark"] .navbar-top .btn-outline-secondary {
  color: var(--dt-ink-soft);
  border-color: var(--dt-line);
  background: transparent;
}
:root[data-theme="dark"] .navbar-top .btn-outline-secondary:hover {
  background: var(--dt-card-hover);
}

/* ── Tipografia / texto ───────────────────────────────────────────── */
:root[data-theme="dark"] h1,
:root[data-theme="dark"] h2,
:root[data-theme="dark"] h3,
:root[data-theme="dark"] h4,
:root[data-theme="dark"] h5,
:root[data-theme="dark"] h6,
:root[data-theme="dark"] .text-dark,
:root[data-theme="dark"] .text-gray-900,
:root[data-theme="dark"] .text-gray-800 {
  color: var(--dt-ink) !important;
}
:root[data-theme="dark"] .text-muted,
:root[data-theme="dark"] .text-gray-600,
:root[data-theme="dark"] .text-gray-500 {
  color: var(--dt-muted) !important;
}
/* `--bs-primary` deste projeto é #1F2937 (cinza-azulado escuro, pensado
   pra fundo claro) — em modo escuro fica ilegível sobre o fundo também
   escuro. Troca só a leitura de texto/borda por --dt-accent (azul já
   usado no resto do tema); não mexe em --bs-primary global pra não
   afetar botões/badges que já têm tratamento próprio. */
:root[data-theme="dark"] .text-primary {
  color: var(--dt-accent, #3b82f6) !important;
}
:root[data-theme="dark"] .border-left-primary {
  border-left-color: var(--dt-accent, #3b82f6) !important;
}
:root[data-theme="dark"] a:not(.btn):not(.nav-link):not(.dropdown-item) {
  color: #60a5fa;
}

/* ── Cards ────────────────────────────────────────────────────────── */
:root[data-theme="dark"] .card {
  background-color: var(--dt-card);
  border-color: var(--dt-line);
  color: var(--dt-ink-soft);
}
:root[data-theme="dark"] .card-header,
:root[data-theme="dark"] .card-footer {
  background-color: var(--dt-surface);
  border-color: var(--dt-line);
}

/* ── Tabelas ──────────────────────────────────────────────────────── */
:root[data-theme="dark"] .table {
  color: var(--dt-ink-soft);
  border-color: var(--dt-line);
}
:root[data-theme="dark"] .table thead th {
  color: var(--dt-muted);
  border-color: var(--dt-line);
  background-color: transparent;
}
:root[data-theme="dark"] .table td,
:root[data-theme="dark"] .table th {
  border-color: var(--dt-line);
}
:root[data-theme="dark"] .table-hover tbody tr:hover {
  background-color: var(--dt-card-hover);
  color: var(--dt-ink);
}
:root[data-theme="dark"] .table-striped tbody tr:nth-of-type(odd) {
  background-color: rgba(255, 255, 255, 0.02);
}

/* ── Formulários ──────────────────────────────────────────────────── */
:root[data-theme="dark"] .form-control,
:root[data-theme="dark"] .form-select {
  background-color: var(--dt-surface);
  border-color: var(--dt-line);
  color: var(--dt-ink);
}
:root[data-theme="dark"] .form-control:focus,
:root[data-theme="dark"] .form-select:focus {
  background-color: var(--dt-surface);
  border-color: var(--dt-accent);
  color: var(--dt-ink);
  box-shadow: 0 0 0 0.2rem var(--dt-accent-soft);
}
:root[data-theme="dark"] .form-control::placeholder {
  color: #565b66;
}
:root[data-theme="dark"] .form-control:disabled,
:root[data-theme="dark"] .form-control[readonly],
:root[data-theme="dark"] .form-select:disabled {
  background-color: var(--dt-surface) !important;
  border-color: var(--dt-line) !important;
  color: var(--dt-muted) !important;
}
/* ── ".readonly-field"/".disabled-select" ad-hoc (não são <input>,
   são <div>/<select> com CSS de fundo claro copiado nos formulários
   de Sinistro — telas de edição/criação) ──────────────────────────── */
:root[data-theme="dark"] .readonly-field {
  background-color: var(--dt-surface) !important;
  border-color: var(--dt-line) !important;
  color: var(--dt-muted) !important;
}
:root[data-theme="dark"] .disabled-select {
  background-color: var(--dt-surface) !important;
  color: var(--dt-muted) !important;
}
:root[data-theme="dark"] .table-form {
  background: var(--dt-surface) !important;
}
:root[data-theme="dark"] .table-form th {
  background: var(--dt-line) !important;
  color: var(--dt-ink-soft) !important;
}
:root[data-theme="dark"] .table-form td {
  background: var(--dt-surface) !important;
  color: var(--dt-ink) !important;
}
:root[data-theme="dark"] .total-display {
  background-color: var(--dt-surface) !important;
  border-color: var(--dt-line) !important;
  color: var(--dt-ink) !important;
}
:root[data-theme="dark"] .form-label,
:root[data-theme="dark"] .form-check-label {
  color: var(--dt-ink-soft);
}
:root[data-theme="dark"] .form-check-input {
  background-color: var(--dt-surface);
  border-color: var(--dt-line);
}
:root[data-theme="dark"] .input-group-text {
  background-color: var(--dt-surface);
  border-color: var(--dt-line);
  color: var(--dt-muted);
}

/* ── Dropdowns / Modais ───────────────────────────────────────────── */
:root[data-theme="dark"] .dropdown-menu {
  background-color: var(--dt-card);
  border-color: var(--dt-line);
}
:root[data-theme="dark"] .dropdown-item {
  color: var(--dt-ink-soft);
}
:root[data-theme="dark"] .dropdown-item:hover,
:root[data-theme="dark"] .dropdown-item:focus {
  background-color: var(--dt-card-hover);
  color: var(--dt-ink);
}
:root[data-theme="dark"] .dropdown-divider {
  border-color: var(--dt-line);
}
:root[data-theme="dark"] .modal-content {
  background-color: var(--dt-card);
  border-color: var(--dt-line);
  color: var(--dt-ink-soft);
}
:root[data-theme="dark"] .modal-header,
:root[data-theme="dark"] .modal-footer {
  border-color: var(--dt-line);
}

/* ── Listas / Alertas / Paginação ─────────────────────────────────── */
:root[data-theme="dark"] .list-group-item {
  background-color: var(--dt-card);
  border-color: var(--dt-line);
  color: var(--dt-ink-soft);
}
:root[data-theme="dark"] .list-group-item.bg-light {
  background-color: var(--dt-surface) !important;
}
:root[data-theme="dark"] .breadcrumb {
  background-color: transparent;
}
:root[data-theme="dark"] .page-link {
  background-color: var(--dt-card);
  border-color: var(--dt-line);
  color: var(--dt-ink-soft);
}
:root[data-theme="dark"] .page-item.active .page-link {
  background-color: var(--dt-accent);
  border-color: var(--dt-accent);
}

/* ── Padrão ad-hoc ".form-section" (copiado em ~68 templates de
   formulário — Core/Recursos/Tipos/CRM) — cada um define a própria
   `<style>` com `.form-section { background: white; ... }` inline, então
   sem este override específico essas telas ficariam com uma caixa branca
   destoante sobre o fundo escuro. Mais barato cobrir aqui uma vez do que
   editar os 68 arquivos. ─────────────────────────────────────────────── */
:root[data-theme="dark"] .form-section {
  background: var(--dt-card) !important;
  color: var(--dt-ink-soft);
}
:root[data-theme="dark"] .form-title {
  color: var(--dt-ink) !important;
  border-bottom-color: var(--dt-accent) !important;
}
:root[data-theme="dark"] .documento-info {
  background: var(--dt-surface) !important;
  color: var(--dt-ink-soft);
}

/* ── Caixas/badges com fundo claro forçado (bg-light, bg-white) ──────
   Usado solto em ~59 templates (cards de destaque, boxes de resumo,
   badges "badge bg-light"/"badge bg-white") — sem isso, ficam brancos
   sobre o fundo escuro (o "coisa em branco" relatado). Como .text-dark
   já é forçado claro acima, cobrir o fundo aqui resolve o par
   fundo-claro+texto-escuro nos dois sentidos. ────────────────────── */
:root[data-theme="dark"] .bg-light,
:root[data-theme="dark"] .bg-white {
  background-color: var(--dt-card) !important;
}
:root[data-theme="dark"] .border-light {
  border-color: var(--dt-line) !important;
}

/* ── Alertas Bootstrap (.alert-info/-secondary/-warning/...) ────────
   Usados como "balões" de destaque em dezenas de formulários (dados
   atuais, avisos, dicas) — as cores padrão do Bootstrap são pastel
   claro com texto escuro, iguais em qualquer tema; sem isso ficam
   caixas brancas/bege cravadas no meio do fundo escuro. ───────────── */
:root[data-theme="dark"] .alert-info {
  background-color: rgba(59, 130, 246, 0.12) !important;
  border-color: rgba(59, 130, 246, 0.35) !important;
  color: #93c5fd !important;
}
:root[data-theme="dark"] .alert-primary {
  background-color: var(--dt-accent-soft) !important;
  border-color: rgba(59, 130, 246, 0.35) !important;
  color: #93c5fd !important;
}
:root[data-theme="dark"] .alert-secondary {
  background-color: var(--dt-surface) !important;
  border-color: var(--dt-line) !important;
  color: var(--dt-ink-soft) !important;
}
:root[data-theme="dark"] .alert-warning {
  background-color: rgba(245, 158, 11, 0.12) !important;
  border-color: rgba(245, 158, 11, 0.35) !important;
  color: #fbbf24 !important;
}
:root[data-theme="dark"] .alert-success {
  background-color: rgba(34, 197, 94, 0.12) !important;
  border-color: rgba(34, 197, 94, 0.35) !important;
  color: #86efac !important;
}
:root[data-theme="dark"] .alert-danger {
  background-color: rgba(239, 68, 68, 0.12) !important;
  border-color: rgba(239, 68, 68, 0.35) !important;
  color: #fca5a5 !important;
}
:root[data-theme="dark"] .alert-light {
  background-color: var(--dt-surface) !important;
  border-color: var(--dt-line) !important;
  color: var(--dt-ink-soft) !important;
}
:root[data-theme="dark"] .alert .text-muted {
  color: var(--dt-muted) !important;
}

/* ── Mensagens didáticas .alerta-sistema-* (portal/includes/mensagens.html) */
:root[data-theme="dark"] .alerta-sistema-error {
  background-color: rgba(239, 68, 68, 0.14) !important;
  border-color: rgba(239, 68, 68, 0.4) !important;
  color: #fca5a5 !important;
}
:root[data-theme="dark"] .alerta-sistema-success {
  background-color: rgba(34, 197, 94, 0.14) !important;
  border-color: rgba(34, 197, 94, 0.4) !important;
  color: #86efac !important;
}
:root[data-theme="dark"] .alerta-sistema-warning {
  background-color: rgba(245, 158, 11, 0.14) !important;
  border-color: rgba(245, 158, 11, 0.4) !important;
  color: #fbbf24 !important;
}
:root[data-theme="dark"] .alerta-sistema-info,
:root[data-theme="dark"] .alerta-sistema-debug {
  background-color: rgba(59, 130, 246, 0.14) !important;
  border-color: rgba(59, 130, 246, 0.4) !important;
  color: #93c5fd !important;
}

/* ── Badges Bootstrap padrão ───────────────────────────────────────
   Os saturados (bg-primary/success/danger/warning/info/dark) já têm
   contraste OK sozinhos; só troca fundo+borda dos "claros". ───────── */
:root[data-theme="dark"] .badge.bg-secondary {
  background-color: #3a3f4b !important;
}

/* ── Select2 (usado em ~30 templates de formulário) ────────────────
   Sem isso, a caixa de seleção e o dropdown ficam brancos mesmo com
   o <select> por baixo já escurecido. ─────────────────────────────── */
:root[data-theme="dark"] .select2-container--default .select2-selection--single,
:root[data-theme="dark"] .select2-container--default .select2-selection--multiple {
  background-color: var(--dt-surface);
  border-color: var(--dt-line);
}
:root[data-theme="dark"] .select2-container--default .select2-selection--single .select2-selection__rendered {
  color: var(--dt-ink);
}
:root[data-theme="dark"] .select2-container--default .select2-selection--multiple .select2-selection__choice {
  background-color: var(--dt-card-hover);
  border-color: var(--dt-line);
  color: var(--dt-ink-soft);
}
:root[data-theme="dark"] .select2-dropdown {
  background-color: var(--dt-card);
  border-color: var(--dt-line);
}
:root[data-theme="dark"] .select2-search--dropdown .select2-search__field {
  background-color: var(--dt-surface);
  border-color: var(--dt-line);
  color: var(--dt-ink);
}
:root[data-theme="dark"] .select2-results__option {
  color: var(--dt-ink-soft);
}
:root[data-theme="dark"] .select2-results__option--highlighted[aria-selected] {
  background-color: var(--dt-accent) !important;
  color: #fff !important;
}
:root[data-theme="dark"] .select2-container--default .select2-selection--single .select2-selection__arrow b {
  border-color: var(--dt-muted) transparent transparent transparent;
}
/* Tema "select2-bootstrap-5-theme" (usado no formulário de Sinistro) —
   gera markup/classes diferentes do tema "default" acima, então precisa
   de um bloco próprio pra não ficar branco mesmo com o resto coberto. */
:root[data-theme="dark"] .select2-container--bootstrap-5 .select2-selection {
  background-color: var(--dt-surface) !important;
  border-color: var(--dt-line) !important;
  color: var(--dt-ink) !important;
}
:root[data-theme="dark"] .select2-container--bootstrap-5 .select2-selection__rendered,
:root[data-theme="dark"] .select2-container--bootstrap-5 .select2-selection__placeholder {
  color: var(--dt-ink) !important;
}
:root[data-theme="dark"] .select2-container--bootstrap-5 .select2-dropdown {
  background-color: var(--dt-card) !important;
  border-color: var(--dt-line) !important;
  color: var(--dt-ink-soft) !important;
}
:root[data-theme="dark"] .select2-container--bootstrap-5 .select2-search__field {
  background-color: var(--dt-surface) !important;
  border-color: var(--dt-line) !important;
  color: var(--dt-ink) !important;
}
:root[data-theme="dark"] .select2-container--bootstrap-5 .select2-results__option {
  color: var(--dt-ink-soft) !important;
  background-color: var(--dt-card) !important;
}
:root[data-theme="dark"] .select2-container--bootstrap-5 .select2-results__option--highlighted {
  background-color: var(--dt-accent) !important;
  color: #fff !important;
}

/* ── DataTables (usado em várias listagens) ───────────────────────── */
:root[data-theme="dark"] .dataTables_wrapper .dataTables_length,
:root[data-theme="dark"] .dataTables_wrapper .dataTables_filter,
:root[data-theme="dark"] .dataTables_wrapper .dataTables_info,
:root[data-theme="dark"] .dataTables_wrapper .dataTables_paginate {
  color: var(--dt-ink-soft);
}

/* ── Botão de alternância de tema ─────────────────────────────────────
   Antes era um display:none/inline-block seco trocando os ícones na
   marra; agora os dois ficam sempre no DOM, empilhados no mesmo lugar
   via position:absolute, e a troca é uma transição de opacidade +
   rotação + escala — sol gira e some, lua gira e aparece (e vice-versa).
   Um halo radial atrás acompanha a cor do tema atual. ────────────────── */
.theme-toggle-btn {
  position: relative;
  background: transparent;
  border: none;
  color: inherit;
  cursor: pointer;
  padding: 0.4rem 0.55rem;
  line-height: 1;
  width: 2.1rem;
  height: 2.1rem;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
  transition: background 0.25s ease, box-shadow 0.25s ease;
}
.theme-toggle-btn::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(251, 191, 36, 0.22) 0%, rgba(251, 191, 36, 0) 70%);
  opacity: 1;
  transition: opacity 0.4s ease, background 0.4s ease;
  pointer-events: none;
}
:root[data-theme="dark"] .theme-toggle-btn::before {
  background: radial-gradient(circle, rgba(96, 165, 250, 0.25) 0%, rgba(96, 165, 250, 0) 70%);
}
.theme-toggle-btn:hover {
  background: rgba(255, 255, 255, 0.08);
}
.theme-toggle-btn:active {
  transform: scale(0.9);
}
.theme-toggle-btn .fa-sun,
.theme-toggle-btn .fa-moon {
  position: absolute;
  top: 50%;
  left: 50%;
  transition: opacity 0.45s cubic-bezier(0.34, 1.56, 0.64, 1),
              transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.theme-toggle-btn .fa-sun {
  color: #fbbf24;
  opacity: 1;
  transform: translate(-50%, -50%) rotate(0deg) scale(1);
}
.theme-toggle-btn .fa-moon {
  color: #60a5fa;
  opacity: 0;
  transform: translate(-50%, -50%) rotate(-90deg) scale(0.4);
}
:root[data-theme="dark"] .theme-toggle-btn .fa-sun {
  opacity: 0;
  transform: translate(-50%, -50%) rotate(90deg) scale(0.4);
}
:root[data-theme="dark"] .theme-toggle-btn .fa-moon {
  opacity: 1;
  transform: translate(-50%, -50%) rotate(0deg) scale(1);
}
.theme-toggle-btn:hover .fa-sun {
  transform: translate(-50%, -50%) rotate(25deg) scale(1.12);
}
:root[data-theme="dark"] .theme-toggle-btn:hover .fa-moon {
  transform: translate(-50%, -50%) rotate(-18deg) scale(1.12);
}
