Accessibility
Version 2.2.0 · Updated: 2026-10-28 · Author: Mikhail Deynekin
Accessibility statement
iya.ru is built to be usable by everyone: keyboard-first navigation, honest focus states, sufficient contrast in both themes, right-to-left scripts and small screens are treated as requirements, not extras. This page says what we check, how we check it, and how to tell us when something is broken for you.
Status: partially conformant with WCAG 2.1 level AA (self-assessed). Last reviewed: 2026-10-21 (P20/R7).
What is verified on every release
The design pass (P13) fixed a set of invariants that every page must keep; automated smoke checks refuse a release that breaks them:
- Keyboard & focus. Every interactive control is reachable by
Tab;
:focus-visible outlines are part of the design tokens and never outline: none. Dropdown-style widgets (language switcher, theme toggle, the header search combobox) expose role, aria-expanded, aria-controls and arrow-key navigation.
- Contrast. Text and interactive colours come from the token palette;
both the light and the dark theme keep body text at or above 4.5:1 and large text at or above 3:1.
- Right-to-left. Arabic, Hebrew, Farsi and Urdu render with
dir="rtl";
layouts mirror through logical properties, and the RTL stylesheet is loaded before first paint.
- Viewport & zoom. Pages reflow down to 320 px wide without horizontal
scrolling of primary content; nothing breaks at 200 % zoom.
- Semantics. Landmarks (
header,nav,main,footer), oneh1
per page, lang on <html> for every one of the 42 active locales, alt text on informative images, decorative images marked aria-hidden="true".
- Motion & preference. Reduced-motion preferences are honoured for the
few animated surfaces (toasts, live feed); the colour theme follows prefers-color-scheme unless you choose otherwise.
How we test
- Automated smoke heuristics (
scripts/smoke_http.py, section
accessibility) fetch the live pages on every release drill and assert the invariants above: lang attribute present, every <img> carries alt, combobox/listbox widgets carry aria-expanded + aria-controls, this statement is reachable and linked from the footer.
- Unit guards. The PHP test suite asserts locale/catalogue integrity
(42 locales, placeholder QA) and the RTL/viewport CSS contracts.
- Manual checklist. Keyboard-only walkthrough of register → dashboard →
link editor → analytics, once per phase, in en and one RTL locale.
We do not yet run a screen-reader matrix on every release; NVDA/VoiceOver spot checks happen per major phase. That is the honest gap behind "partially conformant".
Known limitations
- Data tables in analytics (visits, reports) rely on table semantics only;
sortable headers are a progressive enhancement, not announced as a widget.
- The QR-code preview image carries a descriptive
alt, but the encoded
payload itself is, of course, not machine-audible.
- Third-party content embedded by link owners (
iframeactions) is outside
our control; we label such links in the dashboard.
Feedback
If any part of iya.ru is hard or impossible to use with your assistive technology, tell us — accessibility reports jump the queue:
- Email: icons@Deynekin.com (subject line starting with
a11y:is
triaged first)
- Security-adjacent access problems: see
/security.txt - Agents and automated reporters:
POST /api/v1/contrib/…is not the
channel for this — email is.
We aim to answer within two working days and to ship a fix or a workaround in the next release window.