/*
 * Recursos de acessibilidade (menu "Acessibilidade" no cabeçalho).
 * As classes sao aplicadas no elemento <html> em Areas/App/Views/Layout/_Layout.cshtml
 * a partir das configuracoes do tema (ContrastMode e FontSizeMode).
 *
 *  - html.accessibility-large-font  -> "Fonte Grande (A+)"
 *  - html.accessibility-contrast    -> "Contraste"
 */

/* ============================================================
 * Legibilidade base (sempre ativa)
 * O Metronic sobrescreve o .alert-secondary do Bootstrap com
 * color: var(--bs-secondary) = #F1F1F4 — texto quase branco sobre
 * fundo claro: as faixas "arquivada" (Demanda, DFD, TR, ETP, CD,
 * Licitação, Pesquisa, Mapa de Riscos) e outros avisos sumiam.
 * "body" na frente: este arquivo carrega ANTES do style.bundle.css
 * (seção Styles do layout) e, com a mesma especificidade, perderia.
 * Cores da escala de cinza do tema: acompanham o modo escuro.
 * ============================================================ */
body .alert-secondary {
    color: var(--bs-gray-800);
    background-color: var(--bs-gray-100);
    border-color: var(--bs-gray-300);
}

/* Cinzas de TEXTO com contraste real (o sistema todo).
 * Os do Metronic ficam abaixo do minimo de leitura (WCAG AA = 4,5:1
 * para texto pequeno): .text-muted/.text-gray-500 #99A1B7 = 2,6:1 no
 * branco, .text-gray-400 #C4CADA = 1,6:1. Aqui cada degrau escurece,
 * mantendo a ordem 400 < 500 < 600 < 700 (o 700 fica como esta).
 *
 *            claro (branco | fundo da pagina)    escuro (card | pagina)
 *   400      #78829D  3,8 | 3,5                  #636674  3,1 | 3,3
 *   500/muted #66708C 4,9 | 4,5                  #808290  4,7 | 5,0
 *   600      #5A6480  5,9 | 5,4                  #8D8FA0  5,6 | 6,0
 *
 * So os tokens de TEXTO mudam (--bs-text-*): o --bs-gray-* puro
 * continua igual porque o Metronic o usa em placeholder de campo,
 * estado desabilitado, borda e fundo, que devem seguir claros.
 * CSS de tela que pinta texto deve usar var(--bs-text-gray-N), nao
 * var(--bs-gray-N).
 * "html[...]" (0,1,1) vence o ":root,[data-bs-theme=...]" (0,1,0) do
 * bundle sem depender da ordem de carga; o modo Contraste (abaixo)
 * continua por cima, com !important nas classes. */
html[data-bs-theme="light"] {
    --bs-text-muted: #66708C;
    --bs-text-gray-400: #78829D;
    --bs-text-gray-500: #66708C;
    --bs-text-gray-600: #5A6480;
}

html[data-bs-theme="dark"] {
    --bs-text-muted: #808290;
    --bs-text-gray-400: #636674;
    --bs-text-gray-500: #808290;
    --bs-text-gray-600: #8D8FA0;
}

/* ============================================================
 * Fonte Grande (A+)
 * Aumenta a fonte base do documento. Como o Metronic/Bootstrap
 * dimensiona quase tudo em rem, elevar o font-size da raiz
 * escala textos, botoes, inputs e espacamentos proporcionalmente.
 *
 * O style.bundle.css crava "body,html{font-size:13px!important}"
 * (12px abaixo de 992px): sem !important aqui a regra perde e o
 * botao A+ nao faz nada. O body precisa ir junto porque o texto
 * corrido herda dele, nao da raiz. Base do Metronic e 13px, nao
 * os 16px do navegador: porcentagem na raiz daria 18px (+38%).
 * ============================================================ */
html.accessibility-large-font,
html.accessibility-large-font body {
    font-size: calc(13px * 1.125) !important; /* +12,5% */
}

/* Em telas menores o Metronic ja desce a base para 12px; o ganho
   acompanha e diminui no celular para evitar quebras de layout. */
@media (max-width: 991.98px) {
    html.accessibility-large-font,
    html.accessibility-large-font body {
        font-size: calc(12px * 1.125) !important;
    }
}

@media (max-width: 767.98px) {
    html.accessibility-large-font,
    html.accessibility-large-font body {
        font-size: calc(12px * 1.09) !important;
    }
}

/* ============================================================
 * Contraste (reforco de contraste / leitura)
 * Escurece textos secundarios, reforca bordas e deixa links e
 * foco de teclado bem visiveis. Funciona sobre o tema claro e
 * o tema escuro (data-bs-theme="dark").
 * ============================================================ */

/* ---- Tema claro ---- */
html.accessibility-contrast {
    --bs-body-color: #000000;
    --bs-secondary-color: #1a1a1a;
    --bs-border-color: #5a5a5a;
    /* Tokens tambem: o CSS das telas pinta texto com var(--bs-text-gray-N),
       que as classes reforcadas abaixo nao alcancam. Vem depois do bloco
       html[data-bs-theme="light"] (mesma especificidade) e vence por ordem. */
    --bs-text-muted: #1a1a1a;
    --bs-text-gray-400: #1a1a1a;
    --bs-text-gray-500: #1a1a1a;
    --bs-text-gray-600: #1a1a1a;
}

html.accessibility-contrast body {
    color: #000000;
}

/* Textos que o Metronic deixa "apagados" passam a ter contraste real. */
html.accessibility-contrast .text-muted,
html.accessibility-contrast .text-gray-400,
html.accessibility-contrast .text-gray-500,
html.accessibility-contrast .text-gray-600,
html.accessibility-contrast .text-gray-700,
html.accessibility-contrast .form-label,
html.accessibility-contrast label,
html.accessibility-contrast .menu-title {
    color: #1a1a1a !important;
}

html.accessibility-contrast .text-gray-800,
html.accessibility-contrast .text-gray-900,
html.accessibility-contrast .text-dark {
    color: #000000 !important;
}

/* Links destacados e sublinhados para quem tem baixa visao. */
html.accessibility-contrast a:not(.btn):not(.menu-link):not(.nav-link):not(.page-link) {
    color: #0b3d91 !important;
    text-decoration: underline;
}

/* Bordas mais firmes em cartoes, tabelas e campos. */
html.accessibility-contrast .card,
html.accessibility-contrast .table,
html.accessibility-contrast .table th,
html.accessibility-contrast .table td,
html.accessibility-contrast .form-control,
html.accessibility-contrast .form-select,
html.accessibility-contrast .input-group-text,
html.accessibility-contrast .separator {
    border-color: #5a5a5a !important;
}

html.accessibility-contrast .form-control,
html.accessibility-contrast .form-select {
    border-width: 2px !important;
}

/* Foco de teclado sempre visivel (navegacao por Tab). */
html.accessibility-contrast a:focus-visible,
html.accessibility-contrast button:focus-visible,
html.accessibility-contrast .btn:focus-visible,
html.accessibility-contrast .form-control:focus,
html.accessibility-contrast .form-select:focus,
html.accessibility-contrast .form-check-input:focus,
html.accessibility-contrast [tabindex]:focus-visible {
    outline: 3px solid #0b3d91 !important;
    outline-offset: 2px !important;
    box-shadow: none !important;
}

/* ---- Tema escuro ---- */
html.accessibility-contrast[data-bs-theme="dark"] {
    --bs-body-color: #ffffff;
    --bs-secondary-color: #e6e6e6;
    --bs-border-color: #b0b0b0;
    --bs-text-muted: #e6e6e6;
    --bs-text-gray-400: #e6e6e6;
    --bs-text-gray-500: #e6e6e6;
    --bs-text-gray-600: #e6e6e6;
}

html.accessibility-contrast[data-bs-theme="dark"] body {
    color: #ffffff;
}

html.accessibility-contrast[data-bs-theme="dark"] .text-muted,
html.accessibility-contrast[data-bs-theme="dark"] .text-gray-400,
html.accessibility-contrast[data-bs-theme="dark"] .text-gray-500,
html.accessibility-contrast[data-bs-theme="dark"] .text-gray-600,
html.accessibility-contrast[data-bs-theme="dark"] .text-gray-700,
html.accessibility-contrast[data-bs-theme="dark"] .form-label,
html.accessibility-contrast[data-bs-theme="dark"] label,
html.accessibility-contrast[data-bs-theme="dark"] .menu-title {
    color: #e6e6e6 !important;
}

html.accessibility-contrast[data-bs-theme="dark"] .text-gray-800,
html.accessibility-contrast[data-bs-theme="dark"] .text-gray-900,
html.accessibility-contrast[data-bs-theme="dark"] .text-dark {
    color: #ffffff !important;
}

html.accessibility-contrast[data-bs-theme="dark"] a:not(.btn):not(.menu-link):not(.nav-link):not(.page-link) {
    color: #9cc3ff !important;
    text-decoration: underline;
}

/* Bordas claras no tema escuro (a versao clara fixa #5a5a5a, pensada para fundo branco). */
html.accessibility-contrast[data-bs-theme="dark"] .card,
html.accessibility-contrast[data-bs-theme="dark"] .table,
html.accessibility-contrast[data-bs-theme="dark"] .table th,
html.accessibility-contrast[data-bs-theme="dark"] .table td,
html.accessibility-contrast[data-bs-theme="dark"] .form-control,
html.accessibility-contrast[data-bs-theme="dark"] .form-select,
html.accessibility-contrast[data-bs-theme="dark"] .input-group-text,
html.accessibility-contrast[data-bs-theme="dark"] .separator {
    border-color: #b0b0b0 !important;
}

html.accessibility-contrast[data-bs-theme="dark"] a:focus-visible,
html.accessibility-contrast[data-bs-theme="dark"] button:focus-visible,
html.accessibility-contrast[data-bs-theme="dark"] .btn:focus-visible,
html.accessibility-contrast[data-bs-theme="dark"] .form-control:focus,
html.accessibility-contrast[data-bs-theme="dark"] .form-select:focus,
html.accessibility-contrast[data-bs-theme="dark"] .form-check-input:focus,
html.accessibility-contrast[data-bs-theme="dark"] [tabindex]:focus-visible {
    outline-color: #9cc3ff !important;
}
