05 / 09

Tokens

The shadcn → Lexi bridge — every semantic token and what it maps to.

TokenValuePreviewUsage
--color-backgroundvar(--lexi-bg)Page and surface ground
--color-foregroundvar(--lexi-fg)Primary text
--color-primaryvar(--lexi-accent)The one action that matters — Signal
--color-primary-foreground#151715Always dark on Signal — never flips
--color-muted-foregroundvar(--lexi-fg-muted)Secondary text — grey-400 on dark, grey-600 on light (AA at small sizes)
--color-accentvar(--lexi-surface-card)Neutral hover surface — not Signal
--color-bordervar(--lexi-border-subtle)Borders and dividers
--color-ringvar(--lexi-accent)Focus rings
--radius8pxBase radius (sm 4 / md 8 / lg 16)
--font-sansInterFunctional UI — 16px and below
--font-displayFounders GroteskDisplay voice, 20px floor — 300 Light · 400 Regular, no heavier
--font-monoFounders Grotesk MonoTechnical — labels, code, data

Dark by default

:root is the dark theme; light opts out via [data-theme="light"]. Every semantic token flips automatically — components never carry their own theme logic.

Signal discipline

Signal is reserved for primary and ring. Text on Signal is always #151715 — Signal on white fails WCAG (~1.2:1); on black it clears 12.9:1.

Last updated on 2026-09-13