Easing tokens
cubic-bezier(0.16, 1, 0.3, 1)

Default for entries — slow ease-out, signature

cubic-bezier(0.4, 0, 1, 1)

Exits — fast accelerating

cubic-bezier(0.4, 0, 0.2, 1)

Most things — symmetric ease-in-out

Duration tokens
TokenValueRole
50msHover state changes, micro-interactions
150msStandard — buttons, links, focus rings
300msSheets, dialogs, route transitions
500msReserved — only when 300ms feels rushed
Usage rules
  • No spring or bounce. The brand is precise.
  • Press feedback is universal. Every button — and only buttons — uses scale(0.97) at 100ms.
  • Reduce-motion respected. All durations collapse to 0 under @media (prefers-reduced-motion: reduce). Animations become instant transitions.
  • Token names mirror CSS vars. Use var(--dur-fast) in Svelte styles, not literal 150ms.
  • v1.1 recipes. reveal-on-scroll, view transitions, copy-confirm, hover lift, and nav indicator all compose from these same tokens — see Brand / Motion for the full recipe table and live demos.
Brand / Motion See the signature animations live