We use a lot of motion. We also build every page so that none of it is required.
Progressive, not decorative
Every animated element on this site is authored in its finished state and then hidden by script, never the other way around. If the JavaScript fails, the page you get is the page you were always meant to read. If a visitor has asked their system to reduce motion, the same thing happens deliberately.
That is not a nicety. If the page is only comprehensible once it has finished moving, the movement is not decoration — it is a dependency, and you have made reading conditional on a script executing.
Two properties, no others
Transform and opacity. Anything that animates width, height, top or margin is asking the browser to recalculate layout sixty times a second, and on the phone from the car park it will not manage sixty.
Duration is a tone of voice
Entrances between 450 and 700 milliseconds read as considered. Hover feedback between 150 and 250 reads as responsive. Anything longer starts to feel like the site is waiting for you to admire it.
The restraint list
No page wipes. No parallax you can notice. No custom cursor. No background that never stops moving. Every one of those has been through this studio and back out again.
If the page is only comprehensible once it has finished moving, the movement is not decoration — it is a dependency.