Accessibility statement
Accessibility
We build to WCAG 2.2 level AA. That is a target we work to, not a certificate anyone has issued us — so this page keeps what is built and measurable apart from what we already know is missing.
- Target
- WCAG 2.2 AA
- Applies to
- webway.ee, all three languages
- Status
- Self-assessed. No external audit.
- Report a problem
- info@webway.ee
Live
Right now, in your browser
Four settings your own browser reports, read by nothing but CSS media queries. Change one in your system and reload this page — the answers change with it. Nothing is stored, and nothing is sent anywhere: a media query is a question the browser answers to the stylesheet and to nobody else.
Reduced motion
You have asked for less motionYou have not asked for less motion
The line above is holding still, because you asked for less motion.The line above moves as you scroll, and only then. It never starts on its own.
Every animation on this site is behind the same question. The ones made of CSS sit inside a reduced-motion query; the few drawn on a canvas ask the browser the same thing before they start a loop, and under a yes they never start one. Movement stops at the finished state either way. Nothing is left half-drawn, and nothing waits for a callback that will never come.
Forced colours
Your system is repainting this pageYour system is letting the page choose its colours
High-contrast modes throw away painted shadows and background fills, which is exactly what a design made of hairlines is drawn with. Rules written for that mode put back what it takes: focus is an outline rather than a shadow, decorative fills are dropped, and anything that carried meaning in colour keeps a border instead.
Higher contrast
You have asked for more contrastYou have not asked for more contrast
We read this and currently do nothing with it. The palette is built to clear AA in both themes rather than to have a third, higher-contrast variant. That is a gap, not a decision, and it is named again below.
JavaScript
JavaScript is off in this browserJavaScript is running
Every word on every page is in the HTML the server sends, so the text is there before anything runs. With scripts off you lose the agent, the theme toggle and the menu button on a narrow screen — the footer carries the same navigation as plain links.
If a row says something that does not match your machine, your browser may not answer that question at all. Where an engine cannot answer, the page assumes the setting is off — which is the answer that describes what you are actually being shown.
Built in
What already works
One landmark, one h1
Every page renders a single main landmark, one first-level heading, and headings that descend without skipping a level. A screen reader's heading list is the page's table of contents, and on this site it is a real one.
Keyboard, not an afterthought
Everything operable is a real button or a real link, in the order it is read. The mobile menu, the services panel and the agent window each trap focus while open, close on Escape, and hand focus back to the control that opened them.
Focus you can see anywhere
Focus is drawn with an outline offset from the control, never with a painted shadow — a shadow is discarded by high-contrast modes, and a focus ring that disappears there is the one that mattered most.
Targets you can hit
Buttons, header links and the two icon controls are at least forty-four pixels tall. WCAG 2.2 sets the floor at twenty-four; we hold forty-four because this site is read one-handed, on a phone, in a room with a client in it.
The language is declared
Each page carries the language it is written in, and the switcher marks all three locales with their own language and hreflang. A screen reader changes voice at the switch instead of reading Estonian aloud in English.
Nothing appears only on scroll
Reveal effects move content that is already in the document. Turn animation off, turn scripts off, or read the page source: the text is complete either way. Nothing on this site is revealed by a callback.
The video is decorative
The only videos on this site are the clips of client sites inside a browser frame. Each one is muted, hidden from assistive technology, out of the tab order, and carries nothing the text beside it does not say. Ask for less motion and each is a still frame.
Forms say what they want
Every field has a real label and an autocomplete value. The ones we actually need are marked on screen and declared required in the markup, so a screen reader says so too — and what the form answers back is announced in a status region rather than only appearing on screen.
Contrast is a token, not a guess
Two line colours exist on purpose: a hairline for the edge of a card, and a darker one for the edge of anything you operate — because an operable boundary needs three to one and a decorative one does not. The table below is the whole palette held to that rule.
Measured
The contrast table
These are the real token pairs from the site's stylesheet, with the ratio each measures in each theme. The swatches are drawn in the theme you are reading in right now, so you can hold the number against what is actually on your screen — and switch the theme in the header to see the other column come alive.
| Sample | What it carries | Light | Dark |
|---|---|---|---|
| --ink / --ground | Headings and body textneeds 4.5:1 | 18.3 | 18.1 |
| --ink-2 / --ground | Paragraphs and supporting textneeds 4.5:1 | 9.0 | 7.6 |
| --ink-3 / --ground | Labels, captions, microcopyneeds 4.5:1 | 5.2 | 6.0 |
| --line-control / --ground | The edge of anything you operateneeds 3:1 | 3.1 | 3.3 |
| --btn-a-ink / --btn-a-bg | The primary button's labelneeds 4.5:1 | 5.1 | 17.9 |
| --platform / --ground | The Platform accentneeds 4.5:1 | 5.0 | 7.0 |
| --academy / --ground | The Academy accentneeds 4.5:1 | 5.4 | 10.2 |
| --studio / --ground | The Studio accentneeds 4.5:1 | 5.2 | 7.8 |
Honestly
What falls short
A statement that lists only successes is a brochure. These are the gaps we know about; each one is a thing to fix rather than a thing to explain away.
There is no skip link
The header holds a handful of links before the content starts, and a keyboard user walks past them on every page. A skip-to-content link is the first item on the list.
The pause-motion control is not built
The header's design names a control that stops movement site-wide. It is written but not shipped. Until it is, the system-level reduced-motion setting is the only way to stop animation — and it does stop all of it.
Narrow screens need scripts to navigate
Below nine hundred pixels the navigation is behind a button, and that button needs JavaScript. With scripts off on a phone the footer carries the same links as plain HTML, which works, but it is the long way round.
The agent needs JavaScript
The assistant that answers questions on the site does not exist without scripts. The email address and the phone number in the footer reach exactly the same people.
Higher contrast is read and ignored
Your browser can tell us you want more contrast and we currently do nothing with that answer. Both themes are built to clear AA on their own; neither has a higher-contrast variant yet.
The display typeface has no Cyrillic
Russian headings are set in the system's own grotesk, because the display face ships Latin only. The Russian pages read correctly — they do not read in the same rhythm as the other two.
Nobody independent has checked this
There has been no external audit, and no testing with people who use assistive technology every day. Everything on this page is our own measurement of our own work, which is worth exactly what you think it is worth.
Method
How this was checked
- The ratios in the table were computed from the hex values in the stylesheet, in both themes, rather than sampled from a screenshot.
- Every animation was traced back to the thing that stops it — the reduced-motion query in the stylesheet, or the same query read in JavaScript by the few things drawn on a canvas — one by one, rather than assumed from the way the site behaves.
- The pages were read as delivered source, with scripts off, to confirm the text is present before anything runs.
- What has not happened: an independent audit, a screen-reader pass by somebody who uses one daily, and any formal conformance statement. None of the three is claimed here.
Found something broken?
Write to us. A page that cannot be used is a fault of the same rank as one that will not load, and it is handled the same way.
- The address of the page.
- What you were trying to do when it stopped working.
- Your browser and operating system, and any assistive software, with versions if you know them.
- Whether it happens every time or only sometimes.
We answer in English, Estonian and Russian. We do not promise a date, because nobody here has committed to one — a reply that tells you what we found is the point. If email is the wrong channel for you, the phone number in the footer reaches the same people.