Anatomy of a button
A button isn't a clickable rectangle. It's a promise of action, a small physical contract between finger and screen. We take it apart here, piece by piece.
A playground in chapters
A personal journey through UX, motion design and typography.
The best UX lets the user be elsewhere in their mind — because the interface is doing the work. Everything that happens without the user noticing is the real power of an interface. Here I collect its fragments, one chapter at a time.
The best interfaces are invisible. They work in silence while your mind is elsewhere.
The skill
The book's principles — timing in named milliseconds, states that tell the truth, motion that respects those who reduce it — distilled into a skill. Your agent applies them while your mind is elsewhere.
The skill in the repositorynpx skills add MatteoSchifano/altrove Installs into .claude/skills — Claude Code, Cursor and 40+ agents.
How the work is made
Finished completely before the next one. One whole chapter beats three left half-done.
The why gets written before the code. Why this curve, why this timing.
Four spring presets, durations with a name. Measured, never left to feel.
Every animation degrades with grace. No libraries: just CSS, clamp and container queries.
10 finished explorations
A button isn't a clickable rectangle. It's a promise of action, a small physical contract between finger and screen. We take it apart here, piece by piece.
The network is slow, the user is not. The best UX pretends it already knows — and is right almost every time. Skeletons, optimistic UI, errors that don't shout: the vocabulary of an interface that trusts its next click.
An interface with nothing to show isn't mute — it's the moment its voice is heard most clearly. 404s, empty lists, fruitless searches: small voids that weigh a lot, and that care distinguishes from abandonment.
A dialog is an interruption that asks permission. When it really must speak, it does so with the keyboard in hand: focus where it belongs, Escape that mends, motion that enters like a sigh and never like a shout.
Scrolling is the most transparent gesture we have. It asks no permission, it interrupts nothing, it needs no teaching: we already know how to do it. A page that goes along with it — instead of chasing it — is a page that lets itself be read to the end.
Numbers are never just numbers: they are digits with typographic weight, a sign that speaks first, a local convention. The interface that handles them with care doesn't display them — it lets them be read.
A field to fill in is the moment a website asks the user for something — and that's when its voice shows. We open it up here, from the label that doesn't lie to the validation that listens.
Almost everything in an interface is text. And text has a thousand small decisions — the quote mark that curls, the title that leaves no word alone, the line that lasts just long enough — that decide whether the page breathes or holds its breath.
A button is pressed and springs back. A switch commits to a position and stays there. That difference — two positions, not two states — changes how you design any binary control, and hides a family of relatives wider than it looks.
A toast is the hardest thing to get right: deliver information without stealing attention, stay just long enough, and leave when it's done. Get the tone, the duration or the voice wrong and it turns from courtesy into interruption.
Where the book is going.
What makes the most elementary gesture of the interface trustworthy?
How do you turn waiting into an act of respect?
How does an interface speak when it has nothing to show?
How do you interrupt the user without making noise?
What can an interface say with the gesture of scrolling alone?
When is a digit information, and when is it noise?
How does a field listen, while the user writes?
Where does the letter end and the rhythm begin?
Is the difference between a button and a switch only visual?
How do you deliver information without interrupting?
How do you offer a choice without hiding the context?
NextHow do you change context without disorientating?
In the roadmapIs a card really just a rectangle with a border?
In the roadmapIs silence in the page drawn, or simply allowed to happen?
In the roadmapHow do you keep company with someone reading for ten minutes?
In the roadmapWhat makes a page elegant before it’s even beautiful?
In the roadmapWhen giving the floor to someone else, how do you introduce them?
In the roadmapHow do you talk to your reader without breaking the thread?
In the roadmapA site that talks about itself — how do you find your way inside it?
In the roadmapWhen is an image information, and when is it breath?
In the roadmapHow do you hold an object in flight?
In the roadmapWhat happens between each keystroke?
In the roadmapHow do you ask for a date without hating the browser?
In the roadmapTime as a visual object, not a table.
In the roadmapWhat changes when the interface is touched, not clicked?
In the roadmapHow do you let a user go?
In the roadmapAstro, native CSS, Motion. Epilogue and Inconsolata. No Tailwind, no UI kit.
Read the chapters