Stylebook
The type, colour, and spacing system this site is built on, read back from the theme's own tokens.
Typefaces
Display carries hierarchy, the serif carries reading, and mono marks anything that is a label, a figure, or a designator.
Display (Archivo)
Aa
The quick brown fox jumps over the lazy dog.
"Archivo Variable", Archivo, ui-sans-serif, system-ui, sans-serif
Body (Newsreader)
Aa
The quick brown fox jumps over the lazy dog.
"Newsreader Variable", Newsreader, Georgia, serif
Mono (JetBrains Mono)
Aa
The quick brown fox jumps over the lazy dog.
"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, monospace
Type scale
From the smallest label up to the hero. The two largest steps are fluid, interpolating against the viewport with clamp() instead of jumping at breakpoints. Each size is checked against its Tailwind token; a mismatch is flagged as drift.
Palette
An instrument palette: anodised paper, ink, an inverted panel ground, field green for accents on paper, and signal amber reserved for the panel and for status. Every value is declared in theme.json and again as a Tailwind token; each swatch shows both — theme.json above, the token the site paints with below — and is flagged if they disagree. Viewed in the dark scheme, the lower half shows the dark value the site switches to.
Paper (ground)
paper · #E8E9E4
bg-vsg-paper
Ink (text, rules)
ink · #1A1D1A
bg-vsg-ink
Panel (inverted)
panel · #232823
bg-vsg-panel
Signal (amber accent)
signal · #CD871D
bg-vsg-signal
Field (meta, tags)
field · #4A6B5A
bg-vsg-field
Rule (hairlines)
rule · #C3C5BC
bg-vsg-rule
Paper dim
paper-dim · #60635B
bg-vsg-paper-dim
Panel dim
panel-dim · #A8ABA3
bg-vsg-panel-dim
Fail (semantic)
fail · #EF4444
bg-vsg-fail
Pass (semantic)
pass · #10B981
bg-vsg-pass
Contrast pairings
The combinations the blocks are written against, scored from the hex values on every render. Text needs 4.5:1. The status lamp is decorative — the status is always written out beside it — so its ratio is recorded but not scored. The last row stays on the page to show why that pairing is ruled out.
Spacing
Seven fixed steps, a quarter rem to six. Layout uses these, not arbitrary values.
Components
The real blocks, rendered with sample content. They are the same files the pages use, so what you see here is what ships.
Buttons · buttonClasses()
Section rule · vsg/section-rule
Pull quote · vsg/caliper-quote
A quoted observation, bracketed by caliper marks rather than a solid rule.
Inverted panel · vsg/panel
A statement that sits apart from the page, on the inverted ground.
Callout · vsg/callout
Closing call to action · vsg/cta
Closing heading.
One or two sentences of terms. The button goes to the application.