Quarzo Bonobo for shadcn/ui

Quarzo Bonobo is a shadcn/ui theme built around a muted light blue primary color (#c9d1d9) with muted deep blue accents (#283548). The light mode uses a blue-tinted background (#0d1117). Dark mode keeps the muted light blue primary (#c9d1d9) on a blue-tinted background (#0d1117).

Color palette

TokenLightDark
Background
#0d1117black
#0d1117black
Foreground
#c9d1d9lightgrey
#c9d1d9lightgrey
Card
#090c10black
#090c10black
Card foreground
#d8dee3gainsboro
#d8dee3gainsboro
Popover
#070a0dblack
#070a0dblack
Popover foreground
#e7ebeelavender
#e7ebeelavender
Primary
#c9d1d9lightgrey
#c9d1d9lightgrey
Primary foreground
#2f3842darkslategray
#2f3842darkslategray
Secondary
#3b4044darkslategray
#3b4044darkslategray
Secondary foreground
#d6d9dbgainsboro
#d6d9dbgainsboro
Muted
#22252bdarkslategray
#22252bdarkslategray
Muted foreground
#9ba4b0darkgray
#9ba4b0darkgray
Accent
#283548darkslategray
#283548darkslategray
Accent foreground
#c4cfdelightgrey
#c4cfdelightgrey
Destructive
#f03633crimson
#f03633crimson
Destructive foreground
#ffffffwhite
#ffffffwhite
Border
#191d24black
#191d24black
Input
#1f252ddarkslategray
#1f252ddarkslategray
Ring
#c9d1d9lightgrey
#c9d1d9lightgrey

Contrast

WCAG 2 contrast ratios between each background and its foreground color.

Light mode
Text on background12.27:1AAA
Text on card14.43:1AAA
Primary button7.71:1AAA
Secondary button7.40:1AAA
Muted text6.07:1AA
Accent7.87:1AAA
Destructive3.98:1AA Large
Dark mode
Text on background12.27:1AAA
Text on card14.43:1AAA
Primary button7.71:1AAA
Secondary button7.40:1AAA
Muted text6.07:1AA
Accent7.87:1AAA
Destructive3.98:1AA Large

CSS variables

Paste this into your globals.css to use Quarzo Bonobo in your shadcn/ui project.

:root {
  --radius: 0.5rem;
  --background: oklch(0.176 0.014 258.357);
  --foreground: oklch(0.857 0.014 247.988);
  --muted: oklch(0.264 0.012 258.372);
  --muted-foreground: oklch(0.715 0.021 258.365);
  --popover: oklch(0.142 0.009 256.104);
  --popover-foreground: oklch(0.937 0.006 247.889);
  --card: oklch(0.153 0.01 258.219);
  --card-foreground: oklch(0.897 0.01 247.936);
  --border: oklch(0.231 0.014 258.369);
  --input: oklch(0.262 0.017 258.367);
  --primary: oklch(0.857 0.014 247.988);
  --primary-foreground: oklch(0.336 0.021 248.458);
  --secondary: oklch(0.368 0.01 248.093);
  --secondary-foreground: oklch(0.883 0.005 247.877);
  --accent: oklch(0.326 0.038 258.319);
  --accent-foreground: oklch(0.85 0.024 258.364);
  --destructive: oklch(0.624 0.221 27.17);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.857 0.014 247.988);
  --chart-1: oklch(0.857 0.014 247.988);
  --chart-2: oklch(0.368 0.01 248.093);
  --chart-3: oklch(0.326 0.038 258.319);
  --chart-4: oklch(0.397 0.011 248.098);
  --chart-5: oklch(0.857 0.016 248.017);
}

.dark {
  --radius: 0.5rem;
  --background: oklch(0.176 0.014 258.357);
  --foreground: oklch(0.857 0.014 247.988);
  --muted: oklch(0.264 0.012 258.372);
  --muted-foreground: oklch(0.715 0.021 258.365);
  --popover: oklch(0.142 0.009 256.104);
  --popover-foreground: oklch(0.937 0.006 247.889);
  --card: oklch(0.153 0.01 258.219);
  --card-foreground: oklch(0.897 0.01 247.936);
  --border: oklch(0.231 0.014 258.369);
  --input: oklch(0.262 0.017 258.367);
  --primary: oklch(0.857 0.014 247.988);
  --primary-foreground: oklch(0.336 0.021 248.458);
  --secondary: oklch(0.368 0.01 248.093);
  --secondary-foreground: oklch(0.883 0.005 247.877);
  --accent: oklch(0.326 0.038 258.319);
  --accent-foreground: oklch(0.85 0.024 258.364);
  --destructive: oklch(0.624 0.221 27.17);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.857 0.014 247.988);
  --chart-1: oklch(0.857 0.014 247.988);
  --chart-2: oklch(0.368 0.01 248.093);
  --chart-3: oklch(0.326 0.038 258.319);
  --chart-4: oklch(0.397 0.011 248.098);
  --chart-5: oklch(0.857 0.016 248.017);
}