Phase 2 · Design system

Taxi yellow, made modern.

Every colour, size and component CarrGo's blocks are built from. Blocks only use the semantic tokens, so changing one value here re-skins the whole theme, in light and dark.

01

Colour scales

Five families, eleven steps each, generated in OKLCH so every step feels evenly spaced. The yellow's middle steps sit a little lighter so they stay vivid. Source: scripts/palette.mjs.

taxiBrand · taxi yellow. Book buttons, marks, ratings. Always black text on it.
  1. 50#fef6e3
  2. 100#f9eac3
  3. 200#fee297
  4. 300#f6cc53
  5. 400#e3b403
  6. 500#a98608
  7. 600#8b6e01
  8. 700#705801
  9. 800#564200
  10. 900#3c2e01
  11. 950#251c00
asphaltNeutrals · cool road greys for text, lines, surfaces and the black second button.
  1. 50#f6f7f8
  2. 100#e9ebee
  3. 200#d6d9de
  4. 300#bdc1c8
  5. 400#a0a5ad
  6. 500#868b93
  7. 600#6d727a
  8. 700#575b62
  9. 800#41454b
  10. 900#2d3035
  11. 950#1b1d21
routeRoute · map lines, pickup markers, info and focus rings.
  1. 50#f2f7fe
  2. 100#dfecfe
  3. 200#c1dbfe
  4. 300#98c4ff
  5. 400#64a6fe
  6. 500#418be9
  7. 600#2570cc
  8. 700#1359ab
  9. 800#024389
  10. 900#002e64
  11. 950#001c40
goGo · success and "driver available".
  1. 50#ecfbef
  2. 100#d6f4dd
  3. 200#b1e9bf
  4. 300#82d79a
  5. 400#54be77
  6. 500#2ca45b
  7. 600#028844
  8. 700#046d36
  9. 800#035428
  10. 900#013b1a
  11. 950#00250e
redDanger · form errors only.
  1. 50#fef4f3
  2. 100#fee4e1
  3. 200#ffcbc4
  4. 300#fea69c
  5. 400#fe7367
  6. 500#e74f46
  7. 600#c9302d
  8. 700#a71a1c
  9. 800#85050c
  10. 900#610106
  11. 950#3e0102

02

Semantic tokens

What blocks actually use. Each token has a light and a dark value; both panels below are live.

Light

Surfaces & text

  • --bgPage background
  • --surfaceCards, fields
  • --surface-2Sunken areas
  • --inkBody text
  • --ink-mutedSecondary text
  • --ink-subtleHints, meta
  • --lineDividers
  • --field-borderInput borders

Brand & accent

  • --brandBook / primary
  • --brand-hoverPrimary hover
  • --brand-inkYellow-family text
  • --brand-softYellow tint
  • --accentSecond button
  • --on-accentSecond button text
  • --highlightMarks, stars
  • --focusFocus ring

Route & status

  • --routeMap lines
  • --route-inkRoute text
  • --route-softRoute tint
  • --goAvailable
  • --go-inkSuccess text
  • --go-softSuccess tint
  • --dangerErrors
  • --danger-softError tint

Dark

Surfaces & text

  • --bgPage background
  • --surfaceCards, fields
  • --surface-2Sunken areas
  • --inkBody text
  • --ink-mutedSecondary text
  • --ink-subtleHints, meta
  • --lineDividers
  • --field-borderInput borders

Brand & accent

  • --brandBook / primary
  • --brand-hoverPrimary hover
  • --brand-inkYellow-family text
  • --brand-softYellow tint
  • --accentSecond button
  • --on-accentSecond button text
  • --highlightMarks, stars
  • --focusFocus ring

Route & status

  • --routeMap lines
  • --route-inkRoute text
  • --route-softRoute tint
  • --goAvailable
  • --go-inkSuccess text
  • --go-softSuccess tint
  • --dangerErrors
  • --danger-softError tint

03

Contrast checks

Every pairing the blocks rely on, measured at build time against WCAG 2.2 AA (4.5:1 for text, 3:1 for borders and focus rings).

All 32 checks pass AA in light and dark.

PairingNeedsLightDark
Body text on page 4.5:1 Aa 15.72 Pass Aa 17.17 Pass
Muted text on page 4.5:1 Aa 8.98 Pass Aa 10.20 Pass
Subtle text on sunken 4.5:1 Aa 5.86 Pass Aa 5.35 Pass
Book button label 4.5:1 Aa 8.68 Pass Aa 8.68 Pass
Book button hover 4.5:1 Aa 10.99 Pass Aa 10.99 Pass
Second button label 4.5:1 Aa 16.88 Pass Aa 15.73 Pass
Yellow text on page 4.5:1 Aa 9.00 Pass Aa 12.00 Pass
Yellow text on tint 4.5:1 Aa 8.09 Pass Aa 9.76 Pass
Route text on tint 4.5:1 Aa 5.77 Pass Aa 8.75 Pass
Success text on tint 4.5:1 Aa 5.50 Pass Aa 8.91 Pass
Error text 4.5:1 Aa 4.96 Pass Aa 6.90 Pass
Input border 3:1 Aa 3.43 Pass Aa 3.49 Pass
Focus ring 3:1 Aa 4.58 Pass Aa 10.24 Pass
Taxi tone: text 4.5:1 Aa 8.68 Pass Aa 8.68 Pass
Taxi tone: muted 4.5:1 Aa 6.81 Pass Aa 6.81 Pass
Taxi tone: button 4.5:1 Aa 10.99 Pass Aa 10.99 Pass

04

Section tones

Any block takes tone: route (or any name below) and everything inside re-colours itself. Taxi stays yellow and Night stays dark in both modes.

tone: default

Default

The page itself.

tone: paper

Paper

Neutral, for forms, fares and FAQs.

tone: cream

Cream

Warm, for reviews and stories.

tone: route

Route

Cool, for cities, maps and the app.

tone: taxi

Taxi

Full yellow, for the big "Book now".

tone: night

Night

Dark street, for chauffeur and footers.

05

Typography

Headings in Archivo, a sturdy grotesque with the feel of road signs (one 35 KB variable file, self-hosted). Body in the visitor's system font, which costs nothing to load. Sizes scale smoothly from phone to desktop.

  1. --step-6Display

    Your ride, right on time

  2. --step-5Heading 2

    Fixed fares to every airport

  3. --step-4Heading 3 large

    Choose your vehicle

  4. --step-3Heading 3

    Executive saloon

  5. --step-2Heading 4

    How booking works

  6. --step-1Lead text

    Licensed drivers, fixed airport fares and a car at your door in minutes, day or night.

  7. --step-0Body

    Every CarrGo driver is licensed, background-checked and rated by riders after every trip.

  8. --step--1Small

    Licensed private hire operator no. 00123 · Prices include VAT

  9. --step--2Tiny

    Badges, captions and legal lines

Aa 400Aa 500Aa 600Aa 750Aa 900

Long-form text

Blog posts, service and city pages use the .prose style: a comfortable line length, generous spacing and links with a yellow underline. Lists get yellow markers:

  • Meet and greet in arrivals
  • 60 minutes' free waiting on airport pickups
  • Child seats on request
"Booked at midnight, picked up in six minutes. The driver even helped with my bags."

06

Spacing

Nine fluid steps. Sections use --space-3xl top and bottom; cards use m; gaps inside components use 2xs–s.

  • --space-3xs
  • --space-2xs
  • --space-xs
  • --space-s
  • --space-m
  • --space-l
  • --space-xl
  • --space-2xl
  • --space-3xl

07

Radius, shadow & chequer

Crisp corners, like a roof sign. Shadows get stronger in dark mode so cards still lift. The taxi chequer is the one decorative motif, used sparingly.

--radius-xs
--radius-s
--radius-m
--radius-l
--radius-xl
--radius-pill
--shadow-s
--shadow-m
--shadow-l

08

Buttons & links

Yellow is kept for the main action (book a ride) so it always stands out. The black button is the second choice and turns white in dark mode. All buttons are at least 44px tall for thumbs.

09

Forms & booking controls

Trip type and vehicle chips are real radio buttons: they work without JavaScript and with a keyboard. Fields with icons keep their labels for screen readers.

Estimated fare$38 fixed, incl. tolls

Enter a full mobile number so your driver can call you.

Bigger groups get a 7-seater at no extra cost.

10

Elements

Badges, ratings, prices, routes, cards and notices. Blocks combine these; they never invent their own.

Badges

DefaultMost bookedFixed fare Airport 3 drivers nearbyFully booked$45

Icon discs

Rating

4.9from 12,400 rides

Trip summary (ticket)

  1. Grand Central HotelPickup · 06:15
  2. Harbour BridgeStop · 06:30
  3. Airport, Terminal 2Drop-off · about 07:05
28 km · 50 min$54 fixed
Most booked 4 3

Executive saloon

Leather seats, bottled water and a suited driver. Ideal for airport runs and business trips.

See the fleet
From$2.40 / km

Notices

We track your flight and wait if it's late, at no extra cost.

Booked! Your driver's details arrive by text.

Night rate applies between midnight and 5 am.

We couldn't send your booking. Please call us instead.

11

Icons

Any of Lucide's 1,600+ icons by name: <Icon name="car-taxi-front" />. Inlined at build, so a page carries only the icons it uses. These are the ones CarrGo's blocks will use.

  • car-taxi-front
  • car-front
  • car
  • bus
  • plane
  • plane-landing
  • map-pin
  • map-pinned
  • navigation
  • route
  • locate-fixed
  • clock
  • calendar-days
  • users
  • luggage
  • baby
  • accessibility
  • briefcase-business
  • shield-check
  • badge-check
  • star
  • wallet
  • credit-card
  • smartphone
  • phone
  • message-circle
  • arrow-right
  • check
  • sun
  • moon