/* ==========================================================================
   utilities.css — a11y utilities
   --------------------------------------------------------------------------
   Milestone 1 · Foundation scaffold

   Layer role: `utilities` (Phase 6 §5.2). Loaded after components so these
   single-purpose rules can adjust safely.
   Scope: skip link, focus-visible ring, reduced-motion guard, selection color.
   ========================================================================== */

/* Skip link — first focusable element on the page (Phase 1 §17.1). Hidden off
   canvas; slides into view on keyboard focus. */
.skip-link {
  position: absolute;
  top: 0;
  left: var(--container-padding-mobile);
  z-index: var(--z-overlay);
  padding: var(--space-8) var(--space-16);
  background: var(--color-primary);
  color: var(--color-white);
  font-family: var(--font-heading);
  font-size: var(--text-button-current);
  font-weight: var(--weight-semibold);
  line-height: var(--lh-button);
  text-decoration: none;
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  transform: translateY(-120%);
  transition: transform var(--transition-standard);
}

.skip-link:focus,
.skip-link:focus-visible {
  transform: translateY(0);
}

/* Focus ring — 2px primary ring, 2px offset, keyboard-only (Phase 1 §17.1).
   :focus-visible semantics keep pointer clicks from triggering the ring. */
:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}

/* Selection — verified pairing white on primary (11.4:1), Phase 1 §17.4 */
::selection {
  background: var(--color-primary);
  color: var(--color-white);
}

/* Reduced motion — Phase 1 §15 / §17.5. All animation and transition disabled;
   content appears instantly. This global kill-switch is the documented
   exception to the Phase 6 §6 no-!important guidance. */
@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;
  }
}
