Appearance
Colours
The FastTrack colour system is built on CSS custom properties defined in public/assets/styles/colors.css. All colours are available globally and should be referenced via var() — never hardcode hex values.
Brand Palette
Seven colour families, each with 5 shades (200–600). Shade 400 is the default/base for each family.
Brand Colours
Pink
200
#FAD7E4300
#F4B0C8400
#E96092500
#D52454600
#C21030Purple
200
#E0C6E0300
#C18EC0400
#831F82500
#440743600
#230123Blue
200
#D8EDF9300
#B0DAF2400
#63B6E6500
#2782CF600
#105DBAYellow
200
#FFF6C9300
#FEED93400
#FFDB14500
#FDBC25600
#FCA122Red
200
#F9D3CC300
#F2A699400
#E54F35500
#CD1913600
#B80E11Orange
200
#FCE8C7300
#F9D18F400
#F4A321500
#E9681A600
#DF4317Green
200
#D4E9D4300
#A9D3A9400
#3AAA3F500
#2E7D2E600
#1A5A1Acss
/* Usage */
.my-element {
background-color: var(--color-brand-pink-400);
color: var(--color-brand-blue-600);
}/* Usage */
.my-element {
background-color: var(--color-brand-pink-400);
color: var(--color-brand-blue-600);
}Mono / Neutrals
Nine neutral shades from white to black.
Mono Palette
White
#FFF100
#FAFAFA200
#F5F5F5300
#E5E5E5400
#CACACA500
#959595600
#666666700
#2C2C2CBlack
#000css
/* Usage */
.surface { background-color: var(--color-mono-white); }
.text { color: var(--color-mono-700); }
.border { border-color: var(--color-mono-300); }/* Usage */
.surface { background-color: var(--color-mono-white); }
.text { color: var(--color-mono-700); }
.border { border-color: var(--color-mono-300); }Semantic Colours
Functional aliases that map to brand palette tokens. Defined in tokens/semantic.tokens.json.
Semantic Colours
Primary
lighter
light
base
dark
darker
Maps to pink 200–600
Secondary
lightest
light
base
Maps to blue 200, 500, 600
Tertiary
light
base
dark
Maps to purple 300–500
Success
lightest
light
base
dark
Maps to green 200–500
Warning
lightest
light
base
dark
Maps to yellow 200–500
Error
lightest
light
base
dark
Maps to red 200, 400, 500, 600
Info
lightest
light
base
dark
Maps to blue 200, 400, 500, 600
Neutral
lightest
lighter
light
base
dark
Maps to mono 200–700
Surface, Text & Border
Semantic tokens for surfaces, text and interactive states.
| Token | Value | Usage |
|---|---|---|
surface.base | mono.white | Default background |
surface.secondary | mono.100 | Secondary container background |
surface.tertiary | mono.200 | Nested content background |
surface.inverse | mono.black | Inverse/dark background |
on-surface.base | mono.700 | Default text on light surfaces |
on-surface.secondary | mono.600 | Secondary text |
on-surface.tertiary | mono.500 | Tertiary text |
on-surface.disabled | mono.400 | Disabled text |
on-surface.inverse | mono.white | Text on dark surfaces |
border.base | mono.300 | Default border |
border.subtle | mono.200 | Subtle border |
border.strong | mono.500 | Emphasis border |
border.focus | blue.600 | Focused element border |
focus-ring.base | blue.600 | Focus ring for keyboard navigation |
link.base | blue.600 | Default link colour |
link.hover | blue.500 | Hovered link colour |
link.visited | purple.300 | Visited link colour |
accent.primary | orange.500 | Primary accent highlights |
accent.secondary | purple.400 | Secondary accent |
overlay.base | rgba(0,0,0,0.5) | Default overlay backdrop |