--- name: interaction-craft description: Use when implementing or reviewing UI motion, press feedback, sheets, route transitions, toasts, drag/swipe, or reduced-motion behavior. Trigger on animation work, "feels laggy", inert buttons, layout jumps during transitions, or night-theme flashes. --- # Interaction craft Craft means **calm confidence**, not spectacle. The interface should feel alive and cared for while never demanding attention it hasn’t earned. ## 1. Motion tokens are mandatory Durations and easings live in the project’s global CSS tokens. Never hard-code millisecond values or bezier curves in CSS/Tailwind for interactive UI. Suggested token ladder (adapt names to project; keep the *roles*): | Role | Typical | Use for | | --- | --- | --- | | duration-1 | ~120ms | Checkmarks, icon swaps, press | | duration-2 | ~180ms | Hover, focus rings, field/chip | | duration-3 | ~240ms | Toggles, toasts, backdrops, theme | | duration-4 | ~360ms | Sheets, route/section entrances | | duration-5 | ~520ms | Editorial reveals, welcome pauses | | ambient | ~1.8s | Shimmer / breathing loops only | | Ease role | Use for | | --- | --- | | standard | Default; things that stay on screen | | entrance | Arriving — decelerate into place | | exit | Leaving — accelerate away; **faster than entrance** | | spring | Earned confirmation only (saved, done) | ```tsx // ❌ BAD