Colour palette
The Spiris Design System provides a comprehensive colour palette with CSS custom properties for consistent theming across your application.
Version 2.1 migration: The colour scale has been updated from a 2-digit format (05–90) to a 3-digit format (100–1000). The old 2-digit properties remain available for backwards compatibility but are deprecated and will be removed in v3.0. See the migration guide below.
Colour scale
Each colour palette uses a consistent 3-digit scale from 100 (lightest) to 1000 (darkest). The neutral palette extends to 1100 for additional contrast options.
| Level | Usage |
|---|---|
white (neutral only) |
Pure white (#FFFFFF) |
100 |
Backgrounds, subtle fills |
200 |
Light backgrounds, hover states |
300 |
Light accents, disabled states |
400 |
Borders, secondary elements |
500 |
Mid-tone elements |
600 |
Primary actions, key elements |
700 |
Hover states for primary elements |
800 |
Active states, pressed elements |
900 |
Dark accents, text on light backgrounds |
1000 |
Darkest tones, high contrast elements |
1100 (neutral only) |
Maximum contrast, near-black |
black (neutral only) |
Pure black (#000000) |
Neutral palette
The neutral palette provides grayscale colours that adapt to light and dark modes. Use the shorthand --neutral-* properties which automatically select the appropriate values for the current colour mode.
Note: The --neutral-100 through --neutral-1100 properties automatically adapt to light or dark mode. For explicit mode-specific values, use --neutral-light-* or --neutral-dark-*.
Light mode
$neutral-black
--neutral-black
#000000
$neutral-1100
--neutral-light-1100
--neutral-light-90
$primary-neutral
--primary-neutral
#1D1D1E
$neutral-1000
--neutral-light-1000
--neutral-light-80
#39393C
$neutral-900
--neutral-light-900
--neutral-light-70
#56565A
$neutral-800
--neutral-light-800
--neutral-light-60
#707073
$neutral-700
--neutral-light-700
--neutral-light-50
#8B8B8B
$neutral-600
--neutral-light-600
--neutral-light-40
#C3C1BB
$neutral-500
--neutral-light-500
--neutral-light-30
#D4D3CD
$neutral-400
--neutral-light-400
--neutral-light-20
#E8E6E3
$neutral-300
--neutral-light-300
--neutral-light-10
#EEECE9
$neutral-200
--neutral-light-200
--neutral-light-05
#F5F3F0
$neutral-100
#FBFAF9
$neutral-white
--neutral-white
#FFFFFF
Dark mode
$neutral-black
--neutral-black
#000000
$neutral-1100
--neutral-dark-1100
--neutral-dark-90
$primary-neutral
--primary-neutral
#1D1D1E
$neutral-1000
--neutral-dark-1000
--neutral-dark-80
#39393C
$neutral-900
--neutral-dark-900
--neutral-dark-70
#56565A
$neutral-800
--neutral-dark-800
--neutral-dark-60
#707073
$neutral-700
--neutral-dark-700
--neutral-dark-50
#8B8B8B
$neutral-600
--neutral-dark-600
--neutral-dark-40
#C3C1BB
$neutral-500
--neutral-dark-500
--neutral-dark-30
#D4D3CD
$neutral-400
--neutral-dark-400
--neutral-dark-20
#E8E6E3
$neutral-300
--neutral-dark-300
--neutral-dark-10
#EEECE9
$neutral-200
--neutral-dark-200
--neutral-dark-05
#F5F3F0
$neutral-100
#FBFAF9
$neutral-white
--neutral-white
#FFFFFF
Brand colour palettes
Purple (Primary)
The primary brand colour, used for key UI elements and branding.
$primary-1000
--purple-1000
--purple-90
#2C0753
$primary-900
--purple-900
--purple-80
#441774
$primary-800
--purple-800
--purple-70
$primary-primary
--primary-purple
#5C2A98
$primary-700
--purple-700
--purple-60
#743CBA
$primary-600
--purple-600
--purple-50
#8E59D3
$primary-500
--purple-500
--purple-40
#A777E8
$primary-400
--purple-400
--purple-30
#BE95F7
$primary-300
--purple-300
--purple-20
#D5B3FF
$primary-200
--purple-200
--purple-10
#E3CCFF
$primary-100
--purple-100
--purple-05
#F2E7FF
Blue
Used for links, informational elements, and secondary branding.
$blue-1000
--blue-1000
--blue-90
#081754
$blue-900
--blue-900
--blue-80
#172875
$blue-800
--blue-800
--blue-70
#2A4097
$blue-700
--blue-700
--blue-60
$primary-blue
--primary-blue
#3C57B9
$blue-600
--blue-600
--blue-50
#5975D3
$blue-500
--blue-500
--blue-40
#7793E8
$blue-400
--blue-400
--blue-30
#95ADF7
$blue-300
--blue-300
--blue-20
#B3C3FF
$blue-200
--blue-200
--blue-10
#CCD7FF
$blue-100
--blue-100
--blue-05
#E7ECFF
Green
Used for success states, positive actions, and confirmations.
$green-1000
--green-1000
--green-90
#063B13
$green-900
--green-900
--green-80
#0F631F
$green-800
--green-800
--green-70
#1D872B
$green-700
--green-700
--green-60
$primary-green
--primary-green
#30A639
$green-600
--green-600
--green-50
#47BC4C
$green-500
--green-500
--green-40
#60CF63
$green-400
--green-400
--green-30
#7EDE7D
$green-300
--green-300
--green-20
#9FEB9D
$green-200
--green-200
--green-10
#C2F5BF
$green-100
--green-100
--green-05
#E7FCE6
Red (Secondary)
Used for error states, destructive actions, and warnings.
$secondary-1000
--red-1000
--red-90
#661712
$secondary-900
--red-900
--red-80
#992A25
$secondary-800
--red-800
--red-70
#CC433C
$secondary-700
--red-700
--red-60
$primary-secondary
--primary-red
#FF5E57
$secondary-600
--red-600
--red-50
#FF706A
$secondary-500
--red-500
--red-40
#FF8680
$secondary-400
--red-400
--red-30
#FFA19C
$secondary-300
--red-300
--red-20
#FFC2BE
$secondary-200
--red-200
--red-10
#FFE9E7
$secondary-100
--red-100
--red-05
#FFF5F4
Orange (Yellow)
Used for warning states and attention-grabbing elements.
$yellow-1000
--orange-1000
--orange-90
#732A00
$yellow-900
--orange-900
--orange-80
#A24800
$yellow-800
--orange-800
--orange-70
$primary-yellow
--primary-orange
#D06A00
$yellow-700
--orange-700
--orange-60
#EC8D00
$yellow-600
--orange-600
--orange-50
#FFA024
$yellow-500
--orange-500
--orange-40
#FFB348
$yellow-400
--orange-400
--orange-30
#FFC46C
$yellow-300
--orange-300
--orange-20
#FFD491
$yellow-200
--orange-200
--orange-10
#FFE3B5
$yellow-100
--orange-100
--orange-05
#FFF1D9
Usage
CSS custom properties
Use CSS custom properties directly in your stylesheets:
/* Using the neutral palette */
.my-component {
background-color: var(--neutral-100);
border-color: var(--neutral-400);
color: var(--neutral-1100);
}
/* Using brand colours */
.my-button {
background-color: var(--purple-700);
color: var(--neutral-100);
}
.my-button:hover {
background-color: var(--purple-800);
}
SCSS colour-scale() function
When working with SCSS, use the colour-scale() helper function for a cleaner syntax:
@use 'spiris' as *;
.my-component {
background-color: colour-scale(neutral, 100);
border-color: colour-scale(neutral, 400);
color: colour-scale(neutral, 1100);
}
.my-button {
background-color: colour-scale(purple, 700);
color: colour-scale(neutral, 100);
&:hover {
background-color: colour-scale(purple, 800);
}
}
Migration guide (2-digit → 3-digit)
In v2.1, the colour scale was updated from 2-digit (05–90) to 3-digit (100–1000) naming. This provides better consistency with common design system conventions and allows for future expansion.
Scale mapping
| Old (deprecated) | New |
|---|---|
--colour-05 |
--colour-100 |
--colour-10 |
--colour-200 |
--colour-20 |
--colour-300 |
--colour-30 |
--colour-400 |
--colour-40 |
--colour-500 |
--colour-50 |
--colour-600 |
--colour-60 |
--colour-700 |
--colour-70 |
--colour-800 |
--colour-80 |
--colour-900 |
--colour-90 |
--colour-1000 (or --neutral-1100 for neutral) |
Migration examples
Before (deprecated):
.card {
background-color: var(--neutral-05);
border-color: var(--neutral-30);
color: var(--neutral-90);
}
.button-primary {
background-color: var(--purple-60);
}
After:
.card {
background-color: var(--neutral-100);
border-color: var(--neutral-400);
color: var(--neutral-1100);
}
.button-primary {
background-color: var(--purple-700);
}
SCSS deprecation warnings
To help identify deprecated usage in your SCSS files during compilation, enable deprecation warnings:
// Enable deprecation warnings before importing the design system
$colour-scale-warnings: true;
@use 'spiris' as *;
When enabled, using deprecated 2-digit values with the colour-scale() function will output compilation warnings indicating the recommended replacement.
Important: The deprecated 2-digit colour properties will be removed in v3.0. Please migrate to the new 3-digit scale before upgrading.