BrandToPrompt

PBS Design System: Civic Clarity & Accessible UI Patterns

Visit Site

Explore PBS's design system - colors, typography, and layout built for trust and accessibility. Learn how PBS crafts civic-friendly digital experiences.

7 min read1,242 words

Brand Identity

Color Palette

Primary
Secondary

Typography

Primary Font
PBS Sans
Secondary Font
Helvetica Neue

Design Style

Style
flat, accessible, civic-focused with friendly touches
Visual Density
compact grid-based with disciplined 8px spacing and large section gaps
Border Style
mixed: sharp edges on inputs, pill buttons, varied radii 2px-9999px

Full Analysis

PBS Brand Design System Deep Dive


1. Brand Overview

PBS (Public Broadcasting Service) isn't chasing the latest startup aesthetic. This is a brand with decades of cultural weight. Its website has one job: deliver accessible, trustworthy, educational content to a mass audience. The design language leans toward clarity and trustworthy neutrality, with small injections of vibrant energy for calls-to-action.

The vibe? Measured, civic, slightly academic, but not stiff. You can see it in the typography—it’s custom “PBS Sans” everywhere, humanist shapes and clean fallbacks (Helvetica Neue, Helvetica, Arial) to ensure consistent rendering. This betrays the broadcast heritage—clarity over flourish.

They’ve avoided heavy gradients and kept shadows out entirely; it’s flat design plus subtle layering through borders and background colors. Accessibility seems top of mind: colors are chosen for high contrast, font sizes trend larger than typical news sites, and buttons have thick outlines on focus states.

PBS clearly thinks about multi-device use. The site’s spacing scale is cleanly built around an 8px grid (with a few 4px and 1px units sneaking in). Breakpoints range from very narrow mobile (379px) to giant desktop (1920px), which tells you they care about the full spectrum—from library public terminals to home theater screens.

This is for an audience that spans generations. The design system keeps complexity low for developers, high clarity for viewers. I’d call the philosophy: "Serious content delivery, softened with friendly design cues."


2. Color System

PBS’s color use is functional but with deliberate personality. One strong blue defines primary actions, neutrals for text and surfaces, a warm orange accent, and a couple of highlight colors tucked into CSS variables.

2.1 Primary Colors

The hero here is #2638c4—a deep, confident blue. It’s used for main interactive elements (newsletter submit, arrow buttons). Psychologically, it's authoritative, reliable, and distinctly PBS vs NPR’s warm neutrals or BBC’s red. It works because it contrasts perfectly on light and dark backgrounds without feeling aggressive.

2.2 Complete Palette

Color Name/SourceHexRoleUsage
Light Gray#eef0f5Neutral backgroundNavigation buttons, footer links
White#ffffffText / backgroundButtons, inputs, page backgrounds
Black#000000Text / iconsSearch submit, hamburger lines
Soft Black (30% opacity)#101010OverlayTransparent UI layers
Deep Navy#000525Accent backgroundSections, dark areas
Primary Blue#2638c4Primary CTAButtons, nav highlight
Mid Gray#94a1b2Secondary textHover states for links
Accent Orange#fe704eHighlight accentAlerts, emphasis
Slight Gray#eef0f3Hover bgHover/focus background color
Bright Blue (hover)#486cd8Hover outlineFocus outlines
Cool Gray#c0c8d2Hover/focusStates, surface emphasis
Pale Gray#c8cfd8Hover/focusInput backgrounds
Soft Cool Gray#c5ccd5Hover/focusBorder colors
True Blue#005fccFocus stateInputs and button focus borders
Focus Teal (var)#46d4cdFocus state specialInputs focus outlines
Icon Active Yellow (var)#ffcf00Icon active indicatorInteractive icons
Dark Light Background (var)#1e2030BackgroundDark mode or dark surfaces

2.3 Color Relationships

Contrast: Blue (#2638c4) on white (18+ contrast ratio, AAA). White text on blue also passes AAA. Grays are tuned to ensure mid-gray hover states still contrast against dark backgrounds.

Dark mode potential: --dark-light-background-color (#1e2030) suggests some components have alternate background logic. This is a deep charcoal that works with all neutrals and the primary blue.

Accessibility: Near-universal compliance with WCAG AA in interactive cases. The only caution is #94a1b2 on light gray backgrounds—it’s comfortable but sits near the 4.5:1 threshold.

2.4 Usage Guide

Do:

  • Use #2638c4 for primary CTAs with white text.
  • Pair #fe704e accents with neutrals to draw quick attention.
  • On dark backgrounds, use #ffffff or #eef0f5 for text.
  • #46d4cd for focus outlines—clear visual indicator.

Avoid:

  • Combining #94a1b2 with #eef0f5 for core text—it’s fine for hover icons, not for body copy.
  • Overusing #fe704e—it’s an accent, and too much feels alarmist.
  • Mixing opaque and semi-transparent blacks in overlays—they have specific contexts.

3. Typography

3.1 Font Families

Single family: PBS Sans (custom), fallbacks Helvetica Neue, Helvetica, Arial. No Google or Adobe references—this is self-hosted. Variable fonts not detected.

PBS Sans's geometry is clean and approachable, mimicking broadcast titling clarity without losing friendliness.

3.2 Type Scale

Here’s the full extracted usage:

ContextFontSizeWeightLine HeightTransform
heading-1PBS Sans22px7001.25
heading-1PBS Sans20px7001.25
linkPBS Sans18px4001.33
buttonPBS Sans18px4001.15
linkPBS Sans16px7001.33
linkPBS Sans16px4001.33
heading-1PBS Sans16px4001.50
buttonPBS Sans16px7001.00
buttonPBS Sans16px4001.15
heading-1PBS Sans16px7001.50
heading-1PBS Sans16px7001.33uppercase
buttonPBS Sans14px4001.15
linkPBS Sans14px4001.33
captionPBS Sans14px4001.50
buttonPBS Sans14px7001.00
buttonPBS Sans12px7001.00
buttonPBS Sans12px4001.33
captionPBS Sans12px4001.50
linkPBS Sans12px7001.50
captionPBS Sans12px7001.00uppercase
linkPBS Sans12px4001.50
captionPBS Sans12px7001.50
captionPBS Sans11px7001.50uppercase
captionPBS Sans10px4001.33
buttonPBS Sans10px4001.15
linkPBS Sans10px4001.33
captionPBS Sans10px7001.50uppercase

3.3 Hierarchy

Headings are surprisingly small compared to body/link sizes—max at 22px. This is content density-driven: let the media content dominate visual hierarchy. Buttons range 10–18px, always bold for primaries, lighter weight for secondary/ghost styles.

Uppercase is used sparingly—only in heading-1 in one instance, and captions at small sizes to create section labels or meta info.


4. Spacing & Layout

4.1 Spacing Scale

PBS runs on an 8px base grid but keeps 4px and 1px for micro gaps.

Common values:

  • 1px: hairline borders, micro offsets
  • 4px: tight spacing
  • 8px: dominant unit (87 uses)
  • 10px, 12px, 16px, 20px for varied component padding
  • 28px, 32px, 36px, 40px, 44px for sectional spacing
  • Large: 60px, 64px, 72px, 80px for hero content
  • 200px (!) — appears in large layout offsets

4.2 Layout

Breakpoints tell the story: multiple inflection points from 379px (tiny mobile) up to 1920px (large desktop). This is not a simplistic mobile/tablet/desktop split—it’s fine-tuned for in-between states (718px, 875px, 1100px).


5. Visual Elements

Border Radius

Variety here is huge:

  • None: 0px in some combo edges
  • Tiny: 2px, 3px
  • Small: 4px, 5px, 6px, 7.2px, 8px
  • Pills: 9999px (11 uses — pill buttons)
  • Clamp: clamp(4px, 4%, 9px) on links — responsive rounding
  • Full circles: 50% for icons, arrows

Corners are used intentionally—rounded buttons for friendliness, sharper for input-edge combos.

Shadows

None. They’ve gone full flat. Depth is via borders and color blocking.

Borders

Combination examples:

  • 7px left solid #eef0f5 — navigation active state
  • 2px solid white — ghost buttons
  • 1px solid white — inputs
  • 1px left solid #eef0f5 — divider links
  • 8px top solid #2638c4 — nav bars

6. Components

6.1 Buttons

White Ghost Button:

  • Default: Transparent bg, white text, 8px 24px padding, 9999px radius, 2px solid white.
  • Hover: Color change to var(--hover-color), rgba(15, 30, 140, 0.7) bg.
  • Active: Color var(--link-active-color), no shadow.
  • Focus: Outline rgb(72, 108, 216) 3px solid, bg var(--selected-channel-button-background-color).

Arrow Nav Button:

  • Default: rgba(38, 56, 196, 0.7) bg, color rgba(16, 16, 16, 0.3), no padding, 50% radius.
  • Hover: Same hover as ghost, plus opacity 0.9.
  • Motion: transform: matrix(1,0,0,1,0,-17) — offset for arrow pointing.

Newsletter Submit Button:

  • Default: Solid #2638c4, white text, 10px 24px padding, radius 0px 5px 5px 0px.
  • States match ghost button hover/focus rules.

6.2 Links

Two patterns:

  • Light gray (#eef0f5) — hover to mid-gray (#94a1b2)
  • White — hover to mid-gray (#94a1b2) No underlines, inline color shifts only.

6.3 Forms

Search input:

  • Transparent bg, rgb(238, 240, 245) text, 1px solid white border, radius 7.2px, thick padding: 16px 60px 16px 16px.
  • Focus: 1px solid --focus-color (#46d4cd).

Email input:

  • Semi-transparent white bg (rgba(255, 255, 255, 0.2)), text #eef0f5.
  • Radius 5px 0 0 5px, padding 8px.
  • Focus: same teal outline.

7. Design Tokens

:root {
  /* Colors */
  --color-light-gray: #eef0f5;
  --color-white: #ffffff;
  --color-black: #000000;
  --color-soft-black: #101010;
  --color-deep-navy: #000525;
  --color-primary-blue: #2638c4;
  --color-mid-gray: #94a1b2;
  --color-accent-orange: #fe704e;
  --color-slight-gray: #eef0f3;
  --color-hover-blue: #486cd8;
  --color-cool-gray: #c0c8d2;
  --color-pale-gray: #c8cfd8;
  --color-soft-cool-gray: #c5ccd5;
  --color-true-blue: #005fcc;
  --focus-color: #46d4cd;
  --icon-active-color: #ffcf00;
  --dark-light-background-color: #1e2030;

  /* Typography */
  --font-family-pbs: "PBS Sans", "Helvetica Neue", Helvetica, Arial;

  /* Spacing */
  --space-1: 1px;
  --space-4: 4px;
  --space-8: 8px;
  --space-10: 10px;
  --space-12: 12px;
  --space-16: 16px;
  --space-20: 20px;
  --space-28: 28px;
  --space-32: 32px;
  --space-36: 36px;
  --space-40: 40px;
  --space-44: 44px;
  --space-60: 60px;
  --space-64: 64px;
  --space-72: 72px;
  --space-80: 80px;
  --space-200: 200px;

  /* Border Radius */
  --radius-none: 0;
  --radius-2: 2px;
  --radius-3: 3px;
  --radius-4: 4px;
  --radius-5: 5px;
  --radius-6: 6px;
  --radius-7-2: 7.2px;
  --radius-8: 8px;
  --radius-pill: 9999px;
  --radius-clamp: clamp(4px, 4%, 9px);
  --radius-circle: 50%;

  /* Borders */
  --border-1-white: 1px solid #ffffff;
  --border-2-white: 2px solid #ffffff;
  --border-7-left-gray: 7px solid #eef0f5;
  --border-1-left-gray: 1px solid #eef0f5;
  --border-8-top-blue: 8px solid #2638c4;
}

8. AI Coding Assistant Prompt

# PBS Design System Specification

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

## Brand Context
PBS values trust, clarity, and accessibility. The design is straightforward, flat, and broadcast-appropriate, with controlled splashes of color for interactive moments. Every choice supports readability and cross-generational usability.

## Color Palette
- Light Gray: #eef0f5 — Backgrounds for navigation buttons, footer links.
- White: #ffffff — Text, backgrounds, ghost button borders.
- Black: #000000 — Primary text and icon lines.
- Soft Black: #101010 — Transparent overlays.
- Deep Navy: #000525 — Section backgrounds.
- Primary Blue: #2638c4 — CTAs, main buttons, nav highlights.
- Mid Gray: #94a1b2 — Hover states for links/icons, secondary text.
- Accent Orange: #fe704e — Alerts, emphasis highlights.
- Slight Gray: #eef0f3 — Hover/focus backgrounds.
- Hover Blue: #486cd8 — Focus outlines, hover states.
- Cool Gray: #c0c8d2 — Hover/focus.
- Pale Gray: #c8cfd8 — Input backgrounds.
- Soft Cool Gray: #c5ccd5 — Borders.
- True Blue: #005fcc — Focus border color.
- Focus Teal: #46d4cd — Input focus outlines.
- Icon Active Yellow: #ffcf00 — Active icon indicators.
- Dark Light Background: #1e2030 — Dark backgrounds.

## Typography
Font family: "PBS Sans", "Helvetica Neue", Helvetica, Arial (self-hosted).

| Level | Size | Weight | Line Height | Use For |
|-------|------|--------|-------------|---------|
| H1 | 22px | 700 | 1.25 | Page titles |
| H1-alt | 20px | 700 | 1.25 | Section titles |
| Link-lg | 18px | 400 | 1.33 | Navigation links |
| Button-lg | 18px | 400 | 1.15 | Ghost/secondary buttons |
| Link-md-bold | 16px | 700 | 1.33 | Main links |
| Link-md | 16px | 400 | 1.33 | Secondary links |
| Button-md-bold | 16px | 700 | 1.00 | Primary buttons |
| Button-md | 16px | 400 | 1.15 | Secondary actions |
| Caption-sm | 14px | 400 | 1.50 | Supporting text |
| Button-sm-bold | 14px | 700 | 1.00 | Small buttons |
| Misc-xs-bold | 12px | 700 | 1.00–1.50 | Meta labels |
| Misc-xs | 12px | 400 | 1.50 | Small body text |
| Caption-xs-upper | 11px | 700 | 1.50 | Uppercase captions |
| Micro | 10px | 400 | 1.33 | UI crumbs |
| Micro-bold-upper | 10px | 700 | 1.50 | Tiny labels |

## Spacing & Grid
Base: 8px grid. Values: 1px, 4px, 8px, 10px, 12px, 16px, 20px, 28px, 32px, 36px, 40px, 44px, 60px, 64px, 72px, 80px, 200px.

Map:
- Small gaps/icons: 4px–8px
- Button padding: 8px–24px
- Card padding: 32px
- Section gaps: 40+ px
- Hero banners: 72–80px

## Border Radius
- none: 0 — hard edges
- xs: 2–3px — tiny elements
- sm: 4–6px — inputs, cards
- special: 7.2px — search input
- md: 8px — images
- pill: 9999px — ghost buttons
- clamp: clamp(4px,4%,9px) — responsive links
- circle: 50% — avatars, arrows

## Shadows & Depth
Flat design. Zero shadows. Use borders and color contrasts.

## Components

### Primary Button (.btn-primary)
Default:
```css
background: #2638c4;
color: #ffffff;
padding: 10px 24px;
border-radius: 0px 5px 5px 0px;
border: none;
font-weight: 700;
font-size: 16px;
```
Hover: `background: rgba(15,30,140,0.7); color: var(--hover-color);`
Focus: `outline: 3px solid #486cd8; color: var(--link-active-color);`
Active: `color: var(--link-active-color);`
Disabled: `opacity: 0.5; cursor: not-allowed;`

### Ghost Button (.btn-ghost)
Default: transparent bg, white text, pill radius (9999px), `8px 24px` padding, white border 2px.

### Input Field (.input)
Search:
```css
background: transparent;
color: #eef0f5;
border: 1px solid #ffffff;
border-radius: 7.2px;
padding: 16px 60px 16px 16px;
```
Focus: `outline: 1px solid #46d4cd;`

### Navigation Link (.nav-link)
Default: color #eef0f5 or #ffffff, no underline.
Hover: color #94a1b2.

## Layout & Responsive Rules
Max content width: flexible. Breakpoints: 379, 380, 420, 480, 600, 718, 768–769, 875, 1024, 1100, 1140, 1200, 1280, 1439, 1440, 1500, 1700, 1920.

## Interaction Rules
- Transition: 150ms ease for hover/focus states.
- Focus indicators: always outlined in visible contrast.
- No motion beyond subtle color fades.

## DO List
- Use only palette colors.
- Stick to multiples of 8px for spacing.
- Keep shadows out; use borders for separation.
- Maintain consistent corner radii based on type.
- Bold weights for primary CTA text.

## DON'T List
- Invent new colors.
- Mix sharp and rounded corners in the same component.
- Use light gray for body text.
- Overuse accent orange.

## Code Examples

Primary Button:
```css
.btn-primary {
  background: #2638c4;
  color: #ffffff;
  padding: 10px 24px;
  border-radius: 0px 5px 5px 0px;
  font-weight: 700;
  font-size: 16px;
  border: none;
  transition: background 150ms ease;
}
.btn-primary:hover { background: rgba(15,30,140,0.7); color: var(--hover-color); }
.btn-primary:focus { outline: 3px solid #486cd8; }
```

Ghost Button:
```css
.btn-ghost {
  background: transparent;
  color: #ffffff;
  padding: 8px 24px;
  border-radius: 9999px;
  border: 2px solid #ffffff;
}
.btn-ghost:hover { background: rgba(15,30,140,0.7); color: var(--hover-color); }
```

Search Input:
```css
.search-input {
  background: transparent;
  border: 1px solid #ffffff;
  border-radius: 7.2px;
  padding: 16px 60px 16px 16px;
  color: #eef0f5;
}
.search-input:focus { outline: 1px solid #46d4cd; }
```

9. Summary

TL;DR — PBS’s design system is a disciplined, flat, accessible grid built on PBS Sans, primary blue CTAs, neutral surfaces, and zero shadows. Buttons are either solid blue or ghost white, and forms use clear outlines for focus. It’s civic clarity dressed in friendly polish.

Brand Keywords: civic-clarity, flat-accessible, broadcast-friendly, trust-focused