// Accessibility · TRUSTING Framework in Practice

This Site
Passed Its Own Test.

Uncrossed Signals builds tools and checks accessibility. This page is the veracity — a live structural AT audit of this site, run against our own AT Checker before publish. No exemptions. No exceptions.

This page documents two audit runs. The first used AT Checker v1.0 at initial deployment. After upgrading the checker to v3.0 — which added contrast, font size, text spacing, and touch target checks — we re-ran the audit and found additional issues not visible to the original tool. Both runs are recorded below in full, including what v3.0 found and the fixes applied. A third pass was completed after the site was refactored from a single-page app to a multi-page structure with dedicated URLs, a hamburger nav for mobile, and full hash-routing replaced by standard browser navigation. No exemptions. No exceptions.

Critical 0 // None found
Warnings 1 // Documented below
Passed 36 // All categories
Checks Run 37 // 12 categories

// Structure

Pass

Language attribute present

lang="en" on <html> on every page

WCAG 3.1.1 (A)
Pass

Unique, descriptive page title per page

Each page carries its own <title> — e.g. "Privacy Policy — Uncrossed Signals, LLC" — distinct from every other page title

WCAG 2.4.2 (A)
Pass

Single H1 per page

Multi-page architecture: each file is its own document with exactly one H1. The inert workaround used in the prior SPA build is no longer needed.

WCAG 1.3.1 (A)
Pass

Heading hierarchy logical

H1 → H2 → H3 structure maintained per page with no skipped levels

WCAG 1.3.1 (A)
Pass

<main> landmark present with label

Each page has one <main id="main-content"> with a descriptive aria-label identifying the page and site

WCAG 1.3.6
Pass

<nav> landmarks labelled

Primary nav: aria-label="Main navigation"; mobile drawer: aria-label="Mobile navigation" — both identifiable as separate landmarks

WCAG 1.3.6
Pass

Charset declared

UTF-8 character encoding meta present on every page

WCAG 3.1.1
Pass

Viewport meta allows zoom

No user-scalable=no or maximum-scale=1 on any page

WCAG 1.4.4 (AA)

// Images

Pass

No content images without alt text

TRUSTING badge loaded as <img alt="" aria-hidden="true"> — decorative, correctly suppressed from AT

WCAG 1.1.1 (A)
Pass

SVG elements have accessibility attributes

Nav sigil SVG marked aria-hidden="true" focusable="false" on every page — decorative, not interactive

WCAG 1.1.1 (A)

// Forms

Pass

No form inputs present

No form fields on this site — no label audit required

WCAG 1.3.1 (A)
Pass

All buttons have accessible text

Hamburger button carries aria-label="Open navigation menu" toggled to "Close navigation menu" on state change

WCAG 4.1.2 (A)

// ARIA

Pass

No aria-hidden with focusable children

All aria-hidden elements are purely decorative with no interactive children

WCAG 4.1.2 (A)
Pass

No unlabelled dialogs

No dialog elements present on any page

WCAG 4.1.2 (A)
Pass

aria-current="page" on active nav link

Nav script reads data-page on <body> and sets aria-current="page" on matching [data-nav] links in both desktop and mobile nav on every page load

WCAG 4.1.2 (A)
Pass

Privacy table has accessible label

aria-label="Data practices by product" applied to the data table on the privacy page; all <th> carry scope="col"

WCAG 1.3.1 (A)
Pass

Pillars list uses semantic <ol>

TRUSTING pillars converted from div soup to a proper ordered list — screen readers announce "list of 8 items" and count through each pillar

WCAG 1.3.1 (A)

// Keyboard

Pass

Skip navigation link present

Visually hidden skip link as first focusable element on every page — visible on keyboard focus, routes to <main id="main-content">

WCAG 2.4.1 (A)
Pass

Nav links are real <a> elements with href

All navigation uses anchor elements with root-relative href paths — correct link semantics for AT; browser back/forward and bookmarking work natively

WCAG 4.1.2 (A)
Pass

No positive tabindex values

Natural tab order maintained throughout all pages

WCAG 2.4.3 (A)
Pass

No outline:none detected

:focus-visible styles applied to all interactive elements in styles.css

WCAG 2.4.7 (AA)

// Motion

Pass

Animations respect prefers-reduced-motion

@media (prefers-reduced-motion: reduce) in styles.css suppresses all scan-line, pulse, and fadeUp animations across all pages

WCAG 2.3.3
Pass

No autoplay media

No audio or video elements present on any page

WCAG 1.4.2 (A)

// Visual

Pass

Font sizes use relative units

rem used throughout styles.css; px reserved for decorative SVG elements only

WCAG 1.4.4 (AA)
Pass

Active nav state uses non-color indicator

Active link distinguished by green color AND a 2px border-bottom — satisfies WCAG 1.4.1 (not color alone)

WCAG 1.4.1 (A)
Pass

Status/badge elements have text labels or are decorative

Signal-dot spans marked aria-hidden="true" — surrounding text ("Active", "Nominal") carries the meaning

WCAG 1.4.1 (A)

// Links

Pass

All links have descriptive text

No generic "click here" or "read more" anchor text used on any page

WCAG 2.4.4 (A)
Pass

No new-tab links without warning

Only mailto links open externally — no target="_blank" in use across the site

WCAG 3.2.2 (A)
Pass

Prose links have non-color visual distinction

text-decoration: underline applied globally to all links in styles.css base rule; nav links explicitly opt out via text-decoration: none

WCAG 1.4.1 (A)
Pass

Link color overrides browser default

Base a { color: var(--green) } eliminates browser purple on all pages; visited state uses --green-dim (#2A9940, 4.0:1 on sapphire)

WCAG 1.4.3 (AA)

// Contrast + Size

Pass

All declared font sizes meet 12px floor

0.75rem minimum throughout styles.css; --text-dim corrected from #5E6B7D (2.79:1, fail) to #8090A8 (4.67:1, pass); finding and note text raised from 0.78rem to 0.82rem

WCAG 1.4.4 (AA)
Warning

5 colors flagged by heuristic scan — confirmed false positives

Background and decorative colors flagged; heuristic cannot distinguish text from background without rendered context. All text color pairings verified against WebAIM contrast checker. No text contrast failures confirmed.

WCAG 1.4.3 (AA)

// Spacing + Targets

Pass

Touch targets meet 44px minimum

min-height: 44px on all nav links, buttons, and CTAs in styles.css; mobile drawer links raised to 52px

WCAG 2.5.5 (AA)
Pass

Tight line-height declarations resolved

Heading line-height set to 1.2 minimum; sub-1.5 values exist only on decorative large display elements, not body text

WCAG 1.4.12 (AA)

// Mobile

Pass

Navigation accessible on small screens

Hamburger menu replaces overflowing desktop nav at ≤768px — no horizontal scrolling required to reach navigation links

WCAG 2.1.1 (A)
Pass

Hamburger button fully accessible

aria-expanded reflects drawer state; aria-controls="nav-drawer" links button to drawer; aria-label toggles between "Open" and "Close navigation menu"; Escape key closes drawer and returns focus to button

WCAG 4.1.2 (A)

// Site Architecture

Pass

Dedicated URL per page

Refactored from SPA to multi-page — each section now lives at its own URL (/about, /trusting, /at-veracity, /privacy). Pages are bookmarkable, shareable, and deep-linkable. Privacy policy URL is stable for use in app disclosures.

WCAG 2.4.2 (A)
Pass

Shared stylesheet — single source of truth

All styles consolidated into /assets/css/styles.css with clearly commented universal vs page-specific sections — no inline style blocks on any page

WCAG 1.3.1 (A)
About the 1 remaining warning: The contrast heuristic flagged five hex colors as potentially low-contrast. All five are background or decorative colors, not text. The scanner cannot distinguish text from background without rendered context. All text color pairings verified against WebAIM contrast checker. No text contrast failures found.

Refactor build additions: SPA converted to multi-page site with dedicated URLs; nav buttons converted to real <a href> elements; aria-current="page" set by shared nav script reading data-page on <body>; active state gains 2px border-bottom (non-color indicator); hamburger drawer added for mobile; TRUSTING pillars converted from div soup to semantic <ol>; badge converted from inline SVG blob to external image reference; all CSS extracted to shared stylesheet; base link rule added to eliminate browser-default purple on all pages.

// AT Checker v3.1 · Structural + Visual audit · 12 categories · Multi-page refactor build · Client-side · No data transmitted · May 2026

// Prior audit record — AT Checker v1.0 · May 2026

Critical 0 // None found
Warnings 5 // Documented
Passed 22 // 8 categories
Checks Run 27 // 8 categories

The v1.0 checker covered structure, images, forms, ARIA, keyboard, motion, visual, and link checks. It did not include contrast, font size, text spacing, or touch target rules. The 5 warnings below were all documented and addressed at time of first deployment.

Warning

Multiple H1 headings (3)

SPA architecture — 3 pages in DOM simultaneously. Fixed: inert attribute applied. Now resolved permanently by multi-page refactor.

WCAG 1.3.1 (A)
Warning

Heading levels skipped

Same SPA cause. Resolved permanently by multi-page refactor.

WCAG 1.3.1 (A)
Warning

Brand table without aria-label

Section was commented out at time of audit — resolved before re-enable.

WCAG 1.3.1 (A)
Warning

1 non-interactive element with onclick

Fixed at time of audit. Now resolved permanently — all nav uses real <a href> elements.

WCAG 2.1.1 (A)
Warning

No skip navigation link detected

Fixed at time of audit — visually hidden skip link added as first focusable element on every page.

WCAG 2.4.1 (A)

// AT Checker v1.0 · Structural audit · Client-side · No data transmitted · May 2026