Accessibility Conformance Report · Public record
AccessRecord
Version 1.0 · WCAG 2.2 Level AA · Issued 6 Oct 2026
Verified
Covers current release
Conformance summary
41
Supports
3
Partially Supports
0
Does Not Support
11
Not Applicable
0
Not Evaluated
Evaluation notes
Scope: the public marketing pages, the public verification pages, and the signed-in workspace. Method: review of the rendered HTML, the stylesheet and the client source, with contrast measured across the interface colour palette.
Issued against WCAG 2.2 Level AA, which includes every WCAG 2.1 Level AA success criterion. Known limitations are recorded against the criteria they affect.
Success criteria
Perceivable20 criteria
| Ref | Success criterion | Conformance | Remarks |
|---|---|---|---|
| 1.1.1 | Non-text ContentLevel A | Supports | Every icon is a decorative SVG marked aria-hidden="true"; the public pages contain no images at all (checked live). |
| 1.2.1 | Audio-only and Video-only (Prerecorded)Level A | Not Applicable | The product has no audio or video content. |
| 1.2.2 | Captions (Prerecorded)Level A | Not Applicable | No video. |
| 1.2.3 | Audio Description or Media Alternative (Prerecorded)Level A | Not Applicable | No video. |
| 1.2.4 | Captions (Live)Level AA | Not Applicable | No live media. |
| 1.2.5 | Audio Description (Prerecorded)Level AA | Not Applicable | No media. |
| 1.3.1 | Info and RelationshipsLevel A | Supports | Public pages use <main>, <nav aria-label="Site">, <header> and <footer>; the workspace uses <aside aria-label="Workspace">; every input sits inside a <label>; tables use <th>. |
| 1.3.2 | Meaningful SequenceLevel A | Supports | DOM order matches reading order; nothing is reordered by CSS. |
| 1.3.3 | Sensory CharacteristicsLevel A | Supports | Instructions name fields by their label ("Publisher name", "Version covered"), never by colour, shape or position. |
| 1.3.4 | OrientationLevel AA | Supports | No orientation lock; the layout reflows at any viewport. |
| 1.3.5 | Identify Input PurposeLevel AA | Supports | autocomplete="username", "current-password", "new-password" and "one-time-code" are all present in the sign-in and password forms. |
| 1.4.1 | Use of ColorLevel A | Supports | Status is carried by a word — "Verified", "Stale" — plus a reason sentence, not by colour alone. |
| 1.4.2 | Audio ControlLevel A | Not Applicable | No audio. |
| 1.4.3 | Contrast (Minimum)Level AA | Partially Supports | Most text passes comfortably (dark slate 17.85:1, mid slate 7.58:1, grey slate 4.76:1 on white). But some secondary text uses #94A3B8, which measures 2.56:1 — below the 4.5:1 minimum. Two places: the "required for this claim" hint in the generator, and the "(A)" / "(AA)" level marker in the record table. Remarks: Secondary text in a light grey measures 2.56:1 against white, below the 4.5:1 minimum. Body text meets AA. |
| 1.4.4 | Resize TextLevel AA | Supports | Text scales; the viewport meta does not disable zoom. |
| 1.4.5 | Images of TextLevel AA | Supports | No text is rendered as an image; the wordmark is live text. |
| 1.4.10 | ReflowLevel AA | Supports | Responsive layout; data tables become stacked cards below 768px, so nothing needs two-direction scrolling at 320px wide. |
| 1.4.11 | Non-text ContrastLevel AA | Supports | The focus indicator is a 2px solid #2563eb outline, measured at 5.17:1 against white. |
| 1.4.12 | Text SpacingLevel AA | Supports | No fixed-height text containers; content does not clip when line height and spacing are increased. |
| 1.4.13 | Content on Hover or FocusLevel AA | Supports | The only hover/focus overlays are dialogs, which are dismissible and do not cover the control that opened them. |
Operable20 criteria
| Ref | Success criterion | Conformance | Remarks |
|---|---|---|---|
| 2.1.1 | KeyboardLevel A | Supports | Every control is a native <button>, <a>, <input>, <select> or <textarea>; no custom key handling is needed. |
| 2.1.2 | No Keyboard TrapLevel A | Supports | Nothing traps focus; dialogs close with Escape or the Close button. |
| 2.1.4 | Character Key ShortcutsLevel A | Supports | No single-character keyboard shortcuts are implemented. |
| 2.2.1 | Timing AdjustableLevel A | Not Applicable | No task in the product has a time limit. Sign-in throttling is a security control, which is an essential exception. |
| 2.2.2 | Pause, Stop, HideLevel A | Supports | No auto-playing or auto-updating content. Transitions are short, and prefers-reduced-motion reduces them to 0.001ms. |
| 2.3.1 | Three Flashes or Below ThresholdLevel A | Not Applicable | No flashing content. |
| 2.4.1 | Bypass BlocksLevel A | Partially Supports | The public marketing pages provide a "Skip to the content" link to <main id="main">. The signed-in workspace does not have a skip link, and its content container is not marked as <main> — so keyboard users tab through the sidebar on every view. Remarks: Skip link present on public pages. The signed-in workspace has no skip link and no main landmark. |
| 2.4.2 | Page TitledLevel A | Supports | Each page has its own descriptive title — checked live on three routes. |
| 2.4.3 | Focus OrderLevel A | Supports | DOM order follows visual order; opening a dialog moves focus into it. |
| 2.4.4 | Link Purpose (In Context)Level A | Supports | Links carry meaningful text ("Terms of Service", "Start over", the record slug). No bare "click here". |
| 2.4.5 | Multiple WaysLevel AA | Supports | Pages are reachable from the sidebar navigation, from in-page links, and from the public sitemap. |
| 2.4.6 | Headings and LabelsLevel AA | Supports | Each view has a heading; every form control has a visible label. |
| 2.4.7 | Focus VisibleLevel AA | Supports | A global :focus-visible outline is defined in the stylesheet — a 2px blue outline with a 2px offset. |
| 2.4.11 | Focus Not Obscured (Minimum)Level AA | Supports | The sticky header and the generator's sticky progress bar are short; the focused control stays visible, and dialogs scroll inside their own container. |
| 2.5.1 | Pointer GesturesLevel A | Supports | No path-based or multi-point gestures; every action is a single pointer click. |
| 2.5.2 | Pointer CancellationLevel A | Supports | Actions fire on the click, not on pointer-down, so a press can be cancelled by moving away. |
| 2.5.3 | Label in NameLevel A | Supports | Accessible names match the visible label text — buttons are their own label, inputs are labelled by the shared field wrapper. |
| 2.5.4 | Motion ActuationLevel A | Not Applicable | Nothing is triggered by device motion or user motion. |
| 2.5.7 | Dragging MovementsLevel AA | Not Applicable | There is no drag-and-drop; every selection is a click. |
| 2.5.8 | Target Size (Minimum)Level AA | Supports | Interactive controls are at least 24 by 24 CSS pixels; the icon-only buttons are 32 by 32. |
Understandable13 criteria
| Ref | Success criterion | Conformance | Remarks |
|---|---|---|---|
| 3.1.1 | Language of PageLevel A | Supports | <html lang="en"> on every page — checked live on three routes and in the sign-in template. |
| 3.1.2 | Language of PartsLevel AA | Not Applicable | The interface is entirely in English, so no part-level language marking is required. |
| 3.2.1 | On FocusLevel A | Supports | Moving focus onto a control never changes context. |
| 3.2.2 | On InputLevel A | Supports | Changing a field never submits or navigates; changes take effect on an explicit action. |
| 3.2.3 | Consistent NavigationLevel AA | Supports | The sidebar navigation is in the same order on every view. |
| 3.2.4 | Consistent IdentificationLevel AA | Supports | The same components keep the same labels throughout ("Save draft", "Public Links"). |
| 3.2.6 | Consistent HelpLevel A | Supports | The contact address support@accessrecord.app appears in the same place in the footer on every public page. |
| 3.3.1 | Error IdentificationLevel A | Supports | Validation problems are listed in a dialog that names each one — "Enter the version this record covers." |
| 3.3.2 | Labels or InstructionsLevel A | Supports | Every input has a visible label; optional fields are marked "(optional)"; complex fields carry a hint line. |
| 3.3.3 | Error SuggestionLevel AA | Supports | Messages say what to do, not just that something is wrong. |
| 3.3.4 | Error Prevention (Legal, Financial, Data)Level AA | Supports | Publishing is an explicit action behind a completeness check; drafts are saved before a record is issued. |
| 3.3.7 | Redundant EntryLevel A | Supports | Information already entered is not asked for again — the product and version carry into the record. |
| 3.3.8 | Accessible Authentication (Minimum)Level AA | Supports | Sign-in is username and password with no cognitive test, password managers are supported through autocomplete, and the two-factor code accepts paste. |
Robust2 criteria
| Ref | Success criterion | Conformance | Remarks |
|---|---|---|---|
| 4.1.2 | Name, Role, ValueLevel A | Supports | Native HTML controls throughout; the dialog is role="dialog" with aria-modal and a label; decorative SVGs are hidden from assistive technology. |
| 4.1.3 | Status MessagesLevel AA | Partially Supports | The app confirms actions with a visual toast ("Draft saved", "Organisation saved"). The toast container has no live region and no status role — I searched the client bundle and found zero occurrences of aria-live — so a screen-reader user is not told these messages happened. Remarks: Status messages are shown visually but not announced to assistive technology; the toast container has no aria-live region. |
Nabin KL Karna
Founder
support@accessrecord.app
Attestation
This report was signed by a named individual who accepts responsibility for its accuracy. It is not machine-generated.