## ADDED Requirements ### Requirement: Public routes have no critical or serious accessibility issues The system SHALL run automated accessibility checks on the public routes covered by the browser suite (SPEC §6.5, §13.8). A critical or serious issue MUST fail the suite. #### Scenario: Critical issue blocks the suite - **WHEN** the automated accessibility check reports a critical or serious issue on a covered route - **THEN** the browser suite MUST fail and report the offending rule and selector #### Scenario: Covered routes are checked - **WHEN** the accessibility suite runs - **THEN** the home, services listing, portfolio listing and case detail MUST each be checked ### Requirement: Public pages use accessible semantic structure Public pages SHALL provide semantic landmarks, exactly one `h1` per page, a coherent heading order, alt text on every content image, and visible focus on interactive elements (SPEC §6.5). #### Scenario: Single h1 per page - **WHEN** any public page is rendered - **THEN** exactly one `h1` element MUST be present #### Scenario: Landmarks are present - **WHEN** any public page is rendered - **THEN** `header`, `main`, `nav` and `footer` landmarks MUST be present #### Scenario: Content images expose alt text - **WHEN** a page renders a cover or gallery image - **THEN** the `alt` attribute MUST contain the stored alt text ### Requirement: Public pages are fully keyboard operable Visitors SHALL be able to reach and activate every interactive element with the keyboard, with a visible focus indicator and a skip link to the main content. #### Scenario: Keyboard reaches the primary CTA - **WHEN** a visitor navigates the home with the Tab key - **THEN** the primary CTA MUST receive focus with a visible indicator - **AND** activating it with the keyboard MUST navigate to the contact route #### Scenario: Skip link bypasses navigation - **WHEN** a visitor focuses the first element of a public page - **THEN** a skip link to the main content MUST be available ### Requirement: Reduced motion preference is honored The system SHALL suppress non-essential animation and transition when the user agent reports `prefers-reduced-motion: reduce`. #### Scenario: Reduced motion disables transitions - **GIVEN** the browser reports `prefers-reduced-motion: reduce` - **WHEN** a public page is loaded - **THEN** decorative transitions and animations MUST NOT run ### Requirement: Public pages emit no console errors Covered public routes SHALL load without JavaScript console errors in a real browser (SPEC §13.8, §19). #### Scenario: Console stays clean on covered routes - **WHEN** a covered public route is loaded in the browser suite - **THEN** the console MUST contain no error-level messages