ReferenceV5 Design System

Style guide

Every token, type ramp, and panel pattern used across the v5 pages — colors, sizes, paddings, headers, chips. Toggle the theme to inspect tokens in light and dark.

§ 01Tokens

Color palette.

Every CSS variable defined under .v5-root. Light-mode values shown when light theme is active.

--v5-bg
Page background
--v5-bg-elev
Elevated background
--v5-surface
Panel surface
--v5-surface-2
Active surface
--v5-border
Hairline border
--v5-border-strong
Strong border
--v5-text
Primary text
--v5-text-muted
Body / secondary
--v5-text-dim
Tertiary / captions
--v5-accent
Brand accent (orange)
--v5-accent-strong
Accent — emphasis
--v5-accent-dim
Accent — washed
--v5-on-accent
Text on accent fill
--v5-positive
Positive / up
--v5-negative
Negative / down
--v5-glow
Atmospheric glow
§ 02Type Ramp

Display, numerals, eyebrows.

v5-display is Fraunces (serif). v5-num is JetBrains Mono. Always font-light on display.

Display (v5-display)
Hiring Index
v5-display · 108px
Hero title (flat)
Hiring Index
v5-display · 96px
Hero metric value
Hiring Index
v5-display · 44px
Section h2 (lg)
Hiring Index
v5-display · 40px
Section h2 (sm)
Hiring Index
v5-display · 32px
Section h2 (base)
Hiring Index
v5-display · 28px
Card primary stat
Hiring Index
v5-display · 24px
Panel sub-header / italic display / pull-quote
Hiring Index
v5-display · 22px
Panel sub-header (compact)
Hiring Index
v5-display · 20px
Panel sub-header (small)
Hiring Index
v5-display · 15px
Logo wordmark
Hiring Index
v5-display · 24px
Italic display — pull-quote, panel sub-header italic
Numerals (v5-num)
0123456789
v5-num · 96px
Hero metric value (numeric variant)
0123456789
v5-num · 28px
Metric strip primary
0123456789
v5-num · 11px
Section number (§ 0X), micro-stat
0123456789
v5-num · 10.5px
Footer stamp, attribution caption
Eyebrow (v5-eyebrow)
v5-eyebrow
Section eyebrow text
With accent
Issue № 12
Body copy (15px)

Default body copy uses Geist at 15px / 1.65 line-height in var(--v5-text-muted) for a readable, editorial tone.

Body copy (13px)

Compact body / aside copy at 13px / 1.55. Use inside section-header asides and card blurbs.

§ 03Anatomy

Section headers.

Always use <V5SectionHeader> instead of hand-rolling. Title accepts ReactNode so the italic span can highlight a key noun.

§ 0XEyebrow Goes Here

A title with one italic word.

Optional aside on the right — 13px body in var(--v5-text-muted). Wraps below 1024px.

<V5SectionHeader sectionNumber="01" eyebrow="…" title={<>… <span className="italic">word</span>.</>} aside={<p>…</p>} />
§ 04Containers

Panels & padding.

The v5-panel class supplies surface, border, and radius. Padding is chosen by role — see scale below.

Sample Panel
p-4 sm:p-6

Body copy at 12px / 1.6 — used for descriptive blurbs inside cards and secondary metric explainers.

p-4 sm:p-6
Inner chart wrap (e.g. hero volume chart)
Sample Panel
p-6 sm:p-8

Body copy at 12px / 1.6 — used for descriptive blurbs inside cards and secondary metric explainers.

p-6 sm:p-8
Section main panel — responsive
Sample Panel
p-8

Body copy at 12px / 1.6 — used for descriptive blurbs inside cards and secondary metric explainers.

p-8
Section main panel — flat (legacy / dense)
Sample Panel
p-5

Body copy at 12px / 1.6 — used for descriptive blurbs inside cards and secondary metric explainers.

p-5
Card cell inside a panel
Inset (v5-panel-inset)
Inset Sample

Used for nested sub-panels (e.g. hero sparkline). Slightly darker surface, same border treatment.

§ 05Controls

Chips, tabs, buttons.

Inline-style pattern: border + background driven by CSS vars, not hex. Active state always uses --v5-surface-2.

Tab — active
Tab — inactive
Chip — positive
+8.4%vs Feb
Chip — negative
−2.1%vs Feb
Pill — almanac
Almanac No. XII
§ 06Charts

Axes, ticks, labels.

SVG text inside charts uses class-based fonts and var(--*) fills — never hardcoded hex.

Tick label
Axis label (v5-num 10.5)
n = 144 months
Series legend swatch
Postings
Text on accent fill
Engineering 48.2%
Gradient (accent → transparent)
§ 07Rhythm

Section spacing.

Top of section: pt-20. Bottom: pb-4 on stacked sections, pb-16 on hero. Header bottom margin is mb-8 sm:mb-10 (built into V5SectionHeader).

<section className="pb-4 pt-20">…</section>
<header className="mb-8 sm:mb-10">…</header> // built into V5SectionHeader
<div className="v5-panel p-6 sm:p-8">…</div> // section main
<div className="v5-panel p-4 sm:p-6">…</div> // inner chart wrap