Skip to main content

CSS colors

Style your App to match the Root theme using CSS color variables provided by the Root SDK.

What are Root CSS colors?

Root CSS colors are CSS custom properties (variables) that Root injects into your App's client at runtime. These variables contain the current theme's color values, allowing your App to automatically adapt when the user switches between light and dark mode.

Root updates the CSS color variables automatically when the user switches themes. If your App needs to perform additional logic when the theme changes (such as updating a canvas or third-party library), see Theme mode.

Available color variables

The Root SDK provides the following CSS color variables:

VariablePurpose
--rootsdk-brand-primaryPrimary brand color
--rootsdk-brand-secondarySecondary brand color
--rootsdk-brand-tertiaryTertiary brand color
--rootsdk-text-primaryPrimary text color
--rootsdk-text-secondarySecondary text color
--rootsdk-text-tertiaryTertiary/muted text color
--rootsdk-text-whiteWhite text color
--rootsdk-background-primaryPrimary background color
--rootsdk-background-secondarySecondary background color
--rootsdk-background-tertiaryTertiary background color
--rootsdk-inputInput field background color
--rootsdk-borderBorder color
--rootsdk-highlight-lightLight highlight/hover color
--rootsdk-highlight-normalNormal highlight/hover color
--rootsdk-highlight-strongStrong highlight/hover color
--rootsdk-infoInformational status color
--rootsdk-warningWarning status color
--rootsdk-errorError status color
--rootsdk-mutedMuted/disabled color
--rootsdk-linkLink color

Use Root colors in CSS

Reference Root color variables in your stylesheets using the standard CSS var() function.

Basic usage

.my-component {
background-color: var(--rootsdk-background-primary);
color: var(--rootsdk-text-primary);
border: 1px solid var(--rootsdk-border);
}

.my-button {
background-color: var(--rootsdk-brand-primary);
color: var(--rootsdk-text-white);
}

.my-button:hover {
background-color: var(--rootsdk-highlight-normal);
}

Input fields

.my-input {
background-color: var(--rootsdk-input);
border: 1px solid var(--rootsdk-border);
color: var(--rootsdk-text-primary);
caret-color: var(--rootsdk-text-primary);
}

.my-input:focus {
border-color: var(--rootsdk-brand-primary);
}

.my-input::placeholder {
color: var(--rootsdk-text-tertiary);
}

Status messages

.error-message {
color: var(--rootsdk-error);
}

.warning-message {
color: var(--rootsdk-warning);
}

.info-message {
color: var(--rootsdk-info);
}
a {
color: var(--rootsdk-link);
}

.clickable-item {
color: var(--rootsdk-text-primary);
}

.clickable-item:hover {
background-color: var(--rootsdk-highlight-normal);
}

.muted-text {
color: var(--rootsdk-muted);
}

Cards and containers

.card {
background-color: var(--rootsdk-background-secondary);
border: 1px solid var(--rootsdk-border);
}

.card-header {
background-color: var(--rootsdk-background-tertiary);
color: var(--rootsdk-text-primary);
}

.card-content {
color: var(--rootsdk-text-secondary);
}