From a9877b1d1d44bc09cdf0a48d18bf1b0e18457b99 Mon Sep 17 00:00:00 2001 From: Pontoporeia Date: Thu, 26 Mar 2026 23:04:21 +0100 Subject: [PATCH] =?UTF-8?q?docs:=20accessibility=20audit=20=E2=80=94=20add?= =?UTF-8?q?=20WCAG=202.1=20AA=20analysis=20to=20TODO.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Measured contrast ratios, traced every interactive element, checked all four WCAG principles across public and admin surfaces. Current state confirmed: zero ARIA attributes, zero skip links, zero focus-visible styles, zero prefers-reduced-motion guards in the live codebase. Key failures by criterion: 1.1.1: TFE file images use raw filename as alt; search bar SVG not aria-hidden; jury remove buttons have no accessible name (bare ✕) 1.3.1: TFE metadata is div/span soup with no programmatic label-value association; search filter selects have no associated label; checkbox groups need fieldset/legend 1.4.1: Status badges distinguish state by colour only; active nav link has no non-colour indicator and its CSS class has no rule at all 1.4.3 (measured failures): - Nav links at opacity:0.92 on purple: 4.05:1 (fails AA 4.5:1) - filter-info purple text on purple-light bg: 4.08:1 (fails AA) - Placeholder #aaa on white: 2.32:1 (fails AA) - Gradient cards: white text on L=65% HSL — every warm hue fails AA, some as low as 1.46:1 (yellow). Only blue/indigo hues pass. - admin-text-muted #888 on bg-alt #242424: 4.38:1 (fails AA) - admin-purple on dark bg: 3.57:1 (fails for normal text size) 1.4.10: Répertoire 4-column grid has no mobile breakpoint 1.4.11: Search select border #ddd on white: 1.6:1; admin input border: 1.8:1 2.1.1: Disabled pagination links have pointer-events:none but remain keyboard-focusable 2.4.1: No skip-to-main link anywhere in the site 2.4.4: Pagination arrows (« ‹ › ») have no aria-label 2.4.6: tfe.php h1=author h2=title is inverted; index/search have no h1 at all 2.4.7: No :focus-visible defined anywhere; outline:none suppresses browser default on search input with no replacement 3.1.1: 429 response has no lang attribute 3.3.1: Form errors not announced as live regions; no autofocus on invalid field 3.3.2: Search input has no label, only placeholder 4.1.1: pages-edit.php has in 4.1.2: