Product and vendor information
Applicable standards
WCAG 2.1 Level A and AA, all 50 criteria. Section 508 incorporates WCAG 2.0 Level AA, a strict subset, so conformance below satisfies it. ADA Title II adopts WCAG 2.1 Level AA directly. Level AAA was not evaluated.
Evaluation methods used
- Automated rule checking with axe-core 4.10.2, plus checks it does not carry: contrast under both color schemes, reflow measured by geometry at a real 320 pixel viewport, and focus visibility under a real keyboard press.
- 6 document(s) validated against ISO 14289-1 (PDF/UA-1) with veraPDF, the reference validator. Only validator rules that map to a WCAG success criterion are reported here; PDF/UA is a wider standard than the one this report applies.
- 23 criteria that cannot be settled by a machine were decided by a person against a screen reader and a keyboard, by Brian Beals on 2026-08-29. Recorded in verify-2026-08-30.yml, retained with the scan findings so this report can be reproduced.
Limitation on assistive technology testing. This evaluation did not include screen reader testing. Criteria that depend on assistive technology behavior (4.1.2) were assessed by inspecting the browser accessibility tree and observing the DOM conditions that determine whether a change is announced. Those conditions were satisfied, which is a strong indicator and not the same as hearing the announcement.
WCAG 2.1 Level A
| Criterion | Lvl | Conformance | Remarks and explanations |
|---|---|---|---|
| 1.1.1 Non-text Content | A | Supports | The only images with empty alt are the BB brand mark, which sits immediately beside text naming the company. Labelling it would make a screen reader announce the name twice, so it is marked decorative deliberately. Content images carry descriptive alt text. https://brianbeals.com/accessibility: svg%3E marked decorative https://brianbeals.com/accessibility/healthcare: svg%3E marked decorative https://brianbeals.com/accessibility/maryland: svg%3E marked decorative |
| 1.2.1 Audio-only and Video-only (Prerecorded) | A | Not Applicable | No audio or video elements across 20 pages. |
| 1.2.2 Captions (Prerecorded) | A | Not Applicable | No audio or video elements across 20 pages. |
| 1.2.3 Audio Description or Media Alternative | A | Not Applicable | No audio or video elements across 20 pages. |
| 1.3.1 Info and Relationships | A | Supports | Landmarks present on every page, one h1 per page, no heading level skips. All six published documents are tagged, declare a language, carry a usable title, and label their figures. Landmarks present, one h1 per page, no heading level skips. All 6 document(s) evaluated are tagged, declare a language, carry a usable title, and label their figures. All 6 were also validated against ISO 14289-1 with veraPDF and raised nothing that maps to a success criterion. |
| 1.3.2 Meaningful Sequence | A | Supports | Verified by listening, not by inspection. The page was read straight through with VoiceOver on macOS; the spoken order carries the same meaning as the visual layout. This is the criterion this practice declines to score mechanically, so it was settled the way the practice says it must be. Not determinable by scanning. |
| 1.3.3 Sensory Characteristics | A | Supports | No instruction on any page depends on shape, size, position, or sound. Checked by search for positional phrasing across all page sources; none found. Not determinable by scanning. |
| 1.4.1 Use of Color | A | Supports | Color is never the sole carrier of meaning. Links are underlined with an offset rather than distinguished by color alone, and no status or category is communicated by color without a text label. Not determinable by scanning. |
| 1.4.2 Audio Control | A | Not Applicable | No audio or video elements across 20 pages. |
| 2.1.1 Keyboard | A | Supports | Every interactive element is a native link or button and is focusable. No custom widgets, no click handlers on non-interactive elements. All interactive elements are native and focusable. |
| 2.1.2 No Keyboard Trap | A | Supports | Tabbed from the address bar to the end of the page and back with Shift+Tab, using the keyboard only. Focus never became stuck. Supported structurally: all 19 focusable elements are native anchors, there is no positive tabindex anywhere, and the page carries no modal, iframe, or third-party embed. Not determinable by scanning. |
| 2.1.4 Character Key Shortcuts | A | Not Applicable | No single-character key shortcuts are implemented anywhere in the evaluated set. Not determinable by scanning. |
| 2.2.1 Timing Adjustable | A | Not Applicable | No time limits exist. Nothing on the site expires, auto-advances, or requires a response within a period. Not determinable by scanning. |
| 2.2.2 Pause, Stop, Hide | A | Not Applicable | No animated, moving, or auto-updating content. |
| 2.3.1 Three Flashes or Below Threshold | A | Supports | No animation anywhere, so nothing can flash. |
| 2.4.1 Bypass Blocks | A | Supports | Skip link present, first in tab order, target exists and is focusable. |
| 2.4.2 Page Titled | A | Supports | All 20 pages carry a unique, non-empty title. All 6 document(s) evaluated are tagged, declare a language, carry a usable title, and label their figures. All 6 were also validated against ISO 14289-1 with veraPDF and raised nothing that maps to a success criterion. |
| 2.4.3 Focus Order | A | Supports | No positive tabindex anywhere, so DOM order governs focus order, and DOM order follows the visual order on every page. No positive tabindex anywhere; DOM order governs. |
| 2.4.4 Link Purpose (In Context) | A | Supports | Every repeated link name resolves to one destination, so each has a single unambiguous purpose. Consistent naming across routes is required by 3.2.4. https://brianbeals.com/sitemap-page: 'About' repeats, all to https://brianbeals.com/about https://brianbeals.com/sitemap-page: 'Accessibility' repeats, all to https://brianbeals.com/accessibility |
| 2.5.1 Pointer Gestures | A | Not Applicable | No path-based or multipoint gesture detected: no touch or motion handlers, draggable elements, slider roles, or map containers. |
| 2.5.2 Pointer Cancellation | A | Supports | All pointer interaction is standard activation on native links and buttons. No down-event actions, no drag gestures, no custom pointer handling. Not determinable by scanning. |
| 2.5.3 Label in Name | A | Supports | Every aria-label contains its element's visible text, so speech input users can target controls by what they see. |
| 2.5.4 Motion Actuation | A | Not Applicable | No device motion handler detected: no touch or motion handlers, draggable elements, slider roles, or map containers. |
| 3.1.1 Language of Page | A | Supports | lang set on all 20 pages. All 6 document(s) evaluated are tagged, declare a language, carry a usable title, and label their figures. All 6 were also validated against ISO 14289-1 with veraPDF and raised nothing that maps to a success criterion. |
| 3.2.1 On Focus | A | Supports | Confirmed during the keyboard pass. No element changes context on receiving focus: nothing navigates, opens, submits, or reflows before activation. Not determinable by scanning. |
| 3.2.2 On Input | A | Not Applicable | No form controls exist in the evaluated set, so no change of context on input is possible. Scope note: the evaluated set is the 19 public pages reachable by crawl. The site also carries two unlinked pages with form controls, /login and /tools/account-intel, which are not linked from any public page and were not in this evaluation. They are named here rather than omitted. Not determinable by scanning. |
| 3.3.1 Error Identification | A | Not Applicable | No form controls and therefore no error states in the evaluated set. Scope note: the evaluated set is the 19 public pages reachable by crawl. The site also carries two unlinked pages with form controls, /login and /tools/account-intel, which are not linked from any public page and were not in this evaluation. They are named here rather than omitted. Not determinable by scanning. |
| 3.3.2 Labels or Instructions | A | Supports | Every form control carries a label or an explicit accessible name. |
| 4.1.1 Parsing | A | Supports | No duplicate id values. Obsolete and removed in WCAG 2.2. Reported for 2.1 completeness only. |
| 4.1.2 Name, Role, Value | A | Supports | Every control has a non-empty accessible name in the browser accessibility tree. Custom widget state needs AT confirmation. Assessed without assistive technology; see the limitation above. Scan reads the real accessibility tree. Custom widgets still need AT confirmation of state changes. |
WCAG 2.1 Level AA
| Criterion | Lvl | Conformance | Remarks and explanations |
|---|---|---|---|
| 1.2.4 Captions (Live) | AA | Not Applicable | No audio or video elements across 20 pages. |
| 1.2.5 Audio Description (Prerecorded) | AA | Not Applicable | No audio or video elements across 20 pages. |
| 1.3.4 Orientation | AA | Supports | No CSS locks or rotates content by orientation. |
| 1.3.5 Identify Input Purpose | AA | Not Applicable | No form controls exist in the evaluated set, so there is no input purpose to identify. Scope note: the evaluated set is the 19 public pages reachable by crawl. The site also carries two unlinked pages with form controls, /login and /tools/account-intel, which are not linked from any public page and were not in this evaluation. They are named here rather than omitted. Not determinable by scanning. |
| 1.4.3 Contrast (Minimum) | AA | Supports | Zero failures across 20 pages in both color schemes. |
| 1.4.4 Resize Text | AA | Supports | No viewport restriction on zoom, and no fixed-height text containers (confirmed by the 1.4.12 spacing override producing no clipping). |
| 1.4.5 Images of Text | AA | Supports | The images the scan flagged are a photograph of the principal, not images of text. No text is presented as an image anywhere in the evaluated set. Not determinable by scanning. |
| 1.4.10 Reflow | AA | Supports | No horizontal scrolling at a 320px viewport on any of 20 pages. |
| 1.4.11 Non-text Contrast | AA | Supports | Control borders and the focus indicator all clear 3:1, confirmed by the scan. Control borders and focus indicator all clear 3:1. |
| 1.4.12 Text Spacing | AA | Supports | No clipping or scrolling with the 1.4.12 override values applied. |
| 1.4.13 Content on Hover or Focus | AA | Not Applicable | No content appears on hover or focus. There are no tooltips, popovers, or hover-revealed panels in the evaluated set. Not determinable by scanning. |
| 2.4.5 Multiple Ways | AA | Partially Supports | A site map exists at /sitemap-page but is linked from only 19 of 20 pages. |
| 2.4.6 Headings and Labels | AA | Supports | Headings and links were reviewed through the VoiceOver rotor, heard as bare lists without surrounding context, which is how a screen reader user encounters them. Eleven section headings under one h1 with no level skips, each describing the section beneath it. All 19 link texts are distinct and self-describing; no duplicates and no generic 'click here' or 'read more'. Not determinable by scanning. |
| 2.4.7 Focus Visible | AA | Supports | Visible focus indicator confirmed under a real keyboard press. |
| 3.1.2 Language of Parts | AA | Supports | No passage declares a language other than the page language. A passage in another language with no lang attribute cannot be detected by scanning; none was observed in review. |
| 3.2.3 Consistent Navigation | AA | Supports | Navigation appears in the same relative order on every page, from a shared layout component. Not determinable by scanning. |
| 3.2.4 Consistent Identification | AA | Supports | Components with the same function carry the same accessible name throughout, from shared components rather than per-page markup. Not determinable by scanning. |
| 3.3.3 Error Suggestion | AA | Not Applicable | No form controls and therefore no errors to suggest corrections for. Scope note: the evaluated set is the 19 public pages reachable by crawl. The site also carries two unlinked pages with form controls, /login and /tools/account-intel, which are not linked from any public page and were not in this evaluation. They are named here rather than omitted. Not determinable by scanning. |
| 3.3.4 Error Prevention (Legal, Financial, Data) | AA | Not Applicable | The site takes no legal, financial, or data-modifying commitments. Nothing is submitted, purchased, or deleted. Not determinable by scanning. |
| 4.1.3 Status Messages | AA | Not Applicable | No status messages in the product. Scan verifies the DOM conditions that make an announcement possible. Hearing it requires a screen reader; the ACR states which was done. |
This is a self-assessment unless stated otherwise. It was not produced by an independent third-party auditor. A contracting officer requiring independent verification should request a third-party audit.