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.
| Right | Sent | Navy word, coloured marks. Reads at a glance and passes contrast. |
|---|---|---|
| Wrong | Scanned in Next up |
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.