Trust
Accessibility
We are committed to making Standard Works usable by everyone, including people who rely on assistive technology. This page is our Accessibility Conformance Report (a VPAT 2.5) describing how the product measures up against the Web Content Accessibility Guidelines (WCAG) 2.2, Level AA.
About this report
- Standard evaluated
- WCAG 2.2, Level A and AA
- Report format
- VPAT 2.5 (WCAG edition)
- Scope
- Public marketing site and application dashboard, including the Case Builder workspace (facts, issues, people & organizations, timeline, transcripts, reports) and the homepage product demos added in this cycle
- Report date
- July 11, 2026
Evaluation methods. Automated static analysis of the codebase, manual source-code review of pages, layouts, and interactive components against each WCAG 2.2 A/AA success criterion, and programmatic color-contrast computation of the design-system palette.
This is a self-assessment backed by a code-level audit and active remediation. It has not yet been certified by an independent third-party auditor. Conformance claims for criteria that require live assistive-technology verification (screen-reader testing with VoiceOver, NVDA, and JAWS, plus a runtime keyboard walkthrough and automated runtime scans) are stated conservatively as Partially Supports until that testing is complete. Those items are tracked in the roadmap below.
Key
Conformance levels
- Supports
- The functionality meets the criterion without known defects.
- Partially Supports
- Some functionality meets the criterion; some does not.
- Does Not Support
- The majority of functionality does not meet the criterion.
- Not Applicable
- The criterion is not relevant to the product.
Table 1
Success criteria, Level A
| Success Criterion | Conformance | Remarks and Explanations |
|---|---|---|
| 1.1.1 Non-text Content | Partially Supports | Icon-only controls in navigation, pagination, and toolbars have accessible names (aria-label). Decorative logos and animation elements use empty alt text or aria-hidden. Charts expose auto-generated textual descriptions, and the force-directed graph carries a role and a summary label. Gaps: chart/graph data is summarized but not fully explorable as text; the timeline canvas, its mini-map, and the PDF page renderer do not yet expose a text alternative (the timeline's spreadsheet view provides an equivalent but is not programmatically associated as the alternative). |
| 1.2.1 Audio-only and Video-only (Prerecorded) | Partially Supports | The marketing site contains no prerecorded video; its vignettes are silent, decorative DOM/canvas animations. The dashboard's document viewer can play user-uploaded audio/video, for which no text or audio alternative is generated. To be remediated where media carries information. |
| 1.2.2 Captions (Prerecorded) | Partially Supports | The only video element is the dashboard document viewer, which plays user-uploaded media with no captions track. To be remediated where video carries information. |
| 1.2.3 Audio Description or Media Alternative | Not Applicable | No prerecorded synchronized media conveying information beyond decorative motion. |
| 1.3.1 Info and Relationships | Partially Supports | Data tables render semantic table markup with scoped headers and aria-sort state; the case-evaluation matrix exposes ARIA table semantics with row/column headers and per-cell labels; segmented controls expose radiogroup semantics; the Case Builder section navigation is a nav landmark with aria-current; a single main landmark wraps page content; footer headings use logical levels. Gaps: the dashboard sidebar still lacks a nav landmark and aria-current; chart legends and graph filters still convey grouping visually only. |
| 1.3.2 Meaningful Sequence | Supports | DOM order matches the visual reading order on reviewed pages. |
| 1.3.3 Sensory Characteristics | Supports | Instructions do not rely solely on shape, size, or position. |
| 1.4.1 Use of Color | Partially Supports | Most state is conveyed with text plus an icon; the case-evaluation matrix and evaluation badges pair color with printed text; chart series carry decal patterns in addition to color; toggle controls expose their state programmatically (aria-pressed/aria-checked). Gaps: graph entity types and timeline/transcript issue coding are distinguished by color alone, and spreadsheet conditional formatting (e.g. red negatives) is color-only. |
| 1.4.2 Audio Control | Not Applicable | No auto-playing audio. |
| 2.1.1 Keyboard | Partially Supports | Pill toggles and segmented controls are keyboard-operable; search-toolbar help and operator controls are native buttons; data-table row expansion is keyboard-activatable; the mobile menu closes on Escape and manages focus; transcript lines, the transcript picker, and transcript search are keyboard-operable, and each transcripts panel provides a keyboard menu for moving and resizing panels. Gaps: the canvas graph (node selection, pan/zoom/drag) and chart drill-down are pointer-only; table column/row resize and chat-drawer resize are drag-only. |
| 2.1.2 No Keyboard Trap | Supports | No keyboard traps identified; dialogs manage focus, close on Escape, and every step of the signup flow provides a keyboard-reachable close control. |
| 2.1.4 Character Key Shortcuts | Not Applicable | No single-character key shortcuts are implemented. |
| 2.2.1 Timing Adjustable | Supports | No time limits on content. |
| 2.2.2 Pause, Stop, Hide | Partially Supports | A global prefers-reduced-motion rule disables the continuously-running decorative CSS animations and reduces CSS transitions to a single frame; JavaScript-driven animations honor the same preference, and the homepage's auto-playing product demos provide a visible Skip control and jump to their end state under reduced motion. Gap: the auto-scrolling logo marquee offers no pause control for users without the OS-level motion preference set. |
| 2.3.1 Three Flashes or Below Threshold | Supports | No flashing content. |
| 2.4.1 Bypass Blocks | Supports | A "Skip to main content" link and a single main landmark are present in both the public and dashboard layouts. |
| 2.4.2 Page Titled | Supports | Per-route page titles are set via the framework's metadata templates on public and dashboard routes, including the documents pages and every Case Builder section. |
| 2.4.3 Focus Order | Partially Supports | Logical for standard content; the mobile menu restores focus to its trigger on close, and dialogs return focus to the triggering control when closed. To be confirmed for remaining custom popovers/drawers via AT testing. |
| 2.4.4 Link Purpose (In Context) | Supports | Icon-only links carry an aria-label, linked-count cells on Case Builder cards describe what they count, and no bare "click here" links were found. |
| 2.5.1 Pointer Gestures | Partially Supports | Graph pan/zoom is a multipoint/drag gesture with no single-pointer alternative yet. The transcripts workspace's panels provide single-click move/resize controls alongside drag. |
| 2.5.2 Pointer Cancellation | Supports | Activation occurs on the up-event for standard controls. |
| 2.5.3 Label in Name | Supports | Visible labels match accessible names on reviewed controls. |
| 2.5.4 Motion Actuation | Not Applicable | No motion-actuated functionality. |
| 3.1.1 Language of Page | Supports | The page language is declared on the root html element. |
| 3.2.1 On Focus | Supports | No change of context occurs on focus. |
| 3.2.2 On Input | Supports | No unexpected change of context occurs on input. |
| 3.2.6 Consistent Helpnew in 2.2 | Supports | A contact mechanism appears consistently in the navigation and footer. |
| 3.3.1 Error Identification | Partially Supports | The careers application and case-settings label field expose errors via role=alert and aria-invalid, and chat errors carry an alert role. Gaps: signup-dialog errors render without an alert role; login, contact, and import-productions forms report validation only via transient toast notifications, which are not reliably associated with the offending field. |
| 3.3.2 Labels or Instructions | Partially Supports | Form controls across auth, careers, and Case Builder dialogs are associated with a label or aria-label; required fields are marked aria-required; the document, Case Builder, and graph-explorer search inputs, the pricing case-size slider, and the import-productions comboboxes are programmatically labeled. Gap: some advanced query-builder and chart-builder controls remain unlabeled. |
| 3.3.7 Redundant Entrynew in 2.2 | Supports | Multi-step flows do not require re-entering previously provided information. |
| 4.1.1 Parsing | Supports | Obsolete in WCAG 2.2; no parsing-blocking markup issues were found. |
| 4.1.2 Name, Role, Value | Partially Supports | Native elements and UI primitives expose correct roles; pill toggles, segmented controls, chart-builder toggles, and filter tiles carry ARIA state; Case Builder cards expose single, properly-labeled selection and expand/collapse controls with aria-checked/aria-expanded; the chat composer exposes textbox semantics; dialogs and popovers are built on accessible primitives; the graph canvas carries a role and descriptive label, and charts expose generated descriptions. Gaps: chart and graph content is described but not interactively navigable by assistive technology, and a few custom controls (report-format pickers, chip selectors) still lack complete state. |
Table 2
Success criteria, Level AA
| Success Criterion | Conformance | Remarks and Explanations |
|---|---|---|
| 1.2.4 Captions (Live) | Not Applicable | No live media. |
| 1.2.5 Audio Description (Prerecorded) | Not Applicable | No informational prerecorded video. |
| 1.3.4 Orientation | Supports | Content is responsive and not locked to a single orientation. |
| 1.3.5 Identify Input Purpose | Partially Supports | Public-facing identifying fields (careers application, signup, login, MFA phone) carry the appropriate input type and autocomplete tokens. Gaps: the contact dialog's email, phone, and organization fields lack autocomplete tokens; remaining identifying fields in the dashboard are still being annotated. |
| 1.4.3 Contrast (Minimum) | Partially Supports | Primary text/background pairs pass (body text ~17:1; accent-blue ~7.9:1). Gap: accent-green, accent-yellow, and accent-pink fall below 4.5:1 when used as normal-size text, and some muted-gray text falls below 4.5:1 on tinted surfaces. They pass for large/bold text and non-text use. See roadmap. |
| 1.4.4 Resize Text | Supports | Layout uses relative units and reflows on zoom. |
| 1.4.5 Images of Text | Supports | Text is live text, not images of text. |
| 1.4.10 Reflow | Supports | The responsive layout reflows to small viewports without loss of content (data tables scroll within a container). |
| 1.4.11 Non-text Contrast | Partially Supports | Most control borders and focus indicators meet 3:1. To be confirmed for chart elements and some toolbar controls. |
| 1.4.12 Text Spacing | Supports | No fixed line-heights that clip text on reviewed pages. |
| 1.4.13 Content on Hover or Focus | Partially Supports | Popovers are dismissable and hoverable; the navbar Company dropdown closes on Escape and exposes expanded/haspopup state; evaluation-matrix cells and linked-count cells expose their content as accessible labels rather than tooltip-only. Gap: timeline fact boxes and transcript annotations still convey content through native hover-only title tooltips that are not dismissable, hoverable, or keyboard-reachable. |
| 2.4.5 Multiple Ways | Supports | The site provides navigation plus search within document collections. |
| 2.4.6 Headings and Labels | Partially Supports | Heading levels were corrected on the homepage and footer. Gaps: the pricing and careers pages skip from h1 to h3; the login page title is not a heading; the case layout renders headings out of order; and several Case Builder pages (facts, issues, timeline, transcripts) render no headings at all. |
| 2.4.7 Focus Visible | Partially Supports | Visible focus-visible rings were added to toggles, table rows, toolbar buttons, dialog fields, Case Builder search inputs and selection controls, the shared filter checkbox, transcript lines, and video controls. Gaps: several timeline and report-wizard buttons still rely on default rings, and some icon buttons' default rings may be obscured by translucent surfaces. |
| 2.4.11 Focus Not Obscured (Minimum)new in 2.2 | Partially Supports | The sticky navbar may overlap focused elements near the top of the viewport; to be verified. |
| 2.5.7 Dragging Movementsnew in 2.2 | Partially Supports | Column/row resize, graph drag, chat-drawer resize, and the transcripts workspace's panel rearrange/resize are drag-only with no single-pointer alternative yet (the panel grid offers a one-click layout reset). |
| 2.5.8 Target Size (Minimum)new in 2.2 | Partially Supports | The mobile menu button meets 44×44 minimum; pagination arrows, page-size buttons, and the transcript video seek slider meet the 24×24 CSS-pixel minimum. Gaps: dense segmented-pill segments, search operator chips, key-fact stars, filter checkboxes and tiles, and color swatches remain below the minimum. |
| 3.1.2 Language of Parts | Supports | Content is English throughout; no foreign-language passages require markup. |
| 3.2.3 Consistent Navigation | Supports | The navbar and footer are consistent across pages. |
| 3.2.4 Consistent Identification | Supports | Components are identified consistently. |
| 3.3.3 Error Suggestion | Partially Supports | Some forms suggest corrections; coverage is inconsistent (see 3.3.1). |
| 3.3.4 Error Prevention (Legal, Financial, Data) | Partially Supports | Destructive actions (e.g. delete case) use a typed confirmation dialog. Checkout/billing flows to be reviewed. |
| 3.3.8 Accessible Authentication (Minimum)new in 2.2 | Partially Supports | Email/password and TOTP/SMS MFA are supported; no cognitive-function test is imposed beyond standard auth. Confirm password managers and paste are not blocked. |
| 4.1.3 Status Messages | Partially Supports | Pagination status and data-table loading/empty states use aria-live regions; chat streaming state and errors are announced on both the homepage demo and the dashboard chat; Case Builder result counts, empty states, bulk-selection counts, and transcript find-match counters use live regions; toast notifications announce once via the toast library's live region. Gaps: report-wizard step changes and some timeline loading transitions are not yet announced. |
Remediation roadmap
What we have fixed, and what is next.
Completed in this pass
- Skip-to-content link and a single main landmark across public pages
- Navigation landmark with expanded/controls state and Escape-to-close on the mobile menu
- Pill toggles converted to keyboard-operable switch buttons with a visible focus indicator
- Data-table scoped headers, keyboard-activatable row expansion, and a focus ring
- Pagination accessible names and an aria-live page-status announcement
- Corrected footer heading levels and decorative-logo alt text
- Form and dialog control labels, aria-required, role=alert errors, and removal of stray autofocus
- Global prefers-reduced-motion handling that stops decorative CSS animations (2.2.2)
- Reduced-motion preference extended to JavaScript-driven (framer-motion) animations (2.2.2)
- Autocomplete tokens on public-facing identifying fields (1.3.5)
- Pagination controls raised to the 24×24 minimum target size (2.5.8)
- Skip link added to the dashboard layout; per-route titles on all dashboard pages (2.4.1, 2.4.2)
- Search toolbar help and operator controls converted to native buttons with visible focus (2.1.1, 2.4.7)
- Segmented pills given radiogroup semantics, focus indicators, and a non-color selected cue (4.1.2, 2.4.7, 1.4.1)
- Column sort state exposed via aria-sort; table loading/empty states announced (1.3.1, 4.1.3)
- Company dropdown keyboard parity (Escape, focus-out close, haspopup) and mobile-menu focus management (1.4.13, 2.4.3)
- Transcripts workspace: keyboard-operable transcript lines, picker, and search; per-panel keyboard move/resize menus alongside drag (2.1.1, 2.5.7)
- Case Builder: single labeled selection control per card with aria-checked/aria-expanded, labeled search inputs with focus rings, aria-pressed filter tiles, nav landmark with aria-current, and live regions for counts and empty states (4.1.2, 3.3.2, 2.4.7, 4.1.3)
- Evaluation matrix converted to ARIA table semantics with per-cell accessible labels (1.3.1, 1.4.13)
- Chat: textbox semantics on the composer, streaming/announcement live regions, and alert roles on errors, on both the homepage demo and the dashboard drawer (4.1.2, 4.1.3, 3.3.1)
- Charts: built-in accessible descriptions and decal patterns enabled; graph canvas given a role and summary label; chart-builder toggles expose pressed state (1.1.1, 1.4.1, 4.1.2)
- Dialog focus returned to the triggering control on close; signup-dialog keyboard trap removed (2.4.3, 2.1.2)
- Per-route titles added to documents and all Case Builder pages; import-productions labels wired to their fields; pricing slider and remaining search inputs labeled (2.4.2, 3.3.2)
Outstanding — high impact
- Canvas keyboard interaction. Charts and the graph now expose text descriptions; the remaining work is a keyboard interaction model (node selection, chart drill-down) and a text alternative for the timeline canvas (2.1.1, 1.1.1, 4.1.2).
- PDF viewer. Enable the text layer or provide an extracted-text alternative so document content is readable by assistive technology (1.1.1).
- Color contrast. Darken or restrict the accent green, yellow, and pink and the muted-gray text when used at normal size (a brand-design decision) (1.4.3).
Outstanding — medium impact
- Convert remaining toast-only validation to field-associated, announced errors (3.3.1, 4.1.3)
- Add single-pointer alternatives for table column/row resize, chat-drawer resize, and graph pan/zoom, and raise remaining small targets, e.g. segmented pills (2.5.7, 2.5.8)
- Extend autocomplete tokens to the contact dialog and remaining dashboard identifying fields (1.3.5)
- Label the remaining query-builder controls and chip selectors (3.3.2, 4.1.2)
- Add a nav landmark and aria-current to the dashboard sidebar, and fix heading hierarchy on pricing, careers, login, and Case Builder pages (1.3.1)
- Announce report-wizard step changes and timeline loading transitions (4.1.3)
- Replace hover-only tooltips on timeline fact boxes and transcript annotations (1.4.13)
- Add a pause control to the logo marquee (2.2.2)
Required to finalize this report
- Live assistive-technology testing (VoiceOver, NVDA, JAWS) and a full keyboard walkthrough
- A runtime automated scan (axe-core / Lighthouse) on the running application
Feedback
Run into a barrier?
If you encounter an accessibility barrier on Standard Works, or you need information in an alternative format, please tell us at accessibility@standardworks.ai. We aim to respond promptly and will work with you to provide the information or functionality you need. See our broader trust commitments for more.
Last updated July 11, 2026. VPAT® is a registered trademark of the Information Technology Industry Council (ITI).