/* LACTOS360 — acessibilidade (1.15.0)
   Alvos de toque, preferências de leitura (espaçamento, fonte legível, links, cursor, foco), links dentro de texto,
   contraste do sistema operacional, cores forçadas, movimento e impressão.
   Os atributos data-* ficam na tag <html> (Servicos\Personalizacao::atributos) e, nas telas sem login, vêm do
   que a pessoa escolheu neste aparelho (script de Personalizacao::cabecalhoPublico). Guia: docs/manuais/acessibilidade.md */

/* ---------- Tamanho da letra nas telas sem login (nas telas com login quem aplica é personalizacao.css) ---------- */
:root[data-fs-pub] { font-size: calc(16px * var(--fs, 1)); }
:root[data-fs-pub] body { font-size: calc(15px * var(--fs, 1)); }

/* ---------- Títulos: h2 com a aparência de h3 (a estrutura de títulos não pula nível) ---------- */
.h3 { font-size: 1.02rem; font-weight: 700; }
.vazio-estado h2 { color: var(--txt); margin-bottom: 4px; }

/* ---------- Foco programático (título da tela nova, <main>) não precisa de contorno ---------- */
h1[tabindex="-1"]:focus, main[tabindex="-1"]:focus { outline: none; }
.tabela-wrap[tabindex="0"]:focus-visible { outline-offset: -3px; }

/* ---------- Alvos de toque: mínimo de 24 px sempre; 44 px no celular e em telas de toque (WCAG 2.5.8 / 2.5.5) ---------- */
.btn-icone, .pg, .btn-s, .ss-limpar { min-width: 24px; min-height: 24px; }
input[type="checkbox"], input[type="radio"] { width: 1.15rem; height: 1.15rem; accent-color: var(--cor); }
@media (pointer: coarse), (max-width: 900px) {
  .btn, .btn-s, .btn-icone, .pg, .abas a, .abas button, .dropdown-menu a, .dropdown-menu button, .nav-sub a, .nav-item, .sino-item, .paleta-item { min-height: 44px; }
  .btn-icone, .pg { min-width: 44px; }
  .btn-s { padding-inline: 14px; }
  .nav-baixo a, .nav-baixo button { min-height: 48px; }
  input[type="checkbox"], input[type="radio"] { width: 1.5rem; height: 1.5rem; }
  .campo > label:has(> input[type="checkbox"]), .campo > label:has(> input[type="radio"]), label.check, label.opcao { min-height: 44px; display: inline-flex; align-items: center; gap: 10px; }
}

/* ---------- Barra do topo no celular: cabe sem rolagem lateral mesmo com alvos de 44 px; em 320 px (zoom de 400%) quebra em duas linhas ---------- */
@media (max-width: 900px) {
  .topo { gap: 4px; padding-inline: 10px; }
  .topo-acoes { gap: 2px; }
  .menu-usuario { padding: 3px; } .menu-usuario > .ic-sm { display: none; }
  .contexto { padding: 6px 8px; gap: 4px; }
}
@media (max-width: 359px) {
  .topo { height: auto; min-height: var(--topo); flex-wrap: wrap; padding-block: 4px; }
  .topo-acoes { flex: 1 1 100%; justify-content: flex-end; margin-left: 0; }
}

/* ---------- Links dentro de texto: sublinhados (a cor sozinha não basta — WCAG 1.4.1) ---------- */
.conteudo :is(p, li, dd, .alerta, .ajuda, .pagina-sub, .kpi-det, .loja-nov-topo, small, .mudo, .vazio) a:not(.btn):not([class*="btn-"]):not(.pg):not([role="tab"]):not([role="button"]) { text-decoration: underline; text-underline-offset: .16em; text-decoration-thickness: 1px; }
.conteudo :is(p, li, dd, .alerta, .ajuda, .pagina-sub, .kpi-det, small, .mudo) a:not(.btn):hover { text-decoration-thickness: 2px; }

/* ---------- Preferências de leitura (por pessoa; valem em todo o sistema) ---------- */
/* Espaçamento de linhas e de texto */
:root[data-espaco="amplo"] body { line-height: 1.75; letter-spacing: .015em; word-spacing: .05em; }
:root[data-espaco="maximo"] body { line-height: 1.5; letter-spacing: .12em; word-spacing: .16em; }
:root[data-espaco="amplo"] p, :root[data-espaco="amplo"] li, :root[data-espaco="amplo"] dd { margin-bottom: 1.1em; }
:root[data-espaco="maximo"] p, :root[data-espaco="maximo"] li, :root[data-espaco="maximo"] dd { margin-bottom: 2em; }
:root[data-espaco="amplo"] .tabela td, :root[data-espaco="maximo"] .tabela td { padding-block: 12px; }
:root[data-espaco="maximo"] .btn, :root[data-espaco="maximo"] .input, :root[data-espaco="maximo"] .select { height: auto; min-height: 44px; padding-block: 8px; }
:root[data-espaco="maximo"] .tabela td, :root[data-espaco="maximo"] .tabela th { white-space: normal; }
:root[data-espaco="maximo"] .nowrap { white-space: normal; }
/* Fonte de leitura mais legível (famílias do próprio aparelho: funciona sem internet) */
:root[data-fonte-legivel="1"] { --f-corpo: Verdana, "Segoe UI", Tahoma, Geneva, sans-serif; --f-titulo: Verdana, "Segoe UI", Tahoma, Geneva, sans-serif; }
:root[data-fonte-legivel="1"] body { letter-spacing: .01em; }
/* Destacar todos os links */
:root[data-links="1"] a:not(.btn):not([class*="btn-"]):not(.pg):not(.marca):not(.so-leitor) { text-decoration: underline !important; text-underline-offset: .18em; text-decoration-thickness: 2px; }
:root[data-links="1"] .nav-item, :root[data-links="1"] .nav-sub a { text-decoration-thickness: 1px; }
/* Cursor grande */
:root[data-cursor="grande"], :root[data-cursor="grande"] body { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24'%3E%3Cpath d='M3 2l7 19 3-8 8-3z' fill='black' stroke='white' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") 4 3, auto; }
:root[data-cursor="grande"] a, :root[data-cursor="grande"] button, :root[data-cursor="grande"] summary, :root[data-cursor="grande"] [role="button"], :root[data-cursor="grande"] label, :root[data-cursor="grande"] select, :root[data-cursor="grande"] .ss-gatilho { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 24 24'%3E%3Cpath d='M3 2l7 19 3-8 8-3z' fill='%23146CC2' stroke='white' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") 4 3, pointer; }
/* Foco reforçado */
:root[data-foco="forte"] :focus-visible { outline: 4px solid var(--cor-t); outline-offset: 3px; box-shadow: 0 0 0 8px color-mix(in srgb, var(--cor-t) 28%, transparent); }

/* ---------- Texto na cor da marca sobre fundo claro: usa a variante calculada para contraste (--cor-t), principalmente no tema escuro ---------- */
:root :is(.badge-pri, .abas .ativo, .abas .ativa, .per-rapidos a.ativo, .cfg-nav a.ativa, .dsg-pasta.ativa, .dsg-aba.ativa, .dsg-pg.ativa, .nav-item.ativo, .nav-sub a.ativo, .nav-linha > a.ativo, .rec-seg input:checked + span, .fic-opcao input:checked + span, .api-abas .abas button.ativa, .cf-abas button.ativa, .flx-abas a.ativa, .mkt-ed-dispositivos .ativo, .nav-baixo .ativo, .vpa-aba.ativa) { color: var(--cor-t); }

/* ---------- Contraste pedido pelo sistema operacional (equivale ao "contraste alto" do LACTOS360) ---------- */
@media (prefers-contrast: more) {
  :root { --borda: #8FA3AD; --borda-forte: #5E7682; --borda-campo: #4A6571; --txt2: #183249; --mudo: #3E5560; }
  :root[data-tema="escuro"] { --borda: #5E7B87; --borda-forte: #8FB0BD; --borda-campo: #8FB0BD; --txt2: #E8F1F8; --mudo: #C3D4DB; }
  .card, .input, .select, .textarea { border-width: 2px; }
}

/* ---------- Cores forçadas (modo de alto contraste do Windows) ---------- */
@media (forced-colors: active) {
  .btn, .btn-icone, .input, .select, .textarea, .card, .badge, .pill, .kpi, .alerta, .ss-gatilho, .ss-painel, .dropdown-menu, dialog { border: 1px solid CanvasText; }
  .btn-pri, .nav-item.ativo, .pg.atual { forced-color-adjust: none; background: Highlight; color: HighlightText; border-color: HighlightText; }
  :focus-visible { outline: 3px solid Highlight; outline-offset: 2px; }
  .interruptor .trilho { border: 1px solid CanvasText; background: Canvas; }
  .interruptor input:checked + .trilho { background: Highlight; }
  .ic { forced-color-adjust: auto; }
  a { text-decoration: underline; }
}

/* ---------- Movimento: respeita prefers-reduced-motion (lactos.css) e também a rolagem suave ---------- */
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* ---------- Impressão: nada de elementos só de tela ---------- */
@media print {
  a.so-leitor, .toasts, #a11y-anuncio, .nav-baixo, .overlay, .paleta, .ss-painel, .ss-fundo, #nav-prog { display: none !important; }
  .tabela-wrap[tabindex] { overflow: visible !important; }
  :root[data-espaco], :root[data-fonte-legivel], :root[data-links] { font-family: inherit; }
}
