---
version: alpha
name: Framer-design-analysis
description: "A confident dark-canvas builder marketing site that treats the page like a working artboard — pure black surfaces, white display type set in GT Walsheim Medium with aggressive negative tracking, and a single confident blue (#0099ff) reserved for hyperlinks and selection states. The page rhythm is broken by oversized vibrant gradient atmosphere panels — magenta, violet, orange spotlights — that act as living showcase tiles, not decoration. Every CTA is a white pill on dark; every card is a translucent or charcoal surface; every section title pulls letter-spacing tight enough to feel like a poster."
colors:
primary: "#ffffff"
on-primary: "#000000"
accent-blue: "#0099ff"
ink: "#ffffff"
ink-muted: "#999999"
canvas: "#090909"
surface-1: "#141414"
surface-2: "#1c1c1c"
hairline: "#262626"
hairline-soft: "#1a1a1a"
inverse-canvas: "#ffffff"
inverse-ink: "#000000"
gradient-magenta: "#d44df0"
gradient-violet: "#6a4cf5"
gradient-orange: "#ff7a3d"
gradient-coral: "#ff5577"
semantic-success: "#22c55e"
typography:
display-xxl:
fontFamily: GT Walsheim Framer Medium
fontSize: 110px
fontWeight: 500
lineHeight: 0.85
letterSpacing: -5.5px
display-xl:
fontFamily: GT Walsheim Medium
fontSize: 85px
fontWeight: 500
lineHeight: 0.95
letterSpacing: -4.25px
fontFeature: ss02
display-lg:
fontFamily: GT Walsheim Medium
fontSize: 62px
fontWeight: 500
lineHeight: 1.00
letterSpacing: -3.1px
fontFeature: ss02
display-md:
fontFamily: GT Walsheim Medium
fontSize: 32px
fontWeight: 500
lineHeight: 1.13
letterSpacing: -1.0px
headline:
fontFamily: Inter
fontSize: 22px
fontWeight: 700
lineHeight: 1.20
letterSpacing: -0.8px
fontFeature: cv05
subhead:
fontFamily: Inter Variable
fontSize: 24px
fontWeight: 400
lineHeight: 1.30
letterSpacing: -0.01px
fontFeature: cv11
body-lg:
fontFamily: Inter Variable
fontSize: 18px
fontWeight: 400
lineHeight: 1.30
letterSpacing: -0.18px
fontFeature: cv11
body:
fontFamily: Inter Variable
fontSize: 15px
fontWeight: 400
lineHeight: 1.30
letterSpacing: -0.15px
fontFeature: cv11
body-sm:
fontFamily: Inter Variable
fontSize: 14px
fontWeight: 500
lineHeight: 1.40
letterSpacing: -0.14px
fontFeature: cv11
caption:
fontFamily: Inter Variable
fontSize: 13px
fontWeight: 500
lineHeight: 1.20
letterSpacing: -0.13px
fontFeature: cv11
micro:
fontFamily: Inter Variable
fontSize: 12px
fontWeight: 400
lineHeight: 1.20
letterSpacing: -0.12px
fontFeature: cv11
button:
fontFamily: Inter Variable
fontSize: 14px
fontWeight: 500
lineHeight: 1.0
letterSpacing: -0.14px
fontFeature: cv11
rounded:
xs: 4px
sm: 6px
md: 10px
lg: 15px
xl: 20px
xxl: 30px
pill: 100px
full: 9999px
spacing:
hair: 1px
xxs: 4px
xs: 8px
sm: 12px
md: 15px
lg: 20px
xl: 30px
xxl: 40px
section: 96px
components:
button-primary:
backgroundColor: "{colors.primary}"
textColor: "{colors.on-primary}"
typography: "{typography.button}"
rounded: "{rounded.pill}"
padding: 10px 15px
button-primary-pressed:
backgroundColor: "{colors.primary}"
textColor: "{colors.on-primary}"
typography: "{typography.button}"
rounded: "{rounded.pill}"
button-secondary:
backgroundColor: "{colors.surface-1}"
textColor: "{colors.ink}"
typography: "{typography.button}"
rounded: "{rounded.pill}"
padding: 10px 15px
button-translucent:
backgroundColor: "{colors.surface-2}"
textColor: "{colors.ink}"
typography: "{typography.button}"
rounded: "{rounded.xxl}"
padding: 8px 14px
button-icon-circular:
backgroundColor: "{colors.surface-1}"
textColor: "{colors.ink}"
typography: "{typography.button}"
rounded: "{rounded.full}"
size: 40px
pricing-tab-default:
backgroundColor: "{colors.canvas}"
textColor: "{colors.ink-muted}"
typography: "{typography.button}"
rounded: "{rounded.pill}"
padding: 8px 14px
pricing-tab-selected:
backgroundColor: "{colors.surface-2}"
textColor: "{colors.ink}"
typography: "{typography.button}"
rounded: "{rounded.pill}"
padding: 8px 14px
text-input:
backgroundColor: "{colors.surface-1}"
textColor: "{colors.ink}"
typography: "{typography.body}"
rounded: "{rounded.md}"
padding: 10px 14px
text-input-focused:
backgroundColor: "{colors.surface-1}"
textColor: "{colors.ink}"
typography: "{typography.body}"
rounded: "{rounded.md}"
padding: 10px 14px
pricing-card:
backgroundColor: "{colors.surface-1}"
textColor: "{colors.ink}"
typography: "{typography.body}"
rounded: "{rounded.xl}"
padding: 24px
pricing-card-featured:
backgroundColor: "{colors.surface-2}"
textColor: "{colors.ink}"
typography: "{typography.body}"
rounded: "{rounded.xl}"
padding: 24px
template-card:
backgroundColor: "{colors.surface-1}"
textColor: "{colors.ink}"
typography: "{typography.body-sm}"
rounded: "{rounded.lg}"
padding: 12px
gradient-spotlight-card:
backgroundColor: "{colors.gradient-violet}"
textColor: "{colors.ink}"
typography: "{typography.subhead}"
rounded: "{rounded.xl}"
padding: 32px
gradient-spotlight-card-magenta:
backgroundColor: "{colors.gradient-magenta}"
textColor: "{colors.ink}"
typography: "{typography.subhead}"
rounded: "{rounded.xl}"
padding: 32px
gradient-spotlight-card-orange:
backgroundColor: "{colors.gradient-orange}"
textColor: "{colors.ink}"
typography: "{typography.subhead}"
rounded: "{rounded.xl}"
padding: 32px
product-mockup-tile:
backgroundColor: "{colors.surface-1}"
textColor: "{colors.ink}"
typography: "{typography.body-sm}"
rounded: "{rounded.xl}"
padding: 16px
feature-row:
backgroundColor: "{colors.canvas}"
textColor: "{colors.ink}"
typography: "{typography.body}"
rounded: "{rounded.xs}"
comparison-row:
backgroundColor: "{colors.canvas}"
textColor: "{colors.ink-muted}"
typography: "{typography.body-sm}"
rounded: "{rounded.xs}"
top-nav:
backgroundColor: "{colors.canvas}"
textColor: "{colors.ink}"
typography: "{typography.body-sm}"
rounded: "{rounded.xs}"
height: 56px
faq-row:
backgroundColor: "{colors.canvas}"
textColor: "{colors.ink}"
typography: "{typography.body}"
rounded: "{rounded.md}"
padding: 24px
footer:
backgroundColor: "{colors.canvas}"
textColor: "{colors.ink-muted}"
typography: "{typography.caption}"
rounded: "{rounded.xs}"
padding: 64px 32px
---
Overview
Section 01Framer's marketing canvas is a near-pure black artboard. The dominant surface is `{colors.canvas}` — almost pure black with a faint warmth — and on top of it sits oversized white display type set in **GT Walsheim Medium** with letter-spacing pulled to extreme negative values (-5.5px on the 110px display, -4.25px on the 85px hero). The page reads like a poster: one assertive statement per band, generous breathing room above and below.
The single accent is `{colors.accent-blue}` — used scarcely, mostly for hyperlinks, selection halos, and a subtle blue-tinted shadow ring on focused inputs. The brand chrome itself is monochrome: white pill buttons, charcoal cards, gray secondary text. What makes Framer distinctive is the rhythm break — every few sections the page drops in a **vibrant gradient atmosphere card**: a magenta-violet spotlight, a sunset-orange wash, a coral-pink panel. These aren't section backgrounds; they're individual cards arranged in a card grid, each one a small living poster that shows what Framer can produce.
Body type is **Inter Variable**, with Framer leaning hard into Inter's character variants (`cv01`, `cv05`, `cv09`, `cv11`, `ss03`, `ss07`, `dlig`) — the result is a body voice that feels custom-tuned, with single-storey "a", straight-leg "l", and tabular figures. There's no light mode on the marketing site; the brand IS dark.
**Key Characteristics:**
Colors
Section 02> Source pages: framer.com (home), /ai/, /startups/, /marketplace/templates/nudge/, /gallery/a16z-speedrun-×-tonik, /pricing.
Brand & Accent
Section 03Surface
Section 04Text
Section 05Semantic
Section 06Brand Gradient (signature)
Section 07These four sit as oversized atmospheric tiles inside otherwise monochrome card grids — a dark canvas with one or two glowing spotlight cards is a recurring page signature.
Typography
Section 08Font Family
Section 09Hierarchy
Section 010| Token | Size | Weight | Line Height | Letter Spacing | Use |
|---|---|---|---|---|---|
| `{typography.display-xxl}` | 110px | 500 | 0.85 | -5.5px | Largest hero headline (home, AI page) |
| `{typography.display-xl}` | 85px | 500 | 0.95 | -4.25px | Section opener headlines |
| `{typography.display-lg}` | 62px | 500 | 1.00 | -3.1px | Sub-section openers |
| `{typography.display-md}` | 32px | 500 | 1.13 | -1.0px | Card titles, smaller display |
| `{typography.headline}` | 22px | 700 | 1.20 | -0.8px | Pricing tier headlines, FAQ category titles |
| `{typography.subhead}` | 24px | 400 | 1.30 | -0.01px | Lead body next to display headlines |
| `{typography.body-lg}` | 18px | 400 | 1.30 | -0.18px | Hero subhead, lead paragraphs |
| `{typography.body}` | 15px | 400 | 1.30 | -0.15px | Default body, card descriptions |
| `{typography.body-sm}` | 14px | 500 | 1.40 | -0.14px | Pricing comparison rows, dense data |
| `{typography.caption}` | 13px | 500 | 1.20 | -0.13px | Eyebrows, footer columns, meta |
| `{typography.micro}` | 12px | 400 | 1.20 | -0.12px | Disclaimer, footnote |
| `{typography.button}` | 14px | 500 | 1.0 | -0.14px | Pill buttons |
Principles
Section 011Note on Font Substitutes
Section 012If implementing without GT Walsheim Medium, suitable open-source substitutes include **Mona Sans**, **Geist**, or **Inter** at weight 600–700 with manually tightened tracking. Mona Sans's hairline weights at 100–300 are particularly close to Framer's cleaner section openers. Inter Variable is open-source — keep it as-is and preserve the documented OpenType variants.
Layout
Section 013Spacing System
Section 014Grid & Container
Section 015Whitespace Philosophy
Section 016The dark canvas IS the whitespace. Where lighter brands lean on white air to separate sections, Framer leans on long stretches of black with a single oversized statement floating in the middle. Sections separate by mode change: a band of charcoal cards, then a band of black with a gradient spotlight, then back to charcoal — like cuts in a dark film.
Elevation & Depth
Section 017| Level | Treatment | Use |
|---|---|---|
| 0 (flat) | No shadow, no border | Default for canvas-mounted display type, FAQ rows, footer |
| 1 (charcoal) | `{colors.surface-1}` lift on canvas | Pricing cards, mockup tiles, secondary buttons |
| 2 (light-edge) | `rgba(255,255,255,0.10)` 0.5px top edge + `rgba(0,0,0,0.25)` 0px 10px 30px drop | Floating product cards, modal cards |
| 3 (selected) | `rgba(0,153,255,0.15)` 0px 0px 0px 1px ring | Focused inputs, selected option |
Four shadow signatures recur across the homepage: a 1px subtle drop, a translucent blue ring, a thick near-black 2px outline (used as the active-element marker on sub-nav), and the layered light-edge + drop-shadow used for floating cards.
Decorative Depth
Section 018Shapes
Section 019Border Radius Scale
Section 020Framer's extracted radius set is unusually granular (1px, 4px, 5px, 6px, 8px, 10px, 12px, 15px, 20px, 30px, 40px, 100px). The named scale below picks the levels the marketing surface actually consumes.
| Token | Value | Use |
|---|---|---|
| `{rounded.xs}` | 4px | Small chip / utility radius |
| `{rounded.sm}` | 6px | Inline tag, badge |
| `{rounded.md}` | 10px | Form input, list item |
| `{rounded.lg}` | 15px | Template card thumbnails |
| `{rounded.xl}` | 20px | Pricing cards, mockup tiles |
| `{rounded.xxl}` | 30px | Gradient spotlight cards, oversized panels |
| `{rounded.pill}` | 100px | All primary text CTAs |
| `{rounded.full}` | 9999px | Circular icon buttons, avatar circles |
Photography & Illustration Geometry
Section 021Components
Section 022Buttons
Section 023**`button-primary`** — White pill on dark canvas. The primary CTA across home, pricing, AI, and gallery pages.
**`button-secondary`** — Charcoal pill. Used for secondary navigation actions ("Sign in", "Talk to sales") and as the visual counterpart to the primary pill.
**`button-translucent`** — Translucent / lifted secondary used on top of busy backgrounds (gallery hero, gradient cards).
**`button-icon-circular`** — 40px circle for inline icon actions (carousel arrows, social links).
Pricing Tabs
Section 024**`pricing-tab-default`** + **`pricing-tab-selected`** — The pill-toggle that switches between Basic / Pro / Business / Enterprise on `/pricing`.
Inputs & Forms
Section 025**`text-input`** + **`text-input-focused`** — Form fields on `/pricing` (seat-count, currency switcher) and the in-product preview surfaces.
Cards & Containers
Section 026**`pricing-card`** — Each tier on `/pricing`.
**`pricing-card-featured`** — The Pro tier (visually emphasized).
**`template-card`** — Thumbnail tile in the home "Built with Framer" gallery and `/marketplace`.
**`product-mockup-tile`** — Larger tile that frames a live product UI mock (Framer canvas, Workshop video, AI translate panel).
Gradient Spotlight Cards (signature)
Section 027The defining decorative surface of Framer's marketing — oversized atmospheric tiles dropped into otherwise monochrome card grids. Variants:
**`gradient-spotlight-card`** — violet ground (most common).
**`gradient-spotlight-card-magenta`** — magenta-pink ground.
**`gradient-spotlight-card-orange`** — sunset-orange wash.
(Coral pink follows the same shape with `{colors.gradient-coral}`.)
Comparison & FAQ
Section 028**`feature-row`** + **`comparison-row`** — Single rows inside the pricing comparison table.
**`faq-row`** — Each accordion line in the pricing-page FAQ.
Navigation
Section 029**`top-nav`** — Sticky bar on `{colors.canvas}` with the Framer wordmark left, primary nav links centered, and a `button-secondary` ("Sign in") + `button-primary` ("Get started for free") pair right.
Footer
Section 030**`footer`** — Dense link grid on `{colors.canvas}` with the Framer wordmark left and 5–6 columns of caption-sized links.
Do's and Don'ts
Section 031Do
Section 032Don't
Section 033Responsive Behavior
Section 034Breakpoints
Section 035| Name | Width | Key Changes |
|---|---|---|
| Desktop | 1199px | Default desktop layout |
| Tablet | 810px | Card grids collapse 4-up → 2-up; nav becomes hamburger |
| Mobile-Lg | 809px | Pricing comparison table becomes per-tier accordion |
| Mobile-XS | 98px | Smallest documented breakpoint — single-column everything |
Touch Targets
Section 036Collapsing Strategy
Section 037Image Behavior
Section 038Iteration Guide
Section 0391. Focus on ONE component at a time and reference it by its `components:` token name (e.g., `{components.button-primary}`, `{components.gradient-spotlight-card}`).
2. When introducing a new section on the dark canvas, decide first which surface lift it lives on — `{colors.canvas}` for hero/FAQ, `{colors.surface-1}` for cards, `{colors.surface-2}` for featured cards. The depth choice is the most consequential decision.
3. Default body to `{typography.body}` with all the documented OpenType variants; reach for `{typography.subhead}` only inside spotlight cards.
4. Run `npx @google/design.md lint DESIGN.md` after edits — `broken-ref`, `contrast-ratio`, and `orphaned-tokens` warnings flag issues automatically.
5. Add new variants as separate component entries (`-pressed`, `-featured`, `-selected`) — do not bury them in prose.
6. Treat `{colors.accent-blue}` as a single-shot signal color: hyperlinks, focus, and selection — that's it. If you find yourself reaching for a second blue, the brand is drifting.
7. Gradient spotlight cards are scarce by design. One or two per long page is the spec; three is a moodboard.