/* ============================================================
 * farpa DS · utilities · v1.0.0 · 2026-05-10
 * ------------------------------------------------------------
 * Utilities mínimas e nomeadas. NÃO repositório de classes
 * descartáveis · cada classe tem propósito explícito e
 * justificativa de existir aqui (não em component próprio).
 * ============================================================ */

/* Visually-hidden (sr-only) · acessível para leitor de tela
 * mas invisível para usuário visual.
 * Uso primário: honeypot anti-spam, label oculto, texto
 * complementar para SR. Padrão WAI-ARIA / "clip" antigo
 * preservado por compatibilidade Safari < 14 também.
 */
.farpa-sr-only,
.farpa-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Honeypot · invisível para humano e SR · acessível ao bot.
 * Diferente de sr-only · este SUME para SR também. */
.farpa-honeypot {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* ---------- Mobile responsiveness defenses (2026-05-10 fix Onda 3) ----------
 * Defesa-em-profundidade contra overflow horizontal acidental em mobile.
 * Aplica-se ao host (html/body). Não afeta layouts internos com overflow
 * intencional (.farpa-section--wash usa max-width none mas padding adaptado).
 */
html, body {
  overflow-x: clip;
  -webkit-text-size-adjust: 100%;  /* impede iOS auto-zoom em landscape */
  text-size-adjust: 100%;
}

/* Imagens e mídia respeitam o container · zero estouro horizontal */
img, video, svg, iframe {
  max-width: 100%;
  height: auto;
}

/* Respeita prefers-reduced-motion globalmente (a11y · WCAG 2.3.3 AAA).
 * Não zera tudo · apenas reduz a 0.01ms para preservar :focus-visible. */
@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;
  }
}
