GNU Brand Design System Deep Dive
1. Brand Overview
GNU isn’t trying to impress you with slick animations or glossy gradients. The vibe is utilitarian, ideological, and unapologetically “web 1.0” in feel — but that’s deliberate. This brand is for people who care about free software ideals, not pixel-perfect dribbble shots. You come here for the philosophy, the licenses, the documentation — and the design follows that ethos: minimal, text-heavy, and function-first.
The GNU site’s design philosophy is about clarity over style. It’s built to be accessible to a wide audience, including those using older browsers or non-standard devices. There’s no reliance on heavy JavaScript UI frameworks, no dynamic parallax gimmicks. The typography choices are mixed — a combination of Noto Sans Display, Times, and bare sans-serif — which is a bit unusual, but it reflects a pragmatic “use what works” mentality. The layout is fixed and narrow compared to modern fluid grids, with clear breakpoints at 430px, 600px, and 750px.
Colors are restrained: mostly grayscale with occasional deep blues and reds for emphasis. Links are colored distinctly and change to a strong deep red (#800300) on hover — a visual cue that’s loud enough to grab attention without breaking the minimalism. Borders are thin (1px) and used generously to separate content, instead of shadows or heavy background contrasts.
The GNU brand is not about seduction — it’s about trust and tradition. The design language says: “We’ve been here for decades. We’re not going anywhere. You can read this on Lynx or Firefox 120, and it will work.”
I actually love that. It’s rare to see a brand stick so hard to its core principle in the visual layer. You’re not getting a marketing-driven UI here — you’re getting a functional, ideological interface, and that consistency is the brand’s strength.
2. Color System
2.1 Primary Colors
GNU’s “primary” in the emotional sense is deep blue (#4040bb) — used for links and some interactive elements. Blue here signals reliability and stability, which makes sense for a project advocating freedom and trust in software. The hover state flips to a deep red (#800300), which is almost aggressive — it says “pay attention” and probably maps to the activist side of the GNU ethos.
There’s no single official “brand” color plastered everywhere like corporate logos. Instead, the palette is functional:
- Neutrals: White (
#ffffff) for backgrounds, multiple grays for text and borders. - Functional Colors: Blue for links, red for emphasis, black for strong text.
- Accent: Orange (
#fd9e38) appears rarely — likely in warnings or callouts.
Compared to a competitor like the Linux Foundation, GNU’s palette is smaller, harsher, and less decorative. No soft tints. Everything is bold, high-contrast.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| White | #ffffff | Background | Page background, text reversal on dark elements |
| Dark Gray | #333333 | Text | Body text, headings |
| Medium Gray | #404040 | Secondary text | Subheadings, muted UI labels |
| Black | #000000 | Text | Strong emphasis in headings |
| Light Gray | #bbbbbb | Borders | Dividers, underline decoration for links |
| Deep Blue | #4040bb | Links | Interactive links, nav items |
| Gray | #999999 | Borders | Secondary dividers |
| Deep Red | #a32d2a | Accent | Callouts, certain headings |
| Navy Purple | #1b0c3d | Accent | Strong headings, nav text |
| Slate Gray | #4b4b4b | Text | Bold link text |
| Orange | #fd9e38 | Accent | Rare emphasis, alerts |
| Bright Blue | #5555bb | Accent | Links, alternate interactive states |
| Hover Red | #800300 | Link hover | All link hover states |
2.3 Color Relationships
High contrast is the norm. White backgrounds with black/dark gray text easily pass WCAG AA and AAA. Blue-on-white for links is also accessible. The hover red (#800300) against white is extremely high contrast — arguably too aggressive for subtle UI, but it fits GNU’s tone.
Dark mode? Not here. The palette is fixed for light backgrounds. Accessibility is strong for vision impairments — large text, clear color separation — but color-blind users might find the red vs. blue link state less distinct.
2.4 Usage Guide
Works well:
- White + dark gray for body copy — clean and readable.
- Deep blue links with hover red — clear state change.
- Borders in light gray — subtle separation without heavy visual clutter.
Avoid:
- Red text on dark backgrounds — poor readability.
- Using orange (
#fd9e38) too much — it will look off-brand. - Mixing multiple link colors in the same component — confuses hierarchy.
3. Typography
3.1 Font Families
GNU uses a mix:
- Noto Sans Display, falling back to Noto Sans, Liberation Sans — for headings and certain links.
- Times — for headings and body in some contexts.
- sans-serif — generic fallback for links and headings.
- Dosis — used in some link contexts.
- monospace — for captions and code.
No Google Fonts loaded — these are system fonts or locally available.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| heading-1 | Noto Sans Display | 32px | 400 | 0.50 |
| heading-1 | Times | 32px | 700 | — |
| link | Noto Sans Display | 25.6px | 700 | 0.94 |
| heading-1 | Times | 22.4px | 700 | — |
| link | sans-serif | 22.4px | 700 | — |
| heading-1 | Times | 21px | 400 | 1.50 |
| link | sans-serif | 19.2px | 700 | 1.40 |
| link | sans-serif | 19px | 400 | 1.26 |
| heading-1 | sans-serif | 19px | 400 | 1.26 |
| link | Noto Sans Display | 19px | 700 | 1.90 |
| heading-1 | Noto Sans Display | 19px | 700 | 1.90 |
| heading-1 | Times | 16px | 400 | 1.50 |
| link | sans-serif | 16px | 400 | 1.50 |
| link | Noto Sans Display | 16px | 400 | 1.00 |
| link | Noto Sans Display | 16px | 700 | 1.10 |
| link | Dosis | 16px | 400 | 2.00 |
| link | Dosis | 16px | 700 | 2.00 |
| link | sans-serif | 16px | 700 | 1.50 |
| heading-1 | Times | 16px | 700 | 1.70 |
| link | sans-serif | 15.84px | 700 | 1.36 |
| heading-1 | Noto Sans Display | 15.04px | 400 | 1.20 |
| link | Noto Sans Display | 15.04px | 700 | 1.90 |
| heading-1 | Noto Sans Display | 15.04px | 700 | 1.90 |
| link | Noto Sans Display | 15.04px | 400 | 1.90 |
| heading-1 | Times | 14.4px | 400 | 1.50 |
| link | sans-serif | 14.4px | 400 | 1.50 |
| heading-1 | sans-serif | 14.4px | 400 | 1.50 |
| link | sans-serif | 14.4px | 700 | 1.50 |
| caption | Times | 14px | 400 | 1.50 |
| link | sans-serif | 14px | 400 | 1.50 |
| caption | monospace | 13px | 700 | 1.38 |
| link | sans-serif | 12.96px | 400 | 1.67 |
| link | Noto Sans Display | 12.8px | 700 | 1.25 |
3.3 Hierarchy
There’s no strict modern modular scale — sizes jump irregularly. Headings range from 32px down to 14px, with multiple weights. It’s more of a legacy typographic structure than a design-system-driven one. Hierarchy is achieved by weight as much as size — bold Times or Noto Sans Display for key sections, lighter weights for body.
Readability is fine because line heights are generous in body sizes (1.5+). The super-tight heading line height (0.50) on large headings is unusual — creates a compact blocky feel.
4. Spacing & Layout
4.1 Spacing Scale
Base scale: 8px grid — confirmed by common values like 8px, 16px, 32px.
| Value (px) | rem | Count | Notes |
|---|---|---|---|
| 1 | 0.06 | 37 | Hairline borders, micro gaps |
| 2 | 0.13 | 2 | Tight spacing |
| 3.2 | 0.20 | 11 | Micro padding |
| 4.48 | 0.28 | 5 | Tight padding |
| 5 | 0.31 | 2 | Rare |
| 6.4 | 0.40 | 8 | Small gaps |
| 8 | 0.50 | 14 | Base grid unit |
| 9.6 | 0.60 | 4 | Slightly more than base |
| 10 | 0.63 | 5 | Small UI element padding |
| 12.8 | 0.80 | 3 | Small component spacing |
| 14.4 | 0.90 | 11 | Text spacing |
| 16 | 1.00 | 57 | Body padding, grid gaps |
| 17.6 | 1.10 | 7 | Slightly larger than base |
| 17.92 | 1.12 | 4 | Rare |
| 19.2 | 1.20 | 4 | Medium component padding |
| 25.6 | 1.60 | 4 | Large UI gaps |
| 28.8 | 1.80 | 4 | Section spacing |
| 32 | 2.00 | 13 | Double grid unit |
| 35.2 | 2.20 | 4 | Rare large spacing |
| 36.8 | 2.30 | 8 | Large gaps |
4.2 Layout
Breakpoints:
- 430px — small mobile
- 600px — mid mobile / small tablet
- 750px — tablet / small desktop
No evidence of large desktop-specific breakpoints — layout stays narrow.
5. Visual Elements
- Border Radius: Few values — 6.016px, 6.4px, 7.68px, 20px. Applied mostly to
<a>elements. No large pill shapes — max is 20px. - Shadows: Rare. Two shadows:
rgb(187, 187, 187) 0px 0px 5px 5pxrgba(153, 153, 153, 0.6) 0px 0px 15.04px 15.04pxUsed for subtle elevation.
- Borders: Heavy use. Mostly
1px solidin grays (#bbbbbb,#999999,#444444). Some colored borders for nav (#a32d2a), links (#5555bb), focus (#008888).
6. Components
6.1 Buttons
No dedicated button styles in data — likely all styled as links. That’s consistent with GNU’s HTML approach.
6.2 Links
Eight variations:
- Default:
#004499with underline in#bbbbbb, weight 400, hover#960400. - White text, no underline, hover deep red.
- Navy purple (
#1b0c3d), bold, hover deep red. - Dark gray (
#333333), no underline, hover deep red. - Slate gray (
#4b4b4b), bold, underline#bbbbbb, hover deep red. - Bright blue (
#5555bb), bold, hover deep red. - Deep blue (
#4040bb), bold, hover deep red. - Deep red (
#a32d2a), bold, hover deep red.
Hover state is always #960400 — consistency nailed.
6.3 Forms
No styled inputs in data — likely unstyled browser defaults.
6.4 Cards
No explicit card component — content separation is via borders.
7. Design Tokens (CSS Custom Properties)
:root {
/* Colors */
--color-white: #ffffff;
--color-dark-gray: #333333;
--color-medium-gray: #404040;
--color-black: #000000;
--color-light-gray: #bbbbbb;
--color-deep-blue: #4040bb;
--color-gray: #999999;
--color-deep-red: #a32d2a;
--color-navy-purple: #1b0c3d;
--color-slate-gray: #4b4b4b;
--color-orange: #fd9e38;
--color-bright-blue: #5555bb;
--color-hover-red: #800300;
/* Typography */
--font-noto-sans-display: "Noto Sans Display", "Noto Sans", "Liberation Sans";
--font-times: "Times";
--font-sans: sans-serif;
--font-dosis: "Dosis", "Noto Sans Display", "Noto Sans", "Liberation Sans";
--font-mono: monospace;
/* Spacing */
--space-1: 1px;
--space-2: 2px;
--space-3-2: 3.2px;
--space-4-48: 4.48px;
--space-5: 5px;
--space-6-4: 6.4px;
--space-8: 8px;
--space-9-6: 9.6px;
--space-10: 10px;
--space-12-8: 12.8px;
--space-14-4: 14.4px;
--space-16: 16px;
--space-17-6: 17.6px;
--space-17-92: 17.92px;
--space-19-2: 19.2px;
--space-25-6: 25.6px;
--space-28-8: 28.8px;
--space-32: 32px;
--space-35-2: 35.2px;
--space-36-8: 36.8px;
/* Border Radius */
--radius-6-016: 6.016px;
--radius-6-4: 6.4px;
--radius-7-68: 7.68px;
--radius-20: 20px;
/* Shadows */
--shadow-light-gray: rgb(187, 187, 187) 0px 0px 5px 5px;
--shadow-medium-gray: rgba(153, 153, 153, 0.6) 0px 0px 15.04px 15.04px;
}8. AI Coding Assistant Prompt
# GNU Design System Specification
You are a GNU design expert. Build UIs matching their visual language exactly.
## Brand Context
GNU values clarity, accessibility, and ideological consistency over modern visual trends. The design is minimal, with strong contrasts, system fonts, and functional color use. No decorative animations or gradients — everything is about readable content and clear interaction cues.
## Color Palette
- White: #ffffff — Page background, text reversal on dark elements
- Dark Gray: #333333 — Body text
- Medium Gray: #404040 — Secondary text
- Black: #000000 — Strong headings
- Light Gray: #bbbbbb — Borders, link underlines
- Deep Blue: #4040bb — Links, interactive elements
- Gray: #999999 — Secondary borders
- Deep Red: #a32d2a — Accent headings
- Navy Purple: #1b0c3d — Strong link text
- Slate Gray: #4b4b4b — Bold link text
- Orange: #fd9e38 — Rare emphasis
- Bright Blue: #5555bb — Alternate links
- Hover Red: #800300 — Link hover state
## Typography
- Noto Sans Display, "Noto Sans", "Liberation Sans" — Headings, links
- Times — Headings, body text
- sans-serif — Generic fallback for links/headings
- Dosis — Certain links
- monospace — Captions/code
| Level | Size | Weight | Line Height | Use For |
|------------|--------|--------|-------------|-------------------|
| H1 | 32px | 400 | 0.50 | Page titles |
| H1 | 32px | 700 | — | Bold page titles |
| Link | 25.6px | 700 | 0.94 | Large nav links |
| ... | ... | ... | ... | ... |
## Spacing & Grid
Base: 8px grid
Scale: 1px, 2px, 3.2px, 4.48px, 5px, 6.4px, 8px, 9.6px, 10px, 12.8px, 14.4px, 16px, 17.6px, 17.92px, 19.2px, 25.6px, 28.8px, 32px, 35.2px, 36.8px
## Border Radius
- 6.016px — Small links
- 6.4px — Small buttons
- 7.68px — Medium links
- 20px — Large rounded elements
## Shadows & Depth
- rgb(187, 187, 187) 0px 0px 5px 5px — subtle elevation
- rgba(153, 153, 153, 0.6) 0px 0px 15.04px 15.04px — larger elevation
## Component Specifications
### Navigation Link
```css
.nav-link {
color: #4040bb;
font-weight: 700;
text-decoration: none;
}
.nav-link:hover {
color: #800300;
}
```
### Underlined Link
```css
.link-underlined {
color: #004499;
text-decoration: underline #bbbbbb;
}
.link-underlined:hover {
color: #800300;
}
```
### Card
```css
.card {
background: #ffffff;
border: 1px solid #bbbbbb;
padding: 16px;
border-radius: 6.4px;
}
```
## Layout & Responsive Rules
- Breakpoints: 430px (mobile), 600px (tablet), 750px (small desktop)
- Page padding: multiples of 8px
- Grid gap: 16px
## Interaction Rules
- Hover state always changes link color to #800300
- No animations or transitions
- Use underline only when specified — most links are no-underline
## DO List
- Use only colors from the palette
- Maintain 8px spacing grid
- Use Noto Sans Display for headings when possible
- Keep hover color consistent (#800300)
- Use thin borders for separation, not shadows
## DON'T List
- Add gradients or decorative shadows
- Mix rounded and square corners inconsistently
- Invent new colors
- Use hover states with different colors than #800300
## Code Examples
### Primary Link
```css
.primary-link {
color: #4040bb;
font-weight: 700;
}
.primary-link:hover {
color: #800300;
}
```
### Card Example
```css
.card {
background: #ffffff;
border: 1px solid #bbbbbb;
border-radius: 6.4px;
padding: 16px;
}
```
### Form Input
```css
.input {
border: 1px solid #bbbbbb;
border-radius: 6.4px;
padding: 8px;
}
.input:focus {
border-color: #008888;
outline: none;
}
```9. Summary
TL;DR — GNU’s design system is minimal, functional, and ideology-driven. Strong contrasts, basic system fonts, and consistent hover states define the interaction. No fluff, no gloss — just content and clarity.
Brand Keywords:
- ideology-first
- utilitarian-minimalist
- high-contrast
- accessibility-driven