Skip to content
Get Started

Foundation demo // Palette perception

Hues must prove themselves on real surfaces, not isolated swatches.

Palette perception tests every brand hue against light and dark tonal tiers so color combinations stay legible across themes, screen technologies and ambient-light conditions.

Primary on dark oklch(72% 0.19 145) on L 10%
Primary on light oklch(38% 0.17 145) on L 96%
Semantic on dark oklch(58% 0.21 25) on L 14%
Dark & light tested Chroma aligned Ambient-safe

Act I // Contextual perception

A swatch in isolation lies. The same green reads differently on Noir vs Earth surfaces.

OKLCH perceptual lightness lets us predict how a hue shifts against varying backgrounds, but only a direct comparison reveals whether the effect is comfortable or jarring.

Primary · Dark surface Kinetic Green on Noir High contrast, saturated feel · Contrast 9.2:1
Primary · Light surface Kinetic Green on Paper Reduced chroma needed · Contrast 4.8:1
Error · Dark surface Signal Red on Noir Bright warning, high urgency · Contrast 6.1:1
Error · Light surface Signal Red on Paper Darkened hue variant required · Contrast 5.4:1

Act II // Shared chroma logic

Accent colors relate to neutrals through a shared chroma channel.

Every neutral in the system carries a trace of the primary hue angle (145°). This shared chroma root means accents and backgrounds feel like they belong together instead of colliding.

Primary C 0.19 Neutral C 0.015 Ratio ~12.7× H 145° shared
chroma relationship --vl-primary: oklch(72% 0.190 145); --vl-neutral-50: oklch(96% 0.015 145); --vl-neutral-900:oklch(14% 0.015 145);
harmony rule /* Accent chroma ÷ 12 ≈ neutral chroma */ /* Same hue angle keeps family feel */ /* Light mode flips L, keeps C & H */

Act III // Decision capture

Every palette decision is recorded as a token for design-tool and code handoff.

Designers get named Figma variables, developers get CSS custom properties, and both reference the same source of truth inside the Library. No color value exists without a documented reason.

Figma variable color/primary/500
CSS token --vl-color-primary-500
Resolved value oklch(72% 0.19 145)
Handoff rule

One source, two outputs.

Figma variables and CSS tokens are generated from the same JSON token file.

Act IV // Applied palette

Perception, harmony and documentation close the loop from concept to production.

Test on real surfaces, align chroma across the family, then document every decision so the palette is reproducible without tribal knowledge.

Perception Test hues on light and dark tiers, not isolated swatches.
Harmony Share hue angle and derive neutral chroma from accent.
Documentation Record every decision as Figma variable + CSS token.
Verification Pair with contrast tool before any release.