W WeKnowSalons Style Guide
Brand kit & style guide · v0

Quiet by default.
Loud only where it counts.

The booking widget ships in clean greyscale. Every salon's brand drops in through a handful of tokens — so the system stays one codebase and every salon still feels like itself.

Choose a service
Same component, swapped tokens.
Gel Manicure
$35
Spa Pedicure
$70
10:0010:4511:30
Powered by WeKnowSalons
01

Principles

Four rules that decide every visual call in the product.

Neutral first

Greyscale by default

The platform never competes with the salon. Color is the tenant's, not ours.

Token-driven

One system, many brands

Color, radius, and font are tokens. A salon's look is data, not a fork of the code.

No fluff

Fewest taps to booked

Nothing on screen that doesn't move the booking forward. Square/Fresha-clean.

Lightweight

Drops into any site

Small, fast, embeddable. It behaves the same on every salon site we build.

02

Color

A cool-biased greyscale — picked, not defaulted. Primary action is solid ink; there is no brand color in the neutral system.

Paper
#FBFBFC
Page ground
Surface
#FFFFFF
Cards, fields
Mist
#F3F4F6
Fills, subtle
Mist 2
#ECEEF0
Hover fill
Line
#E3E5E8
Hairlines
Line strong
#CFD2D6
Input borders
Slate soft
#9AA0A6
Disabled
Slate
#767C83
Muted text
Graphite
#41464C
Body alt
Ink
#17191C
Text · action
Paper / surface · 60
Lines & fills · 25
Ink · 15

Semantic color

Status only — kept separate from the accent so meaning never depends on the salon's theme.

Confirmed / success
#2F7D4F on #E8F3EC
Pending / warning
#9A6B18 on #FBF1E0
Cancelled / error
#B4332B on #F7E4E2
03

Typography

A clean grotesque carries the UI; a monospace handles times, prices, tokens and code — the engineered, embeddable signal.

Primary · UI

System grotesque

Headings, labels, body. No webfont in the neutral default — fast and dependency-free. A salon can override the display face via a token.

Utility · data

Monospace

Times, prices, slugs, tokens, the embed snippet. Tabular figures keep columns aligned.

Display / 600 / -.02emBook in under a minute
H2 / 600Who would you like?
H3 / 600Choose a service
Body / 400 / 1.55Readable copy for help text, confirmations, and descriptions.
Small / 400Secondary detail and captions.
Label / mono / .1em / capsMobile number
Data / mono / tnum10:45 AM · $35 · /book/dolce
Regular 400Body
Medium 500UI labels
Semi 550Item names
Semibold 600Headings, buttons
04

Space, radius & elevation

An 8px base grid. Three radii. Three elevations. Restraint is the point.

Spacing · 8px base
4 · hairline gaps
8 · base
12 · inside controls
16 · card padding
24 · gutters
40 · section rhythm
64 · section padding
Radius
5 · xs
7 · sm
10 · base
16 · widget

Radius is a token — Dolce softens to 6px, a modern barber might square to 4px.

Elevation
sm · controls, toggles
md · cards, popovers
lg · the floating widget
05

Iconography

One line family — 1.5px stroke, round caps, 24px grid, currentColor so icons take the theme. Ported from the Dolce set.

Service & vertical icons · hair · nails · barbers · spa

The widget serves more than nails — hair salons, barbershops, and spas too. Each salon type gets sensible default icons, and individual services can carry their own.

06

Components

The building blocks of the widget and the dashboard. All neutral here; all token-aware so they reskin per salon.

Buttons
Form fields
Enter a valid email so we can send your confirmation.
6-digit code (OTP login)
419···

We text/email a 6-digit code — no passwords, no magic links.

Stepper

Who → what → when → confirm. Step 3 of 4.

Staff option
Anyone availableSoonest openingfastest
TLTina L.Gel & nail art
Service row
Gel Manicure
60 min · up to 3 weeks
$35
Acrylic Full Set
75 min
$38+
Time slots
10:0010:4511:301:152:00
Status pills
ConfirmedPendingCompletedCancelled
Avatars
TLKPMT+3
Calendar blocks
Maria A.
Gel Manicure · 60m
Walk-in
Polish · 30m
Appointments table
TimeClientServiceStaffStatus
10:45Maria AlvarezGel ManicureTina L.Confirmed
11:30J. ChenSpa Pedicure + gelKim P.Pending
2:00R. OkaforAcrylic Full SetTina L.Completed
07

Theming model

Onboarding a salon swaps a small set of tokens — never the components. The toggle at the top of this page is exactly this mechanism.

TokenNeutral defaultDolce overrideDrives
--accent#17191C#6B2737Buttons, selected states
--on-accent#FFFFFF#FFF6F0Text on accent
--bg#FFFFFF#FFFAF5Widget background
--surface#FBFBFC#FAF6F1Rows, fields
--line#E3E5E8#ECE0D4Borders
--radius10px6pxCorner softness
--displaySystem UIFraunces serifHeadings, salon name

Stored as a small theme record on each salon and injected as a :root block at load. Components only ever read tokens — so a new salon is data, not code.

08

Voice & tone

Plain, confident, and on the customer's side of the screen. A control says exactly what it does.

We sound like
  • "Who would you like?" — name things the way a person would.
  • Buttons name the outcome: Confirm booking, then a toast: Booked.
  • Errors fix, not apologize: "Enter a valid email so we can send your confirmation."
  • Times and prices, stated plainly. No "starting at just…"
We avoid
  • Salesy fluff — "Pamper yourself today!"
  • System words for people — "appointment entity", "provider resource".
  • Vague errors — "Something went wrong."
  • Exclamation chains and ALL CAPS.