/* ============================================================
   Global :focus-visible ring — keyboard accessibility floor.
   Loaded after feature-CSS so it overrides point-fixes
   like `.input:focus { outline: none }`.

   Mouse-click focus stays as feature-CSS defines it (often
   border-color change). Keyboard-only focus gets a 3px accent
   ring on top, satisfying WCAG 2.4.7 (focus visible).
   ============================================================ */

/* Apply ring only to interactive controls. Text inputs and contenteditable
   already get a focus-visual via border-color in feature-CSS, and stacking
   a 3px ring on top read as a double-outline. */
button:focus-visible,
[role="button"]:focus-visible,
a:focus-visible,
[tabindex]:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px var(--accent-glow);
}

/* Skip-link — allows keyboard users to jump past server rail
   straight to the active conversation. Hidden until focused. */
.kc-skip-link {
  position: fixed;
  top: -40px; left: var(--space-md);
  z-index: 9999;
  padding: var(--space-sm) var(--space-md);
  background: var(--accent);
  color: var(--color-white-100);
  border-radius: var(--radius-s);
  font-size: var(--font-sm); font-weight: 600;
  text-decoration: none;
  transition: top var(--transition);
}
.kc-skip-link:focus,
.kc-skip-link:focus-visible {
  top: var(--space-md);
}

/* ============================================================
   prefers-reduced-motion — global respect for OS-level setting.
   Strips all animations and transitions to near-instant. Skeleton
   shimmers, pulses, and fade-ins become static. WCAG 2.3.3.
   ============================================================ */
@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;
  }
}

