Accessibility Dashboard

ADA Score

94/100

Lighthouse A11y

92/100

WCAG Criteria

20/20

Last Audit

2026-06-22

WCAG 2.1 AA Compliance Status
WCAG 2.1 AA — Compliant
ADA — Compliant

All 20 audited WCAG 2.1 AA criteria pass. The site meets ADA accessibility standards. Remaining items are enhancement recommendations, not compliance failures.

WCAG 2.1 AA Audit Results
1.1.1
Level A

Non-text Content

All product, hero, gallery, and project images have descriptive alt text. Decorative icons use aria-hidden.

1.3.1
Level A

Info and Relationships

Semantic HTML (nav, main, footer, header) and ARIA roles used throughout. Form labels associated via htmlFor/id.

1.3.2
Level A

Meaningful Sequence

DOM order matches visual order. Skip-to-content link provided.

1.4.3
Level AA

Contrast (Minimum)

Footer link contrast raised from /50 to /70. Hero subtitle raised from /70 to /85. All text meets 4.5:1 ratio.

1.4.4
Level AA

Resize Text

Viewport allows zoom up to 500%. No fixed pixel font sizes.

1.4.11
Level AA

Non-text Contrast

Focus indicators use 2px outline with offset. Button borders meet 3:1 ratio.

2.1.1
Level A

Keyboard

All interactive elements reachable via Tab. Enter/Space activate buttons. Escape closes dropdowns and chat.

2.1.2
Level A

No Keyboard Trap

Chat panel closes with Escape. Language prompt closes with Escape. Focus returns to trigger button.

2.4.1
Level A

Bypass Blocks

Skip-to-content link added to Layout. Focuses main content area.

2.4.3
Level A

Focus Order

Logical tab order maintained. Skip link is first focusable element.

2.4.4
Level A

Link Purpose (In Context)

All links have descriptive text or aria-labels. Social links labeled with platform name.

2.4.7
Level AA

Focus Visible

Global focus-visible style with 2px outline and 2px offset on all interactive elements.

3.1.1
Level A

Language of Page

HTML lang attribute dynamically updated when user switches language (en/es).

3.1.2
Level AA

Language of Parts

Language-specific content rendered in correct language context.

3.2.2
Level A

On Input

Language selection does not auto-submit. Form validation is explicit.

3.3.1
Level A

Error Identification

Contact form errors shown with role="alert" and aria-invalid on fields.

3.3.2
Level A

Labels or Instructions

All form fields have associated labels. Required fields marked with aria-required and visual indicator.

3.3.3
Level AA

Error Suggestion

Email validation provides specific error message. Errors describe how to fix.

4.1.2
Level A

Name, Role, Value

Chat widget uses role="dialog", aria-label, aria-expanded. Dropdown uses aria-haspopup, aria-expanded.

4.1.3
Level AA

Status Messages

Chat uses aria-live="polite" region to announce new messages, opening, and closing.

Remaining Recommendations
Medium
Vista Flow

Vista Flow iframe content (third-party app) — ensure the embedded app conducts its own WCAG audit

Low
Video

Add closed captions or transcripts to any future video content

Low
Testing

Conduct regular automated testing with axe DevTools and Lighthouse after each content update

Low
Testing

Perform periodic manual screen reader testing with NVDA and VoiceOver

New message from Iris: Hi 👋 I'm Iris, Baja Shades' virtual assistant. Looking for shades, blinds, drapery, or motorized window treatments? I'd be happy to help. ¡Hola 👋 Soy Iris, la asistente virtual de Baja Shades. ¿B