Reference
Design system
Every ratio was computed with tools/a11y/contrast.py against all three grounds.
This page is noindex: it documents the template for whoever builds with it.
Never performed is blue, not red
The catalogue's whole argument is that a small number of pieces travel and most do not, and that this is the shape of the field rather than a verdict. So the second state token is a cool blue marking the pieces that were played again, and an unperformed work simply takes the muted text colour. There is no red on this page, because there is nothing on it that is a failure. The count is a number first, the state is a word second, and colour is third.
The markup asserts less than the page
Three works have never been performed. They are on the page, with the reason, because a
catalogue that hides its failures is not a catalogue — but they are not emitted as
MusicComposition, because publishing a piece as a structured work with no
performance behind it asserts a public existence it does not yet have. Day 113 made the
same call about sold-out shows and day 114 about departed members: the page is for humans
and the markup is for machines, and they are allowed to say different true things.
Person, not MusicGroup
Days 113 and 114 were both MusicGroup, which is right for a performing act and
wrong for somebody whose output is scores other people play. This is a
Person with an Occupation and a workExample list
— the seventh schema shape in seven days, each chosen from what the page is.
No photographs
A score is not a photograph and a stock picture of a piano would be decoration on a page whose entire argument is specificity. The composer is also fictional, which rules out a portrait for the reason day 110 gave.
Type
Rosarivo — display
B612 Mono — 11′ · 2025 · 9 plays
Body is Alice. Durations, years and performance counts sit in columns that have to align. None of the three appears in days 1–114.
Tokens
| Swatch | Token | Value | Measured |
|---|---|---|---|
--color-bg | #161214 | Warm near-black | |
--color-bg-alt | #1E181A | Banding | |
--color-surface | #282022 | Cards | |
--color-text | #F0EAEC | 15.64 / 14.73 / 13.40:1 · AAA | |
--color-text-muted | #978488 | 5.28 / 4.97 / 4.52:1 · AA | |
--color-border | #79676B | 3.51 / 3.30 / 3.00 — non-text only | |
--color-accent | #DA627A | Hue 348 — 5.31 / 5.00 / 4.55:1 · AA | |
--again-yes | #349DB2 | Played again — 5.85 / 5.51 / 5.01:1 | |
--color-band | #F0EAEC | The band inverts: light on a dark site | |
--color-on-band | #161214 | 15.64:1 on band · AAA | |
--color-on-band-muted | #635457 | 6.02:1 on band · AA | |
--color-accent-on-band | #C62F4D | 4.52:1 on band · AA |
The border token clears 3:1 against all three grounds, which is what WCAG 1.4.11 asks of a non-text boundary. It is never used for text.