Refrain Recurna

This site follows your system settings for colour scheme and reduced motion on its own. The buttons let you see the other side without changing them.

Evidence

Contrast, measured

Every ratio below was computed while this page was built, by the same engine that gates the system in continuous integration. 19 of 19 pairs clear the 4.5:1 floor for normal text in both themes — and a pair that stopped clearing it would fail the build rather than quietly appear here.

How the pairs are chosen

The system names a foreground for a surface by suffix: a token ending in -foreground is the text colour for the token it shares a stem with. Pairs are derived from that convention rather than listed, so a new foreground token is measured the moment it exists — there is no list to remember to update.

Deriving pairs mechanically is honest but not sufficient, because the convention has two kinds of exception, and both matter more than the rule.

Some foregrounds sit on a gradient, not on their stem

A family that declares gradient stops paints its text on the gradient. Measured against the solid accent that shares the stem instead, several families appear to fail by a wide margin — while the composition a reader actually sees clears the floor comfortably. Those pairs are measured against both stops, and reported at the worse of the two.

Some foregrounds are text colours, not surfaces

The destructive token is a text and icon colour. A filled destructive control paints a separate surface token, and that is the pairing measured here. Pairing the text colour with itself would report a ratio for something nobody ever renders.

Translucent text is composited before it is measured

Where text sits on a wash of its own hue, the effective background is the composite of the wash over the surface beneath — not either token alone. Measuring against the bare surface would overstate the ratio, which is the failure this system's -on-tint tokens exist to prevent.

Measured pairs

Measured contrast ratios for every foreground and surface pair the token set declares
Foreground Measured against Light Dark Floor Result
--accent-foreground --accent 15.99 16.44 4.5 Passes AA
--foreground --background 18.60 19.93 4.5 Passes AA
--card-foreground --card 20.32 18.48 4.5 Passes AA
--destructive-foreground --destructive-surface 4.86 7.59 4.5 Passes AA
--domain-catalog-foreground --domain-catalog-from → --domain-catalog-to 4.94 4.94 4.5 Passes AA
--domain-list-foreground --domain-list-from → --domain-list-to 5.04 5.04 4.5 Passes AA
--domain-more-foreground --domain-more-from → --domain-more-to 5.13 5.13 4.5 Passes AA
--domain-pantry-foreground --domain-pantry-from → --domain-pantry-to 5.09 5.09 4.5 Passes AA
--domain-trips-foreground --domain-trips-from → --domain-trips-to 4.98 4.98 4.5 Passes AA
--fab-addtrip-foreground --fab-addtrip-from → --fab-addtrip-to 5.15 5.15 4.5 Passes AA
--muted-foreground --muted 4.75 5.18 4.5 Passes AA
--popover-foreground --popover 20.32 18.48 4.5 Passes AA
--primary-foreground --primary 5.62 5.04 4.5 Passes AA
--secondary-foreground --secondary 16.02 18.11 4.5 Passes AA
--sidebar-foreground --sidebar 17.02 19.40 4.5 Passes AA
--sidebar-accent-foreground --sidebar-accent 15.10 16.44 4.5 Passes AA
--sidebar-primary-foreground --sidebar-primary 5.62 5.04 4.5 Passes AA
--success-foreground --success 6.65 8.88 4.5 Passes AA
--warning-foreground --warning 6.12 11.51 4.5 Passes AA

Pairs this table does not measure

The naming convention produces some pairings that are never rendered, and one that is held below the floor on purpose. Listing them is the difference between a stated exception and a quiet omission.

--text-disabled on --background
Disabled control text is exempt from WCAG 1.4.3, which does not apply to inactive user-interface components. Held below the floor deliberately so that disabled reads as disabled.