Overview
Webflow positions itself as the visual web development platform — the marketing surface reads as a confident professional product, not a tech startup. The default page is a generous white canvas ({colors.canvas}) with a deep near-black {colors.primary} (#080808) for the brand's primary CTA, typography, and ink. Around this restrained primary, the brand layers a five-stop chromatic accent system — {colors.accent-purple} #7a3dff, {colors.accent-pink} #ed52cb, {colors.accent-blue} #3b89ff, {colors.accent-orange} #ff6b00, {colors.accent-green} #00d722 — each mapped to one of the platform's product categories (design, CMS, hosting, ecommerce, etc.). These accents appear as full-card fills inside the product-category grid, not as button colours; the brand's primary CTA stays near-black.
Type carries the second decisive voice. The proprietary WF Visual Sans Variable family carries every display, body, and label role at weight 500 / 600 — the brand never goes heavier than semibold, never lighter than regular. Hero display sits at 80 px / weight 600 / -0.8 px tracking — confident but not shouting. Uppercase eyebrows in 15 px weight 500 with 1.5 px positive tracking mark every section header.
The shape system is restrained. Buttons take a tight {rounded.sm} 4 px radius — neither pill nor square; the brand reads as engineered. Cards step up to {rounded.md} 8 px. Pill ({rounded.full} 9999 px) is reserved for circular icon containers. Layered drop-shadows on featured cards add modest elevation but never feel material-heavy.
Key Characteristics:
- A two-colour conversion hierarchy —
{colors.primary} near-black for every primary CTA, white-on-hairline for every secondary. Chromatic accents are used as full surface fills on category cards, never as button backgrounds.
- The brand's signature is its five-stop chromatic category palette: purple / pink / blue / orange / green, each tied to a product surface. Used at full saturation as card fills.
- Hero typography at 80 px weight 600 with
-0.8 px tracking — restrained, confident, never billboard-loud.
- WF Visual Sans Variable is the single family; the brand uses no separate sans for body / display. WFVisualSans-Mono / Inconsolata appears only for technical captions.
- Tight
{rounded.sm} 4 px button geometry; cards at {rounded.md} 8 px. The brand never uses pill CTAs.
- Layered multi-offset drop-shadows on featured cards — the brand's only elevation cue.
Colors
Brand & Accent
- Ink Black (
{colors.primary} — #080808): The brand's primary conversion colour. Every primary CTA, every heading, every wordmark. Deeper than pure black to read as branded.
- Accent Purple (
{colors.accent-purple} — #7a3dff): One of the five chromatic category accents — used for design / build product surfaces.
- Accent Pink (
{colors.accent-pink} — #ed52cb): Magenta accent — used for animation / interaction product surfaces.
- Accent Blue (
{colors.accent-blue} — #3b89ff): Bright cyan-blue — used for SEO / analytics product surfaces.
- Accent Blue Deep (
{colors.accent-blue-deep} — #006acc): The deeper blue used for emphasis links.
- Accent Blue Info (
{colors.accent-blue-info} — #146ef5): The badge-info blue.
- Accent Orange (
{colors.accent-orange} — #ff6b00): Used for hosting / infrastructure product surfaces.
- Accent Green (
{colors.accent-green} — #00d722): Used for ecommerce / status-success surfaces.
- Accent Yellow (
{colors.accent-yellow} — #ffae13): Used for warning / collaboration product surfaces.
- Accent Red (
{colors.accent-red} — #ee1d36): Used for error / destructive states.
Surface
- Canvas (
{colors.canvas} — #ffffff): The default page background.
- Hairline (
{colors.hairline} — #d8d8d8): 1 px solid borders — input borders, card chrome, divider lines.
Text
- Ink (
{colors.ink} — #080808): Default text and headings.
- Ink Strong (
{colors.ink-strong} — #222222): Near-black emphasis.
- Body (
{colors.body} — #363636): Default body paragraph color.
- Body Mid (
{colors.body-mid} — #5a5a5a): Mid-emphasis secondary text — footer lines, captions.
- Mute (
{colors.mute} — #898989): Lower-priority text.
- Mute Soft (
{colors.mute-soft} — #ababab): The lightest text role — placeholder text, fine print.
Semantic
- Info Blue (
{colors.accent-blue-info} — #146ef5): Info badge / notification.
- Success Green (
{colors.accent-green} — #00d722): Success indicators.
- Warning Yellow (
{colors.accent-yellow} — #ffae13): Warning states.
- Error Red (
{colors.accent-red} — #ee1d36): Validation / destructive.
Typography
Font Family
A single proprietary family carries every typographic role: WF Visual Sans Variable (with Arial system fallback). Weights 400 / 500 / 550 / 600 are present; the brand never uses 700 / 800 / 900. A monospace variant — WFVisualSans-Mono with Inconsolata fallback — handles rare technical caption moments and code-style labels. OpenType features "ss02", "ss10", "zero" are enabled in the mono variant for the styled zero glyph.
Hierarchy
| Token |
Size |
Weight |
Line Height |
Letter Spacing |
Use |
{typography.display-xxl} |
80px |
600 |
83.2px |
-0.8px |
Hero headline. |
{typography.display-xl} |
56px |
600 |
58.24px |
0 |
Sub-hero displays. |
{typography.display-lg} |
44.8px |
600 |
46.6px |
0 |
Section headlines. |
{typography.display-md} |
32px |
500 |
41.6px |
0 |
Card-cluster headlines. |
{typography.display-sm} |
24px |
500 |
31.2px |
0 |
Sub-section displays. |
{typography.display-xs} |
20px |
500 |
28px |
0 |
Inline display micro-headings. |
{typography.eyebrow-uppercase} |
15px |
500 |
19.5px |
1.5px |
UPPERCASE eyebrow tags above sections. |
{typography.eyebrow-uppercase-sm} |
12px |
500 |
12px |
0.6px |
Small uppercase metadata. |
{typography.body-lg} |
28.8px |
400 |
46.08px |
-0.288px |
Lead paragraphs. |
{typography.body-md} |
16px |
400 |
25.6px |
-0.16px |
Default body. |
{typography.body-md-strong} |
16px |
500 |
25.6px |
-0.16px |
Bolded inline body. |
{typography.body-sm} |
14px |
400 |
22.4px |
0 |
Secondary body. |
{typography.body-sm-strong} |
14px |
500 |
22.4px |
0 |
Bold caption / nav-link. |
{typography.caption} |
12.8px |
550 |
15.36px |
0 |
Badge labels (the brand's signature 550 weight). |
{typography.caption-mono} |
12px |
400 |
18px |
0 |
Mono code captions. |
{typography.button-md} |
16px |
500 |
25.6px |
-0.16px |
Button labels. |
Principles
- Weight ceiling at 600. The brand never uses 700+. Confident, not loud.
- Negative tracking at display sizes.
-0.8 px at 80 px, scaling through. Tight kerning is part of the voice.
- Uppercase eyebrows mark every section. 15 px / weight 500 /
1.5 px positive tracking is the brand's signature label style.
- Single family across the system. No separate display vs body face. The variable axes do the work.
Note on Font Substitutes
WF Visual Sans Variable is proprietary. Open-source substitutes:
- Display + body — Inter weights 400 / 500 / 600 with
font-feature-settings: "ss01" enabled is the closest stylistic match.
- Mono — Inconsolata (the documented fallback) or DM Mono.
Layout
Spacing System
- Base unit: 4 px (with frequent 0.4 / 0.8 sub-multiples for fine padding).
- Tokens:
{spacing.xxs} 2 px · {spacing.xs} 4 px · {spacing.sm} 8 px · {spacing.md} 12 px · {spacing.lg} 16 px · {spacing.xl} 20 px · {spacing.2xl} 24 px · {spacing.3xl} 32 px.
- Section padding: hero / content bands use
{spacing.3xl} 32 px gutters with generous vertical spacing.
- Card interior padding: feature and pricing cards sit at
{spacing.3xl} 32 px.
Grid & Container
- Marketing container is wide (effectively edge-to-edge with
{spacing.3xl} gutters).
- Category card grid: 2 / 3-up at desktop with mixed sizing (some larger feature cards span 2 columns).
- Pricing tier grid: 3-up at desktop, 1-up at mobile.
Responsive Strategy
Breakpoints
| Name |
Width |
Key Changes |
| Mobile |
< 479px |
Hero stacks; all grids 1-up. |
| Mobile-Large |
479–767px |
Same as Mobile. |
| Tablet |
768–991px |
2-up grids. |
| Desktop |
≥ 992px |
Full multi-up grids. |
Touch Targets
Buttons render at ~44 px (12 px vertical padding + 25.6 px line-height). WCAG AAA met.
Collapsing Strategy
- Nav: full link row at desktop. Hamburger at mobile.
- Category card grid: 2 / 3 / 4-up at desktop, drops to 1-up at mobile.
- Pricing tier: 3 / 4-up at desktop, 1-up at mobile.
Image Behavior
- Category cards: full-bleed solid colour fills (no photography).
- Product screenshots: 16:9 inside
{rounded.md} card chrome.
- No portrait imagery in the marketing surface.
Elevation & Depth
| Level |
Treatment |
Use |
| Level 0 — Flat |
No shadow, no border. |
Default bands. |
| Level 1 — Hairline |
1 px solid {colors.hairline} border on {colors.canvas}. |
Default card chrome and input borders. |
| Level 2 — Layered Drop |
Multi-stop layered shadow with subtle warm offsets — 0 84px 24px rgba(0,0,0,0), 0 54px 22px rgba(0,0,0,0.01), 0 30px 18px rgba(0,0,0,0.04), 0 13px 13px rgba(0,0,0,0.08), 0 3px 7px rgba(0,0,0,0.09). |
Featured cards needing visible lift. |
| Level 3 — Layered Drop Strong |
Deeper version of Level 2 with 0.12 final offset opacity. |
Pricing / modal-level emphasis. |
| Level 4 — Heavy Modal |
Extremely heavy multi-stop — 0 24px 24px rgba(0,0,0,0.26), 0 6px 13px rgba(0,0,0,0.29) final stops. |
Modal / dialog surfaces. |
Decorative Depth
- The chromatic category cards (full-saturation purple / pink / blue / orange / green fills) provide visual depth through pure colour contrast against the white canvas.
- Layered shadow recipes are the brand's only true atmospheric effect — they're 5-stop drop-shadow stacks with very low individual opacities.
Shapes
Border Radius Scale
| Token |
Value |
Use |
{rounded.none} |
0px |
Full-bleed bands. |
{rounded.xs} |
2px |
Tight inline pills. |
{rounded.sm} |
4px |
The brand's canonical button + badge + small-element radius. |
{rounded.md} |
8px |
Card chrome and feature / category cards. |
{rounded.full} |
9999px |
Circular icon containers only. |
Components
Buttons
button-primary — the canonical near-black CTA.
- Background
{colors.primary} (#080808), text {colors.on-primary} white, label {typography.button-md} (16 px weight 500), padding {spacing.md} {spacing.xl}, shape {rounded.sm} 4 px.
button-secondary — the white outline CTA.
- Background
{colors.canvas}, text {colors.ink}, 1 px solid {colors.hairline} border, same typography + padding + shape.
button-text-arrow — the underlined text-link CTA with arrow used in long-form sections.
- Background
{colors.canvas}, text {colors.ink}, no border, body in {typography.button-md}, padding {spacing.xl} 0.
button-icon-circular — the circular icon button for carousel controls.
- Background
{colors.canvas}, ink icon, shape {rounded.full}.
Cards & Containers
card-feature — the canonical feature card on canvas.
- Background
{colors.canvas}, text {colors.ink}, 1 px solid {colors.hairline}, padding {spacing.3xl}, shape {rounded.md}. Often elevated to Level 2 shadow when featured.
card-feature-dark — the polarity-flipped feature card on near-black.
- Background
{colors.primary}, text {colors.on-primary}, padding {spacing.3xl}, shape {rounded.md}.
card-pricing — the pricing-tier card.
- Background
{colors.canvas}, text {colors.ink}, hairline border, padding {spacing.3xl}, shape {rounded.md}. Layered shadow on the featured tier.
Inputs & Forms
text-input — the canonical text input.
- Background
{colors.canvas}, text {colors.ink}, 1 px solid {colors.hairline}, body in {typography.body-md}, padding {spacing.md} {spacing.lg}, shape {rounded.sm}.
Navigation
nav-bar — the sticky top nav.
- Background
{colors.canvas}, text {colors.ink}, padding {spacing.lg} {spacing.3xl}.
nav-link — link items inside nav-bar.
- Text
{colors.ink}, set in {typography.body-sm-strong}.
footer — the footer band.
- Background
{colors.canvas}, text {colors.body-mid}, padding {spacing.3xl} {spacing.3xl}. Body in {typography.body-sm}.
Signature Components
hero-band — the white hero band.
- Background
{colors.canvas}, text {colors.ink}, padding {spacing.3xl} {spacing.3xl}. Headline in {typography.display-xxl} (80 px weight 600).
hero-band-dark — the polarity-flipped near-black hero band (used on some campaign pages).
- Background
{colors.primary}, text {colors.on-primary}, same padding / headline scale.
content-band — the standard content band on canvas.
- Background
{colors.canvas}, text {colors.ink}, padding {spacing.3xl} {spacing.3xl}. Section headline in {typography.display-lg}.
category-card-purple — full-fill purple category card.
- Background
{colors.accent-purple}, text white, padding {spacing.3xl}, shape {rounded.md}.
category-card-pink — full-fill pink category card.
- Background
{colors.accent-pink}, text white, padding {spacing.3xl}, shape {rounded.md}.
category-card-blue — full-fill blue category card.
- Background
{colors.accent-blue}, text white, padding {spacing.3xl}, shape {rounded.md}.
category-card-orange — full-fill orange category card.
- Background
{colors.accent-orange}, text white, padding {spacing.3xl}, shape {rounded.md}.
category-card-green — full-fill green category card (uses ink text for legibility against the lighter green).
- Background
{colors.accent-green}, text {colors.primary} (ink), padding {spacing.3xl}, shape {rounded.md}.
badge-info + badge-info-soft — info badges in solid blue or soft outline.
- Filled: bg
{colors.accent-blue-info} text white. Soft: bg canvas, text {colors.accent-blue-info}. Both at {typography.caption} (12.8 px weight 550) — the brand's signature 550-weight caption.
Examples (illustrative)
Auto-derived kit-mirror demonstration surfaces (scripts/derive-examples-block.mjs). Each ex-* entry references brand-native primitives so downstream consumers (/preview-design, /generate-kit) re-skin the same 10 surfaces consistently. TO_FILL markers indicate missing primitives — resolve in the LLM judgment pass.
ex-pricing-tier — Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface.
- Properties:
backgroundColor, textColor, borderColor, rounded, padding
ex-pricing-tier-featured — Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode).
- Properties:
backgroundColor, textColor, rounded, padding
ex-product-selector — What's Included summary card — re-purposed for SaaS / B2B verticals (NOT a literal product gallery).
- Properties:
backgroundColor, rounded, padding
ex-cart-drawer — Subscription summary — re-purposed for SaaS / B2B (line items per add-on, not literal cart).
- Properties:
backgroundColor, rounded, padding, item-divider
ex-app-shell-row — Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator.
- Properties:
backgroundColor, activeIndicator, rounded, padding
ex-data-table-cell — Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm.
- Properties:
headerBackground, headerTypography, bodyTypography, cellPadding, rowBorder
ex-auth-form-card — Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside.
- Properties:
backgroundColor, rounded, padding
ex-modal-card — Modal dialog surface — same chrome as feature-card with elevated shadow.
- Properties:
backgroundColor, rounded, padding
ex-empty-state-card — Empty-state illustration frame.
- Properties:
backgroundColor, rounded, padding, captionTypography
ex-toast — Toast notification surface — feature-card shape + medium shadow.
- Properties:
backgroundColor, rounded, padding, typography
Do's and Don'ts
Do
- Reserve
{colors.primary} (#080808) for every primary CTA, every heading, and every wordmark. Near-black is the conversion colour.
- Use the five chromatic accents (purple / pink / blue / orange / green) as full-fill category cards, NOT as button backgrounds.
- Set hero headlines in
{typography.display-xxl} weight 600 with -0.8 px tracking.
- Pair the proprietary WF Visual Sans family across every typographic role.
- Use
{rounded.sm} 4 px for buttons, {rounded.md} 8 px for cards. The brand never uses pill CTAs.
- Use layered multi-stop drop-shadows on featured cards — the brand's distinctive elevation recipe.
Don't
- Don't promote button-medium weight to 700+. The brand's weight ceiling is 600.
- Don't use chromatic accents as button backgrounds. They're surface fills, not actions.
- Don't render CTAs as pills. The brand's button geometry is tight 4 px rectangle.
- Don't introduce a sixth accent colour. The 5-stop palette is the system.
1---2name: webflow-inspired-design-analysis3description: Analyzes and documents Webflow's design language, including color palette, typography hierarchy, spacing system, and layout principles for use in design systems.4---567## Overview89Webflow positions itself as the visual web development platform — the marketing surface reads as a confident professional product, not a tech startup. The default page is a generous white canvas (`{colors.canvas}`) with a deep near-black `{colors.primary}` (`#080808`) for the brand's primary CTA, typography, and ink. Around this restrained primary, the brand layers a five-stop chromatic accent system — `{colors.accent-purple}` `#7a3dff`, `{colors.accent-pink}` `#ed52cb`, `{colors.accent-blue}` `#3b89ff`, `{colors.accent-orange}` `#ff6b00`, `{colors.accent-green}` `#00d722` — each mapped to one of the platform's product categories (design, CMS, hosting, ecommerce, etc.). These accents appear as full-card fills inside the product-category grid, not as button colours; the brand's primary CTA stays near-black.1011Type carries the second decisive voice. The proprietary `WF Visual Sans Variable` family carries every display, body, and label role at weight 500 / 600 — the brand never goes heavier than semibold, never lighter than regular. Hero display sits at 80 px / weight 600 / `-0.8 px` tracking — confident but not shouting. Uppercase eyebrows in 15 px weight 500 with `1.5 px` positive tracking mark every section header.1213The shape system is restrained. Buttons take a tight `{rounded.sm}` 4 px radius — neither pill nor square; the brand reads as engineered. Cards step up to `{rounded.md}` 8 px. Pill (`{rounded.full}` 9999 px) is reserved for circular icon containers. Layered drop-shadows on featured cards add modest elevation but never feel material-heavy.1415**Key Characteristics:**16- A two-colour conversion hierarchy — `{colors.primary}` near-black for every primary CTA, white-on-hairline for every secondary. Chromatic accents are used as full surface fills on category cards, never as button backgrounds.17- The brand's signature is its **five-stop chromatic category palette**: purple / pink / blue / orange / green, each tied to a product surface. Used at full saturation as card fills.18- Hero typography at 80 px weight 600 with `-0.8 px` tracking — restrained, confident, never billboard-loud.19- WF Visual Sans Variable is the single family; the brand uses no separate sans for body / display. WFVisualSans-Mono / Inconsolata appears only for technical captions.20- Tight `{rounded.sm}` 4 px button geometry; cards at `{rounded.md}` 8 px. The brand never uses pill CTAs.21- Layered multi-offset drop-shadows on featured cards — the brand's only elevation cue.2223## Colors2425### Brand & Accent26- **Ink Black** (`{colors.primary}` — `#080808`): The brand's primary conversion colour. Every primary CTA, every heading, every wordmark. Deeper than pure black to read as branded.27- **Accent Purple** (`{colors.accent-purple}` — `#7a3dff`): One of the five chromatic category accents — used for design / build product surfaces.28- **Accent Pink** (`{colors.accent-pink}` — `#ed52cb`): Magenta accent — used for animation / interaction product surfaces.29- **Accent Blue** (`{colors.accent-blue}` — `#3b89ff`): Bright cyan-blue — used for SEO / analytics product surfaces.30- **Accent Blue Deep** (`{colors.accent-blue-deep}` — `#006acc`): The deeper blue used for emphasis links.31- **Accent Blue Info** (`{colors.accent-blue-info}` — `#146ef5`): The badge-info blue.32- **Accent Orange** (`{colors.accent-orange}` — `#ff6b00`): Used for hosting / infrastructure product surfaces.33- **Accent Green** (`{colors.accent-green}` — `#00d722`): Used for ecommerce / status-success surfaces.34- **Accent Yellow** (`{colors.accent-yellow}` — `#ffae13`): Used for warning / collaboration product surfaces.35- **Accent Red** (`{colors.accent-red}` — `#ee1d36`): Used for error / destructive states.3637### Surface38- **Canvas** (`{colors.canvas}` — `#ffffff`): The default page background.39- **Hairline** (`{colors.hairline}` — `#d8d8d8`): 1 px solid borders — input borders, card chrome, divider lines.4041### Text42- **Ink** (`{colors.ink}` — `#080808`): Default text and headings.43- **Ink Strong** (`{colors.ink-strong}` — `#222222`): Near-black emphasis.44- **Body** (`{colors.body}` — `#363636`): Default body paragraph color.45- **Body Mid** (`{colors.body-mid}` — `#5a5a5a`): Mid-emphasis secondary text — footer lines, captions.46- **Mute** (`{colors.mute}` — `#898989`): Lower-priority text.47- **Mute Soft** (`{colors.mute-soft}` — `#ababab`): The lightest text role — placeholder text, fine print.4849### Semantic50- **Info Blue** (`{colors.accent-blue-info}` — `#146ef5`): Info badge / notification.51- **Success Green** (`{colors.accent-green}` — `#00d722`): Success indicators.52- **Warning Yellow** (`{colors.accent-yellow}` — `#ffae13`): Warning states.53- **Error Red** (`{colors.accent-red}` — `#ee1d36`): Validation / destructive.5455## Typography5657### Font Family58A single proprietary family carries every typographic role: **WF Visual Sans Variable** (with `Arial` system fallback). Weights 400 / 500 / 550 / 600 are present; the brand never uses 700 / 800 / 900. A monospace variant — **WFVisualSans-Mono** with `Inconsolata` fallback — handles rare technical caption moments and code-style labels. OpenType features `"ss02"`, `"ss10"`, `"zero"` are enabled in the mono variant for the styled zero glyph.5960### Hierarchy6162| Token | Size | Weight | Line Height | Letter Spacing | Use |63|---|---|---|---|---|---|64| `{typography.display-xxl}` | 80px | 600 | 83.2px | -0.8px | Hero headline. |65| `{typography.display-xl}` | 56px | 600 | 58.24px | 0 | Sub-hero displays. |66| `{typography.display-lg}` | 44.8px | 600 | 46.6px | 0 | Section headlines. |67| `{typography.display-md}` | 32px | 500 | 41.6px | 0 | Card-cluster headlines. |68| `{typography.display-sm}` | 24px | 500 | 31.2px | 0 | Sub-section displays. |69| `{typography.display-xs}` | 20px | 500 | 28px | 0 | Inline display micro-headings. |70| `{typography.eyebrow-uppercase}` | 15px | 500 | 19.5px | 1.5px | UPPERCASE eyebrow tags above sections. |71| `{typography.eyebrow-uppercase-sm}` | 12px | 500 | 12px | 0.6px | Small uppercase metadata. |72| `{typography.body-lg}` | 28.8px | 400 | 46.08px | -0.288px | Lead paragraphs. |73| `{typography.body-md}` | 16px | 400 | 25.6px | -0.16px | Default body. |74| `{typography.body-md-strong}` | 16px | 500 | 25.6px | -0.16px | Bolded inline body. |75| `{typography.body-sm}` | 14px | 400 | 22.4px | 0 | Secondary body. |76| `{typography.body-sm-strong}` | 14px | 500 | 22.4px | 0 | Bold caption / nav-link. |77| `{typography.caption}` | 12.8px | 550 | 15.36px | 0 | Badge labels (the brand's signature 550 weight). |78| `{typography.caption-mono}` | 12px | 400 | 18px | 0 | Mono code captions. |79| `{typography.button-md}` | 16px | 500 | 25.6px | -0.16px | Button labels. |8081### Principles82- **Weight ceiling at 600.** The brand never uses 700+. Confident, not loud.83- **Negative tracking at display sizes.** `-0.8 px` at 80 px, scaling through. Tight kerning is part of the voice.84- **Uppercase eyebrows mark every section.** 15 px / weight 500 / `1.5 px` positive tracking is the brand's signature label style.85- **Single family across the system.** No separate display vs body face. The variable axes do the work.8687### Note on Font Substitutes88WF Visual Sans Variable is proprietary. Open-source substitutes:89- **Display + body** — *Inter* weights 400 / 500 / 600 with `font-feature-settings: "ss01"` enabled is the closest stylistic match.90- **Mono** — *Inconsolata* (the documented fallback) or *DM Mono*.9192## Layout9394### Spacing System95- **Base unit**: 4 px (with frequent 0.4 / 0.8 sub-multiples for fine padding).96- **Tokens**: `{spacing.xxs}` 2 px · `{spacing.xs}` 4 px · `{spacing.sm}` 8 px · `{spacing.md}` 12 px · `{spacing.lg}` 16 px · `{spacing.xl}` 20 px · `{spacing.2xl}` 24 px · `{spacing.3xl}` 32 px.97- **Section padding**: hero / content bands use `{spacing.3xl}` 32 px gutters with generous vertical spacing.98- **Card interior padding**: feature and pricing cards sit at `{spacing.3xl}` 32 px.99100### Grid & Container101- Marketing container is wide (effectively edge-to-edge with `{spacing.3xl}` gutters).102- Category card grid: 2 / 3-up at desktop with mixed sizing (some larger feature cards span 2 columns).103- Pricing tier grid: 3-up at desktop, 1-up at mobile.104105### Responsive Strategy106107#### Breakpoints108109| Name | Width | Key Changes |110|---|---|---|111| Mobile | < 479px | Hero stacks; all grids 1-up. |112| Mobile-Large | 479–767px | Same as Mobile. |113| Tablet | 768–991px | 2-up grids. |114| Desktop | ≥ 992px | Full multi-up grids. |115116#### Touch Targets117Buttons render at ~44 px (12 px vertical padding + 25.6 px line-height). WCAG AAA met.118119#### Collapsing Strategy120- Nav: full link row at desktop. Hamburger at mobile.121- Category card grid: 2 / 3 / 4-up at desktop, drops to 1-up at mobile.122- Pricing tier: 3 / 4-up at desktop, 1-up at mobile.123124#### Image Behavior125- Category cards: full-bleed solid colour fills (no photography).126- Product screenshots: 16:9 inside `{rounded.md}` card chrome.127- No portrait imagery in the marketing surface.128129## Elevation & Depth130131| Level | Treatment | Use |132|---|---|---|133| Level 0 — Flat | No shadow, no border. | Default bands. |134| Level 1 — Hairline | 1 px solid `{colors.hairline}` border on `{colors.canvas}`. | Default card chrome and input borders. |135| Level 2 — Layered Drop | Multi-stop layered shadow with subtle warm offsets — `0 84px 24px rgba(0,0,0,0), 0 54px 22px rgba(0,0,0,0.01), 0 30px 18px rgba(0,0,0,0.04), 0 13px 13px rgba(0,0,0,0.08), 0 3px 7px rgba(0,0,0,0.09)`. | Featured cards needing visible lift. |136| Level 3 — Layered Drop Strong | Deeper version of Level 2 with `0.12` final offset opacity. | Pricing / modal-level emphasis. |137| Level 4 — Heavy Modal | Extremely heavy multi-stop — `0 24px 24px rgba(0,0,0,0.26), 0 6px 13px rgba(0,0,0,0.29)` final stops. | Modal / dialog surfaces. |138139### Decorative Depth140- The chromatic category cards (full-saturation purple / pink / blue / orange / green fills) provide visual depth through pure colour contrast against the white canvas.141- Layered shadow recipes are the brand's only true atmospheric effect — they're 5-stop drop-shadow stacks with very low individual opacities.142143## Shapes144145### Border Radius Scale146147| Token | Value | Use |148|---|---|---|149| `{rounded.none}` | 0px | Full-bleed bands. |150| `{rounded.xs}` | 2px | Tight inline pills. |151| `{rounded.sm}` | 4px | The brand's canonical button + badge + small-element radius. |152| `{rounded.md}` | 8px | Card chrome and feature / category cards. |153| `{rounded.full}` | 9999px | Circular icon containers only. |154155## Components156157### Buttons158159**`button-primary`** — the canonical near-black CTA.160- Background `{colors.primary}` (`#080808`), text `{colors.on-primary}` white, label `{typography.button-md}` (16 px weight 500), padding `{spacing.md} {spacing.xl}`, shape `{rounded.sm}` 4 px.161162**`button-secondary`** — the white outline CTA.163- Background `{colors.canvas}`, text `{colors.ink}`, 1 px solid `{colors.hairline}` border, same typography + padding + shape.164165**`button-text-arrow`** — the underlined text-link CTA with arrow used in long-form sections.166- Background `{colors.canvas}`, text `{colors.ink}`, no border, body in `{typography.button-md}`, padding `{spacing.xl}` 0.167168**`button-icon-circular`** — the circular icon button for carousel controls.169- Background `{colors.canvas}`, ink icon, shape `{rounded.full}`.170171### Cards & Containers172173**`card-feature`** — the canonical feature card on canvas.174- Background `{colors.canvas}`, text `{colors.ink}`, 1 px solid `{colors.hairline}`, padding `{spacing.3xl}`, shape `{rounded.md}`. Often elevated to Level 2 shadow when featured.175176**`card-feature-dark`** — the polarity-flipped feature card on near-black.177- Background `{colors.primary}`, text `{colors.on-primary}`, padding `{spacing.3xl}`, shape `{rounded.md}`.178179**`card-pricing`** — the pricing-tier card.180- Background `{colors.canvas}`, text `{colors.ink}`, hairline border, padding `{spacing.3xl}`, shape `{rounded.md}`. Layered shadow on the featured tier.181182### Inputs & Forms183184**`text-input`** — the canonical text input.185- Background `{colors.canvas}`, text `{colors.ink}`, 1 px solid `{colors.hairline}`, body in `{typography.body-md}`, padding `{spacing.md} {spacing.lg}`, shape `{rounded.sm}`.186187### Navigation188189**`nav-bar`** — the sticky top nav.190- Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.lg} {spacing.3xl}`.191192**`nav-link`** — link items inside `nav-bar`.193- Text `{colors.ink}`, set in `{typography.body-sm-strong}`.194195**`footer`** — the footer band.196- Background `{colors.canvas}`, text `{colors.body-mid}`, padding `{spacing.3xl} {spacing.3xl}`. Body in `{typography.body-sm}`.197198### Signature Components199200**`hero-band`** — the white hero band.201- Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.3xl} {spacing.3xl}`. Headline in `{typography.display-xxl}` (80 px weight 600).202203**`hero-band-dark`** — the polarity-flipped near-black hero band (used on some campaign pages).204- Background `{colors.primary}`, text `{colors.on-primary}`, same padding / headline scale.205206**`content-band`** — the standard content band on canvas.207- Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.3xl} {spacing.3xl}`. Section headline in `{typography.display-lg}`.208209**`category-card-purple`** — full-fill purple category card.210- Background `{colors.accent-purple}`, text white, padding `{spacing.3xl}`, shape `{rounded.md}`.211212**`category-card-pink`** — full-fill pink category card.213- Background `{colors.accent-pink}`, text white, padding `{spacing.3xl}`, shape `{rounded.md}`.214215**`category-card-blue`** — full-fill blue category card.216- Background `{colors.accent-blue}`, text white, padding `{spacing.3xl}`, shape `{rounded.md}`.217218**`category-card-orange`** — full-fill orange category card.219- Background `{colors.accent-orange}`, text white, padding `{spacing.3xl}`, shape `{rounded.md}`.220221**`category-card-green`** — full-fill green category card (uses ink text for legibility against the lighter green).222- Background `{colors.accent-green}`, text `{colors.primary}` (ink), padding `{spacing.3xl}`, shape `{rounded.md}`.223224**`badge-info`** + **`badge-info-soft`** — info badges in solid blue or soft outline.225- Filled: bg `{colors.accent-blue-info}` text white. Soft: bg canvas, text `{colors.accent-blue-info}`. Both at `{typography.caption}` (12.8 px weight 550) — the brand's signature 550-weight caption.226227### Examples (illustrative)228229> Auto-derived kit-mirror demonstration surfaces (`scripts/derive-examples-block.mjs`). Each `ex-*` entry references brand-native primitives so downstream consumers (`/preview-design`, `/generate-kit`) re-skin the same 10 surfaces consistently. `TO_FILL` markers indicate missing primitives — resolve in the LLM judgment pass.230231**`ex-pricing-tier`** — Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface.232- Properties: `backgroundColor`, `textColor`, `borderColor`, `rounded`, `padding`233234**`ex-pricing-tier-featured`** — Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode).235- Properties: `backgroundColor`, `textColor`, `rounded`, `padding`236237**`ex-product-selector`** — What's Included summary card — re-purposed for SaaS / B2B verticals (NOT a literal product gallery).238- Properties: `backgroundColor`, `rounded`, `padding`239240**`ex-cart-drawer`** — Subscription summary — re-purposed for SaaS / B2B (line items per add-on, not literal cart).241- Properties: `backgroundColor`, `rounded`, `padding`, `item-divider`242243**`ex-app-shell-row`** — Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator.244- Properties: `backgroundColor`, `activeIndicator`, `rounded`, `padding`245246**`ex-data-table-cell`** — Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm.247- Properties: `headerBackground`, `headerTypography`, `bodyTypography`, `cellPadding`, `rowBorder`248249**`ex-auth-form-card`** — Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside.250- Properties: `backgroundColor`, `rounded`, `padding`251252**`ex-modal-card`** — Modal dialog surface — same chrome as feature-card with elevated shadow.253- Properties: `backgroundColor`, `rounded`, `padding`254255**`ex-empty-state-card`** — Empty-state illustration frame.256- Properties: `backgroundColor`, `rounded`, `padding`, `captionTypography`257258**`ex-toast`** — Toast notification surface — feature-card shape + medium shadow.259- Properties: `backgroundColor`, `rounded`, `padding`, `typography`260261262## Do's and Don'ts263264### Do265- Reserve `{colors.primary}` (`#080808`) for every primary CTA, every heading, and every wordmark. Near-black is the conversion colour.266- Use the five chromatic accents (purple / pink / blue / orange / green) as full-fill category cards, NOT as button backgrounds.267- Set hero headlines in `{typography.display-xxl}` weight 600 with `-0.8 px` tracking.268- Pair the proprietary WF Visual Sans family across every typographic role.269- Use `{rounded.sm}` 4 px for buttons, `{rounded.md}` 8 px for cards. The brand never uses pill CTAs.270- Use layered multi-stop drop-shadows on featured cards — the brand's distinctive elevation recipe.271272### Don't273- Don't promote button-medium weight to 700+. The brand's weight ceiling is 600.274- Don't use chromatic accents as button backgrounds. They're surface fills, not actions.275- Don't render CTAs as pills. The brand's button geometry is tight 4 px rectangle.276- Don't introduce a sixth accent colour. The 5-stop palette is the system.