PostHog — Design Reference
retro desktop picnic on the lawn
Source: https://posthog.com
Theme: light
Category: Developer Tools
Mood: light, playful, friendly, warm, illustrated, retro
Captured: 2026-09-13
Overview
PostHog's site is built like a friendly desktop computer. A grassy 3D wallpaper fills the background, labelled desktop icons line both edges, a rounded menu bar runs across the top, and every page opens in a frosted sage window with maximise and close buttons. It feels playful and a little retro, but it stays readable. The things that make it distinctive are chunky honey-orange buttons with a raised bottom edge, marker-style highlights behind key words, a bold purple tab frame and cartoon hedgehog art. All of this sits on top of a calm, warm-grey reading surface.
One rounded grotesk, RoundHog, does almost all the work. Headings are 700–800 weight with slightly tight letter-spacing (-0.025em). Body text is 16–18px at weight 400–500. The neutrals are warm olive greys (#eeefe9, #e5e7e0, #bfc1b7, #23251d, #65675e) rather than cool ones. Colour is kept for small moments: orange #eb9d2a for calls to action, purple #b62ad9 for the showcase tabs, blue #2f80fa for highlighted words, and green #6aa84f for checkmarks. Shapes are small and tight (4–6px radius on controls and cards, about 20px on windows). Spacing is based on 4px, with dense 4–8px gaps inside the interface and 20px padding in cards. Depth comes from solid offset ledges under buttons and tabs, plus one large soft shadow under each window.
Tokens — Colors
| Name |
Value |
Token |
Role |
| Meadow Paper |
#eeefe9 |
--color-bg |
Body background under the wallpaper; the base layer on page edges and mobile gutters |
| Window Sage |
#e5e7e0 |
--color-surface |
The most-used surface: frosted app windows, the top menu bar and recessed cards (usually a little translucent, with a backdrop blur) |
| Cream Card |
#fdfdf8 |
--color-surface-cream |
Warm off-white cards such as the docs index panels and the pricing hero panel |
| Paper White |
#ffffff |
--color-surface-raised |
Raised cards (setup card, demo pane), secondary buttons, dropdown menus |
| Rule Grey |
#bfc1b7 |
--color-border |
1px card borders, dividers and hairlines; also the hover fill for ghost menu items |
| Hog Ink |
#23251d |
--color-text |
Main body and interface text; warm near-black with an olive tint |
| Moss Grey |
#65675e |
--color-text-muted |
Secondary copy, inactive tabs, supporting lines like 'Join 500,000+ teams' |
| Slate Heading |
#374151 |
--color-heading |
Large headings and emphasised copy on pricing and docs (the home H1 uses #111827) |
| Honey Orange |
#eb9d2a |
--color-primary |
Fill for primary calls to action ('Get started', 'Get started – free') |
| Ledge Amber |
#cd8407 |
--color-primary-ledge |
The solid raised edge under orange buttons, and the ledge colour under white secondary buttons |
| Hog Purple |
#b62ad9 |
--color-accent |
Active tab and thick frame around the home product showcase; guide-card left stripes |
| Signal Blue |
#2f80fa |
--color-highlight-blue |
Highlighted words in headlines (text on a #d9e8f2 highlight block), blue guide stripe, icons |
| Squeak Orange |
#f54e00 |
--color-link-action |
Bold inline text actions ('Share estimate', 'Create an estimate with AI'), carousel dots, icon tints |
| Check Green |
#6aa84f |
--color-success |
Checkmarks in feature lists; darker #4d7533 for 'for free.' text on a green highlight |
Semantic roles
| Role |
Value |
| background |
#eeefe9 |
| surface |
#e5e7e0 |
| surface raised |
#ffffff |
| border |
#bfc1b7 |
| text |
#23251d |
| text muted |
#65675e |
| primary |
#eb9d2a |
| primary text |
#000000 |
| accent |
#b62ad9 |
| success |
#6aa84f |
| warning |
#f7a501 |
Tokens — Typography
- Display: RoundHog (600, 700, 800, 900) — fallbacks: Figtree, Inter, system-ui, sans-serif. A custom, slightly rounded grotesk. Headings use 700–800 with negative tracking of about -0.025em (-0.9px at 36px, -1.5px at 60px).
- Body: RoundHog (400, 500, 600, 700) — fallbacks: Figtree, Inter, system-ui, sans-serif. The same family is used for all body and interface text. Lead paragraphs use 500, buttons and links use 600–700, and menu items are small 13px/500.
- Mono: Source Code Pro (500) — fallbacks: JetBrains Mono, ui-monospace, monospace. Used very rarely, for small code or label snippets only.
| Role |
Size |
Line height |
Weight |
Letter spacing |
Family |
| Display |
60px |
1 |
700 |
-1.5px |
display |
| H1 |
36px |
1.11 |
800 |
-0.9px |
display |
| H2 |
30px |
1.33 |
700 |
-0.75px |
display |
| H2 Section |
24px |
1.33 |
700 |
-0.6px |
display |
| H3 |
20px |
1.6 |
600 |
-0.5px |
display |
| Lead |
18px |
1.5 |
500 |
normal |
body |
| Body |
16px |
1.5 |
400 |
normal |
body |
| Button / Small |
14px |
1.43 |
600 |
normal |
body |
| Menu |
13px |
1.5 |
500 |
normal |
body |
Tokens — Spacing & Layout
- Base unit: 4px
- Density: comfortable
- Container max width: 1200px
- Section gap: 48px
- Card padding: 20px
- Scale: 2px, 4px, 6px, 8px, 10px, 12px, 16px, 20px, 24px, 32px, 48px, 80px
Tokens — Radius
| Element |
Value |
| Hairline details, highlighter marks |
1px |
| Menu bar items, small cards, cream panels |
4px |
| Buttons, tabs, white cards |
6px |
| Dropdown menus, pricing hero panel |
8px |
| App windows, menu bar shell |
20px |
| Avatars, pills, circular illustrations |
9999px |
Tokens — Shadows
| Name |
Value |
Usage |
| Window |
0 25px 50px -12px rgba(0,0,0,0.25) |
Large soft drop shadow under frosted app windows floating over the wallpaper |
| Ledge |
0 2.31px 0 0 rgb(210,211,204) |
Solid, blur-free bottom edge under tabs and interface chips; a stamped, tactile feel |
| Card |
0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1) |
Raised white cards such as the 'Set up for free' box, and dropdown menus |
| Dialog |
0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1) |
Large modal-style panels such as the 768px pricing estimator card |
| Hairline |
0 1px 2px 0 rgba(0,0,0,0.05) |
Small inputs and chips |
Components
Primary ledge button (button)
| Property |
Value |
| background |
#eb9d2a |
| color |
#000000 |
| border |
1px solid #b17816 |
| radius |
6px |
| padding |
10px 16px |
| font size |
15px |
| font weight |
600 |
| shadow |
0 3px 0 0 #cd8407 |
| hover |
Lift by translateY(-1px) and deepen the ledge to 4px; on press, translateY(2px) with the ledge reduced to 1px |
The signature call to action. It sits on a solid darker-amber ledge, like a physical key. On the menu bar it is compact ('Get started – free', about 13–14px). In hero cards it stretches to fill its column.
Secondary ledge button (button)
| Property |
Value |
| background |
#ffffff |
| color |
#23251d |
| border |
1px solid #cd8407 |
| radius |
6px |
| padding |
10px 16px |
| font size |
15px |
| font weight |
600 |
| shadow |
0 3px 0 0 #cd8407 |
| hover |
Same lift and press behaviour as the primary; the background stays white |
Used for 'Install with AI', 'Explore product suite' and 'Search the docs' (with a leading search icon). Always shares the orange ledge so it reads as part of the same button family.
Menu bar item (button)
| Property |
Value |
| background |
transparent |
| color |
#23251d |
| border |
none |
| radius |
4px |
| padding |
2px 8px |
| font size |
13px |
| font weight |
500 |
| shadow |
none |
| hover |
background #bfc1b7 at roughly 50% opacity |
28px tall text items in the top system menu bar (Products, Tools, Pricing, Docs, Community, Company, More). Behaves like OS menus: each opens a dropdown.
System menu bar (nav)
| Property |
Value |
| background |
rgba(229,231,224,0.85) |
| color |
#23251d |
| border |
none |
| radius |
6px |
| padding |
4px 8px |
| font size |
13px |
| font weight |
500 |
| shadow |
none |
| hover |
Items highlight individually; icon buttons (search, help, account) get the same soft grey fill |
A full-width translucent strip inset a few pixels from the viewport edge. From left to right: logo glyph, menu items, a flexible gap, the compact orange CTA, then 20px stroked icons for search, help and account.
App window (card)
| Property |
Value |
| background |
rgba(229,231,224,0.9) with backdrop-filter: blur(12px) |
| color |
#23251d |
| border |
none |
| radius |
20px |
| padding |
48px 80px |
| font size |
16px |
| font weight |
400 |
| shadow |
0 25px 50px -12px rgba(0,0,0,0.25) |
| hover |
none |
Every page lives inside one of these windows. Small grey maximise and close glyphs sit in the top-right corner. Content inside is capped at about 1200px, and the wallpaper and desktop icons stay visible around it.
Content card (card)
| Property |
Value |
| background |
#ffffff |
| color |
#23251d |
| border |
1px solid #bfc1b7 |
| radius |
6px |
| padding |
20px |
| font size |
16px |
| font weight |
400 |
| shadow |
none |
| hover |
none for panels; list rows inside darken their text to #000 |
Docs index panels start with a 14px/600 uppercase label and a muted subline. There is a cream variant (#fdfdf8, 4px radius). Guide cards add a 4px solid left stripe in orange #eb9d2a, purple #b62ad9 or blue #2f80fa, with a small tracked-caps meta line ('VOL. 1 · 6 GUIDES').
Showcase tabs (other)
| Property |
Value |
| background |
#b62ad9 |
| color |
#ffffff |
| border |
none |
| radius |
6px 6px 0 0 |
| padding |
10px 12px |
| font size |
14px |
| font weight |
600 |
| shadow |
none |
| hover |
Inactive tabs are transparent with #65675e text and darken to #23251d |
The active tab joins an 8px purple frame that surrounds a white demo pane. A thin white progress bar under the active label shows auto-rotation, and a pause button sits top-right in the pane.
Highlighter mark (badge)
| Property |
Value |
| background |
rgba(235,157,42,0.3) |
| color |
inherit |
| border |
none |
| radius |
1px |
| padding |
0 2px |
| font size |
inherit |
| font weight |
inherit |
| shadow |
none |
| hover |
none |
A hand-drawn marker swipe behind key phrases ('analytics, errors', 'for free'). Headline variants: blue text #2f80fa on a #d9e8f2 block, and green #4d7533 text on a pale green block. Also pairs with hand-drawn squiggle underlines on words like 'agents'.
Layout
The whole site is a desktop-OS metaphor. A fixed, inset menu bar runs across the top. Columns of labelled desktop icons (Home, Pricing, Docs, Demo, Trash…) sit on the left and right edges over an illustrated grass wallpaper. Each route opens in a centred, rounded, frosted window about 950–1100px wide with its own close and maximise controls. Inside the window the layout is a conventional content column capped at 1200px. Heroes are split into a left text block and a right card or illustration. Docs uses a 3-column bento of white cards, and pricing uses a large cream hero panel followed by a horizontal strip of product allowances. Internal gaps are tight (4–8px); sections separate with 48px of space or thin #bfc1b7 rules.
Imagery
Illustrated and nostalgic rather than photographic. The wallpaper is a stylised 3D grass meadow with a low-poly hedgehog peeking in at the edge. Desktop icons are simple white-on-grey stroked glyphs with drop-shadowed labels. Other art includes retro software box art ('PostHog 3000' with a CRT computer and CD), cartoon hedgehog mascots and a circular-cropped character scene. Screenshots are shown inside mock browser frames with hand-lettered signatures. Product icons are small 16px stroked glyphs, each in its own saturated colour (blue, orange, purple, teal, pink). The logo is a tri-colour mark in blue, red-orange and yellow with a black hog silhouette.
Motion
Motion is light and physical. Ledge buttons press down and pop up. The home showcase tabs auto-advance with a filling progress bar and can be paused. The AI prompt demo types its question with a blinking caret. Windows and menus behave like OS panels, with dropdowns opening instantly beneath menu items. There are no scroll-driven parallax effects or decorative loops beyond the demo.
Responsive
On phones the desktop metaphor collapses. The desktop icons and side wallpaper are hidden, and the window fills the viewport with a small rounded inset, leaving only a sliver of grass at the edges. The menu bar becomes a logo glyph with a chevron (which opens the site menu as a dropdown), a centred orange 'Get started – free' ledge button, and search, help and account icons. The account icon opens a compact white popover with a muted 'Go to…' label, a 'PostHog app' item, a hairline divider and a 'Community' section. It is not a full-screen drawer. The hero stacks and centres: a larger H1 with shorter copy ('Make your product self-driving'), a centred paragraph with marker highlights, and then the 'Set up for free' card at full width. Inside that card the primary and secondary ledge buttons stack as full-width blocks. Showcase tabs are pushed below the fold and horizontal padding drops to about 16–24px.
Do
- Frame every page as an OS window (rounded about 20px, frosted #e5e7e0, soft 0 25px 50px -12px shadow) floating over an illustrated backdrop.
- Give every call to action a solid, blur-free ledge in #cd8407 under a #eb9d2a or white face, with 6px radius and dark #000/#23251d text.
- Keep all neutrals warm and olive (#eeefe9, #e5e7e0, #bfc1b7, #65675e, #23251d); use #bfc1b7 1px borders to separate cards.
- Emphasise one or two phrases per block with hand-drawn highlighter swipes or squiggle underlines, not bold colour text alone.
- Set all headings in RoundHog 700–800 with about -0.025em tracking; use 500 weight for lead copy at 17–18px.
- Use saturated accents in small doses: a purple #b62ad9 frame for the one showcase module, and coloured 4px left stripes on guide cards.
- Keep interface controls small and dense (13px menu items, 2px 8px padding, 4px gaps) to reinforce the desktop feel.
Don't
- Don't use cool greys, pure #f5f5f5 surfaces or blue-tinted borders; they break the warm paper tone.
- Don't give buttons blurred drop shadows or gradients; depth comes from the flat offset ledge only.
- Don't make the brand orange a background wash or use it for large surfaces; it belongs to calls to action and tiny highlights.
- Don't use large radii (12–24px) on buttons or cards; reserve rounding above 8px for windows and avatars.
- Don't replace the illustrations with stock photography or glossy 3D abstract blobs; imagery should be cartoonish, retro and self-aware.
- Don't set headings in a geometric display face or at light weights; the voice is chunky and rounded.
- Don't use more than one saturated accent frame per view; purple, blue and green are highlights, not themes.
Agent prompt
Build a playful, light desktop-OS-style marketing site. The background is an illustrated grass wallpaper over #eeefe9, with a thin inset translucent menu bar (rgba(229,231,224,.85), 13px/500 items, 2px 8px padding, 4px radius, hover fill #bfc1b7). Pages open inside centred frosted windows (#e5e7e0 about 90% with backdrop blur, 20px radius, 0 25px 50px -12px rgba(0,0,0,.25)) that have close and maximise glyphs top-right and a 1200px content cap. Typeface is RoundHog (fallback Figtree/Inter) everywhere: H1 36px/1.11 weight 800 tracking -0.9px (display 60px/1 weight 700, -1.5px), H2 30px/700 -0.75px, section H2 24px/700, lead 18px/1.5 weight 500, body 16px/1.5 weight 400. Text is #23251d, muted #65675e, headings #374151 or #111827. Primary buttons are #eb9d2a with black 600 text, 6px radius, 1px #b17816 border and a solid 0 3px 0 #cd8407 ledge that presses down on click. Secondary buttons are white with the same orange ledge. Cards are #ffffff or #fdfdf8 with 1px #bfc1b7 borders, 4–6px radius and 20px padding. Guide cards have 4px left stripes in #eb9d2a, #b62ad9 or #2f80fa. Put one product showcase in a purple #b62ad9 tab frame with an auto-rotating progress bar. Emphasise key words with marker highlights (orange at 30% opacity, or blue #2f80fa text on #d9e8f2) and squiggle underlines. Use green #6aa84f checkmarks and #f54e00 for bold inline text actions. The spacing grid is 4px, with dense 4–8px gaps inside the interface and 48px between sections. Imagery is cartoon hedgehogs, retro software boxes and colourful stroked icons. The tone is witty, warm and self-aware, never corporate.
CSS custom properties
/* PostHog — CSS custom properties. Generated from style.json */
:root {
/* Palette */
--color-bg: #eeefe9; /* Body background under the wallpaper; the base layer on page edges and mobile gutters */
--color-surface: #e5e7e0; /* The most-used surface: frosted app windows, the top menu bar and recessed cards (usually a little translucent, with a backdrop blur) */
--color-surface-cream: #fdfdf8; /* Warm off-white cards such as the docs index panels and the pricing hero panel */
--color-surface-raised: #ffffff; /* Raised cards (setup card, demo pane), secondary buttons, dropdown menus */
--color-border: #bfc1b7; /* 1px card borders, dividers and hairlines; also the hover fill for ghost menu items */
--color-text: #23251d; /* Main body and interface text; warm near-black with an olive tint */
--color-text-muted: #65675e; /* Secondary copy, inactive tabs, supporting lines like 'Join 500,000+ teams' */
--color-heading: #374151; /* Large headings and emphasised copy on pricing and docs (the home H1 uses #111827) */
--color-primary: #eb9d2a; /* Fill for primary calls to action ('Get started', 'Get started – free') */
--color-primary-ledge: #cd8407; /* The solid raised edge under orange buttons, and the ledge colour under white secondary buttons */
--color-accent: #b62ad9; /* Active tab and thick frame around the home product showcase; guide-card left stripes */
--color-highlight-blue: #2f80fa; /* Highlighted words in headlines (text on a #d9e8f2 highlight block), blue guide stripe, icons */
--color-link-action: #f54e00; /* Bold inline text actions ('Share estimate', 'Create an estimate with AI'), carousel dots, icon tints */
--color-success: #6aa84f; /* Checkmarks in feature lists; darker #4d7533 for 'for free.' text on a green highlight */
/* Semantic roles */
--background: #eeefe9;
--surface: #e5e7e0;
--surface-raised: #ffffff;
--border: #bfc1b7;
--text: #23251d;
--text-muted: #65675e;
--primary: #eb9d2a;
--primary-text: #000000;
--accent: #b62ad9;
--success: #6aa84f;
--warning: #f7a501;
/* Typography */
--font-display: RoundHog, Figtree, Inter, system-ui, sans-serif;
--font-body: RoundHog, Figtree, Inter, system-ui, sans-serif;
--font-mono: 'Source Code Pro', 'JetBrains Mono', ui-monospace, monospace;
--text-display: 60px;
--text-display--line-height: 1;
--text-display--letter-spacing: -1.5px;
--text-display--font-weight: 700;
--text-h1: 36px;
--text-h1--line-height: 1.11;
--text-h1--letter-spacing: -0.9px;
--text-h1--font-weight: 800;
--text-h2: 30px;
--text-h2--line-height: 1.33;
--text-h2--letter-spacing: -0.75px;
--text-h2--font-weight: 700;
--text-h2-section: 24px;
--text-h2-section--line-height: 1.33;
--text-h2-section--letter-spacing: -0.6px;
--text-h2-section--font-weight: 700;
--text-h3: 20px;
--text-h3--line-height: 1.6;
--text-h3--letter-spacing: -0.5px;
--text-h3--font-weight: 600;
--text-lead: 18px;
--text-lead--line-height: 1.5;
--text-lead--letter-spacing: normal;
--text-lead--font-weight: 500;
--text-body: 16px;
--text-body--line-height: 1.5;
--text-body--letter-spacing: normal;
--text-body--font-weight: 400;
--text-button-small: 14px;
--text-button-small--line-height: 1.43;
--text-button-small--letter-spacing: normal;
--text-button-small--font-weight: 600;
--text-menu: 13px;
--text-menu--line-height: 1.5;
--text-menu--letter-spacing: normal;
--text-menu--font-weight: 500;
/* Spacing */
--space-1: 2px;
--space-2: 4px;
--space-3: 6px;
--space-4: 8px;
--space-5: 10px;
--space-6: 12px;
--space-7: 16px;
--space-8: 20px;
--space-9: 24px;
--space-10: 32px;
--space-11: 48px;
--space-12: 80px;
--container: 1200px;
--section-gap: 48px;
/* Radius */
--radius-hairline-details-highlighter-marks: 1px;
--radius-menu-bar-items-small-cards-cream-panels: 4px;
--radius-buttons-tabs-white-cards: 6px;
--radius-dropdown-menus-pricing-hero-panel: 8px;
--radius-app-windows-menu-bar-shell: 20px;
--radius-avatars-pills-circular-illustrations: 9999px;
/* Shadows */
--shadow-window: 0 25px 50px -12px rgba(0,0,0,0.25);
--shadow-ledge: 0 2.31px 0 0 rgb(210,211,204);
--shadow-card: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1);
--shadow-dialog: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1);
--shadow-hairline: 0 1px 2px 0 rgba(0,0,0,0.05);
}
Tailwind v4 theme
/* PostHog — Tailwind CSS v4 theme. Import after tailwindcss: @import "tailwindcss"; then paste this block. */
@theme {
--color-bg: #eeefe9;
--color-surface: #e5e7e0;
--color-surface-cream: #fdfdf8;
--color-surface-raised: #ffffff;
--color-border: #bfc1b7;
--color-text: #23251d;
--color-text-muted: #65675e;
--color-heading: #374151;
--color-primary: #eb9d2a;
--color-primary-ledge: #cd8407;
--color-accent: #b62ad9;
--color-highlight-blue: #2f80fa;
--color-link-action: #f54e00;
--color-success: #6aa84f;
--color-background: #eeefe9;
--color-surface: #e5e7e0;
--color-surface-raised: #ffffff;
--color-border: #bfc1b7;
--color-text: #23251d;
--color-text-muted: #65675e;
--color-primary: #eb9d2a;
--color-primary-text: #000000;
--color-accent: #b62ad9;
--color-success: #6aa84f;
--color-warning: #f7a501;
--font-display: RoundHog, Figtree, Inter, system-ui, sans-serif;
--font-body: RoundHog, Figtree, Inter, system-ui, sans-serif;
--font-mono: 'Source Code Pro', 'JetBrains Mono', ui-monospace, monospace;
--text-display: 60px;
--text-display--line-height: 1;
--text-display--letter-spacing: -1.5px;
--text-display--font-weight: 700;
--text-h1: 36px;
--text-h1--line-height: 1.11;
--text-h1--letter-spacing: -0.9px;
--text-h1--font-weight: 800;
--text-h2: 30px;
--text-h2--line-height: 1.33;
--text-h2--letter-spacing: -0.75px;
--text-h2--font-weight: 700;
--text-h2-section: 24px;
--text-h2-section--line-height: 1.33;
--text-h2-section--letter-spacing: -0.6px;
--text-h2-section--font-weight: 700;
--text-h3: 20px;
--text-h3--line-height: 1.6;
--text-h3--letter-spacing: -0.5px;
--text-h3--font-weight: 600;
--text-lead: 18px;
--text-lead--line-height: 1.5;
--text-lead--letter-spacing: normal;
--text-lead--font-weight: 500;
--text-body: 16px;
--text-body--line-height: 1.5;
--text-body--letter-spacing: normal;
--text-body--font-weight: 400;
--text-button-small: 14px;
--text-button-small--line-height: 1.43;
--text-button-small--letter-spacing: normal;
--text-button-small--font-weight: 600;
--text-menu: 13px;
--text-menu--line-height: 1.5;
--text-menu--letter-spacing: normal;
--text-menu--font-weight: 500;
--radius-hairline-details-highlighter-marks: 1px;
--radius-menu-bar-items-small-cards-cream-panels: 4px;
--radius-buttons-tabs-white-cards: 6px;
--radius-dropdown-menus-pricing-hero-panel: 8px;
--radius-app-windows-menu-bar-shell: 20px;
--radius-avatars-pills-circular-illustrations: 9999px;
--shadow-window: 0 25px 50px -12px rgba(0,0,0,0.25);
--shadow-ledge: 0 2.31px 0 0 rgb(210,211,204);
--shadow-card: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1);
--shadow-dialog: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1);
--shadow-hairline: 0 1px 2px 0 rgba(0,0,0,0.05);
--container-site: 1200px;
}
PostHog — Style Reference
retro desktop picnic on the lawn
Theme: light · Mood: light, playful, friendly, warm, illustrated, retro
PostHog's site is built like a friendly desktop computer. A grassy 3D wallpaper fills the background, labelled desktop icons line both edges, a rounded menu bar runs across the top, and every page opens in a frosted sage window with maximise and close buttons. It feels playful and a little retro, but it stays readable. The things that make it distinctive are chunky honey-orange buttons with a raised bottom edge, marker-style highlights behind key words, a bold purple tab frame and cartoon hedgehog art. All of this sits on top of a calm, warm-grey reading surface.
Tokens — Colors
| Name |
Value |
Token |
Role |
| Meadow Paper |
#eeefe9 |
--color-bg |
Body background under the wallpaper; the base layer on page edges and mobile gutters |
| Window Sage |
#e5e7e0 |
--color-surface |
The most-used surface: frosted app windows, the top menu bar and recessed cards (usually a little translucent, with a backdrop blur) |
| Cream Card |
#fdfdf8 |
--color-surface-cream |
Warm off-white cards such as the docs index panels and the pricing hero panel |
| Paper White |
#ffffff |
--color-surface-raised |
Raised cards (setup card, demo pane), secondary buttons, dropdown menus |
| Rule Grey |
#bfc1b7 |
--color-border |
1px card borders, dividers and hairlines; also the hover fill for ghost menu items |
| Hog Ink |
#23251d |
--color-text |
Main body and interface text; warm near-black with an olive tint |
| Moss Grey |
#65675e |
--color-text-muted |
Secondary copy, inactive tabs, supporting lines like 'Join 500,000+ teams' |
| Slate Heading |
#374151 |
--color-heading |
Large headings and emphasised copy on pricing and docs (the home H1 uses #111827) |
| Honey Orange |
#eb9d2a |
--color-primary |
Fill for primary calls to action ('Get started', 'Get started – free') |
| Ledge Amber |
#cd8407 |
--color-primary-ledge |
The solid raised edge under orange buttons, and the ledge colour under white secondary buttons |
| Hog Purple |
#b62ad9 |
--color-accent |
Active tab and thick frame around the home product showcase; guide-card left stripes |
| Signal Blue |
#2f80fa |
--color-highlight-blue |
Highlighted words in headlines (text on a #d9e8f2 highlight block), blue guide stripe, icons |
| Squeak Orange |
#f54e00 |
--color-link-action |
Bold inline text actions ('Share estimate', 'Create an estimate with AI'), carousel dots, icon tints |
| Check Green |
#6aa84f |
--color-success |
Checkmarks in feature lists; darker #4d7533 for 'for free.' text on a green highlight |
Tokens — Typography
- Display: RoundHog (Figtree, Inter, system-ui, sans-serif) — weights 600/700/800/900
- Body: RoundHog (Figtree, Inter, system-ui, sans-serif) — weights 400/500/600/700
- Mono: Source Code Pro (JetBrains Mono, ui-monospace, monospace) — weights 500
Tokens — Radius
| Element |
Value |
| Hairline details, highlighter marks |
1px |
| Menu bar items, small cards, cream panels |
4px |
| Buttons, tabs, white cards |
6px |
| Dropdown menus, pricing hero panel |
8px |
| App windows, menu bar shell |
20px |
| Avatars, pills, circular illustrations |
9999px |
Do
- Frame every page as an OS window (rounded about 20px, frosted #e5e7e0, soft 0 25px 50px -12px shadow) floating over an illustrated backdrop.
- Give every call to action a solid, blur-free ledge in #cd8407 under a #eb9d2a or white face, with 6px radius and dark #000/#23251d text.
- Keep all neutrals warm and olive (#eeefe9, #e5e7e0, #bfc1b7, #65675e, #23251d); use #bfc1b7 1px borders to separate cards.
- Emphasise one or two phrases per block with hand-drawn highlighter swipes or squiggle underlines, not bold colour text alone.
- Set all headings in RoundHog 700–800 with about -0.025em tracking; use 500 weight for lead copy at 17–18px.
- Use saturated accents in small doses: a purple #b62ad9 frame for the one showcase module, and coloured 4px left stripes on guide cards.
- Keep interface controls small and dense (13px menu items, 2px 8px padding, 4px gaps) to reinforce the desktop feel.
Don't
- Don't use cool greys, pure #f5f5f5 surfaces or blue-tinted borders; they break the warm paper tone.
- Don't give buttons blurred drop shadows or gradients; depth comes from the flat offset ledge only.
- Don't make the brand orange a background wash or use it for large surfaces; it belongs to calls to action and tiny highlights.
- Don't use large radii (12–24px) on buttons or cards; reserve rounding above 8px for windows and avatars.
- Don't replace the illustrations with stock photography or glossy 3D abstract blobs; imagery should be cartoonish, retro and self-aware.
- Don't set headings in a geometric display face or at light weights; the voice is chunky and rounded.
- Don't use more than one saturated accent frame per view; purple, blue and green are highlights, not themes.
{
"$name": "PostHog",
"$source": "https://posthog.com",
"$theme": "light",
"$generated": "inspiration library",
"color": {
"bg": {
"$type": "color",
"$value": "#eeefe9",
"$description": "Body background under the wallpaper; the base layer on page edges and mobile gutters"
},
"surface": {
"$type": "color",
"$value": "#e5e7e0",
"$description": "The most-used surface: frosted app windows, the top menu bar and recessed cards (usually a little translucent, with a backdrop blur)"
},
"surface-cream": {
"$type": "color",
"$value": "#fdfdf8",
"$description": "Warm off-white cards such as the docs index panels and the pricing hero panel"
},
"surface-raised": {
"$type": "color",
"$value": "#ffffff",
"$description": "Raised cards (setup card, demo pane), secondary buttons, dropdown menus"
},
"border": {
"$type": "color",
"$value": "#bfc1b7",
"$description": "1px card borders, dividers and hairlines; also the hover fill for ghost menu items"
},
"text": {
"$type": "color",
"$value": "#23251d",
"$description": "Main body and interface text; warm near-black with an olive tint"
},
"text-muted": {
"$type": "color",
"$value": "#65675e",
"$description": "Secondary copy, inactive tabs, supporting lines like 'Join 500,000+ teams'"
},
"heading": {
"$type": "color",
"$value": "#374151",
"$description": "Large headings and emphasised copy on pricing and docs (the home H1 uses #111827)"
},
"primary": {
"$type": "color",
"$value": "#eb9d2a",
"$description": "Fill for primary calls to action ('Get started', 'Get started – free')"
},
"primary-ledge": {
"$type": "color",
"$value": "#cd8407",
"$description": "The solid raised edge under orange buttons, and the ledge colour under white secondary buttons"
},
"accent": {
"$type": "color",
"$value": "#b62ad9",
"$description": "Active tab and thick frame around the home product showcase; guide-card left stripes"
},
"highlight-blue": {
"$type": "color",
"$value": "#2f80fa",
"$description": "Highlighted words in headlines (text on a #d9e8f2 highlight block), blue guide stripe, icons"
},
"link-action": {
"$type": "color",
"$value": "#f54e00",
"$description": "Bold inline text actions ('Share estimate', 'Create an estimate with AI'), carousel dots, icon tints"
},
"success": {
"$type": "color",
"$value": "#6aa84f",
"$description": "Checkmarks in feature lists; darker #4d7533 for 'for free.' text on a green highlight"
}
},
"role": {
"background": {
"$type": "color",
"$value": "#eeefe9"
},
"surface": {
"$type": "color",
"$value": "#e5e7e0"
},
"surface_raised": {
"$type": "color",
"$value": "#ffffff"
},
"border": {
"$type": "color",
"$value": "#bfc1b7"
},
"text": {
"$type": "color",
"$value": "#23251d"
},
"text_muted": {
"$type": "color",
"$value": "#65675e"
},
"primary": {
"$type": "color",
"$value": "#eb9d2a"
},
"primary_text": {
"$type": "color",
"$value": "#000000"
},
"accent": {
"$type": "color",
"$value": "#b62ad9"
},
"success": {
"$type": "color",
"$value": "#6aa84f"
},
"warning": {
"$type": "color",
"$value": "#f7a501"
}
},
"fontFamily": {
"display": {
"$type": "fontFamily",
"$value": [
"RoundHog",
"Figtree",
"Inter",
"system-ui",
"sans-serif"
],
"$description": "A custom, slightly rounded grotesk. Headings use 700–800 with negative tracking of about -0.025em (-0.9px at 36px, -1.5px at 60px)."
},
"body": {
"$type": "fontFamily",
"$value": [
"RoundHog",
"Figtree",
"Inter",
"system-ui",
"sans-serif"
],
"$description": "The same family is used for all body and interface text. Lead paragraphs use 500, buttons and links use 600–700, and menu items are small 13px/500."
},
"mono": {
"$type": "fontFamily",
"$value": [
"Source Code Pro",
"JetBrains Mono",
"ui-monospace",
"monospace"
],
"$description": "Used very rarely, for small code or label snippets only."
}
},
"typography": {
"display": {
"$type": "typography",
"$value": {
"fontFamily": "{fontFamily.display}",
"fontSize": "60px",
"lineHeight": "1",
"fontWeight": 700,
"letterSpacing": "-1.5px"
}
},
"h1": {
"$type": "typography",
"$value": {
"fontFamily": "{fontFamily.display}",
"fontSize": "36px",
"lineHeight": "1.11",
"fontWeight": 800,
"letterSpacing": "-0.9px"
}
},
"h2": {
"$type": "typography",
"$value": {
"fontFamily": "{fontFamily.display}",
"fontSize": "30px",
"lineHeight": "1.33",
"fontWeight": 700,
"letterSpacing": "-0.75px"
}
},
"h2-section": {
"$type": "typography",
"$value": {
"fontFamily": "{fontFamily.display}",
"fontSize": "24px",
"lineHeight": "1.33",
"fontWeight": 700,
"letterSpacing": "-0.6px"
}
},
"h3": {
"$type": "typography",
"$value": {
"fontFamily": "{fontFamily.display}",
"fontSize": "20px",
"lineHeight": "1.6",
"fontWeight": 600,
"letterSpacing": "-0.5px"
}
},
"lead": {
"$type": "typography",
"$value": {
"fontFamily": "{fontFamily.body}",
"fontSize": "18px",
"lineHeight": "1.5",
"fontWeight": 500,
"letterSpacing": "normal"
}
},
"body": {
"$type": "typography",
"$value": {
"fontFamily": "{fontFamily.body}",
"fontSize": "16px",
"lineHeight": "1.5",
"fontWeight": 400,
"letterSpacing": "normal"
}
},
"button-small": {
"$type": "typography",
"$value": {
"fontFamily": "{fontFamily.body}",
"fontSize": "14px",
"lineHeight": "1.43",
"fontWeight": 600,
"letterSpacing": "normal"
}
},
"menu": {
"$type": "typography",
"$value": {
"fontFamily": "{fontFamily.body}",
"fontSize": "13px",
"lineHeight": "1.5",
"fontWeight": 500,
"letterSpacing": "normal"
}
}
},
"spacing": {
"1": {
"$type": "dimension",
"$value": "2px"
},
"2": {
"$type": "dimension",
"$value": "4px"
},
"3": {
"$type": "dimension",
"$value": "6px"
},
"4": {
"$type": "dimension",
"$value": "8px"
},
"5": {
"$type": "dimension",
"$value": "10px"
},
"6": {
"$type": "dimension",
"$value": "12px"
},
"7": {
"$type": "dimension",
"$value": "16px"
},
"8": {
"$type": "dimension",
"$value": "20px"
},
"9": {
"$type": "dimension",
"$value": "24px"
},
"10": {
"$type": "dimension",
"$value": "32px"
},
"11": {
"$type": "dimension",
"$value": "48px"
},
"12": {
"$type": "dimension",
"$value": "80px"
}
},
"radius": {
"hairline-details-highlighter-marks": {
"$type": "dimension",
"$value": "1px"
},
"menu-bar-items-small-cards-cream-panels": {
"$type": "dimension",
"$value": "4px"
},
"buttons-tabs-white-cards": {
"$type": "dimension",
"$value": "6px"
},
"dropdown-menus-pricing-hero-panel": {
"$type": "dimension",
"$value": "8px"
},
"app-windows-menu-bar-shell": {
"$type": "dimension",
"$value": "20px"
},
"avatars-pills-circular-illustrations": {
"$type": "dimension",
"$value": "9999px"
}
},
"shadow": {
"window": {
"$type": "shadow",
"$value": "0 25px 50px -12px rgba(0,0,0,0.25)",
"$description": "Large soft drop shadow under frosted app windows floating over the wallpaper"
},
"ledge": {
"$type": "shadow",
"$value": "0 2.31px 0 0 rgb(210,211,204)",
"$description": "Solid, blur-free bottom edge under tabs and interface chips; a stamped, tactile feel"
},
"card": {
"$type": "shadow",
"$value": "0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1)",
"$description": "Raised white cards such as the 'Set up for free' box, and dropdown menus"
},
"dialog": {
"$type": "shadow",
"$value": "0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)",
"$description": "Large modal-style panels such as the 768px pricing estimator card"
},
"hairline": {
"$type": "shadow",
"$value": "0 1px 2px 0 rgba(0,0,0,0.05)",
"$description": "Small inputs and chips"
}
},
"component": {
"primary-ledge-button": {
"kind": "button",
"background": "#eb9d2a",
"color": "#000000",
"border": "1px solid #b17816",
"radius": "6px",
"padding": "10px 16px",
"font_size": "15px",
"font_weight": 600,
"shadow": "0 3px 0 0 #cd8407",
"hover": "Lift by translateY(-1px) and deepen the ledge to 4px; on press, translateY(2px) with the ledge reduced to 1px",
"notes": "The signature call to action. It sits on a solid darker-amber ledge, like a physical key. On the menu bar it is compact ('Get started – free', about 13–14px). In hero cards it stretches to fill its column."
},
"secondary-ledge-button": {
"kind": "button",
"background": "#ffffff",
"color": "#23251d",
"border": "1px solid #cd8407",
"radius": "6px",
"padding": "10px 16px",
"font_size": "15px",
"font_weight": 600,
"shadow": "0 3px 0 0 #cd8407",
"hover": "Same lift and press behaviour as the primary; the background stays white",
"notes": "Used for 'Install with AI', 'Explore product suite' and 'Search the docs' (with a leading search icon). Always shares the orange ledge so it reads as part of the same button family."
},
"menu-bar-item": {
"kind": "button",
"background": "transparent",
"color": "#23251d",
"border": "none",
"radius": "4px",
"padding": "2px 8px",
"font_size": "13px",
"font_weight": 500,
"shadow": "none",
"hover": "background #bfc1b7 at roughly 50% opacity",
"notes": "28px tall text items in the top system menu bar (Products, Tools, Pricing, Docs, Community, Company, More). Behaves like OS menus: each opens a dropdown."
},
"system-menu-bar": {
"kind": "nav",
"background": "rgba(229,231,224,0.85)",
"color": "#23251d",
"border": "none",
"radius": "6px",
"padding": "4px 8px",
"font_size": "13px",
"font_weight": 500,
"shadow": "none",
"hover": "Items highlight individually; icon buttons (search, help, account) get the same soft grey fill",
"notes": "A full-width translucent strip inset a few pixels from the viewport edge. From left to right: logo glyph, menu items, a flexible gap, the compact orange CTA, then 20px stroked icons for search, help and account."
},
"app-window": {
"kind": "card",
"background": "rgba(229,231,224,0.9) with backdrop-filter: blur(12px)",
"color": "#23251d",
"border": "none",
"radius": "20px",
"padding": "48px 80px",
"font_size": "16px",
"font_weight": 400,
"shadow": "0 25px 50px -12px rgba(0,0,0,0.25)",
"hover": "none",
"notes": "Every page lives inside one of these windows. Small grey maximise and close glyphs sit in the top-right corner. Content inside is capped at about 1200px, and the wallpaper and desktop icons stay visible around it."
},
"content-card": {
"kind": "card",
"background": "#ffffff",
"color": "#23251d",
"border": "1px solid #bfc1b7",
"radius": "6px",
"padding": "20px",
"font_size": "16px",
"font_weight": 400,
"shadow": "none",
"hover": "none for panels; list rows inside darken their text to #000",
"notes": "Docs index panels start with a 14px/600 uppercase label and a muted subline. There is a cream variant (#fdfdf8, 4px radius). Guide cards add a 4px solid left stripe in orange #eb9d2a, purple #b62ad9 or blue #2f80fa, with a small tracked-caps meta line ('VOL. 1 · 6 GUIDES')."
},
"showcase-tabs": {
"kind": "other",
"background": "#b62ad9",
"color": "#ffffff",
"border": "none",
"radius": "6px 6px 0 0",
"padding": "10px 12px",
"font_size": "14px",
"font_weight": 600,
"shadow": "none",
"hover": "Inactive tabs are transparent with #65675e text and darken to #23251d",
"notes": "The active tab joins an 8px purple frame that surrounds a white demo pane. A thin white progress bar under the active label shows auto-rotation, and a pause button sits top-right in the pane."
},
"highlighter-mark": {
"kind": "badge",
"background": "rgba(235,157,42,0.3)",
"color": "inherit",
"border": "none",
"radius": "1px",
"padding": "0 2px",
"font_size": "inherit",
"font_weight": "inherit",
"shadow": "none",
"hover": "none",
"notes": "A hand-drawn marker swipe behind key phrases ('analytics, errors', 'for free'). Headline variants: blue text #2f80fa on a #d9e8f2 block, and green #4d7533 text on a pale green block. Also pairs with hand-drawn squiggle underlines on words like 'agents'."
}
}
}