Two surfaces, one question: how does a primary line separate from what follows it — by weight, by tint, or both? Every variant below is built from tokens that already exist. Nothing here invents a value.
The whole budget. There is exactly one tint that is safe for prose — every other colour token fails contrast as body text.
| token | web | desktop | specimen | used in the navigator for |
|---|---|---|---|---|
| --bn-text-micro | 9.6px | 10px | Don Norman | thumb glyph, badge — never prose |
| --bn-text-badge | 11.5px | 11px | Don Norman | panel subtitle |
| --bn-text-caption | 12px | 12px | Don Norman | row second line |
| --bn-text-label | 13px | 13px | Don Norman | row title, section heading |
| --bn-text-body | 15px | 15px | Don Norman | — |
| weight | value | specimen | currently means |
|---|---|---|---|
| --bn-weight-light | 370 | The Design of Everyday Things | nav row titles |
| --bn-weight-normal | 420 | The Design of Everyday Things | body, descriptions |
| --bn-weight-emphasis | 490 | The Design of Everyday Things | headings, labels |
| --bn-weight-starred | 520 | The Design of Everyday Things | starred quotes (+ signal elaboration, borrowed) |
| --bn-weight-strong | 700 | The Design of Everyday Things | page title, destructive glyphs |
| colour | light | dark | contrast on bg | usable as prose? |
|---|---|---|---|---|
| --bn-colour-text | #1a1a1a | #e5e7eb | 17.4 : 1 / 15.3 : 1 | yes — the primary |
| --bn-colour-muted | #6b7280 | #9ca3af | 4.83 : 1 / 7.44 : 1 | yes — passes AA |
| --bn-colour-icon-idle | #c9ccd1 | #595959 | 1.6 : 1 | no — fails badly |
| --bn-colour-starred | #999 | #ccc | 2.8 : 1 | no — fails AA |
Settled 31 Aug 2026 — A for the paragraph, 6 for the navigator. Shipped as atoms/lead-paragraph.css (.bn-lead-para, consumed by .pg-desc and .signal-elaboration) and .v2-nav-provenance. Both link back here. Change a value there, but decide it here.
Same text in every cell — the Norman description that reads "good but too long". The question is which treatment gives it a rank without shortening it.
A · pure tint is Apple's own treatment on apple.com/os/macos. B · pure weight is what our signal cards ship today (.signal-elaboration strong → --bn-weight-starred, same colour throughout).
Watch what happens at a glance rather than up close: with pure weight the two ranks read as one paragraph containing an emphasised phrase; with tint they read as a claim and its supporting detail. Weight says "this word matters"; colour says "this part is subordinate".
The same construct one level down. The row title is the claim; the author is what follows it.
The system already answered this once. The Sessions navigator has the identical two-line row — .session-entry-name over .session-entry-date — and sets the second line at --bn-text-caption (12px), --bn-colour-muted, with no weight change and a 1px stack gap. That is variant 2.
Codebook v2 currently ships variant 1: --bn-text-micro (9.6px), --bn-weight-emphasis, full-strength ink, gap 0. That is two stops below the system's second-line size, at a stop the navigator otherwise uses only for a thumbnail glyph and a badge — never for words. The heavier weight was deliberate (a person's name is the point), but it is doing the work at a size that fights it.
Drive the paragraph and the nav row from the same controls, so a decision can be judged on both surfaces at once.
The tint axis is binary.
--bn-colour-mutedis the only non-primary text colour that clears 4.5:1 in both schemes, so "a tint" can only ever mean muted. There is no lighter-still option to reach for, and inventing one would need a new contract token in every palette.The weight axis has three usable stops between light and strong — but
emphasisandstarredare both already spoken for (headings/labels, and starred quotes). Anything you pick here is a fourth meaning riding on an existing value.