Colors
Semantic neutrals, the ink overlay ramp, and the brand and state color families.
Neutrals follow {role}(-{purpose})(-{intensity}) where the role is foreground, layer, line, or fill. The intensity ladder is strictly ordered: strong > default (bare) > muted.
layer tokens name places on the elevation ladder; fill tokens are the opaque neutral interaction fills (resting/hover/active/disabled surfaces) — the opaque counterpart of the translucent ink washes.
Color families — primary, accent, secondary, info, success, warning, and danger — share the same intensity ladder as neutrals: -strong (deep shade for readable text and rings) > the bare solid fill > -muted (strong wash) > -soft (soft wash), plus -foreground for text on the solid. The solid interaction pair -hover/-active is opt-in: primary, accent, info, warning, and danger define it; success and secondary do not.
The ink ramp ink-2 … ink-40 is a neutral overlay scale for hairlines, washes, and hover/pressed fills on transparent surfaces — the suffix is the alpha percentage.
Escape hatch: one-off precision values stay as inline oklch() literals. Promote a value to a token only when it repeats across components (rule of three).
Light
Ladder
- Light --foreground: --foreground
- Light --foreground-muted: --foreground-muted
- Light --foreground-hint: --foreground-hint
- Light --foreground-disabled: --foreground-disabled
Purpose
- Light --foreground-inverse: --foreground-inverse
- Light --foreground-link: --foreground-link
- Light --foreground-on-frame: --foreground-on-frame
- Light --foreground-on-frame-muted: --foreground-on-frame-muted
- Light --foreground-on-hud: --foreground-on-hud
- Light --foreground-active: --foreground-active
- Light --foreground-hover: --foreground-hover
Light
Surface
- Light --layer-frame: --layer-frame
- Light --layer-sidebar: --layer-sidebar
- Light --layer-canvas: --layer-canvas
- Light --layer-card: --layer-card
- Light --layer-popover: --layer-popover
- Light --layer-code: --layer-code
- Light --layer-hud: --layer-hud
Overlay
- Light --layer-backdrop: --layer-backdrop
Light
Fills
- Light --fill-muted: --fill-muted
- Light --fill-strong: --fill-strong
- Light --fill-pressed: --fill-pressed
Light
Ladder
- Light --line-hairline: --line-hairline
- Light --line-seam: --line-seam
- Light --line-strong: --line-strong
Purpose
- Light --line-field: --line-field
- Light --line-field-hover: --line-field-hover
Light
Ramp
- Light --ink: --ink
- Light --ink-2: --ink-2
- Light --ink-4: --ink-4
- Light --ink-6: --ink-6
- Light --ink-8: --ink-8
- Light --ink-10: --ink-10
- Light --ink-16: --ink-16
- Light --ink-20: --ink-20
- Light --ink-30: --ink-30
- Light --ink-40: --ink-40
Light
Brand (yellow)
- Light --color-brand: --color-brand
- Light --brand-strong: --brand-strong
- Light --brand-soft: --brand-soft
- Light --brand-edge: --brand-edge
- Light --brand-hover: --brand-hover
- Light --brand-active: --brand-active
Attention (pink)
- Light --color-attention: --color-attention
- Light --attention-strong: --attention-strong
- Light --attention-soft: --attention-soft
- Light --attention-hover: --attention-hover
- Light --attention-active: --attention-active
Brand ramp
- Light --brand-50: --brand-50
- Light --brand-100: --brand-100
- Light --brand-200: --brand-200
- Light --brand-300: --brand-300
- Light --brand-400: --brand-400
- Light --brand-500: --brand-500
- Light --brand-600: --brand-600
- Light --brand-700: --brand-700
- Light --brand-800: --brand-800
- Light --brand-900: --brand-900
- Light --brand-950: --brand-950
Attention ramp
- Light --attention-50: --attention-50
- Light --attention-100: --attention-100
- Light --attention-200: --attention-200
- Light --attention-300: --attention-300
- Light --attention-400: --attention-400
- Light --attention-500: --attention-500
- Light --attention-600: --attention-600
- Light --attention-700: --attention-700
- Light --attention-800: --attention-800
- Light --attention-900: --attention-900
- Light --attention-950: --attention-950
Light
inactive
- Light --color-inactive: --color-inactive
- Light --color-inactive-foreground: --color-inactive-foreground
info
- Light --color-info: --color-info
- Light --color-info-strong: --color-info-strong
- Light --color-info-muted: --color-info-muted
- Light --color-info-soft: --color-info-soft
- Light --color-info-hover: --color-info-hover
- Light --color-info-active: --color-info-active
success
- Light --color-success: --color-success
- Light --color-success-foreground: --color-success-foreground
- Light --color-success-strong: --color-success-strong
- Light --color-success-muted: --color-success-muted
- Light --color-success-soft: --color-success-soft
warning
- Light --color-warning: --color-warning
- Light --color-warning-foreground: --color-warning-foreground
- Light --color-warning-strong: --color-warning-strong
- Light --color-warning-muted: --color-warning-muted
- Light --color-warning-soft: --color-warning-soft
- Light --color-warning-hover: --color-warning-hover
- Light --color-warning-active: --color-warning-active
danger
- Light --color-danger: --color-danger
- Light --color-danger-foreground: --color-danger-foreground
- Light --color-danger-strong: --color-danger-strong
- Light --color-danger-muted: --color-danger-muted
- Light --color-danger-soft: --color-danger-soft
- Light --color-danger-hover: --color-danger-hover
- Light --color-danger-active: --color-danger-active