Color and UI
Create a Cohesive Brand Color Palette
Create a cohesive brand palette by defining exact color roles first, testing every state and surface for contrast, and publishing compact usage rules that any designer or engineer can follow without guessing.
Practical one-pass workflow
This page answer is direct: start from brand meaning, turn it into token roles, test readability in real usage contexts, then lock a minimal working set with clear handoff notes.
- Set the boundary for the pass. Choose product scope, platform set, and target languages before adding colors. Example: web app UI + marketing landing page, light and dark mode, English only for this release.
- Pick one primary brand color from the identity source, then derive one supportive accent and one neutral family. Do not invent a full system yet. The first pass should usually contain 3 to 5 semantic families.
- Define 12 to 14 named tokens. A reliable minimum is:
- Brand primary: background, text, border, hover, active.
- Accent 1 and accent 2: emphasis buttons, links, alerts, badges, chart marks.
- Neutral base: light, dark, muted text, muted surface, card, divider, disabled.
- Feedback family: success, warning, error, info tokens.
- Map each token to an explicit UI role with one line each. Roles remove ambiguity and prevent duplicate meanings like two different reds used for both warning and error.
- Build real sample scenes before finalizing values: dashboard row, hero section, form panel, button set, mobile card list, and notification bar. Test foreground/background in each scene rather than isolated color swatches.
- Run contrast checks per pair. For body text, prefer high readability, then validate medium and small text separately, then decorative accents. Record pass/fail for each pair.
- Create a short state matrix for interactive items. Each interactive token should include normal, hover, active, focus, and disabled results. If focus is unclear, stop and adjust before proceeding.
- Generate a CSS mapping and preview quickly. If your tooling supports export tokens, keep names stable and descriptive. Avoid short names like c1 and c2 unless you also publish a dictionary with exact meaning.
- Create implementation notes for edge cases: charts, illustrations, avatars, and error banners. Edge note should include fallback if the token is reused outside normal UI components.
- Run one local pass with the target UI and one context pass with at least two content lengths. A token set passes only when short and long content remain legible and visually consistent.
Decision rules you can apply immediately
Use these rules before every commit to the palette so the result stays stable and practical.
- Rule 1: Every color must have one explicit role. If a token is not assigned to a role, remove it.
- Rule 2: Primary, neutral, and accent families must be visually distinct, and none can silently overlap in meaning.
- Rule 3: Limit brand accent count. Use one accent for emphasis and a second for secondary emphasis. More than three user-facing accents usually causes hierarchy collapse.
- Rule 4: If any text pair fails readability on at least one key screen, revise the palette before adding new components.
- Rule 5: Keep contrast checks as close to shipping context as possible. Mockups are useful, but browser-level rendering is the deciding check.
- Rule 6: If a token is used in both charts and form controls, create a role split or move to a shared neutral token. This avoids accidental brand overload in analytics-heavy screens.
- Rule 7: Stop adding shades when incremental value drops. If a new shade only changes hue slightly without measurable benefit, treat it as technical debt.
Hard constraints and limits
Strong systems are constrained systems. Use these practical limits as default guards.
- Token count target: 10 to 18 total, excluding aliases. You can expand later in a later iteration.
- Core states per interactive control: default, hover, active, focus, disabled. If you have to add extra states, your base contrast is probably too weak.
- Contrast focus: prioritize standard body text and controls over large decorative gradients. Color-rich backgrounds are secondary until text reliability is proven.
- Dark and light mode: if dark mode is in scope, create dedicated dark-mode roles, not flipped inversion rules.
- Typography-independent testing: test at 16px, 20px, and 24px line heights before declaring a pair acceptable.
- Gradient usage rule: use gradients only for emphasis sections, and never use gradients for dense reading areas.
Reference workflow template
Use this exact checklist when working in a sprint so review stays fast:
- Input lock: note channel, brand intent, target platforms, and version number.
- Token draft: define families, then assign names and roles in a shared table.
- Context tests: run samples for navigation, content card, button, table row, and alert states.
- Readability pass: verify minimum readable pairing and focus visibility for keyboard states.
- Conflict scan: remove duplicate meaning and document exceptions.
- Handoff: export CSS variables and produce one-page usage guide with examples.
Mark each step with pass, change needed, or blocked and keep the notes in the same file as the palette output.
Common mistakes to avoid
- Choosing colors by preference before role clarity. This creates emotional variance and inconsistent output.
- Shipping more than one accent behavior for the same meaning, then asking QA to infer usage.
- Skipping disabled, focus, and hover states, which causes invisible usability issues for keyboard users.
- Mixing semantic warnings with brand accents. Feedback color should be functional and unmistakable.
- Copying colors from slide decks or social cover art without testing on core UI surfaces.
- Exporting token names with no definitions, then requiring downstream teams to rediscover intent.
Stop condition
Stop this iteration when every color has one role, every role has at least one tested pair, and every tested pair has a documented outcome. Do not continue tuning until a concrete gap appears in a real screen, component, or accessibility check. At that point create a follow-up issue with exact token names, evidence, and expected behavior.
- Do not stop just because the palette looks good in one mockup.
- Do not stop if any interactive state is undocumented.
- Do not stop if contrast failure is accepted without a replacement plan.
Handoff and related tool handoff
After the pass is stable, hand off three artifacts together: the final token map, the rule table, and one implementation preview file. This keeps the next owner from re-solving context.
- Artifact 1: semantic token list with hex values and intent.
- Artifact 2: state behavior table for buttons, links, chips, inputs, and alerts.
- Artifact 3: short usage notes for web, mobile, and marketing pages.
Use Brand Kit Generator once roles and rules are locked. The tool is best for mechanical export, then manually verify the output against your checklist before any replacement export is approved.
If handoff is for development, include expected failure handling: where to degrade gracefully, acceptable token substitutions, and who approves exceptions.
Decision and handoff notes
The useful output of this guide is not a polished swatch sheet alone. It is a reproducible decision record.
- Confirm scope first: brand channel, app screens, brand rule source, and required token states.
- Prefer the smallest safe set of colors that passes all required checks.
- Document all non-obvious values, including why they were kept or removed.
- End each review with a single line for who owns next iteration and what evidence is required.
- Before merge or public use, verify contrast, state behavior, and token naming in the real destination context.