DESIGN.md · Analysis

OpenRouter

openrouter.ai · 22 Aug 2026 · 47 colors · Gordita, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, Plus Jakarta Sans, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif

OpenRouter

The unified interface for every AI model. OpenRouter aggregates 500+ models across 80+ providers with transparent pricing, real-time benchmarks, and a developer-first API.

Colors

surface#fcfcfe
surface-dim#f5f5f7
surface-bright#ffffff
surface-container-lowest#f9f9fb
surface-container-low#f5f5f7
surface-container#efeff2
surface-container-high#e8e8eb
surface-container-highest#e0e0e3
on-surface#03080a
on-surface-variant#5a5f66
inverse-surface#0f172b
inverse-on-surface#f0f4f9
outline#7a7f86
outline-variant#c9cdd2
surface-tint#7624f4
primary#7624f4
on-primary#fcfcfe
primary-container#ede9ff
on-primary-container#3d1f8f
inverse-primary#c9b9ff
secondary#035ade
on-secondary#ffffff
secondary-container#d6e3ff
on-secondary-container#001d5c
tertiary#ff2d55
on-tertiary#ffffff
tertiary-container#ffd8e7
on-tertiary-container#5c0a1f
error#ff2d55
on-error#ffffff
error-container#ffd8e7
on-error-container#5c0a1f
primary-fixed#ede9ff
primary-fixed-dim#d6c9ff
on-primary-fixed#3d1f8f
on-primary-fixed-variant#5d3fa8
secondary-fixed#d6e3ff
secondary-fixed-dim#b0c9ff
on-secondary-fixed#001d5c
on-secondary-fixed-variant#003fa8
tertiary-fixed#ffd8e7
tertiary-fixed-dim#ffb0cc
on-tertiary-fixed#5c0a1f
on-tertiary-fixed-variant#8f1a3a
background#fcfcfe
on-background#03080a
surface-variant#e8ecf1

Typography

display
fontFamily: Gordita, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif · fontSize: 56px · fontWeight: 700 · lineHeight: 64px · letterSpacing: -0.02em
headline-lg
fontFamily: Gordita, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif · fontSize: 40px · fontWeight: 700 · lineHeight: 48px · letterSpacing: -0.01em
headline-md
fontFamily: Gordita, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif · fontSize: 28px · fontWeight: 700 · lineHeight: 36px · letterSpacing: 0em
title-lg
fontFamily: Plus Jakarta Sans, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif · fontSize: 20px · fontWeight: 600 · lineHeight: 28px · letterSpacing: 0.01em
body-lg
fontFamily: Plus Jakarta Sans, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0em
body-md
fontFamily: Plus Jakarta Sans, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0em
label-md
fontFamily: Plus Jakarta Sans, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif · fontSize: 14px · fontWeight: 500 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Plus Jakarta Sans, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.02em

Design guidance

Overview

OpenRouter is a unified API aggregation layer for AI models, serving developers and enterprises who need transparent pricing, real-time performance benchmarks, and seamless model switching without vendor lock-in. The design aesthetic is 'Technical Clarity'—a minimalist, data-forward interface that prioritizes information density and developer ergonomics over decorative flourish. The UI evokes precision and trust through a clean white canvas (rgb(252, 252, 254)), bold typography hierarchy, and a vibrant purple accent (rgb(118, 36, 244)) that signals action and capability. The emotional response is one of confidence: users feel they are in control of a powerful, transparent system.

The brand voice is direct, technical, and respectful of developer time. Sentences are concise and action-oriented, avoiding marketing hyperbole. Example: 'Compare latency across 80+ providers in real time. Switch models with a single parameter. No subscriptions, no lock-in.' The vocabulary favors precision (tokens, latency, throughput, providers) over abstraction, and the tone assumes the user is knowledgeable and impatient.

Colors

The color system is built on a neutral, light foundation with a bold purple primary accent. Primary (#7624f4) is the signature brand color, used exclusively for call-to-action buttons, active states, focus rings, and key interactive elements—it commands attention without overwhelming the interface. Secondary (#035ade, a deep blue) supports data visualization and secondary actions, while Tertiary (#ff2d55, a vibrant red/pink) is reserved for error states, alerts, and critical feedback. The surface stack progresses from #fcfcfe (surface, the page background) through #efeff2 (surface-container, used for cards and panels) to #e0e0e3 (surface-container-highest, for elevated modals). On-surface text is #03080a (near-black), ensuring 15:1 contrast for accessibility. Outline colors (#7a7f86 for pr

Typography

The type system pairs Gordita (a geometric, confident sans-serif) for headlines and display text with Plus Jakarta Sans (a warm, approachable humanist sans-serif) for body and UI text. This pairing creates visual hierarchy while maintaining legibility at all sizes. Display (56px, 700 weight, -0.02em tracking) is used for hero headlines like 'The Unified Interface For Every Model'; Headline-lg (40px, 700 weight) for section titles; Headline-md (28px, 700 weight) for subsections. Body-lg (18px, 400 weight, 28px line-height) is used for hero copy and prominent descriptions; Body-md (16px, 400 weight, 24px line-height) for standard paragraph text and card content. Label-md (14px, 500 weight, 20px line-height) is applied to button text, form labels, and UI controls. On small labels over busy ba

Layout

The layout uses a 12-column grid with a max-width of 1280px, centered on the viewport. The page rhythm is driven by a semantic spacing scale: xs (4px) for micro-spacing within components, sm (12px) for internal padding and gaps, md (24px) for section separation and card padding, lg (40px) for major section breaks, and xl (64px) for hero-to-content transitions. The hero section occupies the full viewport height with centered content (headline, subheadline, dual CTAs) and generous vertical padding (lg spacing above and below). Feature cards and model listings use md spacing for internal padding and lg spacing for grid gaps. The gutter (24px) is applied consistently to left/right margins on all sections, creating breathing room on desktop while collapsing to sm (12px) on tablets. Container ma

Elevation & Depth

Depth is conveyed through subtle shadows and layering, not through color shifts. The elevation system uses three levels: Level 1 (Base, no shadow) for the page background and surface elements; Level 2 (Standard card, 0 3px 8px rgba(0, 0, 0, 0.15)) for cards, dropdowns, and modals; Level 3 (Elevated, 0 8px 24px rgba(0, 0, 0, 0.12)) for floating action buttons, popovers, and top-level modals. Cards use a 1px solid border at #c9cdd2 (outline-variant) in addition to shadows to define edges crisply. On hover, cards transition from Level 1 to Level 2 shadow (0 3px 8px rgba(0, 0, 0, 0.15)) and shift

Shapes

The shape philosophy is 'Soft-Technical'—rounded corners are used consistently but conservatively to balance approachability with precision. Buttons use 6px (DEFAULT) border-radius, creating a slightly rounded rectangle that feels modern without being overly playful. Cards and panels use 8px (md) radius, slightly more rounded than buttons to signal containment and hierarchy. Input fields use 6px (DEFAULT) radius to match buttons, creating visual consistency in the form layer. Chips and badges use 9999px (full) radius for a pill shape, appropriate for their small scale and discrete nature. The

Components

Action Elements Buttons are the primary interaction mechanism. Primary buttons (Get API Key, Sign Up) use #7624f4 background with #fcfcfe text, 12px vertical padding, 32px horizontal padding, 6px border-radius, and 500 font-weight. On hover, the background darkens to #6b1ee0 (a 10% luminosity shift). On active/press, it darkens further to #5d1ac8. The transition duration is 150ms (cubic-bezier(0.4, 0, 0.2, 1)). Secondary buttons (Discover Models) use a transparent background with #7624f4 text and a 1px border at #c9cdd2. On hover, the background fills with #f5f5f7 (surface-container-low). Focus states on all buttons apply a 3px ring of rgba(118, 36, 244, 0.1) with a 2px offset.

Containers & Surfaces Cards are the primary content container. Standard cards use #fcfcfe background, 1p

Do's and Don'ts

**Do**

  • Do use Primary (#7624f4) exclusively for CTAs, focus states, and active indicators—it is the brand's signature accent and must remain focal.
  • Do apply md (24px) spacing for card padding and lg (40px) for section separation to maintain consistent rhythm and breathing room.
  • Do use Gordita for all headlines (Display, Headline-lg, Headline-md) and Plus Jakarta Sans for body and UI text to create clear visual hierarchy.
  • Do apply 150ms transitions on hover/active states (cubic-bezier(0.4, 0, 0.2, 1)) to provide responsive feedback without feeling sluggish.
  • Do use 6px border-radius for buttons and inputs, 8px for cards, and 9999px for chips to maintain the Soft-Technical aesthetic.

**Don't**

  • Don't use Primary (#7624f4) for body text, backgrounds, or non-interactive elements—reserve it exclusively for actionable UI.
  • Don't exceed 1280px container max-width; this ensures line-length stays under 80 characters and maintains readability.
  • Don't mix Gordita and Plus Jakarta Sans within a single headline or body paragraph; use Gordita for headlines only.
  • Don't apply shadows deeper than 0 8px 24px rgba(0, 0, 0, 0.12) or use more than three elevation levels; excessive depth creates visual noise.
  • Don't use border-radius values outside the defined scale (sm: 4px, DEFAULT: 6px, md: 8px, lg: 12px, xl: 16px, full: 9999px)—consistency is critical to the system.