Every animation on a Tessaly site has a job, a duration, and a budget. If we cannot name all three, it does not ship. This is not austerity; it is how motion earns the right to be noticed.
The job comes first. Motion can orient (where did that panel come from?), confirm (your brief was received), or reveal hierarchy (read this before that). Motion that only decorates is the first thing we cut when a page misses its budget.
Durations live in tokens. Micro-interactions sit between 120 and 200 milliseconds, transitions between 300 and 600, and narrative sequences can run longer only when the user is choosing to watch. Easing is shared across the system so the whole site feels like one hand moved it.
Budgets are measured, not guessed. We profile every sequence on a mid-range Android device, cap main-thread work per frame, and animate only transform and opacity unless there is a written exception. Anything that drops below sixty frames per second on the reference device is redesigned or removed.
Finally, every motion has a fallback. Reduced-motion preferences, low-power modes, and keyboard navigation all receive an experience that is complete without animation. If the site only makes sense when it moves, the design is not finished.