Skip to main content
Moonwhisk
moonwhiskLtd
  • Products
  • Research
  • Company
  • ForEveryMind → (opens in new tab)
ProductsResearchCompanyForEveryMind → (opens in new tab)

Legal

Accessibility Conformance Document

Moonwhisk’s public marketing site is designed to meet WCAG 2.2 Level AAA, with accessibility tested across dark, light, and decaf themes. This statement outlines the site’s scope, verification methods, conformance status, known limitations, and areas for ongoing review

Last updated: 3 June 2026

WCAG 2.2 AAA Conformance — Moonwhisk

Scope: the public marketing site (home, legal pages, global nav/footer) targets Level AAA. The auth-gated admin CMS (/admin, noindex) is held to a Level AA baseline.

Themes: all visual criteria are met in every theme — dark (default), light, and decaf (low-stimulation). Contrast was verified by computation and by automated testing in all three.

How this was verified

  • Automated: pnpm test:a11y runs axe-core over /, /privacy, /terms, /cookie-policy in each theme (12 runs) with Level A/AA + the AAA rules axe supports (notably color-contrast-enhanced, 1.4.6). 0 violations.
  • Lint: pnpm lint:a11y (eslint-plugin-jsx-a11y, strict) — 0 errors.
  • Manual: keyboard walkthrough, screen-reader landmark/heading pass, 200% zoom + 320px reflow, prefers-reduced-motion, prefers-contrast, and forced-colors emulation.

Automated tooling can only confirm ~30–40% of WCAG criteria. Items marked Manual below were checked by hand; items marked Auto are covered by the axe suite as a regression guard.


Principle 1 — Perceivable

SCTitleLvlStatusNotes
1.1.1Non-text ContentAPass (Auto)Icons aria-hidden; social/logo links have aria-label; cert iframe has title; decorative canvas/parallax aria-hidden.
1.2.xTime-based MediaA–AAAN/ANo audio or video.
1.3.1Info and RelationshipsAPass (Auto)header/nav/main/footer landmarks, heading hierarchy, lists, <dl> glossary, programmatic label↔control association.
1.3.2Meaningful SequenceAPassDOM order matches visual order.
1.3.3Sensory CharacteristicsAPassNo instructions rely on shape/position/sound alone.
1.3.4OrientationAAPassResponsive; no orientation lock.
1.3.5Identify Input PurposeAAPassLogin uses autocomplete="current-password".
1.3.6Identify PurposeAAAPassLandmark roles + ARIA state on controls; autocomplete on inputs.
1.4.1Use of ColorAPass (Manual)State never conveyed by colour alone; "opens in new tab" is text; prefers-contrast underlines links.
1.4.2Audio ControlAN/ANo auto audio.
1.4.3Contrast (Minimum)AAPass (Auto)Superseded by 1.4.6.
1.4.4Resize TextAAPass (Manual)rem/clamp type; legible at 200% with no loss.
1.4.5Images of TextAAPassLive web fonts; logo is SVG/text.
1.4.6Contrast (Enhanced)AAAPass (Auto)All body text ≥7:1, large text ≥4.5:1, in all 3 themes. Tokens --text-muted, --text-body, --gold (light), --gold-dim/--gold-light text uses, and --c-cyan (light) were re-tuned; verified by axe color-contrast-enhanced.
1.4.7Low / No Background AudioAAAN/ANo audio.
1.4.8Visual PresentationAAAPass (Manual)Reading columns ≤~72ch; body line-height ≥1.5; no justified text; user-selectable themes incl. low-stimulation decaf; prefers-contrast honored.
1.4.9Images of Text (No Exception)AAAPassNo images of text.
1.4.10ReflowAAPass (Manual)Single-column reflow to 320px; no 2-D scroll.
1.4.11Non-text ContrastAAPassFocus ring ≥3:1; control borders meet 3:1 (strengthened under prefers-contrast).
1.4.12Text SpacingAAPassNo clipped text under user spacing overrides.
1.4.13Content on Hover or FocusAAAPass (Manual)No hover-only/title-based tooltips; glossary is a persistent <details>; nothing appears on hover that can't be dismissed/hovered.

Principle 2 — Operable

SCTitleLvlStatusNotes
2.1.1KeyboardAPass (Auto)All controls are native a/button; burger menu keyboard-operable; cert iframe is focusable (removed tabindex=-1).
2.1.2No Keyboard TrapAPass (Manual)Verified; Esc closes the mobile menu.
2.1.3Keyboard (No Exception)AAAPass (Manual)No mouse-only functionality.
2.1.4Character Key ShortcutsAN/ANo single-character shortcuts.
2.2.1Timing AdjustableAN/ANo time limits.
2.2.2Pause, Stop, HideAPass (Manual)Decorative motion stops via prefers-reduced-motion and the decaf theme (a persistent, user-accessible control); animations also pause off-screen/when tab hidden.
2.2.3No TimingAAAPassNo time limits anywhere.
2.2.4InterruptionsAAAPassOnly the cookie banner; dismissible, no re-prompts.
2.2.5 / 2.2.6Re-authenticating / TimeoutsAAAN/AAdmin only (AA scope); no public sessions.
2.3.1Three Flashes or BelowAPass (Manual)No content flashes; slowest pulse is 2s (0.5 Hz).
2.3.2Three FlashesAAAPass (Manual)No flashing.
2.3.3Animation from InteractionsAAAPassMotion disabled under prefers-reduced-motion.
2.4.1Bypass BlocksAPass (Manual)"Skip to main content" link → #main-content.
2.4.2Page TitledAPassUnique per-page <title>.
2.4.3Focus OrderAPass (Manual)Logical order; skip-link first.
2.4.4Link Purpose (In Context)APass (Auto)Descriptive links.
2.4.5Multiple WaysAAPassNav, in-page anchors, footer links, sitemap.xml.
2.4.6Headings and LabelsAAPass (Auto)Descriptive headings/labels.
2.4.7Focus VisibleAAPass (Auto)Global :focus-visible ring.
2.4.8LocationAAAPass (Manual)Sitemap + consistent nav; legal pages are single-level (no breadcrumb needed).
2.4.9Link Purpose (Link Only)AAAPass (Manual)Link text self-describes; external links append a hidden "(opens in new tab)".
2.4.10Section HeadingsAAAPassEach section has a heading (visually-hidden where the design omits a visible one).
2.4.11Focus Not Obscured (Min)AAPassscroll-padding-top keeps focus clear of the sticky nav.
2.4.12Focus Not Obscured (Enhanced)AAAPass (Manual)Same; focused targets fully visible.
2.4.13Focus AppearanceAAAPass (Manual)3px ring, 3px offset, ≥7:1 against the surface (well over the 3:1 / 2px minimum).
2.5.1Pointer GesturesAPassNo path/multipoint gestures.
2.5.2Pointer CancellationAPassActivation on click/up.
2.5.3Label in NameAPass (Auto)Visible text is within the accessible name.
2.5.4Motion ActuationAN/ANo motion actuation.
2.5.5Target Size (Enhanced)AAAPass (Manual)Nav links, CTA, burger, social, theme-toggle ≥44×44 px.
2.5.6Concurrent Input MechanismsAAAPassNo input-mode restrictions.
2.5.7Dragging MovementsAAN/ANo dragging on the public site (demos are non-interactive).
2.5.8Target Size (Minimum)AAPassSuperseded by 2.5.5.

Principle 3 — Understandable

SCTitleLvlStatusNotes
3.1.1Language of PageAPass<html lang="en">.
3.1.2Language of PartsAPassNo foreign-language passages.
3.1.3Unusual WordsAAAPassFooter glossary defines jargon (lib/glossary.ts).
3.1.4AbbreviationsAAAPassGlossary lists expansions (CLT, SDK, ONNX, TCN, Ltd).
3.1.5Reading LevelAAADeferredNot claimed. Per project decision, marketing copy is not rewritten; the glossary + help affordance support comprehension instead. The only AAA criterion not asserted.
3.1.6PronunciationAAAN/AMeaning does not depend on pronunciation.
3.2.1On FocusAPassNo context change on focus.
3.2.2On InputAPassNo surprise context change on input.
3.2.3Consistent NavigationAAPassNav/footer consistent across pages.
3.2.4Consistent IdentificationAAPassComponents identified consistently.
3.2.5Change on RequestAAAPass (Manual)New windows announced; no automatic context changes.
3.2.6Consistent HelpAPassGlossary/help in the footer on every page; contact links consistent.
3.3.1Error IdentificationAPassLogin: aria-invalid + role="alert".
3.3.2Labels or InstructionsAPass (Auto)All inputs labelled (Field ties label↔control + hint via aria-describedby).
3.3.3Error SuggestionAAPassLogin errors are descriptive.
3.3.4Error Prevention (Legal/Financial)AAN/ANo legal/financial transactions (sign-up is an external Tally form).
3.3.5HelpAAAPassConsistent footer help + glossary; contact links.
3.3.6Error Prevention (All)AAAPass (Manual, admin)Admin saves are explicit and reversible (re-editable); no destructive auto-submit.
3.3.7Redundant EntryAPassNo multi-step re-entry.
3.3.8Accessible Authentication (Min)AAPass (admin)Password field; paste & password managers allowed; no cognitive test.
3.3.9Accessible Authentication (Enhanced)AAAPass (admin)autocomplete="current-password"; no cognitive-function test.

Principle 4 — Robust

SCTitleLvlStatusNotes
4.1.2Name, Role, ValueAPass (Auto)Burger exposes aria-expanded/aria-controls; theme toggle exposes state; form controls named.
4.1.3Status MessagesAAPassSave progress via aria-live="polite"; errors via role="alert".

Residual risk & caveats

  1. 3.1.5 Reading Level (AAA) is intentionally not claimed — copy is left to the editorial team; the glossary/help mechanism is the chosen support.
  2. Third-party widgets — the Tally pop-up form and the vanilla-cookieconsent banner (#cc-main) are excluded from our own axe assertion. Both are keyboard-operable and reputable, but their internal conformance is outside this codebase. Re-verify if either is upgraded.
  3. Automated coverage — axe confirms a subset of criteria; the Manual rows above are the ones a human verified and the ones to re-check after large visual changes.
Moonwhisk
moonwhisk

Building a world that works for every mind. Cognitive AI research and products from the United Kingdom.

Products

  • ForEveryMind™
  • Teacake

Company

  • About
  • Research
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • Accessibility Audit

Certification

Help & glossary of terms

Plain-language definitions for the terms used on this site. Need anything else? The contact links above reach the Moonwhisk team.

ForEveryMind
Moonwhisk’s B2B cloud-edge AI SDK that infers a user’s cognitive state from behavioural signals and adapts a host application’s interface in real time.
Teacake
Moonwhisk’s AI-powered board and canvas application, designed around how creative and neurodivergent minds work.
Cognitive Load Theory (CLT)
A framework (originated by John Sweller) describing the limited capacity of working memory, used here to model the relationship between interface complexity and mental effort.
Adaptive interface
A user interface that adjusts itself — visual density, layout, and information architecture — to the person using it, rather than presenting one fixed design to everyone.
Edge AI inference
Running an AI model’s computation close to the user (on a device or nearby server) for low latency, rather than relying on a distant data centre.
Software Development Kit (SDK)
A set of tools and libraries that other developers integrate into their own applications.
Open Neural Network Exchange (ONNX)
An open, portable file format for machine-learning models so they can run across different runtimes.
Temporal Convolutional Network (TCN)
A type of neural network suited to sequence data over time; Moonwhisk’s inference model is TCN-based.
Neurodivergent
Describing minds whose cognition differs from what is typical — for example autistic, ADHD, or dyslexic thinking.
Limited (Ltd)
A private limited company under United Kingdom law; Moonwhisk Ltd is incorporated in the UK.
© 2026 Moonwhisk Ltd. All rights reserved. Teacake is a PlainJam Ltd product.
in𝕏