Real report · our own site
Qiksy Access
Accessibility audit — Qiksy Studio
Our own product · qiksy.app · WCAG 2.1 AA + 2.2 target size · 1 August 2026 · automated pass, 2 pages
Five CSS rules and one config line close all 20 findings.
All of them were fixed the same day and re-scanned: the pages below now return zero
violations, collapsed rail included. This page shows both sides — what the scan said, and what the fix was.
0Blocker
13Critical
7Major
0Minor
20Fixed
- Engine
- axe-core 4.12.1, run locally inside the browser extension — nothing about the page left the machine
- Plus
- Qiksy's own audit pass (unlabelled controls, missing names, AA contrast, broken images, duplicate ids, positive tabindex) — 0 findings
- Pages
- the studio home (rail expanded AND collapsed) and the products catalogue, in their production shape
- Re-scan
- every page above returns 0 violations after the fixes — same engine, same states
- Not in scope
- the other nine apps, states behind sign-in, and everything only a human finds (see the footnote)
What was found
| Issue | Criterion | Nodes | Severity | Effort |
| Rail buttons have no accessible name when the rail is collapsed | WCAG 4.1.2 | 13 | critical | S — one rule |
| Step number 4.47:1 against its own tint (4.5 required) | WCAG 1.4.3 | 3 | major | S — one token |
| “AI” chip on the product cards — 4.17:1 and 3.31:1 | WCAG 1.4.3 | 2 | major | S — one rule |
| Footer tagline 2.92:1 — the dimmer of the two greys | WCAG 1.4.3 | 1 | major | S — one token |
| Footer link an 18px target, and our own chat bubble over it | WCAG 2.5.8 | 1 | major | S — a rule + a config line |
Fix map — by cause
| Cause | Was | Now | Closes |
Label hidden with display:none in the collapsed rail | the name disappeared with the text | clipped, not removed — text stays in the accessibility tree | 13 |
Token --accent used as ink on a 16% tint of itself | #4f61a5 on #dfe1e7 — 4.47:1 | --accent-dark — 5.2:1, and correct in all four theme combinations | 3 |
A resting state dimmed for looks (accent at opacity:.85) | 4.17:1 blue, 3.31:1 teal, at 9.5px bold | 62% accent mixed into the ink; the HOVER does the brightening now | 2 |
Two greys where one passes (--hub-muted-2) | #9a9184 on #faf8f3 — 2.92:1 | --hub-muted — 5.2:1; the separator rule already says “secondary” | 1 |
| Footer links sized by their text alone | 47.8 × 18 px | min-height:24px — the text does not move, the hit area grows | 1 (hardens all 7) |
| Our own support bubble parked in the same corner | 44px bubble overlapping the link by 7px | offsetY: 48 — it clears the 38px footer | the same 1, second cause |
Findings register
Q-001 · Collapsed rail buttons announce as “button”
- Criterion
- WCAG 4.1.2 Name, Role, Value
- Severity
- critical · fixed
- Where
.sb-home and every .sb-prod — 13 nodes
- Evidence
- with the rail folded, the label span is
display:none; the button’s only name went with it, so the whole product rail read as thirteen anonymous buttons
- Impact
- a screen-reader user could not tell the environments apart — i.e. could not navigate the studio at all in that state
- :root.sb-collapsed .sb-prod-l { display: none }
+ :root.sb-collapsed .sb-prod-l { position:absolute; width:1px; height:1px;
+ margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%);
+ white-space:nowrap; border:0 }
Q-002 · Step number fails AA contrast by 0.03
- Criterion
- WCAG 1.4.3 Contrast (Minimum)
- Severity
- major · fixed
- Where
.hiw-n — 3 nodes, “how it works” step numbers
- Evidence
- #4f61a5 on #dfe1e7 at 12px bold = 4.47:1. The tint is a 16% mix of the same accent, so the text was competing with itself
- Impact
- the sort of miss no eye catches and no reviewer argues with — a token off by a hair, repeated wherever that pattern is used
- color: var(--accent)
+ color: var(--accent-dark, var(--accent)) /* 5.2:1, per-theme */
Q-003 · “AI” chip on the product cards fails contrast
- Criterion
- WCAG 1.4.3 Contrast (Minimum)
- Severity
- major · fixed
- Where
.appcard .card-ai — the Offer card at 4.17:1, the Travel card at 3.31:1
- Evidence
- the card’s own accent at
opacity:.85, 9.5px bold. Small text gets no discount from 1.4.3 — 4.5:1 is still the floor
- Impact
- the label that says which tools are AI-driven was the least readable text on the page
- color: color-mix(in srgb, var(--ca) 88%, var(--hub-ink)); opacity:.85
+ color: color-mix(in srgb, var(--ca) 62%, var(--hub-ink))
+ :hover { color: color-mix(in srgb, var(--ca) 88%, var(--hub-ink)) }
Q-004 · Footer tagline at 2.92:1
- Criterion
- WCAG 1.4.3 Contrast (Minimum)
- Severity
- major · fixed
- Where
.hub-foot-tagline — #9a9184 on #faf8f3
- Evidence
- the palette carried two muted greys, and the tagline used the lighter one at 12px
- Impact
- 2.92:1 is not “subtle”, it is out of reach for anyone with reduced contrast sensitivity
- color: var(--hub-muted-2, var(--hub-muted))
+ color: var(--hub-muted) /* 5.2:1 */
Q-005 · Footer link below the 24px minimum — and under our own chat bubble
- Criterion
- WCAG 2.5.8 Target Size (Minimum), 2.2 AA
- Severity
- major · fixed
- Where
.hub-foot-links a — flagged on 1, applies to all 7
- Evidence
- two causes stacked. 12px type gives an 18px-tall box; and once that was fixed the rule
still failed as “partially obscured” — our own 44px support bubble sat over the top 7px of the last link.
Measured: bubble 1450–1494 × 790–834, link 1446–1494 × 827–851
- Impact
- not only a target-size number: a click at the top of “LinkedIn” opened the chat instead
+ display:inline-flex; align-items:center; min-height:24px
+ mountAssist({ …, offsetY: 48 }) /* clears the 38px footer */
What this page is honest about
This is an automated pass over two pages — the shape of our free scan, about a minute of
machine time. It is not the paid Report, and the difference is not the page count. An engine can
prove a name is missing or a ratio is short; it cannot tab through a checkout, cannot tell you that
the focus ring is behind the sticky header, that the error toast is never announced, or that the
date picker takes a mouse and nothing else. Those are the defects that actually stop a purchase,
they are found by hand, and they are what the 25-state Report is for.
We publish this one because it is ours, and because an audit shop that has never audited itself
is asking you to go first.