The short answer
Choose one restrained visual system before styling pages. Assign every color a role, define a type scale, and use a short spacing scale instead of choosing gaps by eye. Then apply those rules to the homepage, categories, product cards, product pages, and cart. Check important text and interface color pairs with a contrast tool, but treat the results as one accessibility check—not a compliance certificate. Your brand supplies the rules; the storefront should express them consistently.
Start with brand inputs, not swatches
A visual system cannot repair an unclear brand direction. Before opening a color picker, collect the few inputs that should constrain the design:
- approved logo files and any size or clear-space rules;
- existing colors, approved type references, available weights, fallbacks, and commercial web-use rights;
- representative product and lifestyle photography;
- two or three annotated visual references;
- practical adjectives with opposites, such as “warm, not rustic”;
- the audience, price position, product character, and main shopping task.
Without formal brand guidelines, write a one-page working brief. “Quiet, tactile, and warm; photography leads; no glossy gradients” gives more direction than “premium and modern.” The brand-asset preparation guide explains how to organize source files and usage rights.
Separate brand recognition from interface function. A packaging color may be tiring as body text; a pale signature color may fail as a button label. Give each ingredient a job it can perform.
Give every color a functional role
Start with neutral page, surface, text, and border colors. Add one main action color and only the status colors the store genuinely needs. Names such as “forest” and “oat” are helpful in conversation; role names such as text-primary and action-primary prevent misuse in implementation.
The following palette is illustrative, not a recommendation for every brand. Its values show how to document roles and permitted combinations.
| Role | Example token | Illustrative value | Intended use | Pairing rule |
|---|---|---|---|---|
| Page background | canvas | #FAFAF7 | Main page field | Use with primary or secondary text |
| Surface | surface | #FFFFFF | Cards, cart summary, panels | Use with primary text |
| Primary text | text-primary | #222222 | Body, names, prices | Use on canvas or surface |
| Secondary text | text-secondary | #59615D | Supporting copy and metadata | Do not use below the chosen body size without checking |
| Primary action | action-primary | #1F5B45 | Main buttons and active controls | Use with white text |
| Accent | accent-warm | #D97745 | Small highlights and selected decoration | Do not assume it works for small white text |
| Border | border-subtle | #CBD1CD | Dividers and nonessential card edges | Not the only cue for an input or state |
| Error | status-error | #A12D2D | Error text and indicators | Pair with text, icon, or explicit label—not color alone |
Color must not be the sole carrier of information. Pair an invalid field with an error message and an icon or other visible cue; pair a sale state with words and a price treatment. WCAG 2.2’s Use of Color criterion explains why color alone is insufficient for conveying information or prompting a response.
Check contrast as a recorded decision
For WCAG 2.2 Level AA, the Contrast (Minimum) criterion sets a contrast ratio of at least 4.5:1 for ordinary text and 3:1 for large-scale text, with stated exceptions. The Non-text Contrast criterion addresses visual information needed to identify interface components and states, generally at 3:1 against adjacent colors. Read the criteria and exceptions directly; a passing color pair does not establish that a component—or the store—is accessible.
Keep a record like this beside the palette. The ratios below are illustrative calculations for the example values and should be rechecked in the tool used by your team.
| Foreground | Background | Intended use | Ratio | Threshold used | Record |
|---|---|---|---|---|---|
#222222 | #FAFAF7 | Ordinary body text | 15.21:1 | 4.5:1 | Pass for this contrast check |
#59615D | #FAFAF7 | Ordinary supporting text | 6.10:1 | 4.5:1 | Pass for this contrast check |
#FFFFFF | #1F5B45 | Button label | 7.95:1 | 4.5:1 | Pass for this contrast check |
#FFFFFF | #D97745 | Small accent label | 3.15:1 | 4.5:1 | Fail for ordinary text; change the pair |
#CBD1CD | #FFFFFF | Essential control boundary | 1.55:1 | 3:1 | Fail if the boundary is required to identify the control |
Record the component, state, font size and weight, colors, ratio, checker, date, and decision. Test hover, focus, selected, disabled, error, sale, and image-overlay states too. Keyboard access, focus order, names, semantics, zoom, motion, and error handling need separate review.
Build a type hierarchy from content jobs
Choose type by reading conditions, not by how impressive a specimen looks. A useful body face stays clear at small sizes, includes the weights you will serve, and is licensed for web use. One family with careful scale and weight is often enough.
Confirm a branded font’s license, character set, weights, and platform availability. Inspect its fallback too: line breaks, button widths, prices, and card heights can change.
Here is an illustrative type specimen and scale. Values are starting points, not universal requirements.
| Role | Example style | Sample content | Use |
|---|---|---|---|
| Display | 48px / 52px, 600 | Stoneware for daily rituals | One short homepage statement |
| H1 | 40px / 44px, 600 | Mugs and cups | One page title |
| H2 | 28px / 34px, 600 | Made for smaller kitchens | Major section heading |
| H3 | 20px / 26px, 600 | Stackable collection | Card-group or subsection heading |
| Body | 16px / 25px, 400 | Glazed by hand in small batches. | Descriptions and policies |
| Small | 14px / 20px, 400 | Ships in 2–3 business days | Supporting information, not essential copy squeezed smaller |
| Label | 14px / 18px, 600 | Add to cart | Buttons and concise controls |
Test the scale with real product names, prices, delivery lines, and unusually long content. Position, weight, spacing, and wording should reinforce size. On mobile, reduce display sizes while preserving the role order. The mobile ecommerce checklist includes text-resize and real-device checks.
Use a spacing scale, then allow deliberate exceptions
Spacing explains which elements belong together. Random gaps make a store feel inconsistent even when its colors and fonts match. Choose a base unit and a short scale, then attach common uses to it.
The following illustrative spacing sheet uses a 4px base:
| Token | Value | Typical use |
|---|---|---|
space-1 | 4px | Icon-to-label adjustment |
space-2 | 8px | Closely related metadata |
space-3 | 12px | Product name to price |
space-4 | 16px | Card padding on compact layouts |
space-6 | 24px | Related content groups or mobile page gutter |
space-8 | 32px | Component separation |
space-12 | 48px | Section padding on smaller screens |
space-16 | 64px | Major desktop section separation |
space-24 | 96px | Rare, high-level desktop breathing room |
Use optical judgment after applying the scale. A logo may need more apparent space than its box suggests. Exceptions should be named and rare, not silent one-off values. Test narrow screens before compressing gaps around controls.
Apply the system across the shopping path
A visual rule matters only when it survives real content and states.
Homepage. Use the display style sparingly, keep one dominant action treatment, and let spacing reveal the intended order. The homepage design guide helps determine that hierarchy before visual polish.
Category and product cards. Keep image ratios, name styles, price emphasis, gaps, and card padding consistent enough to compare products. Test the longest name and widest price. Accent treatments must not outrank the product itself. Use the detailed product-card design guide when defining the listing component.
Product page. Preserve the same text and action roles while allowing more room for product detail. Keep specifications and delivery notes clearly related to the purchase action.
Cart. Familiarity matters more than novelty. The primary checkout action should look like the same class of action used elsewhere. Product identity, quantity, price, subtotal, errors, and removal controls should remain distinct without depending on color alone. Test empty, long-name, error, and discount states that the store actually supports.
Review screenshots of all four surfaces side by side. Circle unexplained changes in button color, heading role, card padding, borders, or spacing. Make them consistent or document why the exception helps.
Turn the rules into a storefront direction
In Setka, colors, type references, brand direction, catalog context, and merchant-supplied assets can inform one store-wide creative and structural direction, used to generate the homepage, category and product experiences, shared navigation, and cart. Checkout is in the same commerce platform. That is more useful than applying a palette to an isolated template: the same brief can shape the surfaces that form the buying path.
The merchant still chooses the brand rules and reviews the output. Open a page, describe a targeted change, refine exact wording directly where needed, and preview the next storefront version before publishing. Setka keeps storefront presentation and commerce in one system, so the merchant does not have a separate generated theme-code layer to maintain. Treat this as an iterative design process, not automatic brand governance or guaranteed accessibility. Supply approved logos, images, and licensed font references as part of the brand direction.
Do not solve every page independently. Define one compact visual system: approved inputs, color roles, contrast records, type roles, spacing tokens, and named exceptions. Apply it to representative homepage, category, product-card, product-page, and cart content; preview the path; then refine what fails before you publish.