# Contrast report

Written by `python3 tools/contrast.py` from `brand/tokens/tokens.json`. WCAG 2.x contrast ratio. Text 4.5:1, UI and graphics 3:1. Logos are exempt from WCAG contrast, but the spark is still held to 3:1 on every stop of its tile.

| Surface | Kind | Foreground | Background | Ratio | Target | Result |
| --- | --- | --- | --- | --- | --- | --- |
| night | text | `ink` #F5F3FC | `bg` #0B0A17 | 17.86:1 | 4.5:1 | pass |
| night | text | `text` #CAC7DE | `bg` #0B0A17 | 11.90:1 | 4.5:1 | pass |
| night | text | `muted` #A29EBD | `bg` #0B0A17 | 7.63:1 | 4.5:1 | pass |
| night | text | `ink` #F5F3FC | `bg-raised` #141329 | 16.55:1 | 4.5:1 | pass |
| night | text | `text` #CAC7DE | `bg-raised` #141329 | 11.03:1 | 4.5:1 | pass |
| night | text | `muted` #A29EBD | `bg-raised` #141329 | 7.07:1 | 4.5:1 | pass |
| night | text | `muted` #A29EBD | `bg-hover` #1D1B38 | 6.45:1 | 4.5:1 | pass |
| night | text | `link` #D6C4FF | `bg` #0B0A17 | 12.34:1 | 4.5:1 | pass |
| night | text | `link` #D6C4FF | `bg-raised` #141329 | 11.43:1 | 4.5:1 | pass |
| night | text | `on-action` #160C33 | `action` #CDB6FF | 10.34:1 | 4.5:1 | pass |
| night | text | `human` #F4C552 | `bg` #0B0A17 | 12.11:1 | 4.5:1 | pass |
| night | text | `human` #F4C552 | `bg-raised` #141329 | 11.22:1 | 4.5:1 | pass |
| night | text | `pass` #4AD9A2 | `bg` #0B0A17 | 10.97:1 | 4.5:1 | pass |
| night | text | `pass` #4AD9A2 | `bg-raised` #141329 | 10.16:1 | 4.5:1 | pass |
| night | text | `fail` #FF7A90 | `bg` #0B0A17 | 7.89:1 | 4.5:1 | pass |
| night | text | `fail` #FF7A90 | `bg-raised` #141329 | 7.31:1 | 4.5:1 | pass |
| night | text | `on-paper` #1D1930 | `paper` #FBF5E4 | 15.63:1 | 4.5:1 | pass |
| night | text | `on-paper-muted` #5A5470 | `paper` #FBF5E4 | 6.57:1 | 4.5:1 | pass |
| night | ui | `line-strong` #6B6799 | `bg` #0B0A17 | 3.76:1 | 3.0:1 | pass |
| night | ui | `line-strong` #6B6799 | `bg-raised` #141329 | 3.49:1 | 3.0:1 | pass |
| night | ui | `focus` #E5D9FF | `bg` #0B0A17 | 14.67:1 | 3.0:1 | pass |
| night | ui | `action` #CDB6FF | `bg` #0B0A17 | 10.96:1 | 3.0:1 | pass |
| night | ui | `ai-1` #9440FF | `bg` #0B0A17 | 4.15:1 | 3.0:1 | pass |
| night | ui | `ai-3` #F2825A | `bg` #0B0A17 | 7.59:1 | 3.0:1 | pass |
| night | ui | `human` #F4C552 | `bg` #0B0A17 | 12.11:1 | 3.0:1 | pass |
| night | ui | `pass` #4AD9A2 | `bg` #0B0A17 | 10.97:1 | 3.0:1 | pass |
| day | text | `ink` #13112A | `bg` #F7F6FB | 17.11:1 | 4.5:1 | pass |
| day | text | `text` #3A3755 | `bg` #F7F6FB | 10.51:1 | 4.5:1 | pass |
| day | text | `muted` #5E5A7A | `bg` #F7F6FB | 6.07:1 | 4.5:1 | pass |
| day | text | `ink` #13112A | `bg-raised` #FFFFFF | 18.40:1 | 4.5:1 | pass |
| day | text | `text` #3A3755 | `bg-raised` #FFFFFF | 11.31:1 | 4.5:1 | pass |
| day | text | `muted` #5E5A7A | `bg-raised` #FFFFFF | 6.52:1 | 4.5:1 | pass |
| day | text | `muted` #5E5A7A | `bg-hover` #E9E6F4 | 5.31:1 | 4.5:1 | pass |
| day | text | `link` #5A10C4 | `bg` #F7F6FB | 8.47:1 | 4.5:1 | pass |
| day | text | `link` #5A10C4 | `bg-raised` #FFFFFF | 9.11:1 | 4.5:1 | pass |
| day | text | `on-action` #FFFFFF | `action` #5A10C4 | 9.11:1 | 4.5:1 | pass |
| day | text | `human` #8A6200 | `bg` #F7F6FB | 5.10:1 | 4.5:1 | pass |
| day | text | `human` #8A6200 | `bg-raised` #FFFFFF | 5.49:1 | 4.5:1 | pass |
| day | text | `pass` #0B7A50 | `bg` #F7F6FB | 4.99:1 | 4.5:1 | pass |
| day | text | `pass` #0B7A50 | `bg-raised` #FFFFFF | 5.37:1 | 4.5:1 | pass |
| day | text | `fail` #B4233F | `bg` #F7F6FB | 6.00:1 | 4.5:1 | pass |
| day | text | `fail` #B4233F | `bg-raised` #FFFFFF | 6.46:1 | 4.5:1 | pass |
| day | text | `on-paper` #1D1930 | `paper` #FBF5E4 | 15.63:1 | 4.5:1 | pass |
| day | text | `on-paper-muted` #5A5470 | `paper` #FBF5E4 | 6.57:1 | 4.5:1 | pass |
| day | ui | `line-strong` #8A86A6 | `bg` #F7F6FB | 3.23:1 | 3.0:1 | pass |
| day | ui | `line-strong` #8A86A6 | `bg-raised` #FFFFFF | 3.48:1 | 3.0:1 | pass |
| day | ui | `focus` #5A10C4 | `bg` #F7F6FB | 8.47:1 | 3.0:1 | pass |
| day | ui | `action` #5A10C4 | `bg` #F7F6FB | 8.47:1 | 3.0:1 | pass |
| day | ui | `ai-1` #7500CF | `bg` #F7F6FB | 7.35:1 | 3.0:1 | pass |
| day | ui | `ai-3` #D0603A | `bg` #F7F6FB | 3.61:1 | 3.0:1 | pass |
| day | ui | `human` #8A6200 | `bg` #F7F6FB | 5.10:1 | 3.0:1 | pass |
| day | ui | `pass` #0B7A50 | `bg` #F7F6FB | 4.99:1 | 3.0:1 | pass |
| mark | graphic | spark #FFFFFF | `tile-1` #7A0BDD | 7.19:1 | 3.0:1 | pass |
| mark | graphic | spark #FFFFFF | `tile-2` #B23A9A | 5.30:1 | 3.0:1 | pass |
| mark | graphic | spark #FFFFFF | `tile-3` #E0663E | 3.42:1 | 3.0:1 | pass |
| mark | tile edge (info) | `tile-1` #7A0BDD | night bg #0B0A17 | 2.73:1 | logo, exempt | info |
| mark | tile edge (info) | `tile-3` #E0663E | night bg #0B0A17 | 5.74:1 | logo, exempt | info |
| mark | tile edge (info) | `tile-1` #7A0BDD | day bg #F7F6FB | 6.69:1 | logo, exempt | info |
| mark | tile edge (info) | `tile-3` #E0663E | day bg #F7F6FB | 3.18:1 | logo, exempt | info |

**All 55 measured pairs pass.**
