:root {
  /* Easing — no bounce, no elastic. Everything decelerates. */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1); /* @kind other */
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1); /* @kind other */
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1); /* @kind other */

  --dur-instant: 90ms; /* @kind other */
  --dur-fast: 160ms; /* @kind other */
  --dur-base: 280ms; /* @kind other */
  --dur-slow: 520ms; /* @kind other */
  --dur-reveal: 900ms; /* @kind other */

  --transition-control: color var(--dur-fast) var(--ease-standard), background-color var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard), opacity var(--dur-fast) var(--ease-standard), transform var(--dur-fast) var(--ease-out);
  --transition-surface: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);

  /* Progressive reveal: opacity 0→1 + 24px rise, staggered 80ms. */
  --reveal-distance: 24px; /* @kind spacing */
  --reveal-stagger: 80ms; /* @kind other */
}

@media (prefers-reduced-motion: reduce) {
  :root { --dur-fast: 1ms; /* @kind other */ --dur-base: 1ms; /* @kind other */ --dur-slow: 1ms; /* @kind other */ --dur-reveal: 1ms; /* @kind other */ --reveal-distance: 0px; /* @kind spacing */ --reveal-stagger: 0ms; /* @kind other */ }
  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}
