Every component of the document system, rendered in Schematic: a cool white page with drafting blue rules, navy fills, orchid and lime as small signal marks, and a faint grid only inside frames and code.
The palette in three parts: the key colours, then every shade of each one, then the roles a stylesheet writes and which colour fills each. All of it is read from the page, so a style shows its own palette here.
One swatch per colour this style is built from, named in its own words, with the job it does.
Every shade of each key colour. Under each hex are the roles that resolve to that shade.
Colours this style declares that no family names. Shown so nothing in the palette is hidden.
Each card is a role, the name a stylesheet writes. Under it is the raw colour this style pours into that role, named in the style's own words, with its hex.
The page, the words on it, and the hairlines between blocks.
The structural colour, and the colours that act on the page.
Small marks, the third fill, and the one thing worth pausing on.
A band, a callout, an icon circle, and what reads on them.
Raw colours in this style's palette that no role above resolves to. Found and drawn by the script, so the skeleton never lists them by hand.
Three faces, named from what the page actually resolved, then the size ladder with every level set at its own token. The size and line-height beside each are read from the rendered sample.
--font-displaySphinx of black quartz, judge my vow
Use it for headings, section numbers, table heads, and labels. It carries the page's voice, so it is the face a style changes first.--w-body ยท --w-medium ยท --w-display ยท --w-bold ยท --font-bodySphinx of black quartz, judge my vow
Use it for body copy, captions, and list text. It has to stay quiet at body size for a whole page.--w-body ยท --w-medium ยท --w-display ยท --w-bold ยท --font-monoconst vow = judge(blackQuartz); // 0O 1lI
Use it for inline code and code blocks. A monospace keeps columns of code lined up.H1, the document title
--text-h1 ยท ยท H2, a section heading
--text-h2 ยท ยท H3, a subsection
--text-h3 ยท ยท H4, a label
--text-h4 ยท ยท Figure, the number in a facts grid
--text-figure ยท ยท Lede, the framing under the title
--text-lede ยท ยท Body, every paragraph a reader is meant to read
--text-body ยท ยท Small, captions, footnotes, code
--text-small ยท ยท --text-meta ยท ยท Micro, chips, event times, month-cell lines
--text-micro ยท ยท --read ยท ยท wide on this page
Most documents are read once, quickly, by someone deciding what to do next. The measure keeps a line short enough that the eye finds the start of the next one without hunting, and the body size and line-height keep a long page from turning grey. A paragraph set here is what every section of a document looks like, so judge the style on this block before judging it on any component.
Each bar is drawn at its token's width, and the value beside it is measured from the bar.
--s1 --s2 --s3 --s4 --s5 --s6 --s7 --s8 --gutter The column's side inset, and the padding inside a panel, an insight, or a callout--section-gap Between sections, and above an h1 or h2--section-gap-narrow The same gap on a narrow screen, above an h3, and between grid cells--block-gap Between stacked blocks inside a section: paragraphs, tables, figures, panels--line The hairline under a table row, around a boxed table, above a footer--line-ink A hairline in ink. No document rule draws it today; the radius samples below use it--divider The hanging rule above a section head, and a table's header rule--r ยท Panels, callouts, code blocks--r-lg ยท A larger corner, for a surface that wants one--r-code ยท Inline code, a chip rather than a panel--r-pill ยท The calendar's today marker and the day page's chips--maxw --read The text pairs the base's component rules draw, each ratio worked out from the two rendered colours with the WCAG relative-luminance formula. A style that restates a component's colours in its own rules measures those pairs in its own contrast script.
--on-surface on --surface--on-surface-soft on --surface--on-surface-faint on --surface--link on --surface--mark on --surface--on-surface on --surface-raised--on-surface on --tint--on-surface on --accent-tint--on-surface on --emphasis-tint--accent on --accent-tint--emphasis on --emphasis-tint--on-structure on --structure--on-structure-soft on --structure--on-structure-faint on --structure--on-structure on --emphasis--on-structure on --accent--on-fill on --fillUse icons when the three items are genuinely three points rather than three columns of text. The icon sits on the term's line so the left edge stays a single line down the page. One icon per fact or none, and one colour across the row.
| Column one | Column two | Column three |
|---|---|---|
| Row label | 16:20 | The detail for this row. This table style has no outer border and no header tint, only a hairline under each row. |
| Row label | 20:25 | Judge this table in the section it lives in, not next to another table in a comparison strip, that comparison can flip which one looks right. |
| Scope item | Duration | Notes |
|---|---|---|
| Item | 2 weeks | Use this style, not the naked table, when the box itself helps the reader hold the boundary of a dense grid. |
| Item | 1 week | Header row is tinted with the paper background. |
Short paragraph. Use this layout for two options, a before/after, or two halves of one point. It collapses to one column under 860px.
Not for one long argument, that stays a single column at reading width.
Three related things, quietest first. Tinted panels hold a few unlabelled lines. Insight panels are the same tint with a label row, and they hold a lead line plus a short list. Callouts are saturated, loud, and hold one line. One of each per page at most.
Vellum, the default. The quiet one. Use it for a caveat or an aside that supports the section without interrupting it.
Blue tint. For something structural: a definition, a scope note, a constraint the reader has to carry forward.
Orchid tint. For the one thing on the page worth pausing on. Ink reads 15.31:1 on this tint, 15.69:1 on the default one and 15.36:1 on the accent one, so the choice is tone rather than legibility.
Not saved. The error panel, for a problem only: something failed, is missing, or did not save. The label takes the danger red and the full border; the explanation stays ink. A page with no problem shows none.
Two jobs hide under one request, and they have different answers.
The caveat variant. The orchid tint, "Caveat" label, a warning icon. Use it for the limit or the objection attached to what was just said. The orchid label sits at 5.44:1 on its own tint, which clears the 4.5 floor it has to clear at this size.
The label is replaceable. Add data-label when "Key insight" or "Caveat" is wrong for the content. Keep it to two or three words; it is a label, not a heading.
Navy, the structural fill. White on it reads 10.93:1. The default.
Orchid. White on it reads 6.31:1. The emphasis fill, for the one thing worth pausing on.
Drafting blue. White on it reads 5.99:1. The accent fill.
The status callout. Lime is a mark, not a surface, so this is navy carrying white at 10.93:1 and a lime dot at 6.24:1.
Two treatments. Use one per document. Icons are optional and a page with none is fine; a page with an icon on every heading is decorated, not designed.
The louder treatment, and a way to get colour onto a page in small doses. Three fills carry white; the light one carries ink.
White on it is 5.99:1. The accent circle.
White on it is 6.31:1. The one to use when the circle sits alone.
The one place lime fills a shape, because the circle is small. The glyph is graphite at 10.14:1.
White on it is 10.93:1. The default structural fill.
Geist Mono, on the blue tint with the drawing grid behind it and a hairline frame around it. Inline code sits in running prose like --font-mono or padding-block. A block holds something worth reading on its own.
python3 ~/.claude/skills/research-report/scripts/build_report_html.py . \
--order research_first.md research_second.md
Code is 15px against 17px body, because a monospace at the same nominal size reads larger than the prose around it. Ink on this ground is 15.36:1. A long line scrolls inside the block rather than widening the page.
The structural band. White body text reads 10.93:1 on it, blue mist carries secondary copy at 9.36:1, and blue haze carries the section number at 8.36:1. The dots are lime, at 6.24:1.
The emphasis fill as a band. White reads 6.31:1 on it and the section number 4.82:1. One band per document, so the bands here are alternatives, not a set.
The accent as a band. White reads 5.99:1 on it; the section number is dimmed white, as in the base.
Nothing below carries a class. A Markdown page renders exactly this, so the base layer has to give it the house look on its own: dot bullets, numbered steps, a reading measure on the prose, room above every heading, and an image that stops at the column.
This h3 sits under a paragraph with no wrapper anywhere. The space above it is the heading's own margin, not a wrapper's.
A block quote sits behind a hairline rule in the soft ink, quieter than the prose around it and never a pull quote.
A native details element. Use it for a section a reader will often skip: a long list of headlines, an inbox, a set of events. Click the head to close it.
Use this for a note written at a moment rather than a section of the document. It has no number, and the time sits under the heading in the meta grey.
Seven columns, today first, all-day items before timed ones. An empty day reads "Open". Under 820px the grid becomes a stack.
Open
Open
Open
Weeks as rows. Today has the heavier rule and the filled day number; days outside the month are dimmed.
A faint label, a large number in tabular numerals, and one meta line. Use the facts grid when the words matter more than the figure, and these when the figure is the point. The row fits up to four across and drops to two on a phone.
Engagements shipped
38
Median time to first result
11 days
Repeat clients
64%
Workshop seats
212
Engagements shipped
38
Median time to first result
11 days
Repeat clients
64%
Repeat clients
64%
The display face, capped at half the reading measure, with the attribution in soft ink under it. No quotation marks and no coloured bar. A plain blockquote, with its hairline side rule, is still the quiet aside; this is the loud one, once per document.
They stopped guessing at what the agent could do and started writing it down. That is the whole change.
They stopped guessing at what the agent could do and started writing it down. That is the whole change.
A badge is a small square tag for a status or a category. Five fills, one per badge. Keep the word to one or two.
Eyebrow label
The eyebrow sits above a heading and names what kind of thing follows: "Quarterly review", "Option B", "Section 2". Display face, meta size, faint ink, and no rule or box under it.
For a process whose steps each have a name and a line of detail. The numbered list stays for a sequence of sentences.
An hour on what you actually do, written up as a scope you sign off.
The work happens in your repository, with your developers watching.
You run it on real work for a week and say where it breaks.
The runbook, the prompts, and the person who knows how to change them.
An hour on what you actually do, written up as a scope you sign off before anything is built.
The work happens in your repository, with your developers watching, so nothing arrives as a black box.
You run it on real work for a week and say where it breaks, and the fixes go in before handover.
The runbook, the prompts, and the person on your team who knows how to change them.
A month later, one call to see what changed and what the team would build next.
Add data to either table style. Numbers set in tabular numerals and aligned right with num, so the decimals and dollar signs stack. The total goes in a tfoot row.
| Engagement | Days | Sessions | Fee |
|---|---|---|---|
| Team workshop, half day | 0.5 | 1 | $2,400 |
| Team workshop, full day | 1.0 | 2 | $4,200 |
| Codebase readiness review | 4.0 | 3 | $11,500 |
| One workflow, end to end | 12.0 | 8 | $28,000 |
| Four engagements | 17.5 | 14 | $46,100 |
A list of what is in the box, not a list of steps. The check sits at the same inset as the dot and the numeral, so the three kinds of list line up when they stack.
A picture printed on a plate: a hairline frame, room round the image, and a numbered caption on its own strip. The plain figure, with no class, stays frameless.
A grid of cards, one per choice. Each names the option, says what it is in a line or two, and lists what it costs. A recommended option says so with a badge, never with a coloured edge.
The picture takes two fifths of the column and the text the rest. Use it for a screenshot and the paragraph that explains it. Under 820px the two stack, picture first.
Add media--right. Alternate the two down a page when several pictures each have a paragraph of their own.
A picture on top, then a name and a line. Two across by default, three with image-cards--3. The picture is cropped to one shape so the row lines up.
A beige page and a condensed display face.
Mono labels in a column beside a quiet sans.
Each section its own block of colour.
A title block over a ruled grid.
A serif catalogue with a margin rail.
A grid of figures, one caption line each, and no box round them. Two-up by default, three-up with gallery--3. Three-up drops to two on a phone.





For a hero shot or a wide chart. The figure sits between sections as a direct child of the body, like a band, and only the picture runs to the page edge. A picture taller than most of the screen is cropped from the top.
A main picture fills the frame and a second one peeks in from the lower right at a slight angle, like a sheet laid on a sheet. Use it for a page and one detail from it.
It fills whatever width it is given and keeps one shape, so give it a grid cell, an image card, or the picture side of an image-beside-text block, never the whole column.
The large head opens every numbered section, like the one above. Two smaller levels sit inside a section. Each drops one thing: the rule gets lighter, then the label goes.
A 1px ink rule across the full column, an h3, and a short label on the right in place of the section number.
A hairline and the heading alone, with no label.
Twelve Lucide icons cover what documents need. Add one to this set before using it, so a page never mixes two drawings of the same idea.
Ink is the default. The accent marks structure, the emphasis marks the one thing to act on, and the mark colour marks status. An icon takes one of the four and nothing else.
icon--cobalticon--purpleicon--sage