Tact
A conversation
Send a message: it rises out of the composer, translucent until the server takes it, then shows delivered and seen. Send โค๏ธ or ๐ on its own, or click one: it celebrates, once per message and once per conversation per 30 seconds. Mira's replies rise with a wash; four at once is a batch and lands still, as opening a conversation does. Add a reaction to one she started and it swells into the pile; hers only roll the count.
Springs
Material 3's own spring tokens, sampled into CSS linear() until they rest within 0.5%. Components name a role; the level decides what it means: Calm plays each on the standard curve in 140-200 ms, Still makes it instant.
Interface sounds
Soft mallet tones, every one quieter than the message chime; the two ticks are quieter still. Never during a call, in a hidden window, or for someone else's message.
Rules
- Acknowledge every act within 100 ms, where it happened.
- The more often something happens, the quieter it is.
- Motion explains where things came from and where they went.
- Objects bounce, text does not.
- Never make anyone wait: exits are faster than entrances, and nothing holds a click.
- People celebrate, the product does not: no keywords, no milestones, no crowds.
- One place to tone it down: Settings โ Appearance โ Motion.