Cooperation for shadcn/ui

Cooperation is a shadcn/ui theme built around a neutral gray primary color (#373338) with neutral gray accents (#383336). The light mode uses a neutral background (#fdf7fd). Dark mode keeps the neutral gray primary (#373338) on a neutral background (#040104).

Color palette

TokenLightDark
Background
#fdf7fdsnow
#040104black
Foreground
#0b040bblack
#fdfcfdwhite
Card
#fdf7fdsnow
#040104black
Card foreground
#0b040bblack
#fdfcfdwhite
Popover
#fdf7fdsnow
#040104black
Popover foreground
#0b040bblack
#fdfcfdwhite
Primary
#373338darkslategray
#373338darkslategray
Primary foreground
#d0cdd0lightgrey
#d0cdd0lightgrey
Secondary
#353338darkslategray
#353338darkslategray
Secondary foreground
#cecdd0lightgrey
#cecdd0lightgrey
Muted
#d8d0e2gainsboro
#251d2fdarkslategray
Muted foreground
#534f59darkslategray
#aaa6b0darkgray
Accent
#383336darkslategray
#383336darkslategray
Accent foreground
#d0cdcflightgrey
#d0cdcflightgrey
Destructive
#ad3510firebrick
#ec5d32tomato
Destructive foreground
#ffffffwhite
#000000black
Border
#e5e7eblavender
#1f2937darkslategray
Input
#e5e7eblavender
#1f2937darkslategray
Ring
#373338darkslategray
#373338darkslategray

Contrast

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

Light mode
Text on background19.14:1AAA
Text on card19.14:1AAA
Primary button7.82:1AAA
Secondary button7.85:1AAA
Muted text5.31:1AA
Accent7.83:1AAA
Destructive6.40:1AA
Dark mode
Text on background20.28:1AAA
Text on card20.28:1AAA
Primary button7.82:1AAA
Secondary button7.85:1AAA
Muted text6.77:1AA
Accent7.83:1AAA
Destructive6.17:1AA

CSS variables

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

:root {
  --radius: 0.5rem;
  --background: oklch(0.982 0.011 323.692);
  --foreground: oklch(0.125 0.025 325.032);
  --muted: oklch(0.868 0.026 305.335);
  --muted-foreground: oklch(0.436 0.017 305.213);
  --popover: oklch(0.982 0.011 323.692);
  --popover-foreground: oklch(0.125 0.025 325.032);
  --card: oklch(0.982 0.011 323.692);
  --card-foreground: oklch(0.125 0.025 325.032);
  --border: oklch(0.928 0.006 264.531);
  --input: oklch(0.928 0.006 264.531);
  --primary: oklch(0.328 0.009 323.781);
  --primary-foreground: oklch(0.851 0.007 323.676);
  --secondary: oklch(0.326 0.008 305.419);
  --secondary-foreground: oklch(0.85 0.006 305.652);
  --accent: oklch(0.328 0.007 342.334);
  --accent-foreground: oklch(0.851 0.005 341.954);
  --destructive: oklch(0.503 0.162 35.908);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.328 0.009 323.781);
  --chart-1: oklch(0.328 0.009 323.781);
  --chart-2: oklch(0.326 0.008 305.419);
  --chart-3: oklch(0.328 0.007 342.334);
  --chart-4: oklch(0.355 0.009 305.41);
  --chart-5: oklch(0.327 0.016 323.889);
}

.dark {
  --radius: 0.5rem;
  --background: oklch(0.085 0.02 325.357);
  --foreground: oklch(0.992 0.001 323.642);
  --muted: oklch(0.249 0.036 303.788);
  --muted-foreground: oklch(0.731 0.015 305.464);
  --popover: oklch(0.085 0.02 325.357);
  --popover-foreground: oklch(0.992 0.001 323.642);
  --card: oklch(0.085 0.02 325.357);
  --card-foreground: oklch(0.992 0.001 323.642);
  --border: oklch(0.278 0.03 256.848);
  --input: oklch(0.278 0.03 256.848);
  --primary: oklch(0.328 0.009 323.781);
  --primary-foreground: oklch(0.851 0.007 323.676);
  --secondary: oklch(0.326 0.008 305.419);
  --secondary-foreground: oklch(0.85 0.006 305.652);
  --accent: oklch(0.328 0.007 342.334);
  --accent-foreground: oklch(0.851 0.005 341.954);
  --destructive: oklch(0.658 0.186 37.036);
  --destructive-foreground: oklch(0 0 0);
  --ring: oklch(0.328 0.009 323.781);
  --chart-1: oklch(0.328 0.009 323.781);
  --chart-2: oklch(0.326 0.008 305.419);
  --chart-3: oklch(0.328 0.007 342.334);
  --chart-4: oklch(0.355 0.009 305.41);
  --chart-5: oklch(0.327 0.016 323.889);
}