Tint your grays

Give grays a slight hue that matches the UI: cool slate or warm stone.

From refactoring-ui: Color, “Pure grays look lifeless — tint them”.

Pure gray vs tinted gray

Drag the tint, then mismatch the accent.

Pure grayBad
hsl(0 0% 47%)
TintedGood
hsl(215 16% 47%)

Borrow the brand's hue

Type a hex or pick a preset.

Neutral grayBad
Brand-tintedGood
const s = warm ? 6 : 12;
grays = L.map((l, i) => `hsl(${brandHue} ${s * K[i]}% ${l}%)`);

Why it matters, pros and cons

Why it matters

Zero-saturation gray reads flat and lifeless. A few percent of the brand's hue makes neutrals and accent one palette.

Pros

  • Neutrals and accent feel related.
  • Lightness stays put, so contrast holds.
  • Tailwind ships slate and stone.

Cons

  • Past 20% saturation, grays stop being gray.
  • Warm grays under a cool brand look dirty.
  • Color tools and photo editors need true neutrals.