Structuring the primitive layer
The primitive layer contains every color value the system will ever use, organized by hue. A full-scale primitive palette typically contains 6-12 hues × 8-12 lightness steps = 48-144 raw values. For dark mode, a linear lightness scale (100, 200... 900) makes it easy to find semantic equivalents by inverting steps: what was step 200 in light mode becomes step 800 in dark mode. HSL-based steps work better for this inversion than OKLCH steps because HSL inversion is predictable. OKLCH produces more perceptually consistent steps — systems built for multiple brand themes benefit from OKLCH primitives despite the inversion complexity.
