Skip to content
Brand Book
Swatch guide

Color and font guide

Verified against timeblok.work and ptos.timeblok.work on Nov 8, 2026. Click any hex to copy it.

Core palette

NameHexRGBVariableUse
Primary greenrgb(7, 116, 79)--primaryButtons, links, logo green, key shapes
Deep greenrgb(9, 63, 47)--secondary-foregroundDark bands, footer, headings on sand
Creamrgb(239, 242, 233)--backgroundPage background
Sandrgb(254, 239, 200)--secondary / --accentBadges, highlights, soft accents
Mintrgb(240, 249, 245)--blok-cardBlok cards and quiet surfaces
Inkrgb(10, 10, 10)--foregroundHeadlines and body
Whitergb(255, 255, 255)--cardCards, inputs
Borderrgb(226, 231, 218)--borderDividers and card outlines
Muted textrgb(46, 46, 46)--muted-foregroundSecondary text

Headline gradient

linear-gradient(135deg, #258CF4, #0BC184). Last line of a hero headline.

Status

NameHexRGBVariable
Successrgb(41, 163, 122)--success
Warning / amberrgb(250, 181, 5)--warning
Destructivergb(220, 40, 40)--destructive

Skills palette (PTOS)

NameHexRGBVariable
Focusrgb(60, 131, 246)--tb-focus
Collabrgb(7, 185, 213)--tb-collab
Growthrgb(16, 183, 127)--tb-growth
Peoplergb(249, 116, 21)--tb-people
Managergb(137, 90, 246)--tb-manage

Regulation badges

NameHexRGB
L Licensedrgb(220, 40, 40)
P Partly regulatedrgb(250, 181, 5)
N Not regulatedrgb(41, 163, 122)

Chart and app colors

NameHexRGB
Chart 2rgb(103, 58, 182)
Chart 3rgb(238, 121, 43)
Chart 4rgb(210, 45, 100)
Chart 5rgb(38, 128, 217)
Block planned (app)rgb(71, 140, 209)
Flexible (app)rgb(124, 59, 237)

Blok status badges

NameHexRGBUse
Openrgb(14, 165, 233)Backend: open, posted
Requestedrgb(99, 102, 241)Backend: claimed
Approvedrgb(59, 130, 246)Backend: accepted
Activergb(245, 158, 11)Backend: checkin, in_progress
Awaiting reviewrgb(249, 115, 22)Backend: awaiting_review
Awaiting payrgb(20, 184, 166)Backend: awaiting_pay, settled_zero
Paidrgb(34, 197, 94)Backend: paid
Disputedrgb(239, 68, 68)Backend: disputed
Cancelledrgb(107, 114, 128)Backend: cancelled

Badge recipe: color mixed 16 percent into the card color, border 48 percent.

Triage, feed and heat map

NameHexRGBUse
Sky: messages, activergb(14, 165, 233)Messages, Active Bloks, Unfilled
Amber: claims, verifyrgb(245, 158, 11)Claims, Verify, Open TimeBloks
Red: disputesrgb(239, 68, 68)Dispute triage and feed
Emerald: paymentsrgb(16, 185, 129)Paid, held, released; bar gradient end
Fuchsia: reviewsrgb(217, 70, 239)Activity feed review events
Heat map, lowrgb(112, 219, 169)Lowest non-zero cell
Heat map, highrgb(36, 143, 93)Highest count cell
Heat text, light modergb(2, 44, 34)Numbers on heat map
Heat text, dark modergb(236, 253, 245)Numbers on heat map

Optimizer, Blok state, flexible

NameHexRGBVariable
Optimizerrgb(138, 44, 226)--optimizer
Optimizer softrgb(235, 222, 247)--optimizer-soft
Optimizer cardrgb(250, 246, 253)--optimizer-card
Optimizer linergb(204, 181, 227)--optimizer-line
Block plannedrgb(71, 140, 209)--block-planned
Block in progressrgb(250, 181, 5)--block-in-progress
Block completergb(41, 163, 122)--block-complete
Block missedrgb(215, 66, 66)--block-missed
Flexiblergb(124, 59, 237)--flexible

Project and planner client colors

NameHexRGBVariable
Project 1rgb(7, 116, 79)--project-1
Project 2rgb(103, 58, 182)--project-2
Project 3rgb(238, 121, 43)--project-3
Project 4rgb(210, 45, 100)--project-4
Project 5rgb(38, 127, 217)--project-5
Client 1rgb(41, 163, 122)--planner-client-1
Client 2rgb(245, 159, 10)--planner-client-2
Client 3rgb(13, 162, 231)--planner-client-3
Client 4rgb(165, 66, 215)--planner-client-4
Client 5rgb(226, 54, 112)--planner-client-5
Client 6rgb(241, 113, 39)--planner-client-6
Client 7rgb(36, 168, 157)--planner-client-7
Client 8rgb(102, 92, 214)--planner-client-8

Dark mode

NameHexRGB
Backgroundrgb(14, 27, 22)
Cardrgb(21, 35, 30)
Blok cardrgb(29, 53, 45)
Primaryrgb(27, 152, 110)
Secondaryrgb(43, 59, 54)
Borderrgb(48, 65, 59)
Foregroundrgb(236, 239, 231)
Muted textrgb(207, 212, 196)
Successrgb(57, 172, 134)
Warningrgb(234, 181, 46)
Destructivergb(211, 69, 69)

Safe pairings (WCAG contrast)

SampleTextBackgroundRatio
TimeBlok17.49:1
TimeBlok10.52:1
TimeBlok5.80:1
TimeBlok5.80:1
TimeBlok11.91:1
TimeBlok10.43:1
TimeBlok17.34:1
TimeBlok5.41:1
TimeBlok19.80:1
TimeBlok15.22:1
TimeBlok13.99:1
TimeBlok10.74:1
TimeBlok9.03:1
TimeBlok4.86:1

Fonts

Urbanist (Google Fonts, open license). Fallback: system sans.

UseSizeWeight
Hero headline64 to 104 px700
Section title36 to 56 px700
Card title20 to 24 px700
Button16 px700
Kicker and labels12 to 14 px, uppercase700 to 800

timeblok-tokens.css

:root{
  --background:#EFF2E9; --foreground:#0A0A0A; --card:#FFFFFF;
  --primary:#07744F; --primary-foreground:#FFFFFF;
  --secondary:#FEEFC8; --secondary-foreground:#093F2F;
  --accent:#FEEFC8; --muted:#E7EBE0; --muted-foreground:#2E2E2E;
  --blok-card:#F0F9F5; --border:#E2E7DA; --ring:#07744F;
  --success:#29A37A; --warning:#FAB505; --destructive:#DC2828;
  --gradient-headline:linear-gradient(135deg,#258CF4,#0BC184);
  --radius:.625rem; --font-sans:"Urbanist",ui-sans-serif,system-ui,sans-serif;
}
.dark{
  --background:#0E1B16; --foreground:#ECEFE7; --card:#15231E;
  --primary:#1B986E; --secondary:#2B3B36; --muted-foreground:#CFD4C4;
  --blok-card:#1D352D; --border:#30413B; --ring:#1B986E;
}