← Back to all designs

Replicate

Replicate's marketing surfaces pair the warm-cream developer-tools aesthetic of an indie ML playground with a confident hot-orange brand accent and a signature display typeface (rb-freigeist-neue) sized aggressively large at 72px+. The system reads as "AI lab notebook crossed with print magazine": cream and bone surfaces, dark ink type, monospace code wells, irregular hand-drawn-feeling diagrams,

Homepage Example

Welcome to Replicate

A modern, elegant design system built for the digital age. Clean lines, thoughtful spacing, and purposeful color choices define every interaction.

Get Started Learn More

Pixel Perfect

Every element is carefully crafted to ensure consistency across all platforms and devices.

Design Tokens

A comprehensive token system that makes scaling and maintaining your design effortless.

Built for Teams

Collaborate seamlessly with designers and developers using a shared design language.

Color Palette (22)

primary#ea2804
primary-deep#c01f00
on-primary#ffffff
ink#202020
body#3a3a3a
charcoal#575757
mute#646464
ash#8d8d8d
stone#bbbbbb
on-dark#fcfcfc
canvas#f9f7f3
surface-bone#f3f0e8
surface-card#ffffff
surface-dark#202020
surface-deep#000000
hairline-strong#202020
hero-warm#ea2804
hero-glow#ff6a3d
hero-pink#f4a8a0
badge-success#2b9a66
link#ea2804
github-dark#24292e

Typography (17)

Replicate
display-xxl128px · weight 700
Replicate
display-xl72px · weight 700
Replicate
display-lg48px · weight 700
Replicate
display-md30px · weight 600
Replicate
heading-lg38.4px · weight 600
Replicate
heading-md24px · weight 600
Replicate
heading-sm20px · weight 600
Replicate
subtitle18px · weight 600
Replicate
body-lg18px · weight 400
Replicate
body-md16px · weight 400
Replicate
body-sm14px · weight 400
Replicate
button-md16px · weight 600
Replicate
button-sm14px · weight 600
Replicate
caption12px · weight 400
Replicate
caption-tight14px · weight 600
Replicate
code-md14px · weight 400
Replicate
code-sm11px · weight 400

Components (20)

button-primary
button-primary
button-primary-pressed
button-primary-pressed
button-dark
button-dark
button-outline
button-outline
button-ghost
button-ghost
button-icon
button-icon
text-input
text-input
hero-band
hero-band
model-card
model-card
collection-tile
collection-tile
pricing-tier
pricing-tier
pricing-tier-featured
pricing-tier-featured
code-block
code-block
code-tab
code-tab
badge-status
badge-status
badge-tag
badge-tag
nav-bar
nav-bar
sub-nav-pill
sub-nav-pill
contributor-avatar
contributor-avatar
footer
footer

Border Radius

none (0px)
xs (4px)
sm (6px)
md (10px)
lg (16px)
full (9999px)

Design Philosophy

Overview

Replicate is a developer-tools platform with the soul of an art zine. The

public marketing surfaces sit on a warm cream canvas (`{colors.canvas}` —

`#f9f7f3`) rather than the white-or-near-black default of typical AI

infrastructure sites, and that single decision colours everything else:

photography reads as editorial, code wells read as printed pull-quotes, and

the brand orange (`{colors.primary}` — `#ea2804`) feels like a stamp rather

than a notification.

The typography is the load-bearing decoration. **rb-freigeist-neue** — a

heavy, slightly condensed grotesque — appears at sizes up to 128px in hero

bands, with a tight `lineHeight: 1.0` and negative letter-spacing that lets

multi-line headlines pack into geometric blocks. The companion family,

**basier-square**, takes care of body, button labels, and metadata in the

14–18px range. **JetBrains Mono** carries every code well, command, and

example. Three families, three jobs, no overlap.

Page rhythm cycles between a default cream canvas, a bold full-bleed orange

hero band, and a `{colors.surface-dark}` (`#202020`) section that hosts the

code stories — the "how it works" walkthrough. Curves are intentional and

soft: every interactive surface (buttons, inputs, tags, avatars) uses

`{rounded.full}`, while content cards and code wells step up to `{rounded.md}`

or `{rounded.lg}`. There are no sharp corners on Replicate; the system reads

as friendly precision.

**Key Characteristics:**

Colors

Brand & Accent

Surface

Text

Semantic

Typography

Font Family

Replicate ships a deliberate three-family stack:

When proprietary families cannot be licensed, **Bricolage Grotesque** or **Migra** are credible substitutes for rb-freigeist-neue, and **Geist** or **Inter** can stand in for basier-square. JetBrains Mono is open-source and should always be used directly.

Hierarchy

| Token | Size | Weight | Line Height | Letter Spacing | Use |

|---|---|---|---|---|---|

| `{typography.display-xxl}` | 128px | 700 | 1.0 | -3px | The single hero "Run AI" / "Imagine what you can build" headline. One per page. |

| `{typography.display-xl}` | 72px | 700 | 1.0 | -1.8px | Section openers ("How it works", "Scale on Replicate"). |

| `{typography.display-lg}` | 48px | 700 | 1.0 | -1px | Sub-section titles, pricing tier names. |

| `{typography.display-md}` | 30px | 600 | 1.2 | -0.5px | Feature card titles. |

| `{typography.heading-lg}` | 38.4px | 600 | 0.83 | -0.5px | Tightly-stacked basier-square headlines, used in pricing and enterprise hero. |

| `{typography.heading-md}` | 24px | 600 | 1.33 | -0.35px | Card titles, model detail headers. |

| `{typography.heading-sm}` | 20px | 600 | 1.4 | -0.3px | List section headers. |

| `{typography.subtitle}` | 18px | 600 | 1.56 | 0 | Lead paragraphs in display sections. |

| `{typography.body-lg}` | 18px | 400 | 1.56 | 0 | Marketing prose. |

| `{typography.body-md}` | 16px | 400 | 1.5 | 0 | Default body. |

| `{typography.body-sm}` | 14px | 400 | 1.43 | 0 | Captions, metadata. |

| `{typography.button-md}` | 16px | 600 | 1.0 | 0 | Default button label. |

| `{typography.button-sm}` | 14px | 600 | 1.0 | 0 | Compact button label, sub-nav pills. |

| `{typography.caption}` | 12px | 400 | 1.33 | 0 | Footer disclosure, copyright. |

| `{typography.caption-tight}` | 14px | 600 | 1.43 | -0.35px | Emphatic small caption used in pricing tier rows. |

| `{typography.code-md}` | 14px | 400 | 1.43 | 0 | Code blocks and inline code. |

| `{typography.code-sm}` | 11px | 400 | 1.5 | 0 | Code-tab labels and small inline tokens. |

Principles

Note on Font Substitutes

When the proprietary families are unavailable, clamp display `lineHeight` to 1.0 explicitly and apply a -3% letter-spacing on display-xxl / display-xl to match the original tightness. Substitutes typically render with looser tracking by default.

Layout

Spacing System

Grid & Container

Whitespace Philosophy

Elevation & Depth

| Level | Treatment | Use |

|---|---|---|

| 0 — flat | No shadow, no border | Default cream canvas, full-bleed bands. |

| 1 — outline | 1px solid `{colors.hairline}` or `{colors.hairline-strong}` | Model cards, pricing tiers, collection tiles. |

| 2 — bone inset | Surface colour shift to `{colors.surface-bone}` inside a `{colors.canvas}` band | Feature group containers, "How it works" walkthrough. |

| 3 — dark inversion | Card swaps to `{colors.surface-dark}` against cream | Code wells, featured pricing tier, "Scale on Replicate" hero card. |

| 4 — soft drop | `0 8px 24px rgba(32,32,32,0.08)` | Hover-anchored model thumbnails (visual only — not interaction-state-documented). |

Drop shadows exist in the extracted tokens but are restrained — used sparingly to lift photography thumbnails one step off the cream canvas. The dominant elevation language is colour-blocking.

Decorative Depth

Shapes

Border Radius Scale

| Token | Value | Use |

|---|---|---|

| `{rounded.none}` | 0px | Hero bands, full-bleed sections, footer. |

| `{rounded.xs}` | 4px | Code tabs, inline tags inside code wells. |

| `{rounded.sm}` | 6px | Mid-radius callouts, small inset chips. |

| `{rounded.md}` | 10px | Model cards, collection tiles, code wells. |

| `{rounded.lg}` | 16px | Pricing tiers, larger feature cards. |

| `{rounded.full}` | 9999px | Buttons, inputs, badges, avatars, pills. |

Photography Geometry

Components

Buttons

**`button-primary`** — orange CTA

**`button-dark`** — dark CTA

**`button-outline`** — outlined CTA

**`button-ghost`** — inline button

**`button-icon`** — icon button

Cards & Containers

**`model-card`** — model listing card

**`collection-tile`** — collection-of-models tile

**`pricing-tier`** — pricing tier card

**`pricing-tier-featured`** — featured pricing tier

**`code-block`** — code well

**`code-tab`** — code tab chip

**`hero-band`** — full-bleed hero

Inputs & Forms

**`text-input`** — default input

Navigation

**`nav-bar`** — top nav (desktop)

**`nav-bar`** (mobile)

**`sub-nav-pill`** — sub-nav chip

Signature Components

**`badge-status`** — model status badge

**`badge-tag`** — neutral tag

**`contributor-avatar`** — community contributor

**`footer`** — global footer

Do's and Don'ts

Do

Don't

Responsive Behavior

Breakpoints

| Name | Width | Key Changes |

|---|---|---|

| Desktop XL | ≥ 1440px | Full max-width 1280 body, hero band runs full-bleed, 4-up model grid. |

| Desktop | 1280–1439px | Container shrinks; padding `{spacing.xl}` (24px) sides. |

| Tablet Large | 1024–1279px | Model grid 3-up, code-story splits remain 2-up. |

| Tablet | 768–1023px | Model grid 2-up, code-story stacks (narrative on top, code below), pricing stacks vertically. |

| Mobile Large | 426–767px | Model grid 1-up at 480px+, nav collapses to hamburger, hero `{typography.display-xxl}` clamps to 64px. |

| Mobile | ≤ 425px | All grids 1-up, hero clamps to 48px, section padding `{spacing.section}` collapses to 64px. |

Touch Targets

Collapsing Strategy

Image Behavior

Iteration Guide

1. Focus on ONE component at a time. Most interactive elements share `{rounded.full}` and the `{colors.canvas}` / `{colors.surface-card}` pair — only the role-specific tokens (`{colors.primary}`, `{component.code-block}`) shift between variants.

2. Reference component names and tokens directly (`{colors.primary}`, `{component.button-primary-pressed}`, `{rounded.lg}`) — do not paraphrase.

3. Run `npx @google/design.md lint DESIGN.md` after edits; orphaned-tokens warnings will catch unused entries.

4. Add new variants as separate entries (`-pressed`, `-disabled`, `-featured`) — do not bury them in prose.

5. Default body type to `{typography.body-md}`; reach for `{typography.subtitle}` only on hero subtitles.

6. Keep `{colors.primary}` scarce — if more than one orange element appears per viewport, ask whether one should drop to `{colors.surface-dark}` instead.

Known Gaps