Opera Brand Design System Deep-Dive
1. Brand Overview
Opera’s design system feels like it’s built for a brand that already knows who it is. This isn’t a browser company trying to look like every other tech player. The tone is unapologetically clean, but they’re not afraid of a punch of color. There’s restraint in the palette—lots of black, white, and deep neutrals—but then they drop this saturated violet-blue (#5021ff) for their primary actions. It’s confident.
Typography is modern without being sterile. They’ve committed to Be Vietnam Pro for basically everything, with a secondary monospace (Space Mono) creeping in for certain uppercase link and heading contexts. This mix gives them a tech-meets-humanist vibe—sans-serif for clarity, monospace for “developer cred.” The weights go heavy (900) for hero headings, which makes the brand voice feel loud and direct.
Layout decisions suggest they care about modularity. The spacing scale isn’t the generic 4px/8px—it’s custom values like 14.0544px and 22.487px. That precision signals a design team that tunes things until they look right, not just until they fit a grid formula.
Border radii are generous. Rounded corners everywhere, with 44.9741px showing up a lot—enough to make cards feel approachable. Buttons range from slightly rounded (22.487px) to extremely pill-shaped (89.9482px). Shadows are minimal and soft—mostly rgba(0,0,0,0.1)—used sparingly for subtle depth.
This system is for a modern, tech-savvy audience who expects clean UI but appreciates small personality injections. Opera’s visual language says: “We’re serious about performance, but we’re not boring.” It’s a design system that could easily extend beyond browsers into any consumer-facing tech product.
2. Color System
2.1 Primary Colors
The primary brand color is #5021ff—a bold, saturated violet-blue. It’s used for primary buttons, hover/focus states, and brand surfaces (--surface-brand). This color pops hard against their mostly monochrome base, which is exactly the point: CTAs stand out instantly.
Psychologically, this hue sits between trust-inducing blue and creative purple. It’s more energetic than the blues used by Chrome (#4285F4) or Firefox (#0055AA). It suggests Opera wants to be seen as both reliable and innovative.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Black | #000000 | Primary text, backgrounds | Headers, body text, UI outlines |
| Dark Gray-Blue | #252836 | Secondary text, buttons | Download button wrapper, secondary links |
| Medium Gray-Blue | #666f88 | Border color | LinkedIn link borders, subtle dividers |
| White | #ffffff | Backgrounds, text on dark | Button text, page background |
| Gray | #808080 | Neutral | Rare, possibly placeholder |
| Light Gray-Blue | #f2f5f8 | Background | Panels, cards |
| Pale Blue-Gray | #d0dbe3 | Divider | Borders in lists, subtle lines |
| Brand Violet-Blue | #5021ff | Primary brand | CTAs, hover/focus, brand surfaces |
| Off-White Blue | #e7edf1 | Hover/focus backgrounds | Light hover states |
2.3 Color Relationships
Contrast is strong between #5021ff and #ffffff—easily WCAG AA for large text. Black text on white backgrounds is classic and fully accessible. The secondary dark gray-blue (#252836) on white is fine for body copy but would need careful sizing for small text.
Dark mode isn’t explicitly defined here, but --bg-bw-100-reversed: #000 and reversed text colors (hsla(0,0%,100%,0.5)) suggest they have a dark theme variant.
2.4 Usage Guide
Works well:
#5021ffbuttons on white backgrounds—maximum pop.#252836secondary links on white—subtle but readable.- White text on
#5021ff—clean, high contrast.
Avoid:
#5021ffon#252836—low contrast, not accessible.#666f88for body text—it’s too faint for primary content.
3. Typography
3.1 Font Families
Primary: Be Vietnam Pro, fallback roboto.
Secondary (monospace contexts): Space Mono, fallback Roboto Mono, Courier New.
No Google/Adobe font imports detected—likely self-hosted.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| H1 large | Be Vietnam Pro | 78.7046px | 900 | 1.00 |
| H1 medium | Be Vietnam Pro | 67.4611px | 900 | — |
| H1 small | Be Vietnam Pro | 44.9741px | 900 | 1.00 |
| Link large | Be Vietnam Pro | 44.9741px | 900 | 1.00 |
| H1 small bold | Be Vietnam Pro | 44.9741px | 700 | 1.00 |
| H1 regular | Be Vietnam Pro | 33.7306px | 400 | 1.00 |
| H1 bold | Be Vietnam Pro | 33.7306px | 700 | 1.00 |
| Link regular | Be Vietnam Pro | 33.7306px | 400 | — |
| Link monospace | Space Mono | 33.7306px | 400 | 1.50 |
| H1 xsmall | Be Vietnam Pro | 28.1088px | 400 | — |
| H1 uppercase bold | Be Vietnam Pro | 28.1088px | 900 | 1.00 |
| Button text | Be Vietnam Pro | 25.2979px | 400 | 1.50 |
| Monospace bold | Space Mono | 25.2979px | 700 | 1.50 |
| Body large | Be Vietnam Pro | 22.487px | 400 | — |
| Body bold | Be Vietnam Pro | 22.487px | 700 | — |
| Button medium | Be Vietnam Pro | 19.6762px | 400 | 1.20 |
| Button medium bold | Be Vietnam Pro | 19.6762px | 700 | 1.20 |
| Link medium | Be Vietnam Pro | 19.6762px | 700 | 1.20 |
| Small bold | Be Vietnam Pro | 16.8653px | 700 | 1.00 |
| Monospace small uppercase | Space Mono | 16.8653px | 700 | 1.50 |
| Small regular | Be Vietnam Pro | 16.8653px | 400 | 1.50 |
| Caption uppercase bold | Be Vietnam Pro | 14.8414px | 700 | 1.50 |
| Caption regular | Be Vietnam Pro | 14.0544px | 400 | 1.50 |
3.3 Hierarchy
Weights go extreme—900 for hero headings, 700 for section headings, 400 for body. The monospace uppercase styles are used sparingly, keeping them special. There’s a tight line height for big headings (1.00) making them compact, while buttons and body text get more breathing room (1.20–1.50).
4. Spacing & Layout
4.1 Spacing Scale
Opera’s spacing tokens:
| px | rem | Count |
|---|---|---|
| 1 | 0.06rem | 18 |
| 2.81088 | 0.18rem | 4 |
| 5.62176 | 0.35rem | 3 |
| 7.0272 | 0.44rem | 4 |
| 8.43264 | 0.53rem | 4 |
| 11.2435 | 0.70rem | 20 |
| 14.0544 | 0.88rem | 60 |
| 16.8653 | 1.05rem | 4 |
| 19.6762 | 1.23rem | 8 |
| 22.487 | 1.41rem | 30 |
| 28.1088 | 1.76rem | 10 |
| 33.7306 | 2.11rem | 31 |
| 44.9741 | 2.81rem | 31 |
| 56.2176 | 3.51rem | 7 |
| 67.4611 | 4.22rem | 13 |
| 106.813 | 6.68rem | 2 |
| 134.922 | 8.43rem | 18 |
| 238.925 | 14.93rem | 2 |
4.2 Layout
Breakpoints cover a full range: 320px up to 1924px, with multiple mid-range points (640px, 1024px, 1366px). This suggests tailored layouts for small phones, tablets, laptops, and large desktops.
5. Visual Elements
Border Radius System
| Value | Count | Elements |
|---|---|---|
| 0px 0px 22.487px 22.487px | 2 | Links, blog thumbnails |
| 0px 0px 44.9741px 44.9741px | 4 | Images |
| 0px 44.9741px 44.9741px 0px | 2 | Images |
| 5.62176px | 3 | Badges |
| 14.0544px | 1 | Span |
| 16.8653px | 8 | Links, badges, language selector, buttons |
| 22.487px | 5 | Buttons, divs |
| 22.487px 22.487px 0px 0px | 2 | Links |
| 44.9741px | 24 | Images, divs |
| 44.9741px 44.9741px 0px 0px | 4 | Images |
| 89.9482px | 1 | Button |
Shadows
Minimal, soft:
rgba(0, 0, 0, 0.1) 0px 4px 4pxrgba(0, 0, 0, 0.1) 0px 14.0544px 42.1632pxrgba(0, 0, 0, 0.15) 0px 21.0816px 70.272px
Borders
Mostly 1px solid #666f88 for links, 1px solid #d0dbe3 for dividers. Rarely 2px solid #5021ff for focus or active elements.
6. Components
6.1 Buttons
Primary Button (button os-mac):
- Default: bg
#5021ff, text#ffffff, padding16.8653px 33.7306px, radius22.487px, no border, font-weight 700, size19.6762px. - Hover: box-shadow
rgba(214, 214, 214, 0.8) 0px 0.8rem 8rem -1.2rem, bgrgba(255, 255, 255, 0.5), textvar(--text-brand). - Active: text
var(--text-brand). - Focus: text
var(--text-brand), bgvar(--surface-primary).
Secondary Button (button-component small button-component__v-basic-a):
- Default: bg
#2c5e4e, text#ffffff, padding0px, radius89.9482px, font-weight 400, size25.2979px. - Hover: bg
rgba(255, 255, 255, 0.5), text#ffffff.
6.2 Links
Three styles:
#252836with underline; hover →var(--text-brand).#000000bold, underline; hover →var(--text-brand).#ffffffbold, no underline; hover →var(--text-brand).
6.3 Forms
Select: bg transparent, text black, border 1px solid #000000, radius 16.8653px, padding 14.0544px 56.2176px 14.0544px 28.1088px.
Checkboxes are bare—transparent bg, no border.
6.4 Cards
No explicit card component extracted, but large radii (44.9741px) and soft shadows imply rounded, approachable surfaces.
7. Design Tokens
:root {
/* Colors */
--color-black: #000000;
--color-dark-gray-blue: #252836;
--color-medium-gray-blue: #666f88;
--color-white: #ffffff;
--color-gray: #808080;
--color-light-gray-blue: #f2f5f8;
--color-pale-blue-gray: #d0dbe3;
--color-brand-violet-blue: #5021ff;
--color-off-white-blue: #e7edf1;
/* Typography */
--font-primary: "Be Vietnam Pro", roboto;
--font-secondary-mono: "Space Mono", "Roboto Mono", "Courier New";
--font-size-h1-lg: 78.7046px;
--font-size-h1-md: 67.4611px;
--font-size-h1-sm: 44.9741px;
--font-size-body-lg: 22.487px;
--font-size-body-md: 19.6762px;
--font-size-body-sm: 16.8653px;
--font-size-caption: 14.0544px;
--font-weight-bold: 700;
--font-weight-black: 900;
--line-height-tight: 1.00;
--line-height-normal: 1.20;
--line-height-loose: 1.50;
/* Spacing */
--space-1: 1px;
--space-2.81: 2.81088px;
--space-5.62: 5.62176px;
--space-7.02: 7.0272px;
--space-8.43: 8.43264px;
--space-11.24: 11.2435px;
--space-14.05: 14.0544px;
--space-16.86: 16.8653px;
--space-19.67: 19.6762px;
--space-22.48: 22.487px;
--space-28.10: 28.1088px;
--space-33.73: 33.7306px;
--space-44.97: 44.9741px;
--space-56.21: 56.2176px;
--space-67.46: 67.4611px;
--space-106.81: 106.813px;
--space-134.92: 134.922px;
--space-238.92: 238.925px;
/* Border Radius */
--radius-sm: 5.62176px;
--radius-md: 16.8653px;
--radius-lg: 22.487px;
--radius-xl: 44.9741px;
--radius-full: 89.9482px;
/* Shadows */
--shadow-sm: rgba(0,0,0,0.1) 0px 4px 4px;
--shadow-md: rgba(0,0,0,0.1) 0px 14.0544px 42.1632px;
--shadow-lg: rgba(0,0,0,0.15) 0px 21.0816px 70.272px;
}8. AI Coding Assistant Prompt
# Opera Design System Specification
You are an Opera design expert. Build UIs matching their visual language exactly.
## Brand Context
Opera’s design philosophy blends clean, high-contrast layouts with bold color accents. It balances tech precision with approachable shapes. Heavy typography and generous radii make interfaces feel confident and user-friendly.
## Color Palette
- Black: #000000 — Primary text, dark backgrounds
- Dark Gray-Blue: #252836 — Secondary text, buttons
- Medium Gray-Blue: #666f88 — Borders, subtle dividers
- White: #ffffff — Backgrounds, text on dark
- Gray: #808080 — Neutral placeholder
- Light Gray-Blue: #f2f5f8 — Card and panel backgrounds
- Pale Blue-Gray: #d0dbe3 — Divider lines
- Brand Violet-Blue: #5021ff — CTAs, primary buttons, brand surfaces
- Off-White Blue: #e7edf1 — Hover/focus backgrounds
## Typography
- Primary: "Be Vietnam Pro", roboto
- Secondary monospace: "Space Mono", "Roboto Mono", "Courier New"
| Level | Size | Weight | Line Height | Use |
|-------|------|--------|-------------|-----|
| H1 large | 78.7046px | 900 | 1.00 | Hero titles |
| H1 medium | 67.4611px | 900 | — | Large section titles |
| H1 small | 44.9741px | 900 | 1.00 | Headings |
| Body large | 22.487px | 400 | — | Paragraphs |
| Body medium | 19.6762px | 400 | 1.20 | UI text |
| Small | 16.8653px | 400 | 1.50 | Captions |
| Caption | 14.0544px | 400 | 1.50 | Labels |
## Spacing & Grid
Base: custom scale. Use multiples of: 1px, 2.81px, 5.62px, 7.02px, 8.43px, 11.24px, 14.05px, 16.86px, 19.67px, 22.48px, 28.10px, 33.73px, 44.97px, 56.21px, 67.46px, 106.81px, 134.92px, 238.92px.
## Border Radius
- sm: 5.62176px — badges
- md: 16.8653px — inputs, small buttons
- lg: 22.487px — buttons, medium cards
- xl: 44.9741px — large cards, images
- full: 89.9482px — pill buttons
## Shadows & Depth
- sm: rgba(0,0,0,0.1) 0px 4px 4px
- md: rgba(0,0,0,0.1) 0px 14.0544px 42.1632px
- lg: rgba(0,0,0,0.15) 0px 21.0816px 70.272px
## Component Specifications
### Primary Button
Default:
- background: #5021ff
- color: #ffffff
- padding: 16.8653px 33.7306px
- border-radius: 22.487px
- font-size: 19.6762px
- font-weight: 700
Hover:
- box-shadow: rgba(214,214,214,0.8) 0px 0.8rem 8rem -1.2rem
- background: rgba(255,255,255,0.5)
- color: var(--text-brand)
Active:
- color: var(--text-brand)
Focus:
- background: var(--surface-primary)
- color: var(--text-brand)
### Secondary Button
Default:
- background: #2c5e4e
- color: #ffffff
- padding: 0px
- border-radius: 89.9482px
- font-size: 25.2979px
Hover:
- background: rgba(255,255,255,0.5)
### Navigation Links
Style 1:
- color: #252836
- underline
Hover:
- color: var(--text-brand)
### Input Fields
Select:
- border: 1px solid #000000
- border-radius: 16.8653px
- padding: 14.0544px 56.2176px 14.0544px 28.1088px
- background: transparent
- color: #000000
## Layout & Responsive Rules
Breakpoints:
- 320px
- 640px
- 1024px
- 1366px
- 1924px
## Interaction Rules
- Transitions: 150ms ease for hover/focus states
- Focus indicators: border-color change or background shift
- No harsh shadows; keep depth subtle
## DO List
- Use only palette colors
- Keep border radii consistent per component type
- Respect custom spacing values
- Heavy headings for emphasis
- Use monospace only for designated contexts
## DON'T List
- Don't invent new colors
- Don't mix sharp and rounded corners
- Don't apply heavy shadows
- Don't shrink font sizes below defined scale
## Code Examples
Primary Button:
```css
.btn-primary {
background: #5021ff;
color: #ffffff;
padding: 16.8653px 33.7306px;
border-radius: 22.487px;
font-weight: 700;
font-size: 19.6762px;
border: none;
transition: all 150ms ease;
}
.btn-primary:hover {
box-shadow: rgba(214,214,214,0.8) 0px 0.8rem 8rem -1.2rem;
background: rgba(255,255,255,0.5);
color: var(--text-brand);
}
```
Card:
```css
.card {
background: #ffffff;
border-radius: 44.9741px;
padding: 22.487px;
box-shadow: rgba(0,0,0,0.1) 0px 4px 4px;
}
```
Input:
```css
.select {
border: 1px solid #000000;
border-radius: 16.8653px;
padding: 14.0544px 56.2176px 14.0544px 28.1088px;
background: transparent;
font-size: 16.8653px;
}
```9. Summary
TL;DR — Opera’s design system is crisp, confident, and tuned for visibility. Heavy typography, bold violet-blue CTAs, and generous rounded corners make it approachable without losing its tech edge.
Brand Keywords:
- bold-minimalist
- tech-humanist
- high-contrast
- precision-rounded