Foundations
Color
Spectrum 2's structure (gray ramp, background layers, accent, semantic roles) recolored for Makado: grays lean very slightly cool toward the logo's ink, the accent is the logo's blue, and the logo's sand yellow is a small brand note. Sky and mint appear only in the WinsCard burst, illustrations and the soft app backdrop. No purple. Gradients live only in the logo, progress-bar fills (one hue, deeper to lighter) and the app backdrop.
Every swatch is live: it reads the CSS variable in the theme this page is in. Switch Light and Dark at the top to see both. Copy a name to use it as var(--name).
Surfaces
The layers a screen is built from, from the app frame to cards and menus.
background-baseThe app frame: side navigation, top bar, and the page itself on mobile. Spectrum background-base (gray-25); dark is close to the logo's near-black.
background-layer-1The main content area on desktop, behind cards. Spectrum background-layer-1 (gray-50).
background-productBehind product pictures (cards, thumbnails, the AI picture picker): light in both themes, so dark gear on a see-through background stays visible and every shot sits on the same studio gray.
background-restCalendar days that are not workdays: a shade darker than the calendar surface in both themes, so the working week stands out.
background-pageThe rounded page that sits in the frame on desktop, and the page on phones. Panels and cards sit on it.
background-frameThe app frame on desktop: the gray around the page and behind the side navigation.
background-layer-2A panel that sits on layer-1 without a shadow (a table, a settings group). Spectrum background-layer-2.
background-elevatedCards, popovers and menus, always with a drop shadow. Spectrum background-elevated.
Text and lines
Text in four strengths, and the lines between things. Each holds 4.5:1 on the surfaces it sits on.
headingHeadings and titles.
bodyBody copy and control labels.
subduedSecondary text and inactive nav icons.
detailMetadata, captions, column headers.
dividerDividers between rows and sections.
field-borderText field border at rest (2px).
Accent
The brand blue, recolored by the color theme. Links, the today marker and focus rings.
accentThe logo's blue. The one call-to-action button per screen, the selected tab on phones, today in a calendar. White text on it: 6.4:1 light, 4.9:1 dark.
accent-hoverHover and pressed accent fill.
accent-contentAccent text and icons (links, active tab, selected nav icon) on base, layer-1 and elevated: 6:1 light; 7.4:1 dark, where it takes the logo's sky blue.
accent-subtleSubtle accent fill behind gray-1000 text (informative badges, today in a calendar, icon wells).
accent-visualAccent marks that are not text: meter fills, status dots. The logo's second blue. 3:1 or better on every background.
on-accentText and icons on accent, negative and positive fills.
focus-indicatorKeyboard focus outline: 2px, offset 2px, on every control.
Neutral and calls to action
Calls to action are black (white in dark). Quiet fills for chips and hovers.
neutralPrimary button fill (Spectrum's 'primary' variant is neutral, not blue).
neutral-hoverHover on the neutral fill.
on-neutralText on a neutral fill.
neutral-subtleSecondary button, action button and selected side-nav fill.
neutral-subtle-hoverHover on neutral-subtle.
neutral-visualNeutral status dot.
label-fillSolid gray fill for small labels with white text, like day notes on the calendar. White on it holds 4.5:1 in both themes.
on-label-fillText on label-fill.
Status
Late, in review and published. A theme never changes these, and they always come with words.
negativeNegative fill: destructive buttons, bold overdue badges. on-accent text 4.5:1.
negative-hoverHover on the negative fill.
negative-contentNegative text and icons (error messages, overdue counts) on base, layer-1 and elevated.
negative-subtleSubtle negative fill behind gray-1000 text.
negative-visualNegative dots, bars and alert borders.
noticeNotice fill (orange). Text on it is gray-1000 black in both themes, as Spectrum does.
on-noticeText on a notice fill: 6:1 or better.
notice-subtleSubtle notice fill behind gray-1000 text.
notice-visualNotice dots, bars and alert borders: due soon, waiting on someone.
positivePositive fill, used only for status (paid, live). Never as a brand color.
positive-subtleSubtle positive fill behind gray-1000 text.
positive-visualPositive dots and bars.
informative-visualInformative dots and bars (sent, scheduled). Same blue as the accent.
positive-contentGreen text: 4.5:1 or better on the page, cards and the backdrop in both themes. For the landing page's kickers and other short green labels, never for status alone.
Stages and tags
Stage colors for custom stages and brand tiles.
cyan-subtleCategorical fill for brand initials and category badges, behind gray-1000 text.
orange-subtleCategorical fill from the logo's orange, for brand initials and category badges, behind gray-1000 text.
yellow-subtleCategorical fill for brand initials and category badges, behind gray-1000 text.
cyan-visualCategorical marks, dots and stage colors in cyan (a stage color you can pick). 3:1 on cards in both themes.
yellow-visualCategorical marks, dots and stage colors in yellow (a stage color you can pick). 3:1 on cards in both themes.
Brand
Colors from the Makado mark.
brand-yellowThe logo's sand yellow. Small moments of delight in the interface: the Today tag, a streak, a highlight. Never for status. Text on it is on-brand-yellow (14:1).
brand-skyThe logo's sky blue. Brand moments only (cover, marketing, illustrations); never interface state.
brand-mintThe logo's mint. Brand moments only (cover, marketing, illustrations); never interface state or a button.
Gray ramp
The neutral ramp everything else is built on. It inverts between themes.
gray-25Field fill; text on a neutral (primary) button.
gray-50Layer-1 background.
gray-75Hover on quiet rows.
gray-100Secondary button and action button fill, selected side-nav item, card preview well.
gray-200Dividers; hover on gray-100 fills.
gray-300Field and outline-button borders. Kept at Spectrum's light value (1.4:1 on white), so a field always carries a visible label or icon.
gray-400Disabled text and icons; pressed gray fills.
gray-500Neutral status dot and meter track markers. Not for text.
gray-600Detail text (labels, metadata) on background-base, layer-1 and elevated: 4.6:1 or better in both themes.
gray-700Subdued text and inactive icons on any background.
gray-800Body text and default icons; the neutral (primary) button fill.
gray-900Headings and titles; hover of the neutral fill; focused field border.
gray-1000Text on subtle color fills (subtle badges, notice fills). In light it is the logo ink, #080D15.
Illustration
The palette the Makado illustrations are drawn in.
illo-inkIllustration line work and solid details.
illo-paperIllustration paper: documents, screens, the clipboard. Matches the card it sits on.
illo-blueObject fill from the logo's blue.
illo-mintObject fill from the logo's mint.
illo-sandObject fill and sparkles from the logo's sand yellow.
illo-blue-softThe soft blob behind an illustration, blue.
illo-mint-softThe soft blob behind an illustration, mint.
illo-sand-softThe soft blob behind an illustration, sand.
Utility
For what must not change between themes, and the dimming behind drawers.
static-whiteWhite in both themes, only where something must stay white to work, such as behind a QR code so phones can scan it.
scrimBehind every drawer, dialog and search: one dimming everywhere, so the panel in front has focus.
Progress fills
The only gradients in the product: one hue, deeper to lighter, left to right, inside progress bars.
gradient-informativeProgress bar fills in the informative (blue) hue. Same hue, deeper to lighter, left to right. Only for bar fills: the one place gradients are allowed besides the logo.
gradient-cyanProgress bar fills for a stage colored cyan. Same hue, deeper to lighter. Only for bar fills.
gradient-yellowProgress bar fills for a stage colored yellow. Same hue, deeper to lighter. Only for bar fills.
gradient-positiveProgress bar fills for done and published (green). Same hue, deeper to lighter, left to right. Only for bar fills: the one place gradients are allowed besides the logo.
gradient-noticeProgress bar fills for waiting, such as In review (orange). Same hue, deeper to lighter, left to right. Only for bar fills: the one place gradients are allowed besides the logo.
gradient-negativeProgress bar fills for late (red). Same hue, deeper to lighter, left to right. Only for bar fills: the one place gradients are allowed besides the logo.
gradient-neutralProgress bar fills for To do (gray). Same hue, deeper to lighter, left to right. Only for bar fills: the one place gradients are allowed besides the logo.
More
control-borderThe edge of a control (a text field, a search field, a button that isn't quiet): 3:1 on any surface, light and dark.
container-edgeThe edge of a container inside a panel (board columns, the calendar's day list), clearer than a divider.
button-fillSolid fill for secondary Buttons and ActionButtons that aren't quiet, so they show on a panel without an edge.
button-fill-hoverHover for button-fill.
on-brand-yellowText and icons on brand-yellow.