/**
 * Ateca – Global Accessibility (global-a11y.css)
 * WCAG 2.1 AA baseline rules.
 * @package Ateca
 */

/* ============================================================
   SKIP LINK
   ============================================================ */
.skip-link {
  position: fixed;
  inset-block-start: -100%;
  inset-inline-start: 0;
  z-index: var(--ateca-z-toast);
  padding: var(--ateca-space-s) var(--ateca-space-l);
  background: var(--ateca-brand);
  color: #fff;
  font-weight: var(--ateca-font-weight-semibold);
  font-size: var(--ateca-font-size-base);
  text-decoration: none;
  border-radius: 0 0 var(--ateca-radius-m) 0;
  transition: inset-block-start var(--ateca-duration-fast) var(--ateca-ease-out);
}
.skip-link:focus {
  inset-block-start: 0;
  outline: 3px solid #fff;
  outline-offset: 3px;
}

/* ============================================================
   FOCUS RING – universal
   ============================================================ */
:focus-visible {
  outline: var(--ateca-focus-ring-width) solid var(--ateca-focus-ring);
  outline-offset: var(--ateca-focus-ring-offset);
  border-radius: 2px;
}

/* Suppress focus ring for mouse users */
:focus:not(:focus-visible) { outline: none; }

/* ============================================================
   REDUCED MOTION
   ============================================================ */
@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;
  }
  .ateca-scroll-reveal { opacity: 1 !important; transform: none !important; }
}

/* ============================================================
   HIGH CONTRAST MODE
   ============================================================ */
@media (forced-colors: active) {
  a { color: LinkText; }
  button, .wp-block-button__link { forced-color-adjust: auto; }
  .ateca-card { border: 1px solid ButtonText; }
}

/* ============================================================
   MINIMUM TOUCH TARGET
   ============================================================ */
:where(a, button, [role="button"], input[type="checkbox"], input[type="radio"], select) {
  min-block-size: 44px;
  min-inline-size: 44px;
}
/* Exceptions for inline elements where the rule would be odd */
:where(a) { min-block-size: unset; min-inline-size: unset; }

/* ============================================================
   INTERACTIVE STATES – explicit
   ============================================================ */
button:disabled,
input:disabled,
select:disabled,
textarea:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* ============================================================
   SR-ONLY UTILITY
   ============================================================ */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* ============================================================
   ARIA LABELS — ensure visible where needed
   ============================================================ */
[aria-hidden="true"] { pointer-events: none; }

/* ============================================================
   SCROLL-REVEAL DEFAULTS (overridden by JS)
   ============================================================ */
.ateca-scroll-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity  var(--ateca-duration-slow)  var(--ateca-ease-out),
    transform var(--ateca-duration-slow) var(--ateca-ease-out);
}
.ateca-scroll-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.ateca-scroll-reveal.from-left  { transform: translateX(-24px); }
.ateca-scroll-reveal.from-right { transform: translateX(24px);  }
.ateca-scroll-reveal.from-scale { transform: scale(0.92); opacity: 0; }
.ateca-scroll-reveal.from-left.is-visible,
.ateca-scroll-reveal.from-right.is-visible,
.ateca-scroll-reveal.from-scale.is-visible { transform: none; }
