Paper Crane / legal / accessibility-report
( Scroll to explore ↓ )
Paper Crane assessed papercrane.ca against WCAG 2.2 Level AA. This page is the resulting conformance report, in the format of a VPAT (Voluntary Product Accessibility Template) version 2.5Rev. It records how the site performs against every Level A and Level AA success criterion, including the ones it does not meet.
If you would prefer this as a document to attach to a procurement file, email hello@papercrane.ca and we will send it over.
What this report covers
Product: Paper Crane Website (papercrane.ca), version 0.1.0
Report date: August 23, 2026
Contact: hello@papercrane.ca
The report covers the public, indexed website, which is the 71 addresses listed in our sitemap. It does not cover pages that are excluded from search and sent to named recipients, such as client proposals, audits, and internal decks, or the content management system behind the site.
Sixteen pages were tested directly, picked so that every page template on the site is represented. What we found was then applied across the shared components those templates are built from.
One gap is worth stating plainly. We have not run a formal test with a screen reader such as NVDA, JAWS, or VoiceOver. Criteria that depend on what a screen reader announces were checked by inspecting the accessibility information the browser exposes and by reading the page with its layout stripped away. Those are marked as supported on that basis, and a screen reader pass is our next step.
How we tested
We reviewed the source code across every accessibility area. We ran axe-core against each page after it had fully rendered, so that content loaded from the CMS and styles applied by scripts were included rather than missed. On top of that we scripted tests for keyboard order, focus visibility, colour contrast measured as it actually renders on screen, tap target size, layout at 320 pixels wide, and increased text spacing, and re-ran the checks with menus and overlays open. A person then worked through twelve checks by hand on the live site.
What the ratings mean
Supports: the site meets this criterion with no known defects.
Partially supports: some part of the site does not meet it.
Does not support: most of the site does not meet it.
Not applicable: the criterion does not apply to this site.
Level A criteria
1.1.1 Non-text Content (Level A). Supports. Every image on the tested pages has a text alternative or is explicitly marked decorative. The CMS image schema requires alt text and offers an explicit "decorative" flag, so an empty alt is a recorded editorial decision rather than an omission. The client-logo wall previously rendered 96 images with empty alt and an empty screen-reader list, because the query requested a field the document did not define; it now names all 48 clients. Decorative background art and textures correctly use an empty alt.
1.2.1 Audio-only and Video-only (Prerecorded) (Level A). Supports. Case-study pages carry short, silent, looping brand videos. They are marked `aria-hidden="true"` and removed from the tab order, carry a poster image, and present no information that the surrounding case-study copy does not already state — so they are decorative rather than informational. Any future video carrying unique information will need a text alternative.
1.2.2 Captions (Prerecorded) (Level A). Not Applicable. No media with an audio track exists on the site. All video is muted by design.
1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A). Not Applicable. No narrated or synchronized-media video exists on the site.
1.3.1 Info and Relationships (Level A). Supports. Landmarks, lists, headings, and form label associations are conveyed in markup across all 16 tested templates, with zero axe structural violations. Two defects were corrected in this round: the case-study statistics list emitted its `dd` before its `dt` (pairing every figure with the wrong label for screen readers), and case-study cards used an `h3` directly beneath the page `h1`.
1.3.2 Meaningful Sequence (Level A). Supports. DOM order matches visual order. Confirmed by a human reading a case-study page linearized; not yet confirmed with a screen reader.
1.3.3 Sensory Characteristics (Level A). Supports. Human review of the contact and services pages found no instruction depending on shape, size, colour, or position alone; controls are named by their visible labels.
1.4.1 Use of Color (Level A). Supports. Form errors are conveyed as text tied to the field, not colour alone. No chart, legend, or status indicator relies on colour by itself.
1.4.2 Audio Control (Level A). Not Applicable. Nothing on the site plays audio. All video is muted.
2.1.1 Keyboard (Level A). Supports. All interactive controls are operable by keyboard. The homepage case-study slider previously placed its off-screen slides in `inert` without providing any replacement control, leaving two of three case studies unreachable without a mouse; it now has labelled previous/next buttons with a live position counter, verified to move the slider and shift `inert` correctly. Under `prefers-reduced-motion` the section stacks vertically so every slide is directly reachable. The FAQ accordion component was not exercised on an indexed page this round, as the only page using it was empty and has been removed.
2.1.2 No Keyboard Trap (Level A). Supports. Focus enters and leaves every overlay. The navigation overlay is `inert` when closed, moves focus inward when opened, closes on Escape, and returns focus to its toggle — verified programmatically.
2.1.4 Character Key Shortcuts (Level A). Not Applicable. The site implements no single-character key shortcuts.
2.2.1 Timing Adjustable (Level A). Not Applicable. No time limits are imposed on any interaction.
2.2.2 Pause, Stop, Hide (Level A). Supports. Auto-playing looping case-study videos previously offered no way to stop them. A labelled pause/play control is now rendered over every such video and was verified to toggle playback and its own label. Videos additionally do not play at all under `prefers-reduced-motion`, where the poster image is shown instead.
2.3.1 Three Flashes or Below Threshold (Level A). Supports. Human review of the homepage and a case-study page found no flashing, strobing, or flicker. Motion is limited to slow fades, parallax, and muted video.
2.4.1 Bypass Blocks (Level A). Supports. A "Skip to content" link is the first focusable element on every one of the 16 tested routes and targets the main landmark. Landmark structure additionally allows bypassing.
2.4.2 Page Titled (Level A). Supports. Every route has a unique, descriptive `<title>` generated through the framework's metadata API.
2.4.3 Focus Order (Level A). Supports. Tab order follows the visual and logical order of each page. Two defects were corrected: the slider's off-screen slides (see 2.1.1), and scroll-reveal wrappers that could hold focus while still fully transparent — reveals now complete immediately when focus enters them.
2.4.4 Link Purpose (In Context) (Level A). Supports. Repeated "Read More" links each sit inside a card whose heading names the case study, which satisfies the in-context requirement. Each now also carries an explicit accessible name identifying its destination, so the purpose is clear from the link alone.
2.5.1 Pointer Gestures (Level A). Supports. The homepage slider was previously advanced only by continuous scroll movement; it now offers discrete single-tap previous/next controls. No other multipoint or path-based gesture exists on the site.
2.5.2 Pointer Cancellation (Level A). Supports. All controls are native buttons and links that activate on the up-event, and can be aborted by moving off the target before releasing.
2.5.3 Label in Name (Level A). Supports. Accessible names contain their visible label text; no violations detected across the tested pages.
2.5.4 Motion Actuation (Level A). Not Applicable. No functionality is operated by device motion or gestures.
3.1.1 Language of Page (Level A). Supports. `lang="en"` is set on the root element of every page.
3.2.1 On Focus (Level A). Supports. Focusing a control never triggers a change of context. Scroll-reveal animations completing on focus reveal already-present content in place; they do not navigate, submit, or reorder the page.
3.2.2 On Input (Level A). Supports. No field or control submits a form or navigates on change; submission requires activating the submit button.
3.2.6 Consistent Help (Level A). Supports. Contact routes appear in the same relative order in the header and footer on every page.
3.3.1 Error Identification (Level A). Supports. Validation rules attached per field were only ever enforced on the first field of each form, so most mandatory fields were silently optional and an invalid email address produced no error at all. All three forms now validate every field in one pass: each invalid field is described in text, marked `aria-invalid`, associated with its message via `aria-describedby`, announced through `role="alert"`, and focus moves to the first field in error. Verified for empty submissions and malformed input.
3.3.2 Labels or Instructions (Level A). Supports. Every input has a programmatically associated label, and required fields are marked both visually and for assistive technology.
3.3.7 Redundant Entry (Level A). Not Applicable. The site contains no multi-step process that asks for the same information twice.
4.1.2 Name, Role, Value (Level A). Supports. Controls use native elements or expose correct ARIA. The navigation toggle exposes `aria-expanded` and `aria-controls`; slider controls are labelled buttons with a disabled state at the ends. Zero axe violations of this rule across the tested pages.
Success criterion 4.1.1 Parsing was removed from WCAG 2.2 and so is not reported.
Level AA criteria
1.2.4 Captions (Live) (Level AA). Not Applicable. The site hosts no live audio or video.
1.2.5 Audio Description (Prerecorded) (Level AA). Not Applicable. No prerecorded synchronized media exists on the site.
1.3.4 Orientation (Level AA). Supports. No orientation lock is applied; layouts reflow in both portrait and landscape.
1.3.5 Identify Input Purpose (Level AA). Supports. Fields collecting information about the user now declare `autocomplete` (`name`, `email`, `organization`, `tel`), so browser and assistive-technology autofill works.
1.4.3 Contrast (Minimum) (Level AA). Supports. All text meets 4.5:1, or 3:1 where large. Sixteen failing nodes across five pages were corrected in this round — team names at 1.89:1, blog byline metadata at 3.6–4.2:1, a partner label at 4.26:1, and award pills at 3.57:1 — each caused by `opacity` applied to text, which composites against its backdrop and evades both visual review and default automated checks. Contrast was re-measured with inherited opacity composited against the resolved background, not just as declared colour values. A lint rule now flags low opacity on text so this class of regression is caught when it is written.
1.4.4 Resize Text (Level AA). Supports. Confirmed by a human at 200% browser zoom: text scales, nothing is clipped or overlapped, and no horizontal scrolling is introduced.
1.4.5 Images of Text (Level AA). Supports. Human review confirmed that real text is used throughout. Images containing text are limited to logos (exempt) and screenshots of client work, where the image is essential to what is being shown.
1.4.10 Reflow (Level AA). Supports. No horizontal scrolling at 320 CSS pixels on any tested route. Two failures were corrected: the team grid's role labels overflowed to 481px, and legal pages reached 645px because an unbreakable long string could not wrap. Prose paragraphs now break long strings, which protects future CMS-authored pages as well.
1.4.11 Non-text Contrast (Level AA). Supports. Form borders, control boundaries, and focus indicators meet 3:1. The focus ring was previously hardcoded to a dark ink colour and was hard to see on dark sections; it now follows the surrounding theme.
1.4.12 Text Spacing (Level AA). Supports. With the WCAG text-spacing overrides applied, no content is clipped or overlapped and no page scrolls horizontally. Card excerpts truncate by line count, so they show the same number of lines before and after the override; the full text is one link away.
1.4.13 Content on Hover or Focus (Level AA). Supports. The site uses no tooltip or popover pattern. Card call-to-action buttons that fade in on hover also appear on keyboard focus, remain while focus stays within the card, and sit inside their own card without obscuring other content.
2.4.5 Multiple Ways (Level AA). Supports. Pages are reachable through the header navigation, a footer navigation with a separate set of links, breadcrumb trails on inner pages, and archive indexes listing every case study and article.
2.4.6 Headings and Labels (Level AA). Partially Supports. Section headings and form labels describe their content, and two heading-level skips were corrected. However, the top-level heading on some pages is a layout or editorial phrase rather than a description of the page — the homepage `h1` reads "Above The Fold" and the case-study index reads "Watching it Unfold". These are CMS-authored and are being revised editorially; no code change can fix them.
2.4.7 Focus Visible (Level AA). Supports. Every focusable element renders a visible indicator; measured across the first 90 tab stops on each tested page with zero missing indicators. Two weaknesses were corrected: the indicator is now theme-aware so it is visible on dark sections, and scroll-reveal content can no longer hold focus while still transparent.
2.4.11 Focus Not Obscured (Minimum) (Level AA). Supports. A pinned promotional card previously covered the footer's legal links completely when they received focus, verified by hit-testing the focused element. It now steps aside whenever focus enters the footer. No other fixed element obscures a focused control.
2.5.7 Dragging Movements (Level AA). Supports. The homepage slider, previously driven only by continuous scroll, now provides single-pointer previous/next controls. No other dragging interaction exists.
2.5.8 Target Size (Minimum) (Level AA). Supports. Measured on rendered pages with the spacing exception applied (nearest-neighbour centre distance of at least 24px). No target fails once inline-text links and adequately spaced controls are correctly excluded.
3.1.2 Language of Parts (Level AA). Not Applicable. All content is in English; no foreign-language passages were identified.
3.2.3 Consistent Navigation (Level AA). Supports. Header and footer navigation appear in the same relative order on every page.
3.2.4 Consistent Identification (Level AA). Supports. Components with the same function carry the same label and icon throughout.
3.3.3 Error Suggestion (Level AA). Supports. Messages name the correction rather than only reporting a fault — a malformed address returns "Enter an email address like name@example.com". Each message is tied to its field.
3.3.4 Error Prevention (Legal, Financial, Data) (Level AA). Not Applicable. The public site conducts no transaction and creates no legal, financial, or data commitment. Its forms are enquiries. The form that collects banking details sits on a non-indexed route outside the scope of this report.
3.3.8 Accessible Authentication (Minimum) (Level AA). Not Applicable. The public site has no login. No cognitive-function test is imposed on any visitor.
4.1.3 Status Messages (Level AA). Supports. Form errors are inserted into a `role="alert"` region, and the slider reports its position through a polite live region. Announcement was verified by inspecting roles and live-region insertion rather than by listening with a screen reader — see the verification gap noted above.
A note on independence
We built this site, and we assessed it ourselves. That makes this a self assessment rather than an independent audit. We have tried to be straight about what is still wrong, because a conformance report that only lists successes is not much use to anyone. If you need an independent audit for a procurement process, we can point you at people who do them.
Date
This report was written on 23 August 2026 and describes the site as it was on that date. The site changes as we publish new work, so content published after that date is not covered by this assessment.