Доступность и управление интерфейсом
Web-интерфейс raytsystem поддерживает мышь, single-pointer touch и keyboard-only работу. Доступные названия, состояния и связи строятся на native HTML; ARIA добавляется для tabs, tree, menu, dialog, alertdialog, status и alert.
Клавиатура
TabиShift+Tabперемещаются по действиям в логичном порядке.- Tabs используют
←/→,HomeиEnd. - Меню задач использует
↑/↓,Home,End,Enter/SpaceиEscape. - Дерево документов использует стрелки,
Home,End,EnterиSpace. Cmd/Ctrl+Kоткрывает палитру; внутри editor используетсяCmd/Ctrl+Shift+P.- Skip link переводит к
main; после смены маршрута focus перемещается в основной scroll-region. - Canvas графа имеет равнозначное табличное представление «Список».
Focus и target size
Focus-visible обозначается контрастным контуром 2 CSS px и дополнительным halo. В forced-colors используется системный Highlight. Минимальный target — 24×24 CSS px; на coarse-pointer основные controls, icon buttons и строки дерева увеличиваются до 44×44.
Dialogs и сохранность данных
Modal dialogs блокируют фон через inert, удерживают focus, блокируют background scroll и возвращают focus к trigger. Безопасные read-only окна закрываются по Escape и backdrop. Dirty forms сначала показывают «Закрыть без сохранения?». Conflict, restore, destructive и security-sensitive окна не закрываются простым нажатием backdrop; во время async commit закрытие и повторная отправка блокируются.
Темы, reflow и движение
Поддерживаются dark, light и high-contrast темы, forced-colors, 320 CSS px и эквивалент 200% zoom. При prefers-reduced-motion: reduce отключаются decorative motion, smooth scrolling и бесконечное вращение; текстовые loading/status сообщения остаются.
Автоматическая и ручная проверка
npm --prefix web run test:a11y запускает axe-core в Chromium по всем маршрутам и трём темам. Layout browser suite проверяет desktop, tablet, mobile, 320 px и zoom equivalents. Эти проверки дополняют, но не заменяют ручной keyboard, focus, touch и screen-reader semantics review.