Kestrel

Accessibility

Kestrel is built to work without a mouse, without sight, and without motion. This article documents the behaviors to preserve when changing the site.

On this page

Keyboard

Every control is a native control or a native disclosure: radio buttons for billing period, asset type, version, and asset choice; buttons for reorder; a disclosure for the on-page table of contents. Native controls bring arrow-key movement and focus behavior for free; do not replace them with styled divs.

Overlays trap focus and close on Escape, returning focus to the control that opened them. The docs search follows the same pattern: Arrow keys move through results, Enter opens the active result, and Escape closes the list and returns focus to the search field.

Semantics

Every page has one level-1 heading, a main landmark, and a skip link to it. Navigation marks the current page with aria-current="page". Live regions announce only what changed: the billing selection, the visible record count, and the search result count. Status pills are text, never color alone: the state word is always present.

Motion

The site ships no layout animation and no looping animation. A reduced-motion guard covers the whole stylesheet, so visitors who prefer reduced motion get none at all. When adding a component, add no transition or animation that moves layout properties (width, height, margin, padding, position, or font size).

Print

Print output is paper colors with interactive chrome removed: headers, docs navigation, and the search box are hidden, and article content prints in full. Code samples wrap instead of overflowing the page. Check a printed article after any layout change; a control that prints is a control that should have been marked non-printing.

Continue with the Performance docs.