/* =============================================================
   Motion Design System — Tier 1 primitives + Tier 2 semantic tokens.
   GENERATED from motion/tokens/**.json by build/build-motion.mjs — do not edit by hand.
   ============================================================= */

:root {
  /* ---- Tier 1 · primitive (raw values — do not reference directly) ---- */
  --motion-primitive-duration-instant: 0ms;
  --motion-primitive-duration-fade: 160ms;
  --motion-primitive-duration-quick: 100ms;
  --motion-primitive-duration-short: 160ms;
  --motion-primitive-duration-medium: 240ms;
  --motion-primitive-duration-long: 360ms;
  --motion-primitive-duration-extra-long: 560ms;
  --motion-primitive-duration-super-long: 800ms;
  --motion-primitive-duration-cinematic: 1200ms;
  --motion-primitive-easing-standard: cubic-bezier(0.45, 0.05, 0.25, 0.95);
  --motion-primitive-easing-entrance: cubic-bezier(0, 0, 0.2, 1);
  --motion-primitive-easing-exit: cubic-bezier(0.5, 0, 1, 1);
  --motion-primitive-easing-emphasized: cubic-bezier(0.22, 1, 0.36, 1);
  --motion-primitive-easing-gentle: cubic-bezier(0.76, 0, 0.24, 1);
  --motion-primitive-easing-linear: cubic-bezier(0, 0, 1, 1);
  --motion-primitive-easing-spring: linear(0, 0.035, 0.127, 0.257, 0.408, 0.566, 0.717, 0.854, 0.97, 1.062, 1.129, 1.173, 1.195, 1.2, 1.189, 1.169, 1.141, 1.111, 1.079, 1.05, 1.023, 1.001, 0.984, 0.972, 0.964, 0.96, 0.96, 0.963, 0.967, 0.973, 0.979, 0.986, 0.991, 0.997, 1.001, 1.004, 1.006, 1.007, 1.008, 1.008, 1.007, 1.006, 1);
  --motion-primitive-easing-spring-bouncy: linear(0, 0.071, 0.256, 0.507, 0.776, 1.023, 1.217, 1.343, 1.397, 1.386, 1.323, 1.229, 1.122, 1.019, 0.934, 0.875, 0.845, 0.842, 0.861, 0.896, 0.938, 0.981, 1.017, 1.044, 1.06, 1.064, 1.059, 1.046, 1.03, 1.013, 0.997, 0.985, 0.977, 0.974, 0.976, 0.98, 0.986, 0.993, 0.999, 1.005, 1.008, 1.01, 1.01, 1.009, 1.006, 1.004, 1.001, 0.999, 1);
  --motion-primitive-transform-translate-sm: 8px;
  --motion-primitive-transform-scale-pop: 0.94;
  --motion-primitive-transform-scale-shrink: 0.96;
  --motion-primitive-transform-scale-anticipate: 0.9;
  --motion-primitive-transform-scale-overshoot: 1.06;
  --motion-primitive-transform-scale-settle: 1.02;
  --motion-primitive-transform-translate-lg: 40px;
  --motion-primitive-transform-scale-zoom: 0.7;
  --motion-primitive-transform-scale-clone: 0.5;
  --motion-primitive-transform-translate-z-dolly: -240px;

  /* ---- Tier 2 · semantic roles (the public API — reference these) ---- */
  --motion-duration: var(--motion-primitive-duration-medium);
  --motion-duration-instant: var(--motion-primitive-duration-instant);
  --motion-duration-fade: var(--motion-primitive-duration-fade);
  --motion-duration-quick: var(--motion-primitive-duration-quick);
  --motion-duration-short: var(--motion-primitive-duration-short);
  --motion-duration-medium: var(--motion-primitive-duration-medium);
  --motion-duration-long: var(--motion-primitive-duration-long);
  --motion-duration-extra-long: var(--motion-primitive-duration-extra-long);
  --motion-duration-super-long: var(--motion-primitive-duration-super-long);
  --motion-duration-cinematic: var(--motion-primitive-duration-cinematic);
  --motion-easing: var(--motion-primitive-easing-standard);
  --motion-easing-entrance: var(--motion-primitive-easing-entrance);
  --motion-easing-exit: var(--motion-primitive-easing-exit);
  --motion-easing-emphasized: var(--motion-primitive-easing-emphasized);
  --motion-easing-gentle: var(--motion-primitive-easing-gentle);
  --motion-easing-linear: var(--motion-primitive-easing-linear);
  --motion-easing-accelerate: var(--motion-primitive-easing-exit);
  --motion-easing-decelerate: var(--motion-primitive-easing-entrance);
  --motion-easing-spring: var(--motion-primitive-easing-spring);
  --motion-easing-spring-bouncy: var(--motion-primitive-easing-spring-bouncy);
  --motion-transform-enter: var(--motion-primitive-transform-translate-sm);
  --motion-transform-glide: var(--motion-primitive-transform-translate-sm);
  --motion-transform-pop: var(--motion-primitive-transform-scale-pop);
  --motion-transform-shrink: var(--motion-primitive-transform-scale-shrink);
  --motion-transform-anticipate: var(--motion-primitive-transform-scale-anticipate);
  --motion-transform-overshoot: var(--motion-primitive-transform-scale-overshoot);
  --motion-transform-settle: var(--motion-primitive-transform-scale-settle);
  --motion-transform-far: var(--motion-primitive-transform-translate-lg);
  --motion-transform-zoom: var(--motion-primitive-transform-scale-zoom);
  --motion-transform-clone: var(--motion-primitive-transform-scale-clone);
  --motion-transform-dolly: var(--motion-primitive-transform-translate-z-dolly);

  /* ---- Tier 2 · base composites — intent × phase ("duration easing") ---- */
  --motion-base-functional-entrance: var(--motion-duration-short) var(--motion-easing-entrance);
  --motion-base-functional-exit: var(--motion-duration-quick) var(--motion-easing-exit);
  --motion-base-functional-standard: var(--motion-duration-short) var(--motion-easing);
  --motion-base-expressive-entrance: var(--motion-duration-long) var(--motion-easing-emphasized);
  --motion-base-expressive-exit: var(--motion-duration-medium) var(--motion-easing-exit);
  --motion-base-expressive-standard: var(--motion-duration-long) var(--motion-easing);

  /* ---- Tier 2 · use-case composites — apply straight to `transition` ---- */
  --motion-use-hover: var(--motion-duration-quick) var(--motion-easing);
  --motion-use-focus: var(--motion-duration-quick) var(--motion-easing-entrance);
  --motion-use-press: var(--motion-duration-quick) var(--motion-easing-exit);
  --motion-use-disclosure-in: var(--motion-duration-short) var(--motion-easing-entrance);
  --motion-use-disclosure-out: var(--motion-duration-quick) var(--motion-easing-exit);
  --motion-use-overlay-in: var(--motion-duration-medium) var(--motion-easing-entrance);
  --motion-use-overlay-out: var(--motion-duration-short) var(--motion-easing-exit);
  --motion-use-page-transition: var(--motion-duration-long) var(--motion-easing-emphasized);
  --motion-use-celebration: var(--motion-duration-extra-long) var(--motion-easing-emphasized);
  --motion-use-color: var(--motion-duration-extra-long) var(--motion-easing-gentle);
}

/* Reduced motion — drop every travel/scale/stagger rung to 0 but keep one short opacity
   fade (--motion-primitive-duration-fade; instant stays 0). Because the semantic roles,
   composites, and the Tier 3 runtime all resolve through these primitives, this one block
   governs the whole system: each choreography token's reducedMotion collapse swaps its
   travel/scale keyframes for an opacity fade on the `fade` rung, so modals and overlays
   still appear deliberately while nothing travels across the screen.
   Fires on the OS setting OR a [data-motion-mode="reduced"] element — scopable, so the
   preference can be previewed on a subtree without changing system settings. */
@media (prefers-reduced-motion: reduce) {
  :root {
    --motion-primitive-duration-quick: 0ms;
    --motion-primitive-duration-short: 0ms;
    --motion-primitive-duration-medium: 0ms;
    --motion-primitive-duration-long: 0ms;
    --motion-primitive-duration-extra-long: 0ms;
    --motion-primitive-duration-super-long: 0ms;
    --motion-primitive-duration-cinematic: 0ms;
  }
}

[data-motion-mode="reduced"] {
  --motion-primitive-duration-quick: 0ms;
  --motion-primitive-duration-short: 0ms;
  --motion-primitive-duration-medium: 0ms;
  --motion-primitive-duration-long: 0ms;
  --motion-primitive-duration-extra-long: 0ms;
  --motion-primitive-duration-super-long: 0ms;
  --motion-primitive-duration-cinematic: 0ms;
}
