PlatyDraft for validation

Design system

Colours, type and components for the Platy web app, derived from the logo, the only brand asset so far. Every text colour reaches WCAG 2.1 AA contrast (4.5:1), and every focus ring and field border 3:1, in the light and the dark theme.

Logo

A single-colour mark. Its white details are cut out, so the same file works on light and dark backgrounds.

Platy logo on the light theme
Light theme
Platy logo on the dark theme
Dark theme

Colour

Every pairing the components use, with its contrast ratio in both themes. Values come from the design tokens in globals.css.

UseTokenslightdark
Body textforeground
on background
#0C1817 / #FFFFFF
18.12:1 min 4.5:1
#E6F0EF / #0C1817
15.60:1 min 4.5:1
Supporting textmuted-foreground
on background
#4E6261 / #FFFFFF
6.47:1 min 4.5:1
#9DB2B1 / #0C1817
8.14:1 min 4.5:1
Supporting text on muted areasmuted-foreground
on muted
#4E6261 / #F4F8F8
6.05:1 min 4.5:1
#9DB2B1 / #172524
7.11:1 min 4.5:1
Text on cardscard-foreground
on card
#0C1817 / #FFFFFF
18.12:1 min 4.5:1
#E6F0EF / #122120
14.30:1 min 4.5:1
Supporting text on cardsmuted-foreground
on card
#4E6261 / #FFFFFF
6.47:1 min 4.5:1
#9DB2B1 / #122120
7.46:1 min 4.5:1
Links and text buttonsprimary
on background
#0B817D / #FFFFFF
4.72:1 min 4.5:1
#09C6C2 / #0C1817
8.52:1 min 4.5:1
Primary buttonprimary-foreground
on primary
#FFFFFF / #0B817D
4.72:1 min 4.5:1
#04302E / #09C6C2
6.73:1 min 4.5:1
Secondary button, neutral badgesecondary-foreground
on secondary
#0C1817 / #EAF1F1
15.84:1 min 4.5:1
#E6F0EF / #1F302F
11.88:1 min 4.5:1
Hovered and selected itemsaccent-foreground
on accent
#0E5654 / #E3F7F6
7.63:1 min 4.5:1
#A9F1ED / #103634
10.31:1 min 4.5:1
Field error messagesdestructive
on background
#C42B2B / #FFFFFF
5.63:1 min 4.5:1
#F06A6A / #0C1817
6.02:1 min 4.5:1
Destructive buttondestructive-foreground
on destructive
#FFFFFF / #C42B2B
5.63:1 min 4.5:1
#2A0707 / #F06A6A
6.16:1 min 4.5:1
OK statussuccess-foreground
on success
#17643A / #E3F5EA
6.34:1 min 4.5:1
#82DDA6 / #10301E
8.77:1 min 4.5:1
At-risk statuswarning-foreground
on warning
#874505 / #FDF1D9
6.51:1 min 4.5:1
#F2C063 / #352709
8.64:1 min 4.5:1
Blocking statusdanger-foreground
on danger
#A32025 / #FCE9E9
6.44:1 min 4.5:1
#FF9E9E / #3B1517
8.15:1 min 4.5:1
Focus ringring
on background
#0B817D / #FFFFFF
4.72:1 min 3:1
#09C6C2 / #0C1817
8.52:1 min 3:1
Field borderinput
on background
#6F8584 / #FFFFFF
3.91:1 min 3:1
#6F8584 / #0C1817
4.63:1 min 3:1

Typography

Inter, an open-source typeface (SIL Open Font License), served with the app. Sizes follow Tailwind's scale from 14 px up; times and amounts use tabular figures so columns line up.

Page titletext-3xl, semibold
Season 2027 staffing
Section titletext-xl, semibold
Le Mans Classic · 2–5 July
Card titletext-base, semibold
Track marshals
Bodytext-sm
Twelve marshals confirmed; two still need a valid licence.
Supportingtext-sm, muted
Updated 3 minutes ago by the event coordinator
Numberstext-sm, tabular-nums
08:30–18:00 · €1,240.00 · 14 of 16 staffed

Components

Adapted from shadcn/ui and kept in this repository. Keyboard focus draws a 2 px ring in the primary colour; statuses always pair colour with a word and an icon.

Light theme

Buttons

Badges

OKAt riskBlocking
DraftPublishedMotorsport

Form fields

The licence expired on 12 March 2026.

Cards

Track marshal

Le Mans Classic · 2–5 July 2027

OK
Host

Motor show · 14–19 Sept 2027

At risk

Dark theme

Buttons

Badges

OKAt riskBlocking
DraftPublishedMotorsport

Form fields

The licence expired on 12 March 2026.

Cards

Track marshal

Le Mans Classic · 2–5 July 2027

OK
Host

Motor show · 14–19 Sept 2027

At risk