Tokens
Every token in the system, with the value it resolves to in each theme. Generated from the stylesheet, so it cannot drift from what the components actually use.
182 tokens across 18 groups. 34 of them resolve to a different value in dark mode; the rest hold across both, either because they are primitives or because they are meant to stay fixed, which is why the brand orange and the chart colours look the same either way.
A split swatch means the token resolves differently per theme: left half is light, right half is dark. A solid swatch is a single fixed value. A → line means the token is an alias, and points at what it resolves through. Everything here is a plain CSS custom property, so you can read or override any of it without a build step.
Breakpoints
3 tokens
--bp-sm--bp-md--bp-lgTypography
2 tokens
--font-sans--font-monoColor primitives
68 tokens
--color-neutral-50--color-neutral-100--color-neutral-200--color-neutral-300--color-neutral-400--color-neutral-500--color-neutral-600--color-neutral-700--color-neutral-800--color-neutral-900--color-neutral-950--color-primary-50--color-primary-100--color-primary-200--color-primary-300--color-primary-400--color-primary-500--color-primary-600--color-primary-700--color-primary-800--color-primary-900--color-primary-950--color-success-50--color-success-100--color-success-200--color-success-300--color-success-400--color-success-500--color-success-600--color-success-700--color-success-800--color-success-900--color-success-950--color-warning-50--color-warning-100--color-warning-200--color-warning-300--color-warning-400--color-warning-500--color-warning-600--color-warning-700--color-warning-800--color-warning-900--color-warning-950--color-danger-50--color-danger-100--color-danger-200--color-danger-300--color-danger-400--color-danger-500--color-danger-600--color-danger-700--color-danger-800--color-danger-900--color-danger-950--color-info-50--color-info-100--color-info-200--color-info-300--color-info-400--color-info-500--color-info-600--color-info-700--color-info-800--color-info-900--color-info-950--color-base-white--color-base-blackChart primitives
6 tokens
--color-chart-orange--color-chart-blue--color-chart-teal--color-chart-purple--color-chart-gold--color-chart-greenCode syntax
2 tokens
--color-code-keyword--color-code-stringSemantic · Background
5 tokens
--color-bg-canvas→ --color-neutral-50
--color-bg-surface→ --color-base-white
--color-bg-subtle→ --color-neutral-100
--color-bg-muted→ --color-neutral-200
--color-bg-inverse→ --color-neutral-900
Semantic · Text
5 tokens
--color-fg-default→ --color-neutral-900
--color-fg-mutedsynced from Figma (was neutral-600)
→ --color-neutral-500
--color-fg-subtlesynced from Figma; note: 2.53:1 contrast on canvas bg, below WCAG AA's 4.5:1 for text
→ --color-neutral-400
--color-fg-on-accent→ --color-base-white
--color-fg-on-inverse→ --color-neutral-50
Semantic · Border
4 tokens
--color-border-subtle→ --color-neutral-200
--color-border-default→ --color-neutral-300
--color-border-strong→ --color-neutral-400
--color-border-focus→ --color-primary-500
Semantic · Chart
6 tokens
--color-chart-1→ --color-chart-orange
--color-chart-2→ --color-chart-blue
--color-chart-3→ --color-chart-teal
--color-chart-4→ --color-chart-purple
--color-chart-5→ --color-chart-gold
--color-chart-6→ --color-chart-green
Semantic · Accent
5 tokens
--color-accent-default→ --color-neutral-900
--color-accent-hover→ --color-neutral-800
--color-accent-active→ --color-neutral-700
--color-accent-subtle→ --color-neutral-100
--color-accent-fg→ --color-base-white
Semantic · Brand
4 tokens
--color-brand-default→ --color-primary-500
--color-brand-hover→ --color-primary-600
--color-brand-subtle→ --color-primary-50
--color-brand-fg→ --color-primary-600
Semantic · Status
16 tokens
--color-success-fg→ --color-success-700
--color-success-bg→ --color-success-50
--color-success-border→ --color-success-200
--color-success-solid→ --color-success-500
--color-warning-fg→ --color-warning-700
--color-warning-bg→ --color-warning-50
--color-warning-border→ --color-warning-200
--color-warning-solid→ --color-warning-500
--color-danger-fg→ --color-danger-700
--color-danger-bg→ --color-danger-50
--color-danger-border→ --color-danger-200
--color-danger-solid→ --color-danger-500
--color-info-fg→ --color-info-700
--color-info-bg→ --color-info-50
--color-info-border→ --color-info-200
--color-info-solid→ --color-info-500
Spacing
17 tokens
--space-0--space-2--space-4--space-6--space-8--space-10--space-12--space-14--space-16--space-20--space-24--space-32--space-40--space-48--space-64--space-80--space-96Radius
10 tokens
--radius-none--radius-2xs--radius-xs--radius-sm--radius-md--radius-lg--radius-xl--radius-2xl--radius-3xl--radius-fullBorder width
6 tokens
--border-width-050--border-width-100--border-width-150--border-width-200--border-width-400--border-width-600Opacity
5 tokens
--opacity-0--opacity-45--opacity-60--opacity-70--opacity-100Shadows
9 tokens
--shadow-xs--shadow-sm--shadow-md--shadow-lg--shadow-xl--shadow-2xl--shadow-left--shadow-right--shadow-upMotion
9 tokens
--motion-fast--motion-base--motion-slow--ease-in-out--ease-out--transition-base→ --motion-base) var(--ease-in-out
--transition-fast→ --motion-fast) var(--ease-in-out
--transition-slow→ --motion-slow) var(--ease-in-out
--transition-hover→ --motion-slow) var(--ease-out