Design system · v1

A measuring instrument,
in daylight.

This product spends almost all of its time in warm near-white and near-black, and introduces colour only where something is being measured — a score, a level, a live voice. That restraint is the whole argument: an assessment that shouts is an assessment you do not believe.

Petrol is the only structural accent Sand is visualisation only Glass is a material, not a filter

Foundation

Colour

One accent carries every action. A second hue exists purely inside visualisations and is never a button. Petrol against warm sand is also one of the few two-hue pairs that survives every common form of colour blindness — which matters when those two hues are carrying somebody's score.

Structural

Accent
--accent · #12798a
Accent hover
--accent-hover
Accent press
--accent-press
Accent soft
--accent-soft
Accent deep
--accent-deep · inverted ground

Ground & ink

Canvas
--bg · warm off-white
Surface
--surface
Sunken
--surface-sunken
Hairline
--line
Ink muted
--ink-muted
Ink
--ink · body
Ink display
--ink-display

Visualisation & state

Viz 1
--viz-1 · petrol
Viz 2
--viz-2 · sand, never a control
Success
--ok
Warning
--warn
Danger
--danger

Typography

System-first, deliberately: this platform runs in test centres that may have no internet, and a render-blocking webfont on an exam page is a risk taken for no gain. Every stack ships a real Light cut, which is all the display tier needs. Tracking tightens as size grows — that ratio is the signature.

.t-display · 300 · −0.035em · clamp(44px, 80px)

Know exactly where you stand

.t-title · 300 · −0.028em · clamp(32px, 52px)

Twenty minutes. Forty answers.

.t-h1 · 400 · −0.022em · clamp(26px, 36px)

Repeat the sentence

.t-h2 · 500 · −0.016em · 21px

Answer a question about a conversation

.t-lead · 400 · 19px · the sentence under a headline

Every answer is spoken aloud and scored automatically.

.t-body · 400 · 15px · default

Prompts play once. There is no replay, no going back and no re-recording — each item ends when you stop speaking, not on a timer.

.t-small · 13px  ·  .t-micro · 11px, +0.075em, uppercase

Supporting copy and metadata

Part C · Question 2 of 6

.t-num · tabular figures for anything that counts

00:15   68   40/40

Space & shape

A 4px base. Whitespace is the primary grouping device — sections are separated by distance, not by rules.

Scale

--s-1 · 4
--s-2 · 8
--s-4 · 16
--s-6 · 24
--s-8 · 32
--s-12 · 48
--s-16 · 64

Radius

--r-sm · 6
--r-md · 10 · fields
--r-lg · 14 · panels
--r-xl · 20 · cards
--r-pill · controls

Material

Depth

Many near-transparent layers, never one hard cast. Every shadow is tinted with the ink hue rather than pure black — a neutral shadow on a warm canvas reads as dirt.

Hairline--shadow-hairline · default cards
Level 1--shadow-1 · resting surface
Level 2--shadow-2 · floating
Level 3--shadow-3 · modal

Glass

Real glass is four things at once: a gradient fill, because light falls unevenly across a pane; a blur that also saturates, because glass concentrates the colour behind it rather than washing it out; a specular top edge; and a contact shadow so it sits in the scene. Drop any one and it reads as a filter.

Demonstrated over a coloured field on purpose — glass over flat white proves nothing.

Glass · elevated content

.glass — the default pane. Blur 18px, saturate 180%.

.glass--control
Floating navigation .glass--floating · blur 28px
Overall
68
B2

.glass--elevated · score surface

.glass--dark · for inverted grounds

Controls

Buttons

Pill geometry throughout, 44px minimum everywhere. The press is a 2.5% squash rather than a colour jump — physical response is felt more than it is seen.

Fields

Tight radii, deliberately — a pill-shaped input reads as a search box.

Chips & notices

Neutral Practice Scored In progress Terminated Outline
Use headphones. Without them your microphone may pick up the question audio.
Background noise detected. Please move somewhere quieter if you can.
Camera unavailable. Reconnect it to continue the assessment.

Signature

The voice field

A circle whose radius is perturbed by three summed harmonics, drawn three times at different phases. Amplitude scales the deformation, never the base radius — the form keeps its identity however loudly somebody speaks.

An equaliser would be a literal readout of an FFT, and it lies: bar heights have nothing to do with whether an answer will score. What a candidate needs to know is simpler — is it hearing me. One form answers exactly that.

Idle

Simulated amplitude. In the product this is fed from the analyser the assessment already owns — a second AudioContext for a decoration would be a real cost.

States

IdleAlmost invisible. No animation loop at all.
ListeningGentle drift. The prompt is playing.
RecordingFollows the voice. The innermost ring turns live-coloured.
ProcessingA sweep on the same form — one object changing behaviour.
CompleteSettles to a clean circle and stops.
Recording

The live state is never signalled by motion alone, and never by colour alone: the innermost ring changes colour, a badge appears, and the badge carries the word.

The score dial

A donut implies a whole being divided up. This score is not a proportion of anything — it is a position on a 20–80 scale. An open arc with its CEFR boundaries marked says that, and turns a chart into a measuring face.

Supporting measures

Sentence Mastery 63 · B2
Vocabulary 68 · B2
Fluency 55 · B1
Pronunciation 60 · B2
Provisional scale. The dial draws the bands it is given. The engine's 20–80 transform has not yet been validated against human raters, and the report says so rather than letting the visualisation imply a precision it lacks.

Progress, time, transport

Segments rather than a creeping bar — the unit that matters is questions left, and a bar that creeps encourages clock-watching.

Part B · Question 5 of 16

00:14 left 00:04 left

Tabular figures so digits do not shuffle. The low state changes colour and keeps its label.

0:07

The inverted ground

One dark band, not a dark theme. Any subtree gets it with data-invert; components read semantic tokens, so none of them need a dark variant — the ground changes underneath them.

Recording

Retell the story you just heard.

The focus surface during a live answer: everything that is not the candidate's own voice recedes.

Part E 00:26 left

Rules

Do

  • Reserve the accent for actions, links and the focus ring. Nothing decorative.
  • Keep the page on the warm canvas and put white only under content.
  • Let space do the grouping. Reach for a card only when grouping genuinely aids comprehension.
  • Give glass something to refract — it belongs over content, over a camera, over colour.
  • Use tabular figures for anything that counts: scores, timers, item counts.
  • Pair every state colour with a word or a shape. Colour is never the only signal.
  • Let motion communicate arrival and departure, then stop.

Don't

  • Don't paint a control in the sand hue — it exists for visualisation only.
  • Don't put glass on a flat white ground; with nothing behind it, it is just a grey box.
  • Don't set body copy at weight 300. Light belongs to display sizes only.
  • Don't use a pill radius on a form field.
  • Don't add a second structural accent.
  • Don't animate anything during a live recording — motion in the corner of the eye costs a candidate their answer.
  • Don't rely on a shadow to create depth that light, scale and transparency can create instead.