Design detail
Posthog
DESIGN.md extracted from the public PostHog website. This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. But it's a good starting point for building something similar.
Live preview
Theme-aware preview frame
Both light and dark preview assets are available.
Documentation
README and DESIGN in one place
Posthog Inspired Design System
DESIGN.md extracted from the public PostHog website. This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. But it's a good starting point for building something similar.
Files
| File | Description |
|---|---|
DESIGN.md |
Complete design system documentation (9 sections) |
preview.html |
Interactive design token catalog (light) |
preview-dark.html |
Interactive design token catalog (dark) |
Use DESIGN.md to use as a reference for AI agents (Claude, Cursor, Stitch) to generate UI that looks like the Posthog design language.
Preview
A sample landing page built with DESIGN.md. It shows the actual colors, typography, buttons, cards, spacing, and elevation, all in one page.
Dark Mode

Light Mode

Design System Inspiration of PostHog
1. Visual Theme & Atmosphere
PostHog's website feels like a startup's internal wiki that escaped into the wild — warm, irreverent, and deliberately anti-corporate. The background isn't the expected crisp white or dark void of developer tools; it's a warm, sage-tinted cream (#fdfdf8) that gives every surface a handmade, paper-like quality. Colors lean into earthy olive greens and muted sage rather than the conventional blues and purples of the SaaS world. It's as if someone designed a developer analytics platform inside a cozy garden shed.
The personality is the star: hand-drawn hedgehog illustrations, quirky action figures, and playful imagery replace the stock photography and abstract gradients typical of B2B SaaS. IBM Plex Sans Variable serves as the typographic foundation — a font with genuine technical credibility (created by IBM, widely used in developer contexts) deployed here with bold weights (700, 800) on headings and generous line-heights on body text. The typography says "we're serious engineers" while everything around it says "but we don't take ourselves too seriously."
The interaction design carries the same spirit: hover states flash PostHog Orange (#F54E00) text — a hidden brand color that doesn't appear at rest but surprises on interaction. Dark near-black buttons (#1e1f23) use opacity reduction on hover rather than color shifts, and active states scale slightly. The border system uses sage-tinted grays (#bfc1b7) that harmonize with the olive text palette. Built on Tailwind CSS with Radix UI and shadcn/ui primitives, the technical foundation is modern and component-driven, but the visual output is stubbornly unique.
Key Characteristics:
- Warm sage/olive color palette instead of conventional blues — earthy and approachable
- IBM Plex Sans Variable font at bold weights (700/800) for headings with generous 1.50+ line-heights
- Hidden brand orange (
#F54E00) that only appears on hover interactions — a delightful surprise - Hand-drawn hedgehog illustrations and playful imagery — deliberately anti-corporate
- Sage-tinted borders (
#bfc1b7) and backgrounds (#eeefe9) creating a unified warm-green system - Dark near-black CTAs (
#1e1f23) with opacity-based hover states - Content-heavy editorial layout — the site reads like a magazine, not a typical landing page
- Tailwind CSS + Radix UI + shadcn/ui component architecture
2. Color Palette & Roles
Primary
- Olive Ink (
#4d4f46): Primary text color — a distinctive olive-gray that gives all text a warm, earthy tone - Deep Olive (
#23251d): Link text and high-emphasis headings — near-black with green undertone - PostHog Orange (
#F54E00): Hidden brand accent — appears only on hover states, a vibrant orange that surprises
Secondary & Accent
- Amber Gold (
#F7A501): Secondary hover accent on dark buttons — warm gold that pairs with the orange - Gold Border (
#b17816): Special button borders — an amber-gold for featured CTAs - Focus Blue (
#3b82f6): Focus ring color (Tailwind default) — the only blue in the system, reserved for accessibility
Surface & Background
- Warm Parchment (
#fdfdf8): Primary page background — warm near-white with yellow-green undertone - Sage Cream (
#eeefe9): Input backgrounds, secondary surfaces — light sage tint - Light Sage (
#e5e7e0): Button backgrounds, tertiary surfaces — muted sage-green - Warm Tan (
#d4c9b8): Featured button backgrounds — warm tan/khaki for emphasis - Hover White (
#f4f4f4): Universal hover background state
Neutrals & Text
- Olive Ink (
#4d4f46): Primary body and UI text - Muted Olive (
#65675e): Secondary text, button labels on light backgrounds - Sage Placeholder (
#9ea096): Placeholder text, disabled states — warm sage-green - Sage Border (
#bfc1b7): Primary border color — olive-tinted gray for all borders - Light Border (
#b6b7af): Secondary border, toolbar borders — slightly darker sage
Semantic & Accent
- PostHog Orange (
#F54E00): Hover text accent — signals interactivity and brand personality - Amber Gold (
#F7A501): Dark button hover accent — warmth signal - Focus Blue (
#3b82f6at 50% opacity): Keyboard focus rings — accessibility-only color - Dark Text (
#111827): High-contrast link text — near-black for important links
Gradient System
- No gradients on the marketing site — PostHog's visual language is deliberately flat and warm
- Depth is achieved through layered surfaces and border containment, not color transitions
3. Typography Rules
Font Family
- Display & Body:
IBM Plex Sans Variable— variable font (100–700+ weight range). Fallbacks:IBM Plex Sans, -apple-system, system-ui, Avenir Next, Avenir, Segoe UI, Helvetica Neue, Helvetica, Ubuntu, Roboto, Noto, Arial - Monospace:
ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New— system monospace stack - Code Display:
Source Code Pro— with fallbacks:Menlo, Consolas, Monaco
Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display Hero | IBM Plex Sans Variable | 30px | 800 | 1.20 | -0.75px | Extra-bold, tight, maximum impact |
| Section Heading | IBM Plex Sans Variable | 36px | 700 | 1.50 | 0px | Large but generous line-height |
| Feature Heading | IBM Plex Sans Variable | 24px | 700 | 1.33 | 0px | Feature section titles |
| Card Heading | IBM Plex Sans Variable | 21.4px | 700 | 1.40 | -0.54px | Slightly unusual size (scaled) |
| Sub-heading | IBM Plex Sans Variable | 20px | 700 | 1.40 | -0.5px | Content sub-sections |
| Sub-heading Uppercase | IBM Plex Sans Variable | 20px | 700 | 1.40 | 0px | Uppercase transform for labels |
| Body Emphasis | IBM Plex Sans Variable | 19.3px | 600 | 1.56 | -0.48px | Semi-bold callout text |
| Label Uppercase | IBM Plex Sans Variable | 18px | 700 | 1.50 | 0px | Uppercase category labels |
| Body Semi | IBM Plex Sans Variable | 18px | 600 | 1.56 | 0px | Semi-bold body text |
| Body | IBM Plex Sans Variable | 16px | 400 | 1.50 | 0px | Standard reading text |
| Body Medium | IBM Plex Sans Variable | 16px | 500 | 1.50 | 0px | Medium-weight body |
| Body Relaxed | IBM Plex Sans Variable | 15px | 400 | 1.71 | 0px | Relaxed line-height for long reads |
| Nav / UI | IBM Plex Sans Variable | 15px | 600 | 1.50 | 0px | Navigation and UI labels |
| Caption | IBM Plex Sans Variable | 14px | 400–700 | 1.43 | 0px | Small text, various weights |
| Small Label | IBM Plex Sans Variable | 13px | 500–700 | 1.00–1.50 | 0px | Tags, badges, micro labels |
| Micro | IBM Plex Sans Variable | 12px | 400–700 | 1.33 | 0px | Smallest text, some uppercase |
| Code | Source Code Pro | 14px | 500 | 1.43 | 0px | Code snippets and terminal |
Principles
- Bold heading dominance: Headings use 700–800 weight — PostHog's typography is confident and assertive, not whispery
- Generous body line-heights: Body text at 1.50–1.71 line-height creates extremely comfortable reading — the site is content-heavy and optimized for long sessions
- Fractional sizes: Several sizes (21.4px, 19.3px, 13.7px) suggest a fluid/scaled type system rather than fixed stops — likely computed from Tailwind's rem scale at non-standard base
- Uppercase as category signal: Bold uppercase labels (18px–20px weight 700) are used for product category headings — a magazine-editorial convention
- Selective negative tracking: Letter-spacing tightens on display text (-0.75px at 30px) but relaxes to 0px on body — headlines compress, body breathes
4. Component Stylings
Buttons
- Dark Primary:
#1e1f23background, white text, 6px radius,10px 12pxpadding. Hover: opacity 0.7 with Amber Gold text. Active: opacity 0.8 with slight scale transform. The main CTA — dark and confident - Sage Light:
#e5e7e0background, Olive Ink (#4d4f46) text, 4px radius,4pxpadding. Hover:#f4f4f4bg with PostHog Orange text. Compact utility button - Warm Tan Featured:
#d4c9b8background, black text, no visible radius. Hover: same orange text flash. Featured/premium actions - Input-style:
#eeefe9background, Sage Placeholder (#9ea096) text, 4px radius, 1px#b6b7afborder. Looks like a search/filter control - Near-white Ghost:
#fdfdf8background, Olive Ink text, 4px radius, transparent 1px border. Minimal presence - Hover pattern: All buttons flash PostHog Orange (
#F54E00) or Amber Gold (#F7A501) text on hover — the brand's signature interaction surprise
Cards & Containers
- Bordered Card: Warm Parchment (
#fdfdf8) or white background, 1px#bfc1b7border, 4px–6px radius — clean and minimal - Sage Surface Card:
#eeefe9background for secondary content containers - Shadow Card:
0px 25px 50px -12px rgba(0, 0, 0, 0.25)— a single deep shadow for elevated content (modals, dropdowns) - Hover: Orange text flash on interactive cards — consistent with button behavior
Inputs & Forms
- Default:
#eeefe9background,#9ea096placeholder text, 1px#b6b7afborder, 4px radius,2px 0px 2px 8pxpadding - Focus:
#3b82f6ring at 50% opacity (Tailwind blue focus ring) - Text color:
#374151for input values — darker than primary text for readability - Border variations: Multiple border patterns — some inputs use compound borders (top, left, bottom-only)
Navigation
- Top nav: Warm background, IBM Plex Sans at 15px weight 600
- Dropdown menus: Rich mega-menu structure with product categories
- Link color: Deep Olive (
#23251d) for nav links, underline on hover - CTA: Dark Primary button (#1e1f23) in the nav — "Get started - free"
- Mobile: Collapses to hamburger with simplified menu
Image Treatment
- Hand-drawn illustrations: Hedgehog mascot and quirky illustrations — the signature visual element
- Product screenshots: UI screenshots embedded in device frames or clean containers
- Action figures: Playful product photography of hedgehog figurines — anti-corporate
- Trust logos: Enterprise logos (Airbus, GOV.UK) displayed in a muted trust bar
- Aspect ratios: Mixed — illustrations are irregular, screenshots are 16:9 or widescreen
AI Chat Widget
- Floating PostHog AI assistant with speech bubble — an interactive product demo embedded in the marketing site
5. Layout Principles
Spacing System
- Base unit: 8px
- Scale: 2px, 4px, 6px, 8px, 10px, 12px, 16px, 18px, 24px, 32px, 34px
- Section padding: 32px–48px vertical between sections (compact for a content-heavy site)
- Card padding: 4px–12px internal (notably compact)
- Component gaps: 4px–8px between related elements
Grid & Container
- Max width: 1536px (largest breakpoint), with content containers likely 1200px–1280px
- Column patterns: Varied — single column for text content, 2-3 column grids for feature cards, asymmetric layouts for product demos
- Breakpoints: 13 defined — 1px, 425px, 482px, 640px, 768px, 767px, 800px, 900px, 1024px, 1076px, 1160px, 1280px, 1536px
Whitespace Philosophy
- Content-dense by design: PostHog's site is information-rich — whitespace is measured, not lavish
- Editorial pacing: Content sections flow like a magazine with varied layouts keeping the eye moving
- Illustrations as breathing room: Hand-drawn hedgehog art breaks up dense content sections naturally
Border Radius Scale
- 2px: Small inline elements, tags (
span) - 4px: Primary UI components — buttons, inputs, dropdowns, menu items (
button,div,combobox) - 6px: Secondary containers — larger buttons, list items, card variants (
button,div,li) - 9999px: Pill shape — badges, status indicators, rounded tags (
span,div)
6. Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| Level 0 (Flat) | No shadow, warm parchment background | Page canvas, most surfaces |
| Level 1 (Border) | 1px solid #bfc1b7 (Sage Border) |
Card containment, input borders, section dividers |
| Level 2 (Compound Border) | Multiple 1px borders on different sides | Input groupings, toolbar elements |
| Level 3 (Deep Shadow) | 0px 25px 50px -12px rgba(0, 0, 0, 0.25) |
Modals, floating elements, mega-menu dropdowns |
Shadow Philosophy
PostHog's elevation system is remarkably minimal — only one shadow definition exists in the entire system. Depth is communicated through:
- Border containment: Sage-tinted borders (
#bfc1b7) at 1px create gentle warm separation - Surface color shifts: Moving from
#fdfdf8to#eeefe9to#e5e7e0creates layered depth without shadows - The single shadow: The one defined shadow (
0 25px 50px -12px) is reserved for floating elements — modals, dropdowns, popovers. It's a deep, dramatic shadow that creates clear separation when needed
Decorative Depth
- Illustration layering: Hand-drawn hedgehog art creates visual depth naturally
- No gradients or glow: The flat, warm surface system relies entirely on border and surface-color differentiation
- No glassmorphism: Fully opaque surfaces throughout
7. Do's and Don'ts
Do
- Use the olive/sage color family (#4d4f46, #23251d, #bfc1b7) for text and borders — the warm green undertone is essential to the brand
- Flash PostHog Orange (#F54E00) on hover states — it's the hidden brand signature
- Use IBM Plex Sans at bold weights (700/800) for headings — the font carries technical credibility
- Keep body text at generous line-heights (1.50–1.71) — the content-heavy site demands readability
- Maintain the warm parchment background (#fdfdf8) — not pure white, never cold
- Use 4px border-radius for most UI elements — keep corners subtle and functional
- Include playful, hand-drawn illustration elements — the personality is the differentiator
- Apply opacity-based hover states (0.7 opacity) on dark buttons rather than color shifts
Don't
- Use blue, purple, or typical tech-SaaS colors — PostHog's palette is deliberately olive/sage
- Add heavy shadows — the system uses one shadow for floating elements only; everything else uses borders
- Make the design look "polished" or "premium" in a conventional sense — PostHog's charm is its irreverent, scrappy energy
- Use tight line-heights on body text — the generous 1.50+ spacing is essential for the content-heavy layout
- Apply large border-radius (12px+) on cards — PostHog uses 4px–6px, keeping things tight and functional
- Remove the orange hover flash — it's a core interaction pattern, not decoration
- Replace illustrations with stock photography — the hand-drawn hedgehog art is the brand
- Use pure white (#ffffff) as page background — the warm sage-cream (#fdfdf8) tint is foundational
8. Responsive Behavior
Breakpoints
| Name | Width | Key Changes |
|---|---|---|
| Mobile Small | <425px | Single column, compact padding, stacked cards |
| Mobile | 425px–640px | Slight layout adjustments, larger touch targets |
| Tablet | 640px–768px | 2-column grids begin, nav partially visible |
| Tablet Large | 768px–1024px | Multi-column layouts, expanded navigation |
| Desktop | 1024px–1280px | Full layout, 3-column feature grids, expanded mega-menu |
| Large Desktop | 1280px–1536px | Max-width container, generous margins |
| Extra Large | >1536px | Centered container at max-width |
Touch Targets
- Buttons: 4px–6px radius with
4px–12pxpadding — compact but usable - Nav links: 15px text at weight 600 with adequate padding
- Mobile: Hamburger menu with simplified navigation
- Inputs: Generous vertical padding for thumb-friendly forms
Collapsing Strategy
- Navigation: Full mega-menu with dropdowns → hamburger menu on mobile
- Feature grids: 3-column → 2-column → single column stacked
- Typography: Display sizes reduce across breakpoints (30px → smaller)
- Illustrations: Scale within containers, some may hide on mobile for space
- Section spacing: Reduces proportionally while maintaining readability
Image Behavior
- Illustrations scale responsively within containers
- Product screenshots maintain aspect ratios
- Trust logos reflow into multi-row grids on mobile
- AI chat widget may reposition or simplify on small screens
9. Agent Prompt Guide
Quick Color Reference
- Primary Text: Olive Ink (
#4d4f46) - Dark Text: Deep Olive (
#23251d) - Hover Accent: PostHog Orange (
#F54E00) - Dark CTA: Near-Black (
#1e1f23) - Button Surface: Light Sage (
#e5e7e0) - Page Background: Warm Parchment (
#fdfdf8) - Border: Sage Border (
#bfc1b7) - Placeholder: Sage Placeholder (
#9ea096)
Example Component Prompts
- "Create a hero section on warm parchment background (#fdfdf8) with 30px IBM Plex Sans heading at weight 800, line-height 1.20, letter-spacing -0.75px, olive ink text (#4d4f46), and a dark CTA button (#1e1f23, 6px radius, white text, opacity 0.7 on hover)"
- "Design a feature card with #fdfdf8 background, 1px #bfc1b7 border, 4px radius, IBM Plex Sans heading at 20px weight 700, and 16px body text at weight 400 with 1.50 line-height in olive ink (#4d4f46)"
- "Build a navigation bar with warm background, IBM Plex Sans links at 15px weight 600 in deep olive (#23251d), underline on hover, and a dark CTA button (#1e1f23) at the right"
- "Create a button group: primary dark (#1e1f23, white text, 6px radius), secondary sage (#e5e7e0, #4d4f46 text, 4px radius), and ghost/text button — all flash #F54E00 orange text on hover"
- "Design an input field with #eeefe9 background, 1px #b6b7af border, 4px radius, #9ea096 placeholder text, focus ring in #3b82f6 at 50% opacity"
Iteration Guide
When refining existing screens generated with this design system:
- Verify the background is warm parchment (#fdfdf8) not pure white — the sage-cream warmth is essential
- Check that all text uses the olive family (#4d4f46, #23251d) not pure black or neutral gray
- Ensure hover states flash PostHog Orange (#F54E00) — if hovering feels bland, you're missing this
- Confirm borders use sage-tinted gray (#bfc1b7) not neutral gray — warmth runs through every element
- The overall tone should feel like a fun, scrappy startup wiki — never corporate-polished or sterile