Accessibility
This site is built to be readable and operable by everyone. The target is WCAG 2.2 AA, and conformance is measured.
What that means in practice:
- Contrast is measured, and the build enforces it. Every text and control colour is checked against the AA thresholds (4.5:1 for text, 3:1 for interactive borders) each time the site is generated; the build fails rather than ship a failing pair. The current measurements are published below.
- Dark and light themes. The switch sits at the top and bottom of every page (on a phone, in the menu and the footer) and the choice is remembered on this device.
- Full keyboard operation. Everything reachable by tab, a visible focus outline throughout, and a skip-to-content link as the first stop on every page.
- Motion respects your settings. The one animation on the site is disabled when your system asks for reduced motion.
- Structure a screen reader can use. Landmarks, one heading order, labels on every form field, text alternatives for every graphic that carries information.
- Four languages. English, Portuguese, Spanish and Chinese, switchable at the top and bottom of every page. Not a WCAG requirement — a hospitality one.
- No overlay widgets. Accessibility is built into the pages themselves.
The arithmetic, published
These are the colour pairs this site renders, measured at build time from the design tokens. WCAG AA requires 4.5:1 for text and 3:1 for the borders that identify a control. The build refuses to publish if any row falls below its threshold — so this table is true of the page you are reading.
| Sample | Pair | Theme | Measured | Threshold |
|---|---|---|---|---|
--ink / --ground | light | 17.91:1 | 4.5:1 · pass | |
--ink-soft / --ground | light | 9.37:1 | 4.5:1 · pass | |
--ink-faint / --ground | light | 4.91:1 | 4.5:1 · pass | |
--brass / --ground | light | 5.36:1 | 4.5:1 · pass | |
--ink / --surface | light | 16.18:1 | 4.5:1 · pass | |
--ink-soft / --surface | light | 8.46:1 | 4.5:1 · pass | |
--ground / --brass | light | 5.36:1 | 4.5:1 · pass | |
--ink / --track | light | 13.90:1 | 4.5:1 · pass | |
--control / --ground | light | 3.66:1 | 3.0:1 · pass | |
--control / --surface | light | 3.31:1 | 3.0:1 · pass | |
--ink / --ground | dark | 17.91:1 | 4.5:1 · pass | |
--ink-soft / --ground | dark | 7.02:1 | 4.5:1 · pass | |
--ink-faint / --ground | dark | 4.83:1 | 4.5:1 · pass | |
--brass / --ground | dark | 4.75:1 | 4.5:1 · pass | |
--ink / --surface | dark | 16.44:1 | 4.5:1 · pass | |
--ink-soft / --surface | dark | 6.44:1 | 4.5:1 · pass | |
--ground / --brass | dark | 4.75:1 | 4.5:1 · pass | |
--ink / --track | dark | 14.47:1 | 4.5:1 · pass | |
--control / --ground | dark | 3.41:1 | 3.0:1 · pass | |
--control / --surface | dark | 3.13:1 | 3.0:1 · pass |
What the measurement changed
On 23 August 2026 the palette was measured for the first time and three failures were corrected: the caption grey on the dark theme sat at 3.33:1 (#6E6A64) and was lifted to 4.83:1 (#8A847B); the same grey on the light theme sat at 4.25:1 (#807A72) and was deepened to 4.91:1 (#767066); and form fields had no 3:1 boundary, so a dedicated border colour was introduced in both themes. The brand's brass passed on both grounds unchanged.
If any part of this site is hard for you to use, that is a defect: write to torsten@8020.kitchen or use the enquiry form and it will be fixed.
Statement reviewed 26 August 2026.