Hero Palette¶
Status: stable Scope: DFT chart-library hero categorical palette Source: M1 chart-library planning
This document records the current stable DFT hero palette, now named
hero-6, and the reasoning that produced it.
Current Palette¶
The current stable six-color hero palette is:
hero-blue#2768a3light-gray#acb7c2gray#929aa6brown#a68d72beige#b8a593sand#c7a987
Definition¶
hero-6 is a "hero blue versus neutrals" palette.
Its design logic is:
- one strong blue hero color
- all support colors belong to the gray/brown family only
- the hero blue is the darkest swatch in the palette
- support colors occupy lighter and less saturated perceptual bands
- the first support mini-group is gray, then the palette moves into browns
Architecture¶
The palette was built around a clear perceptual split:
- primary contrast: saturation
- secondary contrast: lightness
That means the blue hero wins because it is both:
- the most saturated color in the set
- the darkest color in the set
The support colors are not trying to behave like fully independent headline category hues. They are a neutral field designed to let the hero color pop.
Selection Rules¶
These rules were used while refining hero-6:
- The hero blue must be darker than every support color.
- Support colors must remain visually distinct from the hero both by saturation and by lightness.
- The palette should use only grays and browns after the hero color.
- The support colors should be lighter than the hero, but not so light that
they disappear on
gray-025#FAFAFA. - The lightest support colors should stay around a
2.0:1contrast ratio or better against thegray-025surface. - Grays should read clearly as gray, not as disguised blue.
- Browns should read as warm neutrals, not as orange category colors.
Ordering Logic¶
The order is intentional:
hero-bluelight-graygraybrownbeigesand
Why this order:
- the strongest hero/non-hero contrast is established immediately
- the neutral support field begins with one family first, not a gray/brown mix
- the support band then warms gradually into the brown run
- the later colors can become softer because they are expected to be used less
Refinement Notes¶
Several useful decisions emerged during refinement:
- Reusing colors directly from the ten-color default palette was not enough. The hero palette needed its own support bands.
- A three-gray support run became too compressed and visually mushy. The final structure works better as two grays followed by three browns.
- The hero blue needed to get slightly darker than the single-series blue
candidate, which led to
#2768a3. - The lighter gray was intentionally pushed close to the floor to create a stronger sense of separation from the hero.
- The final brown was then nudged slightly darker from
#ccaf8bto#c7a987so it stayed distinct fromlight-graywhile still reading as sand.
Accessibility Posture¶
This palette uses the same local Leonardo-style workflow used for the default palette:
- simulate common vision conditions
- compare simulated colors with CIEDE2000
- use a practical floor on the actual
gray-025background
For hero-6, the working floor is:
- absolute minimum support contrast on
gray-025: about2.0:1 - more comfortable support band: about
2.2:1-3.0:1 - hero color: substantially stronger than the supports
This palette is not trying to maximize pairwise equality among all six slots. Its purpose is to make slot 1 win clearly while the remaining five slots stay usable and coherent.
Archived Alternate Draft¶
An alternate draft, hero-vs-warms, is intentionally preserved as a research
note rather than an active roadmap item.
Current preserved draft:
#2768a3#c9954f#d98d67#c89d7d#c8ab84#b8995f
Current posture:
- keep the draft and its reasoning in docs
- do not treat it as an active milestone task
- revisit only if a later palette need makes this architecture strategically useful