Skip to content
Design tokens · Colors

Two brand colors, four states, one gray scale.

A deliberately small palette. Blue leads and coral complements it; four state colors carry meaning; everything else is neutral gray. Each color ships a 50→900 scale — 500 is the base, lighter steps for surfaces and softer fills, darker steps for text, borders and hover.

Primary

Blue is the brand and the workhorse — primary actions, links, focus, active state. Coral is the warm secondary: highlights and editorial accents, used sparingly. Coral is not an error color.

Primary
Blue--itkaarhus-blue-500
#007BA6
Secondary
Coral--itkaarhus-coral-500
#FF5F31
Blue--itkaarhus-blue-50 … 900
Coral--itkaarhus-coral-50 … 900

Gray

The neutral scale carries most of the interface: text, surfaces, borders, dividers. Steps are numbered only — no names. --itkaarhus-white is true white for page backgrounds; gray-900 is the darkest ink for body copy.

State

Four colors that carry meaning — never decoration. Each has a full scale: the 50/100 tints back soft alert surfaces, 500 is the icon/accent, 700+ gives readable text on those tints.

Info — Cyan--itkaarhus-info-50 … 900
Success — Green--itkaarhus-success-50 … 900
Warning — Amber--itkaarhus-warning-50 … 900
Danger — Red--itkaarhus-danger-50 … 900

The state scales in context — soft surface (50), border (200), icon (500), text (900):

Info Vedligehold planlagt til søndag kl. 02–04.
Success Dine ændringer er gemt.
Warning Sessionen udløber om 5 minutter.
Danger Kunne ikke forbinde til serveren.

Usage

Hierarchy over variety. Lead with blue, reach for coral rarely, keep state colors meaningful, and let gray do the rest.

Do
  • Lead with blue. Primary buttons, links, the focus ring, active nav — one accent carries the interface.
  • Use coral sparingly. A single editorial highlight or a secondary CTA per view — not a second primary.
  • Reserve state colors for meaning. Green = success, amber = warning, red = danger, cyan = info. Nothing decorative.
  • Build surfaces from gray. white page, gray-50 muted panels, gray-200 borders, gray-500+ for text.
  • Pair tints with shades. A -50 background wants -700+ text for legible contrast.
Don't
  • Don't use coral for errors. It's a brand accent — danger (red) signals failure.
  • Don't flood with red. Danger stays sharp and rare — small icons, borders, single words, never large fills.
  • Don't introduce off-palette hues. If a color isn't a token, it doesn't belong. Add a token instead of inlining a hex.
  • Don't use decorative gradients. Flat fills only; gradients are reserved for data-viz.
  • Don't put mid-gray text on gray surfaces. Avoid gray-400/500 body text on gray-100 — it fails contrast.

Role tokens

Semantic aliases point at scale steps, so intent stays readable in code. Prefer the role token where one exists.

TokenMaps toUse for
--itkaarhus-primaryblue-500Primary actions, links, active state
--itkaarhus-primary-hoverblue-600Hover / pressed primary
--itkaarhus-secondarycoral-500Secondary emphasis, editorial accent
--itkaarhus-infoinfo-500Informational status
--itkaarhus-successsuccess-500Success / active status
--itkaarhus-warningwarning-500Warnings, caution
--itkaarhus-dangerdanger-500Errors, destructive actions
--itkaarhus-{state}-soft{state}-100Soft surface tint for badges / alerts