Target
WCAG 2.1 Level AAacross all published pages. We do not claim certification. Where the site falls short of AA, it's listed under “Known gaps” below.
Keyboard navigation
- Tab and Shift+Tab move between focusable elements in document order.
- A skip-to-content link appears at the top of every page (hidden until focused) and jumps past navigation.
- Ctrl+K (or ⌘+K) opens the search dialog from anywhere.
- Inside the search dialog: ↑/↓ to navigate results, Enter to open, Escto close. Focus is trapped inside the dialog while it's open and returned to the trigger on close.
- Every interactive element has a visible focus ring.
Screen-reader testing
We test with the tooling below on every major layout change. Not every article is re-tested with each content update — we rely on the shared components being right.
- VoiceOver on macOS 14 and 15 with Safari
- NVDA 2024 on Windows 11 with Firefox and Edge
- axe DevTools (Chrome) — used for automated scans; findings are triaged into the corrections queue
Contrast
The design uses a warm cream background (#FBF8F1, “paper”) with body text near black (#1A1A1A, “ink”) — that pairing sits well above AA at ~15:1. Where we drop opacity for muted text, ratios narrow:
text-stone(~#7A716B) on paper: ~5.2:1 — passes AA for normal text, borderline for small text- Muted labels at 60% opacity on paper: ~4.5:1 — meets AA minimum, reviewed on a case-by-case basis
- White-on-image hero headline uses a dark overlay (via
rgba(26,26,26,0.55)gradient) plus a text drop-shadow so the effective contrast stays well above AA regardless of the photo behind - The vermillion accent (
#C8102E) on paper: 5.7:1 — used for links and CTAs; passes AA
Alt text
Every content photograph is required to carry an alt attribute at the data-layer (the ImageRef type in src/types) — the build fails before an image without alt reaches production. Alt text describes the image content, not the file name. Purely decorative graphics (seals, ornamental dividers) are marked aria-hidden.
Language attributes
The document root is set to lang=“en-GB”. Every Chinese-language phrase in prose or in a heading is wrapped in <span lang=“zh-Hans”> so screen readers switch voice correctly (or, on VoiceOver, apply the correct pronunciation profile if the Chinese voice pack is installed).
Motion and animation
The site uses minimal animation — hover-state colour transitions, a fade on the back-to-top button. All transitions honour prefers-reduced-motion. There are no auto-playing videos, no auto-scrolling carousels, no motion-driven parallax.
Video captions
The site does not currently ship any video content. When it does, video will carry captions (either burned-in or a synchronised WebVTT track) and a plain-text transcript.
Known gaps
- The cost calculator and multi-step wizards (e.g. the trip cost estimator, the WeChat Pay wizard) have not yet been through a full screen-reader pass — they work but the announcements for step transitions could be more concise
- Some editorial pages have long, unbroken tables of comparison data. We are moving those to structured lists over time
- The design uses a serif display font (Fraunces) at large sizes. Some readers with dyslexia may find sans-serif easier — a future preference toggle is on the roadmap
Reporting a barrier
If a page or interaction blocks you, tell us: the URL, what you tried to do, and what happened (or didn't). We treat accessibility reports as priority corrections.
Report an accessibility issue — the form routes directly to the editorial team, not a chatbot.
Governance
Accepted accessibility fixes appear in the corrections log. See also our methodology and editorial standards.