In 1963 Josef Albers published a book with a claim that sounds like a magic trick: the same colour, printed once, can be made to look like two completely different colours. No ink changes. Only its neighbours do. He called it the interaction of colour, and he taught it not with theory but with hundreds of paper exercises where students discovered, with their own eyes, that they could not trust them.
I make charts and dashboards for a living. For years I chose colours the way most people do: pick a nice hex, check it looks fine, ship it. Albers is the reason I stopped. Because the moment a colour lands in a real chart, it stops being the swatch you approved. It is now sitting next to a dark background, or a red alert, or eleven other categories, and it has quietly become something else.
Here is the effect, live. Both squares below are the exact same colour. Drag the backgrounds, then hit the button to slide them together and watch them fuse into one.
01The swatch you approved is not the colour they see
This is not a curiosity. It is the single most common way charts go wrong. Your brand teal looked confident on the white spec sheet. Then someone drops it into a dark-mode dashboard, and the identical hex now glows like a neon sign, louder than the number it is supposed to serve.
Same colour, two dashboards. Look at the bars:
To clarify, add detail. Clutter and confusion are failures of design, not attributes of information.
Edward TufteTufte is talking about density, but the lesson rhymes with Albers: a design fails when the maker mistakes their private view for the reader's. You saw the swatch in isolation. The reader never will.
02Contrast is a relationship, not a property
The same trap hits text and thresholds. A colour that is perfectly legible on white can quietly fail the moment it lands on a tinted panel, and accessibility is not a property of the colour, it is a property of the pair. Here is the same teal label against four grounds, with its real contrast ratio:
03What Albers means for a protocol
If a colour has no fixed meaning until you see its neighbours, then a design system cannot ship colours as hex values and hope. It has to ship them as roles, accent, warning, muted, and bind those roles to real values per context, tested against the ground they will actually sit on. Retheme by swapping the bindings, not by hand-nudging a hundred swatches.
That is not my invention. It is Albers, sixty years later, wearing an engineer's coat. It is also exactly how I built colour into OVP: specs reference a role, each design language binds the role to a value, and a contrast gate checks every pairing before it can ship. The old master with his paper squares would have recognised the whole thing.