Color easing: why linear transitions look wrong
A linear color transition moves from color A to color B in equal perceptual steps per unit time. The problem is that human color perception is not linear — we are more sensitive to changes in some hue regions than others, and more sensitive to lightness changes in the dark range than the light range. A linear CSS transition between two colors therefore appears to accelerate through some phases and slow through others, creating a sense of unevenness that reads as low quality. The fix is to use ease-in-out easing for transitions between colors with similar lightness, and ease-out for transitions that lighten (fast start, slow landing in the light range), and ease-in for transitions that darken (slow start, fast arrival in the dark range). These match the perceptual sensitivity curve more closely than linear timing.
