DESIGN.md · Analysis

Kalshi

kalshi.com · 1 Sept 2026 · 47 colors · kalshiSans, kalshiSans Fallback, sans-serif

Kalshi

Kalshi is a regulated prediction market exchange where users trade on real-world event outcomes. The design system emphasizes clarity, accessibility, and data-driven decision-making through a vibrant, tech-forward aesthetic.

Colors

surface#ffffff
surface-dim#f5f5f5
surface-bright#ffffff
surface-container-lowest#fafafa
surface-container-low#f0f0f0
surface-container#eeeeee
surface-container-high#e8e8e8
surface-container-highest#e0e0e0
on-surface#090909
on-surface-variant#6b6b6b
inverse-surface#121212
inverse-on-surface#f5f5f5
outline#999999
outline-variant#cccccc
surface-tint#28cc95
primary#28cc95
on-primary#ffffff
primary-container#d4f5e8
on-primary-container#0d5c3a
inverse-primary#28cc95
secondary#265cff
on-secondary#ffffff
secondary-container#e8f0ff
on-secondary-container#001a7a
tertiary#aa00ff
on-tertiary#ffffff
tertiary-container#f3d9ff
on-tertiary-container#4a0080
error#ff6a00
on-error#ffffff
error-container#ffe8d6
on-error-container#5c2400
primary-fixed#d4f5e8
primary-fixed-dim#b8e6d8
on-primary-fixed#0d5c3a
on-primary-fixed-variant#1a8c5f
secondary-fixed#e8f0ff
secondary-fixed-dim#cce0ff
on-secondary-fixed#001a7a
on-secondary-fixed-variant#0d3db8
tertiary-fixed#f3d9ff
tertiary-fixed-dim#e0b3ff
on-tertiary-fixed#4a0080
on-tertiary-fixed-variant#7a2fb8
background#ffffff
on-background#090909
surface-variant#f0f0f0

Typography

display
fontFamily: kalshiSans, kalshiSans Fallback, sans-serif · fontSize: 60px · fontWeight: 700 · lineHeight: 68px · letterSpacing: -0.04em
headline-lg
fontFamily: kalshiSans, kalshiSans Fallback, sans-serif · fontSize: 40px · fontWeight: 600 · lineHeight: 48px · letterSpacing: -0.02em
headline-md
fontFamily: kalshiSans, kalshiSans Fallback, sans-serif · fontSize: 28px · fontWeight: 600 · lineHeight: 36px · letterSpacing: -0.01em
title-lg
fontFamily: kalshiSans, kalshiSans Fallback, sans-serif · fontSize: 20px · fontWeight: 600 · lineHeight: 28px · letterSpacing: 0em
body-lg
fontFamily: kalshiSans, kalshiSans Fallback, sans-serif · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0em
body-md
fontFamily: kalshiSans, kalshiSans Fallback, sans-serif · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0em
label-md
fontFamily: kalshiSans, kalshiSans Fallback, sans-serif · fontSize: 14px · fontWeight: 600 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: kalshiSans, kalshiSans Fallback, sans-serif · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.02em

Design guidance

Overview

Kalshi is a regulated prediction market exchange that democratizes event-based trading through a data-centric, tech-forward interface. The design system embraces "Vibrant Minimalism"—a philosophy that pairs a clean, white-canvas foundation with strategic bursts of saturated accent colors (emerald green, electric blue, vivid purple) to guide user attention toward actionable trading decisions. The brand serves sophisticated traders and curious newcomers alike, creating an environment where complex financial instruments feel approachable without sacrificing precision. The emotional response is one of clarity and confidence: users should feel empowered to make informed bets on real-world outcomes, not overwhelmed by jargon or visual noise.

The voice is direct, data-driven, and conversational—never patronizing, never breathless. Kalshi speaks in the language of traders and analysts: "35% odds," "$14.2M volume," "Fed decision in September." Sentences are short, active, and outcome-focused. Example: "Trade on anything—from elections to earnings—with real money and real stakes." The brand personality balances authority (we are regulated, we are serious) with accessibility (we make prediction markets fun and transparent).

Colors

The color system is built on a foundation of pure white (surface: #ffffff) and near-black text (on-surface: #090909), creating maximum contrast and readability for data-heavy interfaces. The primary accent is Kalshi's signature emerald green (#28cc95), used exclusively on call-to-action buttons, active states, and key interactive elements—it signals "go, trade, act now." Secondary accents include electric blue (#265cff) for secondary actions and information states, and vivid purple (#aa00ff) for tertiary highlights and status badges. The error state uses a warm orange (#ff6a00) to denote warnings and market-moving alerts without the harshness of pure red.

Surface containers follow a tight grayscale ladder (surface-container-low: #f0f0f0, surface-container: #eeeeee, surface-container-high:

Typography

The type system uses kalshiSans, a custom sans-serif font family optimized for screen legibility and financial data readability. Display (60px, 700 weight, -0.04em letter-spacing) anchors hero sections and major announcements; headline-lg (40px, 600 weight) titles key sections like "Trending" or "Politics"; headline-md (28px, 600 weight) breaks up content into digestible chunks. Body text runs at 16px (body-md, 400 weight, 24px line-height) for standard paragraph copy, with 18px (body-lg) reserved for emphasized content or callouts. Labels (14px, 600 weight, 0.01em letter-spacing) appear on buttons, badges, and form fields to ensure crisp, scannable UI text. The tight letter-spacing on display and headline levels (-0.04em to -0.01em) creates visual density and sophistication, while body te

Layout

The page uses a fluid 12-column grid with a maximum container width of 1280px, allowing content to breathe on desktop while remaining scannable on tablet. The gutter spacing is consistently 24px (md spacing unit), creating a rhythm that feels neither cramped nor wasteful. Section separation uses lg spacing (40px) between major content blocks (hero, trending markets, politics section), while card-to-card spacing within a section uses md spacing (24px). The search bar and primary navigation occupy a fixed header with 24px horizontal padding and 16px vertical padding, keeping the interface anchored as users scroll through market listings. Cards themselves use md padding (24px) internally, with xs spacing (4px) between label and value pairs within data-dense market cards. The white-space philo

Elevation & Depth

Depth in Kalshi's design is achieved through a restrained shadow system that avoids the heavy, dark shadows of traditional material design. The base layer (Level 1) is the white surface itself (rgba(255, 255, 255, 1)) with no shadow. Level 2 (standard cards and containers) uses a soft, spread shadow: box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1), creating a subtle lift without visual heaviness. Level 3 (modals, elevated cards, and hover states) applies a slightly stronger shadow: box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15), which adds depth while maintaining the minimalist aesthetic. Interactive ele

Shapes

The shape philosophy is "Soft-Technical"—rounded corners are used strategically to soften the precision of financial data without introducing organic, playful curves. Buttons and primary interactive elements use the full rounded (100px border-radius), creating pill-shaped affordances that feel modern and clickable. Cards and containers use xl rounding (1.5rem / 24px), which is generous enough to feel friendly but not so extreme as to appear childish. Input fields and secondary interactive elements use full rounding (100px) to match buttons and create visual consistency across the interaction l

Components

Action Elements Buttons are the primary driver of user engagement in a trading interface. The button-primary component uses the signature emerald green (#28cc95) background with white text, 40px height, 8px vertical padding, 12px horizontal padding, and full rounding (100px). On hover, the background shifts to #1fb87d (a darker shade of the primary green) with a 200ms ease-out transition, signaling state change without jarring the user. The button-secondary component is transparent with a 1px outline in outline-variant (#cccccc) and on-surface text; on hover, it gains a light gray background (surface-container-low: #f0f0f0) and maintains the outline. Button-ghost is used for tertiary actions (e.g., "Learn more") and has no background or border by default; on hover, it gains surface-con

Do's and Don'ts

**Do**

  • Do use the primary green (#28cc95) exclusively on call-to-action buttons and active states—it is the brand's signature accent and must never be diluted or overused on secondary elements.
  • Do maintain the white surface as the dominant background; resist the urge to introduce colored backgrounds or gradients that would compete with market data and reduce legibility.
  • Do apply consistent 24px gutter spacing between sections and 40px spacing between major content blocks to create a predictable, scannable rhythm.
  • Do use full rounding (100px) on buttons and inputs to create a cohesive, modern interaction language that feels approachable and clickable.
  • Do pair body text at 16px with 24px line-height for comfortable reading of market descriptions and news snippets; never compress line-height below 1.5x font size.

**Don't**

  • Don't use secondary blue (#265cff) or tertiary purple (#aa00ff) on primary CTAs—these are supporting accents only and will dilute the primary green's visual authority.
  • Don't introduce drop shadows above 0 3px 8px rgba(0, 0, 0, 0.15); heavier shadows create visual clutter and obscure the data-centric aesthetic.
  • Don't apply rounded corners below 0.75rem (12px) on interactive elements like buttons or cards—the shape language must remain clear and intentional.
  • Don't use the outline-variant color (#cccccc) for text or primary UI elements; it is reserved for subtle borders and dividers only.
  • Don't exceed 1280px container width even on ultra-wide displays; the fixed width maintains focus and prevents market data from becoming overwhelming.