BrandToPrompt

MLB Design System: Functional Americana & UI Discipline

Visit Site

Explore MLB's design system - patriotic colors, sans-serif typography, and disciplined UI rules. Build sports apps with MLB's visual language.

6 min read1,098 words

Brand Identity

Color Palette

Primary
Secondary

Typography

Primary Font
mlb-primary
Secondary Font
Proxima Nova

Design Style

Style
data-driven minimalism with functional Americana aesthetics and subtle shadows
Visual Density
compact grid-based layout following strict 8px scale
Border Style
mixed: 8px cards, 12px buttons, 2px inputs

Full Analysis

MLB Brand Design System Deep Dive

1. Brand Overview

Major League Baseball (MLB) operates in a visual space that's instantly recognizable — high-contrast, bold, and patriotic without slipping into cliché. The official MLB site feels like a sports hub first and a brand exercise second. It’s designed for speed, clarity, and delivering insane amounts of information without overwhelming the user.

The vibe: functional Americana. Blue and white are the DNA here, with occasional pops of red, green, and yellow for functional states. Typography leans into sans-serif families, both custom (“mlb-primary”) and workhorses like Proxima Nova and Helvetica Neue. The font choice isn't ornamental—it’s about instant readability across tables, stats, and mobile scoreboards.

Design philosophy? Utility first. You see that in the spacing scale (strict 8px grid with 1px increments for micro-control) and a clear component hierarchy (buttons, tabs, and badges have consistent rules, no random radius values popping up without reason). This site is for fans in a hurry: loading scores, reading stats, maybe buying tickets. The design supports that momentum.

Compared to other sports leagues (NBA leans heavy on lifestyle imagery, NFL is almost militaristic in its typography), MLB lands squarely in data-driven minimalism. You won’t see gratuitous animations or tonal gradients as decoration — color is used sparingly and only with purpose: action states, navigation focus, or team identities.

And while the site is packed with functionality, certain aesthetic decisions show discipline: card shadows are subtle (rgba blacks under 0.25 opacity), border radii avoid extremes (2px, 3px, 8px, 12px — no random giant pills unless justified), and text colors maintain WCAG-friendly contrast against white and dark backgrounds.

If you’re a designer or developer reverse-engineering this system, expect a lot of tokenized discipline. Everything is a variable, from blue shades (#000c57 to #2c7df8) to green levels for positive states. Odd choice: this is one of the rare design systems where purple gets a full ramp (#e7e0fa to #210b3e) without being a primary brand driver—probably internal tooling or special campaign use.


2. Color System

2.1 Primary Colors

Primary interaction blue: #0048c7 (“--mlb-2-1-0-color-blue-blue700”). It’s saturated and deep, perfect for CTAs and nav highlights. This shade is calmer than typical neon sports blues — it feels trustworthy and official. In CTAs, it holds up against white text with excellent accessibility. There’s also a darker navy (#000c57) for headers and emphasis, and brighter blues (#2c7df8, #5298ff) for hover states and accents.

Psychologically, MLB’s blue family signals stability and tradition. Compare this to NBA’s brighter electric blue which feels high-energy; MLB’s choice is more about authority.

White (#ffffff) dominates the interface, forming the base canvas. Secondary is transparent (rgba(0, 0, 0, 0)), used for overlays or untouched backgrounds.

2.2 Complete Palette

Color NameHexRoleUsage
Primary Blue 1000#000c57Deep navyHeadlines, backgrounds
Primary Blue 900#001d80NavyLarge scale CTAs
Primary Blue 800#0031a6Dark blueSecondary CTAs, tabs
Primary Blue 700#0048c7Main CTA blueButtons, active links
Primary Blue 600#0062e3Mid blueHover/focus CTA
Primary Blue 500#2c7df8Bright blueHover accents
Primary Blue 400#5298ffLight brightLinks, icons
Primary Blue 300#7ab2ffPale brightBackground accents
Primary Blue 200#a4cdffSoft skyCharts, backgrounds
Primary Blue 100#d0e6ffVery lightFills, hover backgrounds
White#ffffffBasePage background, text on dark
Neutral 1300#14191fDark UI elementsNav, footer
Neutral 1200#232931Dark grayPanels
Neutral 1100#333b44GrayBody text on white
Neutral 1000#444d58Mid-graySecondary text
Neutral 900#57606cMid-toneDividers
Neutral 800#6a7480Medium-light grayBackgrounds
Neutral 700#7f8994GrayUI controls default
Neutral 600#959da8Light grayDisabled text
Neutral 500#acb3bcLight-medium grayInputs
Neutral 400#c3c8cfVery light grayBorders
Gray#222222Near blackText
Gray dark#070a0dVery darkBackgrounds
Gray mid#808080GrayText/icons
Gray UI mid Dark#696969Dark grayHeaders
Gray UI light#ddddddLight grayBackground fill
Functional Green 1000#002500Deep greenSuccess emphasis
Functional Green 900#003c00Dark greenSuccess headers
Functional Green 800#005400Deep-mid greenSuccess contexts
Functional Green 700#006c00Mid greenSuccess CTAs
Functional Green 600#098314Bright greenPrimary positive
Functional Green 500#399a39GreenHover states for success
Functional Green 400#5eb15cLight greenBackground positive
Functional Green 300#84c681Softer greenCharts
Functional Green 200#acdaa9LightCharts
Functional Green 100#d4edd3Very lightBackground success
Functional Yellow 1000#370900Deep brown-yellowWarnings/banners
Functional Yellow 900#541700Dark brownWarnings
Functional Yellow 800#712800DeepAlerts
Functional Yellow 700#8c3c00Brown-orangeAlerts
Functional Yellow 600#a65400Orange-brownHover states
Functional Yellow 500#bd6d00OrangeWarnings
Functional Yellow 400#d08929Orange-yellowAlerts
Functional Yellow 300#e0a561GoldAccents
Functional Yellow 200#edc394LightBackgrounds
Functional Yellow 100#f7e0c8Very lightBackground fills
Functional Red 1000#450000Deep redError emphasis
Functional Red 900#680000Dark redHeaders alerts
Functional Red 800#8a0000Deep redButtons alerts
Functional Red 700#aa0013Mid redCTAs alerts
Functional Red 600#c61b2bBright redError primary
Functional Red 500#de4447Light bright redHover alerts
Functional Red 400#f16966Mid-light redBackgrounds errors
Functional Red 300#fd8d87Light soft redCharts
Functional Red 200#ffb3adLightBackground errors
Functional Red 100#ffd8d4Very lightError subtle states
Purple 1000#210b3eDeep purpleSpecial branding
Purple 900#361a5eDark purplePanels/events
Purple 800#4b2b7dPurpleHeaders campaign
Purple 700#613f99Mid purpleCTAs campaign
Purple 600#7756b3Light-mid purpleBackgrounds
Purple 500#8d6fc9PurpleAccents
Purple 400#a38adbLight purpleCharts
Purple 300#b9a5e9LightFills
Purple 200#d0c2f3Very lightBackgrounds
Purple 100#e7e0faVery lightFills

2.3 Color Relationships

Contrast is managed tightly: primary blue against white is AAA accessible. Text contrast against dark neutrals is high enough even for small caption text. Reds and yellows lean dark for text-bearing backgrounds — no washed-out tones that would fail WCAG.

Dark mode potential is embedded here: with navy and deep neutrals, you could flip whites to dark grays and maintain cohesion.

2.4 Usage Guide

  • Action elements: Use blue ramp; #0048c7 for default, #2c7df8 for hover, #000c57 for pressed.
  • Positive states: Use green ramp; #098314 for CTA, #399a39 for secondary actions.
  • Warnings: Yellows stay on brown spectrum for contrast.
  • Errors: Reds like #c61b2b for primary action, #de4447 for hovers.
  • Avoid mixing purples with functional states — they’re reserved for special campaigns.

3. Typography

3.1 Font Families

Core: "mlb-primary" — custom font face. Fallbacks: Helvetica Neue, Helvetica, Arial. Secondary: "Proxima Nova" in headings and captions. "proxima-nova" appears with mlb-primary fallback for certain captions/links. No Google or Adobe hosted fonts; likely self-hosted.

3.2 Type Scale

ElementFontSizeWeightLine Height
Heading-1mlb-primary30.1384px7001.15
Heading-1mlb-primary30px8001.23
Heading-1Proxima Nova28px7001.20
Heading-1mlb-primary23px7001.20
Heading-1mlb-primary22px7001.27
Buttonmlb-primary22px7001.27
Heading-1mlb-primary21.92px6001.20
Heading-1mlb-primary19px5001.26
Heading-1Proxima Nova19px6001.20
Heading-1mlb-primary19px6001.26
Buttonmlb-primary19px7001.15
Heading-1mlb-primary19px7001.15
Buttonmlb-primary18px7002.67
Heading-1mlb-primary18px7002.67
Heading-1mlb-primary17px4001.29
Linkmlb-primary16px4001.50
ButtonHelvetica Neue16px4001.15
Buttonmlb-primary16px4001.15
Heading-1mlb-primary16px4001.50
Heading-1mlb-primary16px7001.30
Heading-1mlb-primary15px7001.20
Buttonmlb-primary14.4px4002.64
Buttonmlb-primary14.4px7001.00
Captionproxima-nova14px7001.43
Linkproxima-nova14px5001.07
Linkproxima-nova14px7001.07
Captionproxima-nova14px7001.07
Captionproxima-nova14px5001.07
Buttonproxima-nova14px7001.15
Linkproxima-nova14px5001.07
Captionproxima-nova14px5001.07
CaptionHelvetica Neue14px4001.50
Linkmlb-primary14px7001.50
Captionmlb-primary14px7001.50
Captionmlb-primary14px4001.50
LinkProxima Nova14px5001.00
CaptionProxima Nova14px7001.00
ButtonProxima Nova14px5001.00
Captionmlb-primary14px7001.40
Captionmlb-primary14px6001.40
Captionmlb-primary13.6px400-
Linkmlb-primary13.008px7001.50
Buttonmlb-primary13.008px6001.20
Captionmlb-primary13.008px4001.50
Linkmlb-primary13.008px4001.50
Buttonmlb-primary13px7001.15
Captionmlb-primary13px7001.15
Buttonproxima-nova13px7001.15
Captionproxima-nova13px7001.15
Captionmlb-primary12.8px4001.10
Captionmlb-primary12.2469px4001.50
Captionproxima-nova12px7001.25
Buttonmlb-primary12px7001.15
Captionmlb-primary12px7001.15
Captionmlb-primary12px7001.50
Linkmlb-primary12px400-
Captionproxima-nova10px5001.50
Buttonmlb-primary9px7002.00
Captionmlb-primary9px7002.00

3.3 Hierarchy

The smallest sizes (9px, 10px) are for badges and micro labels — bold weights maintain legibility. Large headings (30px) are rare, reserved for hero areas. UI buttons range from 12px to 22px depending on prominence. Line-heights vary strongly: tight 1.15 for dense UI, extended 2.x for special emphasis.


4. Spacing & Layout

4.1 Spacing Scale

Base grid: 8px scale with smaller increments down to 1px for fine alignments.

Common values:

  • Micro: 1px (195 uses) for borders, fine adjustments.
  • 2px, 3px, 4px — minimal gaps, icon padding.
  • 6px (90 uses): button padding vertical.
  • 8px (228 uses): main spacing unit for UI.
  • 11px (212 uses): card gutters.
  • 12px (322 uses): common padding for inputs and controls.
  • 16px (241 uses): body text padding, card spacing.
  • Larger: 20px, 32px as section gaps.
  • Extreme: 581.984px (!) — likely hero/banner offset.

4.2 Layout

Breakpoints: mobile from 320px, scaling through 768px tablet, desktop beyond 1024px, with additional micro breakpoints (426px, 567px) — probably device-specific optimization.


5. Visual Elements

Border Radius

Values cluster:

  • 0px for data tables and some flyouts.
  • 2px — inputs/buttons.
  • 3px — sliders/div.
  • 8px — cards/groups (151 uses; primary radius).
  • 12px — buttons.
  • 21px — paragraphs (!).
  • 50% — avatars/icons.

Shadows

Most used: rgba(0, 0, 0, 0.08) 0px 1px 3px. Subtle depth. Max observed: rgba(0,0,0,0.25) 0px 0px 14px — only for hover/focus on certain components.


6. Components

6.1 Buttons

We have five main variants extracted:

Primary (blue background)

Default:

  • Background: #0048c7
  • Color: #ffffff
  • Padding: 1px 10px
  • Radius: 5px
    Hover: #1eaddb with opacity 0.9.
    Active: #080808.
    Focus: outline black solid 2px, border black solid 1px.

Circular icon button (semi-transparent background)

Default:

  • Background: rgba(255,255,255,0.3), radius: 50%.
    Hover: #1eaddb, shadow rgba black 0.24 at 4px 9px.
    Focus: same as primary.

Gray pill button

Default:

  • Background: #666666, radius: 12px.
    Hover/focus as above.

Cookie setting link

Default: white background, text blue (#057aff).
Hover: #1eaddb.
Focus: follows primary.

Secondary solid blue button

Default: #4076c7 background, border same color.

6.2 Links

Variants:

  • Default gray (#333333), hover blue (#1883fd).
  • Default blue (#0048c7), hover lighter blue.
  • White text links for dark backgrounds.
  • Underlined blue (#057aff) — becomes non-underlined hover.

No random underline toggles: consistent hover removes underline except special link.

6.3 Forms

No text inputs in snapshot — likely styled with neutral 400/500 borders.


7. Design Tokens

:root {
  /* Colors */
  --color-primary-blue-1000: #000c57;
  --color-primary-blue-900: #001d80;
  --color-primary-blue-800: #0031a6;
  --color-primary-blue-700: #0048c7;
  --color-primary-blue-600: #0062e3;
  --color-primary-blue-500: #2c7df8;
  --color-primary-blue-400: #5298ff;
  --color-primary-blue-300: #7ab2ff;
  --color-primary-blue-200: #a4cdff;
  --color-primary-blue-100: #d0e6ff;
  --color-white: #ffffff;
  --color-neutral-1300: #14191f;
  --color-neutral-1200: #232931;
  --color-neutral-1100: #333b44;
  --color-neutral-1000: #444d58;
  --color-neutral-900: #57606c;
  --color-neutral-800: #6a7480;
  --color-neutral-700: #7f8994;
  --color-neutral-600: #959da8;
  --color-neutral-500: #acb3bc;
  --color-neutral-400: #c3c8cf;
  --color-gray-dark: #222222;
  --color-gray-darker: #070a0d;
  --color-gray-mid: #808080;
  --color-gray-ui-dark: #696969;
  --color-gray-light: #dddddd;
  --color-green-1000: #002500;
  /* ... continue for all greens, yellows, reds, purples */
  
  /* Spacing */
  --space-1: 1px;
  --space-2: 2px;
  --space-3: 3px;
  --space-4: 4px;
  --space-6: 6px;
  --space-8: 8px;
  --space-11: 11px;
  --space-12: 12px;
  --space-16: 16px;
  --space-20: 20px;
  --space-32: 32px;
  
  /* Radius */
  --radius-none: 0;
  --radius-sm: 2px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --radius-full: 50%;
  
  /* Shadows */
  --shadow-sm: rgba(0,0,0,0.08) 0px 1px 3px;
  --shadow-md: rgba(0,0,0,0.25) 0px 0px 14px;
  
  /* Typography */
  --font-primary: "mlb-primary", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-secondary: "Proxima Nova", sans-serif;
}

8. AI Coding Assistant Prompt

# MLB Design System Specification

You are an MLB design expert. Build UIs matching their visual language exactly.

## Brand Context
MLB's design is data-driven and functional. Blue and white dominate, with clear ramps for functional states (red = error, green = success, yellow = warning). Typography is sans-serif for clarity; spacing follows an 8px grid.

## Color Palette
- Primary Blue 700: #0048c7 — CTAs, primary buttons
- Primary Blue 500: #2c7df8 — Hover states
- White: #ffffff — Background
- Neutral 1100: #333b44 — Body text
- Red 600: #c61b2b — Error messages
- Green 600: #098314 — Success states
- Yellow 500: #bd6d00 — Warnings
- Purple 600: #7756b3 — Special campaigns

## Typography
- Font Family Primary: "mlb-primary", Helvetica Neue, Helvetica, Arial
- Font Secondary: "Proxima Nova", sans-serif

| Level | Size | Weight | Line Height | Use |
| H1 | 30px | 800 | 1.23 | Page titles |
| Button Large | 22px | 700 | 1.27 | CTA |
| Body | 16px | 400 | 1.50 | Content |
| Caption | 14px | 700 | 1.40 | Labels |

## Spacing & Grid
Base: 8px grid. Tokens: 1px, 2px, 4px, 6px, 8px, 11px, 12px, 16px, 20px, 32px.

## Border Radius
- none: 0 — Tables
- sm: 2px — Inputs
- md: 8px — Cards
- lg: 12px — Buttons
- full: 50% — Avatars

## Shadows
- sm: rgba(0,0,0,0.08) 0px 1px 3px
- md: rgba(0,0,0,0.25) 0px 0px 14px

## Components

### Primary Button
Default: background #0048c7, color #fff, padding 1px 10px, radius 5px.  
Hover: background #1eaddb, opacity 0.9.  
Active: background #080808.  
Focus: outline 2px solid black.

### Link
Default: color #333333, no underline. Hover: color #1883fd.

## Layout & Responsive Rules
Content widths: mobile from 320px, tablet 768px, desktop >1024px.

## Interaction Rules
Transition: 150ms ease for state changes. Focus indicators must be visible.

## DO List
- Use only palette colors
- Maintain 8px grid
- Bold weights for legibility under 14px
- Keep CTAs blue unless state dictates red/yellow/green

## DON'T List
- Don’t invent new shades
- Don’t mix corner radii in the same component
- Don’t remove focus outline

## Code Examples

### Primary Button
.btn-primary {
  background: #0048c7;
  color: #fff;
  padding: 1px 10px;
  border-radius: 5px;
  font-weight: 700;
  font-size: 13px;
}
.btn-primary:hover { background: #1eaddb; opacity: 0.9; }

### Card
.card {
  background: #ffffff;
  border-radius: 8px;
  padding: 16px;
  box-shadow: rgba(0,0,0,0.08) 0px 1px 3px;
}

9. Summary

TL;DR — MLB’s design system is a disciplined, utility-first palette of blues, neutrals, and functional reds/greens/yellows. Typography is custom sans-serif with Proxima Nova for supporting roles. Spacing is strictly tokenized; components are predictable.

Brand Keywords

  • data-driven-minimalist
  • functional-patriotic
  • disciplined-token-based
  • high-contrast-accessible