Design Direction
This system is built around the physical experience of alpine skiing: speed, cold air, high contrast between white snow and deep sky, the sharp geometry of groomed piste markers. It is not a cozy chalet aesthetic. It is the on-mountain operational layer: lift tickets, trail maps, race timing boards, app interfaces. Everything is legible at a glance, styled with a performance-sport directness that keeps ornament to zero.
Colour Strategy
The primary is a deep glacier blue, the kind you see in aerial shots of high-altitude snowfields. The secondary shifts slightly toward a cleaner ice-cyan, keeping the palette in tight analogous territory for visual cohesion. The accent is a sharp alpine red, borrowed from race-course gate flags and ski patrol jackets. It is the only warm note in an otherwise cold system, which makes it land hard wherever it appears.
Typography Strategy
Big Shoulders Display at 800 weight with open tracking is a condensed sans built for impact. It has the bold, athletic energy of race bibs and mountain resort signage. Barlow in the body is a slightly condensed humanist sans that reads efficiently at paragraph length without being clinical. The 1.414 scale ratio creates dramatic size jumps between heading levels, reinforcing the vertical, altitude-driven nature of the concept.
Colour Palette
primary
#3c8cdd
secondary
#48aed1
accent
#ed2c3c
neutral
#888c91
success
#20c58e
warning
#d49a11
error
#c52e20
info
#2065c5
Typography
Design is intelligence made visible
Great typography is the foundation of great design. The pairing of heading and body typefaces creates a visual hierarchy that guides the reader through content with clarity and purpose, while expressing personality at every level.
Selection colour · highlighted text looks like this · try selecting any text on this page
Spacing
4px base unit · balanced density
Border radius
none
0px
sm
2px
md
5px
lg
10px
xl
16px
full
9999px
Elevation
Shadows
0 1px 2px rgba(60, 140, 221, 0.04)
0 2px 4px rgba(60, 140, 221, 0.06)
0 4px 8px rgba(60, 140, 221, 0.08)
Texture
dots · opacity 1 · normal blend
Grid
balanced · 12 columns · 24px gutter · 40px margin · 1280px max
Motion
Hover, click, and interact to see the motion tokens in action.
50ms
100ms
180ms
250ms
400ms
Easings
Hover states, colour changes, most transitions
cubic-bezier(0.2, 0, 0, 1)
Elements appearing - modals, dropdowns, toasts
cubic-bezier(0, 0, 0.2, 1)
Elements leaving - dismissals, close animations
cubic-bezier(0.4, 0, 1, 1)
Playful feedback - toggles, badges, confirmations
cubic-bezier(0.34, 1.56, 0.64, 1)
Physics-based - drag, gestures, elastic effects
cubic-bezier(0.22, 1.2, 0.36, 1)
Iconography
Icon style derived from the system's personality, mood, and visual tokens.
Recommended library
Material Symbols
Comprehensive icon system with variable weight and fill
Browse Material Symbols ↗Also consider Lucide — Clean geometric icons with consistent stroke weight
Stroke weight
1.5px
Matches border width (1px)
Corner rounding
2px
Use for icon containers
Icon set preview (default) — 1.5px stroke
Size scale
xs
12px
sm
16px
md
20px
lg
24px
xl
32px
On colour
primary
secondary
accent
muted
error
success
ComponentsPro
Component showcase is a Pro feature
Upgrade to see fully themed buttons, inputs, cards, badges, and more - all wired to this system's tokens.
PatternsPro
Patterns are a Pro feature
Upgrade to see fully themed form layouts, empty states, loading skeletons, and error handling - all built with this system's tokens.
Export
:root {
/* ─── Colors: Primary ─── */
--color-primary-50: #f6f7f9;
--color-primary-100: #e9edf1;
--color-primary-200: #d0deec;
--color-primary-300: #a0c7ee;
--color-primary-400: #74ade7;
--color-primary-500: #3c8cdd;
--color-primary-600: #2273c3;
--color-primary-700: #1c5ea0;
--color-primary-800: #2b4a69;
--color-primary-900: #2a3641;
--color-primary-950: #1c242b;
/* ─── Colors: Secondary ─── */
--color-secondary-50: #f6f8f9;
--color-secondary-100: #eaeff0;
--color-secondary-200: #d2e4ea;
--color-secondary-300: #a6d8e8;
--color-secondary-400: #7dc6de;
--color-secondary-500: #48aed1;
--color-secondary-600: #2e95b7;
--color-secondary-700: #267a96;
--color-secondary-800: #305764;
--color-secondary-900: #2c3a3f;
--color-secondary-950: #1d272a;
/* ─── Colors: Accent ─── */
--color-accent-50: #f9f5f6;
--color-accent-100: #f2e9e9;
--color-accent-200: #efcdd0;
--color-accent-300: #f698a0;
--color-accent-400: #f26974;
--color-accent-500: #ed2c3c;
--color-accent-600: #d31222;
--color-accent-700: #ae0f1c;
--color-accent-800: #6f252b;
--color-accent-900: #43282a;
--color-accent-950: #2d1b1c;
/* ─── Colors: Neutral ─── */
--color-neutral-50: #f7f7f8;
--color-neutral-100: #ecedee;
--color-neutral-200: #dddedf;
--color-neutral-300: #c5c7c9;
--color-neutral-400: #aaadb1;
--color-neutral-500: #888c91;
--color-neutral-600: #6e7377;
--color-neutral-700: #5b5e62;
--color-neutral-800: #474a4d;
--color-neutral-900: #333638;
--color-neutral-950: #222425;
/* ─── Colors: Semantic ─── */
--color-success: #20c58e;
--color-success-light: #eff6f3;
--color-warning: #d49a11;
--color-warning-light: #f7f4ee;
--color-error: #c52e20;
--color-error-light: #f6efef;
--color-info: #2065c5;
--color-info-light: #eff2f6;
/* ─── Colors: Surface ─── */
--color-background: #fafafa;
--color-foreground: #17191c;
--color-card: #FFFFFF;
--color-card-foreground: #17191c;
--color-muted: #f2f2f3;
--color-muted-foreground: #61666b;
--color-border: #e4e6e7;
--color-input: #dfe1e2;
--color-ring: #478cd1;
/* ─── Typography ─── */
--font-heading: Big Shoulders Display, sans-serif;
--font-body: Barlow, sans-serif;
--font-mono: JetBrains Mono, monospace;
/* ─── Spacing ─── */
--space-lg: 24px;
--space-md: 16px;
--space-sm: 8px;
--space-xl: 32px;
--space-xs: 4px;
--space-2xl: 48px;
--space-3xl: 64px;
--space-4xl: 96px;
/* ─── Border Radius ─── */
--radius-lg: 10px;
--radius-md: 5px;
--radius-sm: 2px;
--radius-xl: 16px;
--radius-full: 9999px;
--radius-none: 0px;
/* ─── Shadows ─── */
--shadow-low: 0 1px 2px rgba(60, 140, 221, 0.04);
--shadow-mid: 0 2px 4px rgba(60, 140, 221, 0.06);
--shadow-high: 0 4px 8px rgba(60, 140, 221, 0.08);
/* ─── Motion ─── */
--duration-micro: 50ms;
--duration-fast: 100ms;
--duration-normal: 180ms;
--duration-slow: 250ms;
--duration-glacial: 400ms;
--easing-default: cubic-bezier(0.2, 0, 0, 1);
--easing-entrance: cubic-bezier(0, 0, 0.2, 1);
--easing-exit: cubic-bezier(0.4, 0, 1, 1);
--easing-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
--easing-spring: cubic-bezier(0.22, 1.2, 0.36, 1);
/* ─── Elevation ─── */
--elevation-sunken: #eff0f0;
--elevation-base: #fafafa;
--elevation-raised: #FFFFFF;
--elevation-floating: #FFFFFF;
--elevation-overlay: #fcfcfd;
/* ─── Component Scale (balanced) ─── */
--comp-padding-x: 16px;
--comp-padding-y: 10px;
--comp-gap: 10px;
--comp-border-width: 1px;
--comp-font-size: 14px;
--comp-input-height: 40px;
--comp-button-height: 40px;
--comp-icon-size: 16px;
/* ─── Grid (balanced) ─── */
--grid-columns: 12;
--grid-gutter: 24px;
--grid-margin: 40px;
--grid-max-width: 1280px;
/* ─── Selection ─── */
--selection-bg: #d0deec;
--selection-fg: #2a3641;
}Brand Guidelines
Standalone HTML, print to PDF. Colours, typography, spacing, all in one page.
Presentation Deck
PPTX template with palette, typography, and blank slides in your brand.
Figma Tokens
JSON for Tokens Studio plugin. Import colours, type, spacing straight into Figma.
PDF Brand Guide
Full brand guidelines as a real PDF file. Colours and typography rendered exactly.
AI Skill
System prompt you can paste into Cursor or any AI tool to generate on-brand UI instantly.