Token proof for BRAND.md v1. Two grounds, one world, no theme switcher. Every value below resolves through the semantic layer in app/globals.css.
Ground swap
The same <Specimen /> component, no props, rendered twice. The only difference is a .paper class on the second wrapper.
Nuclear power should be a primary pillar of decarbonization in advanced economies.
Nuclear power should be a primary pillar of decarbonization in advanced economies.
Palette
Contrast measured against that ground, body text needs 4.5:1.
| Token | Role | On stage | On paper |
|---|---|---|---|
--side-a | Side A | #E8934A / 6.44 | #B45309 / 4.70 |
--side-b | Side B | #5FB4D8 / 6.66 | #2C6E8F / 5.26 |
--good | Upheld | #5FBF8B / 6.89 | #2F6F4E / 5.61 |
--bad | Blocked | #E8776B / 5.39 | #9B3229 / 6.82 |
--ink | Text | #F0EAE0 / 12.99 | #1A1611 / 16.84 |
--line | Hairline | #4A423A / 1.58 | #E6DFD4 / 1.24 |
Accent pair at 8px
BRAND.md 6.3 requires the pair to stay distinguishable at the scoreboard bar height. Amber and quench differ by hue and by very little luminance (1.03:1 on stage), so the bar cannot rely on colour alone. The second bar shows the mitigation: a hard divider in the ground colour plus labelled ends.
Wordmark
Mark height drives every other dimension. Below 24px the type drops and the mark stands alone. At size 56 the lockup needs about 400px, which is wider than a 375px viewport minus gutters, so this row scrolls rather than clipping.
Type roles
Roles are tied to grounds: the serif only ever appears on paper.
The affirmative carries its burden on grid reliability but concedes the cost trajectory, which the ledger reflects rather than resolves.
Focus
Tab through these. The 2px outline is declared unlayered so a component shipping outline-none cannot remove it.