Gotham for shadcn/ui

Gotham is a shadcn/ui theme built around a light teal primary color (#d1eae8) with deep blue accents (#243647). The light mode uses a blue-tinted background (#0a0f14). Dark mode keeps the light teal primary (#d1eae8) on a blue-tinted background (#0a0f14).

Color palette

TokenLightDark
Background
#0a0f14black
#0a0f14black
Foreground
#99d1celightsteelblue
#99d1celightsteelblue
Card
#070a0eblack
#070a0eblack
Card foreground
#abd9d7lightblue
#abd9d7lightblue
Popover
#05080ablack
#05080ablack
Popover foreground
#bce1dfpowderblue
#bce1dfpowderblue
Primary
#d1eae8gainsboro
#d1eae8gainsboro
Primary foreground
#0b1918black
#0b1918black
Secondary
#2e524fdarkslategray
#2e524fdarkslategray
Secondary foreground
#cee3e2gainsboro
#cee3e2gainsboro
Muted
#22262bdarkslategray
#22262bdarkslategray
Muted foreground
#9ba6b0darkgray
#9ba6b0darkgray
Accent
#243647darkslategray
#243647darkslategray
Accent foreground
#bfcfdflightsteelblue
#bfcfdflightsteelblue
Destructive
#ec3322orangered
#ec3322orangered
Destructive foreground
#ffffffwhite
#ffffffwhite
Border
#161c23black
#161c23black
Input
#1b242cdarkslategray
#1b242cdarkslategray
Ring
#d1eae8gainsboro
#d1eae8gainsboro

Contrast

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

Light mode
Text on background11.30:1AAA
Text on card12.87:1AAA
Primary button14.32:1AAA
Secondary button6.48:1AA
Muted text6.13:1AA
Accent7.83:1AAA
Destructive4.14:1AA Large
Dark mode
Text on background11.30:1AAA
Text on card12.87:1AAA
Primary button14.32:1AAA
Secondary button6.48:1AA
Muted text6.13:1AA
Accent7.83:1AAA
Destructive4.14:1AA Large

CSS variables

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

:root {
  --radius: 0.5rem;
  --background: oklch(0.167 0.013 248.638);
  --foreground: oklch(0.822 0.058 192.207);
  --muted: oklch(0.267 0.011 248.233);
  --muted-foreground: oklch(0.719 0.02 248.103);
  --popover: oklch(0.13 0.008 243.166);
  --popover-foreground: oklch(0.883 0.039 192.744);
  --card: oklch(0.143 0.01 245.811);
  --card-foreground: oklch(0.852 0.048 192.484);
  --border: oklch(0.223 0.016 248.541);
  --input: oklch(0.255 0.02 248.599);
  --primary: oklch(0.919 0.027 190.611);
  --primary-foreground: oklch(0.199 0.019 188.996);
  --secondary: oklch(0.409 0.042 188.846);
  --secondary-foreground: oklch(0.901 0.023 190.692);
  --accent: oklch(0.324 0.039 249.118);
  --accent-foreground: oklch(0.846 0.028 248.163);
  --destructive: oklch(0.614 0.222 29.913);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.919 0.027 190.611);
  --chart-1: oklch(0.919 0.027 190.611);
  --chart-2: oklch(0.409 0.042 188.846);
  --chart-3: oklch(0.324 0.039 249.118);
  --chart-4: oklch(0.442 0.046 188.806);
  --chart-5: oklch(0.921 0.029 190.563);
}

.dark {
  --radius: 0.5rem;
  --background: oklch(0.167 0.013 248.638);
  --foreground: oklch(0.822 0.058 192.207);
  --muted: oklch(0.267 0.011 248.233);
  --muted-foreground: oklch(0.719 0.02 248.103);
  --popover: oklch(0.13 0.008 243.166);
  --popover-foreground: oklch(0.883 0.039 192.744);
  --card: oklch(0.143 0.01 245.811);
  --card-foreground: oklch(0.852 0.048 192.484);
  --border: oklch(0.223 0.016 248.541);
  --input: oklch(0.255 0.02 248.599);
  --primary: oklch(0.919 0.027 190.611);
  --primary-foreground: oklch(0.199 0.019 188.996);
  --secondary: oklch(0.409 0.042 188.846);
  --secondary-foreground: oklch(0.901 0.023 190.692);
  --accent: oklch(0.324 0.039 249.118);
  --accent-foreground: oklch(0.846 0.028 248.163);
  --destructive: oklch(0.614 0.222 29.913);
  --destructive-foreground: oklch(1 0 180);
  --ring: oklch(0.919 0.027 190.611);
  --chart-1: oklch(0.919 0.027 190.611);
  --chart-2: oklch(0.409 0.042 188.846);
  --chart-3: oklch(0.324 0.039 249.118);
  --chart-4: oklch(0.442 0.046 188.806);
  --chart-5: oklch(0.921 0.029 190.563);
}