Reference
Design system
Every ratio was computed with tools/a11y/contrast.py against all three grounds.
This page is noindex: it documents the template for whoever builds with it.
The letters are generated, not drawn
src/data/skeletons.ts holds four skeletons — the paths a hand travels — and a
sweep() that offsets each point by the nib and closes the polygon. A broad edge
offsets by a constant vector, because the nib never rotates in the hand, so strokes
running along the pen angle come out hairline and strokes across it come out full width. A
pointed nib offsets perpendicular to travel, scaled by how much of the movement is a
pull, because that is when the tines spread. Change angle in
config.ts and every thick and thin on the page moves. There are no letterform
outlines anywhere in this template and no images at all.
Why the accent is terre verte
Green earth is a manuscript pigment — the underpaint beneath skin tones in illumination for a
thousand years. #42621A sits at hue 87°, inside the emptiest band of the
library's 118-accent corpus (90–105° held two entries), ΔE 9.0 from its nearest neighbour.
It is used for the skeleton overlay, the nib in the angle diagram and the figures in the
tables: the three places the page is showing you a mechanism rather than a result.
The ruling never sits behind text
--rule is 1.54:1 against the ground, which is correct for a guide line and
illegal behind a paragraph. It appears only under specimen bands and inside the guide sheets
— which is also the only place a calligrapher rules a real sheet. Body copy is set on plain
paper.
Prices: the opposite call to day 128, on the same rule
Day 128 (tattoo-artist-portfolio) withheld price and
priceRange entirely, because a session's length is set by placement and skin —
there was no settled number to assert. Here there is: an envelope is $4.50, every time, and a
six-week course is $340 with eight seats, so a UnitPriceSpecification with
unitText: "envelope" is emitted and is accurate. The rule was never "never state
a price" — it is assert what is settled, withhold what is not, and the two days are
that rule producing opposite markup. The two "from" rates carry no price specification,
because a floor is not a price.
What the Course blocks refuse to say
Every class emits Course with coursePrerequisites,
courseWorkload and maximumAttendeeCapacity — all facts about the
room. None emits educationalCredentialAwarded or numberOfCredits,
because a six-week evening class awards nothing at all, and schema's course vocabulary was
built for institutions that do. Filling that field to look complete is exactly how a rich
result starts overstating.
Tokens
| Token | Value | Notes |
|---|---|---|
--color-bg | #F2EFE6 | Laid paper |
--color-bg-alt | #E4DFD1 | Banding |
--color-surface | #FBFAF5 | Cards, ductus figures, guide sheets |
--color-text | #211C15 | 14.71 / 12.71 / 16.18:1 · AAA — and the ink every letter is filled with |
--color-text-muted | #57503F | 6.96 / 6.01 / 7.66:1 · AA |
--color-border | #7E7462 | 4.00 / 3.46 / 4.41 — non-text only |
--color-accent | #42621A | Terre verte — 6.10 / 5.27 / 6.71:1 · AA |
--rule | #B9C4CE | Guide-sheet ruling. Decorative, never behind text |
--rule-soft | #DCE2E8 | Ascender and descender lines |
--color-band | #211C15 | The stock section inverts |
--color-on-band | #F2EFE6 | 14.71:1 on band · AAA |
--color-on-band-muted | #A79E8C | 6.37:1 on band · AA |
--color-accent-on-band | #A8CC66 | 9.26:1 on band · AAA |
Type
Forum for display — drawn from broad-pen Roman capitals, which makes it the one face in the catalogue built the way this page argues letters are built. It ships one weight and is used at one weight. Host Grotesk carries figures and UI. Both are unused elsewhere in the library.