Skip to main content
These are arithmetic on the values that ship, not asserted.

What it governs

The accessibility properties that live in the token layer: contrast, focus, target size, and motion. Component-level behavior — keyboard maps, ARIA roles, focus management — lives on each component page.

Vocabulary

Sourced from Invoca’s design-token naming specification, confirmed by its owner as the baseline the design language is being built on. This is the vocabulary of record — not inferred from token names.

The conformance target

Titan targets WCAG 2.2 Level AA. WCAG 2.2 is the current W3C Recommendation and a backwards-compatible superset of 2.1: anything conforming to 2.2 AA also conforms to 2.1 AA. It adds six AA success criteria over 2.1 and marks 4.1.1 Parsing obsolete. Targeting 2.1 would not reduce the work — it would only remove criteria the token layer already governs.

What 2.2 adds, and whether the token layer covers it

Criteria carried over from 2.1 that the token layer governs directly:

Contrast

What to do about the failures

  1. text-success and text-warning fail on every light surface — 2.41:1 and 2.74:1, below even the 3:1 large-text floor. Use text-success-alt and text-warning-alt.
  2. text-info and text-error pass on white and fail on the page canvas. background-view-background (#f5f6fa) is the more common of the two surfaces. Use the -alt variants for body-size status text anywhere.
  3. White text on the success and warning fills fails badly. A bold status fill needs dark text, and no token expresses that pairing — see TITAN-GAP-07.

Focus

TITAN-A11Y-04 requires a visible focus indicator. Three component-scoped rings ship — form-field-focus-ring, form-field-focus-ring-error, and data-grid-focus-ring — each authored independently against a primitive; outside a Form field or DataGrid there is no semantic token to reach for, so every component decides for itself (known issue — the most consequential accessibility gap in the system).

Constraints

What is exempt

These get flagged in review as failures when they are not:
  • Disabled controls have no contrast requirement. text-disabled at 2.42:1 is conformant — which is why disabled state must never be the only signal that something is unavailable.
  • Purely decorative icons are exempt from non-text contrast, provided they are hidden from assistive technology and carry no information.
  • Logos and brand marks are exempt.
  • Inactive UI components — genuinely non-interactive ones — are exempt.

Testing

Automated tooling catches roughly a third of issues. It cannot tell whether an aria-label is accurate, whether focus order is sensible, or whether an error message is comprehensible. The manual checks are not optional.

Known issues

Accessibility: open issues

Divergences, open decisions, and undocumented gaps for Accessibility.
A generated map of which components consume which foundation does not exist yet.

Why it works this way

The -alt variants exist because saturated status colors do not carry text contrast. A green that reads as “success” at a glance measures roughly 2.4:1 on white — about half of what body text requires. Titan keeps the vivid value for fills and supplies a darkened -alt for text and icons. The cost is that authors must know which is which, which is why TITAN-A11Y-02 is a constraint rather than a note. Contrast is arithmetic, not review. A reviewer comparing two swatches cannot estimate a ratio. The failures on this page are the evidence: several ship today in a system that has had design attention. Computing the ratios from token values catches all of them before anyone looks.
Last modified on September 7, 2026