Triumph Green and Lime never set type on a light surface. Green lands near 2.8:1 on fog and Lime near 1.7:1, so both fail at any size. The status word stays navy and the colour is carried by the mark under it and the swatch in the legend.
Two shapes, not three. The legend swatch and a standalone .sw are the same 10px square, and the repeated .status-marks under a row are the 18 by 5 bar. Nothing else in the system carries a status colour.
| Right | Sent | Navy word, coloured marks. Reads at a glance and passes contrast. |
|---|---|---|
| Wrong | Scanned in Next up |
Banned. Green and Lime as type on fog. Both fail; the Lime line is close to invisible. |
Anything that renders per item has to degrade before it runs off the edge. A member with two seats and a member with ten get the same component; only the density changes.
| Items | In prose | As marks |
|---|---|---|
| 1 | Seat 10 | |
| 2 | Seat 10 and 11 | |
| 3 | Seat 10, 11, and 12 | |
| 6 | 6 seats | |
| 10 | 10 seats | one per distinct outcome |
Three thresholds. Prose lists up to three then switches to a count. Marks run one per item up to six then collapse to one per distinct outcome. Every wrapper that renders N children also gets flex-wrap and a width cap, so the fallback is a wrap and not an overflow.
Write the test. Assert 1, 2, 3, 6, and 10. The worked example in the Member Portal caught a missing serial comma inside its own fix.