/* =======================================================================
   _a11y.css — WCAG 2.1 AA accessibility layer
   DNA San Bernardino (Downtown Neighborhood Association)
   Covers requirements common to federal ADA / Section 508 and the
   California Unruh Act: keyboard focus, reduced motion, respectful zoom,
   screen-reader helpers, forced-colors support.
   Per-page contrast fixes stay in the page that needs them.
   ======================================================================= */

/* -----------------------------------------------------------------------
   SC 2.4.7 Focus Visible (AA)
   :focus-visible keeps rings off for mouse users, on for keyboard users.
   !important guarantees this beats any per-page `outline:none`.
   ----------------------------------------------------------------------- */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
[role="button"]:focus-visible,
[role="link"]:focus-visible,
[contenteditable]:focus-visible {
  outline: 3px solid #157198 !important;   /* text-safe cyan, 4.56:1 on white */
  outline-offset: 2px !important;
  border-radius: 2px;
}

/* Engines without :focus-visible still get a visible ring on :focus */
@supports not selector(:focus-visible) {
  a:focus, button:focus, input:focus, select:focus,
  textarea:focus, summary:focus, [tabindex]:focus {
    outline: 3px solid #157198 !important;
    outline-offset: 2px !important;
  }
}

/* On navy chrome the dark cyan disappears — use the brand cyan (6.92:1 on navy) */
nav a:focus-visible,
footer a:focus-visible,
.on-navy a:focus-visible,
.on-navy button:focus-visible {
  outline-color: #29ABE2 !important;
}

/* -----------------------------------------------------------------------
   SC 2.3.3 — respect the OS "Reduce Motion" setting
   ----------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* -----------------------------------------------------------------------
   Skip link — visible only when focused
   ----------------------------------------------------------------------- */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 10000;
}
.skip-link:focus {
  left: 0;
  padding: 10px 16px;
  background: #0A1628;
  color: #fff;
  text-decoration: none;
  border: 2px solid #29ABE2;
}

/* -----------------------------------------------------------------------
   Screen-reader-only utility
   ----------------------------------------------------------------------- */
.sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* -----------------------------------------------------------------------
   SC 1.4.4 Resize Text / 1.4.10 Reflow
   ----------------------------------------------------------------------- */
html { -webkit-text-size-adjust: 100%; }

/* -----------------------------------------------------------------------
   Windows High Contrast / forced-colors
   ----------------------------------------------------------------------- */
@media (forced-colors: active) {
  a:focus-visible, button:focus-visible,
  input:focus-visible, select:focus-visible, textarea:focus-visible {
    outline: 3px solid CanvasText !important;
  }
}
