Color Harmony Is a Relationship, Not a Palette.
How hue, lightness, chroma and contrast create predictable color systems for digital products.

What is color harmony?
A palette is a set of colors. A system is a set of rules that produced them. When the rules are clear, every new color has an obvious place, and the interface feels calm even before anyone notices why.
“Color harmony in software is the predictable relationship between colors.”

HSL explained
HSL describes a color with three numbers people can reason about: hue is the angle on the color wheel, saturation is how vivid it is, and lightness is how close it sits to black or white.

Building a color scale
The simplest scale keeps hue and saturation fixed and moves lightness in even steps of 10. Every step is predictable, so anyone can add a new one.

Tints, shades and tones
Every step in a scale is one of three moves away from the base color: add white, add black, or take chroma away.

The problem with HSL
HSL’s lightness is a formula, not a perception. Two colors with the same L can look worlds apart.

Color space
Picture color as a cylinder. Lightness runs up the middle, hue wraps around it, and chroma grows from the centre outwards. A scale is a path through this space.

Introducing OKLCH
OKLCH is built around how we see. Its L is perceived lightness, so equal steps look equal whatever the hue, and C (chroma) says how colorful a color is.


oklch(65% 0.18 250)- 65%→ Lightness (perceived)
- 0.18→ Chroma
- 250°→ Hue
“Design the relationship our eyes perceive, not only the numbers the computer understands.”
The chroma curve
A good scale doesn’t keep chroma constant. It peaks in the middle, where the brand lives, and eases off at both ends, where colors become backgrounds and text.

Four dimensions of color harmony
Harmony is four relationships working together. Miss one, and the palette starts to feel off even when the numbers look right.

From palette to design system
A palette becomes a system when colors get jobs. Primitives hold raw values, semantic tokens describe intent, component tokens apply that intent, and components consume it.

Light mode and dark mode
Themes swap primitive values, never semantic names. Components keep asking for action-primary; the mode decides which blue answers.

Component states
Once tokens exist, a button’s states are steps along the scale. Each interaction moves one step darker, and focus adds a ring instead of a new color.

Color system maturity
Most teams move through four stages. Each one keeps what came before and adds a rule.

Summary
Everything above, in one picture: four groups of decisions that meet in the component, and through it, the product.

Final thought
“A harmonious color system isn’t one where every color follows identical numbers. It’s one where every color follows a predictable visual relationship.”
Color should not only look consistent.
It should behave consistently.
1. Perceived lightness is OKLab L computed from sRGB. Contrast ratios follow WCAG 2.2. HSL scale: hue 220°, saturation 80%.