When choosing color values in design, we recommend starting with semantic color tokens — values with clearly defined intent — and relying on color pairings in Helios that are accessible out of the box.
Color tokens
Color-naming syntax and usage can vary depending on context and tooling. Semantic naming conventions within our system allow us to implement consistent standards in our libraries.
In Figma, we use Variables to define and organize color values. Variables allow us to create palettes that reference (or alias) each other. Our Core palette is a collection of HEX values and their color ramps (neutral-50, neutral-100,…neutral-700). These values are then connected to Semantic Variables (foreground-color-primary, surface--color-faint, border-color-critical). This alias connection allows us to designate multiple token uses for individual HEX values that lead back to the same Core palette token.
Tokens in code are generated from platform-agnostic files, in our case JSON, and create atomic colors regardless of what platform or framework is used. Core palette values are directly referenced in Semantic palette values in the same way that Figma variables alias one another.

What are semantic colors?
The Semantic palette embeds meaning into color names, making it easier to select correct consistent values across applications. These colors are designed to meet accessibility standards when used in combination with one another.
- Foreground colors are intended to be used with surface or page colors.
- Status color values consist of "surface," "on-surface," and "high-contrast" options to meet accessibility standards when used together.
Some examples of semantic color combinations with their respective contrast ratios are:
Foreground/Color/StrongonSurface/Color/Primarynets a ratio of 19.54:1Foreground/Color/PrimaryonSurface/Color/Primarynets a ratio of 10.82:1Foreground/Color/ActiononSurface/Color/Faintnets a ratio of 4.86:1

How are semantic names created?
In semantic token naming, the semantic and modifier values are defined to make color decisions easier and more consistent. HDS organizes tokens into semantic categories, followed by properties, and then modifiers.

Examples of semantic naming include:
- Foreground - For text, link, status, and icon elements
- Border - For borders (or strokes) on components, containers, or dividers
- Surface - For the background (or surface) of a component or container
- Page - For page backgrounds
Examples of modifiers in naming include:
- Strong
- Primary
- Faint
- Action (not to be used outside of context)
- Disabled (not to be used outside of context)
Foreground
Foreground colors are used for informational and decorative elements such as text, links, and icons.
Some common examples of semantic foreground colors include:
Foreground/Color/Strongfor headings and secondary linksForeground/Color/Primaryfor body textForeground/Color/Faintfor less prominent text and UI elementsForeground/Color/Actionfor primary calls to action such as links

Status foreground colors contextualize responses from user actions or indicate status within a UI. These colors should be used sparingly and within the context of specific components, for example:

Border
Some examples of border colors include:
Border/Color/Strongfor secondary Button borderBorder/Color/Primaryfor Card border or dividerBorder/Color/{Status color}for Alert borders

Surface
Surface colors are intended to be used for the background (or surface) of a component or container.
Examples of surface colors include:
Surface/Color/Strongfor the Toggle backgroundSurface/Color/Primaryfor component containersSurface/Color/Faintfor the secondary ButtonSurface/Color/{Status color}for Alert backgrounds

Page
Page colors are used for page backgrounds. HDS components do not use these tokens; however, we recommend Page/Color/Primary for all standard page backgrounds and Page/Color/Faint as a means to create a secondary level on a page if necessary.
Accessible color combinations
HDS colors are conformant with WCAG 2.2 Level AA requirements. For color contrast, this means a luminosity ratio of 4.5:1 for normal sized text, and 3:1 for large text (commonly 22px). Further details are outlined on WCAG’s understanding of Contrast (Minimum).
HDS semantic color tokens provide accessible color combinations out of the box when used according to their naming conventions (Surface/Color/{Status color} is compliant in combination with Foreground/Color/{Status color on surface}). Using other color token combinations requires manual validation.
It is important to note that we do not recommend the usage of disabled elements, especially the use of disabled colors out of context, as they are not accessible.
Using palette colors
If the Semantic tokens do not meet your needs, the Core palette has been published for general use. These values are usage-agnostic, which can introduce challenges in consistently scaling designs but also allows more freedom and flexibility in color pairing.
When pairing colors from the Core palette, check that adjacent colors meet accessible contrast ratios. To validate your color combinations, use free tools like the WebAIM contrast checker or Stark’s Figma plugin.
How to use these styles
We offer two ways to apply color to a UI element: CSS helper classes or design tokens.
We currently only provide CSS helpers for the “semantic” colors, so if you need to use the “palette” or “product/brand” colors, use the design tokens as CSS variables instead.
CSS helper classes
- Ensure you’ve imported the relevant CSS file.
// for product applications
@import "~@hashicorp/design-system-tokens/dist/products/css/helpers/colors.css";
// for hashicorp developer platform
@import "~@hashicorp/design-system-tokens/dist/devdot/css/helpers/colors.css";
- Use one of the predefined CSS helper classes.
<div class="hds-foreground-primary hds-surface-faint hds-border-strong">...</div>
When a “border-color” CSS helper is used on an element a 1px solid border is applied to it. If needing a different border width/style, it’s ok to override it.
Design tokens
Use the color design tokens directly in your CSS definitions.
.your-selector {
color: var(--hds-foreground-color-primary);
background: var(--hds-surface-color-faint);
border: 1px solid var(--hds-border-color-strong);
& :hover {
color: var(--hds-foreground-color-high-contrast);
background: var(--hds-foreground-color-action-active);
}
}
Semantic tokens
Foreground
Use for text and icons.
foreground-color-strong
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-primary
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-faint
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-high-contrast
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-disabled
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-action
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-action-hover
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-action-active
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-highlight
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-highlight-on-surface
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-highlight-high-contrast
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-success
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-success-on-surface
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-success-high-contrast
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-warning
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-warning-on-surface
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-warning-high-contrast
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-critical
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-critical-on-surface
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
foreground-color-critical-high-contrast
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Surface
Use for container and component backgrounds.
surface-color-primary
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-faint
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-strong
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-high-contrast
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-interactive
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-interactive-hover
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-interactive-active
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-interactive-disabled
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-action
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-highlight
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-success
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-warning
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
surface-color-critical
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Border
Use for container and component borders. Neutral values can also be used for horizontal rules.
border-color-primary
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
border-color-faint
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
border-color-strong
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
border-color-action
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
border-color-highlight
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
border-color-success
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
border-color-warning
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
border-color-critical
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Focus
Use to indicate an element is in a focused state. Use critical values for critical actions only and action values for everything else.
focus-color-action-internal
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
focus-color-action-external
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
focus-color-critical-internal
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
focus-color-critical-external
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Page
Use for page backgrounds.
page-color-primary
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
page-color-faint
- CSS Variable
- CSS Helper
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Brand colors
Hashicorp
product-hashicorp-brand-color
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Boundary
product-boundary-brand-color
- CSS Variable
- HEX
product-boundary-foreground-color
- CSS Variable
- HEX
product-boundary-surface-color
- CSS Variable
- HEX
product-boundary-border-color
- CSS Variable
- HEX
product-boundary-gradient-color-primary-start
- CSS Variable
- HEX
product-boundary-gradient-color-primary-stop
- CSS Variable
- HEX
product-boundary-gradient-color-faint-start
- CSS Variable
- HEX
product-boundary-gradient-color-faint-stop
- CSS Variable
- HEX
Consul
product-consul-brand-color
- CSS Variable
- HEX
product-consul-foreground-color
- CSS Variable
- HEX
product-consul-surface-color
- CSS Variable
- HEX
product-consul-border-color
- CSS Variable
- HEX
product-consul-gradient-color-primary-start
- CSS Variable
- HEX
product-consul-gradient-color-primary-stop
- CSS Variable
- HEX
product-consul-gradient-color-faint-start
- CSS Variable
- HEX
product-consul-gradient-color-faint-stop
- CSS Variable
- HEX
Hcp
product-hcp-brand-color
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Nomad
product-nomad-brand-color
- CSS Variable
- HEX
product-nomad-foreground-color
- CSS Variable
- HEX
product-nomad-surface-color
- CSS Variable
- HEX
product-nomad-border-color
- CSS Variable
- HEX
product-nomad-gradient-color-primary-start
- CSS Variable
- HEX
product-nomad-gradient-color-primary-stop
- CSS Variable
- HEX
product-nomad-gradient-color-faint-start
- CSS Variable
- HEX
product-nomad-gradient-color-faint-stop
- CSS Variable
- HEX
Packer
product-packer-brand-color
- CSS Variable
- HEX
product-packer-foreground-color
- CSS Variable
- HEX
product-packer-surface-color
- CSS Variable
- HEX
product-packer-border-color
- CSS Variable
- HEX
product-packer-gradient-color-primary-start
- CSS Variable
- HEX
product-packer-gradient-color-primary-stop
- CSS Variable
- HEX
product-packer-gradient-color-faint-start
- CSS Variable
- HEX
product-packer-gradient-color-faint-stop
- CSS Variable
- HEX
Terraform
product-terraform-brand-color
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
product-terraform-brand-color-on-dark
- CSS Variable
- HEX
product-terraform-foreground-color
- CSS Variable
- HEX
product-terraform-surface-color
- CSS Variable
- HEX
product-terraform-border-color
- CSS Variable
- HEX
product-terraform-gradient-color-primary-start
- CSS Variable
- HEX
product-terraform-gradient-color-primary-stop
- CSS Variable
- HEX
product-terraform-gradient-color-faint-start
- CSS Variable
- HEX
product-terraform-gradient-color-faint-stop
- CSS Variable
- HEX
Vagrant
product-vagrant-brand-color
- CSS Variable
- HEX
product-vagrant-foreground-color
- CSS Variable
- HEX
product-vagrant-surface-color
- CSS Variable
- HEX
product-vagrant-border-color
- CSS Variable
- HEX
product-vagrant-gradient-color-primary-start
- CSS Variable
- HEX
product-vagrant-gradient-color-primary-stop
- CSS Variable
- HEX
product-vagrant-gradient-color-faint-start
- CSS Variable
- HEX
product-vagrant-gradient-color-faint-stop
- CSS Variable
- HEX
Vault-radar
product-vault-radar-brand-color
- CSS Variable
- HEX
product-vault-radar-brand-color-alt
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
product-vault-radar-foreground-color
- CSS Variable
- HEX
product-vault-radar-surface-color
- CSS Variable
- HEX
product-vault-radar-border-color
- CSS Variable
- HEX
product-vault-radar-gradient-color-primary-start
- CSS Variable
- HEX
product-vault-radar-gradient-color-primary-stop
- CSS Variable
- HEX
product-vault-radar-gradient-color-faint-start
- CSS Variable
- HEX
product-vault-radar-gradient-color-faint-stop
- CSS Variable
- HEX
Vault-secrets
product-vault-secrets-brand-color
- CSS Variable
- HEX
product-vault-secrets-brand-color-alt
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
product-vault-secrets-foreground-color
- CSS Variable
- HEX
product-vault-secrets-surface-color
- CSS Variable
- HEX
product-vault-secrets-border-color
- CSS Variable
- HEX
product-vault-secrets-gradient-color-primary-start
- CSS Variable
- HEX
product-vault-secrets-gradient-color-primary-stop
- CSS Variable
- HEX
product-vault-secrets-gradient-color-faint-start
- CSS Variable
- HEX
product-vault-secrets-gradient-color-faint-stop
- CSS Variable
- HEX
Vault
product-vault-brand-color
- CSS Variable
- HEX
product-vault-brand-color-alt
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
product-vault-foreground-color
- CSS Variable
- HEX
product-vault-surface-color
- CSS Variable
- HEX
product-vault-border-color
- CSS Variable
- HEX
product-vault-gradient-color-primary-start
- CSS Variable
- HEX
product-vault-gradient-color-primary-stop
- CSS Variable
- HEX
product-vault-gradient-color-faint-start
- CSS Variable
- HEX
product-vault-gradient-color-faint-stop
- CSS Variable
- HEX
Waypoint
product-waypoint-brand-color
- CSS Variable
- HEX
product-waypoint-foreground-color
- CSS Variable
- HEX
product-waypoint-surface-color
- CSS Variable
- HEX
product-waypoint-border-color
- CSS Variable
- HEX
product-waypoint-gradient-color-primary-start
- CSS Variable
- HEX
product-waypoint-gradient-color-primary-stop
- CSS Variable
- HEX
product-waypoint-gradient-color-faint-start
- CSS Variable
- HEX
product-waypoint-gradient-color-faint-stop
- CSS Variable
- HEX
Core palette
Core palette colors should be used sparingly and only when the correct semantic mapping isn’t available for the use case.
Blue
blue-500
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
blue-400
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
blue-300
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
blue-200
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
blue-100
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
blue-50
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Purple
purple-500
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
purple-400
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
purple-300
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
purple-200
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
purple-100
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
purple-50
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Green
green-500
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
green-400
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
green-300
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
green-200
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
green-100
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
green-50
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Amber
amber-500
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
amber-400
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
amber-300
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
amber-200
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
amber-100
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
amber-50
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Red
red-500
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
red-400
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
red-300
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
red-200
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
red-100
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
red-50
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Neutral
neutral-700
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
neutral-600
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
neutral-500
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
neutral-400
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
neutral-300
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
neutral-200
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
neutral-100
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
neutral-50
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
neutral-0
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
Alpha
alpha-300
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
alpha-200
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100
alpha-100
- CSS Variable
- HEX
-
Modes
cds-g0cds-g10cds-g90cds-g100