/* ui/patch/braz-ui-light.css — ADMIN-ANALYTICS §9.4
 *
 * As DUAS correções de contraste que o painel herda da plataforma no tema
 * claro. Ficam aqui, e não em `vendor/braz-ui/`, porque **o hub nunca edita o
 * vendor** (§9.1, política de divergência de uma direção só): o vendor é cópia
 * verificada por hash, e mexer nele faria o `--check` do sync acusar deriva de
 * um defeito que é nosso.
 *
 * Carregar DEPOIS de `vendor/braz-ui/braz-ui.css` e ANTES de
 * `static/mailhub.css`.
 *
 * DÍVIDA NA PLATAFORMA (os dois são bug de acessibilidade lá também, no tema
 * claro; dono: quem tocar no tema claro da plataforma em seguida):
 *   1. `braz_school_app/public/css/braz-ui.css:292-296` — anel de foco preso em
 *      `--brand-accent`, que o bloco claro de `brand.php` não redefine.
 *   2. `braz_school_app/public/css/braz-ui.css:543` — `.qe-infra .qe-label` com
 *      **hex cru** `#93c5fd` (viola a regra de ouro da marca) e 1,80:1 sobre
 *      branco.
 * Quando a plataforma corrigir, `scripts/sync_braz_ui.py --check --from …`
 * acusa deriva no `braz-ui.css` e este patch pode virar redundante — confira
 * antes de apagar.
 *
 * ZERO HEX CRU aqui: só token. O lint `scripts/check_no_raw_hex.py` reprova.
 */

/* ------------------------------------------------------------------------- *
 * Defeito 1 — anel de foco (SC 1.4.11, contraste de não-texto ≥ 3:1)
 *
 * `--brand-accent` (#e0c193) sobre branco = 1,72:1 — REPROVA. No claro o anel
 * passa a usar `--accent-ink` (#856428 = 5,45:1 sobre branco).
 *
 * O `box-shadow` de 1 px é um SEPARADOR INTERNO, não decoração: quando o
 * elemento focado está sobre o pill dourado, `--accent-ink` contra #e0c193 dá
 * 3,17:1 — passa, mas raspando. A linha em `--surface-2` garante os 3:1 contra
 * QUALQUER vizinho, inclusive o dourado.
 * ------------------------------------------------------------------------- */
/* Sem fallback de hex no `var()`: o §11.2 previa um «bloco declarado de
 * aliases» para os literais, e não foi preciso nenhum. O `tokens.css` é
 * vendorizado e verificado por hash — se ele não carregar, a página está sem
 * estilo de todo jeito, e um fallback só criaria a única exceção à regra
 * «zero hex cru». O lint é absoluto. */
:root {
  --focus-ring: var(--brand-accent);            /* escuro: 10,88:1 sobre o petróleo */
}
html[data-theme="light"] {
  --focus-ring: var(--accent-ink);              /* claro: #856428 = 5,45:1 */
}

a:focus-visible,
button:focus-visible,
select:focus-visible,
input:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 3px;
  box-shadow: 0 0 0 1px var(--surface-2);
  border-radius: 6px;
}

/* ------------------------------------------------------------------------- *
 * Defeito 2 — rótulo de infraestrutura na fila explicada (`.qe-*`)
 *
 * O painel reusa `.qe-lead / .qe-infra / .qe-soft` na tela Problemas, porque
 * essa camada já codifica QUEM RESOLVE pela cor (o mesmo eixo `owner` do
 * `src/mailhub/explain.py`). Sem este patch ele enviaria um rótulo reprovado.
 *
 *   .qe-infra → --status-progress-ink (#023e73) = 10,83:1 sobre branco
 *   .qe-soft  → --text-2              (.66)     =  6,04:1 sobre branco
 *   .qe-lead  → --accent-ink, já correto no claro (5,45:1): não se toca
 * ------------------------------------------------------------------------- */
html[data-theme="light"] .qe-infra .qe-label {
  color: var(--status-progress-ink);
}
html[data-theme="light"] .qe-soft .qe-label {
  color: var(--text-2);
}

/* ------------------------------------------------------------------------- *
 * Defeito 3 — cabeçalho de tabela (`braz-ui.css:474-483`, `.bz-table thead th`)
 *
 * Medido no navegador: `rgba(var(--ink-rgb), .45)` sobre a face da tabela dá
 * **3,00:1** — reprova o 4,5:1 do SC 1.4.3. E `th` **é dado**: o §9.7 manda a
 * UNIDADE da coluna no cabeçalho («Mensagens», «%»), não na célula, então quem
 * não lê o `th` não sabe o que a célula significa. O mockup aprovado já desenhava
 * o `th` em `--text-2`; aqui isso vira regra.
 *
 * O `!important` aqui NÃO é preguiça: `braz-ui.css:480` já declara a cor do `th`
 * com `!important`, então nenhuma especificidade a alcança. É o único
 * `!important` de todo o CSS do painel, e existe porque o vendor usou um
 * primeiro. Quando a plataforma corrigir a cor, este bloco cai inteiro.
 * ------------------------------------------------------------------------- */
html[data-theme="light"] .bz-table-scroll thead th,
html[data-theme="light"] table.bz-table thead th {
  color: var(--text-2) !important;   /* 5,9:1 sobre a face da tabela */
}

/* ------------------------------------------------------------------------- *
 * Defeito 4 — pílula ativa da navegação (`admin-nav.css:55-59`)
 *
 * Medido: `--accent-ink` sobre `rgba(--brand-accent-rgb, .08)` composto no body
 * claro = **4,29:1**. Reprova, e é o rótulo que diz EM QUE TELA VOCÊ ESTÁ — o
 * sinal de orientação mais importante da casca.
 *
 * A correção tira o véu dourado do fundo e põe a face branca: o mesmo dourado
 * sobre `--surface-2` dá **5,45:1**, e a identidade fica onde ela lê melhor, na
 * borda dourada (que o vendor já aplica) e no texto bronze. Nada de escurecer o
 * dourado: isso mudaria a marca para consertar contraste.
 * ------------------------------------------------------------------------- */
html[data-theme="light"] .gnav-item.is-active {
  background: var(--surface-2);
}

/* TERCEIRA correção, achada na implementação e registrada em §9.4:
 * `.qe-hint` do vendor (`braz-ui.css:540`) usa rgba(ink,.55), que no claro dá
 * **4,13:1** sobre branco — reprova o mínimo de 4,5:1 do SC 1.4.3. E a dica do
 * cartão de problema é DADO: é a linha que diz o que fazer. Sobe para
 * `--text-2` (6,04:1). Verificado por `tests/unit/test_brand_vendor.py`. */
html[data-theme="light"] .qe-hint {
  color: var(--text-2);
}

/* ------------------------------------------------------------------------- *
 * Defeito 6 — estado vazio (`braz-ui.css:217`, `.bz-empty`)
 *
 * `color: rgba(var(--ink-rgb),0.5)` é o mesmo valor de `--text-3`: **3,52:1** no
 * claro, e o §9.2 (regra 1) proíbe `--text-3` em qualquer DADO. E o estado vazio
 * é dado: o §6 exige que ele diga «o que vai aparecer e quando» — é instrução, a
 * única coisa na tela naquele momento, e a mais importante dela.
 *
 * Achado ao usar `.bz-empty` de verdade nas cinco telas de leitura desta leva; os
 * defeitos 1 a 5 vieram do mockup, que não tinha estado vazio.
 * Sobe para `--text-2` (6,04:1 sobre branco).
 * ------------------------------------------------------------------------- */
html[data-theme="light"] .bz-empty {
  color: var(--text-2);
}

/* ------------------------------------------------------------------------- *
 * Defeito 7 — rótulo de grupo da navegação (`admin-nav.css:33`)
 *
 * `color: rgba(var(--ink-rgb), .35)` = **2,23:1** no claro, medido no Chromium.
 * É o rótulo que agrupa a navegação («Operação», «Análise», «Configuração») a
 * 9,6 px — reprova o SC 1.4.3 por larga margem, e é informação de orientação, não
 * decoração: sem ele a barra vira uma fileira de nomes sem hierarquia.
 * `--text-2` dá 6,04:1 sobre branco.
 * ------------------------------------------------------------------------- */
html[data-theme="light"] .gnav-group-label {
  color: var(--text-2);
}

/* ------------------------------------------------------------------------- *
 * Defeito 8 — a tabela não ganhou face branca no tema claro
 *
 * O bloco claro do vendor (`braz-ui.css:414-425`) troca a «receita da casa»
 * (ink 2% + borda dourada) por face BRANCA em `.bz-card` e em mais dez classes de
 * cartão — e **esqueceu** `.bz-table-scroll`, que continua com
 * `background: rgba(var(--ink-rgb),0.02)` sobre o corpo cinza.
 *
 * Duas consequências, e a segunda é a que reprova:
 *   1. a tabela fica cinza chapada, diferente do mockup aprovado (que a desenha
 *      com face branca, como os cartões);
 *   2. todo chip dentro de uma célula compõe o véu de 12% da cor de status sobre
 *      CINZA em vez de branco. Medido: `.mh-chip--att` na tela Registro dá
 *      **3,87:1** — reprova. Com a face branca, **4,62:1** — passa.
 *
 * Nenhuma leitura de CSS acharia isto: depende da composição de um véu
 * translúcido sobre outro véu translúcido sobre o corpo.
 * ------------------------------------------------------------------------- */
html[data-theme="light"] .bz-table-scroll {
  background: var(--surface-2);
}

/* ------------------------------------------------------------------------- *
 * Defeito 9 — o rótulo da barra de cota (`braz-ui.css:140`)
 *
 * `.bz-progress-label { color: rgba(var(--ink-rgb), .5) }` = **3,52:1** no claro,
 * medido no Chromium a 12,48 px. É o mesmo valor de `--text-3`, que o §9.2 proíbe
 * em DADO — e «Usado hoje» é rótulo de dado: ele diz o que o número ao lado
 * significa. Sem ele, a barra dourada é uma barra sem pergunta.
 *
 * Achado na Leva 3, pela mesma medição par a par que achou os defeitos 3 a 8:
 * a tela Apps foi a primeira a usar `.bz-progress-label`, e ele reprovou na
 * primeira execução. `--text-2` dá 6,04:1 sobre branco.
 *
 * Dívida na PLATAFORMA: é bug de acessibilidade lá também, no tema claro, em toda
 * tela que mostra progresso de curso.
 * ------------------------------------------------------------------------- */
html[data-theme="light"] .bz-progress-label {
  color: var(--text-2);
}
