BrandToPrompt

Pages Design System: Minimalist Developer-First UI

Visit Site

Explore Pages' design system - colors, typography, and spacing. Build fast, secure static sites with a minimalist developer-first UI.

6 min read1,168 words

Brand Identity

Color Palette

Primary
Secondary

Typography

Primary Font
-apple-system
Secondary Font
Menlo

Design Style

Style
minimalist and functional with restrained palette and subtle shadows
Visual Density
compact with precise 4px-based spacing scale
Border Style
mixed: 2px buttons, 8.5px cards, 50% pills

Full Analysis

Pages Design System Deep Dive

1. Brand Overview

Pages is part of the Cloudflare ecosystem, aimed at developers who want to deploy fast, secure static sites without fiddling with infrastructure. The vibe is very much “developer-first but design-conscious.” You can tell the target audience is technical—the typography sticks to system fonts, the palette is restrained, and the UI is built with Vuetify components (there’s v- evidence all over). But they’ve avoided the “terminal green on black” stereotype. Instead, it’s a polished, minimal interface with just enough warmth from Cloudflare’s signature orange to feel approachable.

The design philosophy here seems to be: keep it functional, keep it legible, keep it fast. No ornamental gradients, no gratuitous animations. Even the shadows are utilitarian—subtle to the point of disappearing in some contexts. This is a UI that prioritizes clarity over personality, but the personality still leaks through in small ways: the tiger-stripe section backgrounds, the orange focus outlines, the pill-shaped elements.

This is for people who care about deploy times and build pipelines more than fancy buttons, but still appreciate when those buttons don’t look like they were drawn in MS Paint. The system font stack is a tell—by using -apple-system and equivalents, Pages gets OS-level rendering optimizations and a native feel on every platform. It’s the same approach Apple, GitHub, and other developer tools use.

If you’re building in this ecosystem, you’ll want to respect its restrained palette, precise spacing scale, and mostly flat aesthetic. Over-designing here would break trust with the audience. The design system is quiet, but confident.


2. Color System

2.1 Primary Colors

The main brand color here isn’t a saturated orange as in Cloudflare’s marketing—it’s actually white (#ffffff) as the semantic primary. That’s unusual, but it makes sense: Pages is a product interface, not a marketing site. White is the base canvas. The secondary semantic color is an ultra-light orange tint (rgba(248, 173, 76, 0.12)), used for highlights or section backgrounds.

The “real” accent color comes from the palette: #f38020 (rgb(243, 128, 32)), pure Cloudflare orange, used in focus states and hovers. In psychological terms, orange here signals energy and attention, but it’s deployed sparingly so it doesn’t overwhelm the utilitarian feel. Compared to competitors like Netlify (who lean into blues), Cloudflare Pages’ accent color feels warmer and more human.

2.2 Complete Palette

Color NameHexRoleUsage
Secondary Semanticrgba(248, 173, 76, 0.12)Secondary highlightBackground tint for emphasis areas
Primary Semantic#ffffffPrimary canvasPage background
Dark Base#1d1f20Primary text/UIHeader, nav links, logo
White#ffffffCanvas, textButtons, captions
Dark Grey#404242Secondary textCategory headers
Medium Grey#555555Icon/textClose icon, links, host boxes
Light Grey#bdc2c7NeutralBackgrounds, borders
Link Blue (default)#0000eeLink textUnderlined links
Medium Blue#3860beLink hover, privacy linksHover state color
Deep Blue#276d9bSecondary buttonsRefuse-all handler, save preference
Lightest Grey#e7eaedNeutral backgroundPanels, dividers
Mid-light Grey#cfd3d6Neutral backgroundPanels, dividers
Transparent Darkrgba(29, 31, 32, 0.05)Hover/focus overlaySubtle overlays
Cloudflare Orange#f38020AccentFocus rings, hover states
CSS var — orange selection#ef9530Selection colorText selection highlight
CSS var — tiger stripe bgrgb(243,243,244)BackgroundSection striping
CSS var — selection text#fffSelection text colorText selection
CSS var — focus colorrgba(243,128,32,.5)Focus outlineInputs/buttons focus
CSS var — code scrollbarhsla(0,0%,100%,.25)ScrollbarCode blocks
CSS var — deemphasized textrgb(54,57,58)Secondary textMuted text

2.3 Color Relationships

The palette is mostly high-contrast. Dark base #1d1f20 on white easily passes WCAG AAA for body text. Orange #f38020 on white is borderline for small text (contrast ratio ~3:1), so they reserve it for larger UI elements or outlines, not fine text. The blues (#3860be, #276d9b) are safely contrasted against white, but on dark backgrounds they’re less legible—probably why link hover changes to blue only on light backgrounds.

No explicit dark mode here—the palette is skewed for light UI. Transparent overlays (rgba(29, 31, 32, 0.05)) suggest hover states rely on subtle changes rather than high-color shifts.

2.4 Usage Guide

  • Works well: Dark base text (#1d1f20) on white canvas; orange focus rings against light backgrounds; medium blue hover states for links.
  • Avoid: Orange text on white in small sizes—it’s not accessible. Blue link hover on dark backgrounds—it loses contrast.
  • Best combo for CTAs: White text on deep blue #276d9b or orange backgrounds—high contrast, clear affordance.
  • Highlight areas: Use secondary semantic rgba(248, 173, 76, 0.12) for soft emphasis without stealing attention.

3. Typography

3.1 Font Families

Headings, body, links, buttons—all use the same system stack:

-apple-system, system-ui, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue

Code and monospaced elements use:

Menlo, SF Mono, Andale Mono, Roboto Mono, Monaco

No Google Fonts, no Adobe Fonts—pure native rendering. This keeps load times minimal and aligns with developer tools aesthetics.

3.2 Type Scale

ElementFontSizeWeightLine Height
Heading-1System stack63.75px7001.05
Heading-1System stack55.25px7001.00
Heading-1System stack46.75px7001.20
Heading-1System stack34px7001.50
Heading-1System stack27.2px7001.50
Heading-1System stack25.5px4001.50
Heading-1System stack25.5px7001.00
Heading-1System stack24px400
LinkSystem stack22.661px4001.30
Heading-1System stack20.4px7001.50
Heading-1System stack19.125px7001.00
LinkSystem stack17px4001.50
ButtonSystem stack17px4001.30
Heading-1System stack17px9001.30
Heading-1System stack17px5001.50
LinkSystem stack16.15px4001.50
Heading-1System stack16px7001.50
ButtonSystem stack16px400
CodeMenlo stack15.3px4001.50
Heading-1System stack14.45px400
ButtonSystem stack14.4px7001.00
CaptionSystem stack14px7001.50
CaptionSystem stack14px6001.50
CaptionMenlo stack13.6px4001.50
LinkSystem stack13.6px4001.50
ButtonSystem stack13.6px4001.50
CaptionSystem stack13.6px400
CaptionSystem stack13.12px7001.30
ButtonSystem stack13.008px400
LinkSystem stack12.992px4001.50
CaptionSystem stack12.992px4001.50
CaptionSystem stack12.75px5001.50
ButtonSystem stack12px7001.00
LinkSystem stack12px400
CaptionSystem stack11.52px400
CaptionSystem stack11.008px4001.40

3.3 Hierarchy

They use size jumps to signal hierarchy—63.75px down to mid-20s for headings, then into the teens for body and UI text. Weight is a major differentiator: 700 for headings, 400 for body, occasional 900 for emphasis. The consistent font family across contexts keeps it cohesive, but the monospaced Menlo stack for code blocks is a nice break in rhythm.


4. Spacing & Layout

4.1 Spacing Scale

The base scale is 4px—values are mostly multiples or near-multiples of it.

pxremCount
10.06rem5
50.31rem9
6.80.42rem10
8.50.53rem67
9.350.58rem4
100.63rem19
11.050.69rem4
120.75rem16
12.11250.76rem3
12.46350.78rem5
12.750.80rem15
130.81rem20
14.72960.92rem5
150.94rem4
171.06rem15
19.1251.20rem5
342.13rem6
46.752.92rem3
513.19rem14
1026.38rem4

Heavy usage of 8.5px spacing—this is their “magic number” for padding inside components.

4.2 Layout

Breakpoints span from 400px up to 1300px, covering mobile, tablet, and large desktop. They’re not sticking to standard Bootstrap points—there are odd ones like 897px and 961px, probably driven by Vuetify’s grid logic or specific component needs.


5. Visual Elements

Border Radius

They mix small radii (2px for buttons/inputs) with medium (8.5px for cards) and full (50% for avatars/pills). Some huge values like 170px for certain links—probably decorative pills.

Full list includes: 1px, 2px, 2.5px, 2.55px, 3px, 3.4px, 6.375px, 8.49788px, 8.5px, 17px, 20px, 50px, 170px, 50%, 100%.

Shadows

Mostly subtle: rgba(0,0,0,0.07) 0px 0px 0px 1px is common for borders-as-shadows. Orange shadows (rgba(243,128,32,0.5)) appear in focus states. Some multi-layer shadows for cards, but nothing heavy—this isn’t Material Design’s deep elevation.

Borders

Thin 1px solids in various colors (#276d9b, #3860be, greys), used for inputs and buttons. Inset borders for iframes. No thick borders anywhere.


6. Components

6.1 Buttons

No full button dataset in extraction, but borders show 1px solid #276d9b for some secondary actions. Radius often 2px or 8.5px. Focus color is rgba(243,128,32,0.5).

Four link styles:

  1. Dark base (#1d1f20) underlined by default, hover to #3860be no underline.
  2. White (#ffffff) no underline default, hover to #3860be.
  3. Pure blue (#0000ee) underlined default, hover to #3860be no underline.
  4. Brownish (#a24f0b) no underline, hover to #3860be.

Underline removal on hover is consistent—signals “interactive” via color change instead.

6.3 Forms

Text inputs default: white background, black text, no border, 0px radius. Focus: 1px solid black border, black outline, blue background (rgb(30, 174, 219)), white text.

6.4 Cards

From shadows: likely 8.5px radius, subtle border shadow combo. Spacing inside probably 8.5px or 12px.


7. Design Tokens

:root {
  /* Colors */
  --color-secondary-semantic: rgba(248, 173, 76, 0.12);
  --color-primary-semantic: #ffffff;
  --color-dark-base: #1d1f20;
  --color-white: #ffffff;
  --color-dark-grey: #404242;
  --color-medium-grey: #555555;
  --color-light-grey: #bdc2c7;
  --color-link-blue: #0000ee;
  --color-medium-blue: #3860be;
  --color-deep-blue: #276d9b;
  --color-lightest-grey: #e7eaed;
  --color-midlight-grey: #cfd3d6;
  --color-transparent-dark: rgba(29, 31, 32, 0.05);
  --color-orange: #f38020;
  --orange-for-use-as-selection-color: #ef9530;
  --section-tiger-stripe-background-color: rgb(243,243,244);
  --selection-color: #fff;
  --focus-color: rgba(243,128,32,.5);
  --code-block-scrollbar-color: hsla(0,0%,100%,.25);
  --deemphasized-color: rgb(54,57,58);

  /* Typography */
  --font-system: -apple-system, system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue";
  --font-mono: Menlo, "SF Mono", "Andale Mono", "Roboto Mono", Monaco;

  /* Spacing */
  --space-1: 1px;
  --space-5: 5px;
  --space-6_8: 6.8px;
  --space-8_5: 8.5px;
  --space-9_35: 9.35px;
  --space-10: 10px;
  --space-11_05: 11.05px;
  --space-12: 12px;
  --space-12_1125: 12.1125px;
  --space-12_4635: 12.4635px;
  --space-12_75: 12.75px;
  --space-13: 13px;
  --space-14_7296: 14.7296px;
  --space-15: 15px;
  --space-17: 17px;
  --space-19_125: 19.125px;
  --space-34: 34px;
  --space-46_75: 46.75px;
  --space-51: 51px;
  --space-102: 102px;

  /* Border Radius */
  --radius-1: 1px;
  --radius-2: 2px;
  --radius-2_5: 2.5px;
  --radius-2_55: 2.55px;
  --radius-3: 3px;
  --radius-3_4: 3.4px;
  --radius-6_375: 6.375px;
  --radius-8_49788: 8.49788px;
  --radius-8_5: 8.5px;
  --radius-17: 17px;
  --radius-20: 20px;
  --radius-50: 50px;
  --radius-170: 170px;
  --radius-full: 50%;
  --radius-max: 100%;

  /* Shadows */
  --shadow-orange-focus: rgba(243, 128, 32, 0.5) 0px 0px 0px 0px, rgb(243, 128, 32) 0px 0px 0px 0px inset;
  --shadow-subtle-border: rgba(0, 0, 0, 0.07) 0px 0px 0px 1px;
}

8. AI Coding Assistant Prompt

# Pages Design System Specification

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

## Brand Context
Pages is a developer-focused product within Cloudflare. The design is minimal, functional, and OS-native. It uses a restrained palette with Cloudflare orange as an accent, system fonts for speed and familiarity, and precise spacing multiples.

## Color Palette
- Secondary Semantic: rgba(248, 173, 76, 0.12) — Soft background highlight
- Primary Semantic: #ffffff — Page background
- Dark Base: #1d1f20 — Primary text, nav links
- White: #ffffff — Buttons, captions
- Dark Grey: #404242 — Secondary text, category headers
- Medium Grey: #555555 — Icons, secondary UI
- Light Grey: #bdc2c7 — Borders, subtle backgrounds
- Link Blue: #0000ee — Default link text
- Medium Blue: #3860be — Link hover, privacy links
- Deep Blue: #276d9b — Secondary actions
- Lightest Grey: #e7eaed — Panel backgrounds
- Mid-light Grey: #cfd3d6 — Neutral surfaces
- Transparent Dark: rgba(29, 31, 32, 0.05) — Hover overlays
- Cloudflare Orange: #f38020 — Focus, hover accents
- CSS var orange selection: #ef9530 — Text selection highlight
- Tiger stripe bg: rgb(243,243,244) — Section background
- Selection text: #fff — Text selection
- Focus color: rgba(243,128,32,.5) — Focus ring
- Code scrollbar: hsla(0,0%,100%,.25) — Scrollbars in code blocks
- Deemphasized text: rgb(54,57,58) — Muted text

## Typography
Fonts:
- UI: -apple-system, system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue"
- Code: Menlo, "SF Mono", "Andale Mono", "Roboto Mono", Monaco

Sizes:
| Level | Size | Weight | Line Height | Use |
| H1 | 63.75px | 700 | 1.05 | Page titles |
| H1 alt | 55.25px | 700 | 1.00 | Large headings |
| H2 | 46.75px | 700 | 1.20 | Section headings |
| ... include all extracted sizes ... |

## Spacing & Grid
Base: 4px scale.
Values: 1px, 5px, 6.8px, 8.5px, 9.35px, 10px, 11.05px, 12px, 12.1125px, 12.4635px, 12.75px, 13px, 14.7296px, 15px, 17px, 19.125px, 34px, 46.75px, 51px, 102px.
Use 8.5px inside buttons/cards, larger for section gaps.

## Border Radius
- xs: 1px — tags
- sm: 2px — buttons, inputs
- md: 8.5px — cards
- lg: 17px — larger components
- full: 50% — avatars, pills
- special: 170px — decorative pills

## Shadows & Depth
Use subtle border-like shadows (`rgba(0,0,0,0.07) 0px 0px 0px 1px`). Orange focus shadow for active states.

## Component Specifications

### Primary Button
Default:
- Background: Deep Blue #276d9b
- Color: White #ffffff
- Radius: 2px
- Border: 1px solid #276d9b
- Padding: 8.5px horizontal
Focus: Outline 2px solid rgba(243,128,32,.5)
Hover: Background shift to Medium Blue #3860be
Disabled: Opacity 0.5

### Secondary Button
Default:
- Background: transparent
- Color: Deep Blue #276d9b
- Border: 1px solid #276d9b
Hover: Color shift to Medium Blue

### Navigation Links
Default: Color #1d1f20, underline
Hover: Color #3860be, no underline

### Input Fields
Default: Background #ffffff, border none, radius 0
Focus: Border 1px solid #000000, outline 1px solid #000000, background rgb(30, 174, 219), text #ffffff

### Cards
Background: #ffffff
Radius: 8.5px
Shadow: rgba(0,0,0,0.07) 0px 0px 0px 1px
Padding: 12px

## Layout & Responsive Rules
Breakpoints: 400px, 768px, 1024px, 1280px, 1300px plus intermediates.
Max content width: 1300px
Mobile padding: 12px
Desktop padding: 34px

## Interaction Rules
Transitions: 150ms ease for hover/focus
Focus indicators: Orange focus color
No motion-heavy animations

## DO List
- Use only provided palette colors
- Maintain 4px base spacing
- Keep font families consistent
- Use 8.5px padding for buttons/cards
- Apply focus outlines for accessibility

## DON'T List
- Don’t invent new colors
- Don’t mix corner radii
- Don’t use heavy shadows
- Don’t remove hover states

## Code Examples

Primary Button:
```css
.btn-primary {
  background: #276d9b;
  color: #ffffff;
  padding: 8.5px 17px;
  border-radius: 2px;
  border: 1px solid #276d9b;
  font-family: var(--font-system);
  font-size: 17px;
  transition: background 150ms ease;
}
.btn-primary:hover { background: #3860be; }
.btn-primary:focus { outline: 2px solid rgba(243,128,32,.5); }
.btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
```

Card:
```css
.card {
  background: #ffffff;
  border-radius: 8.5px;
  padding: 12px;
  box-shadow: rgba(0,0,0,0.07) 0px 0px 0px 1px;
}
```

Input:
```css
.input {
  background: #ffffff;
  border: none;
  border-radius: 0;
  padding: 1px 2px;
}
.input:focus {
  border: 1px solid #000000;
  outline: 1px solid #000000;
  background: rgb(30, 174, 219);
  color: #ffffff;
}
```

9. Summary

TL;DR — Pages’ design system is minimal, functional, and built for speed. System fonts, restrained palette, precise spacing, subtle shadows. Orange accents are the only loud note, used sparingly for focus.

Brand Keywords:

  • developer-minimalist
  • functional-clean
  • warm-accent
  • OS-native
  • precision-spacing