Master Reference · v1.0

Wavecast Master Colour Palette

The canonical colour set — names, values and on-fill pairings — for documents, slide decks, publishing defaults and product. Brand foundation, neutral surfaces, the semantic layer (Event Phase, Booking Status), functional states, the categorical chart set, and the accessibility rules everything downstream inherits.

Mirrors: Notion · Colour RegistryCaptured: 2 Jun 2026 · WCAG AA (LM link exempt)
Colour is the most developed constituent of the Brand Pack. This page is the Wavecast master colour system; the groups below are its client-themeable layer — the part a client’s Brand Pack (WDSBP) re-skins. Swap these per client and every output follows. Event Phase and Booking Status are fixed system semantics — part of the master palette, but identical across every client — so they sit outside the themeable set.
#Colour categoryClient themeable
01Brand
02Tints
03Surface Scale — Light
04Surface Scale — Dark
05Text & Icons
06Event Phase
07Gradients
08Booking Status
09Functional States
10Categorical Set

Event Phase and Booking Status are fixed system semantics — the same in every Brand Pack — so they sit outside the themeable set. Tap a row to jump to its section.

01

Brand

Canonical

Three brand colours: Primary (Sky) is structural, Secondary (champagne) is warmth, Accent (Rose) is interactive.

Sky 500
Primarybase_colours_primary#0ea5e9Structural brand blue. Headers, brand accents, non-interactive emphasis. Mode-agnostic.
Champagne
Secondarybase_colours_secondary#d8b15aBrand warmth. Furniture & non-interactive emphasis — rules, dividers, tags, framed borders, watermarks. Carries its own tonal ramp (Tints). Mode-agnostic.
Rose
Accentbase_colours_accent#fe2767The interactive colour. CTAs, buttons, links, active states, accent bars. Used for links in both modes. Mode-agnostic.
Notes
  • Primary (Sky) is the structural brand blue — headers, brand moments, non-interactive accents.
  • Secondary (champagne) is brand warmth — furniture and non-interactive emphasis (rules, dividers, tags, framed borders). It carries its own tonal ramp (see Tints).
  • Accent (Rose) is the interactive colour — CTAs, buttons, links, active states. If it's clickable, it's Accent.
  • Swatches are mode-agnostic, but the link role is mode-specific for contrast (see Text and Accessibility).
02

Tints

Canonical

The two brand colours that carry a full tonal scale — Primary (Sky) and Secondary (champagne). Each is a ten-step ramp anchored at 500; swap the brand value per client and the scale regenerates. Accent (Rose) has no scale.

Primary Scale — Sky

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

Secondary Scale — Champagne

100
#fbf6ea
200
#f6ecce
300
#eedca0
400
#e4c87b
500 · base
#d8b15a
600
#bd9540
700
#9c7a2e
800
#7b6022
900
#5a4619
950
#382c10
How the scales work
  • Primary Scale = Tailwind Sky 100–950; primary_500 = base_colours_primary (#0ea5e9). Token shape primary_100 … primary_950.
  • Secondary Scale = champagne 100–950; secondary_500 = base_colours_secondary (#d8b15a — the system's existing chrome gold). Token shape secondary_100 … secondary_950.
  • Both regenerate around their 500 anchor when the brand value is swapped per client. Mode-agnostic.
  • Secondary on-fill: black through 600, white from 700. Gold-as-text: never AA as text at 500 — steps to secondary_700 #9c7a2e on light, secondary_text_dm #e4c87b on dark; at 500 only as line/fill/border. Reserved base; hue-clear of Warning #eab308 and Paused amber #b85d14.
03

Surface Scale — Light

Canonical

Zinc-based neutral scale for light-mode surfaces.

Whitesurface_scale_light_white#ffffffBase canvas, content cards
SSL1surface_scale_light_ssl1#fafafaSubtle elevation (Zinc 50)
SSL2surface_scale_light_ssl2#f4f4f5Page bg, callout panels (Zinc 100)
SSL3surface_scale_light_ssl3#e4e4e7Borders, dividers (Zinc 200) · --border
SSL4surface_scale_light_ssl4#d4d4d8Heavier rules (Zinc 300) · --border-strong
Notes
  • Goes light → dark as the number increases.
04

Surface Scale — Dark

Canonical

Mirror of the light scale, inverted.

Blacksurface_scale_dark_black#000000Deepest surface, overlays
SSD1surface_scale_dark_ssd1#18181bBase canvas, page bg DM (Zinc 900)
SSD2surface_scale_dark_ssd2#27272aContent cards DM (Zinc 800)
SSD3surface_scale_dark_ssd3#3f3f46Borders, dividers DM (Zinc 700) · --border
SSD4surface_scale_dark_ssd4#52525bHeavier rules DM (Zinc 600) · --border-strong
Notes
  • Goes dark → light as the number increases.
05

Text & Icons

Canonical

Mode-specific text, link and icon colours.

Text 1 — LMtext_light_text_1_lm#000000Primary text — headings, body, labels
Text 2 — LMtext_light_text_2_lm#71717aMuted — subtitles, meta (Zinc 500). AA only on white/SSL1.
Link — LMtext_light_link_lm#fe2767Inline links in LM. Brand Rose — mode-agnostic with DM. 3.68:1 on white (below AA-normal); accepted for brand consistency.
Text 1 — DMtext_dark_text_1_dm#ffffffPrimary text in DM
Text 2 — DMtext_dark_text_2_dm#a1a1aaMuted text in DM (Zinc 400)
Link — DMtext_dark_link_dm#fe2767Inline links in DM. Brand Rose — mode-agnostic with LM. 4.81:1 on #18181b, AA-normal.
Icon — LMicons_icon_lm#000000Icon fills in LM
Icon — DMicons_icon_dm#ffffffIcon fills in DM
Notes
  • Links are mode-agnostic. Brand Rose #fe2767 in both modes — 4.81:1 on dark (AA-normal), 3.68:1 on white (below AA-normal), accepted as a deliberate brand-consistency trade-off.
  • Muted text (Text 2) is a per-layer override — see the surface-dependent rule under Accessibility.
06

Event Phase

Canonical

Ten lifecycle phases, each a token, value and badge.

Ideationphase_ideation#b5d36aon-fill #000
Setupphase_setup#5fb55aon-fill #000
Launchphase_launch#1f9d6bon-fill #000
Promotionphase_promotion#1d6e63on-fill #fff
Finalisingphase_finalising#ffa033on-fill #000
Pre-Livephase_prelive#cf3a14on-fill #fff
Livephase_live#ff0000on-fill #000
Replayphase_replay#0284c7on-fill #000
Insightphase_insight#7c5cd6on-fill #fff
Archivephase_archive#475068on-fill #fff
#PhaseTokenHexOn-fillBadge — tinted & solidSignal
1Ideationphase_ideation#b5d36a#000
IdeationIdeation
Germination — fresh shoot
2Setupphase_setup#5fb55a#000
SetupSetup
Taking shape
3Launchphase_launch#1f9d6b#000
LaunchLaunch
Going public
4Promotionphase_promotion#1d6e63#fff
PromotionPromotion
Building momentum — deep teal-green
5Finalisingphase_finalising#ffa033#000
FinalisingFinalising
Heat building
6Pre-Livephase_prelive#cf3a14#fff
Pre-LivePre-Live
Imminent
7Livephase_live#ff0000#000
LiveLive
On air & broadcast-live indicator
8Replayphase_replay#0284c7#000
ReplayReplay
Second life begins
9Insightphase_insight#7c5cd6#fff
InsightInsight
Analytics / reporting / audience
10Archivephase_archive#475068#fff
ArchiveArchive
Cold storage, at rest
Notes
  • Token shape is nominal throughout — phase_{name}.
  • phase_live (#ff0000) is both the Live phase and the broadcast-live indicator — one "live" everywhere, no separate Status category (live is its shorthand alias).
  • On-fill is not assumed. phase_live as a fill needs black text (white is only 4.0:1); as a dot/pulse it carries no text.
  • The Badge column shows both forms: tinted (13% fill, 30% border, hue dot, tuned text — the in-product default) and solid (hue fill + on-fill text — validates the pairing).
Badge text — DM (derived display tokens)
  • The resolved tinted-badge text on dark (13%-fill / 30%-border treatment), promoted into the Colour Registry (1 Jun 2026) so the canonical source carries them explicitly. Token shape phase_{name}_text_dm.
  • phase_ideation_text_dm #b5d36a (reads true) · phase_setup_text_dm #6fc468 · phase_launch_text_dm #2bbd82 · phase_promotion_text_dm #43b8a6 · phase_finalising_text_dm #ffa033 (reads true) · phase_prelive_text_dm #ef6a47 · phase_live_text_dm #ff5c5c · phase_replay_text_dm #38bdf8 · phase_insight_text_dm #a78fe8 · phase_archive_text_dm #8b97b0.
  • Archive re-based to the slate #475068 (3 Jun 2026) so it reads on dark surfaces — the former phase_archive_dot_dm workaround is now redundant (the dot uses the base).
07

Gradients

Canonical

Three signature gradients — one per act — blended from the Event Phase colours in each band. Dreamy by default.

Fill — full saturation

PlanningPhases 1–4 · Pre
1234
gradient_planning
LivePhases 5–7 · Live
567
gradient_live
ReplayPhases 8–10 · Post
8910
gradient_replay

Tint — 16%, dreamy

PlanningPhases 1–4 · Pre
gradient_planning_tint
LivePhases 5–7 · Live
gradient_live_tint
ReplayPhases 8–10 · Post
gradient_replay_tint
How they're built
  • Each gradient blends its act's phase colours in phase order at 135°: Planning = phases 1–4 (Pre), Live = phases 5–7, Replay = phases 8–10 (Post).
  • Two forms, mirroring the badges — kept as separate swatches. Fill is the full-saturation blend (mode-agnostic; hero headers and accent surfaces). Tint is the same blend at 16% via color-mix(… , transparent) (the tint-badge recipe), dreamy and subtle; for section and card washes.
  • The tint sits over the page surface, so it adapts to light and dark automatically; the fill renders identically in both modes.
  • Replay is eased through extra transitional stops so the violet→slate hand-off is smooth rather than a hard seam.
  • Token shape gradient_planning / gradient_live / gradient_replay, each with a _tint variant.
08

Booking Status

Canonical

Four symmetrical groups, each an outline and fill state.

Provisionalbooking_provisional
EnquiryPencil
#5c636e · Outline: first contact · Fill: holds a sloton-fill #fff · 6.06:1
Activebooking_active
ConfirmedIn Progress
#1f8a7a · Outline: locked but dormant · Fill: happening nowon-fill #000 · 4.97:1
Pausedbooking_paused
On HoldPostponed
#b85d14 · Outline: recoverable pause · Fill: definite slipon-fill #000 · 4.61:1
Completedgroup = black · terminal
CancelledDelivered
Outline: Cancelled #b3322c, closed-bad · Fill: Delivered #000000, closed-gooddelivered on-fill #fff · 21:1
Notes
  • Provisional, Active, Paused are single-hue: outline = pending / soft, fill = committed / active.
  • Completed is the terminal exception — two hues, axis = outcome: outline (Cancelled) = closed-bad, fill (Delivered) = closed-good.
  • The dot echoes the chip — hollow for outline, solid for fill.
  • On-fill text is not assumed white; outline text is checked for both modes. Token shape booking_{group}.
Outline text — DM (derived display tokens)
  • The resolved outline-text colour on dark, lightened from the base hue; promoted into the Colour Registry (1 Jun 2026). Token shape booking_{group}_text_dm.
  • booking_provisional_text_dm #8b929c · booking_active_text_dm #34b3a0 · booking_paused_text_dm #d98030 · booking_cancelled_text_dm #cf4339. Delivered is exempt — fixed black fill / white text in both modes.
09

Functional states

Canonical

Four states, each one hue plus a light tint.

Success
state_success#16a34a · tint rgba(22,163,74,.15)on-fill #000 · 6.37:1Confirmations, completed actions, healthy status.
Warning
state_warning#eab308 · tint rgba(234,179,8,.15)on-fill #000 · 10.95:1Caution, attention needed. Never carries white text.
Error
state_error#e23b2e · tint rgba(226,59,46,.15)on-fill #000 · 4.90:1Failures, blocking problems, connection loss.
Info
state_info#5470a0 · tint rgba(84,112,160,.15)on-fill #fff · 5.00:1Neutral notices, tips, system messages.
Notes
  • Mode-agnostic. The light tint backs banners (base hue as text); the on-fill value is for solid badges — not assumed white.
  • Real-time operational signals (connection lost, recording failed) use Error.
  • Token shape state_{name}.
Banner text — DM (derived display tokens)
  • The resolved text over the light tint on dark surfaces, lightened from the base hue; promoted into the Colour Registry (1 Jun 2026). Token shape state_{name}_text.
  • state_success_text #4ade80 · state_warning_text #facc15 · state_error_text #f87171 · state_info_text #93b4e0.
10

Categorical set

Canonical

Eight hues carrying no meaning, for charts and avatars.

cat_1
#0ea5e9
cat_2
#7c5cd6
cat_3
#f59e0b
cat_4
#ec4899
cat_5
#14b8a6
cat_6
#a3e635
cat_7
#fb7185
cat_8
#64748b
Notes
  • For chart series, avatars, abstract fills — no semantic meaning attached.
  • cat_1/cat_2 reuse Sky and the Insight violet; the rest space evenly around the wheel.
  • Token shape cat_1 … cat_8.
11

Accessibility & contrast

Canonical

The contrast foundation everything downstream inherits.

Notes
  • All values are checked against WCAG 2.1 AA — normal text ≥4.5:1, large text / non-text UI ≥3:1.
  • On-fill text is never assumed. Every solid fill carries a paired on-fill value that clears AA-normal. White is not universal — several fills require black (phase_live, state_success, state_error, phase_replay, all light Pre/Live steps). Bind the on-fill token, never a hardcoded #fff.
  • Links are mode-agnostic. Brand Rose #fe2767 is the link colour in both modes — 4.81:1 on #18181b (AA-normal), 3.68:1 on white (below AA-normal). The light-mode link is a deliberate exception to AA-normal, accepted for brand consistency; on light surfaces always pair it with the underline affordance so colour is never the sole signal.
  • The reserved-base rule (brand families only). Sky 500 is Primary, Rose is Accent — semantic aliases must not point to those brand bases, so a non-clickable badge never wears the brand colour. Replay (phase_replay) takes Sky 600 #0284c7, not Sky 500. Phase tokens hold standalone values and never alias a brand base.
  • Colourblind safety. Where two semantic colours share a family (Pre green vs Success green; Live red vs Error red vs Cancelled red), they're separated by treatment, shape and label — not hue alone. phase_live is a dot/pulse, not a red badge. Hue is never the sole carrier of meaning.
  • Muted text is surface-dependent. Text 2 LM #71717a is AA-normal on white/SSL1 but only AA-large on SSL2 and below — step down to #52525b for essential muted text on SSL2+. In DM, Text 2 #a1a1aa is safe across SSD1/SSD2; reserve #71717a for non-essential meta only.
12

Open questions

Track
Carried for resolution
  • Categorical ambiguity. cat_2 (violet) shares the Insight phase hue. In a dashboard where a categorical chart sits beside a phase-coloured chart, the violet series could read as "the Insight phase." Fallback is a semantically-clean categorical set excluding all phase/functional hues. Decide after the dashboard prototype is reviewed.
Wavecast Master Colour Palette v1.0
Exact mirror of the Notion Colour Registry. Ported into the WDS References shell — colour values are not edited here; update the registry, then re-sync.