/*
    atom-tema.css — a paleta do AtomWMS num lugar só, em claro e em escuro.

    Por que este arquivo existe: a mesma declaracao `:root { --atom-navy:#0d1b2a; ... }`
    estava copiada em 140 blocos <style> espalhados pelas views. Enquanto ela morasse
    dentro de cada tela, tema escuro era impossivel por construcao — o <style> da view vem
    depois da folha global e ganha dela, entao nao havia onde trocar a cor uma vez so.
    Hoisted para ca, as ~2.000 referencias `var(--atom-*)` que ja existiam viram tema de graca.

    O que ainda NAO passa por aqui: as ~5.500 cores hex cravadas direto nos blocos <style>
    das telas. Elas continuam claras no modo escuro — sao as "ilhas brancas" conhecidas, e a
    conversao delas e trabalho de tela em tela, porque o mesmo hex tem papeis opostos
    (#0d1b2a e texto 354 vezes e fundo 181). Converter no grito inverteria o lado errado.

    Regra ao mexer: o bloco claro reproduz exatamente o que o sistema ja pintava. Se um valor
    daqui mudar, muda a identidade visual inteira de uma vez — que e justamente o ponto.
*/

:root {
    /* Tinta e superficie — viram no escuro */
    --atom-navy: #0d1b2a;           /* tinta principal: titulo, valor, rotulo forte */
    --atom-blue: #1565c0;           /* acento: link, borda de foco, numero em destaque */
    --atom-border: #d0dce8;
    --atom-muted: #6c757d;
    --atom-text: #1a1a2e;
    --atom-superficie: #ffffff;     /* fundo de cartao, tabela, dropdown */
    --atom-superficie-2: #f8faff;   /* faixa sutil: cabecalho de tabela, linha alternada */
    --atom-fundo: #f0f4f8;          /* chao da pagina, atras dos cartoes */
    --atom-bg-row: #e8f1fb;
    --atom-superficie-flutuante: rgba(255, 255, 255, 0.95);  /* painel sobre o canvas 3D e
                                       sobre mapa: precisa de translucidez, entao nao da para
                                       reusar --atom-superficie. A opacidade variava de 0,86 a
                                       0,97 pelas telas; unificada aqui, a diferenca nao se ve. */

    /* Semaforo */
    --atom-success: #00c896;
    --atom-danger: #e53935;
    --atom-warning: #f4a261;
    --atom-warn: #f57c00;           /* segundo laranja herdado: convive com --atom-warning
                                       porque unificar os dois mudaria pixel em producao.
                                       Candidato a morrer quando as telas forem convertidas. */

    /* Tinta de indicador — o numero grande do KPI e o valor colorido dentro de um cartao.
       Sao tons ESCUROS, escolhidos para ler sobre branco, e por isso somem no escuro: foi o
       "528 pallets em estoque" que virou vulto no proprio cartao.

       Existem separados do semaforo acima porque nao sao a mesma cor: --atom-danger (#e53935)
       e o vermelho de alerta em fundo claro; #c62828 e o vermelho que se le como TEXTO. Juntar
       os dois mudaria pixel em producao em ~150 lugares, e a diferenca de tom existe de
       proposito. No escuro os dois convergem para um vermelho claro — la o problema nao existe. */
    --atom-tinta-vermelha: #c62828;
    --atom-tinta-verde: #2e7d32;
    --atom-tinta-ambar: #f57f17;
    --atom-tinta-teal: #00695c;
    --atom-tinta-roxa: #4527a0;
    --atom-tinta-violeta: #6a1b9a;
    --atom-tinta-laranja: #e65100;

    /* Marca — NAO vira no escuro. E o gradiente navy->azul dos cabecalhos, do botao
       primario e da tela de login, sempre com texto branco por cima: ja e escuro, e
       inverter deixaria o cabecalho claro com letra branca. */
    --atom-marca-navy: #0d1b2a;
    --atom-marca-blue: #1565c0;
}

/*
    O bloco escuro vive dentro de @media screen de propósito. Na impressão ele simplesmente não
    se aplica, e os valores claros do :root voltam a valer sozinhos — sem uma segunda cópia da
    paleta clara só para o papel. O navegador não imprime cor de fundo por padrão, mas imprime a
    cor do TEXTO: sem isto, tinta clara de tema escuro sairia em cinza quase branco sobre papel
    branco. Três telas imprimem do próprio navegador (roteiro de separação, relatório de
    carregamento e o manual). O PDF do servidor não passa por aqui: ele monta o próprio HTML.
*/
@media screen {

[data-bs-theme="dark"] {
    --atom-navy: #e6edf3;
    --atom-blue: #6fb5ff;
    --atom-border: #2c3a4a;
    --atom-muted: #93a1b1;
    --atom-text: #e6edf3;
    --atom-superficie: #161f2b;
    --atom-superficie-2: #1e2836;
    --atom-fundo: #0f1620;
    --atom-bg-row: #1a2a3d;
    --atom-superficie-flutuante: rgba(22, 31, 43, 0.95);

    /* Tinta de indicador: no escuro ela sobe para ler sobre o cartao (~7:1 ou mais).
       O tom exato importa menos que o degrau — o que nao pode acontecer e o numero
       ficar mais escuro que a superficie em que se apoia. */
    --atom-tinta-vermelha: #ff8a80;
    --atom-tinta-verde: #7ddc94;
    --atom-tinta-ambar: #ffc046;
    --atom-tinta-teal: #4ecdc4;
    --atom-tinta-roxa: #b39ddb;
    --atom-tinta-violeta: #d59ce8;
    --atom-tinta-laranja: #ffab5e;

    --atom-success: #2ee0a8;
    --atom-danger: #ff7b73;
    --atom-warning: #f6b17a;
    --atom-warn: #ffa726;

    /* O Bootstrap 5.3 ja tem escuro proprio; aqui ele so passa a usar a nossa paleta em vez
       da cinza dele, senao o cartao do Bootstrap e o cartao da tela ficam de tons diferentes.
       --bs-body-bg e a superficie (e dela que cartao, dropdown e modal herdam o fundo); o
       chao da pagina vem do background do body, mais abaixo. */
    --bs-body-bg: var(--atom-superficie);
    --bs-body-bg-rgb: 22, 31, 43;
    --bs-body-color: var(--atom-text);
    --bs-secondary-bg: var(--atom-superficie-2);
    --bs-tertiary-bg: var(--atom-fundo);
    --bs-border-color: var(--atom-border);
    --bs-emphasis-color: var(--atom-navy);
    /* A navbar tira a cor do link daqui, via rgba(var(--bs-emphasis-color-rgb), .65) — sem o
       -rgb ela seguiria o branco puro do Bootstrap, fora da paleta. */
    --bs-emphasis-color-rgb: 230, 237, 243;
}

[data-bs-theme="dark"] body {
    background-color: var(--atom-fundo);
}

}
/* fim do @media screen — daqui para baixo vale também no papel */

/*
    O Bootstrap tem o [data-bs-theme=dark] dele fora de qualquer media query, então na impressão
    ele continuaria escurecendo texto e borda por conta própria. Estes poucos --bs-* desfazem
    isso; é a única duplicação de valor claro no arquivo, e é o preço de não poder editar a
    folha do Bootstrap.
*/
@media print {
    [data-bs-theme="dark"] {
        --bs-body-bg: #ffffff;
        --bs-body-color: #1a1a2e;
        --bs-emphasis-color: #0d1b2a;
        --bs-secondary-color: #6c757d;
        --bs-secondary-bg: #f8faff;
        --bs-tertiary-bg: #f0f4f8;
        --bs-border-color: #d0dce8;
    }

    [data-bs-theme="dark"] body {
        background-color: #ffffff;
        color: #1a1a2e;
    }
}

/*
    Utilitarios do Bootstrap que NAO seguem o data-bs-theme, por serem literais: bg-white e
    branco, table-light e claro, ponto. Sao 47 table-light, 39 bg-light e 5 bg-white nas views.
    Tratar aqui, e nao trocando classe tela por tela, tem duas vantagens: nao mexe em pixel
    nenhum do modo claro, e vale para a tela que ainda vai ser escrita.
*/
[data-bs-theme="dark"] .bg-white,
[data-bs-theme="dark"] .bg-light {
    background-color: var(--atom-superficie-2) !important;
}

/*
    text-dark e uma cor literal (#212529) com !important: no escuro ela vira preto sobre preto.
    Foi assim que os rotulos da barra de menu sumiram na primeira montagem deste tema.

    A letra so continua escura onde o FUNDO continua claro — e no escuro os unicos fundos que
    nao mudam sao as cores solidas do Bootstrap (bg-warning e companhia), porque elas nao tem
    versao escura. Dai a excecao por :not(): `badge bg-warning text-dark` fica preto no amarelo,
    como deve; `nav-link text-dark` e `badge bg-light text-dark` clareiam.

    Nas views, text-dark sempre divide o class= com a cor de fundo (nunca herda de um pai), o
    que e o que torna esta regra suficiente.
*/
[data-bs-theme="dark"] .text-dark:not(.bg-primary):not(.bg-secondary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info) {
    color: var(--atom-text) !important;
}

/*
    btn-outline-secondary usa --bs-secondary (#6c757d), que o Bootstrap NAO clareia no escuro:
    o botao fica em 3,5:1 sobre o cartao e parece desabilitado. Sao 194 no sistema — "Limpar",
    "Cancelar", "Voltar" —, e por isso a correcao e aqui e nao trocando classe. So a variante
    de contorno: no btn-secondary solido a mesma cor e FUNDO, com letra branca por cima, e
    clarea-la pioraria o contraste em vez de melhorar.
*/
[data-bs-theme="dark"] .btn-outline-secondary {
    --bs-btn-color: var(--atom-muted);
    --bs-btn-border-color: var(--atom-border);
    --bs-btn-hover-color: var(--atom-navy);
    --bs-btn-hover-bg: var(--atom-superficie-2);
    --bs-btn-hover-border-color: var(--atom-muted);
    --bs-btn-active-color: var(--atom-navy);
    --bs-btn-active-bg: var(--atom-superficie-2);
    --bs-btn-active-border-color: var(--atom-muted);
    --bs-btn-disabled-color: var(--atom-muted);
    --bs-btn-disabled-border-color: var(--atom-border);
}

[data-bs-theme="dark"] .table-light {
    --bs-table-bg: var(--atom-superficie-2);
    --bs-table-color: var(--atom-text);
    --bs-table-border-color: var(--atom-border);
}

/* O gradiente da marca e o unico lugar onde a cor nao vira; deixar explicito evita que a
   proxima conversao de tela o inverta por engano. */
.atom-marca-gradiente {
    background: linear-gradient(135deg, var(--atom-marca-navy) 0%, var(--atom-marca-blue) 100%);
    color: #fff;
}
