/*
  THEOS — Motion Tokens
  ---------------------------------------------------------------
  Motion communicates, it doesn't decorate. Every duration/easing pair
  below is tied to a specific job (see guidelines/motion.md for the
  full philosophy). Default easing is confident and architectural —
  no bounce, no elastic overshoot — reserved bounce is used in exactly
  one place: the AI thinking indicator, where a very small, slow pulse
  signals "alive" without becoming playful.
*/

:root {
  /* Durations: instant=state flips, fast=hover/press, base=panels, slow=modals, slower=hero reveals */
  --duration-instant: 100ms; /* @kind other */
  --duration-fast: 160ms; /* @kind other */
  --duration-base: 240ms; /* @kind other */
  --duration-slow: 400ms; /* @kind other */
  --duration-slower: 600ms; /* @kind other */

  /* Easing */
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1); /* @kind other */
  --ease-out: cubic-bezier(0, 0, 0.2, 1); /* @kind other */
  --ease-in: cubic-bezier(0.4, 0, 1, 1); /* @kind other */
  --ease-emphasized: cubic-bezier(0.2, 0, 0, 1); /* @kind other */
  --ease-ai-pulse: cubic-bezier(0.45, 0, 0.15, 1); /* @kind other */

  /* Reduced motion — components must check this before any transform/opacity loop */
  --motion-reduce: 0; /* @kind other */
  /* fallback safety net if the annotation above is ever stripped */
}

@media (prefers-reduced-motion: reduce) {
  :root { --motion-reduce: 1; /* @kind other */ }
}
