Hue in this system means one thing: what we know, and how well.
Nothing is colored because it looked nice. The deck already committed to a cool, near-black ground with a cream-free paper, an ochre accent, and a teal accent. What follows formalizes it and assigns hue to epistemic status rather than to decoration.
Ground and paper
Cool, never cream — cream signals archive; Downstream is about a record still being written.
Text tokens
Ratios measured against --paper #F4F6FB and --ink #0B1220. Everything labeled for body copy clears WCAG AA at any size.
| Token | Hex | On | Ratio | Use | Sample |
|---|---|---|---|---|---|
| --text | #0B1220 | paper | 17.3:1 | Headlines, table keys, anything primary. | Aa |
| --text-body | #4A5872 | paper | 6.6:1 | Body copy. Use this, not --slate, at 14px and below. | Aa |
| --slate | #5C6B87 | paper | 5.0:1 | Secondary copy at 15px+. | Aa |
| --quiet | #6E7E9C | paper | 3.8:1 | Non-text only — hairline labels, icon strokes, disabled. Never body copy. | Aa |
| --text-d | #93A3C0 | ink | 7.4:1 | Body copy on dark. | Aa |
| --quiet-d | #67769A | ink | 3.1:1 | Non-text only on dark. | Aa |
Status — the semantic core
Five states, drawn from ImplementationStatus in the scorecard spec and the chip.obs / chip.pend pattern in the deck.
| Status | Meaning | Chip (on paper) | Chip (on ink) | Shape |
|---|---|---|---|---|
| ● OBSERVED | Happened, and we can cite the document. Met, final rule issued, resolved. | ● OBSERVED | ● OBSERVED | ● filled dot |
| ○ PENDING | Not yet due, or due and still open. The unpriced middle of the chain. | ○ PENDING | ○ PENDING | ○ hollow dot |
| ✕ MISSED | Deadline passed with no qualifying action. Vacated, remanded, lapsed. | ✕ MISSED | ✕ MISSED | ✕ cross |
| – SILENT | No observable action of any kind. Not a gap — a finding. | – SILENT | – SILENT | – dash |
| ◇ STRUCK | Removed, stripped, failed — and therefore a candidate to resurface. | ◇ STRUCK | ◇ STRUCK | ◇ hollow diamond |
Rule 1 — color is never the only channel
Every status carries the mono token, the shape glyph, or both. Ochre and oxide converge under protanopia. A screenshot of a Downstream table should be readable as data in grayscale:
Rule 2 — #D9962B is a marking color, not text on light
It clears 2.3:1 against paper — well under AA. Use #8A5B0E for ochre text on paper.
Wrong: #D9962B text on paper
Right: #8A5B0E text on paper
Rule 3 — contingent_unfunded gets no sixth hue
It renders as Pending with a 45° hatch — pending, but blocked upstream. A texture on pending, not a new color:
What has no color
Layer 1 facts render achromatic — ink, slate, rule. Layer 2 forecasts may carry status color. A card that has picked up a hue is a card that has picked up a model claim, and someone should notice.
§ 71101(a)(2) requires a rule within 180 days of enactment.
No hue. Achromatic on purpose.
P(final rule issued by day 180) — ○ PENDING
Carries status hue. This is a model claim, and it looks like one.
Reserved
- Ochre is also the interface accent — eyebrows, active nav, focus rings, numerals in circles. It is the color of attention, which is consistent with it also being the color of unresolved. Don't add a second accent.
- No gradients on data. Gradient is permitted in exactly one place: atmospheric orb shapes on dark cover surfaces, at ≤6% luminance separation. Never behind a number.
- No red-green pairing for good/bad. Teal/ochre is the pair, and it means known/unknown rather than good/bad. Downstream does not grade policy outcomes as good or bad; it grades whether they happened.