Skip to content

Colors

Semantic roles first, then the primitive ramps they alias. Light and dark are the resolved values.

Every colour role is also a Tailwind utility: bg-, text- and border- plus the role name.

Hover fill for ghost controls and list or menu rows, and the fill of a focused ghost control.

Light#f3f6f4Dark#3e413f

The page, inside the shell. Cards sit on it.

Light#ffffffDark#151816

Groups on the page. Pair with border and shadow/xs.

Light#ffffffDark#1c1f1d

Disabled controls. Exempt from contrast rules.

Light#f3f6f4Dark#242725

Form input background when disabled. Pair with color/text/disabled.

Light#f3f6f4Dark#080b09

Form input background on hover.

Light#f9faf9Dark#242725

Tooltips and toasts.

Light#080b09Dark#f9faf9

Quiet fills: segmented controls, progress tracks, skeletons. Not for buttons; use secondary.

Light#f3f6f4Dark#242725

Menus, dropdowns and dialogs that float above the page.

Light#ffffffDark#242725

Brand-accented badge background.

Light#e3f9e7Dark#215130

Danger badge background.

Light#f9f0efDark#782523

Neutral badge, tag and pill background.

Light#f3f6f4Dark#242725

Success badge background.

Light#e3f9e7Dark#215130

Background for code blocks and inline code. Pair with the code/inline text style.

Light#f9faf9Dark#1c1f1d

Pressed container surface, drawn on top of background/*. Not for the page itself.

Light#f3f6f4Dark#242725

Card surface on light — same white, differentiated by shadow.

Light#ffffffDark#242725

Selected option in a segmented track. Lighter than the track in both themes.

Light#ffffffDark#3e413f

Sunken input bg on light theme.

Light#f9faf9Dark#151816

For gradient or content fading

Light#ffffff00Dark#00000000

Footer strip attached under a card, for totals and meta. Top edge uses border-subtle.

Light#f9faf9Dark#1c1f1d

Text and icons on accent.

Light#242725Dark#f3f6f4

Text and icons on card.

Light#242725Dark#f3f6f4

Text and icons on disabled controls.

Light#9fa19fDark#515351

Default text and icons.

Light#242725Dark#f3f6f4

Text on inverse.

Light#f9faf9Dark#080b09

Hints and meta text on inverse, like the shortcut in a tooltip.

Light#9fa19fDark#515351

Lowest-emphasis text that still passes: descriptions, captions, meta. At least 4.6:1 on white, background and muted.

Light#6d6f6dDark#9fa19f

Text and icons on popover.

Light#242725Dark#f3f6f4

Accent text on light — green/600 for WCAG AA compliance on white.

Light#227e45Dark#37dd79

Error text on light.

Light#c0262cDark#fac6c1

Informational text. Pair with color/feedback/info/bg or use on a neutral surface.

Light#1c65d0Dark#bfd6fa

Hyperlinks on light.

Light#1c65d0Dark#bfd6fa

Second-level text: labels and values that need more weight than muted-foreground. 7.8:1 on white.

Light#515351Dark#d3d5d3

Success text on light.

Light#227e45Dark#37dd79

Warning text on light.

Light#905f1dDark#facb96

Card and control borders.

Light#e3e6e4Dark#ffffff0a

Border carrying brand emphasis, e.g. a selected card. Meets 3:1 against the default surface.

Light#25a156Dark#33bd68

Destructive or error border. Meets 3:1 against the default surface, so it may bound a control.

Light#f97972Dark#f62a36

Informational border. Meets 3:1 against the default surface, so it may bound a control.

Light#71a6f8Dark#3a84f6

Inverted (on an opposite-tone surface) border. Meets 3:1 against the default surface, so it may bound a control.

Light#ffffffDark#080b09

Borders that must stand out, like a selected outline in neutral.

Light#d3d5d3Dark#515351

Hairlines inside a card: row dividers, tray top edge.

Light#f3f6f4Dark#ffffff08

Success border. Meets 3:1 against the default surface, so it may bound a control.

#25a156

Caution border. Meets 3:1 against the default surface, so it may bound a control.

#b87920

Focus ring offset — matches white surface.

Light#ffffffDark#151816

Text field border. It doesn't change on hover; focus turns it ring green. Fields are white with 8px corners.

Light#d3d5d3Dark#515351

Focus ring. At least 3:1 on its surface.

Light#25a156Dark#37dd79

Brand-accented icon. Icons need 3:1 against their surface, not 4.5:1.

Light#25a156Dark#33bd68

Destructive or error icon. Icons need 3:1 against their surface, not 4.5:1.

Light#f62a36Dark#fac6c1

Disabled icon. Icons need 3:1 against their surface, not 4.5:1.

Light#d3d5d3Dark#3e413f

Informational icon. Icons need 3:1 against their surface, not 4.5:1.

Light#1c65d0Dark#bfd6fa

Inverted (on an opposite-tone surface) icon. Icons need 3:1 against their surface, not 4.5:1.

Light#ffffffDark#080b09

Icon accompanying a link, matching color/text/link.

Light#1c65d0Dark#bfd6fa

Highest-emphasis icon. Icons need 3:1 against their surface, not 4.5:1.

Light#242725Dark#ffffff

Medium-emphasis icon. Icons need 3:1 against their surface, not 4.5:1.

Light#515351Dark#d3d5d3

Success icon. Icons need 3:1 against their surface, not 4.5:1.

Light#227e45Dark#37dd79

Lowest-emphasis icon. Icons need 3:1 against their surface, not 4.5:1.

Light#6d6f6dDark#9fa19f

Caution icon. Icons need 3:1 against their surface, not 4.5:1.

Light#b87920Dark#facb96

Irreversible or risky actions and error states. Not for price down; use negative.

#c0262c

Background while pressed of the danger action. Every action variant exposes the same seven parts, so this token always resolves.

Light#952627Dark#782523

Border of a destructive callout.

Light#f9dfddDark#952627

Text and icons on destructive.

#ffffff

Destructive on hover.

#952627

Icon of a destructive or error message — banners, inline validation and toasts. Use the four danger parts together.

Light#f62a36Dark#fa9f97

Tinted destructive background for callouts and chips.

Light#f9f0efDark#401615

Text and icons on destructive-muted, or destructive text on neutral surfaces.

Light#952627Dark#fac6c1

Border of the danger action. Every action variant exposes the same seven parts, so this token always resolves.

Light#fac6c1Dark#952627

Danger action border while pressed.

Light#f97972Dark#f62a36

Danger action border on hover.

Light#fa9f97Dark#c0262c

Ghost action while pressed.

Light#080b091aDark#ffffff1f

Ghost action on hover. A translucent tint so it shows on white and muted surfaces.

Light#080b090fDark#ffffff14

The one main action per view, as a black pill. Use secondary for other actions. Not for brand.

Light#080b09Dark#f9faf9

Primary while pressed.

Light#3e413fDark#d3d5d3

Border of the primary action. Matches its fill, so a filled primary reads as a single solid shape.

#33bd68

Primary action border while pressed.

#25a156

Primary action border on hover.

#37dd79

Text and icons on primary.

Light#ffffffDark#080b09

Primary on hover.

Light#242725Dark#e3e6e4

Every other action: Deposit, Withdraw, Cancel. A raised white pill with a border and shadow/xs.

Light#ffffffDark#242725

Secondary action while pressed. Drop the shadow when pressed.

Light#f3f6f4Dark#363836

Border of the secondary action.

Light#e3e6e4Dark#ffffff0a

Secondary action border while pressed.

Light#d3d5d3Dark#ffffff14

Secondary action border on hover.

Light#d3d5d3Dark#ffffff14

Text and icons on secondary.

Light#242725Dark#f3f6f4

Secondary action on hover.

Light#f9faf9Dark#2f3230

Background of the tertiary action. Every action variant exposes the same seven parts, so this token always resolves.

Light#080b09Dark#ffffff

Background while pressed of the tertiary action. Every action variant exposes the same seven parts, so this token always resolves.

Light#3e413fDark#e3e6e4

Border of the tertiary action. Matches its fill.

Light#080b09Dark#ffffff

Tertiary action border while pressed.

Light#3e413fDark#e3e6e4

Tertiary action border on hover.

Light#242725Dark#f3f6f4

Label of the tertiary action. Every action variant exposes the same seven parts, so this token always resolves.

Light#ffffffDark#080b09

Background on hover of the tertiary action. Every action variant exposes the same seven parts, so this token always resolves.

Light#242725Dark#f3f6f4

Solid info fill for badges and banners.

Light#1c65d0Dark#95bdfa

Border of an info callout.

Light#dce7f9Dark#1d51a1

Text and icons on info.

Light#ffffffDark#080b09

Icon of a informational message — banners, inline validation and toasts. Use the four info parts together.

Light#3a84f6Dark#95bdfa

Tinted info background for callouts and chips.

Light#eef3f9Dark#112543

Text and icons on info-muted, or info text on neutral surfaces.

Light#1d51a1Dark#bfd6fa

Price down, loss, Fail. Not for errors; use destructive.

Standard #c0262cColor-blind #a54f1d
Light#c0262cDark#fa9f97

Tint behind negative chips.

Standard #f9f0efColor-blind #f9f0ec
Light#f9f0efDark#401615

Price up, gain, Pass. Not for success messages; use success.

Standard #227e45Color-blind #1c65d0
Light#227e45Dark#37dd79

Tint behind positive chips and selected Pass tiles.

Standard #e3f9e7Color-blind #eef3f9
Light#e3f9e7Dark#142b1b

Solid success fill for badges and banners.

Light#227e45Dark#37dd79

Border of a success callout.

Light#b6f9c6Dark#226339

Text and icons on success.

Light#ffffffDark#080b09

Icon of a success message — banners, inline validation and toasts. Use the four success parts together.

Light#25a156Dark#37dd79

Tinted success background for callouts and chips.

Light#e3f9e7Dark#142b1b

Text and icons on success-muted, or success text on neutral surfaces.

Light#226339Dark#4ff98e

Solid warning fill for badges and banners.

Light#905f1dDark#faa732

Border of a warning callout.

Light#f9e2c9Dark#704c1e

Text and icons on warning.

Light#ffffffDark#080b09

Status that needs attention now, like a market closing soon. One per card at most.

#fad055

Text and icons on warning-highlight.

#2c2512

Icon of a caution message — banners, inline validation and toasts. Use the four warning parts together.

Light#b87920Dark#facb96

Tinted warning background for callouts and chips.

Light#f9f1e8Dark#302212

Text and icons on warning-muted, or warning text on neutral surfaces.

Light#704c1eDark#facb96

Active blue accent fill, for emphasis that is not an action.

Light#1c65d0Dark#3a84f6

Hover blue accent fill, for emphasis that is not an action.

Light#3a84f6Dark#95bdfa

Subtle blue accent fill, for emphasis that is not an action.

Light#f8f9fbDark#112543

Green accent pressed.

Light#227e45Dark#25a156
#33bd68

Green accent hover (darker on light).

Light#25a156Dark#37dd79

Green subtle background — tinted bg for green badges/chips.

Light#f4fbf6Dark#142b1b

Active red accent fill, for emphasis that is not an action.

Light#c0262cDark#f62a36

Red accent.

#f97972

Red accent hover.

Light#f62a36Dark#fa9f97

Red subtle background.

Light#fbf8f8Dark#401615

Logomark and small accents. Never a button or a surface.

#33bd68

Blue-tinted section background. Use for brand hero areas and featured content.

Light#f8f9fbDark#1c4481

Subtle blue-tinted background. Use for secondary brand sections and info panels.

Light#eef3f9Dark#1d51a1

Green-tinted section background. Use for positive outcomes, profit, and growth areas.

Light#f4fbf6Dark#215130

Subtle green-tinted background. Use for success states and positive metric areas.

Light#e3f9e7Dark#226339

Red-tinted section background. Use for alerts, losses, and high-urgency areas.

Light#fbf8f8Dark#782523

Subtle red-tinted background. Use for warning zones and at-risk metric areas.

Light#f9f0efDark#952627

The original electric lime brand highlight (#DFF248). Kept as a standalone accent because it is too light (L=0.92) to sit at 500 in a well-formed ramp. Use sparingly for brand moments, never as a text colour.

#dff248

brand-secondary

#71a6f8

brand-tertiary

#f97972

Start stop of the CTA gradient. Interpolate in oklab so the midpoint stays vivid.

#33bd68

End stop of the CTA gradient.

#2fbeab

Start stop of the hero backdrop wash.

Light#e3f9e7Dark#142b1b

End stop of the hero backdrop wash.

Light#ffffffDark#151816

Chart series 1. Use in order.

Light#9167f6Dark#bdaefa

Chart series 2. Use in order.

Light#2db1f4Dark#70c6fa

Chart series 3. Use in order.

Light#de9329Dark#faa732

Chart series 4. Use in order.

Light#f96dadDark#fa98c1

Chart series 5. Use in order.

Light#2fbeabDark#37d6c1

Chart series 6. Use in order.

Light#f97e39Dark#faa377

Chart series 7. Use in order.

Light#919cf8Dark#abb6fa

Chart series 8. Use in order.

Light#6d9820Dark#97d130

Chart axis lines and ticks. Meets 3:1 against the default surface.

Light#6d6f6dDark#9fa19f

The highlighted series. Use with color/chart/neutral to make one series stand out.

Light#25a156Dark#33bd68

Hover state for categorical series 1. Always pair with color/chart/categorical/1.

Light#f22962Dark#fac5ca

Hover state for categorical series 2. Always pair with color/chart/categorical/2.

Light#6d9820Dark#aeec47

Hover state for categorical series 3. Always pair with color/chart/categorical/3.

Light#2598abDark#83e6fa

Hover state for categorical series 4. Always pair with color/chart/categorical/4.

Light#aa54f6Dark#dfcafa

Hover state for categorical series 5. Always pair with color/chart/categorical/5.

Light#d3631fDark#fac8b0

Hover state for categorical series 6. Always pair with color/chart/categorical/6.

Light#259c8dDark#4ff2db

Hover state for categorical series 7. Always pair with color/chart/categorical/7.

Light#6f77f6Dark#cbd2fa

Hover state for categorical series 8. Always pair with color/chart/categorical/8.

Light#ea2892Dark#fac3d8

Chart gridlines. Decorative, so exempt from the 3:1 non-text rule.

Light#f3f6f4Dark#242725

De-emphasised series, shown alongside color/chart/brand.

Light#d3d5d3Dark#515351

Ordinal step 1 of 3 — a single-hue ramp for ranked buckets, not unrelated categories.

Light#dce7f9Dark#1d51a1

Ordinal step 2 of 3 — a single-hue ramp for ranked buckets, not unrelated categories.

Light#95bdfaDark#3a84f6

Ordinal step 3 of 3 — a single-hue ramp for ranked buckets, not unrelated categories.

Light#3a84f6Dark#95bdfa

Sequential step 1 of 4 — for funnel or stage progressions.

Light#dce7f9Dark#1c4481

Sequential step 2 of 4 — for funnel or stage progressions.

Light#95bdfaDark#1c65d0

Sequential step 3 of 4 — for funnel or stage progressions.

Light#3a84f6Dark#71a6f8

Sequential step 4 of 4 — for funnel or stage progressions.

Light#1d51a1Dark#bfd6fa

The unfilled remainder of a bar, meter or progress track.

Light#f3f6f4Dark#242725

Divider between navigation chrome and content.

Light#f3f6f4Dark#242725

Navigation item background on hover. Sits on the shell, darker than it in light, lighter in dark.

Light#e3e6e4Dark#ffffff14

The app frame around panels: flat neutral, one step off the page (neutral/100 light, neutral/1000 dark, below the page so panels lift). App shell only.

Light#f3f6f4Dark#030403

Selected item background on the shell (Discover pill).

Light#ffffffDark#ffffff14

Active icons and text on the shell.

Light#242725Dark#ffffff

Idle icons and secondary text on the shell.

Light#6d6f6dDark#d3d5d3

Scrim behind dialogs and sheets.

Light#00000080Dark#000000b3

Scrim overlay — 80% black.

#000000cc

Edge shadow indicating scrollable overflow.

Light#0000001fDark#00000080

Scrim overlay — 60% black.

#00000099

Resting background of a loading placeholder.

Light#f3f6f4Dark#242725

Moving highlight of a loading placeholder. Suppress the animation under reduced motion.

Light#e3e6e4Dark#3e413f

Translucent panel background. Pair with blur/md; never place body text directly on it without checking contrast.

Light#ffffff99Dark#1a1a1a99

Hairline edge of a glass panel.

Light#ffffff47Dark#ffffff1f

Top-edge sheen on a glass panel.

Light#ffffff73Dark#ffffff14
amber
blue
cyan
emerald
fuchsia
green
indigo
lime
neutral
orange
pink
purple
red
rose
sky
teal
violet
yellow
base

WCAG 2.x relative-luminance contrast of text on its surface. AA for body text is 4.5:1. Translucent colours are composited over the surface first. --color-text-secondary stands in for secondary text.

Text On Light Dark AA (light / dark)
--color-foreground --color-background 15.09 16.44 PassPass
--color-muted-foreground --color-background 5.07 6.88 PassPass
--color-text-secondary --color-background 7.76 12.12 PassPass
--color-foreground --color-card 15.09 15.28 PassPass
--color-muted-foreground --color-card 5.07 6.39 PassPass
--color-text-secondary --color-card 7.76 11.26 PassPass
--color-foreground --color-popover 15.09 13.87 PassPass
--color-muted-foreground --color-popover 5.07 5.80 PassPass
--color-text-secondary --color-popover 7.76 10.22 PassPass
--color-foreground --color-muted 13.87 13.87 PassPass
--color-muted-foreground --color-muted 4.66 5.80 PassPass
--color-text-secondary --color-muted 7.13 10.22 PassPass
--color-accent-foreground --color-accent 13.87 9.49 PassPass
--color-card-foreground --color-card 15.09 15.28 PassPass
--color-destructive-foreground --color-destructive 5.91 5.91 PassPass
--color-destructive-muted-foreground --color-destructive-muted 7.25 10.35 PassPass
--color-disabled-foreground --color-disabled 2.39 1.94 FailFail
--color-info-foreground --color-info 5.49 10.30 PassPass
--color-info-muted-foreground --color-info-muted 6.86 10.38 PassPass
--color-inverse-foreground --color-inverse 18.90 18.90 PassPass
--color-popover-foreground --color-popover 15.09 13.87 PassPass
--color-primary-foreground --color-primary 19.77 18.90 PassPass
--color-secondary-foreground --color-secondary 15.09 13.87 PassPass
--color-shell-foreground --color-shell 13.87 20.54 PassPass
--color-success-foreground --color-success 5.07 11.09 PassPass
--color-success-muted-foreground --color-success-muted 6.51 10.98 PassPass
--color-tertiary-foreground --color-tertiary 19.77 19.77 PassPass
--color-warning-foreground --color-warning 5.47 10.02 PassPass
--color-warning-highlight-foreground --color-warning-highlight 10.30 10.30 PassPass
--color-warning-muted-foreground --color-warning-muted 6.85 10.30 PassPass