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.
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 image added is the BB brand mark, empty alt, decorative beside text that already names the company.'' https://brianbeals.com/accessibility: svg%3E marked decorative All 4 document(s) evaluated are tagged, declare a language, carry a usable title, and label their figures. |
| 1.2.1 Audio-only and Video-only (Prerecorded) | A | Not Applicable | No audio or video elements across 15 pages. |
| 1.2.2 Captions (Prerecorded) | A | Not Applicable | No audio or video elements across 15 pages. |
| 1.2.3 Audio Description or Media Alternative | A | Not Applicable | No audio or video elements across 15 pages. |
| 1.3.1 Info and Relationships | A | Supports | Landmarks, one h1 per page and no level skips confirmed on every page evaluated. Lists use list elements. No data tables in the product. Landmarks present, one h1 per page, no heading level skips. All 4 document(s) evaluated are tagged, declare a language, carry a usable title, and label their figures. |
| 1.3.2 Meaningful Sequence | A | Supports | Reading order follows DOM order. No CSS positioning or flex ordering reverses the sequence of meaningful content. Not determinable by scanning. |
| 1.3.3 Sensory Characteristics | A | Supports | No instruction depends on shape, size, position, or sound. Not determinable by scanning. |
| 1.4.1 Use of Color | A | Supports | Body links are underlined, so color is not the sole means of identifying them. Status messages pair color with text. Not determinable by scanning. |
| 1.4.2 Audio Control | A | Not Applicable | No audio or video elements across 15 pages. |
| 2.1.1 Keyboard | A | Supports | All interactive elements are native anchor, button or input. The one scrollable region was made focusable during this evaluation. Operated end to end by keyboard. All interactive elements are native and focusable. |
| 2.1.2 No Keyboard Trap | A | Supports | No modal dialogs and no custom focus management. Tab traversal exits every component and reaches browser chrome. Not determinable by scanning. |
| 2.1.4 Character Key Shortcuts | A | Not Applicable | No single-character keyboard shortcuts are implemented. Not determinable by scanning. |
| 2.2.1 Timing Adjustable | A | Not Applicable | No time limit is imposed on any user interaction. The authenticated tool holds a session cookie but does not expire a task in progress. 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 15 pages carry a unique, non-empty title. All 4 document(s) evaluated are tagged, declare a language, carry a usable title, and label their figures. |
| 2.4.3 Focus Order | A | Supports | Focus order matches visual order and no positive tabindex is used anywhere. Confirmed by keyboard traversal. 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 | Native controls only, which activate on the up event and can be aborted by moving off the target. 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 15 pages. All 4 document(s) evaluated are tagged, declare a language, carry a usable title, and label their figures. |
| 3.2.1 On Focus | A | Supports | Focusing a control changes no context. Not determinable by scanning. |
| 3.2.2 On Input | A | Supports | Changing a field value triggers no automatic context change. Forms submit only on explicit activation. Not determinable by scanning. |
| 3.3.1 Error Identification | A | Supports | Login failure is described in text, not by color alone, inside a role=alert region referenced by the field through aria-describedby. 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 15 pages. |
| 1.2.5 Audio Description (Prerecorded) | AA | Not Applicable | No audio or video elements across 15 pages. |
| 1.3.4 Orientation | AA | Supports | No CSS locks or rotates content by orientation. |
| 1.3.5 Identify Input Purpose | AA | Supports | The password field carries autocomplete=current-password. The company name field collects no information about the user and is outside the criterion's input purpose list. Not determinable by scanning. |
| 1.4.3 Contrast (Minimum) | AA | Supports | Zero failures across 15 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 only image in the product is a photograph. All headings, statistics and labels are live text. Not determinable by scanning. |
| 1.4.10 Reflow | AA | Supports | No horizontal scrolling at a 320px viewport on any of 15 pages. |
| 1.4.11 Non-text Contrast | AA | Supports | Form control borders measure 4.2:1 on the deployed page and the focus indicator measures 4.73:1, both against a 3:1 requirement. Decorative heading bullets are removed from the accessibility tree and carry no information, so they are exempt. 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. Hover changes only link underline state, which adds no content. Not determinable by scanning. |
| 2.4.5 Multiple Ways | AA | Supports | A human-readable site map at /sitemap-page is linked from every one of the 15 pages evaluated, giving a second route to any page alongside the global navigation. |
| 2.4.6 Headings and Labels | AA | Supports | Headings describe their sections and labels describe their controls. The heading outline for every page was reviewed. 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 is rendered from a single shared layout, so its content and order are identical on every page by construction. Not determinable by scanning. |
| 3.2.4 Consistent Identification | AA | Supports | Components with the same function carry the same name throughout. Not determinable by scanning. |
| 3.3.3 Error Suggestion | AA | Supports | The only error condition is an incorrect password, where a correction cannot be suggested without disclosing credential information. The error is clearly identified in text. Not determinable by scanning. |
| 3.3.4 Error Prevention (Legal, Financial, Data) | AA | Not Applicable | The product creates no legal commitment, processes no financial transaction, and lets users modify no stored data. 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.