Colour roles for a SaaS landing page

Think in roles, not swatches

A landing page palette is easier to build and maintain when each colour has a job. The common roles are: a page background; a surface for cards and sections; primary text; muted text for secondary copy; a primary action colour for the main call to action; an accent for highlights; a border or divider colour; and status colours for success, warning and error. Most of these are neutrals. A palette that looks colourful usually has only one or two chromatic colours doing real work, with everything else a tinted grey.

The most useful rule for conversion-minded pages is one dominant action colour. If the button, links, badges and illustrations all use the same saturated hue, nothing stands out. Reserve the primary colour for the one thing you want clicked, and let the accent be quieter. The Brand and System navigators generate sets of four and five coloured roles that you can preview on a UI mock, and the mood chips such as trust or cool help narrow the hue before you refine it.

Contrast targets for text, buttons and UI parts

Three WCAG 2.2 thresholds cover most of a landing page. Text, including button labels, needs 4.5:1 against its background at normal size under SC 1.4.3 (3:1 for large text). The visual parts of controls, such as an input's border, an icon that carries meaning or a focus indicator, need 3:1 against adjacent colours under SC 1.4.11, Non-text Contrast. And colour must not be the only way to convey state under SC 1.4.1, so an error needs an icon or message as well as red. Disabled controls and logos are exempt from the contrast requirements.

The mistake the table below shows is a common one: a friendly mid-blue or green button with a white label. It looks right and fails at roughly 3.3–3.7:1. The fix is rarely a different hue; it is a lower OKLCH lightness for the fill. Because OKLCH lightness tracks perceived brightness, you can step the button darker and keep its hue recognisable. Check any pair in the contrast checker, and browse examples in the contrast library.

Hover, active and focus states in OKLCH

Interactive states are where ad-hoc palettes drift. A reliable approach is to define the resting colour once and derive the others by changing OKLCH lightness while holding hue and chroma, for example a step darker for hover and another for active on a light theme. Because the steps are perceptually even, the same offsets work for the primary, the success colour and the error colour. Re-check the label contrast on every state, not only on the resting one, since a hover that gets lighter can drop below 4.5:1. The guide to building OKLCH scales walks through generating a ramp with sensible chroma, and the OKLCH picker lets you nudge lightness directly and watch the sRGB gamut.

Dark mode is a second set of tokens, not an inversion

Simply inverting a light theme usually produces glare and muddy accents. A dark variant works better as its own mapping: a dark but not pure black background, a slightly lighter surface for cards, off-white text, and an accent whose lightness is raised so it still reads against the dark surface. Saturated colours also tend to look harsher on dark backgrounds, so lowering chroma slightly often helps. Muted text should be checked again, because a grey that passes on white may not pass on slate. The dark mode colour guide covers the trade-offs in detail.

From palette to design tokens

Once the roles are settled, write them down as tokens rather than scattering HEX codes. In plain CSS that means custom properties such as --color-bg, --color-text and --color-primary on :root, overridden for dark mode under a class or a prefers-color-scheme media query. In Tailwind CSS v4 the same names go in an @theme block, for instance --color-primary: oklch(0.55 0.2 260), which generates utilities like bg-primary and text-primary. Using oklch() values keeps the lightness steps readable in the source. The pairs navigators on this page can copy CSS variables or @theme tokens, and Studio extends a chosen set into full product scales. For gradients behind a hero, the OKLCH gradient tool avoids the grey midpoints that appear when blending complementary colours in sRGB.

Using APCA as a second opinion

WCAG 2.x ratios are what audits and procurement checklists use, so they are the requirement. APCA, the Accessible Perceptual Contrast Algorithm, is a candidate for a future WCAG 3 and is not a requirement today. It is still a useful sanity check because it accounts for polarity and gives a signed Lc value, which often explains why a pair that passes the ratio still feels weak, particularly light grey on a dark surface. Treat APCA as a way to catch borderline pairs, not as a replacement for the ratio. The WCAG vs APCA guide compares them on real colours. The sibling pages for business cards and presentations apply the same checks to print and to slides, and the blue hub is a good place to look for a trustworthy primary.

Worked examples: text and button pairs

Computed from the HEX codes with the same helpers as the contrast checker, text colour first and surface second. The fix column darkens one colour in OKLCH lightness until the pair reaches 4.5:1.

SaaS landing pairs: WCAG 2.x ratio and APCA Lc (text on background)
UseTextBackgroundWCAGAPCA LcVerdictFix
Body text on page#0f172a#ffffff17.85:1+105AAA (7:1+)—
Muted text on page#64748b#ffffff4.76:1+73AA—
Primary CTA label#ffffff#2563eb5.17:1-80AA—
Lighter CTA, same hue#ffffff#3b82f63.68:1-69Large text only#2b72e54.52:1
Success button label#ffffff#16a34a3.30:1-65Large text only#0088304.60:1
Dark mode body text#e2e8f0#1e293b11.87:1-89AAA (7:1+)—
  • Body text on page: Primary text on the page background.
  • Muted text on page: Secondary copy: passes AA with little headroom, so go no lighter.
  • Primary CTA label: White label on a saturated blue button clears 4.5:1.
  • Lighter CTA, same hue: A friendlier blue, but the label only reaches large-text level. Darken the button. Lowering OKLCH lightness gives #2b72e5 at 4.52:1.
  • Success button label: A common mid-green fails with white text. Step the fill darker. Lowering OKLCH lightness gives #008830 at 4.60:1.
  • Dark mode body text: Off-white on slate; avoid pure white on pure black for long reading.

Related

  • Brand (4)
  • System (5)
  • Contrast
  • OKLCH picker
  • Studio
  • Dark mode colours
  • Building OKLCH scales
  • WCAG vs APCA
  • For business cards
  • For presentations
  • All color pairs

Frequently asked questions

What makes a SaaS landing palette convert?
No palette guarantees conversion, but a reliable structure is calm surfaces, readable ink and one high-chroma call-to-action colour that appears nowhere else. Colorise Pro filters by mood such as trust or cool and previews the roles on a live UI mock so you can judge the hierarchy.
Can I export Tailwind for my marketing site?
Yes. Copy @theme tokens for Tailwind CSS v4 or plain CSS custom properties from the navigator, or open the set in Studio to expand it into full product scales. Tokens use named roles, so you can rename them to match your design system.
What contrast do button labels need?
WCAG 2.2 SC 1.4.3 asks for 4.5:1 between a button's label and its fill at normal text size, or 3:1 if the text is large. Check the resting, hover and active states separately, because a hover colour that lightens can fall below the threshold.
What contrast do borders and focus indicators need?
Under WCAG 2.2 SC 1.4.11 Non-text Contrast, the visual parts of controls and meaningful icons, including input borders and focus indicators, need at least 3:1 against adjacent colours. Disabled controls are exempt, but a faint border on an enabled field is a common failure.
How should I derive hover and active colours?
Keep hue and chroma and change OKLCH lightness in small, consistent steps, such as one step darker for hover and another for active. Because OKLCH lightness is perceptually even, the same offsets work across your primary, success and error colours. Re-check label contrast on each state.
Do I need a separate palette for dark mode?
Plan a second set of token values rather than inverting the light theme. Use a dark but not pure black background, a lighter surface, off-white text and accents with raised lightness and often slightly lower chroma. Then re-check every text and button pair on the new surfaces.
Should I use APCA instead of WCAG ratios?
Use WCAG 2.x ratios as your requirement, since audits and most policies cite them. APCA is a WCAG 3 draft candidate, not a requirement, but it is a helpful second opinion because it considers polarity and text size and often flags weak light-on-dark pairs.
Colorise ProOKLCH Engine
ExploreStudioNamesPickerPairs
ExploreStudioNamesPickerPairsContrastExtract
Menu

Product

  • Home
  • Explore
  • Studio
  • Color Names

Tools

  • Picker
  • Color Pairs
  • Contrast
  • Image Extract
  • Gradient Lab
  • Palette Diff
  • Brand from URL

Guides

  • All guides
  • OKLCH vs HSL
  • WCAG vs APCA
  • OKLCH color scales
  • Gamut & sRGB
  • Extract from images
  • HEX to OKLCH
  • Dark mode colors
  • Color meanings

Color pairs

SaaS landing page color schemes

Website color schemes for marketing pages — trust and cool moods, CTA accents, live UI preview.

For presentationsFor business cardsFor SaaS landings

What are you making?

How many colors?

Mood

Primary color

Choose a brand hue — systems re-hue around it (anchored, complement, analog).

Full picker

Live preview

Indigo Paper

Face and reverse — both directions checked

Face

Business card face

Name · Role · subtle line

Accent
WCAG AAAAPCA 100

Reverse

Cover / reverse

Logo mark · short wordmark

WCAG AAAAPCA 102
  • SurfaceF4F9FF
  • Ink141A29
  • Accent4273B0

Recommended systems

12 matches
Colorise Pro

Free OKLCH color workspace: precision color picker, color pairs, WCAG & APCA contrast checker, palette from image, Studio systems, names, gradients, and brand tools. Export HEX, CSS, Tailwind & DTCG.

OKLCH Engine

Product

  • Home
  • Explore
  • Studio
  • Color Names
  • Color Codes

Tools

  • Color Picker
  • Color Pairs
  • Contrast Checker
  • Image Extract
  • Gradient Lab
  • Palette Diff
  • Brand from URL
  • For presentations
  • For business cards
  • For SaaS landings
  • Duo pairs
  • Trio systems

Guides

  • All guides
  • OKLCH vs HSL
  • WCAG vs APCA
  • OKLCH color scales
  • Gamut & sRGB
  • Extract from images
  • HEX to OKLCH
  • Dark mode colors
  • Color meanings

Legal

  • Privacy
  • Terms

© 2026 Colorise Pro. All rights reserved.

© 2026 Colorise Pro. Built for precision color work.

Report infringement: [email protected] (Colorise Pro)

PrivacyTermsOKLCH · WCAG · APCA
Indigo Paper