Case study

Bath for Kids — Accessibility Audit

An accessibility audit and remediation project targeting WCAG 2.2 Level AA compliance across a responsive family-travel website — covering colour tokens, typography, focus states, heading structure, and navigation across four breakpoints.

Role

Lead / Solo Accessibility Designer

Timeline

Ongoing

Team

Solo design work, handed off to development

Platform

Responsive website — Desktop, Tablet Medium, Tablet Expanded, Mobile

01 — Overview

The project

Bath for Kids is a responsive website helping families plan visits to Bath, UK — covering things to do, parks, and local attractions.

This case study covers an accessibility audit and remediation project across the site's design system, targeting WCAG 2.2 Level AA compliance per the DWP Accessibility Manual, spanning colour tokens, typography, heading structure, buttons, and navigation across all four built breakpoints.

The challenge

Bring an existing design system to WCAG 2.2 AA without breaking its visual identity.

My role

Solo audit, remediation design, component fixes, and handoff documentation.

Scope

Colour tokens, focus states, heading structure, buttons, NavBar, and Footer across four breakpoints.

02 — Research

Audit methodology

Rather than relying on visual judgement, every contrast claim was calculated directly from the design system's actual hex values using the WCAG relative luminance formula. This mattered: several colours that looked "close enough" on screen were confirmed as genuine failures once calculated.

The same rigour applied to verifying fixes — every claimed correction was independently checked at the node level (screenshots, component IDs, instance links) rather than accepted on a confident-sounding summary. This approach surfaced two implementation bugs a purely visual pass would likely have missed.

03 — Define

Gaps identified

The audit identified four categories of accessibility failures.

Colour contrast

Three tokens (accent, border, bg/hero) failed WCAG 1.4.3/1.4.11, with ratios as low as 1.41:1 against a 4.5:1 requirement.

Focus states

No visible keyboard or switch-device focus indicator existed anywhere — only Default, Hover, and Disabled states were built.

Heading structure

No heading across any of the eight built frames referenced a named text style; visual hierarchy was sensible but entirely unenforced.

Structural bugs

Tablet variants of NavBar and Footer were disconnected from their component sets; a scaled-instance bug caused focus rings to misalign at 768px.

04 — Ideation

Key design decisions

Two decisions shaped the remediation approach.

Double-ring focus indicator

A single ring colour can't hit 3:1 contrast against every background in the palette. Two tokens — focus/inner and focus/outer — work together so at least one ring always clears the minimum regardless of what it sits on.

Breakpoint-specific heading sizes

Hero and section headings are intentionally smaller on Tablet and Mobile than on Desktop. The fix preserves that variation — semantic level (H1/H2/H3) stays constant while rendered size changes by breakpoint, mirroring practice in mature design systems like GOV.UK's own type scale.

05 — Design

Remediation

The corrected colour tokens now pass AA — for example, bg/hero moved from 3.24:1 to 4.78:1 against white text. Beyond the values themselves, 103 layers across three pages were found using hardcoded hex values instead of semantic variables and were re-bound, so future colour changes propagate automatically.

Focus states

The Focus state was designed and built across Primary and Secondary buttons and all NavBar links across every breakpoint.

Typography

A pre-existing, fully-specified typography system — never previously applied to a single layer — was recovered and reconciled against the built content. Exact matches were reused, drifted values corrected, and gaps filled, resulting in zero remaining manually-styled heading text across the site.

06 — Testing

Verification as part of the fix

Verification was treated as inseparable from the fix itself, not a separate pass afterward. This surfaced two content bugs during the type-system reconciliation.

Bug 1

An initial audit undercounted existing subtitles because its detection threshold missed genuine 16px text already present on Tablet.

Bug 2

A fix pass briefly created duplicate subtitle content on Mobile, caught via a consecutive-ID pattern check before it was shipped.

Outcome

Both were corrected within the same working pass rather than shipped and found later.

07 — Outcome

Results & open items

All three flagged colour tokens now pass WCAG AA. Focus states exist across all primary interactive components. Every heading across all eight frames is bound to a named style. Two structural component bugs were fixed at the source rather than patched per-instance.

Remaining work

Alt text (WCAG 1.1.1)

Annotation needed for placeholder images and static maps — a map alone isn't usable by a screen reader without an accessible alternative.

Tag tap targets (WCAG 2.5.8)

If Tags are ever used as interactive filters, their tap target will need enlarging to meet the 24×24px minimum.