Accessibility

Accessibility Conformance Report

WCAG 2.2 Level AA, VPAT 2.5Rev

. Revised September 2026 to cover embedded video. The July 30, 2026 assessment is otherwise unchanged.

Every WCAG 2.2 Level A and AA success criterion, the conformance level we claim for it, and the evidence behind that claim. The same report is available as a PDF.

Download the report PDF, 132 KBBack to Accessibility

Open items

Two manual verification items on the third-party Cloudflare Turnstile component are still open. Both are marked in place below and listed under Third-party components. Nothing marked that way is a finding yet.

Report information

Based on VPAT® Version 2.5Rev. "Voluntary Product Accessibility Template" and "VPAT" are registered service marks of the Information Technology Industry Council (ITI).

Name of Product/Version
ravenwatchstudios.com, the public website of Raven Watch Studios. The site deploys continuously from a version-controlled source repository; this report describes the build deployed to production on July 30, 2026 (source revision 89dddfe, the accessibility remediation release).
Report Date
July 30, 2026
Product Description
A static content website built with Astro 7.1.3, with page content managed in Sanity CMS and hosting on Cloudflare Pages. At the assessment date the site comprised the following pages: home, about, games index, the Iron Latitudes game pages (overview, roadmap, media), the news index and individual news posts, press kit, contact, and a custom 404 page. The only interactive functionality is the primary navigation (including one disclosure submenu and a mobile disclosure menu), a category filter on the news index, a contact form, and a newsletter subscribe form. The contact form embeds one third-party component, Cloudflare Turnstile (see Third-Party Components below). As of the September 2026 revision the game media pages and news posts can also carry a prerecorded video clip hosted on YouTube, embedded so that nothing is requested from the video host until a visitor activates the player (see Third-Party Components). The site contains no audio-only content and no live audio or video.
Contact Information
info@ravenwatchstudios.com

Notes

  • This is a self-assessment prepared by Raven Watch Studios. It has not been certified by an independent third party.
  • This report covers WCAG 2.2 Levels A and AA only. Level AAA conformance is not claimed and Table 3 is not included. Two Level AAA criteria that were checked incidentally during the assessment (2.3.3 Animation from Interactions and 2.4.12 Focus Not Obscured, Enhanced) passed, but no Level AAA claim is made.
  • Two manual verification items on the third-party Cloudflare Turnstile component remain open and are marked in the relevant table rows below. The affected rows state exactly what has and has not been verified.
  • September 2026 revision. Video was added to the site after the assessment date. Six rows were rewritten to describe it: 1.2.1, 1.2.2, 1.2.3, 1.4.2 and 2.2.2 at Level A, and 1.2.5 at Level AA. Nothing else in this report changed.
  • The site deploys continuously. Changes made after the assessed revision are outside the scope of this report and are covered by the studio's stated practice of re-assessment after significant changes.

Evaluation methods used

  1. Automated scanning (local, before and after remediation). axe-core 4.12.1, driven through @axe-core/playwright 4.12.1 on Playwright 1.62.1 (Chromium), at a 1280x900 viewport, across all 12 routes of the site, with all WCAG 2.0, 2.1, and 2.2 Level A and AA rule tags (wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa) plus the Deque best-practice rule set. Before remediation the production baseline showed 53 failing nodes on WCAG-tagged rules (plus 73 on best-practice rules). After remediation: 0 failing nodes on all rules, all routes.
  2. Automated re-verification against production (post-deploy, same day). After the remediated build was deployed on July 30, 2026, axe-core 4.12.1 was injected into headless Chromium and re-run against https://ravenwatchstudios.com across 15 routes (every page live at that time, including all published news posts and a 404 probe) at two viewports, 1440x900 desktop and 375x812 mobile, with all WCAG 2.0/2.1/2.2 A and AA rule tags. Result: 0 violations. The cross-origin Turnstile iframe cannot be script-injected and was excluded from automated scanning; that component is assessed separately (see Third-Party Components).
  3. Manual assessment, modelled on the Accessibility Insights for Web assessment, covering the criteria automation cannot decide: scripted sequential-focus (Tab) walks across 10 routes, with 45-stop walks on 5 routes; per-stop computed-style assertions of focus indicator presence (outline style, outline width, box shadow); heading hierarchy and landmark checks on all 12 routes; reflow at a 320px viewport with overflow masking neutralised so hidden overflow cannot conceal a failure; the full 1.4.12 text-spacing override set applied at 320px; 200% text resize on 4 routes; 640x360 landscape orientation; emulated prefers-reduced-motion; programmatic target-size measurement of every target against the 24x24 rule and both of its exceptions; and focus-obscured overlap measurement against the sticky header at 1280x700, per focus stop. All 8 WCAG 2.2 additions at Levels A, AA, and AAA present in the assessment model were checked explicitly.
  4. Pixel-measured contrast for the 52 text nodes axe-core returned as "needs review" (text over gradients, over the hero backdrop, and inside cards with image headers). Method: hide the element's own ink, screenshot its exact bounding box, compute the relative luminance of every pixel of the true backdrop, take the worst (minimum contrast) pixel, and compare it against the element's computed foreground colour with the correct large-text threshold applied. Result: 0 failures in 52 checks, measured range 4.77:1 to 17.59:1.
  5. Live browser session (July 30, 2026), in desktop Chrome on the production contact page, closing the assessment's two open third-party items: a physical keyboard walk into and through the Cloudflare Turnstile widget with the focused element sampled at every stop and each stop screenshotted (3 internal stops, visible focus indicator on each, clean exit, no trap), and inspection of the widget region through the browser's host-visible accessibility view (no named frame node exposed; the internals sit in a closed shadow root). The widget completed non-interactively in this session; no interactive challenge could be induced. Results are recorded in Table 1 rows 2.1.1 and 4.1.2, Table 2 row 2.4.7, and Third-Party Components.
  6. Final verification of the expanded site (July 30, 2026). The site grew from 12 to 17 routes on the assessment date (an accessibility statement, this conformance report, and redesigned game-area pages). The full automated scan was re-run across all 17 routes at two viewports (1440x900 and 375x812) with the same WCAG 2.0/2.1/2.2 Level A and AA rule tags: 0 violations. The raw JSON output is archived in the site repository (a11y-results/) as the audit trail behind this report, and the scan is preserved as a repeatable command that fails the check on any violation.

Applicable standards and guidelines

This report covers the degree of conformance for the following accessibility standard/guidelines:

Standards and guidelines covered by this report, and the levels included.
Standard or guidelineIncluded in report
Web Content Accessibility Guidelines 2.2
  • Level A (Yes)
  • Level AA (Yes)
  • Level AAA (No)

Terms

The terms used in the Conformance Level information are defined as follows:

Supports
The functionality of the product has at least one method that meets the criterion without known defects or meets with equivalent facilitation.
Partially Supports
Some functionality of the product does not meet the criterion.
Does Not Support
The majority of product functionality does not meet the criterion.
Not Applicable
The criterion is not relevant to the product.
Not Evaluated
The product has not been evaluated against the criterion. This can only be used in WCAG Level AAA criteria.

WCAG 2.2 Report

Note: When reporting on conformance with the WCAG 2.2 Success Criteria, they are scoped for full pages, complete processes, and accessibility-supported ways of using technology as documented in the WCAG 2.2 Conformance Requirements.

Table 1: Success Criteria, Level A

All results describe the remediated build deployed July 30, 2026, verified locally and re-verified against production the same day. The table scrolls sideways on narrow screens.

WCAG 2.2 Level A success criteria, conformance level, and remarks for ravenwatchstudios.com as deployed July 30, 2026.
CriteriaConformance levelRemarks and explanations
1.1.1 Non-text Content (Level A)SupportsEvery image carries an alt attribute. Informative images (blog heroes, roadmap phase art) carry descriptive text; decorative brand marks and preview thumbnails inside labelled download links use empty alt; ornamental glyphs (arrow characters, Roman numeral counters) are marked aria-hidden. Verified per image across every route, assessing quality of the text as well as presence.
1.2.1 Audio-only and Video-only (Prerecorded) (Level A)SupportsAny video-only (silent) clip is published with a text description of its visual content beside the player, and the publishing template will not accept a clip without one. No audio-only content is published.
1.2.2 Captions (Prerecorded) (Level A)SupportsEvery prerecorded video with an audio track carries captions authored by the studio, not generated automatically, supplied to the player as its caption track and enabled by default. The same text is published as a downloadable transcript beside the player.
1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A)SupportsEvery prerecorded video is published with a media alternative beside the player: a downloadable transcript that includes any dialogue and a description of the visual content, and a descriptive text summary that can be read without playing the clip.
1.3.1 Info and Relationships (Level A)SupportsRemediated during this engagement. Heading hierarchy corrected on 7 routes (card and list titles promoted to their true level; visually hidden headings added where a section had none); verified after: zero skipped heading levels and exactly one h1 on every route. A main landmark was added to the shared layout; all navigation landmarks are named (Primary, Primary mobile, Social, Footer); landmarks verified on 12 of 12 routes. Form labels are visible and programmatically associated; hints and errors are linked via aria-describedby.
1.3.2 Meaningful Sequence (Level A)SupportsThe DOM order matches the visual presentation order on every page (skip link, brand, navigation, main content, footer). Verified through the scripted focus-order walks and the structural checks; no CSS reordering is used that would diverge reading order from visual order.
1.3.3 Sensory Characteristics (Level A)SupportsNo instruction on the site relies on shape, colour, size, orientation, or sound. Links and controls are identified by visible text labels.
1.4.1 Use of Color (Level A)SupportsRemediated during this engagement. The one instance found (news category filter chips signalling their selected state by colour alone) now also exposes state programmatically via aria-pressed. No other information is conveyed by colour alone.
1.4.2 Audio Control (Level A)SupportsVideo never plays automatically. The player loads only after the visitor activates it, and the player provides pause and volume controls.
2.1.1 Keyboard (Level A)SupportsRemediated during this engagement. The Iron Latitudes navigation submenu was unreachable by keyboard (a transitioned visibility reveal left submenu links non-focusable during Tab traversal); it is now a scripted disclosure with a dedicated trigger button, and a noscript fallback restores a CSS-only submenu without JavaScript. Verified after: scripted Tab walks across 10 routes reach every interactive element, including all submenu items and the full 7-destination mobile menu. Third-party component: keyboard focus enters the Cloudflare Turnstile widget on the contact page (3 stops) and exits cleanly. In its default managed mode Turnstile presents no interactive challenge. Checked in a live Chrome session on July 30, 2026: the widget completed non-interactively (success state, no challenge of any kind presented, so nothing required operation), and the vendor's escalated interactive challenge could not be made to appear from the client side; its keyboard operability therefore remains unverified and is Cloudflare's surface. What the live session verified by keyboard alone: focus enters the widget, traverses its 3 internal stops, and exits cleanly to the next control, with a visible focus indicator observed on every stop. Independent of the escalated case, a documented alternative to the widget exists: a visible email address, programmatically part of the form (see 3.3.8 and Third-Party Components).
2.1.2 No Keyboard Trap (Level A)SupportsVerified by 45-stop keyboard walks on 5 routes; focus always advanced and never trapped. This was verified explicitly for the embedded Cloudflare Turnstile widget: focus enters it, traverses its 3 stops, and exits to the next control.
2.1.4 Character Key Shortcuts (Level A 2.1 and 2.2)Not ApplicableThe site implements no keyboard shortcuts, single-character or otherwise.
2.2.1 Timing Adjustable (Level A)Not ApplicableThe content sets no time limits. There are no sessions, timeouts, or timed interactions on this static site.
2.2.2 Pause, Stop, Hide (Level A)SupportsThere is no auto-updating, blinking, or scrolling content. The only motion is a brief run-once entrance transition on the home hero, which is additionally disabled entirely when the user requests reduced motion (verified under emulated prefers-reduced-motion). Moving content is limited to video that the visitor starts, and can be paused or stopped with the player controls.
2.3.1 Three Flashes or Below Threshold (Level A)SupportsThe site contains no flashing content.
2.4.1 Bypass Blocks (Level A)SupportsRemediated during this engagement. A "Skip to main content" link is now the first element on every page; it is visually revealed on focus. Verified after: first Tab reveals the link, activating it moves focus to the main landmark, and the next Tab lands inside main content rather than back in the navigation.
2.4.2 Page Titled (Level A)SupportsRemediated during this engagement. Two routes shipped an identical title (the games index passed the flagship game's SEO metadata through unchanged); the games index now has its own title. Verified after: unique, descriptive titles on every route, re-checked across the expanded 17-route site at final verification.
2.4.3 Focus Order (Level A)SupportsVerified by scripted Tab walks: focus order matches the visual order (skip link, brand, navigation, main, footer) on every route checked.
2.4.4 Link Purpose (In Context) (Level A)SupportsAll link text was reviewed. Back links were reworded from a bare destination name to "Back to [destination]" so their purpose is clear out of context. Press kit download links were restructured so the visible text names the asset being downloaded.
2.5.1 Pointer Gestures (Level A 2.1 and 2.2)Not ApplicableThe site uses no multipoint or path-based gestures. All interaction is single activation of links, buttons, and form fields.
2.5.2 Pointer Cancellation (Level A 2.1 and 2.2)SupportsAll pointer interaction uses native links, buttons, and form controls, which activate on the up event. No down-event activation is implemented anywhere on the site.
2.5.3 Label in Name (Level A 2.1 and 2.2)SupportsVerified during the image and link review. The press kit download tiles were restructured so that each control's accessible name is a strict superset of its visible label (a visually hidden "Download the..." prefix on the visible asset name, with the preview image made decorative).
2.5.4 Motion Actuation (Level A 2.1 and 2.2)Not ApplicableNo functionality is operated by device motion or user motion.
3.1.1 Language of Page (Level A)Supportslang="en" is set on the html element on every route (0 violations on the language rules across the 17-route final scan).
3.2.1 On Focus (Level A)SupportsReceiving focus changes no context anywhere on the site. The navigation submenu reveals on focus, but focus does not move, no window opens, and the disclosure is dismissible in place with Escape (see 1.4.13).
3.2.2 On Input (Level A)SupportsNo form control changes context on input. Both forms submit only on explicit activation of a submit button. The news category filter operates on explicit button activation and announces its result through a polite status region rather than moving focus.
3.2.6 Consistent Help (Level A 2.2 only)SupportsThe "Get in Touch" contact mechanism occupies the same relative position in the header on every route, and the Contact link occupies the same relative position in the footer on every route (both are rendered by the single shared layout). Before remediation the header mechanism was clipped off-screen at narrow viewports; the mobile menu now carries it in the same relative order at every width.
3.3.1 Error Identification (Level A)SupportsRemediated during this engagement. Both forms (contact, newsletter subscribe) now use scripted validation that writes a text error into the DOM, associates it with the field via aria-describedby, sets aria-invalid, and moves focus to the first offending field so the label and error are announced together. Errors clear on input. Native transient validation bubbles are no longer the only error signal.
3.3.2 Labels or Instructions (Level A)SupportsRemediated during this engagement. Both forms now have visible, persistent, programmatically associated labels (previously visually hidden labels with placeholder text as the only visible labelling). The email field carries an associated hint explaining why the address is requested.
3.3.7 Redundant Entry (Level A 2.2 only)Not ApplicableThere is no multi-step process on the site. The contact form is a single step and asks for no piece of information twice.
4.1.1 Parsing (Level A)Not ApplicableWCAG 2.2, the version this report covers, removed this success criterion (it is obsolete per the W3C). Per the VPAT 2.5 template guidance, it does not apply to a WCAG 2.2 report. For reference, under WCAG 2.0 and 2.1 the W3C's September 2023 errata direct that this criterion is always considered satisfied.
4.1.2 Name, Role, Value (Level A)Partially SupportsRemediated during this engagement for all site-authored components: the news filter chips are now real buttons exposing selected state via aria-pressed; the submenu disclosure and the mobile menu button expose aria-expanded and aria-controls; the submenu trigger has an accessible name. All names, roles, and states of first-party controls were verified in the post-fix walks. Third-party component: checked in a live Chrome session on July 30, 2026. The Turnstile widget renders inside a closed shadow root, and the host-visible accessibility view exposed no named frame node for the widget region, so a meaningful accessible name for the challenge frame could not be confirmed from outside the vendor surface. This row is accordingly graded Partially Supports on the conservative reading: every site-authored component supports the criterion, and the one exception is the vendor frame, whose naming is Cloudflare's surface (see Third-Party Components). The form remains fully usable regardless: in managed mode the check runs without user interaction, and the documented email alternative is programmatically part of the form.

Table 2: Success Criteria, Level AA

All results describe the remediated build deployed July 30, 2026, verified locally and re-verified against production the same day. The table scrolls sideways on narrow screens.

WCAG 2.2 Level AA success criteria, conformance level, and remarks for ravenwatchstudios.com as deployed July 30, 2026.
CriteriaConformance levelRemarks and explanations
1.2.4 Captions (Live) (Level AA)Not ApplicableThe site contains no live audio content.
1.2.5 Audio Description (Prerecorded) (Level AA)Partially SupportsA descriptive text alternative for the visual content is provided for every prerecorded video. A separately narrated audio description track is not provided at this time. Gameplay clips are published without narration, so the descriptive text carries the visual information.
1.3.4 Orientation (Level AA 2.1 and 2.2)SupportsNo orientation lock. Verified at 640x360 landscape: all content renders and the mobile navigation panel scrolls within the dynamic viewport height.
1.3.5 Identify Input Purpose (Level AA 2.1 and 2.2)SupportsThe personal-data fields (name, email) on both forms carry the corresponding autocomplete tokens.
1.4.3 Contrast (Minimum) (Level AA)SupportsRemediated during this engagement. 44 failing text nodes across all routes, clustered on two design tokens, were fixed by retuning one token (3.31:1 raised to a 5.31:1 minimum) and introducing a lighter tint for small accent-coloured text (4.74:1 minimum). The semi-transparent sticky header, which composited below 4.5:1 over light scrolled content, was raised in opacity (7.59:1 measured empirically over the lightest content on the site). The 52 nodes automated scanning could not decide (text over gradients and imagery) were each resolved by worst-pixel measurement of the true backdrop: 0 failures, range 4.77:1 to 17.59:1.
1.4.4 Resize Text (Level AA)SupportsVerified with root font size doubled on 4 representative routes: no horizontal scrolling, no loss of content or functionality.
1.4.5 Images of Text (Level AA)SupportsThe only image containing text is the studio crest, a logotype, which the criterion exempts. No other images of text are used.
1.4.10 Reflow (Level AA 2.1 and 2.2)SupportsRemediated during this engagement. At a 320px viewport the page formerly laid out to 471px with the overflow masked, leaving navigation items unreachable; the masking was removed and the navigation replaced with a true mobile disclosure menu. Verified after: document scrollWidth equals 320 on all content routes, measured with overflow masking neutralised so a failure cannot hide. The embedded Turnstile widget, fixed at 300px, overflowed a 320px viewport by 8px; the widget's compact build is now requested below 420px (verified: widget box 280x148, scrollWidth 320).
1.4.11 Non-text Contrast (Level AA 2.1 and 2.2)SupportsRemediated during this engagement. Form field and filter chip boundaries moved from a 1.24:1 hairline to a dedicated token measuring 3.47:1 against the page background. The new global focus indicator is a dual ring (light ring on dark halo) so that at least one edge always exceeds 3:1 on any backdrop, including the site's lightest tile (verified visually there). Accent-filled controls and boundaries measure 3.73:1 or better.
1.4.12 Text Spacing (Level AA 2.1 and 2.2)SupportsThe full 1.4.12 override set (line height 1.5, letter spacing 0.12em, word spacing 0.16em, paragraph spacing 2em) was applied at a 320px viewport: no clipping or loss of content in any overflow-hidden container.
1.4.13 Content on Hover or Focus (Level AA 2.1 and 2.2)SupportsRemediated during this engagement. The navigation submenu (revealed on hover and focus) is now dismissible with Escape without moving pointer or focus, hoverable (the pointer can travel into it), and persistent until dismissed. Escape dismissal was verified from all three possible focus positions, including a regression found and fixed during verification in which returning focus re-opened the menu. The mobile menu has the same Escape behaviour.
2.4.5 Multiple Ways (Level AA)SupportsEvery page is reachable through more than one mechanism: the persistent header navigation (all destinations, on every route), the footer navigation (repeated on every page), the news index listing all posts, and an XML sitemap generated at build time.
2.4.6 Headings and Labels (Level AA)SupportsHeadings describe their sections (verified during the heading hierarchy review; sections without a visible heading received a descriptive, visually hidden one). All form labels are visible and describe the field's purpose, with an associated hint where purpose needed explaining.
2.4.7 Focus Visible (Level AA)Partially SupportsSite-authored content supports. A global dual-ring focus indicator was added (no visible indicator existed on form fields before, where the outline had been suppressed), and the scripted walks assert a computed outline plus box shadow on every one of the site's own focusable elements, on every route. The exception: the 3 focus stops inside the third-party Cloudflare Turnstile widget on the contact page are rendered on a closed vendor surface that the host page cannot style. A live Chrome session on July 30, 2026 observed a clearly visible focus indicator on all 3 internal stops (screenshot-verified per stop); that styling remains vendor-supplied and was observed in one browser, so this row conservatively remains Partially Supports rather than claiming a surface Cloudflare controls. See Third-Party Components.
2.4.11 Focus Not Obscured (Minimum) (Level AA 2.2 only)SupportsVerified by 45-stop Tab walks on 5 routes at 1280x700, measuring the focused element's box against the sticky header's box at every step: maximum overlap 0px on every route. Hardened further with scroll padding equal to the header height plus margin, so in-page anchors cannot land content under the header.
2.5.7 Dragging Movements (Level AA 2.2 only)Not ApplicableThe site implements no dragging interaction.
2.5.8 Target Size (Minimum) (Level AA 2.2 only)SupportsEvery target was measured programmatically against the 24x24 CSS pixel rule and both relevant exceptions (inline targets, the 24px spacing circle). Zero failures were found even before remediation (undersized targets all satisfied the spacing exception); targets were then hardened to meet the 24x24 rule outright rather than by exception, so future layout edits cannot silently regress this criterion.
3.1.2 Language of Parts (Level AA)SupportsAll content is in English; no passage in another language appears on the site. The page language is declared (see 3.1.1).
3.2.3 Consistent Navigation (Level AA)SupportsThe header navigation, footer navigation, and contact mechanism appear in the same relative order on every route. Navigation is rendered by a single shared layout component, so ordering cannot diverge between pages.
3.2.4 Consistent Identification (Level AA)SupportsComponents with the same function are identified identically across the site (navigation, disclosure buttons, form fields, status regions). They are single shared implementations rendered on every route by the shared layout, so identification is consistent by construction and was consistent as observed in the walks.
3.3.3 Error Suggestion (Level AA)SupportsRemediated during this engagement. Form error messages state what is wrong and suggest the correction (for example, an invalid email error explains that the address is missing an @ or a domain and asks the user to check it).
3.3.4 Error Prevention (Legal, Financial, Data) (Level AA)Not ApplicableThe site carries out no legal commitments, financial transactions, or user-data modification. The only submissions are a contact message and a newsletter signup.
3.3.8 Accessible Authentication (Minimum) (Level AA 2.2 only)SupportsThe only authentication-like step is the Cloudflare Turnstile check on the contact form. In its default managed mode it presents no cognitive function test, so the criterion is met outright. For the case where the vendor escalates to an interactive challenge, the form provides a conforming alternative: a visible note, programmatically part of the form, offering a direct email address (also presented as a prominent link beside the form), so no cognitive function test is ever the only path to contact. The Enhanced criterion (3.3.9, Level AAA) is not claimed. See Third-Party Components.
4.1.3 Status Messages (Level AA)SupportsRemediated during this engagement. The news filter announces its result ("3 posts shown for Dev Log") through a visually hidden polite, atomic status region. Both forms deliver submission feedback, including the failure path, through polite, atomic status regions.

Third-Party Components: Cloudflare Turnstile and YouTube

The contact page embeds Cloudflare Turnstile (loaded from challenges.cloudflare.com), a bot-detection widget that runs before a contact message is sent. Its internals render on a closed vendor surface: the host page cannot style it, and its frame contents are not inspectable from the host document or in headless automation. This section records exactly what this assessment did and did not verify, and who owns what.

Verified by this assessment (from the host page):

  • Keyboard focus enters the widget, traverses 3 stops, and exits cleanly to the next control. There is no keyboard trap (2.1.2).
  • The widget no longer breaks reflow at narrow widths: below 420px the compact build is requested, and the document lays out at 320px with no horizontal overflow (1.4.10).
  • In default managed mode, no cognitive function test is presented, and a conforming alternative (a visible, programmatically associated email address) is provided against the case where the vendor escalates to an interactive challenge (3.3.8).
  • All labels, errors, hints, and status messaging surrounding the widget are site-authored and conform as documented in Tables 1 and 2.

Checked in a live Chrome session (July 30, 2026), completing the assessment's two open items:

  1. The accessible name of the challenge frame: could not be confirmed. The widget renders inside a closed shadow root, and the host-visible accessibility view exposed no named frame node for the widget region. Table 1, row 4.1.2 is graded Partially Supports on that conservative basis.
  2. The escalated interactive challenge: did not present and could not be forced from the client side (the widget completed non-interactively, with no cognitive or interactive test). Its keyboard operability remains vendor-owned and unverified; the documented email alternative covers that case regardless. Recorded in Table 1, row 2.1.1.
  3. Observed in the same session, improving on the headless result: a clearly visible focus indicator on each of the widget's 3 internal stops, screenshot-verified. Recorded in Table 2, row 2.4.7, which conservatively remains Partially Supports because that styling is vendor-supplied.

Not verifiable from the host page, and owned by Cloudflare:

  • The naming, rendering, contrast, and semantics of everything inside the widget, and the focus styling of its internal stops across browsers.

YouTube, the embedded video player (added September 2026):

  • Nothing is requested from YouTube or from any other Google host until the visitor activates a clip. Until then the page shows a still frame served from the studio's own content delivery network, inside a button labelled with the clip's title. The player is created only on activation, and it is loaded from the privacy-enhanced host youtube-nocookie.com.
  • The player is the vendor's, so its internal controls, its contrast and its keyboard behaviour are Google's surface and Google's claim to make, in the same way the Turnstile internals are Cloudflare's. What the studio controls and has verified from the host page: the activation control is a real button, reachable and operable by keyboard, carrying the clip's title in its accessible name; the frame is given the clip's title as its own accessible name; focus moves into the player on activation; and captions are requested on by default.
  • Nothing about a clip depends on the player working. The summary, the description of what happens on screen, the caption status and the transcript download are static markup below the frame, present before activation and after it, and present with scripting disabled. Where scripting is off, the still becomes a plain link to the clip's page on YouTube.

Cloudflare and Google each publish their own accessibility documentation; conformance claims about a vendor's own internals are the vendor's to make. This report claims only what is listed as verified by this assessment.

Scope of This Report and Honest Limits

  • Self-assessment. This report was produced by Raven Watch Studios about its own website. It has not been audited or certified by an independent third party.
  • Assessment date. All testing was performed on July 30, 2026. The initial audit and remediation ran against the build deployed that day (source revision 89dddfe), with a same-day post-deploy re-scan of production showing zero violations. The site was then expanded and redesigned the same day, and the full scan was re-run across all 17 routes of the expanded build (zero violations, archived), with the two open third-party items closed in a live browser session against the production contact page.
  • What "zero automated violations" does and does not claim. Automated rules detect a minority of possible WCAG failures. A clean axe-core result means no failure was found by any of the roughly 100 applicable automated rules on any scanned page; it does not by itself demonstrate conformance. The conformance claims in this report rest on the automated results combined with the manual assessment described under Evaluation Methods, which covered keyboard operation, focus behaviour, structure and semantics, reflow, spacing, motion, target sizes, and pixel-measured contrast where automation could not decide.
  • Not yet performed. Assistive-technology sessions with real screen readers (NVDA, JAWS, VoiceOver) have not been conducted. The assessment verified the programmatic properties those tools consume (names, roles, states, landmarks, live regions), but observed screen reader behaviour is a known gap that the studio intends to close.
  • Conformance formulation. On the basis above, the site conforms to WCAG 2.2 Level AA based on self-assessment, with the exceptions documented in this report: the Cloudflare Turnstile items under Third-Party Components, and 1.2.5 Audio Description (Prerecorded), where a descriptive text alternative is provided for every clip and a separately narrated audio description track is not.

Download the report PDF, 132 KBBack to Accessibility