Skip to main content

Trust Center

Accessibility conformance

Accessibility Conformance Report (ACR) in VPAT® 2.5 format. Conformance is tested with axe-core in CI and manually validated with VoiceOver and NVDA. Status is stated honestly per criterion.

Product information

Product name
winstonandmiller.com website
Product version
Sprint isso-oct10 (October 2026)
ACR version
VPAT® 2.5
Evaluation methods
axe-core 4.x (automated, CI); manual — VoiceOver + Safari on macOS 15; NVDA 2024.x + Chrome on Windows 11
Report date
October 2026
Contact
jessica@winstonandmiller.com

Testing methodology

Automated — axe-core in CI

Every CI run executes a Playwright test suite with @axe-core/playwright against all public pages. Zero critical or serious violations are required to pass. Results are logged per run and archived.

Manual — VoiceOver on Safari (macOS)

Protocol: enable VoiceOver (⌘F5), navigate each page with Tab (interactive elements) and VO+Right Arrow (linear reading). Verify: all interactive elements announce their name and role; form errors are read on submission; landmark regions are announced on entry; page title is read on load.

Manual — NVDA on Chrome (Windows)

Protocol: launch NVDA with Insert+Q to exit, navigate with Tab and F6 (landmarks), H (headings), and K (links). Verify: form labels, error announcements, live region updates, and that decorative images are not announced.

WCAG 2.2 / Section 508 per-criterion conformance

Conformance levels: Supports — fully meets; Partially Supports — partially meets; Does Not Support — does not meet; Not Applicable — criterion does not apply to this product.

CriterionTitleLevelConformanceRemarks
1.1.1Non-text ContentASupportsAll images have descriptive alt text or are marked decorative (alt=""). Icons use aria-hidden="true" with adjacent visible labels or aria-label.
1.2.1Audio-only and Video-only (Prerecorded)ANot ApplicableNo audio-only or video-only content is present on the site.
1.2.2Captions (Prerecorded)ANot ApplicableNo prerecorded video content is present.
1.2.3Audio Description or Media Alternative (Prerecorded)ANot ApplicableNo prerecorded video content is present.
1.2.4Captions (Live)AANot ApplicableNo live media content is present.
1.2.5Audio Description (Prerecorded)AANot ApplicableNo prerecorded video content is present.
1.3.1Info and RelationshipsASupportsSemantic HTML5 landmarks (header, nav, main, footer) used throughout. Lists, tables, and forms use appropriate elements and ARIA roles.
1.3.2Meaningful SequenceASupportsDOM order reflects the logical reading order. No CSS reordering that would create a disconnect between visual and programmatic order.
1.3.3Sensory CharacteristicsASupportsInstructions do not rely solely on shape, size, visual location, orientation, or sound.
1.3.4OrientationAASupportsContent is not restricted to a single display orientation.
1.3.5Identify Input PurposeAASupportsForm inputs on the contact page include autocomplete attributes appropriate to their purpose.
1.4.1Use of ColorASupportsColor is not the sole means of conveying information. Status indicators include text labels in addition to color.
1.4.2Audio ControlANot ApplicableNo audio content that plays automatically.
1.4.3Contrast (Minimum)AASupportsBody text maintains a minimum 8.5:1 contrast ratio against background in all themes. Metadata text meets the 4.5:1 minimum. Contrast is validated in CI via the contrast-validate script.
1.4.4Resize TextAASupportsText scales to 200% without loss of content or functionality. Layout is responsive and reflows at all zoom levels.
1.4.5Images of TextAASupportsNo images of text are used. All text is rendered as actual text.
1.4.10ReflowAASupportsContent reflows to a single column at 320px CSS width without horizontal scrolling or loss of content.
1.4.11Non-text ContrastAASupportsUI component boundaries (buttons, inputs, focus rings) meet the 3:1 contrast ratio against adjacent colors.
1.4.12Text SpacingAASupportsNo loss of content or functionality when letter, word, or paragraph spacing is overridden per the criterion's test conditions.
1.4.13Content on Hover or FocusAASupportsTooltip-style content is hoverable, dismissable, and persistent.
2.1.1KeyboardASupportsAll interactive elements are reachable and operable via keyboard. No keyboard traps. Custom interactive components (details/summary, modals) are keyboard operable.
2.1.2No Keyboard TrapASupportsFocus moves forward and backward through all interactive elements without becoming trapped.
2.1.4Character Key ShortcutsANot ApplicableNo single-character key shortcuts are implemented.
2.2.1Timing AdjustableANot ApplicableNo time limits are imposed on interactions.
2.2.2Pause, Stop, HideASupportsNo auto-updating content, blinking, or moving elements are present.
2.3.1Three Flashes or Below ThresholdASupportsNo content flashes more than three times per second.
2.4.1Bypass BlocksASupportsA "Skip to main content" link is the first focusable element on every page.
2.4.2Page TitledASupportsEach page has a unique, descriptive title in the format "Page Name | Winston & Miller".
2.4.3Focus OrderASupportsFocus order follows a logical sequence consistent with content meaning.
2.4.4Link Purpose (In Context)ASupportsLink text describes the destination or action. Ambiguous links include screen-reader-only context via aria-label or visually hidden text.
2.4.5Multiple WaysAASupportsSite-wide navigation, footer links, and trust section breadcrumbs provide multiple ways to reach each page.
2.4.6Headings and LabelsAASupportsHeadings describe the content of each section. Form labels are explicit.
2.4.7Focus VisibleAASupportsFocus indicators are visible on all interactive elements with a minimum 3:1 contrast against the unfocused state.
2.4.11Focus Not Obscured (Minimum)AASupportsFocused components are not fully obscured by sticky headers or other overlapping content.
2.5.3Label in NameASupportsAccessible names for interactive elements contain the visible label text.
2.5.8Target Size (Minimum)AASupportsInteractive targets meet the 24×24 CSS pixel minimum. Primary navigation and call-to-action targets meet 44×44px.
3.1.1Language of PageASupportsThe html element includes lang="en" on every page.
3.1.2Language of PartsAASupportsNo foreign-language passages are present that require lang attribute markup.
3.2.1On FocusASupportsReceiving focus does not trigger unexpected context changes.
3.2.2On InputASupportsChanging a form field value does not submit the form or trigger navigation without a submit control.
3.2.3Consistent NavigationAASupportsNavigation is in a consistent location and order across all pages.
3.2.4Consistent IdentificationAASupportsComponents with the same function are identified consistently across pages.
3.3.1Error IdentificationASupportsForm validation errors are identified in text and associated with the input via aria-describedby.
3.3.2Labels or InstructionsASupportsAll form inputs have visible labels and relevant instructions are provided before the inputs they apply to.
3.3.3Error SuggestionAASupportsWhere a format is expected (e.g. email), error messages include the expected format.
3.3.4Error Prevention (Legal, Financial, Data)AANot ApplicableNo legal or financial transactions are performed on the public site.
4.1.1ParsingASupportsHTML validates; duplicate IDs are not present. React's server rendering produces well-formed markup.
4.1.2Name, Role, ValueASupportsAll interactive elements expose name, role, and state via native semantics or ARIA attributes. Custom components follow APG patterns.
4.1.3Status MessagesAASupportsStatus messages (form success/error) are announced via aria-live regions without receiving focus.

Feedback and contact

If you encounter an accessibility barrier on this site, or if any content or functionality is inaccessible to you, contact us at jessica@winstonandmiller.com.

The full ACR in VPAT 2.5 format is available as a standalone document at /docs/accessibility/acr-vpat-2.5.

Related trust resources