/* ==========================================================================
   MODO ESCURO DO LAUDÁRIO
   --------------------------------------------------------------------------
   Camada de override em cima do dark mode do Falcon (bloco `.dark` do
   theme.css, que já veio compilado no template e nunca tinha sido ligado).

   Ativado pela classe `.dark` no <html>. Quem aplica antes do paint é o
   assets/js/config.js (lê localStorage.theme), então não existe flash branco
   ao recarregar.

   ⛔ REGRA DE OURO: O LAUDO É PAPEL. PAPEL É BRANCO.
   Nada neste arquivo pode escurecer a área de escrita, o preview do laudo,
   o prontuário ou qualquer coisa que vire PDF/impressão. A seção 5 existe
   só para garantir isso e usa seletores de ID (especificidade maior) para
   vencer as varreduras genéricas das seções 2 a 4.
   ========================================================================== */


/* ==========================================================================
   1. TRANSIÇÃO DO TOGGLE
   Só enquanto troca de tema (a classe .theme-anim é removida em ~400ms pelo
   alternarTema()). Transição permanente em `*` deixaria a página pesada.
   ========================================================================== */
html.theme-anim,
html.theme-anim *,
html.theme-anim *::before,
html.theme-anim *::after {
    transition: background-color .28s ease, border-color .28s ease, color .22s ease, fill .28s ease !important;
}


/* ==========================================================================
   1b. PALETA DOS TEMAS ESCUROS
   Todas as superfícies deste arquivo e do dark-gerado.css saem em var(--ld-*).
   ESCURO define os valores; SUPERDARK (classe .superdark JUNTO com .dark) só
   redefine as variáveis — nenhuma regra é duplicada. Mesmo matiz, menos luz.
   Os TEXTOS não mudam entre os dois: contraste já foi calibrado pro pior caso.
   ========================================================================== */
html.dark {
    --ld-bg: #0b1727;      /* fundo da página */
    --ld-s0: #1c2634;      /* superfície elevada (cards, modais) */
    --ld-s1: #172231;      /* superfície rebaixada (faixas, zebra) */
    --ld-s2: #26344a;      /* superfície de contraste (hover, chips) */
    --ld-nav: #10263f;     /* navbar */
    --ld-inp: #0f1826;     /* campos de formulário */
    --ld-inp2: #16202e;    /* campos secundários (checkbox, radio) */
    --ld-borda: #2b3a52;
    --ld-borda2: #35496a;
    --ld-az0: #14263f; --ld-az1: #102039; --ld-az2: #1b3350;
    --ld-am0: #3a2e12; --ld-am1: #33290f; --ld-am2: #453718;
    --ld-vm0: #3a1620; --ld-vm1: #33131c; --ld-vm2: #4a1c28;
    --ld-vd0: #10312a; --ld-vd1: #0d2a24; --ld-vd2: #164036;
    --ld-rx0: #251b3d; --ld-rx1: #20173a; --ld-rx2: #2e2250;
}

html.dark.superdark {
    --ld-bg: #030609;
    --ld-s0: #0b111a;
    --ld-s1: #070c13;
    --ld-s2: #141d2b;
    --ld-nav: #081220;
    --ld-inp: #060b12;
    --ld-inp2: #0a111b;
    --ld-borda: #1a2537;
    --ld-borda2: #243349;
    --ld-az0: #0a1626; --ld-az1: #071020; --ld-az2: #0e1c30;
    --ld-am0: #241c08; --ld-am1: #1d1706; --ld-am2: #2b220c;
    --ld-vm0: #240b12; --ld-vm1: #1d0910; --ld-vm2: #2e1018;
    --ld-vd0: #081d18; --ld-vd1: #061713; --ld-vd2: #0c2820;
    --ld-rx0: #150e26; --ld-rx1: #110b20; --ld-rx2: #1b1232;
}


/* ==========================================================================
   2. SUPERFÍCIES — fundos brancos e claros hardcoded em style inline
   O CSS do projeto não tem variáveis: vive em 246 blocos <style> dentro dos
   PHP e em ~2.500 style inline com cor. Aqui a paleta clara é remapeada para
   a escura na marra, pelos valores que realmente aparecem no código.

   Cuidado com prefixo: "#fff" casa também com "#fff9e6". Por isso os brancos
   são casados com o `;` final ou com o fim do atributo ($=).
   ========================================================================== */

/* --- branco puro -> superfície escura elevada --- */
html.dark [style*="background:#fff;"],
html.dark [style*="background: #fff;"],
html.dark [style$="background:#fff"],
html.dark [style*="background:#ffffff"],
html.dark [style*="background: #ffffff"],
html.dark [style*="background:white"],
html.dark [style*="background: white"],
html.dark [style*="background-color:#fff;"],
html.dark [style*="background-color: #fff;"],
html.dark [style$="background-color:#fff"],
html.dark [style*="background-color:#ffffff"],
html.dark [style*="background-color: #ffffff"],
html.dark [style*="background-color:white"] {
    background-color: var(--ld-s0, #1c2634) !important;
}

/* --- cinzas/slate claros (fundo de seção, faixa, linha zebrada) --- */
html.dark [style*="background:#f8fafc"],
html.dark [style*="background:#f8f9fa"],
html.dark [style*="background:#f9fafb"],
html.dark [style*="background:#f1f5f9"],
html.dark [style*="background:#f5f5f5"],
html.dark [style*="background:#fafafa"],
html.dark [style*="background:#eee"],
html.dark [style*="background:#eeeeee"],
html.dark [style*="background-color:#f8fafc"],
html.dark [style*="background-color:#f8f9fa"],
html.dark [style*="background-color:#f1f5f9"] {
    background-color: var(--ld-s1, #172231) !important;
}

html.dark [style*="background:#e2e8f0"],
html.dark [style*="background:#e5e7eb"],
html.dark [style*="background:#d7e1ec"],
html.dark [style*="background:#ddd"],
html.dark [style*="background-color:#e2e8f0"],
html.dark [style*="background-color:#dee2e6"] {
    background-color: var(--ld-s2, #26344a) !important;
}

/* --- azuis claros (cards informativos, destaques do sistema) --- */
html.dark [style*="background:#eff6ff"],
html.dark [style*="background:#eef7ff"],
html.dark [style*="background:#eaf2fd"],
html.dark [style*="background:#fbfdff"],
html.dark [style*="background:#eef3f8"],
html.dark [style*="background:#e7f1ff"],
html.dark [style*="background:#dbeafe"],
html.dark [style*="background:#f0f7ff"],
html.dark [style*="background-color:#eff6ff"],
html.dark [style*="background-color:#e7f1ff"] {
    background-color: var(--ld-az0, #14263f) !important;
}

/* --- âmbar/aviso --- */
html.dark [style*="background:#fff9e6"],
html.dark [style*="background:#fffbeb"],
html.dark [style*="background:#fff3cd"],
html.dark [style*="background:#fffaeb"],
html.dark [style*="background:#fef3c7"],
html.dark [style*="background:#fff7ed"],
html.dark [style*="background:#fef9c3"],
html.dark [style*="background-color:#fff3cd"],
html.dark [style*="background-color:#fff9e6"] {
    background-color: var(--ld-am0, #3a2e12) !important;
}

/* --- vermelho/erro --- */
html.dark [style*="background:#fef2f2"],
html.dark [style*="background:#fff5f5"],
html.dark [style*="background:#fee2e2"],
html.dark [style*="background:#fff1f2"],
html.dark [style*="background:#f8d7da"],
html.dark [style*="background-color:#fef2f2"],
html.dark [style*="background-color:#f8d7da"] {
    background-color: var(--ld-vm0, #3a1620) !important;
}

/* --- verde/sucesso --- */
html.dark [style*="background:#ecfdf5"],
html.dark [style*="background:#f0fdf4"],
html.dark [style*="background:#d1fae5"],
html.dark [style*="background:#d1e7dd"],
html.dark [style*="background-color:#d1e7dd"] {
    background-color: var(--ld-vd0, #10312a) !important;
}


/* ==========================================================================
   3. TEXTO — a paleta slate hardcoded do projeto, invertida
   Sem isto, texto #0f172a (quase preto) fica ilegível sobre fundo escuro.
   Ordem do mais escuro (vira mais claro) para o mais claro.
   ========================================================================== */
html.dark [style*="color:#0f172a"],
html.dark [style*="color: #0f172a"],
html.dark [style*="color:#1e293b"],
html.dark [style*="color:#111"],
html.dark [style*="color:#222"],
html.dark [style*="color:#333"],
html.dark [style*="color:#000"],
html.dark [style*="color:#212529"],
html.dark [style*="color:#33475b"] {
    color: #dfe6f0 !important;
}

html.dark [style*="color:#334155"],
html.dark [style*="color:#475569"],
html.dark [style*="color:#444"],
html.dark [style*="color:#555"],
html.dark [style*="color:#495057"] {
    color: #c2ccdb !important;
}

html.dark [style*="color:#64748b"],
html.dark [style*="color:#6b7280"],
html.dark [style*="color:#666"],
html.dark [style*="color:#777"],
html.dark [style*="color:#888"],
html.dark [style*="color:#999"],
html.dark [style*="color:#6c757d"],
html.dark [style*="color:#94a3b8"],
html.dark [style*="color:#adb5bd"] {
    color: #93a1b5 !important;
}

/* Azuis de link/ação: clarear para manter contraste sobre fundo escuro. */
html.dark [style*="color:#2569c3"],
html.dark [style*="color:#0d6efd"],
html.dark [style*="color:#1d4ed8"],
html.dark [style*="color:#1f5aad"],
html.dark [style*="color:#0b5ed7"],
html.dark [style*="color:#2c7be5"] {
    color: #7eb0fb !important;
}

/* Semânticas: só clareiam o suficiente, o significado da cor não muda.
   Isso vale principalmente para o semáforo de risco (FMF) e status. */
html.dark [style*="color:#dc3545"],
html.dark [style*="color:#b91c1c"],
html.dark [style*="color:#c62828"],
html.dark [style*="color:#b42318"],
html.dark [style*="color:#d03b3b"],
html.dark [style*="color:#e63757"] {
    color: #ff7a8a !important;
}

html.dark [style*="color:#b45309"],
html.dark [style*="color:#e6a700"],
html.dark [style*="color:#f59e0b"],
html.dark [style*="color:#856404"] {
    color: #ffc247 !important;
}

html.dark [style*="color:#198754"],
html.dark [style*="color:#15803d"],
html.dark [style*="color:#0f5132"],
html.dark [style*="color:#166534"],
html.dark [style*="color:#2e7d32"] {
    color: #4ade80 !important;
}


/* ==========================================================================
   4. BORDAS — as bordas claras hardcoded viram linhas discretas
   ========================================================================== */
html.dark [style*="border:1px solid #e2e8f0"],
html.dark [style*="border:1px solid #e5e7eb"],
html.dark [style*="border:1px solid #eee"],
html.dark [style*="border:1px solid #ddd"],
html.dark [style*="border:1px solid #dee2e6"],
html.dark [style*="border:1px solid #d7e1ec"],
html.dark [style*="border:1px solid #cbd5e1"],
html.dark [style*="border:1px solid #f1f5f9"],
html.dark [style*="border-color:#e2e8f0"],
html.dark [style*="border-color:#dee2e6"],
html.dark [style*="border-color:#eee"],
html.dark [style*="border-bottom:1px solid #e2e8f0"],
html.dark [style*="border-bottom:1px solid #eee"],
html.dark [style*="border-top:1px solid #e2e8f0"],
html.dark [style*="border-top:1px solid #eee"] {
    border-color: var(--ld-borda, #2b3a52) !important;
}


/* ==========================================================================
   5. O EDITOR DO LAUDO
   Primeiro o papel ficava branco na tela; em 12/08 o DrVine decidiu que quer
   TUDO escuro, inclusive laudo, escrita e imagens. O papel escurece SÓ NA
   TELA: a impressão continua branca (os motores Legado e Moderno montam
   documento próprio, e a trava @media print da seção 6 segura o resto).

   O miolo do laudo vive num <iframe> do CKEditor — CSS daqui NÃO entra lá.
   Quem escurece o conteúdo é temaEditorAplicar() (index.php), que injeta um
   <style> dentro do documento do editor e o remove ao voltar pro claro.
   Aqui fica o chrome: toolbar, wrapper, cartão. --- */
html.dark #painelEditorLaudo,
html.dark .painel-editor-laudario,
html.dark .cke_contents,
html.dark .prontuario-editor-wrap,
html.dark .editor-content-card {
    background-color: var(--ld-s0, #1c2634) !important;
    border-color: var(--ld-borda, #2b3a52) !important;
}

html.dark .cke_top,
html.dark .cke_bottom,
html.dark .cke_toolbar,
html.dark .cke_button,
html.dark .cke_combo_button,
html.dark .cke_inner,
html.dark .cke_chrome {
    background: var(--ld-inp2, #16202e) !important;
    border-color: var(--ld-borda, #2b3a52) !important;
}

html.dark .cke_combo_text,
html.dark .cke_path_item,
html.dark .cke_button_label {
    color: #c2ccdb !important;
}

/* Os ícones da toolbar do CKE4 são sprites escuros: sem inverter, somem no
   fundo escuro. O invert vale SÓ para o sprite do ícone, nunca para conteúdo. */
html.dark .cke_button_icon,
html.dark .cke_combo_arrow {
    filter: invert(0.85) hue-rotate(180deg);
}

html.dark .cke_button_on,
html.dark .cke_button:hover,
html.dark .cke_combo_button:hover {
    background: var(--ld-s2, #26344a) !important;
}


/* ==========================================================================
   6. IMUNES — o que não pode ser tocado pelo tema
   ========================================================================== */

/* Visualizador DICOM já nasce preto: o tema não tem o que fazer aqui, e
   qualquer override quebraria a leitura da imagem. */
html.dark #dicomViewerContainer,
html.dark #dicomViewerContainer * {
    background-color: initial !important;
}

/* Imagem médica e foto nunca sofrem filtro/inversão: alterar a apresentação
   de uma imagem de ultrassom é adulterar o exame. */
html.dark img,
html.dark canvas,
html.dark video {
    filter: none !important;
}

/* Logos e ícones raster com fundo branco embutido ficam com um leve
   amortecimento para não recortarem um quadrado branco no escuro. */
html.dark .navbar-brand img {
    filter: none !important;
}

/* Impressão: o papel é branco em qualquer tema. Trava de segurança — o motor
   moderno já monta documento próprio, isto cobre um print da página. */
@media print {
    html.dark,
    html.dark body,
    html.dark * {
        background: #fff !important;
        color: #000 !important;
    }
}


/* ==========================================================================
   7. AJUSTES DO SHELL (navbar, menu, cards do Falcon)
   ========================================================================== */

/* A navbar do topo é azul sólido no claro; no escuro fica azul-noite para
   continuar sendo a âncora visual do topo sem brilhar. */
html.dark .navbar-glass,
html.dark .navbar-top {
    background-color: var(--ld-nav, #10263f) !important;
    border-bottom: 1px solid #1e3453 !important;
}

/* Botões circulares da direita da navbar. */
html.dark .navbar-nav-icons .avatar-name {
    background-color: rgba(255, 255, 255, .10) !important;
    color: #dfe6f0 !important;
}

/* Fundo geral e cartões. */
html.dark body {
    background-color: var(--ld-bg, #0b1727) !important;
}

html.dark .card,
html.dark .modal-content,
html.dark .dropdown-menu,
html.dark .offcanvas {
    background-color: var(--ld-s0, #1c2634) !important;
}

/* ⚠️ MESMA ARMADILHA, do outro lado: `.text-white` é `color: var(--falcon-white)`,
   que no dark do Falcon vale #000. Resultado: o logo "Laudário" da navbar saía
   PRETO sobre azul-noite, invisível. `.text-white` quer dizer "texto branco" —
   no escuro continua branco, não vira preto. */
html.dark .text-white,
html.dark .navbar-brand .font-logo {
    color: #fff !important;
}

html.dark .border-white {
    border-color: rgba(255, 255, 255, .25) !important;
}

/* ⚠️ ARMADILHA DO FALCON: no bloco .dark ele inverte `--falcon-white: #000`.
   Como .bg-white é `background: var(--falcon-white)`, toda área com bg-white
   vira PRETO PURO — não a superfície escura do tema. Foi o que aconteceu com
   o painel de abas do editor (#tabsLaudoAutomatico). Aqui o branco invertido
   é redirecionado para a superfície certa. */
html.dark .bg-white,
html.dark .bg-body,
html.dark .bg-body-tertiary {
    background-color: var(--ld-s0, #1c2634) !important;
}

html.dark .bg-light,
html.dark .bg-200,
html.dark .bg-100 {
    background-color: var(--ld-s1, #172231) !important;
}

/* Campos de formulário: o Falcon cobre .form-control, mas muita coisa no
   sistema usa input solto com estilo próprio. */
html.dark input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html.dark select,
html.dark textarea {
    background-color: var(--ld-inp, #0f1826) !important;
    color: #dfe6f0 !important;
    border-color: var(--ld-borda2, #35496a) !important;
}

html.dark input:focus,
html.dark select:focus,
html.dark textarea:focus {
    border-color: #4c7fd4 !important;
    box-shadow: 0 0 0 .18rem rgba(76, 127, 212, .22) !important;
}

html.dark input::placeholder,
html.dark textarea::placeholder {
    color: #6b7a90 !important;
}

/* laudario2.min.css forca `background-color:#fff !important` no checkbox e
   radio DESMARCADOS - todo controle do laudo virava um quadrado branco puro.
   Precisa de !important pra brigar de igual com o do arquivo original. */
html.dark .form-check-input:not(:checked) {
    background-color: var(--ld-inp2, #16202e) !important;
    border-color: var(--ld-borda2, #35496a) !important;
}

/* legend e optgroup tem fundo branco em seletor de ELEMENTO nu no
   laudario2.min.css - o gerador descarta elemento nu de proposito (vazaria
   de uma tela pra todas), entao os dois orfaos sao cobertos aqui. */
html.dark legend {
    background-color: var(--ld-s0, #1c2634) !important;
    color: #c2ccdb !important;
}

html.dark optgroup,
html.dark option {
    background-color: var(--ld-inp2, #16202e) !important;
    color: #dfe6f0 !important;
}

/* Caixa de risco FMF: o card do gauge e VIDRO de proposito - deixa a cor do
   semaforo (verde/amarelo/vermelho do pintarCaixa) aparecer atras. A versao
   gerada o deixava opaco escuro e ENCOBRIA o semaforo. Vidro escuro aqui. */
html.dark .alert > .rfmf-card,
html.dark .alert .rfmf-card {
    background: rgba(10, 16, 26, .38) !important;
    border-color: rgba(255, 255, 255, .12) !important;
}

/* O ponteiro do gauge volta a ser branco: convertido, sumia no track. */
html.dark .rfmf-marker {
    background: #fff !important;
}

/* Nevoa de rodape dos cards do seletor de laudos: era fog BRANCO sobre card
   agora escuro. Fog da cor da superficie do card. */
html.dark .card-seletor .card-seletor-faixa {
    background: linear-gradient(rgba(28, 38, 52, 0), var(--ld-s0, #1c2634) 62%) !important;
}

/* Tabelas. */
html.dark .table {
    --falcon-table-color: #c2ccdb;
    --falcon-table-bg: transparent;
    --falcon-table-striped-bg: rgba(255, 255, 255, .03);
    --falcon-table-hover-bg: rgba(255, 255, 255, .06);
}

/* Seletor de modalidade do Estudio de Ditado (Ressonancia/Tomografia/
   Radiografia). O gerado ja converte as tres pilulas, mas o HOVER do claro e
   um cinza MAIS ESCURO que o fundo branco (#f9fafd sobre #fff): convertido,
   vira a mesma superficie do estado normal e o hover some. No escuro o
   caminho e o inverso - subir para a superficie de contraste. */
html.dark #estModSel .est-mod:hover:not(.ativa) {
    background-color: var(--ld-s2, #26344a) !important;
    color: #dfe6f0 !important;
}

/* Scrollbar combinando com o tema. */
html.dark ::-webkit-scrollbar-track {
    background: #0f1a29;
}

html.dark ::-webkit-scrollbar-thumb {
    background: var(--ld-borda, #2b3a52);
    border-radius: 8px;
}

html.dark ::-webkit-scrollbar-thumb:hover {
    background: #3a4c68;
}


/* ==========================================================================
   8. O BOTÃO DO TOGGLE
   ========================================================================== */
#topTema {
    position: relative;
}

#topTema .avatar-name {
    overflow: hidden;
}

#topTema .avatar-name i {
    transition: transform .35s ease, opacity .2s ease;
}

/* O ícone mostra PARA ONDE o clique leva, não onde você está. O ciclo é
   claro -> escuro -> superdark -> claro:
   - claro mostra a LUA (vai escurecer);
   - escuro mostra a MEIA-LUA (vai pro superdark);
   - superdark mostra o SOL (volta pro claro).
   A troca é por CSS, não por JS: não existe estado intermediário errado. */
#topTema .tema-icone-ir-claro,
#topTema .tema-icone-ir-super {
    display: none;
}

html.dark #topTema .tema-icone-ir-escuro {
    display: none;
}

html.dark:not(.superdark) #topTema .tema-icone-ir-super {
    display: inline-block;
}

html.dark.superdark #topTema .tema-icone-ir-claro {
    display: inline-block;
}

#topTema:hover .avatar-name i {
    transform: rotate(-25deg);
}


/* ==========================================================================
   Painel de estado do Estúdio de Ditado (?p=ditado)
   ==========================================================================
   O painel pinta pela cor do ESTADO (azul diga o exame, vermelho gravando,
   verde pode ditar, âmbar espere, roxo preenchendo) usando as variáveis
   --est-cor / --est-fundo / --est-borda. O gerador de tema converte cor de
   TEXTO e de FUNDO literais, mas não sabe reescrever o valor de uma variável:
   sem estas regras o painel ficaria com o fundo CLARO do tema de dia e o
   texto que o gerador já clareou por cima — ilegível.

   As duas noites saem daqui de graça: o superdark só troca os valores de
   --ld-*, que é o que estas regras consomem.

   ⚠️ Aqui a cor do estado fica mais CLARA (o verde #00864e desaparece no
   escuro). Isso vale para o painel, onde a cor é TEXTO. No botão flutuante do
   editor (#ldFab) ela é FUNDO com texto branco, e por isso lá continua forte —
   as regras daquele componente moram no próprio ditado/_nucleo/aba.php. */
html.dark:not(#_) #estStatus.est-azul     { --est-cor: #7eb0fb; --est-fundo: var(--ld-az0, #14263f); --est-borda: var(--ld-az2, #1b3350); }
html.dark:not(#_) #estStatus.est-verde    { --est-cor: #34d399; --est-fundo: var(--ld-vd0, #10312a); --est-borda: var(--ld-vd2, #164036); }
html.dark:not(#_) #estStatus.est-vermelho { --est-cor: #fb7185; --est-fundo: var(--ld-vm0, #3a1620); --est-borda: var(--ld-vm2, #4a1c28); }
html.dark:not(#_) #estStatus.est-ambar    { --est-cor: #f0a44a; --est-fundo: var(--ld-am0, #3a2e12); --est-borda: var(--ld-am2, #453718); }
html.dark:not(#_) #estStatus.est-roxo     { --est-cor: #a78bfa; --est-fundo: var(--ld-rx0, #251b3d); --est-borda: var(--ld-rx2, #2e2250); }
html.dark:not(#_) #estStatus.est-cinza    { --est-cor: #a9b6c9; --est-fundo: var(--ld-s1, #172231); --est-borda: var(--ld-borda, #2b3a52); }

/* O disco do ícone é preenchido com a cor do estado: no escuro ela é clara, e
   o ícone branco de dentro sumiria. */
html.dark:not(#_) #estStatusIcone { color: #0b1727; }
html.dark:not(#_) #estStatusAcao kbd { background-color: var(--ld-s2, #26344a); border-color: var(--ld-borda2, #35496a); }
