/* =============================================================================
   ADA Compliance Fix — Frontend Styles v2
   Universal: no site-specific colors hardcoded.
   Color contrast overrides are applied by JS (fixContrast) using
   computed WCAG luminance + admin-configured patches.
   ============================================================================= */

/* ── Skip navigation link ───────────────────────────────────────────────────── */

.ada-skip-link {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.ada-skip-link:focus {
  position: fixed;
  top: 0;
  left: 0;
  width: auto;
  height: auto;
  padding: 12px 24px;
  background: #000000;
  color: #ffffff;
  font-size: 16px;
  font-weight: bold;
  z-index: 999999;
  text-decoration: none;
  outline: 3px solid #ffffff;
  outline-offset: 2px;
}

/* ── Visible focus indicators ───────────────────────────────────────────────── */
/* WCAG 2.1 SC 2.4.7: visible focus required on all interactive elements.
   Many themes suppress the browser outline — this restores it universally. */

*:focus,
*:focus-visible {
  outline: 3px solid #005fcc !important;
  outline-offset: 2px !important;
}

/* Builder-specific button focus */
.et_pb_button:focus,
.et_pb_button:focus-visible,
.elementor-button:focus,
.elementor-button:focus-visible,
.wp-block-button__link:focus,
.wp-block-button__link:focus-visible,
.x-btn:focus,
.x-btn:focus-visible,
.tve-btn:focus,
.tve-btn:focus-visible {
  outline: 3px solid #005fcc !important;
  outline-offset: 3px !important;
}

/* Mobile menu links */
.et_pb_menu .et_mobile_menu a:focus,
.et_pb_menu .et_mobile_menu a:focus-visible {
  outline: 3px solid #005fcc !important;
  outline-offset: 3px !important;
}

/* ── Sticky header offset ───────────────────────────────────────────────────── */
/* WCAG 2.4.11: focused elements must not be obscured by sticky headers.
   140px covers most Divi / Elementor sticky header heights. Override with a
   more precise value in your theme's custom CSS if needed. */

html {
  scroll-padding-top: 140px;
}

/* ── Placeholder text contrast ──────────────────────────────────────────────── */
/* WCAG 1.4.3: browser-default placeholder (#9e9e9e on white = 2.85:1) fails.
   #767676 on white = 4.54:1 — minimum passing gray. */

input::placeholder,
textarea::placeholder {
  color: #767676 !important;
  opacity: 1 !important;
}

/* ── Divi inactive tab link contrast ────────────────────────────────────────── */
/* Divi renders inactive tab links at rgba(24,71,143,0.5) ≈ #8ca3c7 on white = 2.56:1.
   Force full opacity of the full brand blue (#18478f) = 8:1 on white. */

.et_pb_tabs_controls li a,
.et_pb_tabs_controls [role="tab"] a {
  color: #18478f !important;
  opacity: 1 !important;
}

/* ── Prevent focus trap on hidden Slick slides ──────────────────────────────── */

.slick-slide[aria-hidden="true"] {
  visibility: hidden;
}

.slick-slide[aria-hidden="true"].slick-current,
.slick-slide.slick-active {
  visibility: visible;
}

.slick-slide[aria-hidden="true"]:not(.slick-current) {
  pointer-events: none;
}

/* ── Reduce motion ──────────────────────────────────────────────────────────── */
/* WCAG 2.3.3: animations can trigger vestibular disorders. */

@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;
  }
}
