Skip to content
Alex Hollyman
Preview the style guide in a palette

Palettes

Six palettes share one set of colour roles, so a page or a single section can change palette without changing any markup.

The default is Two-colour print. A palette is applied with a data-palette attribute, and everything inside that element picks it up.

<Section palette="kingfisher">…</Section>

<div data-palette="night-hike">…</div>

Roles

Role CSS property Utility Used for
bg --bg bg-bg Page or section background.
surface --surface bg-surface Panels that sit on the background.
ink --ink text-ink Headings and body text.
muted --muted text-muted Secondary text such as dates. Also the border of form fields.
line --line border-line Hairlines and dividers that carry no meaning on their own.
link --link text-link Links and focus outlines.
fill --fill bg-fill Solid button background.
fillInk --fill-ink text-fill-ink Text on a solid button.
mark --mark bg-mark Rules and graphics. Never used for text.

Two-colour print

The default palette. A two-ink print job in blue and fluorescent pink on plain white stock.

data-palette="two-colour-print"

  • bg #ffffff
  • surface #f1f3fb
  • ink #131a3a
  • muted #515a80
  • line #d5daec
  • link #2747d8
  • fill #2747d8
  • mark #f5347b

Alex Hollyman

Technical lead and software engineer

Designing, building and maintaining web systems since 2008, mostly in Laravel.

June 2024 to present

Technical Lead (Web)

Immersive technology studio

Building the systems that manage VR and AR experiences and their data.

  • PHP
  • Laravel
  • TypeScript
  • Vue
  • AWS
  • MySQL

Contrast, measured to WCAG 2.2. Text needs 4.5:1 and graphics need 3:1.

Pair Colours Ratio Minimum Result
Text on background ink on bg 17.0:1 4.5:1 Pass
Secondary text on background muted on bg 6.7:1 4.5:1 Pass
Link on background link on bg 7.0:1 4.5:1 Pass
Text on panel ink on surface 15.3:1 4.5:1 Pass
Secondary text on panel muted on surface 6.1:1 4.5:1 Pass
Link on panel link on surface 6.4:1 4.5:1 Pass
Button text on button fillInk on fill 7.0:1 4.5:1 Pass
Rule on background mark on bg 3.7:1 3:1 Pass
Rule on panel mark on surface 3.3:1 3:1 Pass

Explorer sheet

An OS Explorer map with the paper taken away: the green wash of woodland as the page, cover orange for buttons, water blue for anything you can follow.

data-palette="explorer"

  • bg #cfe6bd
  • surface #e3f1d6
  • ink #14301f
  • muted #3a5640
  • line #a3c48e
  • link #0a4c7d
  • fill #f07d00
  • mark #c2410c

Alex Hollyman

Technical lead and software engineer

Designing, building and maintaining web systems since 2008, mostly in Laravel.

June 2024 to present

Technical Lead (Web)

Immersive technology studio

Building the systems that manage VR and AR experiences and their data.

  • PHP
  • Laravel
  • TypeScript
  • Vue
  • AWS
  • MySQL

Contrast, measured to WCAG 2.2. Text needs 4.5:1 and graphics need 3:1.

Pair Colours Ratio Minimum Result
Text on background ink on bg 10.7:1 4.5:1 Pass
Secondary text on background muted on bg 6.1:1 4.5:1 Pass
Link on background link on bg 6.7:1 4.5:1 Pass
Text on panel ink on surface 12.1:1 4.5:1 Pass
Secondary text on panel muted on surface 6.9:1 4.5:1 Pass
Link on panel link on surface 7.6:1 4.5:1 Pass
Button text on button fillInk on fill 5.2:1 4.5:1 Pass
Rule on background mark on bg 3.9:1 3:1 Pass
Rule on panel mark on surface 4.4:1 3:1 Pass

Kingfisher

The fish in albofish, by way of the RSPB: deep river teal, the electric blue of the back and the orange of the breast.

data-palette="kingfisher"

  • bg #0c3440
  • surface #124453
  • ink #eaf6f7
  • muted #a9cad0
  • line #2a5b69
  • link #74d6ee
  • fill #f58a3c
  • mark #f58a3c

Alex Hollyman

Technical lead and software engineer

Designing, building and maintaining web systems since 2008, mostly in Laravel.

June 2024 to present

Technical Lead (Web)

Immersive technology studio

Building the systems that manage VR and AR experiences and their data.

  • PHP
  • Laravel
  • TypeScript
  • Vue
  • AWS
  • MySQL

Contrast, measured to WCAG 2.2. Text needs 4.5:1 and graphics need 3:1.

Pair Colours Ratio Minimum Result
Text on background ink on bg 12.0:1 4.5:1 Pass
Secondary text on background muted on bg 7.6:1 4.5:1 Pass
Link on background link on bg 8.0:1 4.5:1 Pass
Text on panel ink on surface 9.6:1 4.5:1 Pass
Secondary text on panel muted on surface 6.1:1 4.5:1 Pass
Link on panel link on surface 6.4:1 4.5:1 Pass
Button text on button fillInk on fill 6.2:1 4.5:1 Pass
Rule on background mark on bg 5.4:1 3:1 Pass
Rule on panel mark on surface 4.3:1 3:1 Pass

Camp blanket

A camp blanket in red wool: the page is the blanket, the text is stitched in white and the badges are mustard.

data-palette="camp-blanket"

  • bg #9c1b26
  • surface #83131d
  • ink #fff8f2
  • muted #f6cdc8
  • line #bf4a53
  • link #ffcf5c
  • fill #f4b83a
  • mark #f4b83a

Alex Hollyman

Technical lead and software engineer

Designing, building and maintaining web systems since 2008, mostly in Laravel.

June 2024 to present

Technical Lead (Web)

Immersive technology studio

Building the systems that manage VR and AR experiences and their data.

  • PHP
  • Laravel
  • TypeScript
  • Vue
  • AWS
  • MySQL

Contrast, measured to WCAG 2.2. Text needs 4.5:1 and graphics need 3:1.

Pair Colours Ratio Minimum Result
Text on background ink on bg 7.7:1 4.5:1 Pass
Secondary text on background muted on bg 5.6:1 4.5:1 Pass
Link on background link on bg 5.5:1 4.5:1 Pass
Text on panel ink on surface 9.6:1 4.5:1 Pass
Secondary text on panel muted on surface 7.0:1 4.5:1 Pass
Link on panel link on surface 6.9:1 4.5:1 Pass
Button text on button fillInk on fill 8.4:1 4.5:1 Pass
Rule on background mark on bg 4.5:1 3:1 Pass
Rule on panel mark on surface 5.7:1 3:1 Pass

Night hike

A fell after dark: navy sky, head-torch yellow, and the cold blue of a phone screen.

data-palette="night-hike"

  • bg #0f1a2b
  • surface #18273d
  • ink #e8edf5
  • muted #9fb0c8
  • line #2b3d58
  • link #ffd24a
  • fill #ffd24a
  • mark #7fb2ff

Alex Hollyman

Technical lead and software engineer

Designing, building and maintaining web systems since 2008, mostly in Laravel.

June 2024 to present

Technical Lead (Web)

Immersive technology studio

Building the systems that manage VR and AR experiences and their data.

  • PHP
  • Laravel
  • TypeScript
  • Vue
  • AWS
  • MySQL

Contrast, measured to WCAG 2.2. Text needs 4.5:1 and graphics need 3:1.

Pair Colours Ratio Minimum Result
Text on background ink on bg 14.8:1 4.5:1 Pass
Secondary text on background muted on bg 7.9:1 4.5:1 Pass
Link on background link on bg 12.1:1 4.5:1 Pass
Text on panel ink on surface 12.8:1 4.5:1 Pass
Secondary text on panel muted on surface 6.8:1 4.5:1 Pass
Link on panel link on surface 10.4:1 4.5:1 Pass
Button text on button fillInk on fill 12.1:1 4.5:1 Pass
Rule on background mark on bg 8.1:1 3:1 Pass
Rule on panel mark on surface 7.0:1 3:1 Pass

Autumn hillside

A Lakeland fellside in October: faded grass for the page, heather for links and buttons, a line of rusted bracken.

data-palette="autumn-hillside"

  • bg #ccd1ae
  • surface #dde1c5
  • ink #262a1c
  • muted #4a4f38
  • line #a7ad86
  • link #6b2a73
  • fill #6b2a73
  • mark #a8501a

Alex Hollyman

Technical lead and software engineer

Designing, building and maintaining web systems since 2008, mostly in Laravel.

June 2024 to present

Technical Lead (Web)

Immersive technology studio

Building the systems that manage VR and AR experiences and their data.

  • PHP
  • Laravel
  • TypeScript
  • Vue
  • AWS
  • MySQL

Contrast, measured to WCAG 2.2. Text needs 4.5:1 and graphics need 3:1.

Pair Colours Ratio Minimum Result
Text on background ink on bg 9.3:1 4.5:1 Pass
Secondary text on background muted on bg 5.4:1 4.5:1 Pass
Link on background link on bg 6.0:1 4.5:1 Pass
Text on panel ink on surface 10.9:1 4.5:1 Pass
Secondary text on panel muted on surface 6.3:1 4.5:1 Pass
Link on panel link on surface 7.1:1 4.5:1 Pass
Button text on button fillInk on fill 8.3:1 4.5:1 Pass
Rule on background mark on bg 3.5:1 3:1 Pass
Rule on panel mark on surface 4.1:1 3:1 Pass