Accessibility and content
Measured color contrast
Computed source pairings, with failures separated from passing text roles.
On this page
Method
Ratios are calculated from sRGB relative luminance after compositing alpha against the documented background. Thresholds use unrounded values: 4.5:1 for normal text, 3:1 for large text and essential non-text boundaries. The audit is a targeted token/pairing assessment, not a full WCAG conformance evaluation.
Measured pairings
| Scope | Pairing | Ratio | Normal text ≥4.5 | Large text / non-text ≥3 |
|---|---|---|---|---|
| app / light | foreground on background | 15.09:1 | Pass | Pass |
| app / light | foreground-muted on background | 5.27:1 | Pass | Pass |
| app / light | focus on background | 4.65:1 | Pass | Pass |
| app / light | border against background | 1.24:1 | Fail | Fail |
| app / light | foreground on background-max | 16.03:1 | Pass | Pass |
| app / light | foreground-muted on background-max | 5.61:1 | Pass | Pass |
| app / light | focus on background-max | 4.94:1 | Pass | Pass |
| app / light | border against background-max | 1.32:1 | Fail | Fail |
| app / dark | foreground on background | 15.49:1 | Pass | Pass |
| app / dark | foreground-muted on background | 8.56:1 | Pass | Pass |
| app / dark | focus on background | 10.06:1 | Pass | Pass |
| app / dark | border against background | 1.64:1 | Fail | Fail |
| app / dark | foreground on background-max | 14.57:1 | Pass | Pass |
| app / dark | foreground-muted on background-max | 8.06:1 | Pass | Pass |
| app / dark | focus on background-max | 9.47:1 | Pass | Pass |
| app / dark | border against background-max | 1.54:1 | Fail | Fail |
| app / light | Turquoise primary label | 8.67:1 | Pass | Pass |
| app / light | Save button label | 16.03:1 | Pass | Pass |
| app / light | Review submit label on gold | 9.85:1 | Pass | Pass |
| app / light | Authentication error on surface | 6.57:1 | Pass | Pass |
| app / dark | Turquoise primary label | 8.67:1 | Pass | Pass |
| app / dark | Save button label | 14.57:1 | Pass | Pass |
| app / dark | Review submit label on gold | 1.43:1 | Fail | Fail |
| app / dark | Authentication error on surface | 9.12:1 | Pass | Pass |
| marketing / light | foreground on canvas | 15.54:1 | Pass | Pass |
| marketing / light | foreground-muted on canvas | 3.2:1 | Fail | Pass |
Findings to retain
- Dark review action: foreground #eef1e9 on gold #F5C451 measures 1.43:1. The source button is shown faithfully and remains a finding.
- Marketing muted text on #FAF7EC measures 3.20:1: adequate only for qualifying large text, not ordinary small text.
- Quiet app borders are below 3:1 against neighboring surfaces. They cannot be the sole visible cue for an essential control boundary.
- Passing token pairs do not establish passing contrast for every image, opacity, hover state, or provider logo.
Source references
| File | Responsibility |
|---|---|
| src/app/globals.css | App colors |
| marketing/src/app/globals.css | Marketing alpha text |
| src/components/courses-public/logged-in/PrivateCourseView.tsx | Gold review action |
Interface examples
Native TeachKit interfaces with fictional course, account, and learner records. Service responses and media are isolated demonstrations; no customer data or live changes. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-22 · Revision 903bbf05ca9d · Documentation v2.0.0