Ecosia Design System Deep Dive
1. Brand Overview
Ecosia isn’t your average search engine. Its whole pitch is “search the web, plant trees.” The product’s identity is heavily rooted—literally—in environmental activism. That ethos bleeds into their design system: earthy greens, natural yellows, straightforward sans-serif typography, and UI patterns that feel friendly without shouting.
From a design point of view, they lean toward minimal interaction ornamentation and clear functional components. Buttons are pill-shaped, shadows are subtle, and typography is entirely sans-serif for clean readability. This is a civic-tech vibe: it’s not trying to impress you with fancy motion, it’s trying to keep you on mission. There’s an awareness that the brand message (and numbers of trees planted) is more important than dazzling you with dribbble-worthy flourishes.
What stands out?
- They don’t overuse their greens. It’s tempting for eco-brands to paint the whole UI green; Ecosia keeps it dialed in. Green is for accent, not background overwhelm.
- The primary text color is a deep neutral (#333333), not black. This softens contrast just enough for warmth but still passes accessibility.
- Buttons are distinctly pill-shaped with
border-radius: 9999px—a hell of a commitment to the rounded motif. This makes them instantly recognizable as touch targets. - Typography is largely Founders Grotesk and Inter, a modern sans pairing that covers branding moments (Grotesk) and utility/UI copy (Inter). No decorative type, no italics, no script.
Their audience is broad—they’re a search engine—but the people who stick around care about ethics, sustainability, and transparency. That bleeds into the design decisions: clarity over flair, trust-building over experimentation.
I also like what they don’t do: no endless color gradients, no tiny low-contrast fonts. It’s a solid utilitarian base layered with personality through color pops.
2. Color System
2.1 Primary Colors
Their "semantic primary" is #6c6c6c (rgb(108,108,108))—a muted gray. That’s unusual: most brands put a saturated hue here. But Ecosia’s “primary” slot here seems to be system-defined, not “marketing primary.” The emotional primary is actually the leaf green (#bbcf65 hover, #d7eb80 default CTA) and the deep woodsy green from tokens (#275243). The muted gray primary fits the UI’s calm base.
Why it works:
- Gray as primary keeps neutrality across a search UI, where links, forms, and results must be legible without color contamination.
- Color pops (leaf green, highlight yellow) jump out without needing banners or icons to indicate action.
Compared to Google: Google’s palette uses blue for links, colors for logo. Ecosia is less brand-noisy, more in service of the mission than corporate identity.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Neutral Dark | #333333 | Base text | Buttons, headers, CTAs |
| Neutral Gray (Primary Semantic) | #6c6c6c | Link text | Link body, muted text |
| White | #ffffff | Surface | Buttons, backgrounds |
| Leaf Green CTA | #d7eb80 | CTA bg | Primary CTA default background |
| Deep Neutral | #252525 | Borders/text | Button borders/surface contrast |
| Light Neutral Gray | #bebeb9 | Borders | Inputs, dividers |
| Semi-Transparent Neutral | rgba(51, 51, 51, 0.16) → #333333 | Hover overlay | Hover/focus states |
| Mid Neutral Gray | #4c4c4c | Hover states | Various hover/focus fx |
| Mid Neutral RGBA | rgba(76, 76, 76, 1) → #4c4c4c | Hover states | Hover shadow/focus |
| Leaf Green Hover | #bbcf65 | CTA hover | Hover active states |
| Light Border Gray | #deded9 | Dividers | Section dividers |
| Accent Blue | #0193c5 | Focused states | Links, focus outlines |
| Negative Button | #8E0624 | Danger | Delete flows |
| Negative Active | #E71140 | Danger active | Active destructive |
| Negative Hover | #B90A32 | Danger hover | Hover destructive |
| Green Leaf Icon Bottom | #006600 | Icons | Decorative leaf icons |
| Green Leaf Icon Top | #008009 | Icons | Decorative leaf icons |
| Fossil Fuel Icon Top | #8F4759 | Icons | Decorative fossil motifs |
| Fossil Fuel Icon Bottom | #632f3C | Icons | Decorative fossil motifs |
| Background Secondary | #275243 | Surfaces | Brand secondary backgrounds |
| Decorative Border | #deded9 | Dividers | Border lines |
| Text Overline Secondary | #F7BC00 | Text highlight | Overlines, highlight text |
| Featured Hover | #BBCF65 | Buttons | Featured button hover |
| Featured Active | #A1B353 | Buttons | Featured button active |
| Overlay Primary | rgba(76, 76, 76, .5) → #4c4c4c | Overlay | Overlay layer |
| Background Quaternary | #f0f0eb | Page bg | Secondary surfaces |
| Focused | #0094C7 | Focus outline | Input, button focus |
| Tripadvisor Rating | #00aa6c | Ratings | Review star icons |
| Video Background | #000000 | Media bg | Videoplayer bg |
2.3 Color Relationships
They balance earthy greens, warm yellows, and muted grays. Accessibility is mostly good—dark text on light surfaces has > 4.5:1 contrast. However, the lighter greens (#d7eb80, #bbcf65) on white might fail WCAG for small text; they use them for large surface elements or saturated backgrounds, not for text.
Blue (#0193c5) appears only in functional states (link hover/focus) and is left out of decorative contexts—keeping brand greens uncontaminated.
Dark mode? Not implemented here. All values are built for light backgrounds. If adapting to dark, greens and yellows would need to be tweaked for contrast against deep surfaces.
2.4 Usage Guide
Works well:
- Dark neutral (
#333333) text on pale greens or whites. - Leaf greens for background + white text on buttons (featured variant).
- Yellow (
#F7BC00) for small accents, badges—avoid large surfaces.
Avoid:
- Using pale green (
#d7eb80) for text—it washes out quickly. - Mixing decorative fossil colors (
#8F4759,#632f3C) into UI controls—they’re purely iconographic. - Blue focus (
#0094C7) with saturated green backgrounds—clashes.
3. Typography
3.1 Font Families
Primary headline face: Founders Grotesk with fallbacks to Inter, helvetica, arial. Used in large headings—brand-conveying moments.
UI and body: Inter with fallbacks to helvetica, arial.
Google Fonts: none loaded in data; they’re likely self-hosted or local.
No variable fonts, no Adobe subscription fonts detected.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| heading-1 | Founders Grotesk | 54px | 400 | 1.10 |
| heading-1 | Founders Grotesk | 54px | 700 | 1.30 |
| heading-1 | Founders Grotesk | 48px | 700 | 1.10 |
| heading-1 | Founders Grotesk | 36px | 700 | 1.30 |
| heading-1 | Inter | 24px | 700 | 1.40 |
| heading-1 | Founders Grotesk | 24px | 700 | 1.40 |
| heading-1 | Founders Grotesk | 24px | 400 | 1.40 |
| button | Inter | 18px | 400 | 1.15 |
| heading-1 | Inter | 18px | 400 | 1.15 |
| heading-1 | Inter | 18px | 500 | 1.15 |
| link | Inter | 18px | 400 | 1.40 |
| heading-1 | Inter | 16px | 400 | 1.40 |
| heading-1 | Inter | 16px | 700 | 1.50 |
| button | Inter | 16px | 400 | 1.15 |
| heading-1 | Inter | 16px | 400 | 1.15 |
| heading-1 | Inter | 16px | 500 | 1.15 |
| link | Inter | 16px | 400 | 1.40 |
| link | Inter | 16px | 400 | 1.40 |
| heading-1 | Inter | 16px | 700 | 1.15 |
| heading-1 (uppercase) | Inter | 16px | 700 | 1.40 |
| caption | Inter | 14px | 400 | 1.40 |
| link | Inter | 14px | 400 | 1.40 |
| caption | Inter | 14px | 700 | 1.50 |
| caption | Inter (uppercase) | 14px | 700 | 1.40 |
| caption | Inter | 14px | 600 | 1.40 |
| button | Inter | 14px | 400 | 1.40 |
| caption | Inter | 12px | 400 | 1.40 |
| link | Inter | 12px | 400 | 1.40 |
| caption | Inter | 10px | 700 | 1.15 |
3.3 Hierarchy
Founders Grotesk in large sizes sets tone for brand storytelling—used in hero headings. Inter covers everything else to keep UI consistent and practical.
Hierarchy is clear:
- 54px for page hero, 48px/36px for sub-hero headlines.
- 24px for section titles, matched in Founders Grotesk or Inter.
- Buttons vary between 14–18px depending on emphasis.
- Captions drop to 10px for microcopy.
No over-tight letterspacing; widths remain generous for readability.
4. Spacing & Layout
4.1 Spacing Scale
Base scale: 8px grid.
Values extracted:
| px | rem | Count | Notes |
|---|---|---|---|
| 0.59375 | 0.04rem | 4 | Micro-adjustments |
| 1 | 0.06rem | 1 | Borders |
| 2 | 0.13rem | 2 | Icon padding |
| 3.1875 | 0.20rem | 2 | Fine-tuning spacing |
| 4 | 0.25rem | 4 | Tight gaps |
| 8 | 0.50rem | 13 | Small gap unit |
| 12 | 0.75rem | 11 | Inside component spacing |
| 16 | 1.00rem | 26 | Button padding, body margins |
| 19.92 | 1.25rem | 2 | Odd sizing |
| 20 | 1.25rem | 6 | Medium gaps |
| 32 | 2.00rem | 6 | Section gaps |
| 36.18 | 2.26rem | 2 | Specific layouts |
| 40 | 2.50rem | 8 | Large padding |
| 80 | 5.00rem | 8 | Hero sections |
| 100 | 6.25rem | 4 | Huge hero spacing |
4.2 Layout
Breakpoints extracted:
- 399px, 400px, 549px, 550px, 700px, 767px, 768px, 1079px, 1080px, 1280px, 1290px, 1440px, 1920px.
Clearly tuned for very granular responsive tweaks—likely adjusting nav, hero content, and search bar width at common device widths.
5. Visual Elements
Border Radius
Values:
- 0px 0px 10px 10px — listbox
- 0px 9999px 9999px 0px — search input ends
- 4px — common, for links
- 10px — dialog, button, images
- 20px — divs, sections
- 40px — inputs (full round ends)
- 40px 0px 0px 40px — input variant
- 9999px — pill buttons, nav chips
- 50% — images (circle avatars)
Shadows
- rgba(26, 26, 26, 0.18) 0px 1px 2px 0px, rgba(26, 26, 26, 0.06) 0px 0px 8px 0px — default elevation.
- rgba(26, 26, 26, 0.18) 0px 2px 4px 0px, rgba(26, 26, 26, 0.06) 0px 0px 12px 0px — medium elevation.
- rgba(0, 0, 0, 0.2) 0px 11px 33px 0px — heavy, rare.
They keep shadows subtle; base UI feels flat with micro-elevation where needed.
Borders
Common: 1px solid deep neutral (#252525) or white. Also brand greens for CTA outlines.
6. Components
6.1 Buttons
All buttons share pill-shaped border-radius: 9999px. Padding usually 0px 15px.
Neutral outline button:
Default: transparent bg, #333 text, 1px solid #252525 border.
Hover/Active: brand-secondary hover colors (--color-button-background-secondary-hover).
Focus: 2px solid focus blue (#0094C7).
Solid dark button:
Default: #333 bg, white text, 1px solid #333 border.
Same hover/active/focus logic.
Leaf green button:
Default: #d7eb80 bg, #333 text. Border: same green.
Hover: #bbcf65, active: transparent bg, #333 text.
White button:
Default: white bg, #333 text, white border.
Hover: highlight primary.
6.2 Links
Three patterns:
- Black (#333) underline default, underline hover.
- White (#fff) no underline default, underline hover.
- Gray (#6c6c6c) underline default and hover.
6.3 Inputs
Search inputs: clear bg, #333 text, no border by default. Focus: border color var(--color-form-border-primary-active).
6.4 Cards
Not directly in extracted data—cards probably use shadows from layer-1 (var(--color-elevation-layer-1)) and border-radius 10px or 20px.
7. Design Tokens
:root {
/* Colors */
--color-neutral-dark: #333333;
--color-neutral-gray-primary: #6c6c6c;
--color-white: #ffffff;
--color-leaf-green-cta: #d7eb80;
--color-deep-neutral: #252525;
--color-light-neutral-gray: #bebeb9;
--color-leaf-green-hover: #bbcf65;
--color-light-border-gray: #deded9;
--color-accent-blue: #0193c5;
--color-negative: #8E0624;
--color-negative-active: #E71140;
--color-negative-hover: #B90A32;
--color-green-leaf-bottom: #006600;
--color-green-leaf-top: #008009;
--color-fossil-top: #8F4759;
--color-fossil-bottom: #632f3C;
--color-background-secondary: #275243;
--color-text-overline-secondary: #F7BC00;
--color-featured-hover: #BBCF65;
--color-featured-active: #A1B353;
--color-overlay-primary: rgba(76, 76, 76, .5);
--color-background-quaternary: #f0f0eb;
--color-focused: #0094C7;
--color-tripadvisor-rating: #00aa6c;
--color-video-background: #000000;
/* Typography */
--font-founders-grotesk: "Founders Grotesk", Inter, helvetica, arial;
--font-inter: Inter, helvetica, arial;
--font-size-h1-lg: 54px;
--font-size-h1-md: 48px;
--font-size-h1-sm: 36px;
--font-size-body-lg: 24px;
--font-size-body-md: 18px;
--font-size-body-sm: 16px;
--font-size-caption: 14px;
--font-size-small-caption: 12px;
--font-size-micro: 10px;
/* Spacing */
--space-base: 8px;
--space-1: 1px;
--space-2: 2px;
--space-4: 4px;
--space-8: 8px;
--space-12: 12px;
--space-16: 16px;
--space-20: 20px;
--space-32: 32px;
--space-40: 40px;
--space-80: 80px;
--space-100: 100px;
/* Radius */
--radius-sm: 4px;
--radius-md: 10px;
--radius-lg: 20px;
--radius-xl: 40px;
--radius-full: 9999px;
/* Shadows */
--shadow-sm: rgba(26, 26, 26, 0.18) 0px 1px 2px 0px, rgba(26, 26, 26, 0.06) 0px 0px 8px 0px;
--shadow-md: rgba(26, 26, 26, 0.18) 0px 2px 4px 0px, rgba(26, 26, 26, 0.06) 0px 0px 12px 0px;
--shadow-lg: rgba(0, 0, 0, 0.2) 0px 11px 33px 0px;
}8. AI Coding Assistant Prompt
# Ecosia Design System Specification
You are an Ecosia design expert. Build UIs matching their visual language exactly.
## Brand Context
Ecosia is a sustainability-focused search engine with a clean, neutral UI accented by earthy greens and warm yellows. Typography is all sans-serif, pairing a branding-friendly headline face with a utilitarian UI font. Controls are friendly pill shapes, shadows are subtle, and color pops are carefully rationed.
## Color Palette
- Neutral Dark: #333333 — Base text, buttons, headers
- Neutral Gray Primary: #6c6c6c — Muted links, subdued text
- White: #ffffff — Surfaces, button backgrounds
- Leaf Green CTA: #d7eb80 — CTA default background
- Leaf Green Hover: #bbcf65 — CTA hover background
- Deep Neutral: #252525 — Borders, text
- Light Neutral Gray: #bebeb9 — Input borders
- Light Border Gray: #deded9 — Dividers
- Accent Blue: #0193c5 — Hover/focus states
- Focused Blue: #0094C7 — Component focus outlines
- Background Secondary: #275243 — Brand secondary surfaces
- Negative: #8E0624 — Danger states
- Negative Active: #E71140 — Danger active state
- Negative Hover: #B90A32 — Danger hover
- Green Leaf Icon Bottom: #006600 — Decorative icon
- Green Leaf Icon Top: #008009 — Decorative icon
- Fossil Fuel Icon Top: #8F4759 — Decorative icon
- Fossil Fuel Icon Bottom: #632f3C — Decorative icon
- Text Overline Secondary: #F7BC00 — Highlights
- Featured Hover: #BBCF65 — Featured button hover
- Featured Active: #A1B353 — Featured button active
- Overlay Primary: rgba(76, 76, 76, .5) — Overlay layers
- Background Quaternary: #f0f0eb — Secondary page bg
- Tripadvisor Rating: #00aa6c — Ratings
- Video Background: #000000 — Media bg
## Typography
Fonts:
- Headings: "Founders Grotesk", Inter, helvetica, arial
- Body/UI: Inter, helvetica, arial
Sizes/Line Heights:
| Level | Font | Size | Weight | Line Height | Use |
|-------|------|------|--------|-------------|-----|
| H1-lg | Founders Grotesk | 54px | 400 | 1.10 | Hero headline |
| H1-lg-bold | Founders Grotesk | 54px | 700 | 1.30 | Emphatic headline |
| H1-md | Founders Grotesk | 48px | 700 | 1.10 | Section hero |
| H1-sm | Founders Grotesk | 36px | 700 | 1.30 | Subheading |
| Title | Inter | 24px | 700 | 1.40 | Section title |
| Body-lg | Inter | 18px | 400 | 1.15 | Button text/UI |
| Body-md | Inter | 16px | 400 | 1.40 | Paragraph text |
| Caption | Inter | 14px | 400 | 1.40 | Caption text |
| Small-caption | Inter | 12px | 400 | 1.40 | Small caption |
| Micro | Inter | 10px | 700 | 1.15 | Badges |
## Spacing & Grid
Base: 8px
Scale: 1px, 2px, 4px, 8px, 12px, 16px, 20px, 32px, 40px, 80px, 100px
## Border Radius
- sm: 4px — Links
- md: 10px — Dialogs, buttons, images
- lg: 20px — Sections
- xl: 40px — Inputs
- full: 9999px — Pills, chips
- circle: 50% — Avatars
## Shadows & Depth
- shadow-sm: rgba(26, 26, 26, 0.18) 0px 1px 2px 0px, rgba(26, 26, 26, 0.06) 0px 0px 8px 0px
- shadow-md: rgba(26, 26, 26, 0.18) 0px 2px 4px 0px, rgba(26, 26, 26, 0.06) 0px 0px 12px 0px
- shadow-lg: rgba(0, 0, 0, 0.2) 0px 11px 33px 0px
## Component Specifications
### Primary Button (Leaf Green CTA)
Default:
```css
background-color: #d7eb80;
color: #333333;
padding: 0px 15px;
border-radius: 9999px;
border: 1px solid #d7eb80;
font-size: 16px;
font-weight: 400;
```
Hover: `background-color: #bbcf65;`
Active: transparent bg, #333 text
Focus: outline 2px solid #0094C7
### Secondary Button (Neutral Outline)
Default:
```css
background-color: transparent;
color: #333333;
border: 1px solid #252525;
border-radius: 9999px;
padding: 0px 15px;
font-size: 16px;
```
Hover/Active: use `--color-button-background-secondary-hover` etc.
### Input Field (Search)
```css
background-color: transparent;
color: #333333;
border: none;
padding: 0;
border-radius: 0;
```
Focus: `border-color: var(--color-form-border-primary-active); outline: none;`
### Link Styles
- Dark link: #333 underline default/hover
- White link: #fff no underline default, underline hover
- Gray link: #6c6c6c underline default/hover
## Layout & Responsive Rules
Max widths adjust at:
399px, 400px, 549px, 550px, 700px, 767px, 768px, 1079px, 1080px, 1280px, 1290px, 1440px, 1920px
## Interaction Rules
- Transition: 150ms ease for hover/focus/active changes
- Focus indicators: 2px solid #0094C7
- Disabled: opacity 0.5
## DO List
- Use exact hex from palette—no off-brand tweaks
- Keep all spacing in 8px multiples
- Reserve greens for CTAs, icons, highlights
- Use Founders Grotesk only for headings
- Use pill radius for all buttons
## DON'T List
- Don’t use pale green for text
- Don’t mix fossil icon colors into UI controls
- Don’t add drop shadows heavier than shadow-lg
- Don’t override neutral gray text colors
## Code Examples
Primary Button:
```css
.btn-primary {
background-color: #d7eb80;
color: #333333;
padding: 0px 15px;
border-radius: 9999px;
border: 1px solid #d7eb80;
font-size: 16px;
font-weight: 400;
transition: background 150ms ease;
}
.btn-primary:hover { background-color: #bbcf65; }
.btn-primary:focus { outline: 2px solid #0094C7; }
.btn-primary:disabled { opacity: 0.5; }
```
Card:
```css
.card {
background-color: #ffffff;
border-radius: 10px;
padding: 16px;
box-shadow: var(--shadow-sm);
}
```
Input:
```css
.input-search {
background-color: transparent;
color: #333333;
border: none;
padding: 0;
}
.input-search:focus { border-color: var(--color-form-border-primary-active); outline: none; }
```9. Summary
TL;DR — Ecosia’s design system is utilitarian with purpose-driven color pops. Neutral grays lead the UI; greens and yellows are used sparingly for action and highlights. Typography is clean sans-serif, spacing locked to 8px grid, buttons are universally pill-shaped.
Brand Keywords: sustainability-neutral, green-accented, utilitarian-friendly, mission-driven