Mixpanel Brand Design System Deep-Dive
1. Brand Overview
Mixpanel’s design language is unapologetically data-forward and product-led. Everything about the interface says: “We are here to help you understand your product’s numbers.” It’s not fluffy, it’s not playful—it’s precise. The design feels like it’s built for product managers, analysts, and engineers who live inside dashboards.
The first impression: high contrast between content and background, restrained palette, and typography that leans modern yet approachable. The brand pushes clarity over decoration. White and deep charcoal (#1f2023) do most of the heavy lifting, with pops of saturated purple (#4f44e0) and green (#219464) in functional contexts.
They’ve chosen Garnett as their core typeface, with weights and sizes adjusted tightly for headlines and legibility in data-heavy contexts. There’s also Apercu Pro in certain captions—likely for a human touch in otherwise analytical spaces. This is not a generic sans-serif approach; Garnett’s proportions give Mixpanel’s UI a subtle personality.
Spacing follows a clean 8px scale, with occasional 4px and 5px adjustments (interesting choice—probably for pixel-perfect icon alignment). Rounded corners range from tight 4px radii for small UI bits to massive 100px pills for buttons and CTAs. Shadows are used sparingly; when they appear, they’re soft and tinted with purples (rgba(218, 208, 255, 0.5)), reinforcing the brand’s signature hue.
The feeling is: serious tool, friendly interface. This isn’t a consumer app design—it’s a professional analytics platform with a visual language that says “trust the data.”
2. Color System
2.1 Primary Colors
The main brand anchor is a deep, saturated purple (#4f44e0)—used for charts, highlights, and key interactive elements. It reads as creative intelligence—purple often signals originality and vision, which fits a product about understanding and predicting user behavior.
Secondary accents are functional:
- Green (
#219464) for positive states (success, growth metrics). - Red-orange (
#e34f2f) for negative states (errors, declines).
Primary background: pure white (#ffffff).
Primary text: charcoal (#2a2a2f), with a deeper #1f2023 for certain elements.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| White | #ffffff | Background | Main page canvas, cards |
| Charcoal Dark | #1f2023 | Text / Background | Headings, dark sections |
| Transparent Lavender | #e8ddff | Overlay | Soft background tints |
| Text Highlight | #accef7 | Highlight | Inline text emphasis |
| Inverted Secondary Text | #f6f6f6 | Text | On dark backgrounds |
| Positive Green | #219464 | Functional | Success states, growth metrics |
| Negative Red-Orange | #e34f2f | Functional | Errors, warnings |
| Chrome Active Text | #ffffff | UI Text | On active nav or buttons |
| Chart Axis Label | #626266 | UI Text | Axis labels in charts |
| Disabled Text | #8f8f91 | UI Text | Disabled states |
| Chrome Hover | #463dbb | Interactive | Hover state for chrome/nav |
| Chart Axis Line | #e9e9e9 | UI Element | Divider lines in charts |
| Primary Text | #2a2a2f | Text | Body copy |
| Chart Highlight Purple | #4f44e0 | Chart Accent | Active data highlights |
| Chrome Active Background | #322e6f | UI Element | Active chrome/nav background |
| Black Transparent | #000000 @ 10-20% | Overlay | Hover/focus backgrounds |
2.3 Color Relationships
White (#ffffff) against charcoal (#1f2023) gives excellent contrast—well above WCAG AA for body text. Purple (#4f44e0) on white is readable, but on dark backgrounds it needs a lighter text color (hence #f6f6f6). Positive and negative colors are saturated enough to stand out without clashing with the purple core.
Dark mode here is essentially inverted background with lighter text (#f6f6f6). The chart axis grey (#626266) is subtle—it’s low contrast but fine for non-essential labels.
2.4 Usage Guide
- White + Charcoal: Default pairing for most UI.
- Purple (
#4f44e0): Use for data highlights, CTAs. Avoid flooding large areas—it’s a power color. - Green / Red: Keep to functional states—don’t use for decoration.
- Lavender tint (
#e8ddff): Good for background panels in charts. - Avoid pairing purple with red—too much visual tension.
- Use
#accef7highlights sparingly in text—it’s bright against white.
3. Typography
3.1 Font Families
Primary: Garnett Medium / Garnett Regular — custom, not from Google or Adobe Fonts.
Secondary: Apercu Pro in some captions.
Fallbacks: “Placeholder” fonts noted in extraction—likely internal system fonts for when Garnett isn’t loaded.
No variable font usage.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| Heading-1 | Garnett Medium | 60px (3.75rem) | 400 | 1.20 |
| Heading-1 | Garnett Medium | 48px (3.00rem) | 400 | 1.20 |
| Heading-1 | Garnett Medium | 36px (2.25rem) | 400 | 1.20 |
| Heading-1 | Garnett Medium | 28px (1.75rem) | 400 | 1.20 |
| Heading-1 | Garnett Medium | 22px (1.38rem) | 400 | 1.20 |
| Heading-1 | Garnett Medium | 18px (1.13rem) | 400 | 1.40 |
| Heading-1 Bold | Garnett Medium | 18px (1.13rem) | 700 | 1.40 |
| Heading-1 Medium | Garnett Medium | 18px (1.13rem) | 500 | 1.40 |
| Body | Garnett Regular | 16px (1.00rem) | 400 | 1.60 |
| Body Medium | Garnett Medium | 16px (1.00rem) | 500 | 1.00 |
| Caption | Garnett Medium | 14px (0.88rem) | 400 | 1.20 |
| Caption | Garnett Regular | 14px (0.88rem) | 400 | 1.50 |
| Caption | Apercu Pro | 14px (0.88rem) | 400 | 1.29 |
| Link | sans-serif | 12px (0.75rem) | 400 | - |
| Caption | Garnett Medium | 12px (0.75rem) | 500 | 1.00 |
| Caption | Garnett Regular | 12px (0.75rem) | 400 | 1.68 |
| Caption Uppercase | Garnett Medium | 12px (0.75rem) | 500 | 1.80 |
| Caption Uppercase | Apercu Pro Medium | 12px (0.75rem) | 500 | 1.80 |
| Caption | Garnett | 12px (0.75rem) | 400 | 1.00 |
| Link | Garnett Regular | 12px (0.75rem) | 400 | 1.68 |
3.3 Hierarchy
The heading scale is tight—ratios roughly 1.33x between steps. This makes transitions between headline sizes feel consistent. Body text at 16px is readable; captions drop to 14px or 12px for dense data. Uppercase captions with 2.4px letterspacing are used for labels—gives a nice “chart axis” feel.
4. Spacing & Layout
4.1 Spacing Scale
Base: 8px grid. They also use 4px and 5px increments for micro-adjustments.
| Value | Rem | Count | Usage |
|---|---|---|---|
| 4px | 0.25rem | 16 | Icon padding |
| 5px | 0.31rem | 4 | Fine-tuned alignment |
| 8px | 0.50rem | 52 | Small gaps |
| 10px | 0.63rem | 108 | Button padding, tight component gaps |
| 16px | 1.00rem | 27 | Body padding |
| 24px | 1.50rem | 15 | Card padding |
| 32px | 2.00rem | 1 | Section spacing |
| 40px | 2.50rem | 2 | Large gaps |
| 80px | 5.00rem | 16 | Hero section spacing |
| 152px | 9.50rem | 1 | Massive layout spacing |
| 160px | 10.00rem | 4 | Hero banners |
4.2 Layout
Breakpoints:
- 98px (!!) — probably a micro breakpoint for extreme narrow cases
- 807px / 808px — tablet boundary
- 1199px / 1200px — desktop start
- 1439px — large desktop
Responsive approach: fixed breakpoints; not fluid typography.
5. Visual Elements
Border Radius
Notable: heavy use of 4px, 8px, 12px, 16px, and 100px for pills.
| Radius | Count | Usage |
|---|---|---|
| 0px 0px 40px 40px | 2 | Footer blocks |
| 0px 16px 0px 0px | 12 | Cards with one rounded edge |
| 4px | 57 | Buttons, inputs |
| 8px | 19 | Cards |
| 10px | 1 | Rare component |
| 12px | 12 | Images, modals |
| 16px | 22 | Larger cards |
| 24px | 11 | Big containers |
| 32px | 1 | Hero block |
| 40px | 1 | Large panel |
| 100px | 23 | Pill buttons |
| 100% | 10 | Circular avatars |
Shadows
Purples dominate: rgba(218, 208, 255, 0.5) 0px 40px 24px -32px is the main. Soft shadows, minimal black drop shadows.
Borders: Rare—2px inset black borders only in iframes.
6. Components
6.1 Buttons
No direct button data extracted—likely styled via Vuetify.
Given radii, pill buttons use border-radius: 100px with purple or white backgrounds depending on context.
States:
- Hover: chrome hover color
#463dbb - Active: chrome active
#322e6f - Disabled:
#8f8f91text with reduced opacity
6.2 Links
Three styles:
- Blue (
rgb(0,0,238)) no underline. - Black no underline.
- White underline.
Hover: color changes to defined hover token or default text color; underline often removed.
6.3 Forms
No input styles extracted—likely consistent with 4px or 8px radius, grey borders (#e9e9e9), and disabled text color.
6.4 Cards
Padding: multiples of 24px. Shadows: purple-tinted soft drop. Radii: 8px or 12px.
7. Design Tokens
:root {
/* Colors */
--color-white: #ffffff;
--color-charcoal-dark: #1f2023;
--color-transparent-lavender: #e8ddff;
--color-text-highlight: #accef7;
--color-inverted-secondary-text: #f6f6f6;
--color-positive-green: #219464;
--color-negative-red-orange: #e34f2f;
--color-chrome-active-text: #ffffff;
--color-chart-axis-label: #626266;
--color-disabled-text: #8f8f91;
--color-chrome-hover: #463dbb;
--color-chart-axis-line: #e9e9e9;
--color-primary-text: #2a2a2f;
--color-chart-highlight-purple: #4f44e0;
--color-chrome-active-background: #322e6f;
/* Typography */
--font-heading: "Garnett Medium", sans-serif;
--font-body: "Garnett Regular", sans-serif;
--font-caption: "Apercu Pro", sans-serif;
/* Spacing */
--space-4: 4px;
--space-5: 5px;
--space-8: 8px;
--space-10: 10px;
--space-16: 16px;
--space-24: 24px;
--space-32: 32px;
--space-40: 40px;
--space-80: 80px;
--space-152: 152px;
--space-160: 160px;
/* Radius */
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 12px;
--radius-xl: 16px;
--radius-xxl: 24px;
--radius-pill: 100px;
--radius-full: 100%;
/* Shadows */
--shadow-purple-lg: rgba(218, 208, 255, 0.5) 0px 40px 24px -32px;
--shadow-purple-sm: rgba(218, 208, 255, 0.5) -1px 1px 4px 0px;
}8. AI Coding Assistant Prompt
# Mixpanel Design System Specification
You are a Mixpanel design expert. Build UIs matching their visual language exactly.
## Brand Context
Mixpanel's design is data-first, high-contrast, and professional. It uses a restrained palette with functional greens/reds and a signature purple for highlights. Typography is modern sans-serif with clear hierarchy.
## Color Palette
- White: #ffffff — Primary background
- Charcoal Dark: #1f2023 — Text, dark sections
- Transparent Lavender: #e8ddff — Soft background tints
- Text Highlight: #accef7 — Inline emphasis
- Inverted Secondary Text: #f6f6f6 — On dark backgrounds
- Positive Green: #219464 — Success states
- Negative Red-Orange: #e34f2f — Error states
- Chrome Active Text: #ffffff — On active UI elements
- Chart Axis Label: #626266 — Chart labels
- Disabled Text: #8f8f91 — Disabled UI states
- Chrome Hover: #463dbb — Hover state for nav/chrome
- Chart Axis Line: #e9e9e9 — Chart dividers
- Primary Text: #2a2a2f — Body copy
- Chart Highlight Purple: #4f44e0 — Data highlights
- Chrome Active Background: #322e6f — Active nav backgrounds
## Typography
Fonts:
- Headings: "Garnett Medium", sans-serif
- Body: "Garnett Regular", sans-serif
- Captions: "Apercu Pro", sans-serif
Sizes:
| Level | Size | Weight | Line Height | Use |
|-------|------|--------|-------------|-----|
| H1 | 60px | 400 | 1.20 | Page titles |
| H2 | 48px | 400 | 1.20 | Section titles |
| H3 | 36px | 400 | 1.20 | Subsections |
| H4 | 28px | 400 | 1.20 | Smaller headings |
| H5 | 22px | 400 | 1.20 | UI headings |
| Body | 16px | 400 | 1.60 | Paragraphs |
| Caption | 14px | 400 | 1.20-1.50 | Labels |
| Small | 12px | 400/500 | 1.00-1.80 | Meta info |
## Spacing & Grid
Base: 8px
Scale: 4px, 5px, 8px, 10px, 16px, 24px, 32px, 40px, 80px, 152px, 160px
## Border Radius
- none: 0px — Tables
- sm: 4px — Buttons, inputs
- md: 8px — Cards
- lg: 12px — Modals
- xl: 16px — Large cards
- xxl: 24px — Containers
- pill: 100px — CTA buttons
- full: 100% — Avatars
## Shadows & Depth
- Purple large: rgba(218, 208, 255, 0.5) 0px 40px 24px -32px
- Purple small: rgba(218, 208, 255, 0.5) -1px 1px 4px 0px
## Component Specifications
### Primary Button
```css
.btn-primary {
background: #4f44e0;
color: #ffffff;
padding: 10px 24px;
border-radius: 100px;
font-weight: 500;
font-size: 16px;
border: none;
transition: background 150ms ease;
}
.btn-primary:hover { background: #463dbb; }
.btn-primary:focus { outline: 2px solid #accef7; outline-offset: 2px; }
.btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
```
### Secondary Button
```css
.btn-secondary {
background: #ffffff;
color: #4f44e0;
padding: 10px 24px;
border-radius: 100px;
border: 1px solid #4f44e0;
}
.btn-secondary:hover { background: #e8ddff; }
```
### Navigation Links
```css
.nav-link {
color: #1f2023;
text-decoration: none;
}
.nav-link:hover {
color: #463dbb;
}
```
### Input Fields
```css
.input {
border: 1px solid #e9e9e9;
border-radius: 4px;
padding: 8px 10px;
font-size: 16px;
}
.input:focus { border-color: #4f44e0; outline: none; }
.input:disabled { color: #8f8f91; background: #f6f6f6; }
```
### Card
```css
.card {
background: #ffffff;
border-radius: 8px;
padding: 24px;
box-shadow: rgba(218, 208, 255, 0.5) 0px 40px 24px -32px;
}
```
## Layout & Responsive Rules
Max content width: ~1200px
Page padding: 16px mobile / 24px desktop
Grid gap: multiples of 8px
Breakpoints:
- Mobile: <807px
- Tablet: 808px–1199px
- Desktop: >1200px
## Interaction Rules
- Transition: 150ms ease for state changes
- Focus indicators: 2px solid highlight (`#accef7`)
- Loading: dim component, keep layout stable
## DO
- Use only colors from palette
- Maintain 8px grid
- Keep headings in Garnett Medium
- Use uppercase captions with 2.4px spacing for labels
- Use purple shadows for depth
## DON'T
- Invent new colors
- Mix rounded and sharp corners
- Use heavy black shadows
- Overuse purple backgrounds
- Stretch avatars
## Code Examples
Primary Button:
```css
<button class="btn-primary">Sign Up</button>
```
Secondary Button:
```css
<button class="btn-secondary">Learn More</button>
```
Form Input:
```css
<input class="input" placeholder="Enter name" />
```9. Summary
TL;DR — Mixpanel’s design is crisp, functional, and data-first. White + charcoal form the base, purple accents guide interaction, and Garnett’s modern typography keeps it human. Spacing is disciplined, shadows are subtle, and corners are consistently rounded.
Brand Keywords:
- data-driven-minimalist
- purple-functional
- analytics-professional
- modern-readable