Motion
Motion in Parch is feedback: it confirms an action happened or shows where a change came from. It never entertains.
- Durations: 150ms for hover/press/state changes; 250ms for enter/exit transitions (dialogs, drawers, toasts).
- Curve: soft-out
cubic-bezier(0.2, 0.8, 0.2, 1). Nothing bounces. - Transform and opacity only. Never animate width, height, or layout properties, they jank and fight resize.
- Respect
prefers-reduced-motion: the portal disables all transitions under it; applications must do the same (GTK:gtk-enable-animations; Qt: platform theme reduced-motion flag).
What may animate
- Pressed/hover states on buttons and rows.
- Drawer and dialog enter/exit.
- Progress bars and indeterminate sweeps.
- Cross-fades between peer views (optional, 150ms).
What may not
- Loops other than the indeterminate progress sweep.
- Decorative parallax, pulsing brand elements, animated gradients.
- Entrance animations on data the user asked to see (loading spinners already communicate the wait).
- Anything over 300ms.