Foundations

Color

All color values come from CSS custom properties declared under @theme in app/globals.css. Use semantic tokens, not raw hex.

Surface

#f7f8fa

bg

--color-bg

#ffffff

surface

--color-surface

#1a1f3a

sidebar

--color-sidebar

#2f3660

sidebar-active

--color-sidebar-active

Text

#0f172a

text

--color-text

#64748b

text-muted

--color-text-muted

#94a3b8

text-subtle

--color-text-subtle

Border

#e5e7eb

border

--color-border

#d1d5db

border-strong

--color-border-strong

Brand

#3b5bdb

primary

--color-primary

#304ac2

primary-hover

--color-primary-hover

Semantic — success / info / warn / danger

#10b981

success

--color-success

#d1fae5

success-soft

--color-success-soft

#3b82f6

info

--color-info

#dbeafe

info-soft

--color-info-soft

#f59e0b

warn

--color-warn

#fef3c7

warn-soft

--color-warn-soft

#ef4444

danger

--color-danger

#fee2e2

danger-soft

--color-danger-soft

Typography

Geist Sans + Geist Mono. Sizes are Tailwind tokens — stick to them rather than introducing arbitrary values.

StyleClassSample
Displaytext-3xl font-semibold tracking-tightB2BHub
Titletext-xl font-semibold tracking-tightPurchase Order #PO-2024-000567
Headingtext-lg font-semiboldSection heading
Subheadingtext-sm font-semiboldCard subhead
Bodytext-smStandard paragraph body — used in tables, cards, descriptions.
Smalltext-xsHelper text, breadcrumbs, captions
Tinytext-[11px]Timestamps, metadata
Monotext-xs font-monoPO-2024-000567

Spacing

4-pixel baseline. Use Tailwind spacing tokens (p-2, gap-4, etc.) — these correspond to the values below.

1
0.25rem · 4px
2
0.5rem · 8px
3
0.75rem · 12px
4
1rem · 16px
5
1.25rem · 20px
6
1.5rem · 24px
8
2rem · 32px

Radius

sm

6px

md

8px

lg

12px

xl

16px

full

9999px

Shadow

shadow-sm

shadow-md

shadow-lg

shadow-xl