Unify
The tokens every component is built from. Switch the theme in the header: every swatch below is the live variable.
OKLCH, light and dark in one declaration each. Status colours are fixed across apps so an error looks the same everywhere; only the accent belongs to the app.
Surfaces & ink
--background--surface--surface-raised--foreground--muted-foreground--border--border-strong--hover-tintAccent (per app)
--accent--accent-foreground--accent-tint--selectionStatus
--success--warning--warning-ink--danger--success-tint--warning-tint--danger-tint--info-tintGeist and Geist Mono, self-hosted with next/font. Tight tracking on headings, tabular figures for numbers, mono uppercase for eyebrows.
Eyebrow · u-eyebrow
A 4px grid (Tailwind's own spacing scale). Content column 1152px, sidebar 240px, top bar 56px, rows and touch targets 44px.
Concentric: a shape inside another always takes the next smaller step.
Cards have no shadow — a hairline border does the work. Only floating chrome is lifted, and only floating chrome is glass.
Short and functional; everything collapses to instant with prefers-reduced-motion.
--dur-press--dur-pop--dur-modal--ease-enter--ease-exitDecorative hairlines for marketing and docs surfaces: never behind data, at most two per section, always faded at the edges.
u-bp-gridu-bp-grid-lgu-bp-dotsu-bp-hatchu-bp-glowu-rails