Accessibility · VPAT 2.5
Accessibility Conformance Report (WCAG 2.2 AA).
Procurement-grade VPAT 2.5 (Web edition) for leadstosalesagency.com against WCAG 2.2 Level A and AA. Updated whenever a relevant component ships.
- Product
- leadstosalesagency.com (marketing site + booking)
- Vendor
- Leads to Sales LLC
- Standards
- WCAG 2.2 Level A & AA
- Report date
- May 2, 2026
PDF version
A signed PDF of this VPAT is available on request from accessibility@leadstosalesagency.com. The HTML version on this page is the canonical source.
WCAG 2.2 Level A
| Ref | Criterion | Conformance | Remarks |
|---|---|---|---|
| 1.1.1 | Non-text Content | Supports | Every meaningful image carries an alt; decorative imagery is alt='' and aria-hidden where appropriate. |
| 1.2.1 | Audio-only and Video-only (Prerecorded) | Not Applicable | No audio-only or video-only content on the marketing site. |
| 1.2.2 | Captions (Prerecorded) | Supports | Every published YouTube video carries WebVTT captions; verified by scripts/video-audit.ts. |
| 1.2.3 | Audio Description or Media Alternative (Prerecorded) | Supports | Long-form videos have a transcript page at /video/[slug]/transcript; podcast transcripts at /podcast/[slug]/transcript. |
| 1.3.1 | Info and Relationships | Supports | Semantic landmarks (header/nav/main/footer); h1-h3 hierarchy enforced; lists are <ul>/<ol>. |
| 1.3.2 | Meaningful Sequence | Supports | DOM order matches visual order; verified per page in audit. |
| 1.3.3 | Sensory Characteristics | Supports | Instructions never rely on shape, color, or position alone. |
| 1.4.1 | Use of Color | Supports | Color is never the sole indicator of state (focus, error, link); paired with icons or text labels. |
| 1.4.2 | Audio Control | Not Applicable | No autoplaying audio. |
| 2.1.1 | Keyboard | Supports | All interactive elements are operable from the keyboard; checked via the audit checklist. |
| 2.1.2 | No Keyboard Trap | Supports | Modals (chat widget, dialog) trap focus while open and release on close. |
| 2.1.4 | Character Key Shortcuts | Not Applicable | No single-key shortcuts implemented. |
| 2.2.1 | Timing Adjustable | Not Applicable | No time-limited interactions on the marketing site. |
| 2.2.2 | Pause, Stop, Hide | Supports | Hero animation is paused under prefers-reduced-motion; the marquee logo strip honors prefers-reduced-motion. |
| 2.3.1 | Three Flashes or Below Threshold | Supports | No content flashes more than 3 times per second. |
| 2.4.1 | Bypass Blocks | Supports | Skip-to-content link is the first focusable element on every page. |
| 2.4.2 | Page Titled | Supports | Every page sets a unique <title> via Next.js Metadata. |
| 2.4.3 | Focus Order | Supports | Focus order matches the reading/visual order. |
| 2.4.4 | Link Purpose (In Context) | Supports | All links carry descriptive text; icon-only links use aria-label. |
| 2.5.1 | Pointer Gestures | Supports | No multi-pointer or path-based gestures required. |
| 2.5.2 | Pointer Cancellation | Supports | Click handlers fire on pointerup; no down-event traps. |
| 2.5.3 | Label in Name | Supports | Visible label always part of the accessible name. |
| 2.5.4 | Motion Actuation | Not Applicable | No motion-actuated functionality. |
| 3.1.1 | Language of Page | Supports | <html lang='en-US'> on every page. |
| 3.2.1 | On Focus | Supports | Focus does not trigger context changes. |
| 3.2.2 | On Input | Supports | Input changes do not trigger unexpected context changes. |
| 3.3.1 | Error Identification | Supports | Form errors are identified in text and tied to the field via aria-describedby. |
| 3.3.2 | Labels or Instructions | Supports | Every form field has a visible label. |
| 4.1.1 | Parsing (obsolete in WCAG 2.2) | Not Applicable | Removed in WCAG 2.2. |
| 4.1.2 | Name, Role, Value | Supports | Custom components (chat widget, calendar) expose accessible name + role via Radix primitives. |
WCAG 2.2 Level AA
| Ref | Criterion | Conformance | Remarks |
|---|---|---|---|
| 1.2.4 | Captions (Live) | Not Applicable | No live audio. |
| 1.2.5 | Audio Description (Prerecorded) | Partially Supports | Long-form videos are paired with a written transcript, which serves as the media alternative; dedicated audio description tracks are not yet provided. |
| 1.3.4 | Orientation | Supports | Layout adapts to portrait + landscape; no orientation lock. |
| 1.3.5 | Identify Input Purpose | Supports | autocomplete attributes set on contact + booking forms. |
| 1.4.3 | Contrast (Minimum) | Supports | All text meets 4.5:1; large text meets 3:1; verified with axe + manual contrast checker. |
| 1.4.4 | Resize Text | Supports | Text scales to 200% without loss of content or function. |
| 1.4.5 | Images of Text | Supports | Real text used everywhere except logos. |
| 1.4.10 | Reflow | Supports | Layout reflows to 320px CSS without horizontal scrolling. |
| 1.4.11 | Non-text Contrast | Supports | Interactive UI components and graphical objects meet 3:1. |
| 1.4.12 | Text Spacing | Supports | User-overridden line-height, letter-spacing, etc. do not break layout. |
| 1.4.13 | Content on Hover or Focus | Supports | Tooltips are dismissible, hoverable, and persistent. |
| 2.4.5 | Multiple Ways | Supports | Pages reachable via primary nav, footer, sitemap, and on-page search. |
| 2.4.6 | Headings and Labels | Supports | Headings + labels describe topic/purpose. |
| 2.4.7 | Focus Visible | Supports | Visible focus ring (orange outline) on every focusable element via :focus-visible. |
| 2.4.11 | Focus Not Obscured (Minimum) | Supports | Focused element is never fully hidden by sticky headers or chat widget. |
| 2.5.7 | Dragging Movements | Supports | No drag-only interactions. |
| 2.5.8 | Target Size (Minimum) | Supports | All clickable targets ≥ 24×24 CSS px. |
| 3.1.2 | Language of Parts | Supports | Foreign-language quotes (when present) carry lang attributes. |
| 3.2.3 | Consistent Navigation | Supports | Navbar + footer identical across pages. |
| 3.2.4 | Consistent Identification | Supports | Components with the same function are labeled the same. |
| 3.2.6 | Consistent Help | Supports | Phone number + chat widget appear in the same place sitewide. |
| 3.3.3 | Error Suggestion | Supports | Field-level errors include suggested fixes. |
| 3.3.4 | Error Prevention (Legal, Financial, Data) | Supports | Booking confirmation step shows a review screen with reschedule + cancel options. |
| 3.3.7 | Redundant Entry | Supports | Booking form does not re-ask for previously-entered data within the session. |
| 3.3.8 | Accessible Authentication (Minimum) | Not Applicable | No public authentication on the marketing site. |
| 4.1.3 | Status Messages | Supports | Form submission, chat handoff, booking errors are announced via aria-live regions. |
Evaluation methods: Manual keyboard testing on Chrome, Firefox, and Safari; automated axe-core sweep on every release; manual screen-reader smoke (NVDA + VoiceOver) on home, services, contact, booking, and the chat widget.
Known issues: None blocking AA. The single “Partially Supports” row above (1.2.5 — Audio Description) is satisfied via the written transcript media alternative; a dedicated audio description track is on the roadmap.
Feedback: Email accessibility@leadstosalesagency.com or call (435) 301-3336 to report an accessibility issue or request an accommodation.