Picking colors for a website is not abstract art — it is a system. Your palette needs to handle headers, body text, buttons, links, cards, alerts, borders, hover states, and dark mode. Here are industry-proven palettes with the exact CSS to implement them.
| Industry | Primary | Secondary | Accent | Why It Works |
|---|---|---|---|---|
| SaaS / Tech | #1E40AF (Deep Blue) | #F1F5F9 (Light Gray) | #2563EB (Bright Blue) | Trust + clean + professional. Blue dominates SaaS for a reason. |
| Healthcare | #0D9488 (Teal) | #F0FDF4 (Soft Green) | #059669 (Emerald) | Calming + clinical + trustworthy. Green signals health. |
| Food & Restaurant | #DC2626 (Red) | #FFFBEB (Warm Cream) | #F59E0B (Amber) | Appetite-stimulating + warm + inviting. Red and orange drive hunger. |
| Luxury / Fashion | #18181B (Near Black) | #FAFAF9 (Off White) | #A16207 (Gold) | Sophisticated + minimal + premium. Black and gold signal exclusivity. |
| Fintech | #1E1B4B (Dark Indigo) | #EEF2FF (Lavender White) | #6366F1 (Indigo) | Modern + trustworthy + distinct from traditional banking blue. |
| Education | #1D4ED8 (Royal Blue) | #FEF3C7 (Soft Yellow) | #F97316 (Orange) | Approachable + energetic + stimulating. Orange signals enthusiasm. |
| Fitness | #111827 (Charcoal) | #F9FAFB (Near White) | #EF4444 (Red) | Bold + intense + action-oriented. Dark with red accents drives motivation. |
A palette is not just five swatches — it is a system with specific roles for each color:
Define your palette as CSS custom properties on :root. This gives you one source of truth that your entire stylesheet references:
:root { --color-primary: #1E40AF; --color-secondary: #F1F5F9; --color-accent: #2563EB; --color-bg: #FFFFFF; --color-text: #111827; --color-text-muted: #6B7280; --color-border: #E5E7EB; }background: var(--color-bg);, color: var(--color-text);, border: 1px solid var(--color-border);.card { background: var(--color-secondary); }The power of this approach: changing your entire site palette means editing 7 lines, not 700.
Dark mode is not "invert everything." It is a deliberate remapping of your palette to work on dark backgrounds:
| Element | Light Mode | Dark Mode | Why |
|---|---|---|---|
| Background | #FFFFFF (White) | #0F172A (Slate 900) | Pure black (#000) feels like a hole. Dark slate is easier on eyes. |
| Surface/cards | #F1F5F9 (Gray 100) | #1E293B (Slate 800) | Subtle elevation difference from background. |
| Text | #111827 (Gray 900) | #E2E8F0 (Slate 200) | High contrast but not pure white (too harsh). |
| Muted text | #6B7280 (Gray 500) | #94A3B8 (Slate 400) | Readable but clearly secondary. |
| Primary/accent | #2563EB (Blue 600) | #3B82F6 (Blue 500) | Slightly lighter to maintain vibrancy on dark. |
| Borders | #E5E7EB (Gray 200) | #334155 (Slate 700) | Visible but subtle against dark backgrounds. |
Implementation with CSS custom properties is straightforward. Wrap your dark mode overrides in a media query:
@media (prefers-color-scheme: dark) { :root { --color-bg: #0F172A; --color-text: #E2E8F0; --color-surface: #1E293B; /* ... */ } }var(--color-bg) automatically switches. Zero per-component changes needed.Build a website-ready palette — with CSS custom properties and Tailwind export.
Open Palette Generator