/* ============================================================
   a11y.css — utilities WCAG 2.1 AA (Ronda 12)
   - Skip-to-main link
   - Focus visível (com :focus-visible)
   - Reduced motion
   - Visually hidden helper (.visually-hidden / .sr-only)
   - Contraste de texto mínimo
   ============================================================ */

/* Skip link — visível só ao receber foco por Tab */
.skip-link {
  position: absolute;
  top: -100px;
  left: 0;
  background: #f59e0b;
  color: #0f172a;
  padding: 10px 16px;
  font-weight: 700;
  text-decoration: none;
  z-index: 9999;
  border-radius: 0 0 6px 0;
  transition: top 0.15s ease;
}
.skip-link:focus,
.skip-link:focus-visible {
  top: 0;
  outline: 3px solid #0f172a;
  outline-offset: 2px;
}

/* Focus visível em qualquer elemento interactivo */
:focus-visible {
  outline: 3px solid #f59e0b;
  outline-offset: 2px;
  border-radius: 2px;
}
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[role="button"]:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid #f59e0b;
  outline-offset: 2px;
}

/* Visually hidden — text para screen readers, invisível visualmente */
.visually-hidden,
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* Reduced motion — respeita preferência do sistema */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* High contrast mode (Windows) — preserva borders */
@media (forced-colors: active) {
  button, .btn, [role="button"] {
    border: 2px solid currentColor;
  }
}

/* Mínimo target size 44x44 (WCAG 2.5.5 — recomendação) em controles principais */
.btn-touch,
button.btn-icon,
.nav-item {
  min-width: 44px;
  min-height: 44px;
}

/* Cor de erro com contraste ≥ 4.5:1 sobre fundo branco/escuro */
.text-error,
.is-invalid + .form-validator-err,
.form-validator-err {
  color: #b91c1c; /* AAA contrast em fundo branco */
}
html[data-theme="dark"] .text-error,
html[data-theme="dark"] .form-validator-err {
  color: #fca5a5; /* contraste em fundo escuro */
}
