Accessibility
Audited 9 August 2026 against the built site. Six failures found, five fixed, one still open — stated below rather than hidden.
The standard, and where this site stands against it
WCAG 2.1 Level AA is the target for every page. An audit was carried out on 9 August 2026 against the built site, measuring rendered pages rather than inspecting source: computed colour values composited through every layer, real tab order, real element dimensions, and the accessibility tree the browser exposes.
It found six failures. Five are fixed. One remains, and is described below rather than left for someone else to discover. Because that one is a Level AA failure, this site does not claim AA conformance today.
What the audit confirmed is working
Calendars are real tables with a caption, column headers scoped to their weekday, and the holiday name carried as text in each marked cell. A screen reader announces "link, 7 Labor Day" rather than a bare number, and holidays are never signalled by colour alone.
The navigation menus are fully keyboard operable without JavaScript. All fifty links across the three panels were traced in tab order, in DOM order, with no keyboard trap and no link stranded behind a hover-only interaction.
Every page has exactly one main landmark, exactly one H1, and headings that descend without skipping a level. All four navigation regions are named. There are no duplicate element IDs and no references pointing at elements that do not exist.
All 1,132 icons on the site are hidden from assistive technology. These are ligature fonts, so an unhidden icon would read its name aloud as text — "event_upcoming" spoken in the middle of a heading. None do.
Body text contrast passes everywhere it was measured, from 6.94:1 up to 16.31:1 against a 4.5:1 requirement. The page reflows correctly at a 320-pixel width with no horizontal scrolling.
What the audit found, and what changed
A hidden control sat in the desktop keyboard path. The mobile menu checkbox stayed focusable on large screens, where its focus indicator was drawn by a label that was itself hidden. Tabbing past it made the focus ring vanish, then reappear. It is now hidden on desktop, as it always should have been.
The homepage calendar was not a table. It was a grid of plain elements, so nothing connected a date to its weekday — the exact failure the calendar pages were built to avoid. The homepage now uses the same table component as the other 104 calendars, which also fixed its dimmed dates measuring 2.07:1 and its unlabelled "today" marker.
Dimmed adjacent-month dates measured 4.28:1 against a 4.5:1 requirement, on every calendar page. They are now a darker existing colour at 8.91:1, keeping the visual hierarchy without failing contrast.
The closed navigation panels extended the page beyond the window, putting a permanent horizontal scrollbar on every desktop page. Hidden content still occupies space; it is now clipped.
The skip link landed on an empty element with no name, so it worked silently and left you to guess where you were. It now targets the main landmark, which announces itself.
The failure that is still here
The desktop navigation menus overlay the page. They open on hover or keyboard focus, cover content while open, and WCAG 2.1 1.4.13 requires a way to dismiss that overlay without moving pointer hover or keyboard focus.
Escape now closes any open desktop mega menu: it blurs the focused link, adds a dismiss state that hides the panel even while hover remains, and unchecks the mobile menu. Re-entering a menu with the pointer or keyboard clears the dismiss state. Dates remain readable with scripting off.
A hover-opened menu still reopens if the pointer never left the trigger row after Escape — move the pointer slightly or tab onward to clear it. Every link inside those menus also appears in the footer, so nothing is reachable only through the menu. A layout change that pushes content down instead of overlaying it remains the no-script alternative if a stricter reading of 1.4.13 is required.
What is still unverified
No test with a real screen reader has been carried out. The accessibility tree and the computed accessible names have been checked, which is not the same as hearing how JAWS, NVDA or VoiceOver actually speak a page. Until that happens, no conformance claim would be honest.
Windows High Contrast mode and forced-colours rendering are untested. Behaviour at 200 and 400 percent zoom has not been checked systematically.
Touch targets are at least 44 pixels everywhere except the twelve compact calendars on a year page, where day cells are 32 pixels. That clears the 24-pixel WCAG 2.2 minimum but not the 44 pixels this project holds itself to.
If something does not work
Accessibility problems are treated as defects, not enhancements. If a page here is unusable with your assistive technology, that is a bug worth reporting, and it will be fixed rather than logged.