Tokens

Design tokens are the single source of truth. Defined in tokens.css, consumed via CSS custom properties and lib/ui.ts constants.

Neutral scale

Warm sand-tinted greys. All UI chrome uses this scale.

--bg
Canvas#FAF9F5Page background
--n50
Elevated#FDFCFACard backgrounds
--n200
Hover#F2F0EAHover states, sand fill
--n400
Border#E8E5DCAll borders, dividers
--n600
Muted#76726ALabels, section headers
--n800
Secondary#6B6760Descriptions, units, metadata
--n1050
Strong#383633Focus ring, text selection
--n1100
Dark surface#2A2826Code blocks, dark panels
--n1150
Primary#131211Primary text, active states

Semantic colors

For badges, alerts, and status indicators. Never for text.

--positiveGood / up
--negativeBad / down
--warningCaution
--infoInformational

Typography

Satoshi for everything. Weight communicates hierarchy.

Satoshi 400NormalBody text, nav items, input text, unselected toggles
Satoshi 450BookUnits, metadata, descriptions, subtitles
Satoshi 500MediumBadges, form labels, buttons
Satoshi 550StrongSection headers, card titles, values, active tabs
// Import from lib/ui.ts
import { WEIGHT } from '@ramtt/ui'

WEIGHT.normal  // font-normal (400)
WEIGHT.book    // font-[450]
WEIGHT.medium  // font-medium (500)
WEIGHT.strong  // font-[550]

Spacing

Fixed scale: 4, 8, 12, 16, 20, 24, 32px.

4
8
12
16
20
24
32

Radius

Four radii. Nothing else.

sm
4px
md
5px
lg
12px
xl
16px

Borders

0.5px everywhere. Two variants: default (--n400) and subtle (--n200).

BORDER.default
BORDER.subtle
import { BORDER } from '@ramtt/ui'

BORDER.default  // border-[0.5px] border-[var(--n400)]
BORDER.subtle   // border-[0.5px] border-[var(--n200)]