Skip to content
UniConnect360
Accessibility statement · WCAG 2.2 Level AA

Zero contrast failures on the sweep. Measured, dated, published.

This site is built to WCAG 2.2 Level AA. That is contractual, not aspirational. On we audited the pages we had built that day, at two screen widths, and found no contrast failures, nothing scrolling sideways, and no tap target under 24 pixels. That covers those pages on that date rather than the whole site. The sections below say what the measurement saw, what it could not see, and what is still open.

The standard

WCAG 2.2, Level AA. Fifty-six success criteria, published by the W3C, testable one at a time. We hold Level AA and we do not claim Level AAA anywhere, including where we happen to meet it.

The law

The European Accessibility Act has applied since June 2025 to many digital services offered to people in the EU. Where a supplier sits in relation to it depends on the contract and the sector. We are not going to argue that boundary; we hold the standard.

What was measured

Two page templates, at two screen widths, on one date.

The sweep runs against a production build rather than the development server, so it measures the stylesheet that actually ships. It reads the colour of every text node on the page, the width of every control you can operate, and whether the document scrolls sideways.

  • 0contrast failures

    Every text node on every page in the table, read as the browser computed it.

  • 0pages scrolling sideways

    At 375 pixels, which is the narrow phone the sweep is calibrated to.

  • 0targets under 24 pixels

    The raw box of every control, with no spacing exception applied to it.

Measured by us, in the rendered page, on . The method, the pages and the caveats are below.

Here is the table those three numbers come from.

Every page built on that date, at 375 pixels and at 1440 pixels. The portal preview is an internal review screen rather than a public page; it is here because it is the densest thing we have drawn.

Audit results,
PageViewportContrast failuresHorizontal overflowTargets under 24px
Home page (/)375 px0NoneNone
Home page (/)1440 px0NoneNone
Portal preview (/design/portal)375 px0NoneNone
Portal preview (/design/portal)1440 px0NoneNone

What the sweep could not see.

An automated pass reads computed colour and box sizes. That is enough to catch the single commonest accessibility failure on the web and almost nothing else. Everything in this list is checked by a person against the ledger below, or it is in the open items further down.

  • Non-text contrast: borders, icon strokes and focus rings. The sweep reads text colour only, so these were checked by hand against the ledger below.

  • Text sitting on a texture, a gradient or an image. The standing rule is that no text sits on one without its own solid background, and that is judged by eye.

  • Content generated by CSS rather than written in the page.

  • What a screen reader actually announces.

  • Forced-colours and high-contrast modes.

  • The eligibility checker, which had not been built when the sweep ran.

The target-size check is deliberately strict. WCAG lets a small target pass if there is enough clear space around it, and a stacked column of text links technically qualifies. On a mid-range phone held in one hand that is a compliance argument rather than a usable control, so our sweep reports the raw box and we fixed the links instead of citing the exception.

Pages built after that date are checked the same way as they ship, at both widths. The table is a snapshot of one day, and it says so rather than quietly ageing. We would rather write both of these lists than publish a green tick.

The colour rules

Marigold is a surface, never text.

Every pairing that ships on this site was computed in the rendered page, in sRGB, not sampled from a colour swatch. If a pairing is not in this ledger it has not been measured, and if it has not been measured it does not ship.

  1. 1.61:1Marigold #FDC227 on whiteSurface only. Never text.

    The brand colour is invisible as text on a white page. It fills buttons and bands and nothing else. Every marigold button carries a darker gold lip, because the fill on its own cannot be told apart from the paper it sits on.

  2. 11.84:1Ink #110E0A on marigoldEvery label on a marigold band.

    This is why text on a gold field is almost black. It is also why nothing pale ever sits directly on marigold: our lightest ink on the same gold measures 1.60:1, which carries nothing at all.

  3. 5.91:1Dark gold #805F00 on whiteGold text at any size.

    When you see a gold word in a sentence on this site, this is the colour it is. It clears the 4.5:1 body-text threshold with room to spare, which is the only reason it is allowed to be small.

  4. 3.77:1Gold #A77D00 on whiteDisplay sizes only: 24px, or 18.66px bold.

    The accent word in a large heading, and nothing else. On a 15px label the same colour is a failure, which is why the two golds are separate tokens rather than one token used carefully.

  5. 18.97:1Ink on whiteBody text.

    Prose on this site never goes lighter than 6.82:1, which is the muted grey used for footnotes. Lightening body text because it looks calmer is not a decision anyone here gets to make.

The thresholds those ratios are judged against are not ours. Normal text needs 4.5:1. Text at 24 pixels, or 18.66 pixels bold, needs 3:1. The boundary of anything you can press needs 3:1 against the page behind it, which is why every marigold button on this site carries a darker gold lip and why a gold button never sits on a gold band.

W3C, Web Content Accessibility Guidelines 2.2checked

How it is built

Six things that are true of every page here.

Every page has exactly one h1 and no skipped heading levels. Every page has a header, a navigation, a main and a footer that assistive technology can jump between, and a skip link that is the first thing a keyboard reaches. The six below are the ones worth explaining, and each one carries the way you check it.

  • Everything you can operate shows focus

    A 3px ink ring at 3px offset, never removed and never swapped for a shadow. On the dark sea green bands it flips to pale gold, which measures 8.65:1 there. A component without a focus state is not finished.

    Press Tab from the top of this page and follow the ring. It never disappears.

  • Colour never carries meaning on its own

    Every link inside a paragraph is underlined. Every status states its word (live now, being built, not built yet) as well as its colour, and the coloured dot beside it is hidden from assistive technology.

    Read the page in greyscale. Nothing on it becomes ambiguous.

  • The menu is a native disclosure

    On a narrow screen the navigation is a plain HTML details element, not a JavaScript widget. The browser owns the open state, the Escape key and the focus order, so there is no focus trap for us to get wrong.

    Open the menu on a phone and ask for its state. The browser answers, not our code.

  • It works with JavaScript off

    Every section is finished exactly as the server sent it. The motion layer only moves things that are already on the page, and under reduced motion it does nothing at all. That matters on a connection too slow to deliver scripts, which for a lot of our readers is most of them.

    Block scripts and reload. Every section above is still here, and still readable.

  • Tables stay tables

    Real table markup, a caption that says what the table covers, and a scoped header on every row and column. On a narrow screen the table scrolls sideways inside a box you can reach with the keyboard, rather than collapsing into cards that break the header association.

    Narrow this window over the audit table above. It keeps its headers.

  • Targets are at least 24 by 24

    That is the Level AA floor. Buttons are 40, 48 or 56 pixels tall, and stacked text links carry padding so the target is the whole link box. We do not claim 44 by 44: that is Level AAA, and an earlier version of our own document claimed it wrongly.

    Our sweep reports the raw box of every control, with no spacing exception applied.

Nothing on this site plays on its own, flashes, or moves in a way that carries information. The entrance movements are decoration. Both the ones written in CSS and the ones driven by script stop under reduced motion. The page is finished without either.

Why this is not a stretch goal

Most sites fail on four things, and all four are build decisions.

An independent annual analysis of home pages finds detectable failures on almost all of them. The failures are not exotic. They are the same four every year, and every one of them is settled by how a page is put together rather than by what it cost.

95.9%of home pages fail an automated accessibility test

That figure and the three beside it come from an independent annual analysis rather than from an official body, and our research ledger grades them corroborated secondary. We print the grade because a number without one is the thing this whole site is arguing against.

WebAIM Million, annual accessibility analysischecked

79.1% of pagesLow-contrast text
Every pair on this site was measured before it shipped, and the ratio is written next to the colour in the stylesheet. It is difficult to get wrong if you use the colours as defined.
55.5% of pagesMissing alternative text
This site ships no photography. Every shape, dot field and icon behind the content is decoration, and all of it is hidden from assistive technology because none of it is information.
48.2% of pagesMissing form labels
There is one form on this site and it is the eligibility checker. Its labels are always visible, always attached to their control, and never replaced by placeholder text.
Empty links and buttonsNo prevalence figure is published for this one.
A link or a button with no text is a build error here rather than a review finding: it is caught by the linter, so it cannot reach a page in the first place.

The one form on this site is the eligibility checker.

Three questions, each one a labelled group of radio buttons rather than a row of clickable boxes. The labels stay visible. The whole thing completes with a keyboard alone, the answers survive going back a step, and the result is on screen for free with no account and no email address. If any part of that is not true when you use it, that is a defect and we would like to hear about it.

Open items

Written down rather than waited out.

None of these stops the site being usable today. All of them are things a careful reader would find on their own, so there is no version of this page where hiding them is the better move.

4 open, 1 closed since the sweep.

Why publish a list of your own problems?

Because the alternative is a statement that says everything is fine, and nobody who works in this field believes one of those. A page naming specific open items is checkable. A page claiming zero is only checkable by finding the first one.

There is a second reason, and it is commercial rather than moral. A European university asking us to evidence conformance will ask for exactly this list, alongside the automated results and a record of the manual passes. Keeping it current is less work than reconstructing it during a procurement round.

  • Testing by a daily screen-reader user

    Open

    We test with a screen reader. That is not the same thing as testing with somebody who uses one every day, and we are not going to write it up as though it were.

  • An independent audit

    Not commissioned

    Everything on this page is our own measurement, which is why the method is published beside it. An external audit is the obvious next step and it has not been booked.

  • Pages added since the sweep are tested one at a time

    Ongoing

    The table above covers the pages that existed on the day. Anything built since is checked as it ships, at both widths, rather than the whole site being swept again. So that table is a snapshot and not a running total.

  • The menu button is always named “Open menu”

    Open, low

    The native disclosure tells assistive technology whether it is open or closed, so the state is correct. The wording is not, and it is on the list.

  • A focused element sliding under the sticky header

    Closed 4 September 2026

    Individual bands used to set their own scroll offset, one at a time. The durable fix is one scroll offset on the document itself, and it shipped, so a fragment link and a focused control both clear the header now. It stays on this list because a list that only grows records nothing.

Tell us what broke.

If something on this site is hard or impossible to use, write to accessibility@uniconnect360.com. Tell us which page, what you were trying to do, and what happened instead. If you know your browser or the assistive technology you were using, that helps. If you do not, send it anyway.

Report a barrier

Opens your own mail app, addressed to accessibility@uniconnect360.com.

What happens to a report

A person reads it and answers it. We will tell you what we found and whether we can fix it. If it is a real barrier and the fix is not quick, it joins the list further up this page with the date you reported it, so you can watch it rather than take our word for it.

We have not published a reply-by date, because we have not staffed one and a target we cannot hold is worth nothing to you.

There is no contact form here. This website collects nothing: no name, no email address, no account, so the only way to reach us is a message you send yourself, from your own mailbox, which you can keep a copy of.