Trance is a shadcn/ui theme built around a vivid green primary color (#02f252) with vivid teal accents (#02f2ca). The light mode uses a neutral background (#fbfefc). Dark mode keeps the vivid green primary (#02f252) on a neutral background (#020302).
| Token | Light | Dark |
|---|---|---|
| Background | #fbfefcwhite | #020302black |
| Foreground | #010402black | #ffffffwhite |
| Card | #fbfefcwhite | #020302black |
| Card foreground | #010402black | #ffffffwhite |
| Popover | #fbfefcwhite | #020302black |
| Popover foreground | #010402black | #ffffffwhite |
| Primary | #02f252springgreen | #02f252springgreen |
| Primary foreground | #00280eblack | #00280eblack |
| Secondary | #2af202lime | #2af202lime |
| Secondary foreground | #072800black | #072800black |
| Muted | #d9e5d6gainsboro | #1c291ablack |
| Muted foreground | #3c4639darkslategray | #bbc6b9silver |
| Accent | #02f2cadarkturquoise | #02f2cadarkturquoise |
| Accent foreground | #002822black | #002822black |
| Destructive | #813308saddlebrown | #f16e27chocolate |
| Destructive foreground | #fbd5c1peachpuff | #000000black |
| Border | #e5e7eblavender | #1f2937darkslategray |
| Input | #e5e7eblavender | #1f2937darkslategray |
| Ring | #02f252springgreen | #02f252springgreen |
WCAG 2 contrast ratios between each background and its foreground color.
| Text on background | 20.27:1 | AAA |
| Text on card | 20.27:1 | AAA |
| Primary button | 10.58:1 | AAA |
| Secondary button | 10.54:1 | AAA |
| Muted text | 7.60:1 | AAA |
| Accent | 11.00:1 | AAA |
| Destructive | 6.38:1 | AA |
| Text on background | 20.63:1 | AAA |
| Text on card | 20.63:1 | AAA |
| Primary button | 10.58:1 | AAA |
| Secondary button | 10.54:1 | AAA |
| Muted text | 8.62:1 | AAA |
| Accent | 11.00:1 | AAA |
| Destructive | 7.00:1 | AAA |
Paste this into your globals.css to use Trance in your shadcn/ui project.
:root {
--radius: 0.5rem;
--background: oklch(0.994 0.004 157.184);
--foreground: oklch(0.099 0.018 156.844);
--muted: oklch(0.91 0.025 140.49);
--muted-foreground: oklch(0.381 0.025 140.431);
--popover: oklch(0.994 0.004 157.184);
--popover-foreground: oklch(0.099 0.018 156.844);
--card: oklch(0.994 0.004 157.184);
--card-foreground: oklch(0.099 0.018 156.844);
--border: oklch(0.928 0.006 264.531);
--input: oklch(0.928 0.006 264.531);
--primary: oklch(0.837 0.255 146.109);
--primary-foreground: oklch(0.244 0.066 150.251);
--secondary: oklch(0.837 0.279 141.742);
--secondary-foreground: oklch(0.244 0.077 139.71);
--accent: oklch(0.859 0.162 174.884);
--accent-foreground: oklch(0.249 0.045 178.696);
--destructive: oklch(0.425 0.119 43.297);
--destructive-foreground: oklch(0.9 0.051 49.988);
--ring: oklch(0.837 0.255 146.109);
--chart-1: oklch(0.837 0.255 146.109);
--chart-2: oklch(0.837 0.279 141.742);
--chart-3: oklch(0.859 0.162 174.884);
--chart-4: oklch(0.864 0.287 141.67);
--chart-5: oklch(0.847 0.26 145.91);
}
.dark {
--radius: 0.5rem;
--background: oklch(0.095 0.008 157.074);
--foreground: oklch(1 0 180);
--muted: oklch(0.263 0.033 140.362);
--muted-foreground: oklch(0.814 0.021 140.491);
--popover: oklch(0.095 0.008 157.074);
--popover-foreground: oklch(1 0 180);
--card: oklch(0.095 0.008 157.074);
--card-foreground: oklch(1 0 180);
--border: oklch(0.278 0.03 256.848);
--input: oklch(0.278 0.03 256.848);
--primary: oklch(0.837 0.255 146.109);
--primary-foreground: oklch(0.244 0.066 150.251);
--secondary: oklch(0.837 0.279 141.742);
--secondary-foreground: oklch(0.244 0.077 139.71);
--accent: oklch(0.859 0.162 174.884);
--accent-foreground: oklch(0.249 0.045 178.696);
--destructive: oklch(0.687 0.18 44.719);
--destructive-foreground: oklch(0 0 0);
--ring: oklch(0.837 0.255 146.109);
--chart-1: oklch(0.837 0.255 146.109);
--chart-2: oklch(0.837 0.279 141.742);
--chart-3: oklch(0.859 0.162 174.884);
--chart-4: oklch(0.864 0.287 141.67);
--chart-5: oklch(0.847 0.26 145.91);
}