T-Mobile Design System Deep Dive
1. Brand Overview
T-Mobile’s visual identity is loud, unapologetic, and laser-focused on brand recall. This isn’t a brand that hides behind muted tones or subtle typography—it’s a telecom giant that wants you to feel the magenta before you read a single word. Their design system is built for speed, energy, and clarity. Everything is engineered to work at scale: national campaigns, retail signage, mobile apps, billboards.
There’s a single dominant brand color—magenta (#e20074)—that’s everywhere. It’s on buttons, links, banners, and accent elements. The supporting palette is built around deep grays and near-white neutrals, which keep the magenta from feeling overwhelming. This is a high-contrast brand, perfect for legibility.
Typography is bold and condensed where it matters. The custom TeleNeo font family is the hero for headlines and primary messaging—high weights (800) and tight line heights keep copy compact. System fonts step in for functional UI elements, keeping performance and accessibility in check.
Spacing follows a clean 8px grid, with a few oddball values (5px, 7px) sprinkled in. These micro-adjustments give the UI a slightly human touch—things don’t feel too rigid.
If you’re designing for T-Mobile, the philosophy is simple: be bold, be clear, be fast. Use magenta without fear, keep typography heavy, and make sure interactive elements pop. This is a brand for mass-market communication, not delicate editorial layouts.
2. Color System
2.1 Primary Colors
The brand’s core color is rgb(226, 0, 116) / #e20074. This magenta is psychological fuel—it’s energetic, youthful, and slightly rebellious. Competitors like AT&T stick to calm blues; Verizon uses stark black and red; T-Mobile owns magenta outright.
Magenta here isn’t just decorative—it’s functional. It’s the default CTA background, the link color, and the highlight in UI components. It’s paired with white text for maximum contrast, and occasionally with deep gray for a more grounded feel.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Primary Magenta | #e20074 | Primary brand | CTAs, links, highlights |
| Secondary Transparent | rgba(0,0,0,0) | Secondary background | Overlays, transitions |
| Dark Gray 1 | #1c1c1c | Neutral | Text, headers, footers |
| White-ish | #fbfbfb | Background | Page background, cards |
| Dark Gray 2 | #2b2b2b | Neutral | Navigation, dividers |
| Medium Gray | #6a6a6a | Neutral | Secondary text, icons |
| Black | #000000 | Text | Primary body text |
| Dark Gray 3 | #414141 | Neutral | Tabs, UI controls |
| Blue | #005fcc | Accent state | Hover/focus states |
| Status Info Light | #eaf1ff | Info state | Background info alerts |
| Status Caution Dark | #ad590b | Warning | Text/icon caution states |
| Grayscale 500 | #8c8c8c | Neutral | Disabled text/icons |
| Button Secondary Disabled BG | #e6e6e6 | Disabled state | Button backgrounds |
| Status Positive Light | #e6fce8 | Success | Positive background |
| Button Primary Hover BG | #a7005a | Hover CTA | Button hover background |
| Status Critical Darkest | #3d0400 | Error | Critical backgrounds |
| Status Critical Mid | #f44125 | Error | Critical text/icons |
| Brand Secondary Dark | #770141 | Secondary magenta | Alternate magenta tone |
| Brand Secondary Light | #ff52a3 | Accent | Magenta highlight |
| Status Positive Darkest | #002805 | Success | Text/icons |
| Brand Highlight Mid | #a044a2 | Accent | Purple highlight |
| Brand Highlight Dark | #450245 | Accent | Deep purple |
| Brand Primary Lightest | #ffcee7 | Light magenta | Backgrounds |
| Status Caution Lightest | #fff3de | Warning | Background caution |
| Status Info Mid | #0c48bd | Info | Info text/icons |
| Status Info Light-Mid | #4886ff | Info | Link/info accents |
| Brand Highlight Darkest | #2d0521 | Accent | Deep purple |
| Brand Highlight Light | #b780b7 | Accent | Light purple |
| Status Critical Bright | #d20d00 | Error | Error text/icons |
| Status Critical Lightest | #ffedec | Error | Background error |
| Status Caution Darkest | #321800 | Warning | Dark caution text |
| Brand Highlight Mid-Dark | #7e0c7e | Accent | Purple CTA hover |
| Brand Secondary Mid | #f6288f | Accent | Magenta hover |
| Status Caution Mid | #f8a50c | Warning | Icon highlight |
| Grayscale 400 | #cccccc | Neutral | Borders, dividers |
| Status Positive Mid | #008110 | Success | Text/icons |
| Status Positive Light-Mid | #2dbf3b | Success | Accent elements |
| Grayscale Black | #000000 | Neutral | Text, icons |
| Brand Highlight Lightest | #f8e8f8 | Accent | Background highlight |
Every one of these colors appears in functional contexts—status messaging, hover states, disabled states. They’re not ornamental.
2.3 Color Relationships
High contrast is the norm. Magenta (#e20074) over near-white (#fbfbfb) is extremely readable and passes WCAG AA for large text. Magenta over dark gray (#1c1c1c) is less common but still visible. The hover blue (#005fcc) is a deliberate break from magenta—it signals interaction and is used across links and focus states.
2.4 Usage Guide
- Primary Magenta: Buttons, CTAs, links. Never use for large background blocks unless paired with white text.
- Neutrals: Build structure. Dark grays for text, medium grays for icons, light gray for backgrounds.
- Functional Colors: Status tones (info, warning, success, error) are bright and clear. Use exactly as intended—don’t repurpose error red for decorative accents.
- Avoid pairing magenta with purple highlight tones unless you want a high-saturation, youth-market feel. For professional contexts, stick to magenta + neutral.
3. Typography
3.1 Font Families
Two main stacks:
- TeleNeo — custom brand typeface, heavy weights (800). Used for headings, links, primary messaging.
- system-ui — fallback stack:
-apple-system, Roboto, Helvetica, Segoe UI, Arial. Used for buttons, captions, functional UI text.
No Google or Adobe Fonts—TeleNeo is custom, likely self-hosted.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| Heading-1 | TeleNeo | 48px | 800 | 1.04 |
| Heading-1 | TeleNeo | 32px | 800 | 1.06 |
| Heading-1 | TeleNeo | 28px | 800 | 1.07 |
| Heading-1 | TeleNeo | 28px | 800 | 1.07 |
| Heading-1 | TeleNeo | 24px | 800 | 1.08 |
| Link | TeleNeo | 24px | 800 | 1.08 |
| Heading-1 | system-ui | 24px | 400 | — |
| Heading-1 | TeleNeo | 20px | 800 | 1.10 |
| Link | TeleNeo | 20px | 800 | 1.10 |
| Heading-1 | system-ui | 20px | 700 | 1.65 |
| Heading-1 | system-ui | 18px | 600 | 1.22 |
| Heading-1 | system-ui | 18px | 700 | 1.20 |
| Button | system-ui | 16.1px | 400 | 1.65 |
| Heading-1 | system-ui | 16.1px | 400 | 1.65 |
| Button | system-ui | 16.002px | 400 | 1.20 |
| Link | system-ui | 16px | 400 | 1.65 |
| Link | system-ui | 16px | 700 | 1.65 |
| Heading-1 | system-ui | 16px | 700 | 1.38 |
| Heading-1 | system-ui | 16px | 400 | 1.65 |
| Button | system-ui | 16px | 400 | 1.65 |
| Link | system-ui | 16px | 600 | 1.25 |
| Heading-1 | system-ui | 16px | 600 | 1.25 |
| Button | system-ui | 16px | 600 | 1.25 |
| Button | system-ui | 16px | 400 | — |
| Button | system-ui | 14.4px | 700 | 1.00 |
| Heading-1 | system-ui | 14.08px | 600 | 1.50 |
| Link | system-ui | 14px | 700 | 1.65 |
| Caption | system-ui | 14px | 700 | 1.65 |
| Button | system-ui | 14px | 700 | 1.65 |
| Caption | system-ui | 14px | 600 | 1.29 |
| Link | system-ui | 14px | 600 | 1.29 |
| Caption | system-ui | 14px | 400 | 1.29 |
| Button | system-ui | 14px | 600 | 1.71 |
| Link | system-ui | 14px | 400 | 1.65 |
| Caption | system-ui | 13.6px | 400 | — |
| Link | system-ui | 13.008px | 400 | 1.50 |
| Caption | system-ui | 13.008px | 400 | 1.50 |
| Caption | system-ui | 12.012px | 800 | 1.43 |
| Caption | system-ui | 12px | 700 | 1.65 |
| Caption | system-ui | 12px | 600 | 1.33 |
| Caption | system-ui | 12px | 400 | 1.33 |
| Button | system-ui | 12px | 700 | 1.00 |
| Link | system-ui | 12px | 400 | — |
| Button | system-ui | 11.5px | 400 | 1.65 |
| Caption | system-ui | 11.5px | 400 | 1.65 |
| Button | system-ui | 11.43px | 400 | 1.20 |
| Caption | system-ui | 11px | 400 | 1.36 |
| Button | system-ui | 11px | 400 | 1.36 |
| Caption | system-ui | 11px | 600 | 1.36 |
| Link | system-ui | 11px | 400 | 1.27 |
| Link | system-ui | 11px | 600 | 1.36 |
| Button | system-ui | 10px | 700 | 1.65 |
| Link | system-ui | 10px | 700 | 1.65 |
| Caption | system-ui | 10px | 700 | 1.65 |
| Link | system-ui | 10px | 700 | 1.20 |
| Link | system-ui | 10px | 400 | 1.65 |
| Caption | system-ui | 10px | 400 | 1.65 |
| Caption | system-ui | 8.58px | 800 | 1.43 |
3.3 Hierarchy
TeleNeo at large sizes creates instant brand presence—think billboards and hero headlines. The system-ui stack keeps functional text legible and fast-loading. There’s a steep drop from 48px headlines to 16px body, which keeps focus on key messaging.
4. Spacing & Layout
4.1 Spacing Scale
Base: 8px grid with anomalies.
| Value | Count | Notes |
|---|---|---|
| 2px | 8 | Fine dividers |
| 4px | 64 | Icon gaps |
| 5px | 12 | Micro-adjustments |
| 5.75px | 2 | Rare adjustments |
| 6px | 49 | Compact padding |
| 7px | 128 | Common UI gaps |
| 8px | 98 | Base grid unit |
| 8.05px | 2 | Rounding oddity |
| 10px | 31 | Tight padding |
| 12px | 72 | Button padding |
| 15px | 7 | Rare |
| 16px | 57 | Standard padding |
| 20px | 57 | Section gaps |
| 24px | 92 | Card padding |
| 28px | 65 | Large gaps |
| 30px | 2 | Rare |
| 32px | 55 | Section spacing |
| 40px | 10 | Hero padding |
| 56px | 3 | Large layout gaps |
| 64px | 36 | Page margins |
4.2 Layout
Breakpoints from 256px up to 1730px, covering mobile to large desktop. Many intermediate breakpoints (e.g., 762px, 1024px) suggest fine-tuned responsive behavior.
5. Visual Elements
Border Radius
| Value | Elements | Notes |
|---|---|---|
| 0px 14px 0px 0px | Close modal/dialog | Asymmetric corner rounding |
| 1px | span | Micro |
| 2px | Close, button, div, Back | Minimal rounding |
| 3px | div | Rare |
| 4px | Buttons | Standard rounding for UI |
| 12px | card, p, dialog | Soft rounding |
| 17px | Filter | Rare |
| 20px | switch | Larger UI control |
| 22px | modal | Large rounding |
| 50px | input | Pill shape |
| 100% | span, carousel nav | Full circle |
Shadows
Heavy use of layered shadows for depth:
rgba(65,65,65,0.2) 0px 10px 15px 0px, rgba(65,65,65,0.05) 0px 10px 30px 20px— cards/modalsrgba(65,65,65,0.11) 0px 2px 20px 3px, rgba(65,65,65,0.03) 0px 2px 20px 10px— subtle depthrgba(0,0,0,0.08) 0px 22.4px 35px— hero elements
6. Components
6.1 Buttons
Variant 1 (unav-account toggle)
- Default: bg #e20074, text #fbfbfb, padding 0 16px, radius 0px, border none.
- Hover: bg #e20074, text #fff, opacity 0.7, shadow
rgba(0,0,0,0.16) 0px 3px 6px, rgba(0,0,0,0.23) 0px 3px 6px, scale 1.2. - Active: bg var(--applePayButton--background-color), text var(--headerToolLink--color).
- Focus: bg #1eaedb, text #e20074, outline auto 1px, border 1px solid #000, opacity 0.7.
Variant 2 (tdds-button primary, gray default)
- Default: bg #cccccc, text #141414, padding 8px 16px, radius 4px.
- Hover: bg #e20074, text #b3b3b3, opacity 0.7, scale 1.2.
- Active: bg rgba(255,255,255,0.2), scale 1.4.
- Focus: bg rgba(255,255,255,0.2), text #e20074, border 1px solid #000.
Variant 3 (tdds-button primary, white default)
- Same as Variant 2 but default bg #fff.
6.2 Links
Multiple styles:
- Magenta underline default, hover blue (#005fcc).
- Dark gray no underline default, hover blue.
- White no underline default for dark backgrounds.
6.3 Forms
No text input styles extracted—likely handled by Vuetify defaults.
6.4 Cards
Card shadows match primary shadow tokens, radius 12px, padding from spacing scale (usually 24px).
7. Design Tokens — CSS Variables
:root {
/* Colors */
--color-primary: #e20074;
--color-secondary-transparent: rgba(0,0,0,0);
--color-dark-gray-1: #1c1c1c;
--color-white-ish: #fbfbfb;
--color-dark-gray-2: #2b2b2b;
--color-medium-gray: #6a6a6a;
--color-black: #000000;
--color-dark-gray-3: #414141;
--color-blue: #005fcc;
/* Status */
--color-info-light: #eaf1ff;
--color-caution-dark: #ad590b;
--color-grayscale-500: #8c8c8c;
--color-button-secondary-disabled-bg: #e6e6e6;
--color-positive-light: #e6fce8;
--color-button-primary-hover-bg: #a7005a;
--color-critical-darkest: #3d0400;
--color-critical-mid: #f44125;
--color-secondary-dark: #770141;
--color-secondary-light: #ff52a3;
--color-positive-darkest: #002805;
--color-highlight-mid: #a044a2;
--color-highlight-dark: #450245;
--color-primary-lightest: #ffcee7;
--color-caution-lightest: #fff3de;
--color-info-mid: #0c48bd;
--color-info-light-mid: #4886ff;
--color-highlight-darkest: #2d0521;
--color-highlight-light: #b780b7;
--color-critical-bright: #d20d00;
--color-critical-lightest: #ffedec;
--color-caution-darkest: #321800;
--color-highlight-mid-dark: #7e0c7e;
--color-secondary-mid: #f6288f;
--color-caution-mid: #f8a50c;
--color-grayscale-400: #cccccc;
--color-positive-mid: #008110;
--color-positive-light-mid: #2dbf3b;
--color-grayscale-black: #000000;
--color-highlight-lightest: #f8e8f8;
/* Typography */
--font-teleNeo: "TeleNeo";
--font-system-ui: system-ui, -apple-system, Roboto, Helvetica, Segoe UI, Arial;
/* Spacing */
--space-2: 2px;
--space-4: 4px;
--space-5: 5px;
--space-6: 6px;
--space-7: 7px;
--space-8: 8px;
--space-10: 10px;
--space-12: 12px;
--space-15: 15px;
--space-16: 16px;
--space-20: 20px;
--space-24: 24px;
--space-28: 28px;
--space-30: 30px;
--space-32: 32px;
--space-40: 40px;
--space-56: 56px;
--space-64: 64px;
/* Radius */
--radius-none: 0px;
--radius-sm: 2px;
--radius-md: 4px;
--radius-lg: 12px;
--radius-xl: 22px;
--radius-pill: 50px;
--radius-full: 100%;
/* Shadows */
--shadow-card: rgba(65,65,65,0.2) 0px 10px 15px 0px, rgba(65,65,65,0.05) 0px 10px 30px 20px;
--shadow-subtle: rgba(65,65,65,0.11) 0px 2px 20px 3px, rgba(65,65,65,0.03) 0px 2px 20px 10px;
}8. AI Coding Assistant Prompt
# T-Mobile Design System Specification
You are a T-Mobile design expert. Build UIs matching their visual language exactly.
## Brand Context
T-Mobile's design is bold, high-contrast, and magenta-driven. Typography is heavy and condensed. Spacing follows an 8px grid with occasional micro-adjustments. Interaction states are animated with scale and shadow.
## Color Palette
- Primary Magenta: #e20074 — CTAs, primary buttons, key links
- Secondary Transparent: rgba(0,0,0,0) — overlays
- Dark Gray 1: #1c1c1c — headers, footers
- White-ish: #fbfbfb — page backgrounds
- Dark Gray 2: #2b2b2b — navigation
- Medium Gray: #6a6a6a — secondary text
- Black: #000000 — body text
- Dark Gray 3: #414141 — tabs
- Blue: #005fcc — link hover/focus
- Info Light: #eaf1ff — info backgrounds
- Caution Dark: #ad590b — warning text
- Grayscale 500: #8c8c8c — disabled icons
- Button Secondary Disabled BG: #e6e6e6 — disabled buttons
- Positive Light: #e6fce8 — success backgrounds
- Button Primary Hover BG: #a7005a — hover CTA
- Critical Darkest: #3d0400 — error backgrounds
- Critical Mid: #f44125 — error text
- Secondary Dark: #770141 — alt magenta
- Secondary Light: #ff52a3 — magenta accents
- Positive Darkest: #002805 — success text
- Highlight Mid: #a044a2 — purple accents
- Highlight Dark: #450245 — deep purple
- Primary Lightest: #ffcee7 — light magenta background
- Caution Lightest: #fff3de — caution background
- Info Mid: #0c48bd — info text
- Info Light-Mid: #4886ff — info links
- Highlight Darkest: #2d0521 — deep purple
- Highlight Light: #b780b7 — light purple
- Critical Bright: #d20d00 — error icons
- Critical Lightest: #ffedec — error background
- Caution Darkest: #321800 — caution text
- Highlight Mid-Dark: #7e0c7e — purple hover
- Secondary Mid: #f6288f — magenta hover
- Caution Mid: #f8a50c — caution icons
- Grayscale 400: #cccccc — borders
- Positive Mid: #008110 — success icons
- Positive Light-Mid: #2dbf3b — success accents
- Grayscale Black: #000000 — text
- Highlight Lightest: #f8e8f8 — highlight background
## Typography
- Headings: "TeleNeo"
- Body/UI: system-ui, -apple-system, Roboto, Helvetica, Segoe UI, Arial
| Level | Size | Weight | Line Height | Use |
| H1 | 48px | 800 | 1.04 | Page titles |
| H2 | 32px | 800 | 1.06 | Section headings |
| ... | ... | ... | ... | ... |
## Spacing & Grid
Base: 8px grid. Values: 2,4,5,6,7,8,10,12,15,16,20,24,28,30,32,40,56,64.
## Border Radius
- none: 0px — sharp corners
- sm: 2px — inputs
- md: 4px — buttons
- lg: 12px — cards
- xl: 22px — modals
- pill: 50px — inputs
- full: 100% — round icons
## Shadows & Depth
Use layered shadows: `rgba(65,65,65,0.2) 0px 10px 15px 0px, rgba(65,65,65,0.05) 0px 10px 30px 20px`.
## Component Specifications
### Primary Button
Default: bg #e20074, color #fbfbfb, padding 0 16px, radius 0px, border none.
Hover: bg #e20074, color #fff, opacity 0.7, shadow, scale 1.2.
Focus: bg #1eaedb, color #e20074, border 1px solid #000.
Active: bg var(--applePayButton--background-color), color var(--headerToolLink--color).
### Secondary Button
Default: bg #cccccc, color #141414, padding 8px 16px, radius 4px.
Hover: bg #e20074, color #b3b3b3, opacity 0.7, shadow, scale 1.2.
Focus: bg rgba(255,255,255,0.2), color #e20074, border 1px solid #000.
### Navigation Links
Magenta underline default, hover blue (#005fcc).
No underline for dark gray/white variants.
### Cards
bg #fff, radius 12px, padding 24px, shadow var(--shadow-card).
## Layout & Responsive Rules
Breakpoints: 256px, 320px, 768px, 1024px, 1440px, 1730px.
Grid gap: multiples of 8px.
## Interaction Rules
Transitions: 150ms ease for hover/focus.
Scale animation on hover for buttons: 1.2x.
Focus indicators: 1px auto ring.
## DO List
- Use ONLY colors from palette.
- Maintain 8px grid.
- Use TeleNeo for headings.
- Keep button hover scale consistent.
- Use shadows for emphasis.
## DON'T List
- Don't invent new magenta shades.
- Don't mix sharp and rounded corners in one component.
- Don't use blue for non-interactive text.
- Don't apply shadows to text.
## Code Examples
```css
.btn-primary {
background: #e20074;
color: #fbfbfb;
padding: 0 16px;
border-radius: 0;
font-weight: 700;
font-size: 14px;
border: none;
transition: all 150ms ease;
}
.btn-primary:hover {
opacity: 0.7;
transform: scale(1.2);
box-shadow: rgba(0,0,0,0.16) 0px 3px 6px, rgba(0,0,0,0.23) 0px 3px 6px;
}
.btn-secondary {
background: #cccccc;
color: #141414;
padding: 8px 16px;
border-radius: 4px;
}
.card {
background: #fff;
border-radius: 12px;
padding: 24px;
box-shadow: var(--shadow-card);
}
```9. Summary
TL;DR — T-Mobile’s design system is magenta-forward, heavy in typography, and built on a strict 8px grid with bold interactions. The palette is functional and saturated; the typography is brand-custom and weighty. Shadows and hover scales give depth without clutter.
Brand Keywords:
- magenta-dominant
- bold-typography
- high-contrast
- grid-disciplined
- interaction-driven