# Contrast audit

Generated by `node build/a11y.mjs`. Every pair is resolved through the token chain and composited
over its real backdrop, so translucent surfaces are measured at the colour they actually render, not
at their declared alpha.

Thresholds: 4.5 for body text (WCAG AA), 3.0 for large text, non-text UI and focus indicators.
Border and divider rows use a lower bar because they carry no information on their own — depth
ordering is what must survive, and that is checked in greyscale instead.

All 54 pairs pass.

| Theme | Foreground | Background | Ratio | Min | Result |
|---|---|---|---|---|---|
| dark | `--mpn-fg` | `--mpn-bg` | 16.60 | 4.5 | pass |
| dark | `--mpn-fg` | `--mpn-bg-raised` | 14.21 | 4.5 | pass |
| dark | `--mpn-fg` | `--mpn-bg-sunken` | 15.29 | 4.5 | pass |
| dark | `--mpn-fg` | `--mpn-bg-overlay` | 15.07 | 4.5 | pass |
| dark | `--mpn-fg-muted` | `--mpn-bg` | 7.34 | 4.5 | pass |
| dark | `--mpn-fg-muted` | `--mpn-bg-raised` | 6.29 | 4.5 | pass |
| dark | `--mpn-fg-faint` | `--mpn-bg` | 4.46 | 3.0 | pass |
| dark | `--mpn-fg-faint` | `--mpn-bg-raised` | 3.82 | 3.0 | pass |
| dark | `--mpn-accent` | `--mpn-bg` | 9.90 | 4.5 | pass |
| dark | `--mpn-accent` | `--mpn-bg-raised` | 8.48 | 4.5 | pass |
| dark | `--mpn-focus` | `--mpn-bg` | 10.92 | 3.0 | pass |
| dark | `--mpn-border-strong` | `--mpn-bg` | 3.02 | 3.0 | pass |
| dark | `--mpn-border-strong` | `--mpn-bg-raised` | 3.11 | 3.0 | pass |
| dark | `--mpn-line` | `--mpn-bg-raised` | 1.22 | 1.1 | pass |
| dark | `--mpn-ok` | `ok-tint on --mpn-bg` | 9.14 | 4.5 | pass |
| dark | `--mpn-ok` | `ok-tint on --mpn-bg-raised` | 7.40 | 4.5 | pass |
| dark | `--mpn-warn` | `warn-tint on --mpn-bg` | 9.52 | 4.5 | pass |
| dark | `--mpn-warn` | `warn-tint on --mpn-bg-raised` | 7.67 | 4.5 | pass |
| dark | `--mpn-danger` | `danger-tint on --mpn-bg` | 6.31 | 4.5 | pass |
| dark | `--mpn-danger` | `danger-tint on --mpn-bg-raised` | 5.18 | 4.5 | pass |
| dark | `--mpn-info` | `info-tint on --mpn-bg` | 7.62 | 4.5 | pass |
| dark | `--mpn-info` | `info-tint on --mpn-bg-raised` | 6.21 | 4.5 | pass |
| dark | `--mpn-pending` | `pending-tint on --mpn-bg` | 6.34 | 4.5 | pass |
| dark | `--mpn-pending` | `pending-tint on --mpn-bg-raised` | 5.19 | 4.5 | pass |
| dark | `--mpn-idle` | `idle-tint on --mpn-bg` | 6.60 | 4.5 | pass |
| dark | `--mpn-idle` | `idle-tint on --mpn-bg-raised` | 5.39 | 4.5 | pass |
| dark | `--mpn-fg-on-accent` | `--mpn-accent-solid` | 6.29 | 4.5 | pass |
| light | `--mpn-fg` | `--mpn-bg` | 15.46 | 4.5 | pass |
| light | `--mpn-fg` | `--mpn-bg-raised` | 16.37 | 4.5 | pass |
| light | `--mpn-fg` | `--mpn-bg-sunken` | 16.09 | 4.5 | pass |
| light | `--mpn-fg` | `--mpn-bg-overlay` | 16.57 | 4.5 | pass |
| light | `--mpn-fg-muted` | `--mpn-bg` | 5.41 | 4.5 | pass |
| light | `--mpn-fg-muted` | `--mpn-bg-raised` | 5.72 | 4.5 | pass |
| light | `--mpn-fg-faint` | `--mpn-bg` | 3.06 | 3.0 | pass |
| light | `--mpn-fg-faint` | `--mpn-bg-raised` | 3.24 | 3.0 | pass |
| light | `--mpn-accent` | `--mpn-bg` | 4.89 | 4.5 | pass |
| light | `--mpn-accent` | `--mpn-bg-raised` | 5.17 | 4.5 | pass |
| light | `--mpn-focus` | `--mpn-bg` | 3.40 | 3.0 | pass |
| light | `--mpn-border-strong` | `--mpn-bg` | 3.85 | 3.0 | pass |
| light | `--mpn-border-strong` | `--mpn-bg-raised` | 3.97 | 3.0 | pass |
| light | `--mpn-line` | `--mpn-bg-raised` | 1.16 | 1.1 | pass |
| light | `--mpn-ok` | `ok-tint on --mpn-bg` | 5.06 | 4.5 | pass |
| light | `--mpn-ok` | `ok-tint on --mpn-bg-raised` | 5.33 | 4.5 | pass |
| light | `--mpn-warn` | `warn-tint on --mpn-bg` | 5.63 | 4.5 | pass |
| light | `--mpn-warn` | `warn-tint on --mpn-bg-raised` | 5.94 | 4.5 | pass |
| light | `--mpn-danger` | `danger-tint on --mpn-bg` | 5.82 | 4.5 | pass |
| light | `--mpn-danger` | `danger-tint on --mpn-bg-raised` | 6.15 | 4.5 | pass |
| light | `--mpn-info` | `info-tint on --mpn-bg` | 6.34 | 4.5 | pass |
| light | `--mpn-info` | `info-tint on --mpn-bg-raised` | 6.69 | 4.5 | pass |
| light | `--mpn-pending` | `pending-tint on --mpn-bg` | 6.91 | 4.5 | pass |
| light | `--mpn-pending` | `pending-tint on --mpn-bg-raised` | 7.29 | 4.5 | pass |
| light | `--mpn-idle` | `idle-tint on --mpn-bg` | 5.92 | 4.5 | pass |
| light | `--mpn-idle` | `idle-tint on --mpn-bg-raised` | 6.25 | 4.5 | pass |
| light | `--mpn-fg-on-accent` | `--mpn-accent-solid` | 5.29 | 4.5 | pass |
