/**
 * Generated from motion.json. Do not edit.
 * Regenerate with `pnpm --filter @ionbase-ui/tokens build`.
 *
 * Source: motion.json (repo-owned — NOT a Figma export)
 *
 * These are NOT tokens. Figma expresses motion as prototype reactions rather
 * than variables, so there is nothing for them to alias; the values are
 * committed and generated instead. The `--ion-` prefix marks that, the same
 * way it does for `--ion-shadow-*`.
 *
 * A LADDER, NOT RECIPES. Pick a rung per component. There is deliberately no
 * `--ion-duration-hover`: that is indexed by usage, so it needs a new name
 * per usage pattern.
 *
 * Reduced motion is handled globally in the package's index.css, not here —
 * one block covering every `ion-*` rule, rather than a media query per value.
 */

:root {
  /* Press and release. Must resolve before the finger leaves the button, or */
  /* the feedback reads as lag rather than as a press. */
  --ion-duration-fast: 120ms;

  /* The default for any state colour change — hover, focus, selection, */
  /* validation. Replaces a hardcoded 150ms that read as abrupt. */
  --ion-duration-base: 200ms;

  /* Anything that travels or changes size: panels, overlays, disclosure. */
  /* Distance needs time; a colour does not. */
  --ion-duration-slow: 320ms;

  /* One turn of a loop that runs until the work it reports ends — a working */
  /* glyph spinning in AgentActivity, StatusIndicator or ToolCall. Not for a */
  /* state change: nothing finishes on it. Under reduced motion Spinner and */
  /* ProgressBar keep moving at 2x and 2.5x this, rather than stop. */
  --ion-duration-cycle: 1200ms;

  /* The default. Leaves immediately and decelerates into the end state, so */
  /* the change reads as settling. Correct for anything entering a state and */
  /* staying there. */
  --ion-ease-out: cubic-bezier(0.2, 0, 0, 1);

  /* Accelerates and arrives at full velocity. Only for things leaving — */
  /* dismissing an overlay, collapsing a panel. On a state a user is entering */
  /* it reads as a snap. */
  --ion-ease-in: cubic-bezier(0.4, 0, 1, 1);

  /* Symmetric, for two-way travel where the same element moves back and */
  /* forth — the Toggle knob. This is the curve every stylesheet used for */
  /* everything, which is why state changes felt jerky. */
  --ion-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);

  /* Continuous progress only, where easing would misreport position. Never */
  /* for interaction. */
  --ion-ease-linear: linear;
}
