Colour Palette Generator
Generate a complete, accessible colour system from a single brand hex. Produces Tailwind v4 CSS ready to paste into your project.
Workflow
Step 1: Get the Brand Hex
Ask for the primary brand colour. A single hex like #0D9488 is enough.
Step 2: Generate 11-Shade Scale
Convert hex to HSL, then generate shades by varying lightness while keeping hue constant:
Shade Lightness Use Case
50 97% Subtle backgrounds
100 94% Hover states
200 87% Borders, dividers
300 75% Disabled states
400 62% Placeholder text
500 48% Brand colour
600 40% Primary actions
700 33% Hover on primary
800 27% Active states
900 20% Text on light bg
950 10% Darkest accents
See references/shade-generation.md for the conversion formula.
Step 3: Map Semantic Tokens
Light mode:
--background: white; --foreground: primary-950; --card: white; --card-foreground: primary-900; --primary: primary-600; --primary-foreground: white; --muted: primary-50; --muted-foreground: primary-600; --border: primary-200;
Dark mode — invert lightness while preserving relationships:
--background: primary-950; --foreground: primary-50; --card: primary-900; --card-foreground: primary-50; --primary: primary-500; --primary-foreground: white; --muted: primary-800; --muted-foreground: primary-400; --border: primary-800;
Step 4: Check Contrast
WCAG minimum ratios:
-
Text (AA): 4.5:1 normal, 3:1 large (18px+)
-
UI Elements: 3:1
Quick check: primary-600 on white and white on primary-600 . See references/contrast-checking.md for formula.
Step 5: Output Tailwind v4 CSS
@theme { --color-primary-50: #F0FDFA; --color-primary-100: #CCFBF1; --color-primary-500: #14B8A6; --color-primary-950: #042F2E;
--color-background: #FFFFFF; --color-foreground: var(--color-primary-950); --color-primary: var(--color-primary-600); --color-primary-foreground: #FFFFFF; }
.dark { --color-background: var(--color-primary-950); --color-foreground: var(--color-primary-50); --color-primary: var(--color-primary-500); }
Copy assets/tailwind-colors.css as a starting template.
Common Adjustments
-
Too vibrant at light shades: Reduce saturation by 10-20%
-
Poor contrast on primary: Use shade 700+ for text
-
Dark mode too dark: Use shade 900 instead of 950 for backgrounds
-
Brand colour too light/dark: Adjust to shade 500-600 range
Reference Files
File Purpose
references/shade-generation.md
Hex to HSL conversion, lightness values
references/semantic-mapping.md
Token mapping for light/dark modes
references/dark-mode-palette.md
Inversion patterns
references/contrast-checking.md
WCAG formulas, quick check table
assets/tailwind-colors.css
Complete CSS output template