Ubuntu Brand Design System Deep Dive
1. Brand Overview
Ubuntu’s design system is exactly what you’d expect from a Linux distribution that’s been around for decades: functional, confident, and opinionated. The visual language is not about being trendy — it’s about clarity, trust, and inclusivity. Canonical, the company behind Ubuntu, has historically framed the OS as “Linux for human beings,” and you can feel that philosophy in the design.
The first thing you notice: it’s not just orange anymore. Historically, Ubuntu’s “Aubergine” and “Ubuntu Orange” dominated. On the current web, the primary semantic color is a rich green (rgb(0, 128, 19) / #008013), signaling action and success. Orange is still around (hover states, link hovers), but it’s an accent, not the hero.
The typography is unapologetically branded — the Ubuntu variable font everywhere. No mixing in system fonts for headings. Even the fallback stack is curated: Ubuntu, -apple-system, Segoe UI, Roboto, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue. This is a Linux-first stack, but it gracefully degrades.
The layout feels engineered rather than “art-directed” — an 8px scale, precise fractional rem values, and breakpoints that match content needs (some oddly precise like 619px and 1035px). This is a system built by people who code and design in the same room.
Component design is sharp-cornered (border-radius: 0px), minimal shadows, and clear focus states. Buttons are binary: green positive or dark neutral, with tight padding (5.25px 18px). Links respect brand color rules but shift to orange on hover. It’s deliberate and predictable.
In short: Ubuntu’s site design system is practical minimalism with a strong identity. It’s not trying to wow you with motion or gradients. It’s trying to tell you: “This is professional, stable, and open.” That’s exactly what Ubuntu’s brand needs.
2. Color System
2.1 Primary Colors
The primary semantic color is rgb(0, 128, 19) (#008013). This is a bold, saturated green — not a soft pastel, not a teal. This works because green is universally tied to “go”, “success”, and positive confirmation. It’s also distinct from the oranges and purples of Ubuntu’s OS branding, which prevents button overload in a UI already carrying brand-colored illustrations.
Compared to competitors:
- Fedora leans blue; Ubuntu’s green stands apart in Linux distro land.
- Debian uses deep red; Ubuntu’s green feels fresher and more action-oriented.
- This is a conscious UX decision: green is friendlier for call-to-action buttons than Ubuntu’s trademark orange, which can be aggressive.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Primary Green | #008013 | Primary / Positive | Primary buttons, positive states |
| Transparent (Secondary) | transparent | Secondary semantic | Used for hover backgrounds, overlays |
| White | #ffffff | Background / Text | Page background, text on dark |
| Soft Blue | #6699cc | Link variant | Article links, secondary CTAs |
| Gray | #808080 | Neutral text | Secondary text, UI chrome |
| Dark Gray | #262626 | Neutral background | Dark buttons, nav bars |
| Black | #000000 | Text / Icon | High-contrast text |
| Gray 1 | #313131 | Hover/focus | Dark hover states |
| Light Blue | #99ccff | Hover highlight | Link hover/focus backgrounds |
| Link Default | #0066cc | Links | Default link color |
| Link Visited | #7d42b8 | Links | Visited link color |
| Accent | #0f95a1 | Accent | Highlights, accent UI |
| Border Positive | #0e8420 | Borders | Positive state borders |
| Border Info | #24598f | Borders | Info state borders |
| Border Caution | #cc7900 | Borders | Caution state borders |
| Button Neg Default | #c7162b | Buttons | Negative/destructive |
| Button Neg Hover | rgb(176,19,38) | Buttons | Negative hover |
| Button Neg Active | rgb(162,17,35) | Buttons | Negative active |
| Focus Blue | #2e96ff | Focus outline | Focus rings |
| Background Neutral | #f2f2f2 | Background | Neutral surfaces |
| Background Positive Default | hsla(129,90%,39%,0.1) | Background | Positive states |
| Background Positive Hover | hsla(129,100%,39%,0.15) | Background | Positive hover |
| Background Positive Active | hsla(129,100%,39%,0.18) | Background | Positive active |
| Background Info Default | hsla(210,100%,39%,0.1) | Background | Info states |
| Background Info Hover | hsla(210,100%,39%,0.15) | Background | Info hover |
| Background Info Active | hsla(210,100%,39%,0.18) | Background | Info active |
| Background Caution Default | hsla(27,100%,39%,0.1) | Background | Caution states |
| Background Caution Hover | hsla(27,100%,39%,0.15) | Background | Caution hover |
| Background Caution Active | hsla(27,100%,39%,0.18) | Background | Caution active |
| Background Negative Default | hsla(354,100%,39%,0.1) | Background | Negative states |
| Background Negative Hover | hsla(354,100%,39%,0.15) | Background | Negative hover |
| Background Negative Active | hsla(354,100%,39%,0.18) | Background | Negative active |
| Background Overlay | rgba(17,17,17,0.85) | Overlay | Modals, overlays |
| Background Inputs | rgb(244.8,244.8,244.8) | Inputs | Input backgrounds |
| Background Hover Neutral | rgb(242.25,242.25,242.25) | Hover | Hover backgrounds |
| Background Active Neutral | rgb(234.6,234.6,234.6) | Active | Active backgrounds |
| Border High Contrast | #707070 | Borders | High-contrast separators |
| Dial Code Color | #999999 | Inputs | Phone dial code text |
| ITI Arrow Color | #555555 | Icons | Dropdown arrows |
2.3 Color Relationships
The palette is functional first. Most colors are semantic — tied to state (positive, info, caution, negative). This means you can build an accessible UI without picking new shades.
Contrast:
- Primary green on white: strong contrast (wcag AA+ easily).
- White text on primary green: passes AAA.
- Orange hover (#e95420) on white: borderline for small text, but works for hover since it’s transient.
- Dark gray (#262626) on white: passes AA.
Dark mode: not explicitly implemented here; the dark colors are used selectively in components, not as a whole theme.
2.4 Usage Guide
Works well:
- White background + primary green buttons = clean, fresh.
- Dark gray buttons with white text = strong secondary action.
- Blue links in body copy = clear affordance.
Avoid:
- Using green for non-action items — it’s reserved for positive/primary.
- Mixing orange and green in the same component — they fight for attention.
- Using light blues (#99ccff) for text — fails contrast.
3. Typography
3.1 Font Families
Primary font: Ubuntu variable
Fallbacks: Ubuntu, -apple-system, Segoe UI, Roboto, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue
No Google Fonts or Adobe Fonts — this is a self-hosted brand font. The variable font allows flexible weights.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| H1 | Ubuntu variable | 45px (2.81rem) | 550 | 1.20 |
| H1 | Ubuntu variable | 45px (2.81rem) | 180 | 1.20 |
| Link | Ubuntu variable | 45px (2.81rem) | 550 | 1.20 |
| Link | Ubuntu variable | 45px (2.81rem) | 180 | 1.20 |
| H1 | Ubuntu variable | 27px (1.69rem) | 275 | 1.33 |
| Link | Ubuntu variable | 27px (1.69rem) | 275 | 1.33 |
| H1 | Ubuntu variable | 23.4px (1.46rem) | 300 | 0.77 |
| Link | Ubuntu variable | 18px (1.13rem) | 400 | 1.69 |
| H1 | Ubuntu variable | 18px (1.13rem) | 400 | 1.50 |
| Button | Ubuntu variable | 18px (1.13rem) | 400 | 1.50 |
| Link | Ubuntu variable | 18px (1.13rem) | 550 | 1.50 |
| H1 | Ubuntu variable | 18px (1.13rem) | 300 | 1.50 |
| H1 | Ubuntu variable | 18px (1.13rem) | 400 | 1.50 |
| H1 | Ubuntu variable | 18px (1.13rem) | 550 | 1.50 |
| Link | Ubuntu variable | 18px (1.13rem) | 300 | 1.50 |
| H1 | Ubuntu variable | 18px (1.13rem) | 550 | 1.50 |
3.3 Hierarchy
This is a compressed hierarchy. The jump from body (18px) to large headings (27px, 45px) is moderate — no massive hero text. This keeps the tone professional. The variable font weights allow subtle hierarchy shifts without changing size. The use of weights like 275, 300, 400, and 550 is deliberate — not the standard 400/700 web safe jump. This feels typographically mature.
4. Spacing & Layout
4.1 Spacing Scale
Base grid: 8px scale — but with fractional values. The system uses precision down to 0.25px in some cases.
| px | rem | Count |
|---|---|---|
| 1.8px | 0.11rem | 9 |
| 2.25px | 0.14rem | 18 |
| 3.375px | 0.21rem | 4 |
| 3.6px | 0.23rem | 10 |
| 4.5px | 0.28rem | 17 |
| 5.25px | 0.33rem | 39 |
| 6.75px | 0.42rem | 155 |
| 8px | 0.50rem | 44 |
| 8.1px | 0.51rem | 11 |
| 9px | 0.56rem | 44 |
| 9.9px | 0.62rem | 29 |
| 10.8px | 0.68rem | 6 |
| 11.25px | 0.70rem | 17 |
| 13.5px | 0.84rem | 58 |
| 17.1px | 1.07rem | 16 |
| 18px | 1.13rem | 102 |
| 18.9px | 1.18rem | 13 |
| 20.25px | 1.27rem | 129 |
| 27px | 1.69rem | 42 |
| 72px | 4.50rem | 20 |
Button padding (5.25px 18px) fits neatly into this scale.
4.2 Layout
Breakpoints are content-driven, not arbitrary:
- Smallest:
320px - Mobile-ish:
460px,500px,600px,619px,620px - Tablet-ish:
874px,875px,876px - Desktop:
975px,1024px,1035px,1036px - Large:
1249px,1250px,1681px,2000px
These are clearly tied to specific components snapping into place.
5. Visual Elements
- Border radius: Zero. Everything has square corners. Buttons, inputs, cards — all sharp. This is a conscious brand statement: Ubuntu is clean and modern without faux softness.
- Shadows: Minimal. The most common is
rgba(255, 255, 255, 0.1) 0px 1px 0px 0px inset— essentially a subtle highlight line. This is a flat design approach, relying on color and borders for separation. - Borders: Used heavily. 1px solid in various semantic colors (
#008013for positive,#24598ffor info,#cc7900for caution). Sometimes very light (rgba(255, 255, 255, 0.1)).
6. Components
6.1 Buttons
Positive Button (p-button--positive):
- Default:
- background:
#008013 - color:
#ffffff - padding:
5.25px 18px - border-radius:
0px - border:
1px solid #008013
- background:
- Hover:
- background:
var(--vf-color-background-hover)(rgb(242.25, 242.25, 242.25)) - color:
#e95420
- background:
- Active:
- background:
var(--vf-color-button-positive-default)(not directly in palette, likely close to default green) - color:
#000 - opacity:
0.6
- background:
- Focus:
- background:
#ffffff - color:
#585858 - box-shadow:
#1199ff 0px 0px 0px 5px - border:
1px solid #0066cc
- background:
Dark Button (p-button is-dark):
- Default:
- background:
#262626 - color:
#ffffff - border:
1px solid #939393
- background:
- Same hover/active/focus as positive button.
6.2 Links
Three variants:
- Blue link:
#0066cc→ hover: underline +#e95420 - White link:
#ffffff→ hover: underline +#e95420 - Soft blue link:
#6699cc→ hover: underline +#e95420
No default underlines — they appear on hover.
6.3 Forms
Data shows no styled inputs extracted — likely browser defaults with border + background from tokens (--vf-color-background-inputs).
6.4 Cards
No explicit card component in data, but shadows suggest flat insets. Likely rely on border-radius: 0 and border: 1px solid for separation.
7. Design Tokens
:root {
/* Colors - semantic */
--vf-color-primary: #008013;
--vf-color-secondary: transparent;
--vf-color-white: #ffffff;
--vf-color-soft-blue: #6699cc;
--vf-color-gray: #808080;
--vf-color-dark-gray: #262626;
--vf-color-black: #000000;
--vf-color-gray-1: #313131;
--vf-color-light-blue: #99ccff;
--vf-color-link-default: #0066cc;
--vf-color-link-visited: #7d42b8;
--vf-color-accent: #0f95a1;
--vf-color-border-positive: #0e8420;
--vf-color-border-info: #24598f;
--vf-color-border-caution: #cc7900;
--vf-color-button-negative-default: #c7162b;
--vf-color-button-negative-hover: rgb(176, 19, 38);
--vf-color-button-negative-active: rgb(162, 17, 35);
--vf-color-focus: #2e96ff;
--vf-color-background-neutral: #f2f2f2;
--vf-color-background-positive-default: hsla(129,90%,39%,0.1);
--vf-color-background-positive-hover: hsla(129,100%,39%,0.15);
--vf-color-background-positive-active: hsla(129,100%,39%,0.18);
--vf-color-background-info-default: hsla(210,100%,39%,0.1);
--vf-color-background-info-hover: hsla(210,100%,39%,0.15);
--vf-color-background-info-active: hsla(210,100%,39%,0.18);
--vf-color-background-caution-default: hsla(27,100%,39%,0.1);
--vf-color-background-caution-hover: hsla(27,100%,39%,0.15);
--vf-color-background-caution-active: hsla(27,100%,39%,0.18);
--vf-color-background-negative-default: hsla(354,100%,39%,0.1);
--vf-color-background-negative-hover: hsla(354,100%,39%,0.15);
--vf-color-background-negative-active: hsla(354,100%,39%,0.18);
--vf-color-background-overlay: rgba(17,17,17,0.85);
--vf-color-background-inputs: rgb(244.8,244.8,244.8);
--vf-color-background-hover: rgb(242.25,242.25,242.25);
--vf-color-background-active: rgb(234.6,234.6,234.6);
--vf-color-border-high-contrast: #707070;
--iti-dialcode-color: #999999;
--iti-arrow-color: #555555;
/* Typography */
--font-family-primary: 'Ubuntu variable', Ubuntu, -apple-system, Segoe UI, Roboto, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue;
/* Spacing scale */
--space-1-8: 1.8px;
--space-2-25: 2.25px;
--space-3-375: 3.375px;
--space-3-6: 3.6px;
--space-4-5: 4.5px;
--space-5-25: 5.25px;
--space-6-75: 6.75px;
--space-8: 8px;
--space-8-1: 8.1px;
--space-9: 9px;
--space-9-9: 9.9px;
--space-10-8: 10.8px;
--space-11-25: 11.25px;
--space-13-5: 13.5px;
--space-17-1: 17.1px;
--space-18: 18px;
--space-18-9: 18.9px;
--space-20-25: 20.25px;
--space-27: 27px;
--space-72: 72px;
/* Border radius */
--radius-none: 0px;
/* Shadows */
--shadow-inset-white-0-1: rgba(255, 255, 255, 0.1) 0px 1px 0px 0px inset;
}8. AI Coding Assistant Prompt
# Ubuntu Design System Specification
You are an Ubuntu design expert. Build UIs matching their visual language exactly.
## Brand Context
Ubuntu’s web design is functional, minimal, and precise. It uses a sharp-cornered, flat aesthetic with a Linux-first typographic identity. Color is semantic and purposeful, with green for positive actions, dark neutrals for secondary, and orange for hover emphasis.
## Color Palette
- Primary Green: #008013 — primary buttons, positive actions
- Transparent: transparent — secondary semantic, hover backgrounds
- White: #ffffff — backgrounds, text on dark
- Soft Blue: #6699cc — article links, secondary CTAs
- Gray: #808080 — secondary text, UI chrome
- Dark Gray: #262626 — dark buttons, nav bars
- Black: #000000 — body text, icons
- Gray-1: #313131 — hover/focus dark states
- Light Blue: #99ccff — hover highlights
- Link Default: #0066cc — default links
- Link Visited: #7d42b8 — visited links
- Accent: #0f95a1 — accent UI highlights
- Border Positive: #0e8420 — positive borders
- Border Info: #24598f — info borders
- Border Caution: #cc7900 — caution borders
- Button Negative Default: #c7162b — destructive actions
- Button Negative Hover: rgb(176,19,38) — destructive hover
- Button Negative Active: rgb(162,17,35) — destructive active
- Focus Blue: #2e96ff — focus outlines
- Background Neutral: #f2f2f2 — neutral surfaces
- Background Positive Default: hsla(129,90%,39%,0.1) — positive backgrounds
- Background Positive Hover: hsla(129,100%,39%,0.15)
- Background Positive Active: hsla(129,100%,39%,0.18)
- Background Info Default: hsla(210,100%,39%,0.1)
- Background Info Hover: hsla(210,100%,39%,0.15)
- Background Info Active: hsla(210,100%,39%,0.18)
- Background Caution Default: hsla(27,100%,39%,0.1)
- Background Caution Hover: hsla(27,100%,39%,0.15)
- Background Caution Active: hsla(27,100%,39%,0.18)
- Background Negative Default: hsla(354,100%,39%,0.1)
- Background Negative Hover: hsla(354,100%,39%,0.15)
- Background Negative Active: hsla(354,100%,39%,0.18)
- Background Overlay: rgba(17,17,17,0.85) — overlays
- Background Inputs: rgb(244.8,244.8,244.8) — input fields
- Background Hover Neutral: rgb(242.25,242.25,242.25)
- Background Active Neutral: rgb(234.6,234.6,234.6)
- Border High Contrast: #707070
- Dial Code Color: #999999 — phone input codes
- ITI Arrow Color: #555555 — dropdown arrows
## Typography
Font family: 'Ubuntu variable', Ubuntu, -apple-system, Segoe UI, Roboto, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue
| Level | Size | Weight | Line Height | Use For |
|-------|------|--------|-------------|---------|
| H1 | 45px | 550 | 1.20 | Page titles |
| H1 Light | 45px | 180 | 1.20 | Hero subtitles |
| H2 | 27px | 275 | 1.33 | Section headings |
| H2 Link | 27px | 275 | 1.33 | Linked headings |
| Body | 18px | 400 | 1.50 | Paragraph text |
| Body Bold | 18px | 550 | 1.50 | Emphasis text |
| Body Light | 18px | 300 | 1.50 | Secondary text |
| Link | 18px | 400 | 1.69 | Inline links |
## Spacing & Grid
Base: 8px scale with fractional tokens: 1.8px, 2.25px, 3.375px, 3.6px, 4.5px, 5.25px, 6.75px, 8px, 8.1px, 9px, 9.9px, 10.8px, 11.25px, 13.5px, 17.1px, 18px, 18.9px, 20.25px, 27px, 72px.
## Border Radius
- none: 0px — all components
## Shadows & Depth
Flat design. Minimal inset highlight: rgba(255,255,255,0.1) 0px 1px 0px 0px inset.
## Component Specifications
### Primary Button
Default:
```css
background: #008013;
color: #ffffff;
padding: 5.25px 18px;
border-radius: 0px;
border: 1px solid #008013;
font-size: 18px;
font-weight: 400;Hover: background: rgb(242.25,242.25,242.25); color: #e95420;
Active: background: var(--vf-color-button-positive-default); color: #000; opacity: 0.6;
Focus: background: #ffffff; color: #585858; box-shadow: #1199ff 0 0 0 5px; border: 1px solid #0066cc;
Secondary (Dark) Button
Default: background: #262626; color: #fff; border: 1px solid #939393; same padding and radius as primary.
Links
Blue (#0066cc), white (#ffffff), or soft blue (#6699cc) default. No underline until hover, then underline 1px + orange (#e95420).
Input Fields
Background: rgb(244.8,244.8,244.8), border: 1px solid #ccc, radius: 0px.
Layout & Responsive Rules
Breakpoints: 320px, 460px, 500px, 600px, 619px, 620px, 874px, 875px, 876px, 975px, 1024px, 1035px, 1036px, 1249px, 1250px, 1681px, 2000px.
Interaction Rules
Transitions: 150ms ease for color changes.
Focus indicators: 5px outline in #1199ff.
DO List
- Use only colors from palette.
- Maintain 8px grid.
- Use Ubuntu variable font for all text.
- Keep border-radius at 0px.
- Use semantic colors for states (positive, info, caution, negative).
DON'T List
- Add drop shadows.
- Round corners.
- Use unapproved colors.
- Add underlines to links by default.
Code Examples
Primary Button:
.btn-primary {
background: #008013;
color: #fff;
padding: 5.25px 18px;
border: 1px solid #008013;
border-radius: 0;
font-size: 18px;
font-weight: 400;
}
.btn-primary:hover {
background: rgb(242.25,242.25,242.25);
color: #e95420;
}Card:
.card {
background: #fff;
border: 1px solid #ccc;
border-radius: 0;
padding: 20.25px;
}Input:
.input {
background: rgb(244.8,244.8,244.8);
border: 1px solid #ccc;
border-radius: 0;
padding: 6.75px;
}
---
## 9. Summary
**TL;DR**: Ubuntu’s web design system is sharp, flat, and functional. Green is the new action color, typography is pure Ubuntu variable, and the 8px grid rules all. Corners are square, shadows are rare, and every color is semantic.
**Brand Keywords**:
- linux-functional
- sharp-cornered
- semantic-color
- typographically-consistent
- flat-minimal