07 Accessibility

Accessibility Guidelines

Mealchemy targets WCAG 2.2 Level AA with readable text, visible labels, accessible touch targets, and consistent focus and error states.

TargetWCAG 2.2 AA

AA is the minimum conformance target across colour, navigation, forms, and feedback.

FocusVisible ring

Keyboard focus uses a 3px gold outline on links, buttons, and inputs.

MotionReduced motion

Motion is reduced when the user's device requests fewer animations.

ContrastAA pairings

Approved foreground/background pairs are documented and checked below.

Keyboard Navigation

Focus order and indicators

Interactive elements must be reachable in a logical order with no keyboard trap. The active element receives a visible gold focus ring.

1234

Tab order follows page structure: navigation, filters, form fields, then primary actions.

Tab

Moves forward through controls.

Shift + Tab

Moves backward without trapping the user.

Enter / Space

Activates buttons, chips, and navigation controls.

Escape

Closes modals and bottom sheets.

Assistive Technology

Screen readers and reduced motion

Meaningful controls need clear accessible names. Decorative visuals stay out of the accessibility tree.

Screen reader labels
Announced as

Save roasted tomato pasta, button.

Icon-only controls require specific labels. Images need useful alt text unless decorative.

Forms

Used for sign-in and account recovery.

Labels remain visible and helper or error text is connected to the relevant field.

Reduced motion
Default motion
Reduced motion

When reduced motion is requested, decorative movement becomes instant or is skipped.

Device setting Reduced motion respected

Animated widgets check the user's motion preference and switch to near-instant timing when needed.

Screen changes Simple transitions

The add-ingredient route returns the screen immediately instead of sliding it in when reduced motion is enabled.

Expected result No decorative motion

The user still gets the same content and controls, with selection and swipe motion reduced.

WCAG 2.2 Level AA Adherence

These are the WCAG standards Mealchemy is aiming to meet, with the design guideline we will follow for each one.

1.4.3

Minimum Contrast: Text

WCAG Standard

Normal text requires 4.5:1 contrast. Large text requires 3:1.

Mealchemy Guideline

Use only approved text/background pairings from the contrast table. Muted text is reserved for non-actionable supporting copy on light backgrounds.

1.4.11

Non-Text Contrast

WCAG Standard

Meaningful icons, focus indicators, and interactive component boundaries require 3:1 contrast against adjacent colours.

Mealchemy Guideline

Buttons, icons, focused input borders, and semantic states must use contrast-safe maroon, gold, or semantic colours. Decorative dividers must not be the only source of meaning.

1.4.1

Use of Colour

WCAG Standard

Colour must not be the only way information is communicated.

Mealchemy Guideline

Pair every colour state with text, a number, or an icon. Pantry status, form validation, and match badges must all remain understandable without colour alone.

2.5.5

Target Size

WCAG Standard

Interactive targets should be at least 44x44 CSS pixels.

Mealchemy Guideline

Keep medium buttons at 48dp, large buttons at 56dp, and icon buttons at 48dp unless a specific layout needs a larger value.

1.3.1

Info and Relationships

WCAG Standard

Visual structure and relationships must also be available programmatically.

Mealchemy Guideline

Use accessible labels for meaningful controls and status information. Exclude decorative imagery from the accessibility tree.

1.3.5

Identify Input Purpose

WCAG Standard

Inputs should programmatically identify their purpose so assistive tools can present the right keyboard or autofill support.

Mealchemy Guideline

Give every form field a visible label, plus the correct input type and autofill support where relevant.

1.4.4

Resize Text

WCAG Standard

Text must remain readable and functional up to 200% scaling without loss of content or functionality.

Mealchemy Guideline

Use flexible layouts that respect device text scaling. Test at 1.0x, 1.3x, and 2.0x before release.

2.1.1

Keyboard

WCAG Standard

All functionality must be operable with a keyboard, with no keyboard traps.

Mealchemy Guideline

Ensure every action is keyboard reachable on tablet and desktop layouts, with visible focus feedback on fields, buttons, and navigation items.

3.3.1

Error Identification

WCAG Standard

Detected errors must be identified and described in text.

Mealchemy Guideline

Use specific written error messages, such as "Incorrect password. Try again.", instead of generic error labels.

3.3.2

Labels or Instructions

WCAG Standard

Form fields must include labels or instructions.

Mealchemy Guideline

Avoid placeholder-only fields. Use persistent visible labels so input purpose remains clear before and after typing.

Colour Independence Examples

State is communicated with both colour and text, so users do not need to rely on colour alone.

Fresh

Green dot plus label for usable pantry items.

Low

Orange dot plus label for low-stock ingredients.

Expired

Red dot plus label for expired pantry items.

Form validation

! Incorrect password. Try again.

Contrast Table

A contrast ratio compares how different the foreground and background colours are. Higher ratios are easier to read; WCAG AA normally requires 4.5:1 for body text and 3:1 for large text.

114.84:1White on Primary Dark
214.16:1Primary Dark on Background Light
318.53:1Text Light on Background Light
46.8:1Gold on Primary
54.6:1Muted on Background Light
#ForegroundBackgroundRatioStatus
1#FFFFFF White#570013 Primary Dark14.84:1Pass AA/AAA
2#570013 Primary Dark#FEF9F1 Background Light14.16:1Pass AA/AAA
3#0E0D0B Text Light#FEF9F1 Background Light18.53:1Pass AA/AAA
4#D4AF37 Gold#5C0018 Primary6.8:1Pass AA
5#6B7280 Muted#FEF9F1 Background Light4.6:1Large text only
6#DC2626 Error#FEF9F1 Background Light4.61:1Pass AA

Accessibility Check

Lighthouse and manual checks

The Brand guide was checked with Chrome Lighthouse.

Lighthouse Accessibility100

Chrome DevTools Lighthouse returned 100 for Accessibility on all pages.

Contrast auditAA documented

Approved pairings are shown in the contrast table, including body text, large text, and semantic error states.

Manual checksRequired before release

Keyboard traversal, screen-reader announcements, modal dismissal, text scaling, and reduced-motion preference should be checked in the app.