Colour palette

The Spiris Design System provides a comprehensive colour palette with CSS custom properties for consistent theming across your application.

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.

Light mode

color preview $neutral-black --neutral-black #000000
color preview $neutral-1100 --neutral-light-1100 --neutral-light-90 $primary-neutral --primary-neutral #1D1D1E
color preview $neutral-1000 --neutral-light-1000 --neutral-light-80 #39393C
color preview $neutral-900 --neutral-light-900 --neutral-light-70 #56565A
color preview $neutral-800 --neutral-light-800 --neutral-light-60 #707073
color preview $neutral-700 --neutral-light-700 --neutral-light-50 #8B8B8B
color preview $neutral-600 --neutral-light-600 --neutral-light-40 #C3C1BB
color preview $neutral-500 --neutral-light-500 --neutral-light-30 #D4D3CD
color preview $neutral-400 --neutral-light-400 --neutral-light-20 #E8E6E3
color preview $neutral-300 --neutral-light-300 --neutral-light-10 #EEECE9
color preview $neutral-200 --neutral-light-200 --neutral-light-05 #F5F3F0
color preview $neutral-100 #FBFAF9
color preview $neutral-white --neutral-white #FFFFFF

Dark mode

color preview $neutral-black --neutral-black #000000
color preview $neutral-1100 --neutral-dark-1100 --neutral-dark-90 $primary-neutral --primary-neutral #1D1D1E
color preview $neutral-1000 --neutral-dark-1000 --neutral-dark-80 #39393C
color preview $neutral-900 --neutral-dark-900 --neutral-dark-70 #56565A
color preview $neutral-800 --neutral-dark-800 --neutral-dark-60 #707073
color preview $neutral-700 --neutral-dark-700 --neutral-dark-50 #8B8B8B
color preview $neutral-600 --neutral-dark-600 --neutral-dark-40 #C3C1BB
color preview $neutral-500 --neutral-dark-500 --neutral-dark-30 #D4D3CD
color preview $neutral-400 --neutral-dark-400 --neutral-dark-20 #E8E6E3
color preview $neutral-300 --neutral-dark-300 --neutral-dark-10 #EEECE9
color preview $neutral-200 --neutral-dark-200 --neutral-dark-05 #F5F3F0
color preview $neutral-100 #FBFAF9
color preview $neutral-white --neutral-white #FFFFFF

Brand colour palettes

Purple (Primary)

The primary brand colour, used for key UI elements and branding.

color preview $primary-1000 --purple-1000 --purple-90 #2C0753
color preview $primary-900 --purple-900 --purple-80 #441774
color preview $primary-800 --purple-800 --purple-70 $primary-primary --primary-purple #5C2A98
color preview $primary-700 --purple-700 --purple-60 #743CBA
color preview $primary-600 --purple-600 --purple-50 #8E59D3
color preview $primary-500 --purple-500 --purple-40 #A777E8
color preview $primary-400 --purple-400 --purple-30 #BE95F7
color preview $primary-300 --purple-300 --purple-20 #D5B3FF
color preview $primary-200 --purple-200 --purple-10 #E3CCFF
color preview $primary-100 --purple-100 --purple-05 #F2E7FF

Blue

Used for links, informational elements, and secondary branding.

color preview $blue-1000 --blue-1000 --blue-90 #081754
color preview $blue-900 --blue-900 --blue-80 #172875
color preview $blue-800 --blue-800 --blue-70 #2A4097
color preview $blue-700 --blue-700 --blue-60 $primary-blue --primary-blue #3C57B9
color preview $blue-600 --blue-600 --blue-50 #5975D3
color preview $blue-500 --blue-500 --blue-40 #7793E8
color preview $blue-400 --blue-400 --blue-30 #95ADF7
color preview $blue-300 --blue-300 --blue-20 #B3C3FF
color preview $blue-200 --blue-200 --blue-10 #CCD7FF
color preview $blue-100 --blue-100 --blue-05 #E7ECFF

Green

Used for success states, positive actions, and confirmations.

color preview $green-1000 --green-1000 --green-90 #063B13
color preview $green-900 --green-900 --green-80 #0F631F
color preview $green-800 --green-800 --green-70 #1D872B
color preview $green-700 --green-700 --green-60 $primary-green --primary-green #30A639
color preview $green-600 --green-600 --green-50 #47BC4C
color preview $green-500 --green-500 --green-40 #60CF63
color preview $green-400 --green-400 --green-30 #7EDE7D
color preview $green-300 --green-300 --green-20 #9FEB9D
color preview $green-200 --green-200 --green-10 #C2F5BF
color preview $green-100 --green-100 --green-05 #E7FCE6

Red (Secondary)

Used for error states, destructive actions, and warnings.

color preview $secondary-1000 --red-1000 --red-90 #661712
color preview $secondary-900 --red-900 --red-80 #992A25
color preview $secondary-800 --red-800 --red-70 #CC433C
color preview $secondary-700 --red-700 --red-60 $primary-secondary --primary-red #FF5E57
color preview $secondary-600 --red-600 --red-50 #FF706A
color preview $secondary-500 --red-500 --red-40 #FF8680
color preview $secondary-400 --red-400 --red-30 #FFA19C
color preview $secondary-300 --red-300 --red-20 #FFC2BE
color preview $secondary-200 --red-200 --red-10 #FFE9E7
color preview $secondary-100 --red-100 --red-05 #FFF5F4

Orange (Yellow)

Used for warning states and attention-grabbing elements.

color preview $yellow-1000 --orange-1000 --orange-90 #732A00
color preview $yellow-900 --orange-900 --orange-80 #A24800
color preview $yellow-800 --orange-800 --orange-70 $primary-yellow --primary-orange #D06A00
color preview $yellow-700 --orange-700 --orange-60 #EC8D00
color preview $yellow-600 --orange-600 --orange-50 #FFA024
color preview $yellow-500 --orange-500 --orange-40 #FFB348
color preview $yellow-400 --orange-400 --orange-30 #FFC46C
color preview $yellow-300 --orange-300 --orange-20 #FFD491
color preview $yellow-200 --orange-200 --orange-10 #FFE3B5
color preview $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.