Commit to a cohesive palette. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pbakaus/impeccable/llms.txt
Use this file to discover all available pages before exploring further.
Color Spaces: Use OKLCH
OKLCH is perceptually uniform, meaning equal steps in lightness look equal—unlike HSL where 50% lightness in yellow looks bright while 50% in blue looks dark.Building Functional Palettes
The Tinted Neutral Trap
Pure gray is dead. Add a subtle hint of your brand hue to all neutrals:Palette Structure
A complete system needs: | Role | Purpose | Example | |------|---------|---------|| | Primary | Brand, CTAs, key actions | 1 color, 3-5 shades | | Neutral | Text, backgrounds, borders | 9-11 shade scale | | Semantic | Success, error, warning, info | 4 colors, 2-3 shades each | | Surface | Cards, modals, overlays | 2-3 elevation levels |Skip secondary/tertiary unless you need them. Most apps work fine with one accent color. Adding more creates decision fatigue and visual noise.
The 60-30-10 Rule (Applied Correctly)
This rule is about visual weight, not pixel count:- 60%: Neutral backgrounds, white space, base surfaces
- 30%: Secondary colors—text, borders, inactive states
- 10%: Accent—CTAs, highlights, focus states
Contrast & Accessibility
WCAG Requirements
| Content Type | AA Minimum | AAA Target |
|---|---|---|
| Body text | 4.5:1 | 7:1 |
| Large text (18px+ or 14px bold) | 3:1 | 4.5:1 |
| UI components, icons | 3:1 | 4.5:1 |
| Non-essential decorations | None | None |
Dangerous Color Combinations
These commonly fail contrast or cause readability issues:- Light gray text on white (the #1 accessibility fail)
- Gray text on any colored background—gray looks washed out and dead on color. Use a darker shade of the background color, or transparency
- Red text on green background (or vice versa)—8% of men can’t distinguish these
- Blue text on red background (vibrates visually)
- Yellow text on white (almost always fails)
- Thin light text on images (unpredictable contrast)
Never Use Pure Gray or Pure Black
Pure gray (oklch(50% 0 0)) and pure black (#000) don’t exist in nature—real shadows and surfaces always have a color cast. Even a chroma of 0.005-0.01 is enough to feel natural without being obviously tinted.
Testing
Don’t trust your eyes. Use tools:- WebAIM Contrast Checker
- Browser DevTools → Rendering → Emulate vision deficiencies
- Polypane for real-time testing
Theming: Light & Dark Mode
Dark Mode Is Not Inverted Light Mode
You can’t just swap colors. Dark mode requires different design decisions: | Light Mode | Dark Mode | |------------|-----------|| | Shadows for depth | Lighter surfaces for depth (no shadows) | | Dark text on light | Light text on dark (reduce font weight) | | Vibrant accents | Desaturate accents slightly | | White backgrounds | Never pure black—use dark gray (oklch 12-18%) |Token Hierarchy
Use two layers: primitive tokens (--blue-500) and semantic tokens (--color-primary: var(--blue-500)). For dark mode, only redefine the semantic layer—primitives stay the same.
Alpha Is A Design Smell
Heavy use of transparency (rgba, hsla) usually means an incomplete palette. Alpha creates unpredictable contrast, performance overhead, and inconsistency. Define explicit overlay colors for each context instead. Exception: Focus rings and interactive states where see-through is needed.Guidelines
DO
- Use modern CSS color functions (oklch, color-mix, light-dark) for perceptually uniform, maintainable palettes
- Tint your neutrals toward your brand hue—even a subtle hint creates subconscious cohesion
- Test contrast with actual tools, not just your eyes
- Reduce chroma as you move toward extreme lightness/darkness
DON’T
- Use gray text on colored backgrounds—it looks washed out; use a shade of the background color instead
- Use pure black (#000) or pure white (#fff)—always tint; pure black/white never appears in nature
- Use the AI color palette: cyan-on-dark, purple-to-blue gradients, neon accents on dark backgrounds
- Use gradient text for “impact”—especially on metrics or headings; it’s decorative rather than meaningful
- Default to dark mode with glowing accents—it looks “cool” without requiring actual design decisions
- Rely on color alone to convey information
- Skip color blindness testing (8% of men affected)
