Skip to content

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.

The swatches below are generated at build time from colors.css via colours.data.js. To add, remove, or rename a colour, edit colors.css — this page updates automatically.

Brand Palette ​

The approved palette contains pink, purple, blue, yellow, red, and orange, with stops 200–600.

Brand Colours

Pink

--color-brand-pink-200#FEE9F1
--color-brand-pink-300#F8B4CD
--color-brand-pink-400#E96092
--color-brand-pink-500#D72555
--color-brand-pink-600#AE0027

Purple

--color-brand-purple-200#FBE2FA
--color-brand-purple-300#B481B2
--color-brand-purple-400#832081
--color-brand-purple-500#5E1E5C
--color-brand-purple-600#380435

Blue

--color-brand-blue-200#DAEFFB
--color-brand-blue-300#B0DAF2
--color-brand-blue-400#63B6E6
--color-brand-blue-500#2479C4
--color-brand-blue-600#0A5BB7

Yellow

--color-brand-yellow-200#FFF6C9
--color-brand-yellow-300#FEED93
--color-brand-yellow-400#FFDB14
--color-brand-yellow-500#E4B60D
--color-brand-yellow-600#CC9018

Red

--color-brand-red-200#FEE5DD
--color-brand-red-300#FEB6A8
--color-brand-red-400#E54F35
--color-brand-red-500#C9110E
--color-brand-red-600#990206

Orange

--color-brand-orange-200#FEE8C7
--color-brand-orange-300#F9D18F
--color-brand-orange-400#F4A300
--color-brand-orange-500#E9681A
--color-brand-orange-600#DF4317
css
/* 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 ​

Mono Palette

--color-mono-white#FFF
--color-mono-100#FAFAFA
--color-mono-200#F5F5F5
--color-mono-300#E5E5E5
--color-mono-400#CACACA
--color-mono-500#959595
--color-mono-600#666666
--color-mono-700#2C2C2C
--color-mono-black#000
css
/* 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);
}

Secondary Palette ​

Green and teal use stops 200–600. Use secondary green for success states.

Secondary Colours

Green

--color-secondary-green-200#DDF2DE
--color-secondary-green-300#ADD8AD
--color-secondary-green-400#3AAA3F
--color-secondary-green-500#2E7D2E
--color-secondary-green-600#125B14

Teal

--color-secondary-teal-200#BEF9F3
--color-secondary-teal-300#62E2DD
--color-secondary-teal-400#00AAA3
--color-secondary-teal-500#008278
--color-secondary-teal-600#006255

Extra Shades ​

Extra shades outside the palette, kept for compatibility. These names and values remain unchanged.

TokenValue
--color-brand-purple-700#783171
--color-brand-purple-800#440743
--color-brand-blue-100#D8EDF9
--color-brand-blue-700#105DBA
--color-brand-blue-800#012B86
--color-brand-blue-900#001261
--color-brand-yellow-700#FDBC25
--color-brand-red-700#B61615
--color-brand-red-800#820202
--color-brand-red-900#5D0000
--color-brand-orange-100#F9D3CC

Deprecated Aliases ​

Deprecated aliases: will be removed in the next major version.

Brand green maps to secondary green at the same stop. The old secondary families and green-teal names map to the nearest final token. These mappings use Oklab distance, including Mono. Colour proximity does not imply the same semantic purpose. The optional Greco theme retains its deliberate brand overrides and uses these aliases.

Deprecated tokenUse insteadValue
--color-brand-green-200--color-secondary-green-200#DDF2DE
--color-brand-green-300--color-secondary-green-300#ADD8AD
--color-brand-green-400--color-secondary-green-400#3AAA3F
--color-brand-green-500--color-secondary-green-500#2E7D2E
--color-brand-green-600--color-secondary-green-600#125B14
--color-secondary-aqua-400--color-brand-blue-200#DAEFFB
--color-secondary-aqua-500--color-mono-300#E5E5E5
--color-secondary-aqua-600--color-secondary-teal-300#62E2DD
--color-secondary-aqua-700--color-secondary-teal-400#00AAA3
--color-secondary-aqua-800--color-secondary-teal-400#00AAA3
--color-secondary-aqua-900--color-secondary-teal-500#008278
--color-secondary-denim-600--color-brand-blue-400#63B6E6
--color-secondary-denim-700--color-brand-blue-600#0A5BB7
--color-secondary-denim-800--color-brand-blue-600#0A5BB7
--color-secondary-denim-900--color-brand-purple-600#380435
--color-secondary-lilac-600--color-mono-400#CACACA
--color-secondary-lilac-700--color-brand-purple-300#B481B2
--color-secondary-lilac-800--color-brand-purple-400#832081
--color-secondary-lilac-900--color-brand-purple-600#380435
--color-secondary-magenta-500--color-brand-pink-300#F8B4CD
--color-secondary-magenta-600--color-brand-pink-400#E96092
--color-secondary-magenta-700--color-brand-pink-500#D72555
--color-secondary-magenta-800--color-brand-purple-400#832081
--color-secondary-magenta-900--color-brand-red-600#990206
--color-secondary-thunderbird-600--color-brand-purple-300#B481B2
--color-secondary-thunderbird-700--color-brand-pink-600#AE0027
--color-secondary-thunderbird-800--color-brand-red-500#C9110E
--color-secondary-thunderbird-900--color-brand-red-600#990206
--color-green-teal-100--color-brand-blue-300#B0DAF2
--color-green-teal-200--color-secondary-green-300#ADD8AD
--color-green-teal-300--color-secondary-green-300#ADD8AD
--color-green-teal-400--color-secondary-teal-400#00AAA3
--color-green-teal-500--color-secondary-teal-400#00AAA3
--color-green-teal-600--color-secondary-teal-400#00AAA3
--color-green-teal-700--color-secondary-teal-500#008278
--color-green-teal-800--color-secondary-teal-500#008278

Semantic Colours ​

Functional aliases that map to brand and secondary 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.

TokenValueUsage
surface.basemono.whiteDefault background
surface.secondarymono.100Secondary container background
surface.tertiarymono.200Nested content background
surface.inversemono.blackInverse/dark background
on-surface.basemono.700Default text on light surfaces
on-surface.secondarymono.600Secondary text
on-surface.tertiarymono.500Tertiary text
on-surface.disabledmono.400Disabled text
on-surface.inversemono.whiteText on dark surfaces
border.basemono.300Default border
border.subtlemono.200Subtle border
border.strongmono.500Emphasis border
border.focusblue.600Focused element border
focus-ring.baseblue.600Focus ring for keyboard navigation
link.baseblue.600Default link colour
link.hoverblue.500Hovered link colour
link.visitedpurple.300Visited link colour
accent.primaryorange.500Primary accent highlights
accent.secondarypurple.400Secondary accent
overlay.basergba(0,0,0,0.5)Default overlay backdrop