Foundations · Colour
Colour.
Disciplined raw material becomes meaning through semantic tokens. Dark-first, accessible, and precise enough that orange signals without becoming the field.
Source
--color-brand-600
#ea580c
Meaning
--text-accent
Signal
Use
Action · focus · label
Signal, not surface
Outcome
5.47:1
AA on the dark field
The field
Depth before colour.
:root is the dark field; .light is its opt-in inverse. Separate layers with semantic surfaces and borders before reaching for another hue.
Field construction
- --background
- Page background
- --foreground
- Primary text
- --surface
- Cards, raised panels
- --surface-alt
- Secondary surfaces / hover
- --text-accent
- Accent text (theme-stable)
The raw material
Ramps.
Four complete 50–950 scales. Reach for a raw step only when a semantic token will not do; the square markers identify the documented anchors.
--color-brand-*
Brand
Primary identity — orange. Actions, accents, focus.
--color-cyan-*
Cyan
Secondary / signal. Used sparingly.
--color-gray-*
Gray
Neutrals — text, surfaces, borders.
--color-green-*
Green
Positive / brand green, used sparingly. Success states use the fixed --color-success, not this ramp.
Error
--color-error · #dc2626Success
--color-success · #16a34aWarning
--color-warning · #d97706Status colours are fixed and theme-independent. Positive brand green remains a ramp; success states use --color-success.
The meaning layer
Token refinery.
Follow a value from its source, through a semantic role, into a rendered interface. Dark is canonical; light remains secondary proof.
Choose a role
01 Source
Direct field value#0A0D1202 Meaning
--backgroundField03 Use
Page background
04 Dark output
#0A0D12#ffffffProduct engineering
Idea to production, fast.
--background selected. Source Direct field value. Used for Page background. Dark value #0A0D12; light value #ffffff.
One accent
Accent restraint.
Orange marks actions, focus, labels and selection—never the field or body copy. One primary action is enough for a view.
Product engineering
Idea to production, fast.
One accountable team — consultancy, leadership and engineering.
Talk to a founderSignal lineage
--color-brand-600 → --text-accentActions · focus · labels · selection
--color-cyan-400 → --field-bloomThe PatternBackground motion signature only.
- --field-dot
- Resting dot
- --field-glow
- Mid-intensity glow
- --field-bloom
- Peak bloom (cyan)
The numbers
Contrast (AA).
Every colour decision has a measurable consequence. The accent clears AA on the dark field but reaches AA-large only on white.
We assemble one accountable team — consultancy, leadership and engineering — so scaling companies ship.
--foreground on --background
Canonical pairings.
Ratios are computed from the documented token values. Text carries every verdict; colour only reinforces it.
- --foreground on --background
- Body & headings on the dark field18.13:1 · AAA
- --muted-foreground on --background
- Secondary text7.78:1 · AAA
- --muted on --background
- Muted UI5.31:1 · AA
- --text-accent on --background
- Accent on dark — clears AA5.47:1 · AA
- --text-accent on --background (light)
- Accent on white — AA large only, never body3.56:1 · AA large
Guardrails
See the consequence.
Three failures, each resolved by returning to meaning, contrast and restraint.
01 / 03
Signal, not surface.
The accent becomes the environment and body contrast collapses.
Product engineering
Idea to production, fast.
Talk to a founderThe field stays neutral; orange marks one deliberate action.
02 / 03
Meaning, not a literal.
.panel {background: #1f2933;}A raw value cannot follow the active theme or communicate intent.
.panel {background: var(--surface);}The semantic alias keeps the component tied to its role.
03 / 03
Readable, not merely branded.
Accent body copy on white reaches AA-large only.
Product engineering
One accountable team, assembled to move from idea to production.
Foreground carries prose; accent remains a short label.
The operating model
Use semantic tokens first. Reach for ramps deliberately. Keep orange precise.