Tokens, components, and the rules that hold them together.
The system is small on purpose. Fewer primitives, used precisely, scale better across 162 routes than a sprawling kit of one‑offs.
Color
One signal color carries every primary action. Role accents share matched chroma; semantic colors are reserved for meaning.
Type
Geist for everything. Geist Mono for numerals and operational chrome. Instrument Serif Italic, marketing only.
Spacing
A 4‑pixel base. Use multiples of 4 for everything; use 6 only inside dense inline groups.
Radii & elevation
Hard‑edged surfaces. Max corner radius 10px for cards and modals; 999px only for pills, avatars, and toggles. We don't use shadows for elevation; we use 1px borders.
Iconography
One family throughout — 1.5px stroke, outline only. Never mix filled and outlined in the same view.
Buttons
Three intents: primary (ink), signal (only for the single most important action on a page), and ghost (everything else).
Badges
Status, type, and category indicators. 22px tall; never as a button substitute.
Inputs & controls
All dropdowns are searchable selects. Country always precedes City. Forms group fields in 12px columns inside 24px sections.
Cards
Listing cards, stat cards, and content cards share the same 10px radius and 1px border. No shadows.
Tables
Dense rows, 11px row padding, tabular numerals. Hover state is a quiet bone fill — not blue.
| Member | Plan | Status | Renews | MRR |
|---|---|---|---|---|
| Lerato Mokoena | Pro · monthly | Active | 12 Jun 2026 | $48.00 |
| Jamal Sutherland | Starter · monthly | Active | 02 Jun 2026 | $24.00 |
| Sofia Almeida | Pro · annual | Paused | 14 Aug 2026 | $38.00 |
| Wei Chen | Pro · monthly | Past due | 28 May 2026 | $48.00 |
Notification system
38 notification types organized into 10 categories. Each category has one accent color; within a category, all types share that color.
Rules
Short list. Hold to it.
- One signal button per page
- Tabular numerals in every table, every dashboard
- Country before City in every form
- Searchable select — never a native <select>
- 1px borders for separation, never drop shadows
- Eyebrow labels in mono uppercase for section heads
- Don't introduce a new color to add visual interest
- Don't animate buttons — only hover/active states
- Don't use emoji in product chrome
- Don't use serif outside marketing pages
- Don't soften corners past 10px
- Don't decorate empty states with illustrations — use a sentence and one action