iya.ru
Theme
Sign in Sign up

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), one h1

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

  1. 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.

  1. Unit guards. The PHP test suite asserts locale/catalogue integrity

(42 locales, placeholder QA) and the RTL/viewport CSS contracts.

  1. 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 (iframe actions) 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.