Skip to content

Tokens

Every token in tokens.json. Each is a CSS custom property in tokens.css; components read the semantic tokens, never the palette directly. The transparent state fills and the motion values are in styles.css only.

Palette

The ramps hold one value in both themes.

TokenValueUsage
--parchment-50#faf6eeParchment neutral ramp (page grounds, hairlines). Components reference the semantic aliases, not the ramps. Page, lightest.
--parchment-100#f4eee0Parchment neutral ramp (page grounds, hairlines). Components reference the semantic aliases, not the ramps.
--parchment-200#eae1cdParchment neutral ramp (page grounds, hairlines). Components reference the semantic aliases, not the ramps.
--parchment-300#dacdb2Parchment neutral ramp (page grounds, hairlines). Components reference the semantic aliases, not the ramps. Hairline on light, disabled.
--stone-400#938770Stone neutral ramp. Components reference the semantic aliases, not the ramps. Darkened from #a99c84 so marks and control edges hold 3:1 on parchment and white.
--stone-500#766955Stone neutral ramp. Components reference the semantic aliases, not the ramps. Darkened from #857863 so it holds 4.5:1 as muted text on every light ground.
--stone-600#5f5645Stone neutral ramp (muted and secondary text). Components reference the semantic aliases, not the ramps.
--ink-700#3a342aWarm ink ramp (text and dark grounds). Components reference the semantic aliases, not the ramps.
--ink-800#262019Warm ink ramp (text and dark grounds). Components reference the semantic aliases, not the ramps. Raised dark surface.
--ink-900#17130eWarm ink ramp (text and dark grounds). Components reference the semantic aliases, not the ramps. Near-black, warm — primary text & dark bg.
--racing-900#0a2a1fBritish racing green ramp, the principal brand hue. Components reference the semantic aliases, not the ramps.
--racing-800#0e3a2bBritish racing green ramp, the principal brand hue. Components reference the semantic aliases, not the ramps.
--racing-700#14503bBritish racing green ramp, the principal brand hue. Components reference the semantic aliases, not the ramps. Primary brand.
--racing-500#1e6e4fBritish racing green ramp, the principal brand hue. Components reference the semantic aliases, not the ramps.
--racing-300#6fa98eBritish racing green ramp, the principal brand hue. Components reference the semantic aliases, not the ramps. On-dark tint.
--oxblood-800#4a141aOxblood ramp, the secondary seal. Components reference the semantic aliases, not the ramps.
--oxblood-600#6e1f27Oxblood ramp, the secondary seal. Components reference the semantic aliases, not the ramps. Secondary brand.
--oxblood-400#9a4048Oxblood ramp, the secondary seal. Components reference the semantic aliases, not the ramps.
--oxblood-300#c4767eOxblood ramp, the secondary seal. Components reference the semantic aliases, not the ramps. On-dark oxblood solids — dots, rules, brand-alt.
--oxblood-200#d79aa1Oxblood ramp, the secondary seal. Components reference the semantic aliases, not the ramps. On-dark oxblood text — see note in dark theme.
--cognac-700#8a4a22Cognac / saddle-leather ramp. Components reference the semantic aliases, not the ramps.
--cognac-500#a95f2eCognac / saddle-leather ramp. Components reference the semantic aliases, not the ramps.
--cognac-300#c98a55Cognac / saddle-leather ramp. Components reference the semantic aliases, not the ramps.
--brass-600#886421Brass ramp, the text-weight gilt: labels, link hover, focus ring in light. Components reference the semantic aliases, not the ramps. Darkened from #9a7534 for 4.5:1 on parchment.
--brass-500#b8894bBrass / gilt ramp, the metallic accent (foil, rules, marks). Components reference the semantic aliases, not the ramps.
--brass-400#c99e5eBrass / gilt ramp, the metallic accent (foil, rules, marks). Components reference the semantic aliases, not the ramps.
--brass-300#dec088Brass / gilt ramp, the metallic accent (foil, rules, marks). Components reference the semantic aliases, not the ramps. On-dark gilt.
--navy-800#16283aPolo navy ramp, quiet informational support. Components reference the semantic aliases, not the ramps.
--navy-600#24425ePolo navy ramp, quiet informational support. Components reference the semantic aliases, not the ramps.
--navy-400#4a6c8cPolo navy ramp, quiet informational support. Components reference the semantic aliases, not the ramps.
--signal-600#a81f26Signal red ramp, alarms only. Components reference the semantic aliases, not the ramps.
--signal-500#c4292fSignal red ramp, alarms only. Components reference the semantic aliases, not the ramps.

Semantic colours

Semantic colours change with the theme. Set data-theme="dark" on any element to switch it.

Backgrounds

TokenLightDarkUsage
--bg-pageparchment-50 #faf6ee#15110bPage ground. Text: text-primary, text-secondary.
--bg-surface#ffffff#1f1810Card on parchment.
--bg-sunkenparchment-100 #f4eee0#0f0c07Sunken wells; hover wash on ghost and quiet elements.
--bg-inverseink-900 #17130e#0b0906Dark sections, code, terminal.
--bg-inverse-2ink-800 #262019#151009Raised surface inside inverse sections.

Text

TokenLightDarkUsage
--text-primaryink-900 #17130e#f1eadbPrimary text, on bg-page, bg-surface and bg-sunken.
--text-secondarystone-600 #5f5645#b7ac93Secondary text, on bg-page, bg-surface and bg-sunken (6.3:1 or more in light).
--text-mutedstone-500 #766955#8e826bMuted captions and placeholders, on bg-page, bg-surface and bg-sunken (4.6:1 or more in both themes).
--text-on-darkparchment-100 #f4eee0parchment-100 #f4eee0Text on bg-inverse.
--text-on-dark-muted#9e937c#9e937cMuted text on bg-inverse.

Brand, accents and chrome

TokenLightDarkUsage
--brandracing-700 #14503bracing-300 #6fa98ePrincipal brand colour: primary fills, links, checked controls.
--brand-strongracing-900 #0a2a1f#8fc0a6Deepened brand for hover and strong fills.
--brand-altoxblood-600 #6e1f27oxblood-300 #c4767eSecondary seal: deny actions, destructive dialogs.
--accentbrass-600 #886421brass-400 #c99e5eBrass accent as text: link hover. Bright gilt fills and keylines use brass-500 directly.
--accent-on-darkbrass-300 #dec088brass-300 #dec088Brass accent on dark grounds.
--leathercognac-500 #a95f2ecognac-300 #c98a55Cognac leather accent.
--infonavy-600 #24425enavy-400 #4a6c8cInformational tone.
--label-engravedbrass-600 #886421brass-300 #dec088Eyebrow/legend label colour.
--edge-giltrgba(154,117,52,0.55)rgba(222,192,136,0.38)The 1px gilded book-edge that seams dark sections into light pages.
--scrimrgba(23,19,14,0.50)rgba(6,4,2,0.66)Dialog / palette backdrop.
--nav-bgbg-page #faf6eebg-page #15110bSticky nav ground: opaque, over a hairline. Never translucent or blurred.
--code-inline-bgparchment-200 #eae1cd#241c12Inline code background.
--code-inline-fgoxblood-600 #6e1f27cognac-300 #c98a55Inline code text, on code-inline-bg.

Borders and focus

TokenLightDarkUsage
--border-hairlineparchment-300 #dacdb2#2c24171px rules on light.
--border-strong#a99c84#463a26Decorative rules: table headers and totals, dashed separators, hollow rings. Not for control edges; use border-control.
--border-controlstone-400 #938770#736650Edges of form controls and outline buttons: inputs, selects, textareas, checkboxes, radios. Holds 3:1 on every surface in both themes.
--border-control-hoverstone-500 #766955text-muted #8e826bHovered control edge; one step stronger than border-control in both themes.
--border-on-darkrgba(222,192,136,0.22)rgba(222,192,136,0.22)Gilt hairline on ink.
--focus-ringbrass-600 #886421brass-400 #c99e5eBorder colour of a focused control; pairs with focus-shadow.

Status

TokenLightDarkUsage
--status-successracing-500 #1e6e4fracing-300 #6fa98eStatus mark for a success OUTCOME.
--status-success-bg#e4eee6#16281eTint fill behind success status.
--status-success-fgracing-700 #14503b#7fb79aText/icon on status-success-bg.
--status-warningcognac-500 #a95f2ecognac-300 #c98a55Status mark for a warning OUTCOME.
--status-warning-bg#f4e6d5#2c1e10Tint fill behind warning status.
--status-warning-fgcognac-700 #8a4a22#d19a66Text/icon on status-warning-bg.
--status-dangersignal-500 #c4292fsignal-500 #c4292fStatus mark for a danger OUTCOME.
--status-danger-bg#f5e0df#2e1414Tint fill behind danger status.
--status-danger-fgsignal-600 #a81f26#e08789Text/icon on status-danger-bg.
--status-infonavy-600 #24425enavy-400 #4a6c8cStatus mark for an info OUTCOME.
--status-info-bg#e1e8ee#152430Tint fill behind info status.
--status-info-fgnavy-600 #24425e#8fb0cbText/icon on status-info-bg.

Tags

TokenLightDarkUsage
--tag-bgbg-surface #ffffff#221b12Tag fill (default).
--tag-fgtext-secondary #5f5645text-secondary #b7ac93Tag text (default), on tag-bg.
--tag-bdborder-hairline #dacdb2border-hairline #2c2417Tag border (default).
--tag-brand-bg#eaf0ec#16281eTag fill (brand).
--tag-brand-fgracing-700 #14503b#7fb79aTag text (brand), on tag-brand-bg.
--tag-brand-bdrgba(20,80,59,.30)rgba(111,169,142,.30)Tag border (brand).
--tag-gilt-bg#f6efdf#2a2110Tag fill (gilt).
--tag-gilt-fgbrass-600 #886421brass-300 #dec088Tag text (gilt), on tag-gilt-bg.
--tag-gilt-bdrgba(184,137,75,.40)rgba(222,192,136,.30)Tag border (gilt).
--tag-oxblood-bg#f5e7e7#2a1416Tag fill (oxblood).
--tag-oxblood-fgoxblood-600 #6e1f27oxblood-200 #d79aa1Tag text (oxblood), on tag-oxblood-bg.
--tag-oxblood-bdrgba(110,31,39,.28)rgba(154,64,72,.35)Tag border (oxblood).

Workflow states

TokenLightDarkUsage
--state-queuedstone-400 #938770stone-400 #938770Workflow state queued: dot/rule colour.
--state-queued-bgparchment-100 #f4eee0#221b12Workflow state queued: chip tint.
--state-queued-fgstone-600 #5f5645text-secondary #b7ac93Workflow state queued: chip text, on state-queued-bg.
--state-queued-bdborder-hairline #dacdb2border-hairline #2c2417Workflow state queued: chip border.
--state-runningracing-500 #1e6e4fracing-300 #6fa98eWorkflow state running: dot/rule colour.
--state-running-bgtag-brand-bg #eaf0ec#16281eWorkflow state running: chip tint.
--state-running-fgracing-700 #14503b#7fb79aWorkflow state running: chip text, on state-running-bg.
--state-running-bdtag-brand-bd rgba(20,80,59,.30)rgba(111,169,142,.30)Workflow state running: chip border.
--state-needs-inputbrass-600 #886421brass-400 #c99e5eWorkflow state needs-input: dot/rule colour (3:1 or more on the page grounds).
--state-needs-input-bgtag-gilt-bg #f6efdf#2a2110Workflow state needs-input: chip tint.
--state-needs-input-fgbrass-600 #886421brass-300 #dec088Workflow state needs-input: chip text, on state-needs-input-bg.
--state-needs-input-bdtag-gilt-bd rgba(184,137,75,.40)rgba(222,192,136,.30)Workflow state needs-input: chip border.
--state-needs-reviewoxblood-600 #6e1f27oxblood-300 #c4767eWorkflow state needs-review: dot/rule colour. Dark: -400 fails 3:1 on dark; see ramp note.
--state-needs-review-bgtag-oxblood-bg #f5e7e7#2a1416Workflow state needs-review: chip tint.
--state-needs-review-fgoxblood-600 #6e1f27oxblood-200 #d79aa1Workflow state needs-review: chip text, on state-needs-review-bg.
--state-needs-review-bdtag-oxblood-bd rgba(110,31,39,.28)rgba(154,64,72,.35)Workflow state needs-review: chip border.
--state-donestone-500 #766955stone-500 #766955Workflow state done: dot/rule colour.
--state-done-fgtext-muted #766955text-muted #8e826bWorkflow state done: chip text, on state-done-bg.
--state-done-bdborder-hairline #dacdb2border-hairline #2c2417Workflow state done: chip border.
--state-failedsignal-500 #c4292fsignal-500 #c4292fWorkflow state failed: dot/rule colour.
--state-failed-bgstatus-danger-bg #f5e0df#2e1414Workflow state failed: chip tint.
--state-failed-fgsignal-600 #a81f26#e08789Workflow state failed: chip text, on state-failed-bg.
--state-failed-bdrgba(196,41,47,.30)rgba(224,135,137,.32)Workflow state failed: chip border.

Decisions

TokenLightDarkUsage
--decision-pendingstate-needs-input #886421state-needs-input #c99e5eApproval decision pending: dot colour.
--decision-pending-bgstate-needs-input-bg #f6efdfstate-needs-input-bg #2a2110Approval decision pending: chip tint.
--decision-pending-fgstate-needs-input-fg #886421state-needs-input-fg #dec088Approval decision pending: chip text, on decision-pending-bg.
--decision-pending-bdstate-needs-input-bd rgba(184,137,75,.40)state-needs-input-bd rgba(222,192,136,.30)Approval decision pending: chip border.
--decision-approvedstate-running #1e6e4fstate-running #6fa98eApproval decision approved: dot colour.
--decision-approved-bgstate-running-bg #eaf0ecstate-running-bg #16281eApproval decision approved: chip tint.
--decision-approved-fgstate-running-fg #14503bstate-running-fg #7fb79aApproval decision approved: chip text, on decision-approved-bg.
--decision-approved-bdstate-running-bd rgba(20,80,59,.30)state-running-bd rgba(111,169,142,.30)Approval decision approved: chip border.
--decision-deniedstate-needs-review #6e1f27state-needs-review #c4767eApproval decision denied: dot colour.
--decision-denied-bgstate-needs-review-bg #f5e7e7state-needs-review-bg #2a1416Approval decision denied: chip tint.
--decision-denied-fgstate-needs-review-fg #6e1f27state-needs-review-fg #d79aa1Approval decision denied: chip text, on decision-denied-bg.
--decision-denied-bdstate-needs-review-bd rgba(110,31,39,.28)state-needs-review-bd rgba(154,64,72,.35)Approval decision denied: chip border.
--decision-expiredstone-400 #938770stone-400 #938770Approval decision expired: dot colour.
--decision-expired-fgtext-muted #766955text-muted #8e826bApproval decision expired: chip text, on decision-expired-bg.
--decision-expired-bdborder-hairline #dacdb2border-hairline #2c2417Approval decision expired: chip border.

Type

Families

TokenSpecimenStack
--font-displayEquestrianism stirrup 0123456789'Cormorant Garamond', 'Hoefler Text', Georgia, 'Times New Roman', serif
--font-monoEquestrianism stirrup 0123456789'IBM Plex Mono', ui-monospace, 'SF Mono', 'Cascadia Mono', Menlo, Consolas, monospace
--font-sansEquestrianism stirrup 0123456789'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif

Display

Provider invocation logs

.display-1 76px/1.04 · 600 · -0.01em. Hero masthead. Cormorant, upright, sentence case.

Provider invocation logs

.display-2 56px/1.04 · 600 · -0.01em. Secondary masthead.

Provider invocation logs

.heading-1 42px/1.2 · 600. Page heading. Upright, one weight and colour; names its content.

Provider invocation logs

.heading-2 32px/1.2 · 600. Section heading.

Provider invocation logs

.heading-3 24px/1.2 · 600. Sub-section heading.

Documentation

Provider invocation logs

.heading-4-mono 19px/1.2 · 600. Mono H4: a command or literal used as a heading.

Provider invocation logs

.body-lg 17px/1.62 · 400. Lede copy on documentation and marketing pages.

Provider invocation logs

.body-md 15px/1.62 · 400. Documentation and marketing body text: mono at 1.62.

Provider invocation logs

.body-sm 13.5px/1.62 · 400. Secondary body text and metadata lines.

Provider invocation logs

.caption-label 12px · 500. Sentence-case caption label in label-engraved; labels a block of data or a card, never above a section heading.

Provider invocation logs

.table-header 10.5px · 600 · 0.06em. Table and column headers, uppercase: the one UI place uppercase is used.

Interface

Provider invocation logs

.ui-text 13.5px/1.5 · 400. Application chrome: nav, form labels, card metadata. Sans at lh-ui.

Provider invocation logs

.ui-row 13.5px/1.35 · 400. Anything in a fixed-height row: table cells, badges, lane headers, nav items.

Provider invocation logs

.ui-caption 12px/1.5 · 400. Hints and helper text in the application register.

Spacing

TokenValueSpecimenUsage
--space-00No gap.
--space-14pxHairline gaps; icon-to-text.
--space-28pxTight gaps inside controls.
--space-312pxGaps between related items.
--space-416pxPanel and rail padding.
--space-520pxSection spacing in cards.
--space-624pxPage padding (app).
--space-832pxEmpty-state padding; large gaps.
--space-1040pxBetween page sections.
--space-1248pxBetween page sections.
--space-1664pxEditorial whitespace.
--space-2080pxEditorial whitespace.
--space-2496pxHero spacing.
--space-32128pxHero spacing.
--app-topbar-h52pxApp shell top bar height.
--app-rail-w220pxApp shell nav rail width.
--control-h34pxShared control height so mixed rows (input beside button) align.
--control-h-sm28pxSmall control height.
--control-px10pxControl horizontal padding.
--app-gap12pxBetween lanes, cards, form fields.
--app-pad16pxPanel / card padding.
--app-page-pad24pxMain column padding.

Radii

TokenValueSpecimenUsage
--radius-xs2pxCheckboxes, inline code, small marks.
--radius-sm4pxButtons, inputs, chips, banners.
--radius-md6pxCards, dialogs.
--radius-lg10pxLarge panels.
--radius-pill999pxStatus dots and tags only.

Shadows

TokenLightDarkUsage
--shadow-xsHairline lift.
--shadow-smCards: sit on a hairline and this.
--shadow-mdSticky bars and popovers.
--shadow-lgOverlays and dialogs only.
--shadow-insetInset "pressed leather" for sunken wells.
--keyline-brassGilt keyline: the luxury elevation motif; marks the single most important card or active item.
--focus-shadowSolid 2px brass focus ring on :focus-visible (4.6:1 or more on every surface in both themes).

Font sizes

TokenValueUsage
--text-display-176pxHero masthead.
--text-display-256pxSecondary masthead size; the display-2 type style.
--text-h142pxPage heading size; the heading-1 type style.
--text-h232pxSection heading size; the heading-2 type style.
--text-h324pxSub-section heading size; the heading-3 type style.
--text-h419pxMono H4 size; the heading-4-mono type style. Also dialog titles.
--text-body-lg17pxLede copy size; the body-lg type style.
--text-body15pxDocumentation and marketing body size; the body-md type style.
--text-body-sm13.5pxSecondary body and application chrome size; the body-sm, ui-text and ui-row type styles.
--text-caption12pxCaptions, hints and metadata; the caption-label and ui-caption type styles.
--text-micro10.5pxEngraved plate labels; table headers.

Font weights

TokenValueUsage
--fw-light300Light numerals in reports.
--fw-regular400Body text.
--fw-medium500Caption labels, buttons.
--fw-semibold600Headings, table headers.
--fw-bold700Strong emphasis.

Line heights

TokenValueUsage
--lh-tight1.04Mastheads and display lines.
--lh-snug1.2Headings and titles.
--lh-normal1.62Documentation body, mono.
--lh-relaxed1.75Long-form reading.
--lh-ui1.5Application chrome.
--lh-ui-tight1.35Fixed-height rows: table cells, badges, lane headers, nav items.

Letter spacing

TokenValueUsage
--tracking-tight-0.01emDisplay sizes and serif titles: display-1, display-2, card titles and the wordmark.
--tracking-normal0Default tracking for sentence-case labels; buttons and the wordmark.
--tracking-wide0.06emLightly tracked mono labels: the table-header type style, tags, field and lane labels, decision buttons.
--tracking-wider0.14emUppercase micro labels: badges, table headers, the transcript type column and role and completed chips.
--tracking-plate0.22emSeal inscription only; not for UI labels.

Numerals

TokenValueUsage
--numeric-tabulartabular-numsAny figure in a column, updating in place, or compared against another: money, counts, durations, percentages.
--numeric-proportionalproportional-numsFigures in running prose.

Layout

TokenValueUsage
--measure68chmax reading width for mono body
--container1180pxcontent max-width
--container-wide1360pxWide content max-width.
--gutter32pxGrid gutter.

Border widths

TokenValueUsage
--border-width1pxDefault 1px edge.
--border-width-heavy1.5pxHeavier rule.

Set in Cormorant Garamond, IBM Plex Mono and IBM Plex Sans.

@equestrianism/design-system 0.1.0 · Apache License 2.0