CDP Style Guide — UX Design Warrior

CDP Style Guide — UX Design Warrior

Cara Design Protocol — UX Design Warrior

Version 1.0 · March 2026

01 — Color Tokens

All approved colors for use across CDP properties. Never use an unlisted color without running a contrast check first and documenting it here.

Light / Cream Palette

Cream --cream: #fefdf8 Primary page background
Cream 2 --cream-2: #fefaf6 Card backgrounds on cream
Sand --sand: #f5ede0 Section accents, callouts
Rule --rule: #d9c9b8 Borders, dividers — decorative only, never text

Text Colors

Brown --brown: #2c1810 Primary headings on light bg
Brown Mid --brown-mid: #4a2e1a Body text on light backgrounds
White --white: #ffffff Primary text on dark backgrounds
Off-White #e8edf5 Body text on dark card backgrounds (~#263654)

Brand Accent Colors

Orange --orange: #c85a1e Decorative ONLY — borders, rules, swatches. NEVER as text color on any background.
Orange Accessible --orange-a: #963f12 Orange TEXT on light/cream backgrounds. 6.84:1 on cream ✓ AA
Orange Dark BG --orange-dk: #F3BA91 Orange TEXT on dark backgrounds (#263654). 7.04:1 ✓ AAA
Orange Light --orange-lt: #e8784a Large display text on navy ONLY (hero h1 em). 5.09:1 — large text AA only.
Navy --navy: #1a2744 Hero backgrounds, dark sections, reference blocks
Navy Card #263654 rgba(255,255,255,.18) on navy. Card bg in dark sections.
Gold --gold: #f0d080 Heading accent on dark card backgrounds. 9.90:1 on navy ✓ AAA
Green Light --green-lt: #74c69d Keto Me / Imara Umoja accent on dark bg. 7.27:1 on navy ✓ AAA. Fails on light bg — never use on cream/sand.

02 — Contrast Requirements

All approved color pairings with verified contrast ratios. Test any new combination before using. Accessibility flanks design — if it's hard to read, it fails regardless of the ratio number.

On Light Backgrounds

Text ColorBackgroundRatioLevelUse For
#2c1810 Brown#fefdf8 Cream16.56:1AAA ✓H1/H2 headings
#4a2e1a Brown Mid#fefdf8 Cream12.15:1AAA ✓Body text, paragraphs
#4a2e1a Brown Mid#f5ede0 Sand10.65:1AAA ✓Body text on sand sections
#4a2e1a Brown Mid#ffffff White12.38:1AAA ✓Body text on white cards
#963f12 Orange-A#fefdf8 Cream6.84:1AAA ✓Labels, eyebrows, section markers
#963f12 Orange-A#f5ede0 Sand5.38:1AA ✓Labels on sand — acceptable for all-caps
#c85a1e OrangeAny light bg3.5–4.2:1FAIL ✗DECORATIVE ONLY — never as text

On Dark Backgrounds (Navy #1a2744)

Text ColorBackgroundRatioLevelUse For
#ffffff White#1a2744 Navy14.81:1AAA ✓H1/H2 headings on dark
rgba(255,255,255,.95)#1a2744 Navy13.8:1AAA ✓Hero sub paragraphs
rgba(255,255,255,.75)#1a2744 Navy8.93:1AAA ✓Supporting body text on navy
#F3BA91 Orange-DK#1a2744 Navy8.64:1AAA ✓Orange text/labels on navy
#f0d080 Gold#1a2744 Navy9.90:1AAA ✓Heading accents in dark card sections
#74c69d Green-Lt#1a2744 Navy7.27:1AAA ✓Keto Me / Imara accent on navy
#e8784a Orange-Lt#1a2744 Navy5.09:1AA ✓Large display text ONLY (hero h1 em, 36px+)

On Dark Card Background (#263654)

Text ColorBackgroundRatioLevelUse For
#e8edf5 Off-White#263654 Card~10:1AAA ✓Body text inside dark cards
#F3BA91 Orange-DK#263654 Card7.04:1AAA ✓Orange labels/headings inside dark cards
#f0d080 Gold#263654 Card5.58:1AA ✓Gold headings inside dark cards
#74c69d Green-Lt#263654 Card4.09:1FAIL ✗Do NOT use green as text on card bg

03 — Typography Rules

Non-negotiable. Every violation is an ADA/WCAG failure and breaks CDP.

Never

Never use font sizes below 14px under any circumstance. Not for labels, captions, eyebrows, numbers, badges, or meta text. 12px and 13px are ADA failures.

Always

Body text minimum 16px everywhere. Paragraphs, list items, captions, card body text — all 16px minimum.

Exception

Eyebrow / label text minimum 14px — only when all-caps AND letter-spaced (e.g. letter-spacing: .12em+). This is the one documented exception.

Always

Fonts: Playfair Display (headings, serif display) · Source Sans 3 (body, UI, labels). Always load both from Google Fonts.

Always

Three-tier hierarchy on dark backgrounds: Label (#F3BA91 or gold) → Value (white) → Supporting text (#e8edf5 or rgba(.75)). Each tier steps down in visual weight.

Type Scale Preview — Light Background

H1 · Playfair Display 900 · clamp(36px, 5vw, 60px) · #2c1810

A decade of design, rooted in a disaster.

H2 · Playfair Display 700 · clamp(28px, 3.5vw, 42px) · #2c1810

The design challenge

H3 · Playfair Display 600 · clamp(22px, 2.5vw, 30px) · #2c1810

Three iterations, one evolving platform

H4 · Source Sans 3 700 · 18px · #2c1810

Springboard Capstone

Body · Source Sans 3 400 · 17–18px · #4a2e1a

Queen Pelican began as a response to the 2010 BP Deepwater Horizon oil spill — a question about what it would take to build a cleaning platform that actually respected the environment.

Eyebrow / Label · Source Sans 3 700 · 14px · ALL-CAPS · letter-spacing:.14em · #963f12

Case Study · Queen Pelican Cleaning

Type Scale Preview — Dark Background

Label · #F3BA91 · 13px all-caps

H1 White · #ffffff

Hero sub paragraph · rgba(255,255,255,.95) · 18px — Queen Pelican began as a response to the 2010 BP Deepwater Horizon oil spill.

Body text inside dark card · #e8edf5 · 16px — Dialogues should not contain irrelevant information. Every extra unit competes with relevant units and diminishes their visibility.

04 — Divi Hard Rules

These rules exist because we learned them the hard way. Every item below was discovered by breaking the site.

Always

Full standalone HTML — DOCTYPE, html, head, body. Never paste a fragment.

Always

Unique page prefix on all CSS classes — km-, qp-, vb-, cs- etc. Wrap all content in <div class="prefix-page">. Scope box-sizing reset to .prefix-page * only.

Never

No bare element selectors — h2, h3, p, img, body, strong, ul, li as CSS selectors bleed into Divi's header and break the entire site.

Never

No !important, no et_pb_* targeting, no margin-top:-1px. These break Divi in ways that are very hard to undo.

Always

Scope list resets to the page wrapper.prefix-page ul { list-style: none }. Prevents Divi's default bullets stacking with CSS ::before markers.

Always

Split pages into max 5 logical code modules. Never one giant block — Divi can't handle it and Ming can't debug it.

Never

Never experiment with new patterns when an existing format works. The km- pattern is proven. Use it as the template for every new page.

05 — Responsive Rules

Always

Breakpoints at 860px and 600px minimum. Test every layout at 375px mobile width before handing to Ming.

Never

Buttons never stretch full width on mobile unless intentional. Max button width on mobile: 280px centered, or auto width fitting content.

Note

Never assume desktop styling translates to mobile. Always include explicit mobile overrides — grids, padding, font sizes.

06 — Image Rules

Never

No photo dumps. Every image must be intentional and add to the story. Images support the narrative — they do not replace it.

Always

Captions required when an image appears alongside text. Every image earns its placement.

Never

Never place two images side by side without clear purpose and hierarchy between them.

Never

Never use color descriptors for designs — say "2025 design" or "Final Design," not "green design" or "yellow design."

07 — ARIA & Accessibility Rules

Accessibility flanks design. If it's hard to read or navigate, it fails — regardless of whether it technically passes a ratio number.

Always

aria-label on every section — screen readers need context for each content region.

Always

aria-hidden="true" on all decorative elements — ::before glows, ornamental lines, section dividers.

Always

role="article" on self-contained content blocks — competitor blocks, case study cards, persona cards.

Always

role="list" + role="listitem" on timeline rows and any div-based list structures.

Always

role="note" on supplemental context blocks (e.g. competitor swap notes, methodology notes).

Always

Descriptive alt text — describe what changed, what matters, what the image proves. "Cleaning Authority website 2017" is not enough. Describe the content.

Always

Hero tags as ul > li — not div > span. Wrap with role="list" aria-label="Project disciplines".

Always

Wrap entire page content in <main> with aria-label identifying the page. This is the primary landmark for screen readers.

08 — Copy Rules

Never

Never write in negation framing — "It's not X, it's not Y." Write what it IS directly.

Never

Never mix old and new designs in the same card. Each design iteration gets its own moment.

CDP Style Guide · UX Design Warrior · Last updated March 2026 · Cara Harpole