What's actually in place, what isn't, and how to reach us.
This page describes the real state of accessibility on gilberthq.com as of the date below — not a compliance claim. No formal WCAG audit has been performed. This is a best-effort account based on what was actually checked in the code.
What's in place
- All interactive elements are native links (<a>) — no click-only <div>s, so keyboard and screen-reader navigation works by default
- Every page declares lang="en" and a real viewport meta tag, including safe-area support for notched phones
- Icons across the site are Unicode glyphs rather than images, so there is almost no alt text to get wrong. The one exception is Gilbert's avatar on the chat page, which is decorative and carries an empty alt attribute so screen readers skip it
- Text contrast was measured, not assumed: primary text is 18.6:1 against the background and secondary/muted text is 7.9:1 — both clear WCAG AAA
- Layout is responsive down to phone width and doesn't rely on hover-only interactions
Known gaps
- One low-contrast color (a faint gray, ~3.4:1) is used for a small decorative arrow glyph on homepage widgets — below the 4.5:1 body-text threshold, though it's not used for body copy
- No screen-reader has been run end-to-end against the live-data widgets (Fantasy, The Book, Watchtower) — they're built from plain HTML and JS fetch calls but haven't been manually tested with VoiceOver/NVDA
- No formal WCAG 2.1 audit — the checks above are real but partial, not a certified pass
Gilbert's Arcade (/games)
The arcade was built to its own accessibility rules and checked separately, because 27 games share one design system and a mistake there repeats 27 times. What was actually measured or exercised:
- Text contrast was measured against both background tones the arcade uses, not estimated: primary text 18.6:1, body 12.2:1, secondary 7.9:1, and the faintest text 4.8:1. The faint grey was specifically lightened from the hub's value (3.4:1, below the 4.5:1 body threshold) because in the arcade it carries real copy
- All 27 per-game accent colours were measured as marquee text — the lowest is 5.1:1, all clear WCAG AA
- No game uses colour as the only signal. Mastermind's pegs carry distinct shapes, Minesweeper's numbers vary by weight and underline, Picross fill-vs-mark differ by glyph, card suits differ by shape, and lit/unlit states carry a marker
- Every game is playable end to end with a keyboard, not just with touch — arrow-key cursors, Enter to act, Escape to pause
- Every game announces score and state changes through an aria-live region
- Controls are real <button> elements with accessible names and a visible focus ring; touch targets are 44px, verified automatically at six screen sizes in both orientations
- prefers-reduced-motion is honoured globally and in every JS-driven animation: transitions, the launch transition, dice tumbles, card flips and board perspective all switch off
- forced-colors (Windows High Contrast) is handled — decorative depth and glow are dropped rather than left to obscure content
- Nothing in the arcade contacts the network at any point, so nothing degrades or hangs on a slow connection
Known gaps in the arcade
- No screen reader has been run end to end against the games. The markup and live regions are built for it, but VoiceOver and NVDA have not been manually tested — this is the largest untested area
- Several games are inherently spatial (Picross, Flow, Sokoban, Battleship, Frontline). They are keyboard-operable, but they would be genuinely demanding without sight, and no non-visual alternative is offered
- Depths renders a first-person view to a canvas. The HUD, map and controls are real markup and keyboard-operable, but the 3D view itself conveys nothing to a screen reader
- Five's on-screen keyboard keys are 26–33px wide on phones. Ten keys cannot each be 44px wide below a 440px screen, so key height is held at 44px+ instead. This is arithmetic, not an oversight
- Minesweeper on Expert in portrait renders roughly 10px cells on a phone. It fits without scrolling, but that size is a real barrier; landscape gives 17px
- No formal WCAG 2.1 audit. The checks above are real, automated where possible, and partial — they are not a certified pass
Gilbert Chat (/chat)
Checked on September 11, 2026, when the chat launched and again after the saved-chats and law-mode interface was added. What was actually measured or exercised:
- Text contrast was measured against the real colours rather than estimated. Every text pair tested clears WCAG AA: reply text 16.6:1, your own messages (dark on gold) 9.4:1, sidebar chat titles 18.0:1, secondary text and placeholders 7.4:1 or better, the law-mode "quotes verified" badge 13.3:1, warnings 12.9:1, errors 8.4:1. The gold focus ring is 10.2:1 against the page
- Tabbing with a keyboard reaches every control in reading order and each shows a visible gold focus ring: back link, New chat, saved chats and their delete buttons, the Chat/Law switch, the message box, Send, and the sources panels
- Enter sends and Shift+Enter adds a new line. The message box has a real label; Send, the menu button, and each delete button have accessible names
- On a phone the chats drawer is a real toggle: the menu button reports aria-expanded, Escape closes the drawer and returns focus to that button, and focus moves into the drawer when it opens
- Replies stream in live, so announcements are handled in a separate status region that speaks once when the reply is finished, rather than reading every partial word as it arrives. Errors are announced the same way
- Law mode's sources are native disclosure widgets (details/summary), so they open with the keyboard and report their state without any custom scripting
- If a message fails to send, the text is put back in the box instead of being lost, and a Stop button ends a reply mid-stream while keeping what arrived
- prefers-reduced-motion switches off the message, typing, cursor, and drawer animations. Pinch-zoom is not disabled
Known gaps in Gilbert Chat
- No screen reader has been run end to end against the chat. The status region, labels, and disclosure widgets are built for it, but VoiceOver and NVDA have not been manually tested
- The page needs JavaScript. With JavaScript off it loads but cannot be used. The sign-in page is a plain form and does work without it
- The floating Tools menu shared by every GilbertHQ page keeps its links in the keyboard tab order even while closed, so keyboard users tab through hidden tool links. This is a site-wide issue, not specific to the chat
- Regular chat replies come from a small AI model and can be wrong. Law mode answers only from captured statute text and checks every quotation against it, but it is a reference tool, not legal advice
Report a problem
- Found something that doesn't work with assistive tech? Email [email protected] with the page and what happened — it's monitored and gets fixed.
Last reviewed: September 11, 2026 — Gilbert Chat section added and audited. Arcade section last audited August 6, 2026.