Color Tokens
All interface colors are defined once in the Branding / Colors
group in the theme editor and exposed as CSS custom properties on :root
via css/_fonts.css. Make sure not to have any hard-coded values —
every component reads from these tokens, so a single change in the theme editor
ripples through the entire application instantly.
CSS custom properties
Defined on :root in css/_fonts.css from theme.global_colors.* fields.
| CSS variable | Theme field | Default | Used for | |
|---|---|---|---|---|
--color-primary |
global_colors.primary_color |
#5532F0 |
Links, CTAs, active nav indicator, focus rings, accent bars, section underlines | |
--color-secondary |
global_colors.secondary_color |
#eb8223 |
Secondary buttons, card title text, accent highlights | |
--color-heading |
global_colors.heading_color |
#333333 |
h1–h6 elements, strong labels, table header text | |
--color-body |
global_colors.body_color |
#68717A |
Paragraphs, table cell content, form labels, general copy | |
--color-muted |
global_colors.muted_color |
#949494 |
Captions, sidebar section labels, timestamps, placeholders | |
--color-app-bg |
global_colors.app_background |
#EEF2F6 |
Outermost <body> background, full-screen shell |
|
--color-page-bg |
global_colors.page_color |
#F8FAFC |
Content area background, code snippet fill | |
--color-surface |
global_colors.menu_background |
#FFFFFF |
Cards, dropdown menus, sidebar, modals, table header background | |
--color-hover-surface |
global_colors.hover_surface |
#F1F5F9 |
Interactive hover backgrounds, striped table rows, nav hover | |
--color-border |
global_colors.border_color |
#BBBBBB |
Input borders, card outlines, outline-secondary button border | |
--color-divider |
global_colors.divider_color |
#E5E7EB |
Table row separators, section divider lines, card inner borders | |
--color-light-grey |
global_colors.light_grey_color |
#C4CAD4 |
Icon box shadows, action button border, subtle UI accents | |
--color-table |
global_colors.table_color |
#E7EBF2 |
Table cell border lines specifically | |
--color-success |
global_colors.success_color |
#198754 |
Success states, positive indicators, .text-success |
|
--color-warning |
global_colors.warning_color |
#FFC107 |
Caution states, warning badges, advisory alerts | |
--color-error |
global_colors.error_color |
#DC3545 |
Error states, danger buttons, validation messages, .text-danger |
Brand
The two hues that define the product identity. Every interactive element — buttons, links, active states — pulls from one of these two tokens. Changing either in the theme editor immediately updates every component that references it.
--color-primary
Links, primary buttons, active nav indicator, focus rings, section underlines, accent bars, outline-primary border & fill.
--color-secondary
Secondary buttons, card title text, accent highlights, secondary-branded UI elements.
Text
Three levels of typographic emphasis covering headings, body copy, and de-emphasised supporting text. Using these tokens rather than arbitrary grey values ensures that every piece of text maintains a coherent visual hierarchy.
--color-heading
h1–h6 elements, bold labels, table header text, strong UI copy requiring maximum contrast.
--color-body
Paragraphs, table cell content, form labels, sidebar icon colour, general reading copy.
--color-muted
Captions, sidebar section labels, timestamps, input placeholders, card usage descriptions, unpublished badge text.
Surfaces
Layered background tokens that create the visual depth of the application shell. Each layer sits slightly lighter than the one behind it, producing a clear sense of elevation without hard shadows.
--color-app-bg
Outermost <body> background; the base layer behind all other surfaces.
--color-page-bg
Content area background, inline code snippet fill, striped table row alternate.
--color-surface
Cards, dropdown menus, sidebar, modals, table header background — the top-most resting surface.
--color-hover-surface
Interactive element hover backgrounds, active nav item fill, striped table rows, user-link hover.
Borders & Lines
Four tokens that handle every edge and separator in the system. Two of them — Border and Divider — are general-purpose; the other two serve the table component specifically to give finer control over cell lines vs. surrounding frames.
--color-border
Input borders, card outlines, outline-secondary button border, focus ring fallback.
--color-divider
Table row separators, section rule lines, card inner dividers, scrollbar track.
--color-light-grey
Icon box shadows, action button border (.actions--link), subtle UI accents.
--color-table
Table cell border lines specifically; also the wrapper border and header bottom rule.
Semantic
Universally understood signal colors. Use these — not the brand hues — wherever
the interface needs to communicate an outcome. The utility classes
.text-success, .text-danger, and
.green-text all reference these tokens.
--color-success
Success states, positive status indicators, .text-success, .green-text, status circle fill.
--color-warning
Caution states, warning badges, advisory alerts where action may be needed but is not yet critical.
--color-error
Error & danger states, .btn-danger background & border, validation messages, .text-danger, archive action icon.