DESIGN.md inspired by Coda
White-canvas productivity surface — Calibre display over Inter body, near-black UI with a single confident #0066ff blue and warm-cream callouts.
Compare to…
- bg
#ffffff - surface
#ffffff - surface-soft
#fafafa - surface-muted
#f0f0f0 - text AAA · 16.1
#212121 - text-muted
#444444 - text-faint AA · 4.9
#717171 - brand AA · 4.8
#0066ff - brand-hover
#0052cc - brand-soft
#e6efff - cta-primary
#000000 - on-brand
#ffffff - accent
#f8ad40 - accent-cream
#fff6ec - accent-callout
#ffe6c9 - accent-warm
#f0e5dc - block-green
#006838 - border — · 1.3
#e3e3e3 - border-soft
#ededed - border-strong — · 1.6
#cccccc - success
#1a7f4b - success-bg
#e7f4ec - warning
#9a6400 - warning-bg
#fff3df - danger
#c0392b - danger-bg
#fbeae8 - info
#0066ff - info-bg
#e6efff
- step-0 0px
- step-1 4px
- step-2 8px
- step-3 12px
- step-4 16px
- step-5 24px
- step-6 32px
- step-7 48px
- step-8 64px
- step-9 96px
- micro
2px - sm
4px - md
8px - lg
12px - xl
16px - pill
9999px
Maps the 8 canonical role names to this entry's actual tokens. Use these to plug the design into role-aware tools — shadcn/ui themes, role-aware Tailwind plugins, atelier-lint — without hard-coding token names.
- background → bg
- foreground → text
- primary → brand
- primary-foreground → on-brand
- accent → accent
- muted → text-muted
- border → border
- ring → brand
Coda's marketing surface belongs to the post-Notion document-workspace lineage: a paper-white canvas treated as a literal page, near-black text that stops short of pure `#000`, and a single confident accent rather than a multi-hue palette. Calibre — the Klim Type Foundry geometric-humanist sans used by Dropbox and a generation of SaaS brands — carries the display register, while Inter handles body and UI text; this Calibre-display / Inter-body pairing is the contemporary productivity-tool dialect (Linear, Vercel, and Stripe all sit in adjacent territory). The action colour is one decisive `#0066ff` blue, a Stripe-style trust-via-restraint move that reserves saturation for links, focus rings, and interactive emphasis. Where Coda diverges is the document-block warmth: callouts render in cream-to-peach (`#fff6ec` → `#ffe6c9`) with an amber highlight (`#f8ad40`) and a decorative brand green (`#006838`) — the visual residue of Coda's actual product, where doc blocks, callouts, and highlights are first-class primitives. Primary CTAs are solid black `#000000` pills, a confident high-contrast choice that keeps the blue free for navigation and content links.
- Defined the document-workspace marketing register — paper-white canvas, near-black text, single accent — that Coda competes within.
- Calibre display face — the geometric-humanist sans that gives the headlines their confident, neutral-modern voice.
- Body and UI typeface — the screen-optimised workhorse sans underpinning legibility at small sizes.
- Single-blue, trust-via-restraint chromatic discipline — one saturated action colour, no hue inflation.
- Contemporary productivity-SaaS register — Calibre/Inter-class type, hairline borders, white-on-white tonal depth.
theme.extend block for tailwind.config.js
:root { --bg, --text, --brand, … } you can paste anywhere
W3C Design Tokens Community Group format
Importable into Figma → Variables → Import
---
name: Coda
tagline: 'White-canvas productivity surface — Calibre display over Inter body, near-black UI with a single confident #0066ff blue and warm-cream callouts.'
updated_at: 2026-05-29T21:44:57.076Z
published_at: 2026-05-29T21:44:57.076Z
author: webdesignhot
source_url: https://coda.io
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [saas]
tags: [light, sans, structured]
preview_swatch: ['#ffffff', '#0066ff', '#f8ad40']
related: [notion, linear, stripe]
description: 'Coda''s marketing surface is the all-in-one document workspace made literal — a paper-white `#ffffff` canvas, Calibre as the confident display face over Inter for body, and near-black `#212121` text that never quite hits pure black. Primary CTAs are solid black (`#000000`) pills at 8px radius; the signature accent is a single decisive `#0066ff` blue reserved for links, focus, and interactive emphasis. Warm-cream callouts (`#fff6ec` → `#ffe6c9`) and an amber highlight (`#f8ad40`) carry the only non-blue chroma — the document-block flavour that makes a Coda page feel like a structured doc rather than a generic SaaS landing. The card primitive holds at 12px, buttons at 8px, and the whole system reads productivity-first: calm, legible, structured.'
# Canonical 8-role aliases (bg / text / brand / border / accent / muted / surface / danger).
# Maps role names to this entry's actual token names so role-aware
# downstream tools resolve `theme.background` → entry's `bg`, etc.
# Auto-generated by scripts/add-aliases.mjs — do not edit manually;
# regenerate after changing color token names.
aliases:
background: bg
foreground: text
primary: brand
primary-foreground: on-brand
accent: accent
muted: text-muted
border: border
ring: brand
colors:
bg: '#ffffff' # paper-white canvas; the document page made literal
surface: '#ffffff' # cards default to white; depth via border + tone
surface-soft: '#fafafa' # softest panel tint, a half-step off white
surface-muted: '#f0f0f0' # --neutral200; panel/callout neutral ground
text: '#212121' # rgb(33,33,33); near-black body, never pure #000
text-muted: '#444444' # rgb(68,68,68); secondary CTA + metadata grey
text-faint: '#717171' # tertiary captions, timestamps, placeholders
brand: '#0066ff' # rgb(0,102,255); single confident action/link blue
brand-hover: '#0052cc' # pressed/hover step into deeper blue
brand-soft: '#e6efff' # soft action tint surface for selection & info
cta-primary: '#000000' # solid-black primary "Get started" pill
on-brand: '#ffffff' # white text on black CTA / blue accent
accent: '#f8ad40' # --block-color-highlight; warm amber highlight
accent-cream: '#fff6ec' # warmest callout/cream surface tint
accent-callout: '#ffe6c9' # --block-callout-background; peach callout fill
accent-warm: '#f0e5dc' # --block-color-accent-light; warm sand panel
block-green: '#006838' # --codaBrandGreen; document-block decorative green
border: '#e3e3e3' # standard hairline divider on white
border-soft: '#ededed' # lighter nested divider / table row line
border-strong: '#cccccc' # emphasised divider / form field border
success: '#1a7f4b' # confident editorial green
success-bg: '#e7f4ec' # success surface tint
warning: '#9a6400' # warm amber-brown, not yellow
warning-bg: '#fff3df' # warning surface tint
danger: '#c0392b' # restrained brick red
danger-bg: '#fbeae8' # danger surface tint
info: '#0066ff' # info reuses the action blue
info-bg: '#e6efff' # info surface tint
typography:
display:
family: 'Calibre-R, system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif'
weights: [500, 600, 700]
body:
family: 'Inter, system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif'
weights: [400, 500, 600]
mono:
family: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace'
weights: [400, 500]
scale:
display-hero: { size: 72, weight: 700, lineHeight: 1.0, tracking: '-0.02em', family: display }
display-lg: { size: 56, weight: 700, lineHeight: 1.05, tracking: '-0.018em', family: display }
h1: { size: 48, weight: 700, lineHeight: 1.1, tracking: '-0.015em', family: display }
h2: { size: 38, weight: 700, lineHeight: 1.15, tracking: '-0.012em', family: display }
h3: { size: 28, weight: 600, lineHeight: 1.25, tracking: '-0.008em', family: display }
h4: { size: 22, weight: 600, lineHeight: 1.3, tracking: '-0.004em', family: display }
h5: { size: 18, weight: 600, lineHeight: 1.35, tracking: '0', family: body }
h6: { size: 16, weight: 600, lineHeight: 1.4, tracking: '0', family: body }
body-lg: { size: 18, weight: 400, lineHeight: 1.55, tracking: '0', family: body }
body: { size: 16, weight: 400, lineHeight: 1.55, tracking: '0', family: body }
body-ui: { size: 14, weight: 400, lineHeight: 1.5, tracking: '0', family: body }
body-sm: { size: 13, weight: 400, lineHeight: 1.5, tracking: '0', family: body }
label: { size: 13, weight: 500, lineHeight: 1.4, tracking: '0.01em', family: body }
caption: { size: 12, weight: 500, lineHeight: 1.4, tracking: '0.02em', family: body }
code: { size: 13, weight: 400, lineHeight: 1.5, tracking: '0', family: mono }
radius:
micro: 2
sm: 4
md: 8
lg: 12
xl: 16
pill: 9999
spacing:
base: 4
scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96]
layout:
page-width: 1280
prose-width: 720
header-height: 64
components:
button-primary:
backgroundColor: cta-primary
textColor: on-brand
radius: md
padding: '10px 16px'
font: { family: body, weight: 600, size: 16 }
hover: { backgroundColor: '#1a1a1a' }
use: 'Solid-black "Get started" — the canonical primary action'
button-secondary:
backgroundColor: bg
textColor: text
border: border-strong
radius: md
padding: '10px 16px'
font: { family: body, weight: 600, size: 16 }
hover: { backgroundColor: surface-soft }
use: 'Outlined "Request a demo" — white fill, near-black label'
button-accent:
backgroundColor: brand
textColor: on-brand
radius: md
padding: '10px 16px'
font: { family: body, weight: 600, size: 16 }
hover: { backgroundColor: brand-hover }
use: 'Blue accent action where the brand colour earns emphasis'
button-ghost:
backgroundColor: transparent
textColor: text-muted
radius: lg
padding: '10px 16px'
font: { family: body, weight: 500, size: 16 }
hover: { backgroundColor: surface-muted }
use: 'Translucent "Contact sales" tertiary action'
card:
backgroundColor: surface
border: border
radius: lg
padding: 24
shadow: 'none'
use: 'White panel; depth via hairline border, not shadow'
card-callout:
backgroundColor: accent-cream
border: accent-callout
radius: lg
padding: 24
use: 'Warm-cream document-block callout — the Coda doc flavour'
input:
backgroundColor: bg
border: border-strong
textColor: text
radius: md
padding: '8px 12px'
font: { family: body, weight: 400, size: 16 }
focus: { border: brand, ring: '0 0 0 3px rgba(0,102,255,0.18)' }
badge:
backgroundColor: surface-muted
textColor: text-muted
radius: pill
padding: '4px 10px'
font: { family: body, weight: 500, size: 13 }
motion:
ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
ease-decelerate: 'cubic-bezier(0, 0, 0.2, 1)'
duration-fast: 150
duration-standard: 240
duration-slow: 320
hover-lift: 'translateY(-1px)'
page-transition: 'opacity-only, 200ms standard'
reduced-motion: 'respects prefers-reduced-motion: reduce — transitions collapse to opacity-only at 100ms'
breakpoints:
mobile: 640
tablet: 1024
desktop: 1280
wide: 1536
shadows:
none: 'none'
ambient: 'rgba(0,0,0,0.04) 0 1px 2px'
raised: 'rgba(0,0,0,0.06) 0 1px 2px, rgba(0,0,0,0.05) 0 4px 12px'
elevated: 'rgba(0,0,0,0.08) 0 8px 24px, rgba(0,0,0,0.05) 0 2px 6px'
popover: 'rgba(0,0,0,0.12) 0 12px 32px, rgba(0,0,0,0.06) 0 4px 8px'
ring: '0 0 0 3px rgba(0,102,255,0.18)'
accessibility:
contrast-text-on-bg: 16.1 # AAA at body sizes (#212121 on #ffffff)
contrast-on-brand: 4.83 # AA at body+ (#ffffff on #0066ff)
contrast-on-cta-primary: 21.0 # AAA (#ffffff on #000000)
contrast-muted-on-bg: 9.74 # AAA (#444444 on #ffffff)
contrast-text-on-accent: 8.47 # AAA (#212121 on #f8ad40)
focus-ring: '3px solid rgba(0,102,255,0.4) with 1px offset'
reduced-motion-honored: true
keyboard-trap-free: true
min-touch-target: 44
dark-mode: light-only
lineage:
summary: |
Coda's marketing surface belongs to the post-Notion document-workspace lineage:
a paper-white canvas treated as a literal page, near-black text that stops short
of pure `#000`, and a single confident accent rather than a multi-hue palette.
Calibre — the Klim Type Foundry geometric-humanist sans used by Dropbox and a
generation of SaaS brands — carries the display register, while Inter handles
body and UI text; this Calibre-display / Inter-body pairing is the contemporary
productivity-tool dialect (Linear, Vercel, and Stripe all sit in adjacent
territory). The action colour is one decisive `#0066ff` blue, a Stripe-style
trust-via-restraint move that reserves saturation for links, focus rings, and
interactive emphasis. Where Coda diverges is the document-block warmth: callouts
render in cream-to-peach (`#fff6ec` → `#ffe6c9`) with an amber highlight
(`#f8ad40`) and a decorative brand green (`#006838`) — the visual residue of
Coda's actual product, where doc blocks, callouts, and highlights are first-class
primitives. Primary CTAs are solid black `#000000` pills, a confident
high-contrast choice that keeps the blue free for navigation and content links.
influences:
- name: Notion
role: Defined the document-workspace marketing register — paper-white canvas, near-black text, single accent — that Coda competes within.
url: https://www.notion.com
- name: Klim Type Foundry (Calibre)
role: Calibre display face — the geometric-humanist sans that gives the headlines their confident, neutral-modern voice.
url: https://klim.co.nz/retail-fonts/calibre/
- name: Inter (Rasmus Andersson)
role: Body and UI typeface — the screen-optimised workhorse sans underpinning legibility at small sizes.
url: https://rsms.me/inter/
- name: Stripe
role: Single-blue, trust-via-restraint chromatic discipline — one saturated action colour, no hue inflation.
url: https://stripe.com
- name: Linear
role: Contemporary productivity-SaaS register — Calibre/Inter-class type, hairline borders, white-on-white tonal depth.
url: https://linear.app
---
## 1. Visual Theme & Atmosphere
Coda's marketing surface presents the all-in-one collaborative workspace as a literal page. The base canvas is paper-white `#ffffff`, the text sits at a near-black `#212121` (rgb 33, 33, 33) that deliberately stops short of pure black, and the whole composition reads productivity-first: calm, legible, and structured. Where a consumer brand would reach for gradient and saturation, Coda reaches for whitespace and a single decisive accent. The page feels like an empty Coda doc waiting to be filled — which is exactly the metaphor.
The type does the heavy lifting. Calibre — the Klim Type Foundry geometric-humanist sans — carries the display register, hitting 72px at 700 weight for the hero headline with a tight negative track that gives it a confident, neutral-modern voice. Inter handles body and UI text, including the 14px base size observed across the chrome. This Calibre-display / Inter-body pairing is the contemporary productivity-tool dialect; it places Coda firmly alongside Linear, Vercel, and Stripe rather than the consumer-app crowd. The headlines feel engineered rather than decorated.
Chromatically the system is disciplined to the point of austerity, then warmed in one place. The action colour is a single confident `#0066ff` blue — re-probed from the SVG layer, used for links, focus rings, and interactive emphasis but never sprayed across the page. Primary CTAs ("Get started") are solid black `#000000` pills at 8px radius, a high-contrast choice that keeps the blue free for content and navigation. Secondary CTAs ("Request a demo") are outlined white pills at the same 8px; the translucent tertiary ("Contact sales") softens to a 12px radius and a muted `#444444` label.
The one place Coda lets warmth in is the document-block flavour. Callouts render in a cream-to-peach family — `#fff6ec` cream, `#ffe6c9` peach callout fill, `#f0e5dc` warm sand — accented by an amber highlight (`#f8ad40`) and a decorative brand green (`#006838`). These are the visual residue of Coda's actual product, where callouts, highlights, and coloured doc blocks are first-class primitives. On the marketing surface they appear as occasional warm accents against the cool white-and-blue scaffolding, signalling "this is a structured document tool" without ever overwhelming the restraint.
The net atmosphere is calm productivity: a white page, near-black confident type, one trustworthy blue, and a thread of document-block warmth. It is the visual equivalent of a well-organised workspace — nothing shouts, everything has a place.
**Key Characteristics**
- Paper-white `#ffffff` canvas treated as a literal document page
- Calibre display face (72px / 700 hero) over Inter for body and UI
- Near-black `#212121` text that never hits pure `#000`
- Solid-black `#000000` primary CTA pills at 8px radius
- Single confident `#0066ff` blue for links, focus, and interactive emphasis
- Warm-cream document-block callouts (`#fff6ec` → `#ffe6c9`) as the only non-blue chroma
- Amber highlight (`#f8ad40`) and decorative brand green (`#006838`) from the product palette
- Hairline `#e3e3e3` borders; depth via tone and border, not shadow
- 12px card radius, 8px button radius, 9999px pill for badges
- Productivity-first, structured register — restrained, legible, never loud
## 2. Color Palette & Roles
### Canvas & Surface
- **bg** (`#ffffff`): paper-white canvas; the document page made literal.
- **surface** (`#ffffff`): cards default to white, with depth carried by border and tone rather than fill.
- **surface-soft** (`#fafafa`): softest panel tint, a half-step off pure white.
- **surface-muted** (`#f0f0f0`) [→ `--neutral200`]: neutral panel and block ground; the workhorse grey.
### Text
- **text** (`#212121`) [→ rgb(33,33,33)]: near-black body text; calibrated for paper-on-paper softness, never pure black.
- **text-muted** (`#444444`) [→ rgb(68,68,68)]: secondary CTA labels, metadata, supporting copy.
- **text-faint** (`#717171`): tertiary captions, timestamps, placeholder text.
### Brand & Accent
- **brand** (`#0066ff`) [→ rgb(0,102,255)]: single confident action and link blue; the only saturated cool chroma on the page.
- **brand-hover** (`#0052cc`): pressed/hover step into a deeper blue.
- **brand-soft** (`#e6efff`): soft action tint for selection states and info banners.
- **cta-primary** (`#000000`): solid-black primary "Get started" pill fill.
- **accent** (`#f8ad40`) [→ `--block-color-highlight`]: warm amber highlight from the doc-block palette.
- **accent-cream** (`#fff6ec`): warmest callout/cream surface tint.
- **accent-callout** (`#ffe6c9`) [→ `--block-callout-background`]: peach callout fill for document-block notices.
- **accent-warm** (`#f0e5dc`) [→ `--block-color-accent-light`]: warm sand panel tint.
- **block-green** (`#006838`) [→ `--codaBrandGreen`]: decorative document-block green; never an action colour.
### Interactive
- **link**: identical to `brand` (`#0066ff`); the action blue and the link blue are deliberately the same hue.
- **link-hover**: `brand-hover` (`#0052cc`); link gains underline at hover, never colour shift alone.
- **selected**: `brand-soft` (`#e6efff`) fill, `brand` text.
- **disabled**: `text-faint` (`#717171`) on `surface-muted` (`#f0f0f0`).
### Borders
- **border** (`#e3e3e3`): standard hairline divider on white; the universal separator.
- **border-soft** (`#ededed`): lighter nested divider and table-row line.
- **border-strong** (`#cccccc`): emphasised divider and form-field border.
### Shadow Colors
- **ambient**: `rgba(0,0,0,0.04) 0 1px 2px` — barely-there resting shadow for elevated cards.
- **raised**: two-layer neutral shadow (`0 1px 2px` + `0 4px 12px`) for floating panels.
- **popover**: deeper multi-layer shadow for menus and tooltips.
Note: Coda's shadows are neutral black at very low opacity — depth is achieved primarily through the hairline border and surface tone, with shadow reserved for genuinely floating elements.
### Semantic
- **success** (`#1a7f4b`) on **success-bg** (`#e7f4ec`): confident editorial green, never a saturated chartreuse.
- **warning** (`#9a6400`) on **warning-bg** (`#fff3df`): warm amber-brown that harmonises with the cream callouts, not yellow.
- **danger** (`#c0392b`) on **danger-bg** (`#fbeae8`): restrained brick red, never crayon-red.
- **info** (`#0066ff`) on **info-bg** (`#e6efff`): info reuses the action blue; the system avoids inventing a separate info hue.
## 3. Typography Rules
### Font Family
- **Display**: Calibre-R → system-ui → -apple-system → Segoe UI → Helvetica → Arial → sans-serif. Calibre carries every headline; its geometric-humanist forms give the display register a confident, neutral-modern voice.
- **Body & UI**: Inter → system-ui → -apple-system → Segoe UI → Helvetica → Arial → sans-serif. Inter handles body copy and the 14px UI base; it is the screen-optimised workhorse that keeps small text crisp.
- **Mono**: ui-monospace → SFMono-Regular → SF Mono → Menlo → Consolas → monospace. Reserved for code blocks, formula snippets, and tabular data echoing Coda's doc primitives.
### Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| display-hero | Calibre | 72 | 700 | 1.0 | -0.02em | the observed hero size — confident, tightly tracked |
| display-lg | Calibre | 56 | 700 | 1.05 | -0.018em | secondary heroes |
| h1 | Calibre | 48 | 700 | 1.1 | -0.015em | primary section heads |
| h2 | Calibre | 38 | 700 | 1.15 | -0.012em | feature-band heads (observed) |
| h3 | Calibre | 28 | 600 | 1.25 | -0.008em | sub-feature heads |
| h4 | Calibre | 22 | 600 | 1.3 | -0.004em | card heads |
| h5 | Inter | 18 | 600 | 1.35 | 0 | inline emphasis heads |
| h6 | Inter | 16 | 600 | 1.4 | 0 | label-grade heads |
| body-lg | Inter | 18 | 400 | 1.55 | 0 | hero subheads |
| body | Inter | 16 | 400 | 1.55 | 0 | default reading size |
| body-ui | Inter | 14 | 400 | 1.5 | 0 | chrome/UI base (observed) |
| body-sm | Inter | 13 | 400 | 1.5 | 0 | secondary copy |
| label | Inter | 13 | 500 | 1.4 | 0.01em | form labels, eyebrows |
| caption | Inter | 12 | 500 | 1.4 | 0.02em | image and chart captions |
| code | mono | 13 | 400 | 1.5 | 0 | inline + block code |
### Principles
- **Calibre declares, Inter informs**: headlines belong to Calibre at 600–700 weight; everything readable at a glance and below — body, UI, captions — belongs to Inter. The two faces are never swapped.
- **Negative tracking at display scale**: hero copy tightens to roughly `-0.02em`; without that compression Calibre at 700 reads as competent rather than declarative.
- **Near-black, not black**: body text holds at `#212121` rather than `#000000` — a deliberate softening that reduces glare on the white canvas and keeps long reads comfortable.
- **14px UI base**: chrome, navigation, and dense UI run at Inter 14px; the marketing body steps up to 16px for hero subheads and prose.
- **Weight, not colour, for emphasis**: hierarchy is built from Calibre/Inter weight steps and size, not from colour shifts — colour stays reserved for the blue accent.
- **Generous line-height for prose**: body copy runs 1.55 line-height, giving the document-page register its breathing room.
## 4. Component Stylings
### Buttons
**Primary — "Get started"**
- Background: `#000000`. Text: `#ffffff` at Inter 600 / 16px. Padding: `10px 16px`. Radius: 8px. Border: none.
- Hover: background → `#1a1a1a`. Active: background → `#000000` with the focus ring.
- Use: the canonical primary action; solid black keeps the blue free for links.
**Secondary — "Request a demo"**
- Background: `#ffffff`. Text: `#212121` at Inter 600 / 16px. Padding: `10px 16px`. Radius: 8px. Border: `1px solid #cccccc`.
- Hover: background → `#fafafa`, border → `#b3b3b3`. Use: secondary action paired beside the black primary.
**Accent — blue action**
- Background: `#0066ff`. Text: `#ffffff` at Inter 600 / 16px. Padding: `10px 16px`. Radius: 8px. Border: none.
- Hover: background → `#0052cc`. Use: where the brand colour earns emphasis (in-doc CTAs, feature highlights). Use sparingly so the single-blue discipline holds.
**Ghost / translucent — "Contact sales"**
- Background: `rgba(255,255,255,0.85)` over coloured bands, transparent over white. Text: `#444444` at Inter 500 / 16px. Padding: `10px 16px`. Radius: 12px.
- Hover: background → `#f0f0f0`. Use: tertiary action, lowest visual weight.
### Cards
**Standard card**
- Background: `#ffffff`. Border: `1px solid #e3e3e3`. Radius: 12px. Padding: 24px. No shadow.
- Use: feature-band content tile; depth via hairline border and tone, not shadow.
**Callout card (document-block)**
- Background: `#fff6ec`. Border: `1px solid #ffe6c9`. Radius: 12px. Padding: 24px.
- Optional left accent bar in `#f8ad40` (highlight) or `#006838` (block green).
- Use: warm-cream notices echoing Coda's in-product callout blocks — the doc flavour.
**Elevated card**
- Background: `#ffffff`. Border: `1px solid #e3e3e3`. Radius: 12px. Padding: 28px.
- Shadow: `rgba(0,0,0,0.06) 0 1px 2px, rgba(0,0,0,0.05) 0 4px 12px`.
- Use: pricing tiers and demo previews that should float above the canvas.
### Badges, Tags, Pills
**Neutral tag**
- Background: `#f0f0f0`. Text: `#444444` at Inter 500 / 13px. Padding: `4px 10px`. Radius: 9999px.
- Use: feature labels, category cues.
**Status badge**
- Background: `#e6efff`. Text: `#0066ff` at Inter 500 / 13px. Padding: `4px 10px`. Radius: 9999px.
- Use: "New", "Beta", inline status callouts.
**Warm doc-block badge**
- Background: `#ffe6c9`. Text: `#9a6400` at Inter 500 / 13px. Padding: `4px 10px`. Radius: 9999px.
- Use: highlight tags that match the cream-callout family.
### Inputs / Forms
**Text input**
- Background: `#ffffff`. Border: `1px solid #cccccc`. Radius: 8px. Padding: `8px 12px`. Font: Inter 400 / 16px.
- Focus: border → `#0066ff`, ring `0 0 0 3px rgba(0,102,255,0.18)`.
- Placeholder colour: `#717171`.
**Search input**
- Background: `#f0f0f0`. Border: none. Radius: 8px. Padding: `8px 12px 8px 36px` (icon-prefixed).
- Focus: background → `#ffffff`, ring `0 0 0 3px rgba(0,102,255,0.18)`.
### Navigation
**Top bar**
- Background: `#ffffff` with `1px solid #e3e3e3` bottom border. Height: 64px.
- Logo at Calibre 700 / 18px. Nav items at Inter 500 / 14px, colour `#212121`.
- Hover: nav item colour → `#0066ff` or background → `#f0f0f0`; no underline shift on the bar.
**Side nav (in-product mockups)**
- Background: `#fafafa`. Border: none. Item padding: `6px 8px`. Radius: 8px on hover background.
- Active item: `#e6efff` fill, `#0066ff` text — the doc-page navigation pattern.
### Tooltips, Toasts, Modals
- **Tooltip**: background `#212121`, text `#ffffff` at Inter 500 / 12px, radius 8px, padding `6px 10px`. Shadow: `rgba(0,0,0,0.12) 0 12px 32px`.
- **Toast**: background `#ffffff`, border `1px solid #e3e3e3`, radius 12px, shadow `popover`. Status icon at left in semantic colour.
- **Modal**: background `#ffffff`, radius 16px, shadow `popover`, backdrop `rgba(33,33,33,0.4)`, padding 32px.
## 5. Layout Principles
### Spacing System
Base unit: 4px. Scale: `[0, 4, 8, 12, 16, 24, 32, 48, 64, 96]`. The 24px gutter is the workhorse, 48px separates stacked feature blocks within a band, and 64–96px separates major bands. Coda runs moderately spaced — looser than dense dashboards, tighter than the most editorial SaaS sites — matching its productivity register where content density matters.
### Grid & Container
- **Page width**: 1280px max, centred.
- **Prose width**: 720px max for editorial text columns.
- **Hero treatment**: hero copy claims roughly 800–900px horizontal; product imagery spans the full container width below.
- **Feature grid**: 3-column at 1024px+, 2-column at 640–1024px, 1-column below 640px. Card gap: 24px.
### Whitespace Philosophy
Whitespace is structural breathing room, not decorative void. Section padding lives between 64–96px on desktop, and inside cards Coda runs 24–28px padding. The page gives the eye a beat between bands, reinforcing the document-page metaphor — each section reads like a distinct block in a well-organised doc.
### Section Cadence
The pattern is light throughout: `light hero → light feature grid → light social-proof → light pricing → light footer`. Visual variety comes from warm-cream callout cards and coloured doc-block accents punctuating the white canvas, not from full-bleed dark bands. The rhythm is calm and consistent — the document never abandons its white page.
## 6. Shapes & Radius Scale
| Tier | Value | Use |
|---|---|---|
| micro | 2px | inline tags, tiny inline pills |
| sm | 4px | small badges, tight UI primitives |
| md | 8px | buttons, inputs, primary CTA pills |
| lg | 12px | cards, callout blocks, secondary panels |
| xl | 16px | modals, emphasis blocks |
| pill | 9999px | badges, avatars, status tags |
Coda's radii are moderate-modern: nothing sharper than 2px, nothing more pillowy than 16px (excluding pills). The 8px button radius and 12px card radius are the brand's most recognisable shape primitives — the same modern-SaaS pairing seen across the productivity-tool lineage. The translucent "Contact sales" button is the one exception, softening to 12px.
## 7. Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| 0 | flat, no shadow, on `#ffffff` | body content, default surfaces |
| 1 | `1px hairline border` (`#e3e3e3`) | standard cards within a feature band |
| 2 | `hairline + ambient shadow` | elevated cards over white |
| 3 | `raised` two-layer shadow | pricing, demo previews, floating panels |
| 4 | `popover` shadow, 12px radius | tooltips, dropdowns, toasts |
| 5 | `popover` shadow + backdrop, 16px radius | modals, lightboxes |
**Shadow Philosophy**: Coda achieves most depth through the hairline `#e3e3e3` border and surface tone (`#ffffff` → `#fafafa` → `#f0f0f0`), reserving shadow for genuinely floating elements — pricing tiers, dropdowns, modals. Shadows are neutral black at very low opacity (`rgba(0,0,0,0.04–0.12)`), never tinted or heavy. The default card treatment is bordered-flat; a card that casts a shadow is a card that is meant to float.
## 8. Interaction & Motion
### Easing
- **standard**: `cubic-bezier(0.4, 0, 0.2, 1)` — the workhorse Material-style ease for most transitions.
- **decelerate**: `cubic-bezier(0, 0, 0.2, 1)` — used when an element enters from off-canvas or a dropdown expands.
### Durations
- **fast** (150ms): button hover colour shift, card hover tint, link underline grow.
- **standard** (240ms): dropdown open, button hover lift, accordion expand.
- **slow** (320ms): modal open, page band cross-fade.
### Per-component micro-states
- **Button hover**: background colour shift over 150ms with `standard` ease; primary black lifts to `#1a1a1a`, blue accent to `#0052cc`. Optional `translateY(-1px)` lift.
- **Card hover**: border deepens (`#e3e3e3` → `#cccccc`) over 150ms; if elevated, shadow intensifies one tier.
- **Link hover**: underline grows over 150ms with `decelerate` ease; colour stays `#0066ff`, never shifts on hover alone.
- **Input focus**: ring fades in at 100ms; border colour shifts to `#0066ff` simultaneously.
### Page transitions
Coda's marketing site keeps transitions quiet — opacity-only fades at roughly 200ms with `standard` ease. No slide, no parallax, no scale. The productivity register favours stillness; the page should feel as calm as an open document.
### Reduced-motion strategy
`prefers-reduced-motion: reduce` is respected: transform-based animations collapse to opacity-only at 100ms, hover lifts disappear, and page transitions become near-instant cuts. The hero remains static rather than animating in.
## 9. Accessibility & A11y
### Contrast pairs (computed)
- **text on bg**: `#212121` on `#ffffff` → 16.1:1 (AAA at all sizes).
- **text-muted on bg**: `#444444` on `#ffffff` → 9.74:1 (AAA at body sizes).
- **on-brand on brand**: `#ffffff` on `#0066ff` → 4.83:1 (AA at body, AAA at large).
- **on-cta on cta-primary**: `#ffffff` on `#000000` → 21.0:1 (AAA, maximum contrast).
- **text on accent**: `#212121` on `#f8ad40` → 8.47:1 (AAA — dark text on the amber highlight is the only safe pairing).
Note: white text on `#f8ad40` fails contrast — always pair the amber highlight with near-black `#212121` text, never white.
### Focus indicators
- **Default focus ring**: `3px solid rgba(0,102,255,0.4)` with 1px offset; never removed for mouse users.
- **Within input fields**: border colour shifts to `#0066ff` and adds a `0 0 0 3px rgba(0,102,255,0.18)` ring.
- **On the black primary CTA**: ring uses an offset white halo plus the blue ring so it reads against the black fill.
### ARIA patterns
- Header search uses `role="combobox"` with `aria-expanded`, `aria-controls`, `aria-activedescendant`.
- Modals use `role="dialog"`, `aria-modal="true"`, focus trap, `Esc` to close.
- Tabs use `role="tablist"` / `role="tab"` / `role="tabpanel"` with arrow-key navigation.
- Pricing toggles use `role="radiogroup"` rather than tabs.
### Keyboard nav order
Top bar → hero CTAs → feature bands in DOM order → pricing → footer. `Tab` order matches visual order. A `Skip to content` link appears at the top of the DOM, visible on focus.
### Screen reader hints
- Decorative doc-block illustrations carry `aria-hidden="true"`.
- Icon-only buttons carry `aria-label` describing the action ("Open menu", "Get started").
- Stat callouts use `aria-label="X million users"` rather than relying on numeral parsing.
### Reduced motion
Honored throughout — see §8.
## 10. Responsive Behavior
### Breakpoints
| Tier | Width | Behavior |
|---|---|---|
| mobile | < 640px | single column, 16px gutter, 48px section padding |
| tablet | 640–1024px | 2-column feature grids, 24px gutter, 64px section padding |
| desktop | 1024–1280px | 3-column feature grids, 24px gutter, 96px section padding |
| wide | 1280px+ | container caps at 1280px, content centred |
### Touch Targets
Minimum 44×44px on touch devices, achieved through padding (10px vertical + 16px font line-height ≈ 44px). Inline links increase tap area through `padding: 8px 0` rather than relying on font line-height alone.
### Collapsing strategy
- **Top nav**: hamburger menu < 1024px; full nav above.
- **Feature grid**: 3 → 2 → 1 columns at 1024 / 640.
- **Hero**: product image moves below copy < 640px; copy claims full width.
- **CTA pair**: primary and secondary stack vertically < 640px, primary on top.
- **Pricing**: tiers stack vertically < 1024px, with the recommended tier highlighted via order shift.
- **Footer**: 4-column → 2-column → 1-column at 1024 / 640.
### Image behavior
Hero and product imagery use `srcset` with 1x/2x densities and `sizes` matched to container width. Below 640px, `object-fit: cover` and a locked `aspect-ratio` keep product screenshots from distorting.
### Container queries
Used inside the in-product side-nav mockups — the nav switches between condensed and expanded modes based on container width rather than viewport.
## 11. Content & Voice
### Tone
Coda's tone is **structured-confident**: clear, practical, and quietly capable. It writes like product documentation that learned to market itself — present tense, plain declaratives, and a focus on what the workspace lets you do rather than how it feels. Headlines name the value directly ("Your all-in-one collaborative workspace.") and sentences favour periods over exclamation marks. The voice is productivity-first: helpful, precise, never breathless.
### Microcopy patterns
- **Button verbs**: "Get started", "Request a demo", "Contact sales". The primary is the generic confident "Get started"; the secondary and tertiary name the sales motion. Verbs are short and action-led.
- **Error messages**: pattern is "Couldn't [action] because [reason]. Try [recovery]." e.g. "Couldn't sync the doc because the connection dropped. Check your network and retry."
- **Success confirmations**: short, declarative, single-line. "Doc created." rather than "Your doc has been created successfully!"
### Empty states
Empty states are practical and inviting rather than cheerful. "No docs yet — start from a template" (link to gallery) or "Your first doc" with an embedded preview. The cream-callout block is a natural home for empty-state guidance. Never empty-state cartoons or "Oops!" copy.
### CTA verb conventions
- **Primary marketing CTA**: "Get started" (the canonical phrase, on the black pill).
- **Demo CTA**: "Request a demo".
- **Sales CTA**: "Contact sales".
- **In-product**: "New doc", "Add page", "Insert block" — verb-plus-noun naming the doc primitive.
## 12. Dark Mode & Theming
Light-only for the marketing surface — no full dark variant is offered. The canvas stays paper-white `#ffffff` throughout, and visual variety comes from warm-cream callouts and coloured doc-block accents rather than dark bands.
The product application ships its own theming with coloured doc blocks (the `--codaBrandGreen #006838`, `--block-color-highlight #f8ad40`, and callout backgrounds observed in the token layer), but the marketing site commits to a single light register. Designers building Coda-style marketing pages should not introduce a dark mode; instead, use the cream-callout family (`#fff6ec` → `#ffe6c9`) and the amber highlight to create warmth and emphasis against the white page.
If a dark surface is genuinely required for a component (for example, a code-block or a footer accent), keep it bounded and exceptional: a near-black `#212121` ground with `#ffffff` text and a lighter blue accent to hold contrast — but treat it as a deliberate one-off, not a system-wide theme.
## 13. Lineage & Influences
Coda sits squarely in the post-Notion document-workspace lineage. Notion defined the marketing register these tools now share — a paper-white canvas treated as a literal page, near-black text that stops short of pure black, and a single restrained accent rather than a multi-hue palette. Coda adopts that register wholesale and then adds its own document-block warmth: the cream-to-peach callouts (`#fff6ec` → `#ffe6c9`), the amber highlight (`#f8ad40`), and the decorative brand green (`#006838`) are the visual residue of Coda's actual product, where coloured blocks and callouts are first-class primitives.
Typographically, Coda speaks the contemporary productivity-tool dialect: Calibre — Klim Type Foundry's geometric-humanist sans, used by Dropbox and a generation of SaaS brands — carries the confident display register, while Inter (Rasmus Andersson's screen-optimised workhorse) handles body and UI. The single confident `#0066ff` blue is a Stripe move — one chromatic event, no hue inflation — and the hairline borders with white-on-white tonal depth place Coda adjacent to Linear. What Coda rejects: gradient-heavy consumer aesthetics, multi-accent palettes, dark default canvases, and drop-shadow elevation as a default. The restraint is the discipline; the cream callout is the surprise; the solid-black CTA is the confident signature that keeps the blue free for content.
**Named influences**
- **Notion** ([notion.com](https://www.notion.com)) — Defined the document-workspace marketing register Coda competes within.
- **Klim Type Foundry — Calibre** ([klim.co.nz](https://klim.co.nz/retail-fonts/calibre/)) — Calibre display face; the confident, neutral-modern headline voice.
- **Inter** ([rsms.me/inter](https://rsms.me/inter/)) — Body and UI typeface; screen-optimised legibility at small sizes.
- **Stripe** ([stripe.com](https://stripe.com)) — Single-blue, trust-via-restraint chromatic discipline.
- **Linear** ([linear.app](https://linear.app)) — Contemporary productivity-SaaS register; hairline borders and white-on-white tonal depth.
## 14. Do's and Don'ts
**Do**
- Keep the canvas paper-white `#ffffff` and the text near-black `#212121`; the restraint is the brand.
- Use Calibre for every headline (600–700 weight) and Inter for all body and UI text; never swap the roles.
- Reserve `#0066ff` blue for links, focus rings, and selective interactive emphasis — one confident chromatic event.
- Make the primary CTA a solid-black `#000000` pill at 8px radius; it keeps the blue free for content.
- Reach for the cream-callout family (`#fff6ec` → `#ffe6c9`) and amber highlight (`#f8ad40`) to add warmth and signal the document-block flavour.
- Pair the amber highlight only with near-black text (`#212121`); white on amber fails contrast.
- Build depth from the hairline `#e3e3e3` border and surface tone first; add shadow only for genuinely floating elements.
- Run hero headlines in Calibre 700 at roughly `-0.02em` tracking; the negative track carries the confident voice.
- Use 8px radius for buttons and inputs, 12px for cards and callouts.
- Honor `prefers-reduced-motion: reduce` — collapse hover lifts and slide-ins to opacity-only.
**Don't**
- Don't introduce a dark default canvas; the marketing surface is light-only.
- Don't use pure black `#000000` for body text — the near-black `#212121` is calibrated for paper-on-paper softness.
- Don't spray the `#0066ff` blue across the page; more than one saturated cool accent breaks the discipline.
- Don't add a second non-blue accent beyond the cream/amber/green doc-block family.
- Don't put white text on the amber highlight (`#f8ad40`) — it fails contrast; use `#212121`.
- Don't apply heavy drop-shadows to default cards; depth here is bordered and tonal.
- Don't replace the solid-black primary CTA with a blue one as the default; the black pill is the signature.
- Don't break the hairline-border discipline with thick or saturated dividers.
- Don't reach for gradient-heavy consumer aesthetics; Coda is structured, not flashy.
- Don't run Calibre below 600 weight for headlines; the confident voice needs the weight.
## 15. Agent Prompt Guide
### Quick Color Reference
```
bg: #ffffff
surface-muted: #f0f0f0
text: #212121
text-muted: #444444
brand: #0066ff
brand-hover: #0052cc
brand-soft: #e6efff
cta-primary: #000000
accent (amber highlight): #f8ad40
accent-cream: #fff6ec
accent-callout: #ffe6c9
border: #e3e3e3
```
### Example Component Prompts
1. "Create a marketing hero in the Coda style: paper-white `#ffffff` canvas, Calibre 72px / 700 weight headline in `#212121` with `-0.02em` tracking, 18px subhead at Inter 400 in `#444444`, a solid-black primary CTA pill (`#000000` background, white text, 8px radius, `10px 16px` padding) reading 'Get started', and an outlined secondary button (`#ffffff` background, `1px solid #cccccc`, `#212121` text) reading 'Request a demo'."
2. "Design a feature card in the Coda style: `#ffffff` background, 12px radius, `1px solid #e3e3e3` hairline border, 24px padding, Calibre 600 / 22px H4 title in `#212121`, body at Inter 400 / 16px in `#212121`, no drop-shadow."
3. "Render a document-block callout: warm-cream `#fff6ec` background, `1px solid #ffe6c9` border, 12px radius, 24px padding, a `#f8ad40` amber accent bar on the left edge, body text in Inter 400 / 16px `#212121`."
4. "Create a pricing tier card: `#ffffff` background, `1px solid #e3e3e3` hairline, 12px radius, 28px padding, raised shadow (`rgba(0,0,0,0.06) 0 1px 2px, rgba(0,0,0,0.05) 0 4px 12px`), tier name in Calibre 600 / 20px, price in Calibre 700 / 48px, feature list in Inter 16px / 1.55 with `#0066ff` bullet markers, and a solid-black 'Get started' CTA pill."
5. "Design a top navigation bar: `#ffffff` background with `1px solid #e3e3e3` bottom border, 64px height, Calibre 700 / 18px logo, Inter 500 / 14px nav items in `#212121` that turn `#0066ff` on hover, and a solid-black 'Get started' pill at the right."
6. "Render a status badge row: a neutral pill (`#f0f0f0` background, `#444444` Inter 500 / 13px text, 9999px radius) and a blue status pill (`#e6efff` background, `#0066ff` text) and a warm doc-block pill (`#ffe6c9` background, `#9a6400` text), each at `4px 10px` padding."
### Iteration Guide
1. **Start with the canvas**: confirm the `#ffffff` paper-white base and the 8px / 12px button-card radius pair. If it looks too consumer, you have likely added gradient or saturation.
2. **Verify the type pairing**: headlines must be Calibre at 600–700; body and UI must be Inter. If a headline reads soft, tighten the track toward `-0.02em` and confirm it is Calibre, not Inter.
3. **Audit the action colour**: the `#0066ff` blue should appear only on links, focus, and selective emphasis — and the primary CTA should be solid black `#000000`. If the page has two saturated blues, one is wrong.
4. **Check the near-black**: body text is `#212121`, never pure `#000`. If your text looks harsh, you have drifted to full black.
5. **Add the doc-block warmth**: every page benefits from one cream callout (`#fff6ec` / `#ffe6c9`) or amber highlight (`#f8ad40`) to signal the document-tool flavour. An all-blue-and-white page reads as generic SaaS.
6. **Confirm the border treatment**: dividers and default cards use a `#e3e3e3` hairline, not shadow. If you see drop-shadows on resting cards, remove them.
7. **Test the contrast on amber**: amber highlights (`#f8ad40`) must carry near-black `#212121` text, never white — white fails WCAG on amber.
8. **Check the reduced-motion path**: hover lifts and slide-ins should collapse to opacity-only when `prefers-reduced-motion: reduce` is set.
1. Visual Theme & Atmosphere
Coda’s marketing surface presents the all-in-one collaborative workspace as a literal page. The base canvas is paper-white #ffffff, the text sits at a near-black #212121 (rgb 33, 33, 33) that deliberately stops short of pure black, and the whole composition reads productivity-first: calm, legible, and structured. Where a consumer brand would reach for gradient and saturation, Coda reaches for whitespace and a single decisive accent. The page feels like an empty Coda doc waiting to be filled — which is exactly the metaphor.
The type does the heavy lifting. Calibre — the Klim Type Foundry geometric-humanist sans — carries the display register, hitting 72px at 700 weight for the hero headline with a tight negative track that gives it a confident, neutral-modern voice. Inter handles body and UI text, including the 14px base size observed across the chrome. This Calibre-display / Inter-body pairing is the contemporary productivity-tool dialect; it places Coda firmly alongside Linear, Vercel, and Stripe rather than the consumer-app crowd. The headlines feel engineered rather than decorated.
Chromatically the system is disciplined to the point of austerity, then warmed in one place. The action colour is a single confident #0066ff blue — re-probed from the SVG layer, used for links, focus rings, and interactive emphasis but never sprayed across the page. Primary CTAs (“Get started”) are solid black #000000 pills at 8px radius, a high-contrast choice that keeps the blue free for content and navigation. Secondary CTAs (“Request a demo”) are outlined white pills at the same 8px; the translucent tertiary (“Contact sales”) softens to a 12px radius and a muted #444444 label.
The one place Coda lets warmth in is the document-block flavour. Callouts render in a cream-to-peach family — #fff6ec cream, #ffe6c9 peach callout fill, #f0e5dc warm sand — accented by an amber highlight (#f8ad40) and a decorative brand green (#006838). These are the visual residue of Coda’s actual product, where callouts, highlights, and coloured doc blocks are first-class primitives. On the marketing surface they appear as occasional warm accents against the cool white-and-blue scaffolding, signalling “this is a structured document tool” without ever overwhelming the restraint.
The net atmosphere is calm productivity: a white page, near-black confident type, one trustworthy blue, and a thread of document-block warmth. It is the visual equivalent of a well-organised workspace — nothing shouts, everything has a place.
Key Characteristics
- Paper-white
#ffffffcanvas treated as a literal document page - Calibre display face (72px / 700 hero) over Inter for body and UI
- Near-black
#212121text that never hits pure#000 - Solid-black
#000000primary CTA pills at 8px radius - Single confident
#0066ffblue for links, focus, and interactive emphasis - Warm-cream document-block callouts (
#fff6ec→#ffe6c9) as the only non-blue chroma - Amber highlight (
#f8ad40) and decorative brand green (#006838) from the product palette - Hairline
#e3e3e3borders; depth via tone and border, not shadow - 12px card radius, 8px button radius, 9999px pill for badges
- Productivity-first, structured register — restrained, legible, never loud
2. Color Palette & Roles
Canvas & Surface
- bg (
#ffffff): paper-white canvas; the document page made literal. - surface (
#ffffff): cards default to white, with depth carried by border and tone rather than fill. - surface-soft (
#fafafa): softest panel tint, a half-step off pure white. - surface-muted (
#f0f0f0) [→--neutral200]: neutral panel and block ground; the workhorse grey.
Text
- text (
#212121) [→ rgb(33,33,33)]: near-black body text; calibrated for paper-on-paper softness, never pure black. - text-muted (
#444444) [→ rgb(68,68,68)]: secondary CTA labels, metadata, supporting copy. - text-faint (
#717171): tertiary captions, timestamps, placeholder text.
Brand & Accent
- brand (
#0066ff) [→ rgb(0,102,255)]: single confident action and link blue; the only saturated cool chroma on the page. - brand-hover (
#0052cc): pressed/hover step into a deeper blue. - brand-soft (
#e6efff): soft action tint for selection states and info banners. - cta-primary (
#000000): solid-black primary “Get started” pill fill. - accent (
#f8ad40) [→--block-color-highlight]: warm amber highlight from the doc-block palette. - accent-cream (
#fff6ec): warmest callout/cream surface tint. - accent-callout (
#ffe6c9) [→--block-callout-background]: peach callout fill for document-block notices. - accent-warm (
#f0e5dc) [→--block-color-accent-light]: warm sand panel tint. - block-green (
#006838) [→--codaBrandGreen]: decorative document-block green; never an action colour.
Interactive
- link: identical to
brand(#0066ff); the action blue and the link blue are deliberately the same hue. - link-hover:
brand-hover(#0052cc); link gains underline at hover, never colour shift alone. - selected:
brand-soft(#e6efff) fill,brandtext. - disabled:
text-faint(#717171) onsurface-muted(#f0f0f0).
Borders
- border (
#e3e3e3): standard hairline divider on white; the universal separator. - border-soft (
#ededed): lighter nested divider and table-row line. - border-strong (
#cccccc): emphasised divider and form-field border.
Shadow Colors
- ambient:
rgba(0,0,0,0.04) 0 1px 2px— barely-there resting shadow for elevated cards. - raised: two-layer neutral shadow (
0 1px 2px+0 4px 12px) for floating panels. - popover: deeper multi-layer shadow for menus and tooltips.
Note: Coda’s shadows are neutral black at very low opacity — depth is achieved primarily through the hairline border and surface tone, with shadow reserved for genuinely floating elements.
Semantic
- success (
#1a7f4b) on success-bg (#e7f4ec): confident editorial green, never a saturated chartreuse. - warning (
#9a6400) on warning-bg (#fff3df): warm amber-brown that harmonises with the cream callouts, not yellow. - danger (
#c0392b) on danger-bg (#fbeae8): restrained brick red, never crayon-red. - info (
#0066ff) on info-bg (#e6efff): info reuses the action blue; the system avoids inventing a separate info hue.
3. Typography Rules
Font Family
- Display: Calibre-R → system-ui → -apple-system → Segoe UI → Helvetica → Arial → sans-serif. Calibre carries every headline; its geometric-humanist forms give the display register a confident, neutral-modern voice.
- Body & UI: Inter → system-ui → -apple-system → Segoe UI → Helvetica → Arial → sans-serif. Inter handles body copy and the 14px UI base; it is the screen-optimised workhorse that keeps small text crisp.
- Mono: ui-monospace → SFMono-Regular → SF Mono → Menlo → Consolas → monospace. Reserved for code blocks, formula snippets, and tabular data echoing Coda’s doc primitives.
Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| display-hero | Calibre | 72 | 700 | 1.0 | -0.02em | the observed hero size — confident, tightly tracked |
| display-lg | Calibre | 56 | 700 | 1.05 | -0.018em | secondary heroes |
| h1 | Calibre | 48 | 700 | 1.1 | -0.015em | primary section heads |
| h2 | Calibre | 38 | 700 | 1.15 | -0.012em | feature-band heads (observed) |
| h3 | Calibre | 28 | 600 | 1.25 | -0.008em | sub-feature heads |
| h4 | Calibre | 22 | 600 | 1.3 | -0.004em | card heads |
| h5 | Inter | 18 | 600 | 1.35 | 0 | inline emphasis heads |
| h6 | Inter | 16 | 600 | 1.4 | 0 | label-grade heads |
| body-lg | Inter | 18 | 400 | 1.55 | 0 | hero subheads |
| body | Inter | 16 | 400 | 1.55 | 0 | default reading size |
| body-ui | Inter | 14 | 400 | 1.5 | 0 | chrome/UI base (observed) |
| body-sm | Inter | 13 | 400 | 1.5 | 0 | secondary copy |
| label | Inter | 13 | 500 | 1.4 | 0.01em | form labels, eyebrows |
| caption | Inter | 12 | 500 | 1.4 | 0.02em | image and chart captions |
| code | mono | 13 | 400 | 1.5 | 0 | inline + block code |
Principles
- Calibre declares, Inter informs: headlines belong to Calibre at 600–700 weight; everything readable at a glance and below — body, UI, captions — belongs to Inter. The two faces are never swapped.
- Negative tracking at display scale: hero copy tightens to roughly
-0.02em; without that compression Calibre at 700 reads as competent rather than declarative. - Near-black, not black: body text holds at
#212121rather than#000000— a deliberate softening that reduces glare on the white canvas and keeps long reads comfortable. - 14px UI base: chrome, navigation, and dense UI run at Inter 14px; the marketing body steps up to 16px for hero subheads and prose.
- Weight, not colour, for emphasis: hierarchy is built from Calibre/Inter weight steps and size, not from colour shifts — colour stays reserved for the blue accent.
- Generous line-height for prose: body copy runs 1.55 line-height, giving the document-page register its breathing room.
4. Component Stylings
Buttons
Primary — “Get started”
- Background:
#000000. Text:#ffffffat Inter 600 / 16px. Padding:10px 16px. Radius: 8px. Border: none. - Hover: background →
#1a1a1a. Active: background →#000000with the focus ring. - Use: the canonical primary action; solid black keeps the blue free for links.
Secondary — “Request a demo”
- Background:
#ffffff. Text:#212121at Inter 600 / 16px. Padding:10px 16px. Radius: 8px. Border:1px solid #cccccc. - Hover: background →
#fafafa, border →#b3b3b3. Use: secondary action paired beside the black primary.
Accent — blue action
- Background:
#0066ff. Text:#ffffffat Inter 600 / 16px. Padding:10px 16px. Radius: 8px. Border: none. - Hover: background →
#0052cc. Use: where the brand colour earns emphasis (in-doc CTAs, feature highlights). Use sparingly so the single-blue discipline holds.
Ghost / translucent — “Contact sales”
- Background:
rgba(255,255,255,0.85)over coloured bands, transparent over white. Text:#444444at Inter 500 / 16px. Padding:10px 16px. Radius: 12px. - Hover: background →
#f0f0f0. Use: tertiary action, lowest visual weight.
Cards
Standard card
- Background:
#ffffff. Border:1px solid #e3e3e3. Radius: 12px. Padding: 24px. No shadow. - Use: feature-band content tile; depth via hairline border and tone, not shadow.
Callout card (document-block)
- Background:
#fff6ec. Border:1px solid #ffe6c9. Radius: 12px. Padding: 24px. - Optional left accent bar in
#f8ad40(highlight) or#006838(block green). - Use: warm-cream notices echoing Coda’s in-product callout blocks — the doc flavour.
Elevated card
- Background:
#ffffff. Border:1px solid #e3e3e3. Radius: 12px. Padding: 28px. - Shadow:
rgba(0,0,0,0.06) 0 1px 2px, rgba(0,0,0,0.05) 0 4px 12px. - Use: pricing tiers and demo previews that should float above the canvas.
Badges, Tags, Pills
Neutral tag
- Background:
#f0f0f0. Text:#444444at Inter 500 / 13px. Padding:4px 10px. Radius: 9999px. - Use: feature labels, category cues.
Status badge
- Background:
#e6efff. Text:#0066ffat Inter 500 / 13px. Padding:4px 10px. Radius: 9999px. - Use: “New”, “Beta”, inline status callouts.
Warm doc-block badge
- Background:
#ffe6c9. Text:#9a6400at Inter 500 / 13px. Padding:4px 10px. Radius: 9999px. - Use: highlight tags that match the cream-callout family.
Inputs / Forms
Text input
- Background:
#ffffff. Border:1px solid #cccccc. Radius: 8px. Padding:8px 12px. Font: Inter 400 / 16px. - Focus: border →
#0066ff, ring0 0 0 3px rgba(0,102,255,0.18). - Placeholder colour:
#717171.
Search input
- Background:
#f0f0f0. Border: none. Radius: 8px. Padding:8px 12px 8px 36px(icon-prefixed). - Focus: background →
#ffffff, ring0 0 0 3px rgba(0,102,255,0.18).
Navigation
Top bar
- Background:
#ffffffwith1px solid #e3e3e3bottom border. Height: 64px. - Logo at Calibre 700 / 18px. Nav items at Inter 500 / 14px, colour
#212121. - Hover: nav item colour →
#0066ffor background →#f0f0f0; no underline shift on the bar.
Side nav (in-product mockups)
- Background:
#fafafa. Border: none. Item padding:6px 8px. Radius: 8px on hover background. - Active item:
#e6effffill,#0066fftext — the doc-page navigation pattern.
Tooltips, Toasts, Modals
- Tooltip: background
#212121, text#ffffffat Inter 500 / 12px, radius 8px, padding6px 10px. Shadow:rgba(0,0,0,0.12) 0 12px 32px. - Toast: background
#ffffff, border1px solid #e3e3e3, radius 12px, shadowpopover. Status icon at left in semantic colour. - Modal: background
#ffffff, radius 16px, shadowpopover, backdroprgba(33,33,33,0.4), padding 32px.
5. Layout Principles
Spacing System
Base unit: 4px. Scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96]. The 24px gutter is the workhorse, 48px separates stacked feature blocks within a band, and 64–96px separates major bands. Coda runs moderately spaced — looser than dense dashboards, tighter than the most editorial SaaS sites — matching its productivity register where content density matters.
Grid & Container
- Page width: 1280px max, centred.
- Prose width: 720px max for editorial text columns.
- Hero treatment: hero copy claims roughly 800–900px horizontal; product imagery spans the full container width below.
- Feature grid: 3-column at 1024px+, 2-column at 640–1024px, 1-column below 640px. Card gap: 24px.
Whitespace Philosophy
Whitespace is structural breathing room, not decorative void. Section padding lives between 64–96px on desktop, and inside cards Coda runs 24–28px padding. The page gives the eye a beat between bands, reinforcing the document-page metaphor — each section reads like a distinct block in a well-organised doc.
Section Cadence
The pattern is light throughout: light hero → light feature grid → light social-proof → light pricing → light footer. Visual variety comes from warm-cream callout cards and coloured doc-block accents punctuating the white canvas, not from full-bleed dark bands. The rhythm is calm and consistent — the document never abandons its white page.
6. Shapes & Radius Scale
| Tier | Value | Use |
|---|---|---|
| micro | 2px | inline tags, tiny inline pills |
| sm | 4px | small badges, tight UI primitives |
| md | 8px | buttons, inputs, primary CTA pills |
| lg | 12px | cards, callout blocks, secondary panels |
| xl | 16px | modals, emphasis blocks |
| pill | 9999px | badges, avatars, status tags |
Coda’s radii are moderate-modern: nothing sharper than 2px, nothing more pillowy than 16px (excluding pills). The 8px button radius and 12px card radius are the brand’s most recognisable shape primitives — the same modern-SaaS pairing seen across the productivity-tool lineage. The translucent “Contact sales” button is the one exception, softening to 12px.
7. Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| 0 | flat, no shadow, on #ffffff | body content, default surfaces |
| 1 | 1px hairline border (#e3e3e3) | standard cards within a feature band |
| 2 | hairline + ambient shadow | elevated cards over white |
| 3 | raised two-layer shadow | pricing, demo previews, floating panels |
| 4 | popover shadow, 12px radius | tooltips, dropdowns, toasts |
| 5 | popover shadow + backdrop, 16px radius | modals, lightboxes |
Shadow Philosophy: Coda achieves most depth through the hairline #e3e3e3 border and surface tone (#ffffff → #fafafa → #f0f0f0), reserving shadow for genuinely floating elements — pricing tiers, dropdowns, modals. Shadows are neutral black at very low opacity (rgba(0,0,0,0.04–0.12)), never tinted or heavy. The default card treatment is bordered-flat; a card that casts a shadow is a card that is meant to float.
8. Interaction & Motion
Easing
- standard:
cubic-bezier(0.4, 0, 0.2, 1)— the workhorse Material-style ease for most transitions. - decelerate:
cubic-bezier(0, 0, 0.2, 1)— used when an element enters from off-canvas or a dropdown expands.
Durations
- fast (150ms): button hover colour shift, card hover tint, link underline grow.
- standard (240ms): dropdown open, button hover lift, accordion expand.
- slow (320ms): modal open, page band cross-fade.
Per-component micro-states
- Button hover: background colour shift over 150ms with
standardease; primary black lifts to#1a1a1a, blue accent to#0052cc. OptionaltranslateY(-1px)lift. - Card hover: border deepens (
#e3e3e3→#cccccc) over 150ms; if elevated, shadow intensifies one tier. - Link hover: underline grows over 150ms with
decelerateease; colour stays#0066ff, never shifts on hover alone. - Input focus: ring fades in at 100ms; border colour shifts to
#0066ffsimultaneously.
Page transitions
Coda’s marketing site keeps transitions quiet — opacity-only fades at roughly 200ms with standard ease. No slide, no parallax, no scale. The productivity register favours stillness; the page should feel as calm as an open document.
Reduced-motion strategy
prefers-reduced-motion: reduce is respected: transform-based animations collapse to opacity-only at 100ms, hover lifts disappear, and page transitions become near-instant cuts. The hero remains static rather than animating in.
9. Accessibility & A11y
Contrast pairs (computed)
- text on bg:
#212121on#ffffff→ 16.1:1 (AAA at all sizes). - text-muted on bg:
#444444on#ffffff→ 9.74:1 (AAA at body sizes). - on-brand on brand:
#ffffffon#0066ff→ 4.83:1 (AA at body, AAA at large). - on-cta on cta-primary:
#ffffffon#000000→ 21.0:1 (AAA, maximum contrast). - text on accent:
#212121on#f8ad40→ 8.47:1 (AAA — dark text on the amber highlight is the only safe pairing).
Note: white text on #f8ad40 fails contrast — always pair the amber highlight with near-black #212121 text, never white.
Focus indicators
- Default focus ring:
3px solid rgba(0,102,255,0.4)with 1px offset; never removed for mouse users. - Within input fields: border colour shifts to
#0066ffand adds a0 0 0 3px rgba(0,102,255,0.18)ring. - On the black primary CTA: ring uses an offset white halo plus the blue ring so it reads against the black fill.
ARIA patterns
- Header search uses
role="combobox"witharia-expanded,aria-controls,aria-activedescendant. - Modals use
role="dialog",aria-modal="true", focus trap,Escto close. - Tabs use
role="tablist"/role="tab"/role="tabpanel"with arrow-key navigation. - Pricing toggles use
role="radiogroup"rather than tabs.
Keyboard nav order
Top bar → hero CTAs → feature bands in DOM order → pricing → footer. Tab order matches visual order. A Skip to content link appears at the top of the DOM, visible on focus.
Screen reader hints
- Decorative doc-block illustrations carry
aria-hidden="true". - Icon-only buttons carry
aria-labeldescribing the action (“Open menu”, “Get started”). - Stat callouts use
aria-label="X million users"rather than relying on numeral parsing.
Reduced motion
Honored throughout — see §8.
10. Responsive Behavior
Breakpoints
| Tier | Width | Behavior |
|---|---|---|
| mobile | < 640px | single column, 16px gutter, 48px section padding |
| tablet | 640–1024px | 2-column feature grids, 24px gutter, 64px section padding |
| desktop | 1024–1280px | 3-column feature grids, 24px gutter, 96px section padding |
| wide | 1280px+ | container caps at 1280px, content centred |
Touch Targets
Minimum 44×44px on touch devices, achieved through padding (10px vertical + 16px font line-height ≈ 44px). Inline links increase tap area through padding: 8px 0 rather than relying on font line-height alone.
Collapsing strategy
- Top nav: hamburger menu < 1024px; full nav above.
- Feature grid: 3 → 2 → 1 columns at 1024 / 640.
- Hero: product image moves below copy < 640px; copy claims full width.
- CTA pair: primary and secondary stack vertically < 640px, primary on top.
- Pricing: tiers stack vertically < 1024px, with the recommended tier highlighted via order shift.
- Footer: 4-column → 2-column → 1-column at 1024 / 640.
Image behavior
Hero and product imagery use srcset with 1x/2x densities and sizes matched to container width. Below 640px, object-fit: cover and a locked aspect-ratio keep product screenshots from distorting.
Container queries
Used inside the in-product side-nav mockups — the nav switches between condensed and expanded modes based on container width rather than viewport.
11. Content & Voice
Tone
Coda’s tone is structured-confident: clear, practical, and quietly capable. It writes like product documentation that learned to market itself — present tense, plain declaratives, and a focus on what the workspace lets you do rather than how it feels. Headlines name the value directly (“Your all-in-one collaborative workspace.”) and sentences favour periods over exclamation marks. The voice is productivity-first: helpful, precise, never breathless.
Microcopy patterns
- Button verbs: “Get started”, “Request a demo”, “Contact sales”. The primary is the generic confident “Get started”; the secondary and tertiary name the sales motion. Verbs are short and action-led.
- Error messages: pattern is “Couldn’t [action] because [reason]. Try [recovery].” e.g. “Couldn’t sync the doc because the connection dropped. Check your network and retry.”
- Success confirmations: short, declarative, single-line. “Doc created.” rather than “Your doc has been created successfully!”
Empty states
Empty states are practical and inviting rather than cheerful. “No docs yet — start from a template” (link to gallery) or “Your first doc” with an embedded preview. The cream-callout block is a natural home for empty-state guidance. Never empty-state cartoons or “Oops!” copy.
CTA verb conventions
- Primary marketing CTA: “Get started” (the canonical phrase, on the black pill).
- Demo CTA: “Request a demo”.
- Sales CTA: “Contact sales”.
- In-product: “New doc”, “Add page”, “Insert block” — verb-plus-noun naming the doc primitive.
12. Dark Mode & Theming
Light-only for the marketing surface — no full dark variant is offered. The canvas stays paper-white #ffffff throughout, and visual variety comes from warm-cream callouts and coloured doc-block accents rather than dark bands.
The product application ships its own theming with coloured doc blocks (the --codaBrandGreen #006838, --block-color-highlight #f8ad40, and callout backgrounds observed in the token layer), but the marketing site commits to a single light register. Designers building Coda-style marketing pages should not introduce a dark mode; instead, use the cream-callout family (#fff6ec → #ffe6c9) and the amber highlight to create warmth and emphasis against the white page.
If a dark surface is genuinely required for a component (for example, a code-block or a footer accent), keep it bounded and exceptional: a near-black #212121 ground with #ffffff text and a lighter blue accent to hold contrast — but treat it as a deliberate one-off, not a system-wide theme.
13. Lineage & Influences
Coda sits squarely in the post-Notion document-workspace lineage. Notion defined the marketing register these tools now share — a paper-white canvas treated as a literal page, near-black text that stops short of pure black, and a single restrained accent rather than a multi-hue palette. Coda adopts that register wholesale and then adds its own document-block warmth: the cream-to-peach callouts (#fff6ec → #ffe6c9), the amber highlight (#f8ad40), and the decorative brand green (#006838) are the visual residue of Coda’s actual product, where coloured blocks and callouts are first-class primitives.
Typographically, Coda speaks the contemporary productivity-tool dialect: Calibre — Klim Type Foundry’s geometric-humanist sans, used by Dropbox and a generation of SaaS brands — carries the confident display register, while Inter (Rasmus Andersson’s screen-optimised workhorse) handles body and UI. The single confident #0066ff blue is a Stripe move — one chromatic event, no hue inflation — and the hairline borders with white-on-white tonal depth place Coda adjacent to Linear. What Coda rejects: gradient-heavy consumer aesthetics, multi-accent palettes, dark default canvases, and drop-shadow elevation as a default. The restraint is the discipline; the cream callout is the surprise; the solid-black CTA is the confident signature that keeps the blue free for content.
Named influences
- Notion (notion.com) — Defined the document-workspace marketing register Coda competes within.
- Klim Type Foundry — Calibre (klim.co.nz) — Calibre display face; the confident, neutral-modern headline voice.
- Inter (rsms.me/inter) — Body and UI typeface; screen-optimised legibility at small sizes.
- Stripe (stripe.com) — Single-blue, trust-via-restraint chromatic discipline.
- Linear (linear.app) — Contemporary productivity-SaaS register; hairline borders and white-on-white tonal depth.
14. Do’s and Don’ts
Do
- Keep the canvas paper-white
#ffffffand the text near-black#212121; the restraint is the brand. - Use Calibre for every headline (600–700 weight) and Inter for all body and UI text; never swap the roles.
- Reserve
#0066ffblue for links, focus rings, and selective interactive emphasis — one confident chromatic event. - Make the primary CTA a solid-black
#000000pill at 8px radius; it keeps the blue free for content. - Reach for the cream-callout family (
#fff6ec→#ffe6c9) and amber highlight (#f8ad40) to add warmth and signal the document-block flavour. - Pair the amber highlight only with near-black text (
#212121); white on amber fails contrast. - Build depth from the hairline
#e3e3e3border and surface tone first; add shadow only for genuinely floating elements. - Run hero headlines in Calibre 700 at roughly
-0.02emtracking; the negative track carries the confident voice. - Use 8px radius for buttons and inputs, 12px for cards and callouts.
- Honor
prefers-reduced-motion: reduce— collapse hover lifts and slide-ins to opacity-only.
Don’t
- Don’t introduce a dark default canvas; the marketing surface is light-only.
- Don’t use pure black
#000000for body text — the near-black#212121is calibrated for paper-on-paper softness. - Don’t spray the
#0066ffblue across the page; more than one saturated cool accent breaks the discipline. - Don’t add a second non-blue accent beyond the cream/amber/green doc-block family.
- Don’t put white text on the amber highlight (
#f8ad40) — it fails contrast; use#212121. - Don’t apply heavy drop-shadows to default cards; depth here is bordered and tonal.
- Don’t replace the solid-black primary CTA with a blue one as the default; the black pill is the signature.
- Don’t break the hairline-border discipline with thick or saturated dividers.
- Don’t reach for gradient-heavy consumer aesthetics; Coda is structured, not flashy.
- Don’t run Calibre below 600 weight for headlines; the confident voice needs the weight.
15. Agent Prompt Guide
Quick Color Reference
bg: #ffffff
surface-muted: #f0f0f0
text: #212121
text-muted: #444444
brand: #0066ff
brand-hover: #0052cc
brand-soft: #e6efff
cta-primary: #000000
accent (amber highlight): #f8ad40
accent-cream: #fff6ec
accent-callout: #ffe6c9
border: #e3e3e3
Example Component Prompts
-
“Create a marketing hero in the Coda style: paper-white
#ffffffcanvas, Calibre 72px / 700 weight headline in#212121with-0.02emtracking, 18px subhead at Inter 400 in#444444, a solid-black primary CTA pill (#000000background, white text, 8px radius,10px 16pxpadding) reading ‘Get started’, and an outlined secondary button (#ffffffbackground,1px solid #cccccc,#212121text) reading ‘Request a demo’.” -
“Design a feature card in the Coda style:
#ffffffbackground, 12px radius,1px solid #e3e3e3hairline border, 24px padding, Calibre 600 / 22px H4 title in#212121, body at Inter 400 / 16px in#212121, no drop-shadow.” -
“Render a document-block callout: warm-cream
#fff6ecbackground,1px solid #ffe6c9border, 12px radius, 24px padding, a#f8ad40amber accent bar on the left edge, body text in Inter 400 / 16px#212121.” -
“Create a pricing tier card:
#ffffffbackground,1px solid #e3e3e3hairline, 12px radius, 28px padding, raised shadow (rgba(0,0,0,0.06) 0 1px 2px, rgba(0,0,0,0.05) 0 4px 12px), tier name in Calibre 600 / 20px, price in Calibre 700 / 48px, feature list in Inter 16px / 1.55 with#0066ffbullet markers, and a solid-black ‘Get started’ CTA pill.” -
“Design a top navigation bar:
#ffffffbackground with1px solid #e3e3e3bottom border, 64px height, Calibre 700 / 18px logo, Inter 500 / 14px nav items in#212121that turn#0066ffon hover, and a solid-black ‘Get started’ pill at the right.” -
“Render a status badge row: a neutral pill (
#f0f0f0background,#444444Inter 500 / 13px text, 9999px radius) and a blue status pill (#e6efffbackground,#0066fftext) and a warm doc-block pill (#ffe6c9background,#9a6400text), each at4px 10pxpadding.”
Iteration Guide
- Start with the canvas: confirm the
#ffffffpaper-white base and the 8px / 12px button-card radius pair. If it looks too consumer, you have likely added gradient or saturation. - Verify the type pairing: headlines must be Calibre at 600–700; body and UI must be Inter. If a headline reads soft, tighten the track toward
-0.02emand confirm it is Calibre, not Inter. - Audit the action colour: the
#0066ffblue should appear only on links, focus, and selective emphasis — and the primary CTA should be solid black#000000. If the page has two saturated blues, one is wrong. - Check the near-black: body text is
#212121, never pure#000. If your text looks harsh, you have drifted to full black. - Add the doc-block warmth: every page benefits from one cream callout (
#fff6ec/#ffe6c9) or amber highlight (#f8ad40) to signal the document-tool flavour. An all-blue-and-white page reads as generic SaaS. - Confirm the border treatment: dividers and default cards use a
#e3e3e3hairline, not shadow. If you see drop-shadows on resting cards, remove them. - Test the contrast on amber: amber highlights (
#f8ad40) must carry near-black#212121text, never white — white fails WCAG on amber. - Check the reduced-motion path: hover lifts and slide-ins should collapse to opacity-only when
prefers-reduced-motion: reduceis set.
Drop coda into your project, then ship the actual sections in an afternoon.
npx @webdesignhot/design-md add coda npx agentkit init --design coda