one wordmark · six atmospheres
every primitive that consumes the role tokens retints when data-skin changes. the engine writes the skin; the floor wears it. acid leads the brand-canonical surfaces; amber leads the capital-markets parent body. neither is demoted.
six skins · the same surface
each panel below is scoped via data-skin. every primitive inside is identical to the others; only the skin attribute changes. the delta is the engine.
posture decides the skin
no operator picks a skin. the surface declares its posture and the engine resolves the skin. brand-canonical leads with acid; capital-markets leads with amber; ritual leads ceremony; refusal leads refuse.
| id | posture | surfaces · where it leads | brand-signal |
|---|---|---|---|
bloomberg | inheritance-canonical · amber-led · capital-markets parent body | floor · cockpit · journal · foundation · league | #e9aa47 |
ceremony | ritual · acid + magenta · drops, signing, settlement | /drops/<id> · /replay/<id> · /tier promotions | #edf800 |
midnight | operator-late · cobalt-led · low-light cockpit | after-hours cockpit · long-session · /studio late | #7ba9d6 |
refuse | halted · red-led · refusal posture | kill-switch · loss-floor · refused entries · /halt | #e08770 |
signature | brand-canonical · amber-led · the wordmark variant | brand · drops · signing · /tier upgrades | #d6a64a |
specimen | archive · monochrome · print/specimen-page | /v<n> archive · dossier print · spec sheets | #ebe5d4 |
brand · data · figure · ground
every skin declares the same four anchor roles. the rest of the palette derives from oklch ramps. inheritance is structural, not stylistic.
six files · one schema
every skin lives at packages/tokens/skins/<id>.contract.json. the schema is identical: id, label, posture, eight role oklch triples, derived ramps. the harmony gate validates each on every commit.
ci:skin-harmony checks AAA contrast on body roles, AA on indicator roles, and refuses any contract that slips. the picker above is the only canonical entry point for switching skins; setting data-skin by hand on any element scopes the change.