BrandToPrompt

Firefox Design System: Clean Accessible UI Patterns

Visit Site

Explore Firefox's design system - colors, typography, spacing, and components. Learn how Mozilla builds trust through clean, accessible design.

6 min read1,098 words

Brand Identity

Color Palette

Primary
Secondary

Typography

Primary Font
Mozilla Headline
Secondary Font
Mozilla Text

Design Style

Style
minimalist, flat, color-driven with subtle shadows and high contrast
Visual Density
grid-based with generous whitespace and consistent 8px spacing
Border Style
4px slight rounding on buttons, 8px on containers, 16px on cards, 60px pills

Full Analysis

Firefox Brand Design System Deep-Dive

1. Brand Overview

Firefox’s visual language is consistent with its product ethos: open, privacy-focused, and user-friendly, but not sterile. The design feels human tech—serious enough to be trusted, friendly enough to be approachable. Mozilla has been moving away from skeuomorphism and heavy gradients for years, and here, the interface is crisp, flat, and color-driven.

The brand identity leans on a strong primary blue (#0060df) for interaction states—clean, high-contrast against white backgrounds—and a deep charcoal (#42414d) for grounding. The blue is not the hyper-aggressive neon of some tech brands; it’s a confident, saturated mid-tone that still feels accessible.

Typography is custom: Mozilla Headline and Mozilla Text. Both are modern sans-serifs with subtle quirks. Headline is heavier, more geometric—used for high-level headings. Text is softer, more readable—used for body copy and UI text. There are no external Google or Adobe font dependencies, which suggests Mozilla controls rendering and licensing tightly.

Layout-wise, Firefox stays on an 8px spacing grid, with occasional 4px adjustments for tight UI elements. Breakpoints are thoughtful, keeping content readable across devices: small screens break at 479px/480px, mid-tier tablets at 767px/768px, desktop shifts at 1023px/1024px, and there’s a large-screen breakpoint at 1312px.

Overall, the design is functional, legible, and built for global use. They avoid over-designed elements: buttons are flat, shadows are subtle and rare, borders are clean. This works because Firefox’s brand is about trust and clarity—not visual gimmicks.


2. Color System

2.1 Primary Colors

The main brand color: Blue (#0060df). This is the action color—used for CTA buttons, key links, and interactive highlights. Blue in branding signals trust, reliability, and technology. Competitors like Chrome lean on multi-color logos but use simpler blues in UI. Safari uses a lighter blue, almost pastel; Firefox’s choice is richer, more assertive.

The secondary semantic color is White (#ffffff), used for backgrounds and primary text on dark surfaces.

2.2 Complete Palette

Color Name / RoleHexUsage
Charcoal UI (rgb(66,65,77))#42414dButton text, headings, body text on light backgrounds
White (rgb(255,255,255))#ffffffBackgrounds, text on dark surfaces
Black (rgb(0,0,0))#000000Text, borders, outlines
Primary Blue (rgb(0,96,223))#0060dfCTAs, primary links, navigation logo highlight
Light Grey (rgb(191,191,201))#bfbfc9Footer text, language switcher links
Deep Grey (rgb(22,22,22))#161616Menu item text, dark backgrounds
Deep Purple (rgb(32,18,58))#20123aAccent backgrounds
Mid Grey (rgb(179,179,179))#b3b3b3Footer, secondary text
Cyan Tint (rgb(128,235,255))#80ebffAccent, highlight states
Dark Blue Hover (rgb(2,80,187))#0250bbHover/focus states for primary actions

2.3 Color Relationships

Contrast is generally strong: blue (#0060df) on white passes WCAG AA easily for normal text. Charcoal (#42414d) on white is comfortably readable. White on deep grey (#161616) is high contrast.

Dark mode elements use inverted colors: #000 backgrounds, #f4f4f4 text from CSS variables. The link hover inverse (#d6ffcd) is a pale green—interesting choice, possibly hinting at Firefox’s environmental initiatives.

2.4 Usage Guide

  • Primary Blue: Use exclusively for interactive elements. Don’t use it for static headings—keeps the action affordance clear.
  • Charcoal & Black: For text on light backgrounds. Charcoal feels softer than pure black, good for body copy.
  • Light Grey: For secondary UI text—avoid on primary content; it’s too low contrast.
  • Deep Purple: Rare—use for special sections or brand visuals.
  • Cyan Tint: Works well as hover effects but avoid using for text—contrast is poor on white.
  • Avoid mixing Deep Grey (#161616) with Charcoal in the same UI section—it muddies the hierarchy.

3. Typography

3.1 Font Families

  • Mozilla Headline — fallback: Helvetica Neue, Arial, X-LocaleSpecific. Used for headings, hero text.
  • Mozilla Text — fallback: Helvetica Neue, Arial, X-LocaleSpecific or Inter, Helvetica Neue, Arial, X-LocaleSpecific in some contexts. Used for body, links, and buttons.

No Google Fonts or Adobe Fonts. No variable fonts detected. This is controlled, predictable rendering.

3.2 Type Scale

Element ContextFont FamilySize px/remWeightLine HeightSpacing
heading-1Mozilla Headline48px / 3rem6001.10-0.48px
heading-1Mozilla Text48px / 3rem4001.10null
linkMozilla Text48px / 3rem7001.10null
heading-1Mozilla Headline40px / 2.5rem4001.10-0.4px
heading-1Mozilla Headline38px / 2.38rem4001.10-0.38px
linkMozilla Text28px / 1.75rem7001.10null
linkMozilla Headline28px / 1.75rem7001.10-0.48px
heading-1Mozilla Headline24px / 1.5rem6001.10-0.24px
heading-1Mozilla Text24px / 1.5rem4001.20null
heading-1Mozilla Text24px / 1.5rem7001.20-0.24px
heading-1Mozilla Headline18px / 1.13rem4001.10-0.18px
heading-1Mozilla Headline18px / 1.13rem6001.10-0.18px
heading-1Mozilla Text16px / 1rem4001.50null
buttonMozilla Text16px / 1rem7001.50null
linkMozilla Text16px / 1rem4001.20null
linkMozilla Text16px / 1rem6001.20null
heading-1Mozilla Text16px / 1rem7001.00null
linkMozilla Text16px / 1rem7001.20null
heading-1Mozilla Text16px / 1rem4001.10-0.16px
heading-1Mozilla Text16px / 1rem7001.20-0.16px
heading-1Mozilla Text16px / 1rem6001.20-0.16px
linkMozilla Text16px / 1rem6001.20-0.16px
linkMozilla Text14px / 0.88rem4001.20null
linkMozilla Text12px / 0.75rem4001.20null

3.3 Hierarchy

The typography scale is tight—small increments between heading levels keep visual rhythm. Headings rarely exceed 48px, which maintains balance on mobile. Line heights are mostly 1.10 for headings—compact, making them feel bold. Body text has more breathing room (1.50).


4. Spacing & Layout

4.1 Spacing Scale

Firefox runs an 8px base grid. Common values:

pxremCountUsage Example
10.06rem68Hairline borders, fine adjustments
30.19rem4Icon spacing
60.38rem28Button vertical padding
80.50rem35Small gaps
100.63rem8Input padding
120.75rem1Rare—possibly icon container
161.00rem63Base body spacing
201.25rem26Section padding
241.50rem22Card padding
322.00rem10Large gaps
483.00rem1Hero text spacing
603.75rem6Major section gaps
644.00rem9Hero padding
805.00rem5Page section spacing
865.38rem3Rare—image padding
885.50rem1Large hero gaps
966.00rem19Major vertical spacing

4.2 Layout

Breakpoints:

  • Mobile: 479px / 480px
  • Tablet: 600px, 767px / 768px
  • Desktop: 1023px / 1024px
  • Large: 1312px

These are non-standard pairs—likely separate min/max break conditions for nuanced responsive changes.


5. Visual Elements

Border Radius:

  • 0px 0px 8px 8px — bottom-rounded containers
  • 4px — buttons, small UI elements
  • 16px — rare, maybe cards
  • 60px — large pill shapes

Shadows: Sparse. Mostly multi-layer subtle shadows with low opacity—used sparingly.

Example: rgba(29,17,51,0.04) 0px 6px 6px 1px, rgba(9,32,77,0.12) 0px 8px 8px 2px, rgba(29,17,51,0.12) 0px 5px 5px -3px.

Borders: Clean, 2px solid rgb(0,0,0) or light grey rgb(232,232,232). No ornate styles—functional only.


6. Components

6.1 Buttons

Primary Button (mzp-c-button):

Default:

  • Background: #0060df
  • Text: #ffffff
  • Padding: 6px 24px
  • Border radius: 4px
  • Border: 2px solid rgba(0,0,0,0)
  • Font weight: 700
  • Font size: 16px

Hover:

  • Text: rgb(231,223,255)
  • Background: #fafafa

Active:

  • Text: rgb(231,223,255)
  • Background: #ededf0

Focus:

  • Box-shadow: rgba(0,144,237,0.5) 0px 0px 0px 2px
  • Outline: 1px dotted #000
  • Border: 1px solid

Multiple link styles:

  1. Blue links: Default #0060df, underline; hover #aaf2ff.
  2. Dark text links: #161616 no underline; hover #aaf2ff underline.
  3. White links: #ffffff underline; hover #aaf2ff.
  4. Charcoal links: #42414d no underline; hover #aaf2ff.
  5. Light grey links: #bfbfc9 underline; hover #aaf2ff.

6.3 Forms

Select:

  • Default: Background #161616, text #fafafa, border 2px solid #fafafa, radius 0px, padding 8px 40px 8px 36px.
  • Focus: Background #fafafa, text #000, border color #42425a, box-shadow rgba(255,79,94,0.5) 0px 0px 0px 2px.

6.4 Cards

No explicit card data, but shadow values suggest minimal depth, with padding at 24px or 32px.


7. Design Tokens (CSS Custom Properties)

:root {
  /* Colors */
  --color-charcoal-ui: #42414d;
  --color-white: #ffffff;
  --color-black: #000000;
  --color-primary-blue: #0060df;
  --color-light-grey: #bfbfc9;
  --color-deep-grey: #161616;
  --color-deep-purple: #20123a;
  --color-mid-grey: #b3b3b3;
  --color-cyan-tint: #80ebff;
  --color-dark-blue-hover: #0250bb;

  /* Typography */
  --font-mozilla-headline: "Mozilla Headline", "Helvetica Neue", Arial, X-LocaleSpecific;
  --font-mozilla-text: "Mozilla Text", "Helvetica Neue", Arial, X-LocaleSpecific;

  /* Spacing */
  --space-1: 1px;
  --space-3: 3px;
  --space-6: 6px;
  --space-8: 8px;
  --space-10: 10px;
  --space-12: 12px;
  --space-16: 16px;
  --space-20: 20px;
  --space-24: 24px;
  --space-32: 32px;
  --space-48: 48px;
  --space-60: 60px;
  --space-64: 64px;
  --space-80: 80px;
  --space-86: 86px;
  --space-88: 88px;
  --space-96: 96px;

  /* Border Radius */
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 16px;
  --radius-pill: 60px;

  /* Shadows */
  --shadow-1: rgba(29, 17, 51, 0.04) 0px 6px 6px 1px, rgba(9, 32, 77, 0.12) 0px 8px 8px 2px, rgba(29, 17, 51, 0.12) 0px 5px 5px -3px;
  --shadow-2: rgba(29, 17, 51, 0.25) 0px 5px 16px 2px;
}

8. AI Coding Assistant Prompt

# Firefox Design System Specification

You are a Firefox design expert. Build UIs matching their visual language exactly.

## Brand Context
Firefox’s design is clean, flat, and color-driven. It values clarity, trust, and accessibility over decoration. Typography is custom, spacing is on an 8px grid, and components are consistent across breakpoints.

## Color Palette
- Charcoal UI: #42414d — button text, headings, body text on light backgrounds
- White: #ffffff — backgrounds, text on dark surfaces
- Black: #000000 — text, borders, outlines
- Primary Blue: #0060df — CTAs, primary links, navigation logo highlight
- Light Grey: #bfbfc9 — footer text, language switcher links
- Deep Grey: #161616 — menu item text, dark backgrounds
- Deep Purple: #20123a — accent backgrounds
- Mid Grey: #b3b3b3 — footer, secondary text
- Cyan Tint: #80ebff — accent, highlight states
- Dark Blue Hover: #0250bb — hover/focus states for primary actions

## Typography
Fonts:
- Headings: "Mozilla Headline", Helvetica Neue, Arial, X-LocaleSpecific
- Body/UI: "Mozilla Text", Helvetica Neue, Arial, X-LocaleSpecific

Sizes:
| Level | Size | Weight | Line Height | Use For |
|-------|------|--------|-------------|---------|
| H1 | 48px | 600 | 1.10 | Page titles |
| H1 light | 48px | 400 | 1.10 | Hero headings |
| Link large | 48px | 700 | 1.10 | Promo links |
| H2 | 40px | 400 | 1.10 | Section headings |
| H3 | 38px | 400 | 1.10 | Sub-headings |
| Link medium | 28px | 700 | 1.10 | Large navigation links |
| H4 | 24px | 600 | 1.10 | Card titles |
| Body large | 24px | 400 | 1.20 | Lead paragraphs |
| H4 bold | 24px | 700 | 1.20 | Emphasis headings |
| Small heading | 18px | 400 | 1.10 | Labels |
| Small heading bold | 18px | 600 | 1.10 | UI section titles |
| Body | 16px | 400 | 1.50 | Paragraphs |
| Button | 16px | 700 | 1.50 | Button text |
| Link small | 16px | 400 | 1.20 | Inline links |
| Link bold | 16px | 600 | 1.20 | Emphasis links |
| Caption | 14px | 400 | 1.20 | Captions |
| Micro | 12px | 400 | 1.20 | Legal text |

## Spacing & Grid
Base: 8px grid
Scale: 1px, 3px, 6px, 8px, 10px, 12px, 16px, 20px, 24px, 32px, 48px, 60px, 64px, 80px, 86px, 88px, 96px
Usage:
- Button padding: 6px vertical
- Card padding: 24px
- Section gaps: 60px–96px

## Border Radius
- none: 0 — flat containers
- sm: 4px — buttons, small inputs
- md: 8px — bottom corners for containers
- lg: 16px — cards
- pill: 60px — pill-shaped elements

## Shadows & Depth
- Layered subtle shadow: rgba(29,17,51,0.04)... — cards, modals
- Medium shadow: rgba(29,17,51,0.25)... — hover elevation

## Component Specifications

### Primary Button
Default:
- background: #0060df
- color: #ffffff
- padding: 6px 24px
- border-radius: 4px
- border: 2px solid transparent
- font-weight: 700
- font-size: 16px

Hover:
- color: rgb(231,223,255)
- background: #fafafa

Active:
- color: rgb(231,223,255)
- background: #ededf0

Focus:
- box-shadow: rgba(0,144,237,0.5) 0px 0px 0px 2px
- outline: 1px dotted #000
- border: 1px solid

### Link Styles
- Blue link: default #0060df underline, hover #aaf2ff underline
- Dark text link: #161616 no underline, hover #aaf2ff underline
- White link: #ffffff underline, hover #aaf2ff underline

### Input Fields (Select)
Default:
- background: #161616
- color: #fafafa
- border: 2px solid #fafafa
- radius: 0px
- padding: 8px 40px 8px 36px

Focus:
- background: #fafafa
- color: #000
- border-color: #42425a
- box-shadow: rgba(255,79,94,0.5) 0px 0px 0px 2px

## Layout & Responsive Rules
Breakpoints:
- Mobile: <480px
- Tablet: 600–768px
- Desktop: >1024px
- Large: >1312px

## Interaction Rules
- Transition: 150ms ease for state changes
- Focus indicators: visible outlines
- Hover states: color shifts only

## DO List
- Use ONLY colors from the palette
- Stick to 8px grid for spacing
- Use Mozilla Headline for headings
- Keep buttons flat—no gradients
- Maintain strong contrast for text

## DON'T List
- Don’t use unapproved colors
- Don’t mix rounded and sharp corners in the same element
- Don’t add drop shadows to buttons
- Don’t reduce contrast below WCAG AA

## Code Examples

Primary Button:
```css
.btn-primary {
  background: #0060df;
  color: #ffffff;
  padding: 6px 24px;
  border-radius: 4px;
  border: 2px solid transparent;
  font-weight: 700;
  font-size: 16px;
  transition: background 150ms ease;
}
.btn-primary:hover {
  background: #fafafa;
  color: rgb(231,223,255);
}
.btn-primary:focus {
  box-shadow: rgba(0,144,237,0.5) 0 0 0 2px;
  outline: 1px dotted #000;
}
```

Card:
```css
.card {
  background: #ffffff;
  border-radius: 16px;
  padding: 24px;
  box-shadow: rgba(29,17,51,0.04) 0px 6px 6px 1px,
              rgba(9,32,77,0.12) 0px 8px 8px 2px,
              rgba(29,17,51,0.12) 0px 5px 5px -3px;
}
```

Select Input:
```css
.select {
  background: #161616;
  color: #fafafa;
  border: 2px solid #fafafa;
  padding: 8px 40px 8px 36px;
  border-radius: 0;
}
.select:focus {
  background: #fafafa;
  color: #000;
  border-color: #42425a;
  box-shadow: rgba(255,79,94,0.5) 0 0 0 2px;
}
```

9. Summary

TL;DR — Firefox’s design system is clean, flat, and color-led. Blue (#0060df) drives interaction, typography is custom and controlled, and spacing sticks religiously to an 8px grid. Shadows are rare; borders and color shifts define states.

Brand Keywords:

  • trust-driven
  • tech-accessible
  • flat-interactive
  • open-minimalist
  • global-consistent