Design Specification — Steep: AI analytics for faster insights and zero chaos
| Field | Value |
| Site / Project | https://steep.app |
| Analyzed on | 2026-08-04 |
| Analysis mode | Automated code extraction (no AI) |
Overview
This design system was extracted programmatically from the source page. It is built on a light canvas (#FFFFFF), ink text (#000000), a vivid accent (#194168). Display headings use a distinct face (ui-serif, Georgia, serif) over the body stack (var(--font-serif)). Detected font weights: 100, 400, 450, 480, 500. Detected style signatures: gradient-rich / aurora; technical / mono accents.
Logo asset(s): https://steep.app/images/customers/logos/voi.svg · https://steep.app/images/customers/logos/framer.svg
Color System
Detected palette (by frequency)
| Hex | RGB | HSL | Count |
#000000 | 0, 0, 0 | 0° 0% 0% | 37 |
#FFFFFF | 255, 255, 255 | 0° 0% 100% | 28 |
#17191C | 23, 25, 28 | 216° 10% 10% | 11 |
#121212 | 18, 18, 18 | 0° 0% 7% | 6 |
#F7F7F8 | 247, 247, 248 | 240° 7% 97% | 5 |
#0E172B | 14, 23, 43 | 221° 51% 11% | 4 |
#1A1A1A | 26, 26, 26 | 0° 0% 10% | 4 |
#222222 | 34, 34, 34 | 0° 0% 13% | 4 |
#D3E3FC | 211, 227, 252 | 217° 87% 91% | 4 |
#D8EFDF | 216, 239, 223 | 138° 42% 89% | 4 |
#FBE1D1 | 251, 225, 209 | 23° 84% 90% | 4 |
#1F4720 | 31, 71, 32 | 122° 39% 20% | 4 |
#5D2A1A | 93, 42, 26 | 14° 56% 23% | 4 |
#194168 | 25, 65, 104 | 210° 61% 25% | 4 |
#2F6FE5 | 47, 111, 229 | 219° 78% 54% | 3 |
#F8F5E2 | 248, 245, 226 | 52° 61% 93% | 3 |
#4C4C4C | 76, 76, 76 | 0° 0% 30% | 3 |
#4D2F87 | 77, 47, 135 | 260° 48% 36% | 3 |
#0A172B | 10, 23, 43 | 216° 62% 10% | 2 |
#2D3034 | 45, 48, 52 | 214° 7% 19% | 2 |
Assigned roles
Roles are taken from the page's own semantic CSS custom properties when present, otherwise inferred from usage frequency + luminance/saturation.
| Token | Hex | RGB | HSL |
--color-primary | #5D2A1A | 93, 42, 26 | 14° 56% 23% |
--color-accent | #194168 | 25, 65, 104 | 210° 61% 25% |
--color-background | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-surface | #F7F7F8 | 247, 247, 248 | 240° 7% 97% |
--color-text-primary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-secondary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-text-secondary | #D3E3FC | 211, 227, 252 | 217° 87% 91% |
--color-border | #D8EFDF | 216, 239, 223 | 138° 42% 89% |
--color-on-primary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-on-secondary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-on-accent | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
Surface ramp (derived from detected light neutrals)
| Token | Hex |
--color-surface-container-lowest | #FFFFFF |
--color-surface-container-low | #FAFAFB |
--color-surface-container | #F7F7F8 |
--color-surface-container-high | #F2F2F3 |
--color-surface-container-highest | #F0F1F2 |
Gradients
linear-gradient(in lab,red,red))
> 1 additional gradient definitions were framework utility templates (unresolvable var(--tw-gradient-stops)) and were omitted.
Typography
Primary typeface: var(--font-serif) — stack: var(--font-serif)
Display / heading typeface: ui-serif, Georgia, serif (used for large headings; body uses the primary stack)
Font stacks (most used first)
var(--font-serif)
Sohne
var(--font-sans)
var(--font-mono)
Signifier
var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji")
var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace)
Derived type scale
| Token | Size |
| display | 90px |
| headline-lg | 40px |
| headline-md | 30px |
| title-lg | 20px |
| body-md | 16px |
| label-md | 14px |
Font sizes (by frequency)
| Size | Count |
| 30px | 4 |
| 36px | 3 |
| 24px | 2 |
| 15px | 2 |
| 38px | 2 |
| 40px | 2 |
| 44px | 2 |
| 50px | 2 |
| 48px | 2 |
| 52px | 2 |
| 56px | 2 |
| 60px | 2 |
| 88px | 2 |
| 1em | 1 |
| 1.2rem | 1 |
| 1.55rem | 1 |
| 14px | 1 |
| 16px | 1 |
| 20px | 1 |
| 90px | 1 |
Weights in use: 100, 400, 450, 480, 500
Line heights (by frequency)
| Value | Count |
| 1 | 3 |
| 1.1 | 2 |
| 18px | 1 |
| 20px | 1 |
| 21px | 1 |
| 23px | 1 |
| 25px | 1 |
| 27px | 1 |
| 29px | 1 |
| 32px | 1 |
Letter spacing (by frequency)
| Value | Count |
| -.02em | 1 |
| -.04rem | 1 |
| -.015em | 1 |
| -.015rem | 1 |
Spacing
Borders & Radius
Derived radius tokens
| Token | Value |
| sm | 3px |
| md | 8px |
| lg | 24px |
Raw values (resolved, by frequency)
| Radius | Count |
1.5rem | 6 |
1rem | 5 |
.75rem | 3 |
0 | 2 |
.375rem | 2 |
.25rem | 1 |
20px | 1 |
3.40282e+38px | 1 |
.5rem | 1 |
10px | 1 |
3px | 1 |
Layout
Container max-width: 900px
Grid columns (largest detected grid): 6
Breakpoints
- 480px
- 40rem
- 48rem
- 64rem
- 80rem
- 96rem
Animation & Motion
Transitions
Easing curves
cubic-bezier(0,0,.2,1)
cubic-bezier(.4,0,.2,1)
cubic-bezier(.4,0,.2,1)
var(--tw-ease,var(--default-transition-timing-function))
cubic-bezier(.25,.1,.25,1)
ease
var(--ease-in-out)
var(--ease-out)
Keyframes
@keyframes sweep { 0%{transform:scaleY(.3)}to{transform:scaleY(1)} }
@keyframes progressFill { 0%{width:0}to{width:100%} }
@keyframes arrow-slide-frames { 0%{transform:translate(0)}50%{transform:translate(100%)}51%{transform:translate(-100%)}to{transform:translate(0)} }
@keyframes fade-in { 0%{opacity:0}to{opacity:1} }
@keyframes fade-in-y { 0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)} }
@keyframes carousel-scroll { 0%{transform:translate(0)}to{transform:translate3d(calc(var(--list-width)*-1),0,0)} }
Animations
arrow-slide-frames .25s ease-in-out
fade-in-y .5s ease-out forwards
carousel-scroll 50s linear infinite
Components
Extracted from the page's own interactive elements (classes → resolved CSS values).
button-primary — sample text: “AI”
| Property | Value |
| fontSize | 14px |
| padding | 18px 0 |
| transition | color, background-color, border-color 200ms cubic-bezier(0.4, 0, 0.2, 1) |
button-secondary — sample text: “Explore”
| Property | Value |
| fontSize | 14px |
| padding | 18px 0 |
| transition | color, background-color, border-color 200ms cubic-bezier(0.4, 0, 0.2, 1) |
navigation-link
| Property | Value |
| padding | 6px 0 |
badge
| Property | Value |
| fontSize | 12px |
| rounded | 9999px |
| padding | 0 14px |
| transition | color, background-color, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1) |
| textColor (hover) | #888 |
Source Design Tokens (CSS custom properties)
:root {
--color-black: #000;
--color-white: #fff;
--spacing: .25rem;
--container-sm: 24rem;
--container-md: 28rem;
--container-lg: 32rem;
--container-2xl: 42rem;
--container-3xl: 48rem;
--container-5xl: 64rem;
--tracking-tight: -.025em;
--tracking-wider: .05em;
--leading-tight: 1.25;
--leading-snug: 1.375;
--leading-normal: 1.5;
--leading-loose: 2;
--radius-md: .375rem;
--radius-lg: .5rem;
--radius-xl: .75rem;
--radius-2xl: 1rem;
--radius-3xl: 1.5rem;
--drop-shadow-xl: 0 9px 7px #0000001a;
--drop-shadow-2xl: 0 25px 25px #00000026;
--ease-out: cubic-bezier(0,0,.2,1);
--ease-in-out: cubic-bezier(.4,0,.2,1);
--blur-sm: 8px;
--blur-md: 12px;
--blur-lg: 16px;
--blur-xl: 24px;
--default-transition-duration: .15s;
--default-transition-timing-function: cubic-bezier(.4,0,.2,1);
--default-font-family: var(--font-sans);
--default-mono-font-family: var(--font-mono);
--font-sans: Sohne,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
--font-serif: Signifier,ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;
--font-mono: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
--font-weight-normal: 400;
--font-weight-book: 430;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--text-3xs: 12px;
--text-3xs--line-height: 18px;
--text-2xs: 14px;
--text-2xs--line-height: 20px;
--text-xs: 16px;
--text-xs--line-height: 21px;
--text-sm: 17px;
--text-sm--line-height: 23px;
--text-base: 18px;
--text-base--line-height: 25px;
--text-lg: 20px;
--text-lg--line-height: 27px;
--text-xl: 22px;
--text-xl--line-height: 29px;
--text-2xl: 24px;
--text-2xl--line-height: 32px;
--text-3xl: 28px;
--text-4xl: 32px;
--text-4xl--line-height: 36px;
--text-5xl: 36px;
--text-5xl--line-height: 42px;
}
Do's and Don'ts
Do
- Do reserve the accent
#194168 for interactive highlights and key moments — it is used sparingly on the source page.
- Do keep the canvas at
#FFFFFF; surfaces should stay within the detected neutral ramp.
- Do set large headings in
ui-serif, Georgia, serif with tight tracking (-.02em), and body copy in the primary stack.
- Do stick to the detected font weight(s): 100, 400, 450, 480, 500.
Don't
- Don't introduce colors outside the detected palette — every hue above was found in the source.
- Don't add drop shadows; the source page relies on borders and surface shifts for depth, not elevation.
Design Tokens (copy-paste)
:root {
--color-primary: #5D2A1A;
--color-accent: #194168;
--color-background: #FFFFFF;
--color-surface: #F7F7F8;
--color-text-primary: #000000;
--color-secondary: #000000;
--color-text-secondary: #D3E3FC;
--color-border: #D8EFDF;
--color-on-primary: #FFFFFF;
--color-on-secondary: #FFFFFF;
--color-on-accent: #FFFFFF;
--color-surface-container-lowest: #FFFFFF;
--color-surface-container-low: #FAFAFB;
--color-surface-container: #F7F7F8;
--color-surface-container-high: #F2F2F3;
--color-surface-container-highest: #F0F1F2;
--font-sans: var(--font-serif);
--font-size-display: 90px;
--font-size-headline-lg: 40px;
--font-size-headline-md: 30px;
--font-size-title-lg: 20px;
--font-size-body-md: 16px;
--font-size-label-md: 14px;
--radius-sm: 3px;
--radius-md: 8px;
--radius-lg: 24px;
--font-display: ui-serif, Georgia, serif;
--tracking-display: -.02em;
--container-max: 900px;
}