Parts of this page show illustrative data: invented, and marked where it stands, until the lab has its own.

Foundations

Geist and Geist Mono · navy ground · gold means live

Colour, dark

  • ground #0a111b
  • surface #0f1824
  • raised #15202f
  • text #eef1f4
  • text-hover #ffffff
  • text-reading #d9dde2
  • text-secondary #b4b9bf
  • text-muted #878d95
  • live #d4b06a
  • series-2 #7f9cc4
  • failure #d9776b
  • failure-text #e3968c
  • failure-line rgba(217, 119, 107, 0.55)
  • line rgba(238, 241, 244, 0.08)
  • line-strong rgba(238, 241, 244, 0.14)
  • line-control rgba(238, 241, 244, 0.22)
  • line-field rgba(238, 241, 244, 0.4)
  • track rgba(238, 241, 244, 0.06)
  • hatch rgba(238, 241, 244, 0.35)

Every colour of the stylesheets, read from css/tokens.css. The light reading theme stays on the canvas.

Contrast, WCAG AA

ColourNeedsOn groundOn surfaceOn raised
text 4.5:1 16.7015.7514.48
text-hover 4.5:1 18.9417.8516.41
text-reading 4.5:1 13.8813.0812.03
text-secondary 4.5:1 9.599.048.31
text-muted 4.5:1 5.665.334.90
live 4.5:1 9.218.697.99
series-2 4.5:1 6.726.345.83
failure 4.5:1 6.135.785.32
failure-text 4.5:1 8.127.667.04
line-field 3.0:1 3.523.513.47

A primary button's label, ground on text: 16.70:1. Text needs 4.5:1; a text field's edge, what shows the field is there, needs 3:1.

Type

Illustrative data
40 / 48 · 500
A question, asked plainly
24 / 32 · 500
Section heading
20 / 30 · 400
The finding, in one sentence, with the number in it.
17 / 28 · 400
Reading text for method and evidence, about 70 characters to a line.
14 / 22 · 13 / 20
Interface text and tables · meta and labels in sentence case, never uppercase mono
Mono 13 · 32
3,412 tokens · r-0412 · 14:09:52 UTC · model-x96.1%

States

  • Idea
  • Chosen, planned
  • Running
  • Needs review
  • Finished, published
  • Parked
  • Abandoned
  • Failed
  • Dropped

Components

Illustrative data

Receipt line, closed and open

Claude Haiku 4.5$0.0022Receipt

Sonnet 5 · charged $0.0066 Opus 5.5 · estimate ~$0.0132

What was charged is solid. An estimate is hatched, prefixed with ~ and named as an estimate.

Transcript line

plannerClaude Sonnet 5

Plan: anchor suite v3, 40 tasks. Budget $4.00.

Buttons

A field, a failure and a tag

That code was not right.

Illustrative data

Arrival and motion

One hairline draws into the header once per visit, 600 ms, when you arrive from bfilipov.com. Off under reduced motion. The page makes full sense without it. It comes with the public window.

Rows update in place. New events wait under a count banner and never push what you are reading.

No typing effects, no invented progress. Idle reads as idle: "No active runs. Last event 3 h ago."

Specimens

Two screens of the design whose data comes with the agents, after phase 1, drawn on illustrative data until then.

Live and Radar are behind sign-in.