examplicity

Design system: brand, colour, type, spacing and components for the Examplicity site and its labs, drawn from the codebase and the current lab standard.

This page is the single design reference for the site and its labs; how to build, adapt and check a lab is on Adapt or create. Shared CSS: token layer and components · lab components. Updated 10 October 2026.

Brand

Lab drawingsConcept line drawings: 4px round stroke, one blue accent shape

Catalogue card art · app/lab-icon.tsx · 640 × 360 canvas

colourink, one blue accent, paper white; grey only for thin context lines (secondary-line thin-lines), never a fill heroone bold object in ink outline, a quarter to a half of the drawing (beaker, padlock, rover, lens) supporting casttwo to four simple outline shapes; at most one construction or context line blue focusexactly one, about 5% of the area or less; lines tone-one focus-line, fills is-solid tone-one line weights4 primary · 3 detail (thin-lines) · 5 blue focus (focus-line) · no one-off strokeWidth sizesdots 5 / 7–8 / 10 focus · nodes 16, leaves 12 · tiles 20–24, focus 24–30 · radii 4–5, 6, 12, 16, round marksopen chevron, 12-unit arms · dotted 1 12 = reply · dashed 6 7 = empty slot · solid dot = 1, hollow = 0 compositionsafe area x 64–576, y 56–308 · 75–85% of the width · overlaps use fill var(--paper)
Lab artworkInside a lab: draw the thing, not a labelled box
Draw thisreal apparatus, labelled in the prompt's words
Not thislabelled boxes explain nothing
IconsMaterial Symbols (filled) for features; hand-set 1.7px line icons in chrome
school
explore
code
auto_awesome
remix-sparkle
download
arrow-up-right
pause
Wordmark“exam” in accent blue + “plicity” in ink
examplicityexamplicityExamplicity icon

Colors

Accent blueThe single site blue: actions, current execution, goal ink
accent-surface#f8fbff
accent-soft#eef2fa
accent-line#9fb4d6
accent#5277b8
accent-hover#4569aa
accent-pressed#3a5d99
accent-ink#315b91
Concept identityObject/process identity colours; tinted at 20–30% over white
violet#7563a7
amber#c9782c
amber-soft#fff2e6
amber-line#e0b383
rose#b85f52
rose-soft#fff1ef
slate-ink#34454f
concept-blue#4779b7
blue#4779b7 · 30%
teal#2d8792 · 30%
violet#7563a7 · 30%
amber#c9782c · 30%
rose#b85f52 · 30%
slate#536773 · 30%
Learner stateNeeded yellow, correct green, mistake red — reserved for learner work
Needed
soft #fff9db
surface #fffdf4
line #d8c36a
base #946200
ink #735100
Correct
soft #edf8f1
surface #f7fcf8
line #9cc7aa
base #18794e
ink #225f43
Mistake
soft #fff0ee
surface #fff8f7
line #d99b93
base #b42318
ink #8f2f27

Marks in the picture · v5

Learner's markviolet · nothing else
Heldsolid green ring
Missedgrey dashed ring · actual result shown
Kept reading / ghostdashed, stays where reality differs
NeutralsPaper, canvas, ink, lines — the Apple-like grey ladder
paper#fbfbfd
canvas#f3f5f7
surface-muted#f7f8fa
paper-hover#f0f0f2
line-subtle#e7e8eb
line#d2d2d7
line-strong#a7a7ad
muted#6e6e73
ink-secondary#424245
ink#1d1d1f
Syllabus palettesPer-qualification chip tints from app/labs.ts
CS IGCSE 0478CS AS/A 9618Maths 0580Biology 0610Chemistry 0620Physics 0625

bg / border / text / hover — e.g. maths #edf8f3 / #91c4b0 / #235f4e / #dcf0e7

Type

Body & labelsIntro, body, kicker, notes

Interactive Cambridge IGCSE Mathematics (0580) labs for exam practice and visual concept explanations you can see, change and understand.

intro · clamp(18–22px) · #424245 · -.018em · lh 1.45

Paint a bitmap, change its colour depth, and compare normal, RLE and Huffman encoding.

description · 14px · muted · lh 1.5

Visual experiment

kicker · 11px · 650 · .09em · caps
Interactive learning labs
note · 12px
DisplaySystem sans, heavy negative tracking, tight leading
Make complex
ideas click.

hero · clamp(52–108px) · 630 · -.075em · lh .88

FamiliesSystem font stack — no webfonts ship
Aa
Sans (system)
-apple-system, SF Pro Display, Helvetica Neue, Arial
01
Mono
ui-monospace, SFMono-Regular, Consolas
I
Index serif I
Georgia — only for index identifiers
HeadingsTopic, lab title, card and dialog headings
Data representation
topic h2 · clamp(36–56px) · 620 · -.055em
Binary Number Practice
lab title · clamp(25–40px) · 650 · -.045em
Report an issue
dialog · 27px
Huffman Rover
card h3 · 21px · 630
Lab type rolesRegular-weight, readable roles inside labs

v5 lesson shell

Supplement
kicker · tier only · 13px · 600 · accent-ink
Where must the screen go for a sharp image?
title · a question · 25px · 700
Drag the screen until the rays meet on it, then press Test.
prompt · one or two sentences · under the title
Thin-lens model; rays drawn from one point of the object.
v4-foot · limitations line · 12px · muted

v3 labs and shared roles

Find the upper and lower bounds of 7.4 cm.
goal · 16px · 400 · #315b91
Upper bound
card/section heading · 15px · 400
Half the rounding unit is 0.05, so the bound is 7.45.
working · 14px · lh 1.45
Reset model
label · 12px
Working
annotation · 11px
PRINT Total(4)
code · 14px mono · 24px lh

Spacing

Motion & attention.2s ease UI, .3s card lift, 2s attention pulse
blue guide pulse
Predict first
needed pulse
spinner .8s linear
card: .3s cubic-bezier(.2,.8,.2,1)
ui: .2s ease · chips 140ms
reduced-motion → static
Layout rhythm1200px rail, 28px gutter, generous section padding
max width1200px guttermax(28px, (100vw − 1200px)/2) header / footer bar66px / 58px topic section88px 28px 104px card grid gap48px row · 20px col · 3 cols lab column (v5)data-lab-col="standard" 900px · "wide" 1160px · 32px gutter (24px under 520px) lab check frames1366 × 644 and 390 × 672 (what the site header and footer leave) lab work card12px pad · 10px gap · 8px radius lab control height40px (36px compact) · v5 chip 44px · nav button 50px
Corner radiiBig soft cards on the site, tight 8px controls inside labs
26pxpreview
22pxdialog
18pxmenu
12pxlab panel
11pxfield
10pxcontext
8pxlab control
4pxmath
999pxpill
20pxv5 picture card
22pxv5 chip (44px)
25pxv5 nav button (50px)
ShadowsBarely-there elevation; menus and dialogs only go deep
panel
control
trigger
remix step
menu
dialog
Hit areas44px targets, drawn at their real size
Small terminalpainted 14px · target 44 × 44
Neighbourstargets meet, never cover each other
Imperfect dragstart 6–10px off, curve, release near

Components

Site components first, then lab parts. v5 marks the current lesson shell for new and converted labs (shared tools in lab-v4.css, scoped by body.lab-v4-tools). v3 marks parts still shipped in existing labs: follow them when editing those labs; do not add them to a v5 lab.

ActionsSite pill buttons, shell buttons, idea chips; v5 lab buttons

Lab actions v5

CatalogueLab cards and home feature cards
  • Learn ConceptsSee how a concept works, step by step, through a working model you can interact with.
  • Explore Ideas
  • Open Source
  • AI Compatible
ContentRemix steps and changelog entries
1

Download the lab

A single HTML file that keeps working offline.

9 September 2026

  • Fixed missed clicks when building TCP/IP packets and replaced repeated guidance prompts with one expandable explainer.
HandlesDrawn, labelled, operated on the object
Grip tabon the object, labelled in the prompt's word
Boundary griplab-boundary-grip · drag halo while held
Switch with knoba subject control, drawn as the object
Lab controlsActivity bar, toggles, stage markers, lab actions v3

Find the bounds of 7.4 cm, rounded to 1 decimal place.

Working
Exam
Predict
Measure
Explain
Lab shellThe v5 lesson, top to bottom v5
Converging Lenses

Supplement

Where must the screen go for a sharp image?

Drag the screen until the rays meet on it, then press Test.

15.0 cm Screen Object Lens

The screen must go where the rays meet: 15.0 cm behind the lens.

Screen 15.0 cm from the lens.

Lab surfacesHeader, canvas, stage surface, field; picture card and evidence regions

Rounded Measurements

Find limits of accuracy and test claims against them.

Measurement
Lab workingWork cards, claim context, maths surface, chips

Claim: the true length could be 7.45 cm

Test the claim against the limits of accuracy.

It holds only if the value rounds to 7.4 cm.

Upper boundAdd half the unit: 7.4 + 0.05Work needed
Lower bound7.4 − 0.05 = 7.35Correct
Endpoint7.45 rounds up to 7.5, so it is excluded.Try again
GivenRounded to 1 d.p.
GivenRemainder 3Sample B
OverlaysDialogs and loading; restart menu; v3 phase cards and cues

Restart menu v5

↺

Completion card and cue v3

Boundary verifiedEvery test point is equally distant from A and B.
Visual stepMake PA a tangentRotate PA until OA is perpendicular to it.
PickersSubject select, segmented control; menus and lab selectors
Choose a subject
Subjects
More subjectsComing soon
Choose a level

Lab selector v5

Reference labsRead the whole lab, not a plate of its parts
Intentional differencesStructures that shared components must respect
Sequence, Set MembershipSeparate reference and current construction; attention on the actionable pieces; white items against concept-tinted regions. Recurring DecimalsAligned remainder-in, ×10, digit, remainder-out rows; matching remainders share one tint; factor explanation optional. BoundsSeven-segment readings with trailing zeros; one scale for ticks, bounds and markers; included and excluded endpoints; claim and criterion visible. Time ZonesFull-width calendar lanes beside working; date crossings, fixed offsets and complete-duration checks kept. Relative FrequencyReference and tested devices differ by shape and identity colour without revealing unknown probabilities; outcome labels outside rotating wheels. Packet Switching, TCP/IP, DNSMulti-region comparisons and device artwork kept; real ports connected; parallel DNS servers together; TCP/IP keeps its nested packet and upward unpacking path. CSMAPacket markers stop and visibly corrupt at collision; collision, detection, jam, wait and retry stay separate; reduced motion keeps the states. CPU / MemoryFlat values inside devices; queues and progress bars kept; processor work distinct from page transfers and waiting; serif I for index identifiers. SchedulingInstalled rules carry stronger identity than tray items; Ready, Running and Blocked stay adjacent and labelled; failure colour stays on the result. ProgrammingAligned editor layers and padded themed consoles; Run pulses until the first run; Clear stays distinct. Recursive CallsSuccessive Observe Total(4), Some Total(5), All Total(6) exercises; compact frame labels; execution blue distinct from assessment. Floating PointAllocation divider distinct from mantissa shift; starting and current stored values and the lost bit shown; success needs the intended learner action. Science investigationsApparatus, waves and linked population plots kept; current decision beside the visual, comparison evidence below; selection changes inherited trait frequencies, not adult traits.
Component lookupNeed → shared part → what the lab supplies
NeedShared partLab supplies Lesson header v5LabV4.progress, .v4-lesson-topStage labels, position, skipped and continued stages Restart v5LabV4.restart, details.v4-restartStage and whole-lab reset callbacks Lesson actions v5v4-btn, v4-chip, v4-quiet, select.v4-selectHandlers, enabled state, the word on the button Verdict v5p.v5-verdict[role=status]The earned statement or comparison cue Learner marks v5v4-mark, v4-held-ring, v4-miss-ringMark position and held or missed state Existing-lab adoptionlab-adopt-v3Layout adapter and semantic classes Settings v3lab-toggle, lab-working-toggle, data-kindOptions, selection, availability Action v3lab-action, data-priority="primary", data-lab-actionsHandler and enabled state Model toolslab-model-tools, lab-computing-tools, sim-tool-rowPlacement and grouping Working and evidencelab-work-card, lab-evidence-card, lab-sidebarContents and state Claim under testlab-context; claimContextTitle, Statement, CriterionThe claim and criterion, without the result Formula or valuelab-math-surfaceA short expression Informational chiplab-chip, lab-chip-rowPurpose tone; chips are not buttons Sequenced pulseLabDesign.attention, data-lab-attentionCurrent card, grip or button; dismissal Introduction v3data-lab-intro, LabDesign.introduceTarget, stable key, title and short purpose Stage markers v3LabDesign.checkpointsStage names, state and evidence Completion card v3LabKit.direct.movableCompletion, data-dialog-dragCard, workspace and message SVG draggingLabDesign.bindSvgDrag, LabDesign.svgPointModel coordinates and constraints Readable chart textdata-lab-readable-chartRendered size and label space Live valuedata-lab-valueSVG value text Digital instrumentLabDesign.digitalReadoutValue string, precision and position Inline simulation steplab-working-context, lab-working-readoutRequirement and ready, working, correct or mistake state Cycle progresslab-cycle-progressActual progress and accessible value Parameter griplab-value-grip, lab-boundary-gripParameter maths, limits and keyboard changes Travelling packetlab-packet-markerPath, timing and collision state