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.
Zero photographs, deliberately
There is no photograph of motion design. Days 101–103 each earned their images by having something a photograph could prove; this one does not, and a grid of stock laptops-and-coffee would be the page arguing against its own copy on the way past. The FAQ says so out loud rather than leaving the absence to be noticed. Everything visual here is drawn: the curve, the frame ruler, the favicon and the OG image.
This one IS a table
Day 103's ledger was a list because nobody compares festivals — you read down one column and count. This is a table because comparing rows is the entire point: the same sentence, six times, at six prices. The shape of the data decides the element, and answering that question fresh each day is the only thing keeping these templates apart.
The curve is drawn from the table
The step chart reads the same array the table renders, on a log scale — linear would
flatten the first four stages against 48 and hide the only part of the curve a client can
still act on. It is aria-hidden because the table beside it is the complete
text equivalent, and the caption states the scale so nobody reads a log chart as a linear
one.
Cost state is never only a colour
Every stage carries its hour count as a number and the words “Still open”, “Closing” or “Already paid for” in a bordered chip. The two cost tokens are the third signal and neither of them is the accent, because on a page about what a change costs, “expensive” must not be the same colour as a link.
Type
Schibsted Grotesk — display and body
Chivo Mono — 48 h · 00:04:12 · 1.5 h/sec
Hours, frame counts and timecode all have to align in columns, so the mono face is load-bearing rather than decorative. Neither appears in days 1–103.
Tokens
| Swatch | Token | Value | Measured |
|---|---|---|---|
--color-bg | #121016 | Violet-black viewport | |
--color-bg-alt | #1A1720 | Banding | |
--color-surface | #221E2A | Cards, the chart plate | |
--color-text | #EDEAF2 | 15.88 / 14.87 / 13.71:1 · AAA | |
--color-text-muted | #90839D | 5.33 / 4.99 / 4.60:1 · AA | |
--color-border | #71667D | 3.51 / 3.28 / 3.03 — non-text only | |
--color-accent | #B063F2 | Hue 272 — 5.32 / 4.98 / 4.59:1 · AA | |
--cost-cheap | #5FD08A | Still open — 9.79 / 9.16 / 8.45:1 | |
--cost-dear | #F4855F | Already paid for — 7.53 / 7.05 / 6.50:1 | |
--color-band | #EDEAF2 | The band inverts: light on a dark site | |
--color-on-band | #121016 | 15.88:1 on band · AAA | |
--color-on-band-muted | #5E536A | 6.04:1 on band · AA | |
--color-accent-on-band | #8B29E0 | 5.06: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.