PostHog

A playful developer-tools system rendered on a warm cream canvas with hand-drawn hedgehog mascots dotted across every page like marginalia in a sketchbook. The chrome reads like a friendly engineering blog: olive-gray ink (#4d4f46) for body, deep olive-charcoal (#23251d) for headlines, IBM Plex Sans Variable typography in tight 1.43-line-height paragraphs, and a single saturated yellow-orange CTA

Homepage Example

PostHog
Features Docs Sign Up Free
Revenue
$4520
Active Users
$3078
Uptime
$4154
Products
Product A$2889
Product B$1362
Product C$9555
© 2026 PostHog

Color Palette (28)

primary#f7a501
primary-pressed#dd9001
primary-active#b17816
on-primary#23251d
ink#23251d
body#4d4f46
charcoal#33342d
mute#6c6e63
ash#9b9c92
stone#b6b7af
hairline#bfc1b7
hairline-soft#dcdfd2
on-dark#ffffff
canvas#eeefe9
surface-soft#e5e7e0
surface-card#ffffff
surface-doc#fcfcfa
surface-dark#23251d
link-blue#1d4ed8
link-teal#1078a3
accent-blue#2c84e0
accent-blue-soft#dceaf6
accent-red#cd4239
accent-red-soft#f7d6d3
accent-green#2c8c66
accent-green-soft#d9eddf
accent-purple#7c44a6
accent-purple-soft#e7d8ee

Typography (20)

PostHog
display-xl36px · weight 700
PostHog
display-lg24px · weight 800
PostHog
heading-lg21px · weight 700
PostHog
heading-md20px · weight 700
PostHog
heading-sm18px · weight 700
PostHog
heading-sm-mixed18px · weight 600
PostHog
body-md16px · weight 400
PostHog
body-strong16px · weight 600
PostHog
body-sm15px · weight 400
PostHog
body-sm-strong15px · weight 600
PostHog
body-xs14px · weight 500
PostHog
caption-md14px · weight 700
PostHog
caption-sm13px · weight 500
PostHog
caption-xs12px · weight 600
PostHog
utility-xs12px · weight 700
PostHog
link-md16px · weight 400
PostHog
button-md14px · weight 700
PostHog
button-sm13px · weight 500
PostHog
code-sm14px · weight 400
PostHog
code-xs14px · weight 500

Components (30)

button-primary
button-primary
button-primary-pressed
button-primary-pressed
button-secondary
button-secondary
button-tertiary
button-tertiary
button-disabled
button-disabled
text-input
text-input
text-input-focused
text-input-focused
search-input
search-input
product-card
product-card
doc-card
doc-card
feature-tile
feature-tile
pricing-tier-card
pricing-tier-card
hedgehog-mascot-card
hedgehog-mascot-card
product-tab
product-tab
product-tab-active
product-tab-active
pill-tab
pill-tab
pill-tab-active
pill-tab-active
badge-uppercase
badge-uppercase
badge-promo
badge-promo
banner-tip-blue
banner-tip-blue
banner-tip-green
banner-tip-green
banner-tip-red
banner-tip-red
banner-tip-purple
banner-tip-purple
code-block
code-block
inline-code
inline-code
primary-nav
primary-nav
sub-nav-strip
sub-nav-strip
doc-sidebar
doc-sidebar
footer-section
footer-section
link-inline
link-inline

Border Radius

none (0px)
xs (2px)
sm (4px)
md (6px)
lg (8px)
full (9999px)

Design Philosophy

Overview

PostHog's marketing system is built on the visual contradiction at the heart of the brand: a serious open-source product analytics platform rendered as if it were a friendly engineering sketchbook. The chrome runs on a warm cream canvas (`{colors.canvas}` — `#eeefe9`) — not white — and every page is dotted with hand-drawn hedgehog mascots in lab coats, lounge chairs, terminals, and reading glasses, scattered across the layout like marginalia in a textbook. Type sits in IBM Plex Sans Variable at olive-gray (`{colors.body}` — `#4d4f46`) for body and deep olive-charcoal (`{colors.ink}` — `#23251d`) for headlines, with weights stepped tightly between 400, 600, 700, and 800 to create hierarchy without color. The single saturated yellow-orange pill (`{colors.primary}` — `#f7a501`) is the brand's only loud chromatic moment; everything else is cream, olive, white card, and the occasional pastel callout band.

The system has a distinctive **two-mode body layout**: marketing pages (home, workflows, pricing) lean on alternating-pastel callout bands and feature tiles in white cards on cream, while documentation pages add a sticky 240px left sidebar with a rounded outline-icon section list. Code samples are full-width dark blocks on `{colors.surface-dark}` (the same olive-charcoal that carries body ink, used inverted) inside white doc cards, creating the system's most distinctive visual moment: a dark-on-dark code island floating inside a white card on a cream canvas, with a hedgehog mascot doodled in the margin.

Sections stack at `{spacing.section}` (80px) rhythm with cream canvas continuing edge-to-edge between them. The only color bands that interrupt the cream are pastel `{component.banner-tip-blue}` / `-green` / `-red` / `-purple` callout panels inside doc articles — soft tinted boxes that carry "💡 Tip", "✅ Success", "⚠️ Warning", "📘 Info" inline annotations. There are no decorative gradients, no atmospheric mesh backgrounds, and no full-bleed dark hero chapters; the cream canvas runs uninterrupted top to bottom and the hedgehogs are the entire visual identity.

**Key Characteristics:**

  • Warm cream canvas (`{colors.canvas}` — #eeefe9) end-to-end with no surface alternation between sections — the page is one continuous sheet
  • Single yellow-orange CTA pill (`{colors.primary}` — #f7a501) with deep olive text (`{colors.on-primary}`) — the brand's only saturated color
  • IBM Plex Sans Variable across every text role with weights 400/500/600/700/800 — no other typeface in the system
  • Hand-drawn hedgehog mascots scattered across the layout as the entire decorative system — no gradients, no mesh, no atmospheric backgrounds
  • 4–8px radius card vocabulary: `{rounded.md}` (6px) for most components, `{rounded.lg}` (8px) for select containers, fully rounded for pill chips
  • Pastel callout banners (`{colors.accent-blue-soft}`, `{colors.accent-green-soft}`, `{colors.accent-red-soft}`, `{colors.accent-purple-soft}`) break up doc article body with soft tinted side rails for tips/warnings/info
  • Documentation pages add a sticky 240px `{component.doc-sidebar}` with rounded outline-icon section nav and an "Ask PostHog AI" CTA at the top

Colors

> **Source pages:** `/` (home), `/pricing` (pricing detail), `/docs/product-analytics` (docs article), `/workflows` (product feature page). The chrome palette is identical across all four pages — only doc-specific accents (callout-banner pastels, code-block dark surface) appear exclusively inside the docs experience.

Brand & Accent

  • **PostHog Yellow** (`{colors.primary}` — `#f7a501`): the universal primary CTA. Sticky "Get started — free" pill in the top-right of every nav, hero CTAs, pricing-tier subscribe buttons, footer signup pill. The system's only saturated chromatic moment.
  • **Yellow Pressed** (`{colors.primary-pressed}` — `#dd9001`): pressed state for the primary pill.
  • **Yellow Active** (`{colors.primary-active}` — `#b17816`): deeply-pressed yellow + the system's gold-toned border accent (rare 1px gold rule on inline form elements).

Surface

  • **Canvas** (`{colors.canvas}` — `#eeefe9`): the warm cream page background. End-to-end on every page; the brand's most distinctive surface choice.
  • **Soft Surface** (`{colors.surface-soft}` — `#e5e7e0`): button-secondary fill, sub-nav strip background, inline-code chip background.
  • **Surface Card** (`{colors.surface-card}` — `#ffffff`): true white card and tile background sitting on top of the cream canvas. The dominant card surface.
  • **Surface Doc** (`{colors.surface-doc}` — `#fcfcfa`): a faintly cream-warm white used inside doc article body cards — slightly softer than pure white to keep the page tonally unified.
  • **Surface Dark** (`{colors.surface-dark}` — `#23251d`): the deep olive-charcoal used inverted as code-block background. The same hex as `{colors.ink}` — the brand uses one olive-near-black for both text and dark code surfaces.
  • **Hairline** (`{colors.hairline}` — `#bfc1b7`): 1px card border, table rule, footer column dividers.
  • **Hairline Soft** (`{colors.hairline-soft}` — `#dcdfd2`): in-card row divider, soft inset rule.
  • **On Dark** (`{colors.on-dark}` — `#ffffff`): primary text on `{colors.surface-dark}` code blocks.

Text

  • **Ink** (`{colors.ink}` — `#23251d`): headlines, button text on light, primary nav links — deep olive-charcoal that reads near-black against cream.
  • **Body** (`{colors.body}` — `#4d4f46`): default paragraph text, doc article body, inline link color before hover. The brand's most-used text color.
  • **Charcoal** (`{colors.charcoal}` — `#33342d`): emphasized body text where body is too soft.
  • **Mute** (`{colors.mute}` — `#6c6e63`): metadata, footer link text, in-list secondary annotations.
  • **Ash** (`{colors.ash}` — `#9b9c92`): disabled-state text and lowest-emphasis utility.
  • **Stone** (`{colors.stone}` — `#b6b7af`): least-emphasis caption text and disabled icon color.

Semantic

  • **Link Blue** (`{colors.link-blue}` — `#1d4ed8`): inline anchor link inside body prose. The system's primary informational link color.
  • **Link Teal** (`{colors.link-teal}` — `#1078a3`): doc-article inline link variant, paired with body text.
  • **Accent Blue** (`{colors.accent-blue}` — `#2c84e0`) + **Accent Blue Soft** (`{colors.accent-blue-soft}` — `#dceaf6`): "💡 Tip / Info" callout banner inside docs.
  • **Accent Red** (`{colors.accent-red}` — `#cd4239`) + **Accent Red Soft** (`{colors.accent-red-soft}` — `#f7d6d3`): "⚠️ Warning / Caution" callout banner.
  • **Accent Green** (`{colors.accent-green}` — `#2c8c66`) + **Accent Green Soft** (`{colors.accent-green-soft}` — `#d9eddf`): "✅ Success / Positive" callout banner.
  • **Accent Purple** (`{colors.accent-purple}` — `#7c44a6`) + **Accent Purple Soft** (`{colors.accent-purple-soft}` — `#e7d8ee`): "📘 Note / Reference" callout banner.
  • **Focus Ring** (`{colors.focus-ring}` — `rgba(59,130,246,0.5)`): translucent blue browser-default focus ring around interactive elements.

Typography

Font Family

**IBM Plex Sans Variable** is the system's primary face — used across every text role on every page at weights 400 (regular), 500 (medium), 600 (semibold), 700 (bold), and 800 (extra-bold). Falls back through `IBM Plex Sans` → `-apple-system` → `system-ui` → broad cross-platform sans stack.

**ui-monospace** + **Source Code Pro** carry code samples and inline-code chips at 14px / 1.43 line-height. Source Code Pro is the explicit display monospace; ui-monospace handles inline `<code>` chips.

The brand-distinctive choice is the **mixed weight ladder** (400 / 500 / 600 / 700 / 800) — most chrome lives in the 400–700 band, with weight 800 reserved exclusively for the larger display headlines on home and pricing. This gives the system its "engineering blog" feel: hierarchy is built from weight contrast much more than from size.

Hierarchy

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

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

| `{typography.display-xl}` | 36px | 700 | 1.5 | 0 | Hero headline ("The new way to build products") |

| `{typography.display-lg}` | 24px | 800 | 1.33 | -0.6px | Section headline, pricing tier name |

| `{typography.heading-lg}` | 21px | 700 | 1.4 | -0.5px | Sub-section heading, doc-article H2 |

| `{typography.heading-md}` | 20px | 700 | 1.4 | 0 | Card group title, in-grid heading |

| `{typography.heading-sm}` | 18px | 700 | 1.5 | 0 (uppercase) | Section eyebrow ("UNDERSTAND PRODUCT USAGE") |

| `{typography.heading-sm-mixed}` | 18px | 600 | 1.56 | 0 | Card title in mixed-case (no uppercase transform) |

| `{typography.body-md}` | 16px | 400 | 1.5 | 0 | Body copy, default paragraph |

| `{typography.body-strong}` | 16px | 600 | 1.5 | 0 | Inline emphasis, primary nav link, in-card label |

| `{typography.body-sm}` | 15px | 400 | 1.71 | 0 | Doc article body, marketing card description |

| `{typography.body-sm-strong}` | 15px | 600 | 1.71 | 0 | Sub-section emphasis inside doc article |

| `{typography.body-xs}` | 14px | 500 | 1.43 | 0 | Doc sidebar item, metadata, in-list caption |

| `{typography.caption-md}` | 14px | 700 | 1.71 | 0 | Card eyebrow, link cluster header |

| `{typography.caption-sm}` | 13px | 500 | 1.5 | 0 | Compact metadata caption |

| `{typography.caption-xs}` | 12px | 600 | 1.33 | 0 (uppercase) | Inline badge label |

| `{typography.utility-xs}` | 12px | 700 | 1.33 | 0 (uppercase) | Section-eyebrow utility text, footer category header |

| `{typography.link-md}` | 16px | 400 | 1.5 | 0 | Inline body anchor link |

| `{typography.button-md}` | 14px | 700 | 1.5 | 0 | Standard primary/secondary button label |

| `{typography.button-sm}` | 13px | 500 | 1 | 0 | Pill chip / compact CTA |

| `{typography.code-sm}` | 14px | 400 | 1.43 | 0 | Code block content |

| `{typography.code-xs}` | 14px | 500 | 1.43 | 0 | Inline code chip |

Principles

The hierarchy is explicitly built from weight + size + occasional uppercase transform — there is no italic style, no decorative display variant, no proprietary face. The biggest display moments use weight 800 with -0.6px tracking, and the body settles at 400 with 1.5 line-height; everything else fills the band between. Section eyebrows (`{typography.heading-sm}` and `{typography.utility-xs}`) consistently render uppercase, which gives the doc layout its textbook-chapter feel.

Note on Font Substitutes

IBM Plex Sans Variable is open-source and Google-Fonts-hosted. There is no need for a substitute — load it directly. If a substitute is genuinely needed, **Inter** is the closest geometric match at all five weights; pair with Inter's letter-spacing -0.5 to -0.6px on display sizes to approximate Plex's display tracking. For monospace, **JetBrains Mono** is a near-perfect substitute for Source Code Pro at body sizes.

Layout

Spacing System

  • **Base unit:** 8px (with finer 2/4/6px steps for tight inline gaps in callout banners and pill buttons).
  • **Tokens (front matter):** `{spacing.xxs}` (2px) · `{spacing.xs}` (4px) · `{spacing.sm}` (8px) · `{spacing.md}` (12px) · `{spacing.lg}` (16px) · `{spacing.xl}` (24px) · `{spacing.xxl}` (32px) · `{spacing.section}` (80px).
  • **Universal section rhythm:** every page in the set uses `{spacing.section}` (80px) as the vertical gap between major content blocks. Card grids use `{spacing.lg}` (16px) gutters; card internal padding sits at `{spacing.xl}` (24px) for product cards and `{spacing.xxl}` (32px) for pricing tier cards.

Grid & Container

  • **Max width:** ~1280px content area at desktop with 24px gutters (~48px at ultrawide). Doc article body sits at ~720px max width with the 240px sidebar pushing the article column right of center.
  • **Marketing card grid:** 4-up at desktop, 3-up at 1024px, 2-up at 768px, 1-up at 480px. Cards preserve a fixed 1:1 or 4:3 ratio.
  • **Pricing tier grid:** 3-up at desktop with a left rail of plan info, collapsing to 2-up + 1 at tablet and 1-up at mobile.
  • **Doc layout:** desktop 240px sticky left sidebar + ~720px article body + (optional) 200px right TOC rail = ~1160px content width.
  • **Footer:** 6-column horizontal link grid at desktop, 3-up at tablet, 2-up at mobile.

Whitespace Philosophy

Whitespace is generous on marketing pages and tight on doc pages. The home and workflows pages stack feature tiles with `{spacing.lg}` (16px) gutters and 24px internal padding, while doc articles tighten internal spacing to `{spacing.md}` (12px) between paragraphs to maximize information density. The cream canvas runs continuously through every section — there are no decorative dividers, no shaded section bands; only the 1px hairline beneath section eyebrows and footer column rules separate content blocks.

Elevation & Depth

| Level | Treatment | Use |

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

| 0 — Flat | No border, no shadow | Default for canvas-on-canvas blocks, hero text, body sections |

| 1 — Hairline border | 1px solid `{colors.hairline}` | Marketing cards, pricing tier cards, doc sidebar items, footer column rules |

| 2 — Hairline soft | 1px solid `{colors.hairline-soft}` | In-card row divider between adjacent rows |

| 3 — Inverted dark code block | `{colors.surface-dark}` fill | Code samples inside doc cards — the system's only "elevated" surface uses color, not shadow |

The system has no drop-shadow elevation in marketing or product chrome. Cards sit flat on cream with thin olive borders. The single inverted moment is the dark code-block surface used inside doc article body cards.

Decorative Depth

Depth comes entirely from illustration and the pastel callout band system, not from CSS effects:

  • **Hand-drawn hedgehog mascots** — characters in various costumes (lab coat, terminal, lounge chair, magnifying glass, hammock, hat) scattered across pages as marginalia. Always rendered as flat color illustrations, never photographs.
  • **Pastel callout banners** — `{component.banner-tip-blue}` / `-green` / `-red` / `-purple` soft tinted side-rail panels inside doc articles, each prefixed with an emoji icon (💡 ✅ ⚠️ 📘) and carrying tip/warning/note copy.
  • **Code blocks** — full-width dark olive-charcoal panels on `{colors.surface-dark}` with white code text. The system's most cinematic surface, used inside white doc cards.
  • **Outline product icons** in the doc sidebar — small rounded-square mini-illustrations (chart icon, funnel, session-replay icon) mark each major product section.

Shapes

Border Radius Scale

| Token | Value | Use |

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

| `{rounded.none}` | 0px | Sub-nav strip, footer, doc sidebar, primary nav — flat structural surfaces |

| `{rounded.xs}` | 2px | Inline `<code>` chips, micro-rule highlights |

| `{rounded.sm}` | 4px | Inline buttons, form inputs, micro chips |

| `{rounded.md}` | 6px | Marketing cards, pricing cards, doc cards, code blocks, every standard CTA |

| `{rounded.lg}` | 8px | Tab top corners (`6px 6px 0 0` on active tab) and rare large containers |

| `{rounded.full}` | 9999px | Pill chips and pill-style CTAs ("Get started — free" sticky CTA in nav) |

The radius vocabulary clusters around 4–6px for nearly everything; the only fully-rounded element is the pill-style sticky nav CTA and inline pill chips.

Photography Geometry

There is no photography. Visual elements are limited to:

  • **Hedgehog character illustrations** — flat-color cartoon hedgehogs ranging from ~80px (in-card mascot) to ~240px (hero illustration). Always at native aspect, never cropped to a frame.
  • **Outline product icons** in the doc sidebar — 20–24px rounded-square illustrations.
  • **Inline emoji** at 14–16px inside callout banners (💡 ✅ ⚠️ 📘) — used as functional iconography rather than decoration.
  • **Section illustrations** on the home page — small hedgehog vignettes paired with each "Understand product usage" / "Build sticky habits" / "Test before launch" feature row.

Components

> **No hover states documented** per system policy. Each spec covers Default and Active/Pressed only.

Buttons

**`button-primary`** — the universal PostHog CTA

  • Background `{colors.primary}` (yellow-orange), text `{colors.on-primary}` (deep olive), type `{typography.button-md}`, padding `8px 16px`, height `40px`, rounded `{rounded.md}`.
  • Used for "Get started — free" (sticky top-nav CTA), "Sign up", "Try it free", "Subscribe" — every primary action.
  • Pressed state lives in `button-primary-pressed` — background drops to `{colors.primary-pressed}`.

**`button-secondary`** — soft alternative on cream canvas

  • Background `{colors.surface-soft}` (`#e5e7e0`), text `{colors.ink}`, type `{typography.button-md}`, padding `8px 16px`, height `40px`, rounded `{rounded.md}`.
  • "Talk to sales", "Read docs", "Watch demo" — second-tier actions paired with the yellow primary.

**`button-tertiary`** — ghost text button

  • Background transparent, text `{colors.ink}`, type `{typography.button-md}`, padding `8px 12px`, rounded `{rounded.md}`.
  • Lowest-emphasis action: "See all docs →", "Browse all features".

**`button-disabled`**

  • Background `{colors.surface-soft}`, text `{colors.ash}` — flat soft cream-gray.

Tabs & Chips

**`product-tab`** + **`product-tab-active`** — major product section tabs

  • Default: transparent background, text `{colors.body}`, type `{typography.body-strong}`, padding `8px 12px`, rounded `{rounded.md}`.
  • Active: background flips to `{colors.surface-card}` (white), text `{colors.ink}` — the tab card lifts off the cream canvas as the visual signal of selection.

**`pill-tab`** + **`pill-tab-active`** — compact filter pill

  • Default: transparent background, text `{colors.body}`, type `{typography.button-sm}`, padding `6px 14px`, rounded `{rounded.full}`.
  • Active: background flips to `{colors.ink}`, text `{colors.on-dark}` — the chip flips fully inverted on selection.

**`badge-uppercase`** — text-only utility label

  • Background transparent, text `{colors.body}` in `{typography.utility-xs}` (uppercase) — used as in-list category prefix ("FEATURE FLAG", "EXPERIMENT", "HEATMAP").

**`badge-promo`** — small inline pill chip

  • Background `{colors.accent-blue-soft}`, text `{colors.link-blue}`, type `{typography.caption-xs}`, padding `2px 8px`, rounded `{rounded.full}`.
  • "New", "Beta", "Coming soon" pill labels overlaid on cards.

Inputs & Forms

**`text-input`** + **`text-input-focused`**

  • Default: background `{colors.surface-card}`, text `{colors.ink}`, 1px solid `{colors.hairline}`, type `{typography.body-md}`, padding `8px 12px`, height `36px`, rounded `{rounded.md}`.
  • Focused: same surface; 2px solid `{colors.accent-blue}` border replaces the 1px hairline + a translucent `{colors.focus-ring}` outline.

**`search-input`** — utility search field (doc sidebar, "Ask PostHog AI")

  • Same dimensions as `text-input` with a magnifier glyph at the left edge in `{colors.mute}`.

Cards & Containers

**`product-card`** — marketing tile / feature card

  • Container: background `{colors.surface-card}` (white), 1px solid `{colors.hairline}`, padding `{spacing.xl}` (24px), rounded `{rounded.md}`.
  • Layout: small hedgehog illustration at top-left, `{typography.heading-sm-mixed}` title, `{typography.body-sm}` description, optional `{component.button-tertiary}` "Learn more →" link.

**`doc-card`** — doc article body card

  • Container: background `{colors.surface-doc}` (`#fcfcfa` warm-white), 1px solid `{colors.hairline}`, padding `{spacing.xl}` (24px), rounded `{rounded.md}`.
  • Carries article body sections, code blocks, callout banners, and tables inside doc pages.

**`feature-tile`** — small marketing feature tile

  • Container: background `{colors.surface-card}`, 1px solid `{colors.hairline}`, padding `{spacing.lg}` (20px), rounded `{rounded.md}`.
  • Used in 3-up or 4-up grids on home and workflows pages — paired with a small icon and a 1-line description.

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

  • Container: background `{colors.surface-card}`, 1px solid `{colors.hairline}`, padding `{spacing.xxl}` (32px), rounded `{rounded.md}`.
  • Layout: tier name in `{typography.display-lg}` (24px / 800 / -0.6px), large price + period, feature checklist with check-icon bullets, primary or secondary CTA at bottom.

**`hedgehog-mascot-card`** — feature card with margin-anchored hedgehog

  • Same chrome as `{component.product-card}` but with a hand-drawn hedgehog illustration anchored in the right margin or top-right corner — the brand's signature card variant.

Callout Banners

**`banner-tip-blue`** + **`banner-tip-green`** + **`banner-tip-red`** + **`banner-tip-purple`**

  • Background `{colors.accent-blue-soft}` / `{colors.accent-green-soft}` / `{colors.accent-red-soft}` / `{colors.accent-purple-soft}`, text `{colors.ink}`, type `{typography.body-md}`, padding `16px 20px`, rounded `{rounded.md}`.
  • Each prefixed with an inline emoji icon (💡 / ✅ / ⚠️ / 📘) followed by an inline label and body copy.
  • Only appear inside doc article body. The four-color callout family is the brand's information-architecture vocabulary for inline tips/warnings/info inside long-form documentation.

Code

**`code-block`** — dark code sample inside doc card

  • Container: background `{colors.surface-dark}` (deep olive-charcoal), text `{colors.on-dark}` in `{typography.code-sm}`, padding `16px 20px`, rounded `{rounded.md}`.
  • Syntax highlighting uses muted accent colors (blue for keywords, green for strings, purple for numbers) — never the bright accent colors used in callout banners.

**`inline-code`** — small inline `<code>` chip

  • Background `{colors.surface-soft}`, text `{colors.ink}` in `{typography.code-xs}`, padding `2px 6px`, rounded `{rounded.xs}` (2px).
  • Used inside body prose to mark code snippets and identifiers.

Navigation

**`primary-nav`**

  • Background `{colors.canvas}` (cream — same as the page), text `{colors.ink}`, height `56px`, type `{typography.body-strong}`, rounded `{rounded.none}`.
  • Layout (desktop): PostHog wordmark + hedgehog logo at left, nav menu cluster ("Pricing · Docs · Community · Company"), right cluster with a search-glyph, "Login" link, and the always-yellow `{component.button-primary}` "Get started — free" pill anchored to the far right.

**`sub-nav-strip`** — secondary nav bar (under primary)

  • Background `{colors.surface-soft}`, text `{colors.body}` in `{typography.body-xs}`, height `40px`, rounded `{rounded.none}`.
  • Sits directly below the primary nav on workflows / product pages with section anchor links and a contextual "Get started →" link at the right.

**`doc-sidebar`** — sticky doc-page left sidebar

  • Background `{colors.canvas}`, text `{colors.body}` in `{typography.body-xs}`, width `240px`, rounded `{rounded.none}`.
  • Layout: search-input "Ask PostHog AI" at top, then a vertical list of section headers each with a small rounded outline-icon mini-illustration, then nested item links indented under the active header.

**Top Nav (Mobile)**

  • Hamburger menu icon at left, PostHog wordmark + hedgehog at center, search + sticky yellow "Get started — free" CTA at right. Primary nav collapses into a full-height drawer that slides from the left.

Footer

**`footer-section`**

  • Background `{colors.canvas}`, text `{colors.body}` in `{typography.body-xs}`, padding `32px 24px`, rounded `{rounded.none}`, with a 1px `{colors.hairline}` top rule.
  • Layout: 6-column horizontal link grid (Product · Resources · Company · Community · Pricing · Legal), each column with a `{typography.utility-xs}` (uppercase) header and a vertical list of links in `{typography.body-xs}` `{colors.body}`.
  • Bottom row: PostHog wordmark + small hedgehog illustration, copyright in `{typography.caption-xs}` `{colors.mute}`, social-icon row at far-right.

Inline

**`link-inline`** — body-prose anchor link

  • `{colors.link-teal}` (`#1078a3`) in body prose with no underline by default; underline appears on focus. The brand's primary inline link color.

Do's and Don'ts

Do

  • Use `{colors.canvas}` (cream — `#eeefe9`) as the page body. Never substitute pure white as the canvas.
  • Reserve `{colors.primary}` (yellow-orange) for the primary CTA pill only. The "Get started — free" treatment is the brand's anchor.
  • Render the brand wordmark with the hedgehog illustration alongside it, not as a stand-alone wordmark. The hedgehog IS the brand identity.
  • Use IBM Plex Sans Variable across every text role — body 400, emphasis 600/700, display 800.
  • Stack content sections at `{spacing.section}` (80px) rhythm with no decorative dividers between them; let the cream canvas continue uninterrupted.
  • Use `{component.banner-tip-blue}` / `-green` / `-red` / `-purple` only inside doc article body for tip/warning/note panels — keep marketing chrome out of the four-color callout family.
  • Pair every code sample with the dark `{component.code-block}` surface; inline `<code>` chips use `{component.inline-code}` (cream surface-soft chip).
  • Anchor a hedgehog mascot illustration in feature tile margins on home and workflows pages — the system's signature decoration.

Don't

  • Don't introduce drop shadows on cards. Cards sit flat on cream with thin olive borders only.
  • Don't add a second saturated chromatic CTA. Yellow-orange is the only loud color in the system.
  • Don't replace the cream canvas with pure white or full-bleed dark hero bands. The cream is the brand.
  • Don't use the four-color callout banner pastels (`{colors.accent-blue-soft}`, `-green`, `-red`, `-purple`) as marketing-card backgrounds. They belong to inline doc content only.
  • Don't substitute the hedgehog illustration with a generic icon set. The character system is the brand.
  • Don't use uppercase transform outside of `{typography.heading-sm}`, `{typography.utility-xs}`, and `{typography.caption-xs}`. Uppercase is reserved for eyebrows and footer category headers.
  • Don't pad cards with 32px+ on all sides except for `{component.pricing-tier-card}`. Standard cards sit at 24px internal padding.

Responsive Behavior

Breakpoints

| Name | Width | Key Changes |

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

| ultrawide | 1920px+ | Content max-width holds at 1280px; outer gutters grow to ~80px |

| desktop-large | 1440px | Default — 4-up feature tile grid, 240px sticky doc sidebar visible |

| desktop | 1280px | Same layout with narrower outer gutters |

| desktop-small | 1024px | 4-up tiles collapse to 3-up; doc sidebar remains visible |

| tablet | 768px | 3-up tiles collapse to 2-up; doc sidebar collapses into a top accordion; primary nav becomes hamburger |

| mobile | 480px | Single-column everything; hero `{typography.display-xl}` scales 36px → ~28px |

| mobile-narrow | 320px | Section padding tightens to 32px |

Touch Targets

All interactive elements meet WCAG AA (≥ 40×40px). `{component.button-primary}` and `{component.button-secondary}` sit at 40px height with 16px padding. `{component.text-input}` sits at 36px (just under AAA but above AA at this size). `{component.pill-tab}` is ~32–36px height with 14px padding extending to ~44px tappable via inline padding. Doc-sidebar items use 14px text with ~32px line-height + 6px vertical padding for ~44px tap rows.

Collapsing Strategy

  • **Primary nav:** desktop horizontal cluster → tablet hamburger drawer at 768px. The yellow "Get started — free" CTA stays visible at every breakpoint.
  • **Sub-nav strip:** desktop horizontal anchor row → tablet horizontal scroll → mobile select dropdown.
  • **Marketing card grid:** 4-up → 3-up → 2-up → 1-up at 1024, 768, and 480px; gutters drop from 16px to 12px on mobile.
  • **Pricing grid:** 3-up → 2+1 → 1-up stacked at tablet and below.
  • **Doc layout:** desktop 240px sidebar + 720px article → tablet sidebar collapses to a top accordion → mobile fully collapsed accordion.
  • **Footer:** 6-up link columns → 3-up at tablet → 2-up at mobile.
  • **Section padding:** `{spacing.section}` (80px) desktop → 64px tablet → 48px mobile.
  • **Hero headline:** `{typography.display-xl}` (36px) at desktop, scaling to ~28px at mobile, line-height holding at 1.5.

Image Behavior

The only "imagery" in the system is hand-drawn hedgehog illustrations rendered as inline SVG. They preserve their natural aspect at every breakpoint and scale via CSS `width: auto; max-width: 100%`. There is no responsive art-direction needed because there is no photography.

Iteration Guide

1. Focus on ONE component at a time. Pull its YAML entry and verify every property resolves.

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

3. Run `npx @google/design.md lint DESIGN.md` after edits — `broken-ref`, `contrast-ratio`, and `orphaned-tokens` warnings flag issues automatically.

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

5. Default body to `{typography.body-md}` (16px / 400 / 1.5); reach for `{typography.body-strong}` for emphasis; reserve `{typography.display-lg}` (24px / 800) strictly for marketing display moments.

6. Keep `{colors.primary}` scarce per viewport — at most one yellow-orange pill per fold.

7. When introducing a new component, ask whether it can be expressed with the existing card + 6px-radius + cream-canvas vocabulary before adding new tokens. The system's strength is that it almost never needs new ones.

Known Gaps

  • **Mobile screenshots not captured** — responsive behavior synthesizes PostHog's mobile pattern (hamburger drawer, single-column grid, doc sidebar accordion) from desktop evidence and the breakpoint stack.
  • **Hover states not documented** by system policy.
  • **In-product app chrome** (PostHog dashboard, charts, session replay player) not in the captured set — the marketing site is documented here, not the in-product analytics interface.
  • **Authenticated chrome** (login modal, account dashboard, billing settings) not in the captured pages.
  • **Form validation states** beyond the focused-state input not present in the captured surfaces.
  • **Marketing illustration set** — the full library of hedgehog character poses is not enumerated here; specific poses (lab coat hedgehog, terminal hedgehog, hammock hedgehog) are noted as visible in screenshots but the full asset library is page-specific.

개요

PostHog의 마케팅 시스템은 브랜드 중심에 있는 시각적 모순, 즉 친숙한 엔지니어링 스케치북인 것처럼 렌더링된 진지한 오픈 소스 제품 분석 플랫폼을 기반으로 구축되었습니다. 크롬은 흰색이 아닌 따뜻한 크림색 캔버스(`{colors.canvas}` - `#eeefe9`)에서 실행되며 모든 페이지에는 실험실 가운, 라운지 의자, 터미널 및 돋보기 안경을 착용한 손으로 그린 ​​고슴도치 마스코트가 교과서의 여백처럼 레이아웃 전체에 흩어져 있습니다. 유형은 본문의 경우 올리브 회색(`{colors.body}` - `#4d4f46`), 헤드라인의 경우 진한 올리브색(`{colors.ink}` - `#23251d`)의 IBM Plex Sans 변수에 위치하며 가중치는 400, 600, 700 및 800 사이에서 긴밀하게 조정되어 색상 없는 계층 구조를 만듭니다. 단일 포화 노란색-주황색 알약(`{colors.primary}` — `#f7a501`)은 브랜드의 유일한 시끄러운 반음계 순간입니다. 그 밖의 모든 것은 크림색, 올리브색, 흰색 카드 및 가끔 파스텔 콜아웃 밴드입니다.

시스템에는 고유한 **2가지 모드 본문 레이아웃**이 있습니다. 마케팅 페이지(홈, 워크플로, 가격 책정)는 파스텔 색상의 콜아웃 밴드와 크림색의 흰색 카드로 된 기능 타일을 번갈아 사용하는 반면, 문서 페이지에는 둥근 개요 아이콘 섹션 목록이 있는 끈끈한 240px 왼쪽 사이드바가 추가됩니다. 코드 샘플은 흰색 문서 카드 내부의 `{colors.surface-dark}`(바디 잉크를 운반하는 것과 동일한 올리브 숯, 반전되어 사용됨)의 전폭 어두운 블록으로, 시스템의 가장 독특한 시각적 순간을 만들어냅니다. 여백에 낙서된 고슴도치 마스코트와 함께 크림색 캔버스의 흰색 카드 내부에 떠 있는 암흑 위의 코드 섬입니다.

섹션은 크림색 캔버스가 섹션 사이에서 가장자리까지 이어지는 `{spacing.section}`(80px) 리듬으로 쌓입니다. 크림색을 방해하는 유일한 색상 밴드는 문서 기사 내부의 파스텔 `{comComponent.banner-tip-blue}` / `-green` / `-red` / `-purple` 콜아웃 패널입니다. 즉, "💡 팁", "✅ 성공", "⚠️ 경고", "📘 정보" 인라인 주석이 포함된 부드러운 색조 상자입니다. 장식적인 그라디언트도 없고, 분위기 있는 메쉬 배경도 없고, 완전한 다크 히어로 챕터도 없습니다. 크림색 캔버스는 위에서 아래로 중단 없이 이어지며 고슴도치는 전체 시각적 아이덴티티입니다.

**주요 특징:**

  • 따뜻한 크림색 캔버스(`{colors.canvas}` — #eeefe9) 섹션 간 표면 교체 없이 끝에서 끝까지 — 페이지는 하나의 연속 시트입니다.
  • 진한 올리브색 텍스트(`{colors.on-primary}`)가 포함된 단일 노란색-주황색 CTA 알약(`{colors.primary}` — #f7a501) — 브랜드의 유일한 채도가 높은 색상
  • IBM Plex Sans 가중치가 400/500/600/700/800인 모든 텍스트 역할에 대한 변수 - 시스템에 다른 서체 없음
  • 전체 장식 시스템으로 레이아웃 전체에 손으로 그린 고슴도치 마스코트가 흩어져 있습니다. 그라데이션도 없고, 메시도 없고, 대기 배경도 없습니다.
  • 4~8px 반경 카드 어휘: 대부분의 구성 요소에 대해 `{rounded.md}`(6px), 일부 컨테이너에 대해 `{rounded.lg}`(8px), 알약 칩에 대해 완전히 반올림됨
  • 파스텔 콜아웃 배너(`{colors.accent-blue-soft}`, `{colors.accent-green-soft}`, `{colors.accent-red-soft}`, `{colors.accent-purple-soft}`)는 팁/경고/정보를 위한 부드러운 색조의 측면 레일로 문서 기사 본문을 나눕니다.
  • 문서 페이지에는 둥근 윤곽선 아이콘 섹션 탐색 기능과 상단에 "PostHog AI에 문의" CTA가 있는 고정 240px `{comComponent.doc-sidebar}`가 추가됩니다.

색상

> **소스 페이지:** `/`(홈), `/pricing`(가격 세부 정보), `/docs/product-analytics`(문서 기사), `/workflows`(제품 기능 페이지). 크롬 팔레트는 4개 페이지 모두에서 동일합니다. 문서 관련 강조(콜아웃 배너 파스텔, 코드 블록 어두운 표면)만 문서 환경 내에만 나타납니다.

브랜드 및 액센트

  • **PostHog Yellow** (`{colors.primary}` — `#f7a501`): 범용 기본 CTA. 모든 탐색 오른쪽 상단에 고정된 "시작하기 - 무료" 알약, 주요 CTA, 가격 등급 구독 버튼, 바닥글 가입 알약. 시스템의 유일한 포화 색채 모멘트입니다.
  • **노란색 누름** (`{colors.primary-pressed}` — `#dd9001`): 기본 알약의 누름 상태입니다.
  • **노란색 활성**(`{colors.primary-active}` — `#b17816`): 깊게 눌러진 노란색 + 시스템의 금색 테두리 강조(인라인 양식 요소의 드문 1px 금색 규칙).

표면

  • **캔버스** (`{colors.canvas}` — `#eeefe9`): 따뜻한 크림색 페이지 배경. 모든 페이지에서 엔드 투 엔드; 브랜드의 가장 독특한 표면 선택.
  • **부드러운 표면**(`{colors.surface-soft}` — `#e5e7e0`): 버튼 보조 채우기, 하위 탐색 스트립 배경, 인라인 코드 칩 배경.
  • **Surface Card** (`{colors.surface-card}` — `#ffffff`): 크림색 캔버스 위에 놓인 진정한 흰색 카드와 타일 배경입니다. 지배적인 카드 표면.
  • **Surface Doc**(`{colors.surface-doc}` — `#fcfcfa`): 문서 기사 본문 카드 내부에 사용되는 희미한 크림색 따뜻한 흰색 — 페이지의 톤을 통일되게 유지하기 위해 순수한 흰색보다 약간 부드럽습니다.
  • **Surface Dark** (`{colors.surface-dark}` — `#23251d`): 코드 블록 배경으로 반전되어 사용된 진한 올리브 숯입니다. `{colors.ink}`와 동일한 16진수 — 브랜드는 두 가지 모두에 올리브색에 가까운 검정색을 사용합니다.

概要

PostHog のマーケティング システムは、ブランドの中心にある視覚的な矛盾に基づいて構築されています。それは、フレンドリーなエンジニアリング スケッチブックであるかのように表現された、本格的なオープンソースの製品分析プラットフォームです。クロムは白ではなく温かみのあるクリーム色のキャンバス (`{colors.canvas}` — `#eeefe9`) 上で実行され、各ページには白衣を着た手描きのハリネズミのマスコット、ラウンジチェア、端末、老眼鏡が教科書の欄外のようにレイアウト全体に点在しています。 IBM Plex Sans Variable では、本文の場合はオリーブ グレー (`{colors.body}` — `#4d4f46`)、見出しの場合は深いオリーブ チャコール (`{colors.ink}` — `#23251d`) でタイプが配置され、重みは 400、600、700、および 800 の間で厳密に段階的に変化し、色のない階層が作成されます。単一の飽和した黄色とオレンジ色の錠剤 (`{colors.primary}` — `#f7a501`) は、このブランドの唯一の騒々しい色彩の瞬間です。他のものはすべてクリーム、オリーブ、白のカードで、時折パステルカラーの吹き出しバンドが入っています。

このシステムには、特徴的な **2 モードの本文レイアウト**があります。マーケティング ページ (ホーム、ワークフロー、価格設定) は、パステル カラーのコールアウト バンドとクリーム色の白いカードのフィーチャー タイルが交互に配置され、ドキュメント ページには、丸いアウトライン アイコン セクション リストを備えた 240 ピクセルの左側のサイドバーが追加されています。コード サンプルは、白いドキュメント カード内の `{colors.surface-dark}` (ボディー インクを運ぶのと同じオリーブ炭で、反転して使用) 上の全幅のダーク ブロックであり、システムの最も特徴的な視覚的瞬間を作り出しています。つまり、クリーム色のキャンバス上の白いカードの内側に浮かぶ、ダークオンダークのコード アイランドで、余白にハリネズミのマスコットが落書きされています。

セクションは `{spacing.section}` (80px) のリズムで積み重ねられ、その間にクリーム色のキャンバスが端から端まで続きます。クリームを中断する唯一のカラー バンドは、ドキュメント記事内のパステル `{component.banner-tip-blue}` / `-green` / `-red` / `-purple` の吹き出しパネルです。これは、「💡 ヒント」、「✅ 成功」、「⚠️ 警告」、「📘 情報」のインライン注釈が記載された柔らかい色合いのボックスです。装飾的なグラデーション、雰囲気のあるメッシュ背景、フルブリードのダーク ヒーローの章はありません。クリーム色のキャンバスは上から下まで途切れることなく続いており、ハリネズミが視覚的なアイデンティティ全体となっています。

**主な特徴:**

  • ウォーム クリーム キャンバス (`{colors.canvas}` — #eeefe9) 端から端まで、セクション間の表面の切り替えはありません — ページは 1 枚の連続したシートです
  • 単一の黄オレンジ色の CTA 錠剤 (`{colors.primary}` — #f7a501) と深いオリーブのテキスト (`{colors.on-primary}`) — ブランドの唯一の飽和色
  • ウェイト 400/500/600/700/800 のすべてのテキスト ロールにわたる IBM Plex Sans Variable — システム内に他の書体はありません
  • 手書きのハリネズミのマスコットが装飾システム全体としてレイアウト全体に散りばめられています - グラデーション、メッシュ、雰囲気のある背景はありません
  • 半径 4 ~ 8 ピクセルのカード語彙: ほとんどのコンポーネントの場合は `{rounded.md}` (6 ピクセル)、一部のコンテナの場合は `{rounded.lg}` (8 ピクセル)、ピルチップの場合は完全に丸められます
  • パステルの吹き出しバナー (`{colors.accent-blue-soft}`、`{colors.accent-green-soft}`、`{colors.accent-red-soft}`、`{colors.accent-purple-soft}`) は、ヒント/警告/情報用の柔らかい色合いのサイド レールでドキュメント記事の本文を分割します。
  • ドキュメント ページには、丸いアウトライン アイコン セクション ナビゲーションと上部に「Ask PostHog AI」CTA を備えたスティッキー 240 ピクセルの「{component.doc-sidebar}」が追加されます。

> **ソース ページ:** `/` (ホーム)、`/pricing` (価格の詳細)、`/docs/product-analytics` (ドキュメント記事)、`/workflows` (製品機能ページ)。クロム パレットは 4 ページすべてで同一です。ドキュメント固有のアクセント (吹き出しバナー パステル、コードブロックのダーク サーフェス) のみがドキュメント エクスペリエンス内にのみ表示されます。

ブランドとアクセント

  • **PostHog Yellow** (`{colors.primary}` — `#f7a501`): ユニバーサル プライマリ CTA。すべてのナビゲーションの右上にあるスティッキーな「はじめましょう - 無料」の錠剤、ヒーロー CTA、価格帯の購読ボタン、フッターのサインアップ錠剤。システムの唯一の飽和した色彩モーメント。
  • **黄色の押下** (`{colors.primary-pressed}` — `#dd9001`): プライマリ ピルの押された状態。
  • **イエロー アクティブ** (`{colors.primary-active}` — `#b17816`): 深く押し込まれた黄色 + システムのゴールドトーンの境界線のアクセント (インライン フォーム要素では珍しい 1px ゴールド ルール)。

表面

  • **キャンバス** (`{colors.canvas}` — `#eeefe9`): 温かみのあるクリーム色のページ背景。すべてのページでエンドツーエンド。ブランドの最も特徴的な表面の選択です。
  • **ソフト サーフェス** (`{colors.surface-soft}` — `#e5e7e0`): ボタンの二次塗りつぶし、サブナビゲーション ストリップの背景、インライン コード チップの背景。
  • **Surface Card** (`{colors.surface-card}` — `#ffffff`): クリーム色のキャンバスの上にある真の白いカードとタイルの背景。支配的なカード表面。
  • **Surface Doc** (`{colors.surface-doc}` — `#fcfcfa`): ドキュメント記事の本文カードの内側に使用される、ほのかにクリーム色がかった温かみのある白です。ページの色調を統一するために、純白よりもわずかに柔らかいです。
  • **Surface Dark** (`{colors.surface-dark}` — `#23251d`): コードブロックの背景として反転して使用される深いオリーブ チャコール。 `{colors.ink}` と同じ 16 進数 — ブランドは、両方の色にオリーブに近い黒を 1 つ使用します。