# Accessibility review Review date: 2026-08-01 ## Scope Player account management, administrator navigation, dashboard metrics and chart, user records, group management, event filtering, event details, forms, tables, and status notifications. ## Implemented checks and improvements - Added a keyboard-visible “Skip to main content” link and consistent high-visibility `:focus-visible` outlines. - Darkened the accent color so accent text reaches at least 4.5:1 contrast on both canvas and panel backgrounds. - Preserved reduced-motion behavior and disabled decorative cursor animation when requested. - Added labels or accessible names to search, Minecraft username, settings, group, and event-filter controls. - Added `fieldset` and `legend` semantics to multi-select event-type filters. - Added table captions, column scopes, and row scopes to administrator data tables. - Added `role=status` with polite announcements for successful nickname changes and `role=alert` with assertive announcements for errors. - Added semantic `time` elements for audit and security activity timestamps. - Made event JSON keyboard-focusable so horizontally overflowing content can be reviewed without a pointer. - Added an accessible title, description, per-point labels, and textual values to the registration chart. - Added explicit new-tab context to the external Discord invite link. - Kept destructive account and group actions behind native keyboard-operable `details` confirmation disclosures. - Allowed administrator navigation to wrap at narrow viewport widths instead of overflowing. ## Validation - ESLint with the Next.js ruleset passes. - Component rendering tests verify nickname status and error announcement roles and dismissal text. - The production build passes and reports database-backed player and administrator pages as dynamic server-rendered routes. - Color contrast was calculated for the canvas, panel, muted text, accent text, and signal combinations used by the interface. ## Follow-up Authenticated browser automation is still recommended in CI with axe-core and a test Keycloak realm. It should cover keyboard order, zoom to 200%, reflow at 320 CSS pixels, and screen-reader announcements against a running production build.