Accessibility Statement
How this site is built to conform to WCAG 2.2 AA, how it's tested, its known limitations, and how to reach us if something is in your way. Last reviewed 2026-10-25.
Commitment and Standard
Peripheral Technologies LLC wants everyone to be able to use this site. It is built to conform to the Web Content Accessibility Guidelines (WCAG) 2.2 at Level AA. Section 508 incorporates WCAG 2.0 Level AA, an earlier version of the same standard.
Measures taken: semantic HTML with landmarks and a single heading outline per page; every function operable by keyboard with a visible focus ring; text contrast of at least 6.4:1 in every color theme and reading mode; no information conveyed by color alone; content and navigation that work with JavaScript disabled; reflow to 320 pixels; decorative motion, all of it off when your device asks for reduced motion; no cookies, no tracking, no consent banner.
If anything on this site gets in your way, email hello@periphera.tech. Please say which page and what happened. You will get a direct reply.
How It Is Tested
Every change to this site runs a quality gate in CI that fails if any page has an automated WCAG violation. The quality gate loads each page in Chromium, runs axe-core, walks the tab order to confirm nothing is trapped and every focused element is visible and outlined, checks reflow at 320 pixels, and runs Lighthouse against an accessibility score of 100 and a mobile performance score of 95 or better.
We also do a keyboard-only pass of every page and a VoiceOver review in Safari before each release.
Each check, what the checks have caught, and their limits: How we test this site.
- Standard
- WCAG 2.2 Level AA
- Automated
- axe-core 4.13 via Playwright 1.63, Lighthouse 13.5
- Manual
- Keyboard walkthrough; VoiceOver with Safari
- Browsers
- Chromium (automated), Safari (manual)
- Reviewed
- 2026-10-25
What We Know Is Not Perfect
- Screen-reader review with NVDA in Firefox and JAWS in Chrome is not yet part of the release checklist. VoiceOver is.
- The capability statement PDF is tagged, with its title and language set, and the build checks that on every change. It has not yet been checked with PAC, Acrobat or a screen reader.
Accessibility Conformance Report
WCAG 2.2, Levels A and AA, for periphera.tech. Based on the VPAT 2.5 international edition structure. Product: this website. Evaluation methods: as described above. 41 criteria supported, none partially supported, 14 not applicable, none unsupported.
| Criterion | Level | Conformance | Remarks and explanations |
|---|---|---|---|
| 1.1.1 Non-text Content | A | Supports | The logo is an inline SVG. In the header it sits inside the home link, which is named "Periphera home", and is hidden from assistive technology; in the company information sheet it has role="img" and the name "Periphera". The menu icon is decorative and hidden. The one other image is the still of the Sam Shortlist sample scan on /shortlist/demo/: its alt text says what the scan shows, with numbers from the same sample data. The live scan that replaces it draws on canvases hidden from assistive technology; what they draw is in text beside them: a summary the scan's region points to, the trace, the panels, and a table of every item. |
| 1.2.1 Audio-only and Video-only (Prerecorded) | A | Not applicable | No audio or video. |
| 1.2.2 Captions (Prerecorded) | A | Not applicable | No audio or video. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) | A | Not applicable | No audio or video. |
| 1.2.4 Captions (Live) | AA | Not applicable | No live media. |
| 1.2.5 Audio Description (Prerecorded) | AA | Not applicable | No video. |
| 1.3.1 Info and Relationships | A | Supports | Landmarks, one h1 per page, no skipped heading levels, real lists, definition lists, and data tables with header cells. The help chat is a list of messages, each labelled You or Assistant. On /shortlist/demo/, the top picks and the guide to the eye are data tables, and the live scan's panels have their own headings, lists and tables. |
| 1.3.2 Meaningful Sequence | A | Supports | DOM order matches visual order. Section numbers sit in the in-flow labels, not in the margin, and the number is hidden from assistive technology because the heading names the section. |
| 1.3.3 Sensory Characteristics | A | Supports | No instruction relies on shape, position, or sound. |
| 1.3.4 Orientation | AA | Supports | No orientation lock. |
| 1.3.5 Identify Input Purpose | AA | Not applicable | No form fields collect user information. |
| 1.4.1 Use of Color | A | Supports | Links in text are underlined at rest, and the current page in the navigation is underlined. State is never shown by color alone. |
| 1.4.2 Audio Control | A | Not applicable | No audio. |
| 1.4.3 Contrast (Minimum) | AA | Supports | One light theme on every page: body text 16.2:1 on the page background, secondary text 8.7:1, label text 6.4:1, links 6.8:1, button text 16.2:1. In the merlot bands and the R&D bar: text 17.5:1, secondary text 10.1:1, links 14.3:1; the gold "In development" tag 13.3:1. Reading mode "Dark" swaps in the dark palette: body text 18.1:1, secondary text 11.4:1, label text 8.3:1, links 14.8:1; the lowest, label text on cards, is 7.6:1; there the bands and the R&D bar turn light, text 16.2:1 and the gold tag 9.2:1. The lowest pairing on the site is label text on the light page, 6.4:1. Texture is decoration and never sits behind text. Checked by axe on every page and both sheets in both reading modes. |
| 1.4.4 Resize Text | AA | Supports | Type sizes are set in rem and breakpoints in em. Readable at 200 percent zoom with no loss of content. |
| 1.4.5 Images of Text | AA | Supports | No images of text that carry meaning. The decorative texture panels are drawn from images of text glyphs; they are pure decoration and hidden from assistive technology. The still of the sample scan on /shortlist/demo/ is a picture of a chart whose small labels are part of the drawing; the same facts are text on the page. |
| 1.4.10 Reflow | AA | Supports | Single column at 320 CSS pixels; the page never scrolls sideways. A data table too wide for a small screen, such as this report, scrolls inside its own box, which takes keyboard focus. In a window under 480 pixels tall, such as 320 by 256 at 400 percent zoom, the R&D bar sits at the end of the page instead of sticking to the bottom of the window. The sample scan on /shortlist/demo/ reflows the same way after Run the scan. Checked by the quality gate. |
| 1.4.11 Non-text Contrast | AA | Supports | Card and tag borders are decorative hairlines. Controls are identified by their text or icon at 3:1 or more. The focus ring meets 3:1 on every background, including the inverted research band. In the sample scan on /shortlist/demo/, the outlines of what a reader can drag are 3:1 or more against the stage's near-black ground (#0A0A09) at rest, with a scan on, with an item traced and while the replay runs: the edges of the six lens rings are 3.4:1 (measured on rendered screenshots at 1x and 2x pixel ratios: the brightest pixel at every visible angle of all twelve edges), the lens legend rows' borders 3.4:1, the dashed cutoff rings 13.9:1 (5.4:1 while the replay draws them in) and the cutoff chips' borders 17.2:1. |
| 1.4.12 Text Spacing | AA | Supports | No fixed heights on text containers. |
| 1.4.13 Content on Hover or Focus | AA | Supports | Only the sample scan on /shortlist/demo/ shows content on hover or focus: a short box about the item or node under the pointer. It sits beside that item, so the pointer can move onto it and it stays; it goes 300 ms after the pointer leaves both, or at once on Escape, wherever focus is. |
| 2.1.1 Keyboard | A | Supports | All functions are reachable and operable by keyboard. The mobile menu is a native disclosure element. The certification and NAICS drawers are native popovers: opening one moves focus to its Close button, and Escape or Close closes it and returns focus to the button that opened it (inside the company sheet, that step needs scripts). The R&D bar and the footer bar open their sheets the same way, with Enter or Space. In the sample scan on /shortlist/demo/, every action on the eye has an HTML control: the lens legend and cutoff sliders, the ranges in Tune, the cards, Prev item and Next item, the trace buttons and the table. |
| 2.1.2 No Keyboard Trap | A | Supports | No traps. Checked by a scripted tab walk on every page. |
| 2.1.4 Character Key Shortcuts | A | Not applicable | No single-key shortcuts. |
| 2.2.1 Timing Adjustable | A | Not applicable | No time limits. |
| 2.2.2 Pause, Stop, Hide | A | Supports | Nothing moves on its own for more than 5 seconds. The help asterisk turns with scrolling and settles within about a second after it stops, and hops once, for half a second, when pressed. At the start of a session or on reload, the page shows skeleton placeholders while the help asterisk drops into place; the load takes under 3 seconds and ends on any key or press. The help asterisk pulses only while something loads. Hover and press transitions last 200 ms or less, and the two sheets slide open or closed in 200 ms or less, or follow the finger while dragged. Blocks below the first screen fade in once, in 300 ms, as they scroll into view, and the decorative texture panels move only while the user scrolls. When the device asks for reduced motion, the texture and asterisk hold still, every block shows at once, and hover feedback and sheets change instantly. On /shortlist/demo/, nothing moves until the reader presses Run the scan; then the sample scan replays for about 11 seconds and its eye turns slowly, with a spotlight on each top pick. Pause motion, the first control after the tap, stops all of it, and the choice is kept for the next visit. Under reduced motion the scan shows its end state and never moves. |
| 2.3.1 Three Flashes or Below Threshold | A | Supports | Nothing flashes. In the sample scan on /shortlist/demo/, nothing changes more than three times a second; its spotlight moves every 2.5 seconds. |
| 2.4.1 Bypass Blocks | A | Supports | Skip link is the first focusable element. Landmarks on every page. |
| 2.4.2 Page Titled | A | Supports | Descriptive, unique titles. |
| 2.4.3 Focus Order | A | Supports | Focus follows reading order. |
| 2.4.4 Link Purpose (In Context) | A | Supports | No "click here" or "learn more" links. |
| 2.4.5 Multiple Ways | AA | Supports | Primary navigation, links in the footer's company information sheet, in-page tables of contents, and an XML sitemap. |
| 2.4.6 Headings and Labels | AA | Supports | Headings describe their sections. Controls have descriptive names that contain their visible text. The icon-only menu button is named "Menu" and the logo link "Periphera home". |
| 2.4.7 Focus Visible | AA | Supports | A 2 px solid focus ring with a 3 px offset on every interactive element, at 3:1 or more on every background. The two full-width bars draw it 5 px inside their edge. |
| 2.4.11 Focus Not Obscured (Minimum) | AA | Supports | The header is not sticky. The R&D bar is pinned to the bottom of the window until it rests above the footer at the page end (in browsers without scroll-linked animation it stays pinned, and the page ends with room for it below the footer), with the help asterisk fixed above its right end, or just left of an open drawer. Scroll padding stops focus that scrolls into view clear of both; the quality gate checks every focus stop against the bar, including the sample scan on /shortlist/demo/ after Run the scan and its table. In a short window the bar does not stick. The mobile menu, the drawers, the help panel and the two sheets overlap the page only while the user has them open. With scripts on, the drawers close when focus leaves them, and an open sheet makes the page behind it inert and keeps focus in the sheet. With scripts off, Tab can reach the page behind an open sheet, where the sheet hides the focused element; Escape or Close closes it. |
| 2.5.1 Pointer Gestures | A | Supports | The R&D bar and the footer bar open their sheets on an upward drag, and a sheet's top row closes it on a downward drag. A single tap or click, Enter or Space, the Close button or Escape does the same. In the sample scan on /shortlist/demo/, dragging the eye only turns the view; a single tap on Prev item, Next item, a card or an item turns it to that item. Pinch zoom is the browser's own. |
| 2.5.2 Pointer Cancellation | A | Supports | All actions fire on the up event. |
| 2.5.3 Label in Name | A | Supports | Accessible names contain the visible text. |
| 2.5.4 Motion Actuation | A | Not applicable | No motion-operated functions. |
| 2.5.7 Dragging Movements | AA | Supports | The R&D bar and the footer bar can be dragged up to open their sheets, and a sheet's top row dragged down to close it. A single tap or click on either bar, Enter or Space, the Close button, Escape, or a click above the sheet does the same without dragging. In the sample scan on /shortlist/demo/, on a stage wide enough for the full eye, the lens rings and cutoff rings can be dragged; each also has a range in Tune that takes a single click on its track, a keyboard slider in the lens legend or the cutoff chips, and on touch screens a minus and a plus button beside the range. On a narrow stage the rings do not drag. |
| 2.5.8 Target Size (Minimum) | AA | Supports | Buttons are 48 CSS pixels tall and the menu button is 44 by 44. Copy and certification buttons are 24 pixels tall and span their row, and the NAICS drawer button is 24 pixels tall; the Close button in the drawer and help panel is 44 by 44, and the help asterisk button is 56 by 56 (64 on desktop). The R&D bar is 48 pixels tall and the footer bar 44, each across the window; they sit one above the other and do not overlap. Each reading mode option is 44 pixels tall, its label part of the target. Text links sit inline in text or are spaced to meet the criterion. In the sample scan on /shortlist/demo/: buttons are 44 pixels tall, lens legend rows 132 by 32, cutoff chips 64 by 24, and Scan toggles and panel rows 24 tall; on touch screens Tune's controls are 44 tall and its minus and plus buttons 44 by 44. Items drawn on the eye are smaller, and each has an equal control in the cards, the trace or the table. Checked by axe. |
| 3.1.1 Language of Page | A | Supports | lang="en" on every page. |
| 3.1.2 Language of Parts | AA | Supports | Single language throughout. |
| 3.2.1 On Focus | A | Supports | Focus never changes context. |
| 3.2.2 On Input | A | Supports | The inputs are the help chat's text box and the reading mode options in the company sheet. Typing in the text box changes nothing; a message is sent only when the user presses Send or Enter. Choosing a reading mode changes only the colors; focus stays on the option. |
| 3.2.3 Consistent Navigation | AA | Supports | Same header, R&D bar and footer on every page. |
| 3.2.4 Consistent Identification | AA | Supports | Copy buttons, the menu button, the R&D bar, the footer bar and the reading mode control are named the same way on every page. |
| 3.2.6 Consistent Help | A | Supports | Contact is in the same place on every page: email, phone and location in the company information sheet, opened from the footer bar at the end of every page or the Company info button in the navigation, and email and phone in the help panel, opened from the help asterisk. |
| 3.3.1 Error Identification | A | Supports | The help chat is the only form. When a message can't be sent, the conversation says so in text and gives the email address. |
| 3.3.2 Labels or Instructions | A | Supports | The help chat's text box has a visible label, "Ask a question", and a note above it explains who answers. |
| 3.3.3 Error Suggestion | AA | Not applicable | The help chat is the only form. Its one text box takes free text in any format; the only check is that it is not empty. |
| 3.3.4 Error Prevention (Legal, Financial, Data) | AA | Not applicable | No transactions. |
| 3.3.7 Redundant Entry | A | Not applicable | The help chat is the only form, and it never asks for information already entered. |
| 3.3.8 Accessible Authentication (Minimum) | AA | Not applicable | No authentication. |
| 4.1.2 Name, Role, Value | A | Supports | Native elements: links, buttons, a details disclosure for the menu, popover dialogs labelled by their headings for certifications, help, and the two sheets opened by the R&D bar and the footer bar, and a help button named "Questions and help". The sample scan on /shortlist/demo/ adds custom sliders, the lens legend and cutoff chips, with role="slider", a name, a value, and a minimum and maximum; its toggles are buttons with aria-pressed. Checked by axe. |
| 4.1.3 Status Messages | AA | Supports | A polite live region announces copy results and the reading mode chosen. In the help chat, each finished reply is announced once, whole, through a polite live region, and the help button is marked busy while a reply loads. The sample scan on /shortlist/demo/ uses the same region: it says when the scan starts, sums up weight and cutoff changes 250 ms after the last one, and names each trace and table filter. |
The legal terms for "Supports," "Partially supports," "Does not support," and "Not applicable" follow the VPAT 2.5 definitions from the Information Technology Industry Council.