Alright — let's tear this down properly. This is MIT’s public web design system in numbers, colors, and pixels. No guessing. No fluff.
1. Brand Overview
MIT’s web presence is exactly what you’d expect from one of the most respected technical institutions in the world — stripped-down, direct, and unapologetically functional. This isn’t a marketing-first site. It’s an information delivery system with just enough visual identity to be recognizable.
You can see the philosophy in the palette: black, white, and a single saturated red (#ff1423). No gradients. No ornamental backgrounds. The red is surgical — used in CTAs, borders, and accents. It’s not splashed everywhere; it’s deployed where it has a job.
Typography tells another part of the story — Neue Haas Grotesk throughout. It’s a modern revival of Helvetica’s Swiss precision, but with better spacing and optical balance. The site uses both “Text” and “Display” cuts, switching weights and sizes for hierarchy. There’s no serif anywhere. This is a technical brand, not an editorial one.
Spacing is built on an 8px scale (with some oddball values — 7.55565px shows up, probably from a font baseline calculation). Breakpoints run from tiny phones at 320px all the way to massive displays at 2500px. Clearly, they care about responsive performance on everything from a mobile search bar to a wall-sized display in a lab.
Component design is minimal — borders are either razor-thin black or that signature red. Border radii are almost nonexistent except for circular avatars (50%). Shadows are rare and subtle, used sparingly for depth. Buttons are flat by default with hover and focus states adding motion and color shifts.
MIT’s site isn’t trying to wow with visual effects. It’s trying to deliver clarity and authority through restraint. This works because the brand is already strong — the design doesn’t need to shout.
2. Color System
2.1 Primary Colors
Primary semantic color: rgb(0, 0, 0) → #000000.
Black here is more than a text color — it’s a container background, border color, and divider. It’s paired with pure white (#ffffff) for maximum contrast. The single accent is that MIT red (rgb(255, 20, 35) → #ff1423). This red is aggressive, almost warning-like, but here it’s an identity color. It’s brighter than most academic reds (Harvard’s is deeper, Stanford’s is more muted).
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Primary Black | #000000 | Semantic primary | Text, borders, container backgrounds |
| White | #ffffff | Neutral background | Page backgrounds, text on dark |
| MIT Red | #ff1423 | Accent/brand | Buttons, borders, CTAs |
2.3 Color Relationships
Black (#000000) on white (#ffffff) is a WCAG AAA contrast — perfect.
MIT Red (#ff1423) against white is also accessible for text (contrast ratio ~4.9:1 — AA pass). Against black, it’s extremely high contrast (~6.7:1).
No dark mode variant is in the data. The scheme is inherently high contrast, so flipping to dark mode would be trivial — invert black/white, keep red as accent.
2.4 Usage Guide
- Black + white is the default canvas.
- Red is never background filler — it’s for interaction or important highlights.
- Avoid red text on black unless you want high visual tension — it's intense.
- Don’t use tints/shades of red — stick to #ff1423.
3. Typography
3.1 Font Families
All typography uses Neue Haas Grotesk, split into neue-haas-grotesk-text and neue-haas-grotesk-display. No fallbacks listed — likely system fallbacks are sans-serif.
No Google or Adobe Fonts — probably self-hosted.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| heading-1 | neue-haas-grotesk-text | 47.2226px (2.95rem) | 600 | 1.10 |
| heading-1 | neue-haas-grotesk-text | 32px (2.00rem) | 500 | 1.30 |
| link | neue-haas-grotesk-text | 32px | 500 | 1.30 |
| heading-1 | neue-haas-grotesk-display | 20px | 700 | 1.15 |
| link | neue-haas-grotesk-display | 20px | 700 | 1.15 |
| heading-1 | neue-haas-grotesk-display | 18px | 700 | 1.10 |
| link | neue-haas-grotesk-text | 17px | 400 | 0.00 |
| heading-1 | neue-haas-grotesk-text | 17px | 400 | 1.60 |
| link | neue-haas-grotesk-text | 16px | 500 | 5.25 |
| button | neue-haas-grotesk-text | 16px | 500 | 5.25 |
| heading-1 | neue-haas-grotesk-text | 16px | 500 | 5.25 |
| heading-1 | neue-haas-grotesk-text | 16px | 400 | 1.55 |
| link | neue-haas-grotesk-text | 15.1113px | 600 | 1.30 |
| heading-1 | neue-haas-grotesk-text | 15.1113px | 600 | 5.56 |
| link | neue-haas-grotesk-text | 15.1113px | 400 | 5.56 |
| heading-1 | neue-haas-grotesk-text | 15.1113px | 700 | 1.10 |
| heading-1 | neue-haas-grotesk-text | 15.1113px | 400 | 1.30 |
| link | neue-haas-grotesk-text | 15.1113px | 500 | 1.30 |
| heading-1 | neue-haas-grotesk-text | 15.1113px | 500 | 1.30 |
| heading-1 | neue-haas-grotesk-text | 15px | 500 | 1.60 |
| link | neue-haas-grotesk-text | 14.5068px | 400 | 1.30 |
| heading-1 | neue-haas-grotesk-text | 14.5068px | 400 | 1.30 |
| heading-1 | neue-haas-grotesk-text | 14.5068px | 700 | 1.30 |
| caption | neue-haas-grotesk-text | 13.7815px | 400 | 1.30 |
| link | neue-haas-grotesk-text | 13.2226px | 500 | 1.00 |
| caption | neue-haas-grotesk-text | 13.2226px | 400 | 0.00 |
| caption | neue-haas-grotesk-text | 13.2226px | 600 | 1.30 |
| link | neue-haas-grotesk-text | 13.2226px | 400 | 1.30 |
3.3 Hierarchy
The 47px H1 is rare — most headings are in the 20–32px range. Body copy hovers around 15–17px. Line heights vary wildly — some headings have tight 1.10, others have massive 5.25 (likely vertical alignment hacks). This is not a clean modular scale — it’s tuned per use case.
4. Spacing & Layout
4.1 Spacing Scale
Base scale: 8px logic, with 1px increments allowed. Common values:
| px | rem | count |
|---|---|---|
| 1 | 0.06rem | 4 |
| 3 | 0.19rem | 11 |
| 4 | 0.25rem | 34 |
| 5 | 0.31rem | 5 |
| 6 | 0.38rem | 24 |
| 7.55565 | 0.47rem | 2 |
| 8 | 0.50rem | 6 |
| 9 | 0.56rem | 3 |
| 10 | 0.63rem | 3 |
| 12 | 0.75rem | 3 |
| 15 | 0.94rem | 61 |
| 16 | 1.00rem | 6 |
| 20 | 1.25rem | 4 |
| 30 | 1.88rem | 9 |
| 35 | 2.19rem | 3 |
| 40 | 2.50rem | 10 |
| 45 | 2.81rem | 1 |
| 84 | 5.25rem | 1 |
| 85 | 5.31rem | 1 |
| 130 | 8.13rem | 1 |
4.2 Layout
Breakpoints: 320px → 2500px in fine increments. No fixed container width in data, but the sheer number of breakpoints means they’re targeting specific device classes. Likely fluid grids with max-width constraints near 1600–1800px.
5. Visual Elements
Border Radius:
- 2px (rare, low confidence) — maybe for small buttons/links
- 10px (rare) — possibly cards
- 50% — avatars/icons
Shadows:
rgb(255, 20, 35) 0px 3px 0px 0px inset, rgba(0, 0, 0, 0.05) 0px 2px 15px 0pxrgba(0, 0, 0, 0.1) 0px 10px 35px 0px
Subtle, layered. Red inset shadow is unusual — probably used in a brand-specific CTA.
Borders:
- 1px solid red (#ff1423) on div/button
- 0px 0px 0px 1px solid black — vertical dividers
- 0px 0px 1px solid black — horizontal dividers
6. Components
6.1 Buttons
Variant 1 — Search Trigger
Default: bg #ff1423, text #ff1423 (odd — background and text same, maybe icon-based), no padding, no radius.
Hover: border 2px solid var(--primary-spot), bg var(--mit-brand-color--top-bar), color var(--secondary-text), transform scale(1.3).
Focus: border 3px solid var(--secondary-spot), bg same as hover, color white, opacity 0.
Variant 2 — Search Input
Default: bg white, text black, padding 1px 63px, no radius.
Hover: border/background var(--primary-spot) inverted.
Focus: subtle shadow, border 2px solid var(--primary-spot), color faded.
Variant 3 — Newsletter CTA
Default: transparent bg, white text, padding 9px 15px, border 1px solid red.
Hover/Focus: same motion scale(1.3) and border changes as variant 1.
6.2 Links
Three styles:
- White text, underline on hover, weight 600.
- Red text, underline always, weight 400.
- Black text, underline on hover, weight 400.
6.3 Forms
No text input specifics beyond search box. No checkbox/radio/select styles in data.
6.4 Cards
No explicit “card” in data. Shadows suggest possible use in spotlight or newsletter blocks.
7. Design Tokens
:root {
/* Colors */
--color-black: #000000;
--color-white: #ffffff;
--color-red: #ff1423;
/* Typography */
--font-text: "neue-haas-grotesk-text", sans-serif;
--font-display: "neue-haas-grotesk-display", sans-serif;
/* Type Sizes */
--h1-xl-size: 47.2226px;
--h1-lg-size: 32px;
--h1-md-size: 20px;
--h1-sm-size: 18px;
--body-lg-size: 17px;
--body-md-size: 16px;
--body-sm-size: 15.1113px;
--caption-lg-size: 14.5068px;
--caption-md-size: 13.7815px;
--caption-sm-size: 13.2226px;
/* Spacing */
--space-1: 1px;
--space-3: 3px;
--space-4: 4px;
--space-5: 5px;
--space-6: 6px;
--space-7-5: 7.55565px;
--space-8: 8px;
--space-9: 9px;
--space-10: 10px;
--space-12: 12px;
--space-15: 15px;
--space-16: 16px;
--space-20: 20px;
--space-30: 30px;
--space-35: 35px;
--space-40: 40px;
--space-45: 45px;
--space-84: 84px;
--space-85: 85px;
--space-130: 130px;
/* Radius */
--radius-sm: 2px;
--radius-md: 10px;
--radius-full: 50%;
/* Shadows */
--shadow-red-inset: rgb(255,20,35) 0px 3px 0px 0px inset, rgba(0,0,0,0.05) 0px 2px 15px 0px;
--shadow-lg: rgba(0,0,0,0.1) 0px 10px 35px 0px;
}8. AI Coding Assistant Prompt
# MIT Design System Specification
System Prompt:
You are a MIT design expert. Build UIs matching their visual language exactly.
Brand Context:
MIT’s digital design is minimal, functional, and high-contrast. It uses black, white, and a single saturated red for emphasis. Typography is Swiss-modern Neue Haas Grotesk for clarity and precision.
Color Palette:
- Primary Black: #000000 — Text, borders, dividers
- White: #ffffff — Backgrounds, text on dark
- MIT Red: #ff1423 — CTAs, accent borders, interactive highlights
Typography:
Font Families:
- Headings: "neue-haas-grotesk-display", sans-serif
- Body: "neue-haas-grotesk-text", sans-serif
Type Scale:
| Level | Size | Weight | Line Height | Use |
| H1 XL | 47.2226px | 600 | 1.10 | Main titles |
| H1 LG | 32px | 500 | 1.30 | Section headings |
| H1 MD | 20px | 700 | 1.15 | Subhead |
| H1 SM | 18px | 700 | 1.10 | Minor headings |
| Body LG | 17px | 400 | 1.60 | Paragraphs |
| Body MD | 16px | 500 | 5.25 | UI text |
| Body SM | 15.1113px | 400–700 | 1.10–5.56 | Labels |
| Caption | 14.5068px | 400–700 | 1.30 | Meta info |
| Small Caption | 13.2226px | 400–600 | 0–1.30 | Footnotes |
Spacing & Grid:
Base: 8px. Scale includes: 1, 3, 4, 5, 6, 7.55565, 8, 9, 10, 12, 15, 16, 20, 30, 35, 40, 45, 84, 85, 130px.
Use multiples for consistent layout.
Border Radius:
- sm: 2px — small interactive elements
- md: 10px — cards
- full: 50% — avatars/icons
Shadows & Depth:
- Red inset: rgb(255,20,35) 0px 3px inset + subtle black blur
- Large blur: rgba(0,0,0,0.1) 0px 10px 35px
Component Specifications:
Primary Button (.site-nav__search-trigger):
Default: bg #ff1423, color #ff1423, no padding, no radius, no shadow.
Hover: border 2px solid var(--primary-spot), bg var(--mit-brand-color--top-bar), color var(--secondary-text), scale(1.3).
Focus: border 3px solid var(--secondary-spot), color #ffffff, opacity 0.
Secondary Button (.es-search__box):
Default: bg #ffffff, color #000000, padding 1px 63px, no radius.
Hover: border/bg var(--primary-spot), invert text color.
Focus: shadow rgba(0,0,0,0.1) 0px 10px 35px, border 2px solid var(--primary-spot).
Newsletter CTA (.spotlight-newsletter-cta__button):
Default: transparent bg, white text, padding 9px 15px, border 1px solid #ff1423.
Hover/Focus: same as Primary Button’s motion.
Links:
White text — underline on hover.
Red text — underline always.
Black text — underline on hover.
Layout & Responsive Rules:
Breakpoints: 320px → 2500px with fine increments.
Mobile padding: ~15px. Desktop: larger multiples of 30–40px.
Interaction Rules:
- Transitions ~150ms ease
- Focus uses visible border change
- Hover uses scale transform for interactive elements
DO List:
- Use only #000000, #ffffff, #ff1423
- Maintain 8px grid spacing
- Neue Haas Grotesk for all text
- Use full radius only for circular elements
- Keep buttons flat — no gradient fills
- Reserve red for interactive states
DON'T List:
- Don’t introduce extra colors
- Don’t mix rounded and sharp corners
- Don’t apply heavy shadows
- Don’t use serif fonts
- Don’t make red a background fill for large sections
Code Examples:
Primary Button:
```css
.btn-primary {
background: #ff1423;
color: #ff1423;
padding: 0;
border-radius: 0;
border: none;
font-family: var(--font-text);
font-size: 17px;
font-weight: 400;
transition: all 150ms ease;
}
.btn-primary:hover {
border: 2px solid var(--primary-spot);
transform: scale(1.3);
}
```
Card:
```css
.card {
background: #ffffff;
border-radius: 10px;
padding: 15px;
box-shadow: var(--shadow-lg);
}
```
Form Input:
```css
.input {
border: 1px solid #ff1423;
border-radius: 2px;
padding: 6px 12px;
font-size: 16px;
}
.input:focus {
border-color: var(--primary-spot);
outline: none;
}
```9. Summary
TL;DR — MIT’s site is pure function: black, white, one red. Neue Haas Grotesk everywhere. Flat, high-contrast, restrained. Spacing is precise. Interactions are minimal but intentional.
Brand Keywords:
- high-contrast-functional
- swiss-modernist
- academic-authority
- no-nonsense
- technical-clarity