Skip to content

Pace foundations ​

Palette, light ​

Background
#f5f8f4 --sk-bg
Surface
#ffffff --sk-surface
Border
#cfdcd3 --sk-border
Ink
#173528 --sk-ink
Muted
#52665a --sk-muted
Accent
#23724e --sk-accent
On accent
#ffffff --sk-on
Success
#1a6e44 --sk-success
Warning
#8a5a00 --sk-warning
Danger
#b3261e --sk-danger
Info
#255f9e --sk-info

Palette, dark ​

Background
#111a15 --sk-bg
Surface
#18241d --sk-surface
Border
#2b3d32 --sk-border
Ink
#e6f1ea --sk-ink
Muted
#a2b7a9 --sk-muted
Accent
#83d4a1 --sk-accent
On accent
#0b2417 --sk-on
Success
#7fd69b --sk-success
Warning
#f0c36d --sk-warning
Danger
#f29b94 --sk-danger
Info
#8fbfee --sk-info

Brand green is an action color. Success also leans green, so status always pairs a label and icon with the color. Pace never borrows other templates' palettes.

Contrast (WCAG 2.2, computed from the tokens) ​

PairLightDark
Ink on background12.4:115.3:1
Ink on surface13.3:113.9:1
Muted on background5.8:18.4:1
Muted on surface6.2:17.6:1
On-accent text on accent (buttons)5.9:19.3:1
Accent text on background (links)5.5:110.1:1
Accent on surface5.9:19.1:1
Success, warning, danger, info text on background5.5 to 6.1:19.2 to 10.8:1

Every text pair clears 4.5:1 (AA). Focus rings use the accent, 2px with a 3px offset, and also clear 3:1 against both surfaces. tests/pace-system.cjs recomputes these numbers from studio-systems.css.

Typography ​

Ride stronger
Display: Space Grotesk 700, 44/48. Page titles and big numbers.
Today's classes
Heading: Space Grotesk 600, 24/30. Card titles 15px.
Arrive ten minutes early to set up your bike and clip in.
Body: DM Sans 400, 15/22 (admin tables 13px, metadata 11px).
1,284 credits used
Numbers: tabular digits, unit beside the value.

Spacing, shape and elevation ​

4px base grid, gaps 8/12/16/24px, card padding 16 to 24px. Radius: 12px cards, 6px controls, 28px phone frame, 999px avatars and switches. 1px borders; shadows only on overlays and the phone frame. No gradients on controls.

Icons ​

24px grid, 1.75px round stroke, currentColor. Search and pick one to copy its markup.

bike: 24px grid, 1.75px round stroke, currentColor. Icons are decorative next to a label, or need aria-label when alone.

<svg viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="5.5" cy="17" r="3.5"/><circle cx="18.5" cy="17" r="3.5"/><path d="M5.5 17 9 8h6l3.5 9M9 8 12 17M14 5h3"/></svg>

Accessibility ​

Labels on every input, visible error text, 40px minimum touch targets on member screens, keyboard focus on every control, native dialogs with Escape, charts with captions and SVG labels, reduced motion respected.

Live components