Color

Seven OKLCH ramps, six surface levels, and the pairing rule.

Ramps

The raw hues, eleven steps each. Nothing in a component names one.

Neutral ramp

Open full card

11 steps, OKLCH. The white-label default.

Primary ramp

Open full card

Brand hue. A theme replaces this ramp in place.

Secondary ramp

Open full card

The second brand hue: secondary fills, the duotone sweep, the second chart colour.

Red ramp

Open full card

Danger.

Amber ramp

Open full card

Warning. Note the dark foreground — amber needs it.

Green ramp

Open full card

Success.

Cyan ramp

Open full card

Info.

Violet ramp

Open full card

A spare hue for illustration and charts. The secondary ramp ships with its values.

Roles

What a component actually reads. Each one resolves to a step of a ramp above.

Surfaces

Open full card

Six levels, not two. Dense UI needs the hierarchy.

Text roles

Open full card

Four weights of emphasis, plus link and inverse.

Border roles

Open full card

Three weights of separation.

Foreground pairs

Open full card

Every background role ships with its foreground. Use them as a set.

Action states

Open full card

Four variants × resting, hover, active, disabled.

Feedback surfaces

Open full card

Subtle backgrounds with matched border and text.

Dark surfaces

Open full card

The same semantic names, re-pointed. No component changes.

Brand and texture

Full-bleed roles for a section, not a control: a solid or gradient fill, a muted tint, and a pattern built from two gradients rather than an image.

Brand fills and texture

Open full card

Full-bleed brand colour, a muted tint, and a dot or grid pattern, all built from tokens.

Spectrum

Six fixed hues round the wheel, for decoration that means nothing: not brand, not status. No theme or brand colour changes them.

Spectrum

Open full card

Six fixed hues round the wheel, for decoration that means nothing: not brand, not status. No theme changes them.