Call the turf about the 2AM slot on Friday
v0.1Design system
Paper, ink,
and one signal.
The tokens, type, components and motion behind flux. Every value here is read live from globals.css, so changing a token updates this page and the product together.
Principles
01
Paper, ink, hairlines
Warm off-white surfaces, near-black ink, 1px borders. Depth comes from lines before shadows.
02
Sharp by default
Zero radius everywhere. Squares, not circles: status dots, handles and markers are all square.
03
One signal
Orange means live, new or needs attention. If everything is orange, nothing is.
04
Motion explains
Things move to show where they came from and where they went. Never just to decorate.
Color
Warm neutrals do the work. Signal is a scalpel, not a paintbrush.
Surfaces
paper
…
Page background. Warm, never pure white.
surface
…
Cards, windows, inputs.
wash
…
Hover, sidebars, quiet fills.
wash-strong
…
Selected rows, skeletons.
Ink
ink
…
Headlines, primary buttons.
ink-2
…
Body copy.
ink-3
…
Secondary copy, icons.
ink-4
…
Meta, placeholders, muted headline lines.
Lines
line
…
Hairlines: card borders, dividers, grids.
line-strong
…
Inputs, secondary buttons, keycaps.
Signal & semantic
signal
…
Liveness and the one thing that matters. Use sparingly.
signal-wash
…
Search highlights, selection.
kept
…
Pinned and permanent items.
link
…
URLs and link previews.
Typography
Arpona Light for display, Geist for interface, Geist Mono for machine voice.
Aa
Arpona Light
Display, headlines, big numbers
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
Aa
Geist
UI, body, buttons
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
Aa
Geist Mono
Meta, labels, code, keys
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
Display XL
Arpona Light · 88 / 0.96 · -3.5%
Send it.
Display L
Arpona Light · 56 / 1.02 · -3.5%
Keep what matters.
Display M
Arpona Light · 26 / 1
Stream
Lead
Geist 400 · 18 / 1.6
A private stream between your phone and your computer.
Body
Geist 400 · 14.5 / 1.6
Links get previews, codes get a big copy button, commands get monospace.
UI
Geist 400–500 · 13
Stream · Kept · Links · Files
Mono
Geist Mono · 12
ssh deploy@203.0.113.7 -p 2222
Label
Geist Mono · 11 · +6% · caps
Median phone → laptop
Space & depth
A 4px grid. Hairlines first, soft shadows only for things that float.
Spacing
Elevation
Flat
Default for everything
Float
Hover, popovers, toasts
Lift
Windows, sheets, the hero
Radius
0 · everything
2px · the ceiling
never
Components
Buttons
Inputs
Badges, tags, keys
Stream items
The core of the product. Type is detected automatically; the hairline at the bottom shows remaining life, and kept items get a green spine.
Designing calm software: notes on attention
calm.software/essays
482 913
One-time code from your bank
ssh deploy@203.0.113.7 -p 2222whiteboard-sprint-12.jpg
2.4 MB · 4032×3024
Studio Wi-Fi: flux-guest / meadow-lantern-42
Icons
16px grid, 1.4px stroke, square caps, mitered joins.
Motion
Fast for feedback, slower for stories. Always honours reduced-motion settings.
150ms
Feedback
Hover, press, copy
250ms
UI
Toggles, menus, toasts
500ms
Layout
Items entering the stream
800ms+
Story
Hero, reveals, diagrams
ease-out-quint
cubic-bezier(0.22, 1, 0.36, 1)
Entrances, reveals, travel
ease-in-out-quart
cubic-bezier(0.76, 0, 0.24, 1)
Panels, sheets, page moves
linear
linear
Progress, marquees only
Brand
The mark is a flow line arriving at a signal square: something sent, something received.
Voice: do
- Short, plain sentences. “Sent to ThinkPad.”
- Lowercase wordmark, sentence case everywhere else.
- Say what happened, then stop.
Voice: don't
- Exclamation marks, emoji, “Oops!”
- Hype words: revolutionary, seamless, supercharge.
- Title Case Buttons.