HSL saturation vs. perceptual chroma
The HSL color model represents saturation as a percentage from 0% (grayscale) to 100% (fully saturated). But 'fully saturated' means something different for different hues: a fully saturated yellow at 50% lightness (#FFFF00) is perceptually much more vivid than a fully saturated blue-violet at 50% lightness (#8000FF). This is because the HSL model is based on the geometry of the RGB cube, not on human perception. Perceptual color models — CIELab, CIECAM02, OKLCH — were designed to have perceptually uniform chroma, where equal numerical differences in chroma produce equal perceived differences in colorfulness. In OKLCH, a C (chroma) value of 0.2 produces the same apparent saturation level for any hue, which allows you to build palettes where every color carries the same visual weight regardless of hue.
