/* ============================================================
   animations.css — Shared Motion & Transition Rules (Shared)
   ──────────────────────────────────────────────────────────
   PURPOSE : Centralizes all animation/transition overrides.
             Includes prefers-reduced-motion accessibility support.
   SCOPE   : Used by BOTH simulators.
   ============================================================ */

/* ── Blink animation (eye simulator) ── */
@keyframes blink {
  0%,  94% { transform: translateY(-94px); }
  96%       { transform: translateY(30px);  }
  100%      { transform: translateY(-94px); }
}

/* ── Fade-in utility ── */
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0);   }
}

/* ── Pulse utility (for active indicators) ── */
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.6; }
}

/* ── Accessibility: Respect user's motion preference ──
   All CSS transitions and animations are suppressed when
   the user has enabled "Reduce Motion" in their OS.      */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration:   0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration:  0.01ms !important;
  }
}
