You are making a weekend walking poster. Blue, orange and green each look attractive alone, but you do not know which should be the background or title, or what to change when they compete. A palette has a practical job: start with a purpose, choose relationships, then assign colors to actual places.
We will try six starting palettes and work through the selection and repair of a blue–orange example. Attractive swatches are useful candidates; they become a design only when used and checked in context.
Look at the whole design before its swatches
These four posters keep shapes, type and positions fixed. A is monochromatic, B follows neighboring hue families, C contrasts blue and orange, and D uses a triadic family arrangement. Choose a candidate for the event, then identify visible differences.
A relies largely on value differences. B keeps colored regions around yellow-green to blue-green. C pairs a broad blue mountain with a smaller ochre-orange circle. D assigns different roles to blue, red and yellow. Suggestions about suitability below concern these particular shapes, areas and words; they are not universal emotional laws.
Six useful starting points: what are you choosing, and why?
Arranging red, orange, yellow, green, blue and violet through neighboring transitions gives a simplified traditional hue-family circle. A selects one direction and varies value or chroma; B chooses neighbors; C chooses opposing directions; D chooses three widely spaced directions. Split-complementary selection takes two directions on either side of the base hue's opposite.
The circle suggests how near or far hue families are. It does not choose the largest area or a sufficiently dark text color. The following examples turn those relationships into usable starting palettes.
Names such as analogous and complementary mainly describe hue relationships. They do not decide lightness, chroma, area or type readability. These are palettes authored for this lesson; the hexadecimal values let you reproduce them.
Starting point
Ground / main / accent
Reasoning and a possible use
Monochromatic
#E9F1EA / #527659 / #214329
A pale gray-green ground supports deeper greens, limiting hue competition. Try a plant guide or quiet product illustration. Separate values so the shapes do not merge.
Analogous
#F3F1DF / #46766B / #B6BE63
Cream supports related blue-green and yellow-green families. Try foliage or ingredient illustrations. The pale yellow-green cannot automatically carry small text.
Complementary direction
#F1E9D9 / #284D68 / #C87A35
Blue and orange sit near opposite traditional-wheel families. Broad dark blue and a small ochre accent have distinct roles, with cream giving them space. Avoid making both huge and maximally vivid.
Split-complementary direction
#F0E8DD / #505A80 / #BF734B, plus #B39A50
A blue-violet main color faces orange-leaning and yellow-leaning warm colors. This adds variety, but the two warm colors still need separate roles.
Triadic families
#F4EEE1 / #436990 / #C15B5D, plus #C6A64D
Blue, red and yellow are widely separated on a traditional wheel. Try a richer event illustration. One dominant family with smaller supporting areas is often easier to organize than three equal rivals.
Neutrals with an accent
#F2ECE3 / #8D8981 / #A54235
Cream and warm gray establish common ground; a small brick red adds a difference. Try an information-rich page with one key item. Muted colors still have hue biases.
“Complementary direction” describes families. After value and chroma adjustments, the colors need not be exactly 180 degrees apart in a particular application's hue coordinates. A traditional red–yellow–blue wheel also differs from an RGB wheel. Use the name to find a direction, then compare the actual result.
Build a blue–orange poster, step by step
Fix the brief first: a weekend walk needs a readable heading, mountain shapes and a smaller event accent. Keep the heading readable, the mountains distinct and orange a local emphasis. Geometry stays fixed across the three stages.
A: establish hierarchy in gray. A pale ground, dark title and mountains already separate the information. The circle stays mid-gray so vivid color does not distract from this decision. This checks structure before selecting the color character.
B: choose a main color and common ground. Set mountains to deep blue #284D68, ground to pale cream #F1E9D9, and type to darker blue-black #233849. Blue is this example’s choice for distant mountains. Cream and blue differ in value and temperature; separate dark type means the mountain color does not have to satisfy small-text contrast.
C: add an accent and check its neighbors. Make the circle ochre-orange #C87A35, separated from blue in hue family, with restrained chroma and less area than the mountains. The lighter gray-blue-green foreground #7F9CA5 stays near the main hue direction while forming a supporting layer.
Why not a dark gray circle? That could work, placing more emphasis on position and value. Why not vivid red? It is another candidate whose hue, chroma and lightness must be compared. Orange here supplies a visible blue–warm relationship; the label “complementary” does not make those decisions for you.
Every swatch now maps to a role in the design. Next, avoid changing all five at once: use small edits to locate the source of a problem.
Three plausible deviations: repair one issue at a time
Type becomes too pale
A changes only the title color. The blue–orange relationship remains, but the title blends into the pale ground. B restores only the dark title. Repair the type-to-ground contrast without unnecessarily turning the mountains black.
The accent becomes more vivid
A changes only the accent to a more vivid orange; B uses the original ochre-orange. Does it now compete with the title or mountains? Vivid is not automatically wrong: A may suit a stronger event character; B better matches this brief’s restrained local accent.
The accent area grows
A enlarges only the circle, keeping every color and other shape fixed; B restores its smaller size. A large orange circle may become the main subject or a sun. The colors stay the same while the role changes. Decide what the circle should do before shrinking it.
The interaction applies each deviation separately to the current palette. Choose a palette and one deviation; “Assign roles” restores the baseline. Grayscale can check value, but it does not replace comparison of the colored design.
Preparing the visual
Put six palettes into a real layout
Choose six palettes in a fixed poster, then compare paler type, a stronger accent color or a larger accent with the baseline. Each deviation changes one color role or one shape size.
{"id":"palette-application","title":"Put six palettes into a real layout","summary":"Choose six palettes in a fixed poster, then compare paler type, a stronger accent color or a larger accent with the baseline. Each deviation changes one color role or one shape size.","height":1100,"html":"<h2 data-i18n=\"heading\"></h2><p data-i18n=\"intro\"></p><div class=\"choices palette-options\" role=\"group\" data-i18n-label=\"palette_choices\"><button type=\"button\" data-palette=\"mono\" aria-pressed=\"false\" data-i18n=\"name_mono\"></button><button type=\"button\" data-palette=\"analogous\" aria-pressed=\"false\" data-i18n=\"name_analogous\"></button><button type=\"button\" data-palette=\"complement\" aria-pressed=\"false\" data-i18n=\"name_complement\"></button><button type=\"button\" data-palette=\"split\" aria-pressed=\"false\" data-i18n=\"name_split\"></button><button type=\"button\" data-palette=\"triad\" aria-pressed=\"false\" data-i18n=\"name_triad\"></button><button type=\"button\" data-palette=\"neutral\" aria-pressed=\"false\" data-i18n=\"name_neutral\"></button></div><svg class=\"palette-scene\" viewBox=\"0 0 480 330\" role=\"img\" data-i18n-label=\"scene\"><rect id=\"ground\" width=\"480\" height=\"330\"/><text id=\"headline\" x=\"35\" y=\"67\" font-size=\"42\" font-weight=\"700\" data-i18n=\"poster_title\"></text><text id=\"subline\" x=\"37\" y=\"100\" font-size=\"20\" data-i18n=\"poster_sub\"></text><circle id=\"accent-shape\" cx=\"379\" cy=\"124\" r=\"46\"/><path id=\"main-shape\" d=\"M0 300L155 106L274 263L334 187L480 320V330H0Z\"/><path id=\"support-shape\" d=\"M0 315Q178 244 333 330H0Z\"/><path id=\"trail\" d=\"M90 330L174 182L235 257\" fill=\"none\" stroke-width=\"5\"/></svg><div class=\"choices\" role=\"group\" data-i18n-label=\"treatment_choices\"><button type=\"button\" data-treatment=\"roles\" aria-pressed=\"false\" data-i18n=\"roles\"></button><button type=\"button\" data-treatment=\"value\" aria-pressed=\"false\" data-i18n=\"value\"></button><button type=\"button\" data-treatment=\"strong\" aria-pressed=\"false\" data-i18n=\"strong\"></button><button type=\"button\" data-treatment=\"area\" aria-pressed=\"false\" data-i18n=\"area\"></button><button type=\"button\" data-treatment=\"gray\" aria-pressed=\"false\" data-i18n=\"gray\"></button></div><ul id=\"palette-swatches\"></ul><p class=\"ratio\"><span data-i18n=\"contrast\"></span> <output id=\"ratio\"></output></p><p id=\"palette-explanation\" role=\"status\" aria-live=\"polite\"></p><p class=\"muted\" data-i18n=\"note\"></p>","css":"body{padding:22px}h2{font-size:20px;line-height:1.4}p{font-size:16px;line-height:1.65}.choices{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.choices button{min-height:44px;flex:1 1 auto;font-size:16px}.palette-options button{flex:1 1 180px}.palette-scene{width:100%;height:auto;display:block;overflow:hidden;border-radius:4px;font-family:inherit}.palette-scene *{transition:none!important}#palette-swatches{list-style:none;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}#palette-swatches li{display:grid;grid-template-columns:26px 1fr;gap:8px;align-items:center;font-size:16px;min-width:0}#palette-swatches i{display:block;width:26px;height:44px;border:1px solid #777;border-radius:3px}#palette-swatches code{display:block;font-size:14px;overflow-wrap:anywhere}.ratio{border-block:1px solid var(--rule);padding:10px 0}#palette-explanation{min-height:6.6em}.muted{color:var(--muted)}@media(max-width:480px){body{padding:16px 12px}.palette-options button{flex-basis:120px}}\n","js":"const palettes={\"mono\": [\"#E9F1EA\", \"#527659\", \"#214329\", \"#94AC98\", \"#1D2D20\"], \"analogous\": [\"#F3F1DF\", \"#46766B\", \"#B6BE63\", \"#789962\", \"#233F39\"], \"complement\": [\"#F1E9D9\", \"#284D68\", \"#C87A35\", \"#7F9CA5\", \"#233849\"], \"split\": [\"#F0E8DD\", \"#505A80\", \"#BF734B\", \"#B39A50\", \"#292D45\"], \"triad\": [\"#F4EEE1\", \"#436990\", \"#C15B5D\", \"#C6A64D\", \"#273F52\"], \"neutral\": [\"#F2ECE3\", \"#8D8981\", \"#A54235\", \"#C6BAA7\", \"#332F2A\"]};let chosen='complement',treatment='roles';const $=s=>document.querySelector(s);\nconst linear=c=>{c/=255;return c<=.04045?c/12.92:((c+.055)/1.055)**2.4;};\nconst luminance=hex=>{const v=[1,3,5].map(i=>linear(parseInt(hex.slice(i,i+2),16)));return .2126*v[0]+.7152*v[1]+.0722*v[2];};\nconst gray=hex=>{const y=luminance(hex),v=Math.round(255*(y<=.0031308?12.92*y:1.055*y**(1/2.4)-.055));return '#'+v.toString(16).padStart(2,'0').repeat(3);};\nfunction render(){let p=palettes[chosen].slice();if(treatment==='value')p[4]='#'+[1,3,5].map(i=>Math.round(parseInt(p[0].slice(i,i+2),16)*.78+parseInt(p[4].slice(i,i+2),16)*.22).toString(16).padStart(2,'0')).join('');if(treatment==='strong')p[2]={mono:'#137941',analogous:'#BFCD23',complement:'#FF7200',split:'#F47B3B',triad:'#EF3E49',neutral:'#E13820'}[chosen];$('#accent-shape').setAttribute('r',treatment==='area'?80:46);if(treatment==='gray')p=p.map(gray);\n$('#ground').setAttribute('fill',p[0]);$('#main-shape').setAttribute('fill',p[1]);$('#accent-shape').setAttribute('fill',p[2]);$('#support-shape').setAttribute('fill',p[3]);$('#trail').setAttribute('stroke',p[0]);['#headline','#subline'].forEach(s=>{$(s).setAttribute('fill',p[4]);$(s).style.fill=p[4];});\nconst keys=['background','main','accent','secondary','ink'];$('#palette-swatches').replaceChildren(...p.map((color,i)=>{const li=document.createElement('li'),chip=document.createElement('i'),label=document.createElement('span'),code=document.createElement('code');chip.style.background=color;chip.setAttribute('aria-hidden','true');label.textContent=viz.t(keys[i]);code.textContent=color.toUpperCase();label.append(code);li.append(chip,label);return li;}));\nconst a=luminance(p[0]),b=luminance(p[4]),ratio=(Math.max(a,b)+.05)/(Math.min(a,b)+.05);$('#ratio').textContent=viz.number(ratio,2)+':1';\n$('#palette-explanation').textContent=viz.t(treatment==='roles'?'why_'+chosen:'s_'+treatment);document.body.dataset.palette=chosen;document.body.dataset.treatment=treatment;document.body.dataset.contrast=ratio;document.body.dataset.colors=p.join(',');\ndocument.querySelectorAll('button[data-palette]').forEach(b=>b.setAttribute('aria-pressed',String(b.dataset.palette===chosen)));document.querySelectorAll('button[data-treatment]').forEach(b=>b.setAttribute('aria-pressed',String(b.dataset.treatment===treatment)));}\ndocument.querySelectorAll('button[data-palette]').forEach(b=>b.onclick=()=>{chosen=b.dataset.palette;treatment='roles';render();});document.querySelectorAll('button[data-treatment]').forEach(b=>b.onclick=()=>{treatment=b.dataset.treatment;render();});render();\n","audio":false,"strings":{"accent":"Accent","area":"Larger accent","background":"Background","contrast":"Type / background contrast","gray":"Check grayscale","heading":"Choose a purpose, then try colors","ink":"Type","intro":"Choose a palette, then one change. Return to “Assign roles” and describe what was restored.","main":"Main","name_analogous":"Analogous","name_complement":"Blue–orange contrast","name_mono":"Monochromatic","name_neutral":"Neutrals + accent","name_split":"Split-complementary","name_triad":"Triadic","note":"Swatches show the five displayed colors. The ratio compares title with ground only. The accent-color change affects multiple color attributes; it is not labeled a chroma-only experiment.","palette_choices":"Palette starting points","poster_sub":"A WEEKEND OUT","poster_title":"WALK","roles":"Assign roles","s_area":"Only the circle radius grows from 46 to 80; colors and other shapes remain fixed. Its unoccluded area is about three times larger; mountains also affect the visible area. Does it become the main subject?","s_gray":"The role-based version is converted to grays of equal relative luminance. This checks value organization, not OKLCH L or aesthetic quality.","s_strong":"Only the accent color changes; other colors and areas stay fixed. Does it compete more with the heading or main shape? The variation need not be wrong for every purpose.","s_value":"Only the type color moves toward the ground; other roles and geometry stay fixed. Title contrast falls. Restore dark type to check this edit.","scene":"A walking poster with mountain shapes, a circular accent and a title. Geometry stays fixed.","secondary":"Support","strong":"Stronger accent color","treatment_choices":"Viewing mode","value":"Paler type","why_analogous":"Keep colored areas around yellow-green to blue-green, supported by a muted cream ground. Related hues connect the shapes; type uses a separate dark value.","why_complement":"Broad deep blue contrasts with a smaller ochre-orange accent. A pale cream ground gives both room; the accent does not need half the area.","why_mono":"Stay mainly within green, using a pale ground and distinct green values. Limited hue variation still needs a readable value structure.","why_neutral":"Cream and warm gray establish common ground, with a small brick-red difference. Low-chroma colors still have temperature biases worth comparing.","why_split":"A blue-violet main shape is paired with orange-leaning and yellow-leaning warm colors. More variety also means more roles to organize.","why_triad":"Blue, red and yellow serve different shapes. A pale ground and dark type preserve hierarchy; the three families need not be equally vivid or equally large."}}
Grayscale converts the role-based colors using sRGB relative luminance. It checks value, differs from preserving OKLCH L in the previous lesson, and does not measure beauty.
Why area changes the role of the same colors
The twelve-cell experiment isolates area. Geometry and three encoded colors remain fixed; only the colors assigned to existing regions change.
Preparing the visual
Three colors, three distributions
Twelve equal-area cells keep the same geometry. Only beige, blue-gray and ochre assignments change. Their counts are 7:4:1 for a small accent, 4:2:6 for a large ochre area and 7:1:4 when roles are swapped.
{"id":"palette-and-area","title":"Three colors, three distributions","summary":"Twelve equal-area cells keep the same geometry. Only beige, blue-gray and ochre assignments change. Their counts are 7:4:1 for a small accent, 4:2:6 for a large ochre area and 7:1:4 when roles are swapped.","height":680,"html":"<h2 data-i18n=\"heading\"></h2><p data-i18n=\"intro\"></p><svg class=\"scene\" viewBox=\"0 0 480 320\" role=\"img\" data-i18n-label=\"scene\" xmlns=\"http://www.w3.org/2000/svg\"><g id=\"tiles\"></g></svg><div class=\"controls\" role=\"group\" data-i18n-label=\"choices\"><button type=\"button\" data-mode=\"small\" aria-pressed=\"false\" data-i18n=\"small\"></button><button type=\"button\" data-mode=\"large\" aria-pressed=\"false\" data-i18n=\"large\"></button><button type=\"button\" data-mode=\"swap\" aria-pressed=\"false\" data-i18n=\"swap\"></button></div><div class=\"status\"><p id=\"status\" role=\"status\" aria-live=\"polite\"></p></div><p class=\"readout\" data-i18n=\"note\"></p>","css":"\nbody { padding:22px; }\nh2 { font-size:20px; line-height:1.4; }\np { font-size:16px; line-height:1.65; }\n.scene { display:block; width:100%; height:auto; overflow:hidden; border-radius:4px; background:#e8e4dc; }\n.scene * { transition:none!important; }\n.controls { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:16px 0; }\n.controls button { flex:1 1 auto; min-height:44px; font-size:16px; }\nlabel { display:block; font-size:16px; margin:14px 0 4px; }\ninput[type=range] { width:100%; min-height:28px; }\n.readout { font-size:16px; color:var(--muted); }\n.status { display:grid; border-top:1px solid var(--rule); padding-top:12px; margin-top:16px; }\n.status p { grid-area:1/1; margin:0; }\n.status [aria-hidden=true] { visibility:hidden; }\n@media(max-width:480px) { body {padding:16px 12px;} h2 {font-size:19px;} }\n","js":"const $=s=>document.querySelector(s); const $$=s=>Array.from(document.querySelectorAll(s));\nfunction say(key){$('#status').textContent=viz.t(key);document.body.dataset.state=key;}\nfunction reserve(keys){keys.forEach(k=>{const p=document.createElement('p');p.textContent=viz.t(k);p.setAttribute('aria-hidden','true');$('.status').append(p);});}\nfunction selected(attr,value){$$('button['+attr+']').forEach(b=>b.setAttribute('aria-pressed',String(b.getAttribute(attr)===value)));}\n\nconst palette=['#ddd3bf','#536a78','#b7733e'];let mode='small';\nconst maps={small:[0,0,0,0,0,1,1,0,0,1,1,2],large:[0,0,2,2,0,1,2,2,0,1,2,2],swap:[0,0,0,0,0,2,2,0,0,2,2,1]};\nfunction render(){const a=maps[mode],counts=[0,0,0];$('#tiles').innerHTML=a.map((v,i)=>{counts[v]++;return `<rect x=\"${i%4*120}\" y=\"${Math.floor(i/4)*106.6667}\" width=\"120.1\" height=\"106.77\" fill=\"${palette[v]}\"/>`;}).join('');\n selected('data-mode',mode);say('s_'+mode);document.body.dataset.counts=counts.join(',');document.body.dataset.mode=mode;\n}\nreserve(['s_small','s_large','s_swap']);$$('button[data-mode]').forEach(b=>b.onclick=()=>{mode=b.dataset.mode;render();});render();\n","audio":false,"strings":{"choices":"Palette arrangements","heading":"Which color gets the emphasis?","intro":"Start with a small ochre accent, expand its area, then swap the blue-gray and ochre roles. Compare which region you notice first.","large":"Large ochre area","note":"Cell counts measure area, not beauty. No fixed palette ratio is prescribed and no eye movements are measured. All three encoded colors remain unchanged.","s_large":"Beige occupies 4 cells, blue-gray 2 and ochre 6. Ochre now covers half the image and contributes to its overall color, rather than acting as the original small accent.","s_small":"Beige occupies 7 cells, blue-gray 4 and ochre 1. A small contrasting ochre patch can act as an accent. What you notice first still depends on the viewing situation.","s_swap":"Beige still occupies 7 cells; blue-gray occupies 1 and ochre 4. The colors exchange roles. The accent location stays fixed, but its color relationship changes.","scene":"A fixed arrangement of twelve equal-area cells in beige, blue-gray and ochre.","small":"Small ochre accent","swap":"Swap roles"}}
Ochre occupies one cell in the first version and may act as a local accent. At six cells it contributes a broad color field. Swapping blue-gray and ochre shows that “accent” is a use, not an inborn property of a hue. The cell ratios are experimental conditions, not a recipe for every image.
Three common failures and a first repair
Problem
Possible cause
First change to try
Everything competes
Area, chroma and contrast are all strong without hierarchy
Choose a main color; mute some supporting regions or move them toward neutral, retaining one emphasis
All colors are gentle but the image feels dull
Important subjects and grounds occupy too similar a value range
Separate key boundary values before deciding whether more chroma is needed
Attractive swatches produce unreadable type
Actual area and foreground–background relationships were ignored
Change type or its ground, rather than only moving the title's hue
For ordinary web text, WCAG 2.2 AA generally requires at least 4.5:1 contrast; qualifying large text generally requires 3:1, with specific size conditions. This is a text readability check, not a beauty score for a palette or poster. Use words, shapes or patterns alongside color when identifying categories. W3C: minimum text contrast
A second brief: why not copy the poster onto a page?
The poster’s colored mountains are its main content. A tea page already contains a green illustration and needs room for type and an entry point. Additional color should support that existing information; a useful blue–orange poster does not justify copying its areas and intensity unchanged. Make the next judgment before opening the explanation.
Transfer to a tea page: keep the existing illustration
The green leaf illustration is fixed. Readers should see the illustration and heading, then find the purchase entry. A has a competing large orange entry; B reduces it and uses dark green; C adds a warmer cream ground. Compare A→B and B→C separately: which repairs competition, and which mainly changes the overall color direction?
Decide first, then reveal the explanation
A→B reduces entry area and changes it to dark green, keeping it recognizable with less competition. That is a combined practical edit: the result alone cannot attribute all improvement to one factor. B→C keeps the illustration, entry and layout while changing the ground and information-bar tones. Both B and C can work depending on the intended cooler or warmer relationship. Green tea does not require every region to be green.
Two transfer checks
Situation one: You need a restrained tea information page whose photographs already contain abundant green. Which starting approach could you choose, and why?
Open a possible explanation
Try a cream-gray neutral ground with a little deep green, leaving the photographs as the main colored information. A muted analogous approach could also connect the materials. Making every border, title and control vividly green may reduce the photographs' prominence. The reasoning concerns the actual photographs, hierarchy and reading task—not a rule that tea must be green.
Situation two: Small orange text on a blue region is hard to read. Does that prove complementary palettes cannot work?
Open a possible explanation
No. Hue difference and text value contrast are different questions. Check the text against its immediate ground; lighten the type, darken the ground or provide a stable text panel. The larger graphic regions can still use blue–orange relationships. Passing this text check alone does not establish accessibility in every respect.
Try your own task: state the use, choose a main family, add a low-chroma ground and candidate accent, then explain their areas and positions. Keep an alternative and compare the trade-offs. That process moves you from naming palette types to making reasoned combinations.