Plinth

Colors

The gray and accent ramps, status colors, and semantic roles.

All colors are defined in OKLCH, so steps are perceptually even and hue shifts stay predictable. Toggle dark mode (top right) to see every swatch on this page re-resolve live.

Gray ramp

Near-neutral with a faint cool cast. This ramp does most of the work in the system: backgrounds, fills, borders and text all come from it.

--gray-1
App background
--gray-2
Subtle background
--gray-3
Component fill
--gray-4
Component hover
--gray-5
Component active
--gray-6
Subtle border
--gray-7
Border
--gray-8
Strong border
--gray-9
Solid fill
--gray-10
Solid hover
--gray-11
Secondary text
--gray-12
Primary text

Accent ramp

A restrained blue. Used for focus rings, links, selected states, and as the brand slot for themes that override it.

--accent-1
App background
--accent-2
Subtle background
--accent-3
Component fill
--accent-4
Component hover
--accent-5
Component active
--accent-6
Subtle border
--accent-7
Border
--accent-8
Strong border
--accent-9
Solid fill
--accent-10
Solid hover
--accent-11
Secondary text
--accent-12
Primary text

Semantic roles

Components never touch the ramps directly; they use these roles. Overriding a role (or the primitive it points at) restyles every component at once.

Surfaces
--background
App background
--surface
Cards, inputs
--surface-raised
Menus, dialogs
--muted
Muted fills
--subtle
Section washes
Text
--foreground
Primary text
--muted-foreground
Secondary text
--accent-text
Links, accented text
Borders
--border
Default border
--border-strong
Inputs, outlines
--ring
Focus ring
Actions
--primary
Primary action
--primary-hover
Primary hover
--accent
Brand / selected
--accent-subtle
Selected wash
Status
--destructive
Danger solid
--destructive-subtle
Danger wash
--success
Success solid
--success-subtle
Success wash
--warning
Warning solid
--warning-subtle
Warning wash

Status colors

Each status ships four tokens: a solid, a subtle wash, a border, and a long-form text color that holds contrast on the wash.

StatusTokens
Destructive--destructive, --destructive-subtle, --destructive-border, --destructive-text
Success--success, --success-subtle, --success-border, --success-text
Warning--warning, --warning-subtle, --warning-border, --warning-text

On this page