Foundations

Color

A sky-blue brand scale for primary actions, slate neutrals for the canvas, semantic feedback for status, and a calibrated hail-intensity ramp for radar overlays. Every color is a token; no raw hex in product code.

Brand · Sky

11-step scale. sky-700 is primary brand. sky-600 is the default interactive primary (links, primary buttons in motion). Use 50–200 for soft surfaces and badges; 800–950 for dark-mode primaries and contrast type.

sky-50
#f0f9ff
sky-100
#e0f2fe
sky-200
#bae6fd
sky-300
#7dd3fc
sky-400
#38bdf8
sky-500
#0ea5e9
sky-600
#0284c7
sky-700
#0369a1
sky-800
#075985
sky-900
#0c4a6e
sky-950
#082f49

Neutrals · Slate

Cool slate reads as technical and modern alongside sky. Use 50–200 for muted backgrounds, 300–400 for borders, 500–600 for muted text, 700–950 for body and high-contrast type.

slate-50
#f8fafc
slate-100
#f1f5f9
slate-200
#e2e8f0
slate-300
#cbd5e1
slate-400
#94a3b8
slate-500
#64748b
slate-600
#475569
slate-700
#334155
slate-800
#1e293b
slate-900
#0f172a
slate-950
#020617

Semantic · Feedback

Three-token sets (50/500/700) for each state. Use 50 for soft backgrounds, 500 for icons and accents, 700 for text on soft backgrounds.

success
Approved supplements, completed inspections
success-50/500/700
warning
Pending reviews, missing fields
warning-50/500/700
danger
Rejected claims, out-of-scope citations
danger-50/500/700
info
Neutral system messaging
info-50/500/700

Domain · Hail intensity

A 5-step ramp calibrated for radar overlays and storm event severity. Reads accurately on satellite/topographic underlays. Always paired with a numeric size legend — color alone is insufficient evidence.

trace< 0.5"
0.75"pea
1.25"quarter
1.75"golf ball
2.0"+tennis ball

Semantic tokens · Light

What product code references. Tokens map to scale steps; if you need a new shade, add it to the scale and assign a token.

TokenValueUsage
--bg
slate-0
Page background
--bg-muted
slate-50
Sidebars, muted surfaces
--bg-subtle
slate-100
Hover states, subtle fills
--bg-inverse
slate-900
Inverted surfaces
--fg
slate-900
Body text
--fg-muted
slate-600
Secondary text
--fg-subtle
slate-500
Tertiary, captions
--border
slate-200
Default border
--border-strong
slate-300
Inputs, emphasized borders
--primary
sky-700
Primary actions, brand
--primary-hover
sky-800
Primary hover
--primary-soft
sky-50
Soft primary surfaces
--primary-soft-fg
sky-800
Text on primary-soft

Accessibility

All token pairings used for text meet WCAG AA at minimum. Body text on bg achieves AAA. Primary on white passes AA Large; primary-soft-fg on primary-soft passes AA at all sizes.

Do
Use sky-700 on white for primary CTAs. Use sky-50 + sky-800 for soft pills and tags.
Don't
Use sky-400 or sky-500 for body text on white — both fail AA. Reserve them for fills, icons, and dark-theme primary.