/*
  Acessibilidade universal (ADR-016) — `@layer a11y` é a ÚLTIMA camada: vence tudo.
  Só tokens, contraste, tipografia e imagens mudam; a **estrutura** permanece intacta.
  Estado vem do servidor (`data-a11y-*` no `<html>`); o JS só espelha/atualiza.
*/
@layer a11y {
  /* ── Escala de fonte (passos discretos — ADR-016) ─────────────────────── */
  html[data-a11y-font-scale='112'] {
    font-size: 112%;
  }

  html[data-a11y-font-scale='125'] {
    font-size: 125%;
  }

  html[data-a11y-font-scale='150'] {
    font-size: 150%;
  }

  /* ── Imagens em preto e branco ───────────────────────────────────────── */
  html[data-a11y-grayscale='true'] img,
  html[data-a11y-grayscale='true'] picture,
  html[data-a11y-grayscale='true'] video {
    filter: grayscale(1);
  }

  /* ── Dislexia: fonte e ritmo de leitura ──────────────────────────────── */
  html[data-a11y-dyslexia='true'] {
    --font-content:
      'OpenDyslexic', 'Atkinson Fallback', 'Comic Sans MS', Verdana, Tahoma, sans-serif;
  }

  html[data-a11y-dyslexia='true'] body {
    letter-spacing: 0.06em;
    word-spacing: 0.16em;
    line-height: 1.8;
  }

  /* ── Espaçamento ampliável ───────────────────────────────────────────── */
  html[data-a11y-spacing='wide'] body {
    line-height: 2;
    letter-spacing: 0.05em;
    word-spacing: 0.14em;
  }

  html[data-a11y-spacing='wide'] p,
  html[data-a11y-spacing='wide'] li {
    margin-block: 1.25em;
  }

  /* ── Alto contraste (preto e branco) ─────────────────────────────────── */
  html[data-a11y-contrast='high'] {
    --surface: oklch(0% 0 0);
    --surface-muted: oklch(0% 0 0);
    --ink: oklch(100% 0 0);
    --ink-muted: oklch(100% 0 0);
    --line: oklch(100% 0 0);
    --tenant-primary: oklch(100% 0.211 109.769);
    --tenant-accent: oklch(100% 0.211 109.769);
    --tenant-link: oklch(100% 0 0);
    --tenant-radius: 0;
    --status-success: oklch(100% 0 0);
    --status-warning: oklch(100% 0.211 109.769);
    --status-danger: oklch(100% 0 0);
    --status-info: oklch(100% 0 0);

    /* Barra de acessibilidade em P&B: sem depender do tema do daisyUI. */
    --color-base-100: oklch(0% 0 0);
    --color-base-200: oklch(0% 0 0);
    --color-base-300: oklch(100% 0 0);
    --color-base-content: oklch(100% 0 0);

    /* Componentes daisyUI: o par **conteúdo** acompanha a superfície clara/amarela. Sem isto,
       `btn-primary` fica branco sobre amarelo (~1,07:1) e `alert-error`/`btn-neutral` branco
       sobre branco (WCAG 1.4.3). */
    --color-primary: oklch(100% 0.211 109.769);
    --color-primary-content: oklch(0% 0 0);
    --color-accent: oklch(100% 0.211 109.769);
    --color-accent-content: oklch(0% 0 0);
    --color-neutral: oklch(100% 0 0);
    --color-neutral-content: oklch(0% 0 0);
    --color-info: oklch(100% 0 0);
    --color-info-content: oklch(0% 0 0);
    --color-error: oklch(100% 0 0);
    --color-error-content: oklch(0% 0 0);

    /* Paleta Civic Precision: os módulos consomem estes tokens **direto** (`text-civic-ink`,
       `text-civic-outline`…), então a camada a11y precisa remapeá-los — senão texto escuro fica
       sobre o fundo preto (ADR-016: acessibilidade vale para qualquer módulo, sem ele saber). */
    --civic-ink: oklch(100% 0 0);
    --civic-outline: oklch(100% 0 0);
    --civic-border: oklch(100% 0 0);
    --civic-link: oklch(100% 0.211 109.769);
    --civic-error: oklch(100% 0 0);
    --civic-navy: oklch(0% 0 0);
    --civic-navy-soft: oklch(100% 0 0);
    --civic-yellow: oklch(100% 0.211 109.769);
    --civic-yellow-strong: oklch(100% 0.211 109.769);
    --civic-on-yellow: oklch(0% 0 0);
    --civic-on-ink: oklch(0% 0 0);
    --civic-on-navy: oklch(100% 0 0);
    --civic-on-navy-soft: oklch(0% 0 0);
    --civic-surface: oklch(0% 0 0);
    --civic-surface-low: oklch(0% 0 0);
    --civic-surface-dim: oklch(0% 0 0);
    --civic-surface-high: oklch(0% 0 0);
    --civic-surface-highest: oklch(0% 0 0);
  }

  html[data-a11y-contrast='high'] .site-header,
  html[data-a11y-contrast='high'] .site-footer,
  html[data-a11y-contrast='high'] .a11y-bar {
    background-color: oklch(0% 0 0);
    color: oklch(100% 0 0);
  }

  /* Botão ativo da barra: em P&B o par `--tenant-accent` (amarelo) × `--ink` (branco) cai para
     ~1,07:1; aqui o par volta a ser **preto sobre amarelo** (WCAG 1.4.3). */
  html[data-a11y-contrast='high'] .a11y-bar__button[aria-pressed='true'] {
    background-color: oklch(100% 0.211 109.769);
    color: oklch(0% 0 0);
  }

  /* ── Movimento reduzido (opt-in ou preferência do sistema) ───────────── */
  html[data-a11y-motion='reduced'] *,
  html[data-a11y-motion='reduced'] *::before,
  html[data-a11y-motion='reduced'] *::after {
    transition-property: none;
    transition-duration: 0.01ms;
    animation-duration: 0.01ms;
    animation-iteration-count: 1;
    scroll-behavior: auto;
  }

  /* ── Baseline sem JS: preferências do sistema ────────────────────────── */
  @media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
      transition-property: none;
      transition-duration: 0.01ms;
      animation-duration: 0.01ms;
      animation-iteration-count: 1;
      scroll-behavior: auto;
    }
  }

  @media (prefers-contrast: more) {
    :root {
      --line: oklch(0% 0 0);
      --ink-muted: oklch(0% 0 0);
    }
  }

  @media (forced-colors: active) {
    .icon,
    svg {
      forced-color-adjust: auto;
    }
  }

  /* ── Alvos de toque (WCAG 2.2 SC 2.5.8) ──────────────────────────────── */
  /* Ponteiro grosso (celular/tablet): ≥2.75rem (44px) — padrão da casa.
     O mínimo AA (1.5rem/24px) vale em qualquer ponteiro e `sniff check`
     **bloqueia** alvos menores que isso. Só muda o box do controle.

     Mora aqui, na folha **compartilhada**, de propósito: `layout.css` é só do portal e o painel
     ficava sem a regra (nenhum gate percebia). */
  @media (pointer: coarse) {
    .a11y-bar__button,
    .skip-links__link,
    .site-nav__link,
    .site-header__brand,
    .btn,
    .input,
    button {
      min-block-size: 2.75rem;
    }

    .a11y-bar__button {
      min-inline-size: 2.75rem;
      justify-content: center;
    }

    .site-footer nav a,
    .breadcrumbs__list a {
      display: inline-flex;
      align-items: center;
      min-block-size: 2.75rem;
      min-inline-size: 2.75rem;
    }
  }
}
