0

Oura

awesome-design-mdMedia & Consumer Tech

Smart ring wellness brand. Warm paper cream, editorial serif, earth-tone accents

View source

Sign in to save downloads to your library and vote.

Preview

Metadata (frontmatter)
version: alpha
name: Oura Analysis
description: An analysis of Oura's design language — a warm-paper wellness system that pairs a high-contrast Editorial serif with a quiet grotesque sans, wraps every surface in a cream-and-earth palette drawn from mustard, clay and olive, and drives conversion with a single decisive action blue against otherwise calm, photography-led layouts.

colors:
  primary: "#2a72de"
  on-primary: "#ffffff"
  stone: "#4a4741"
  on-stone: "#ffffff"
  clay: "#6b443d"
  espresso: "#39221e"
  gold: "#af751b"
  ochre: "#bc924c"
  gold-soft: "#ddaa61"
  gold-pale: "#ddbe78"
  gold-deep: "#684d07"
  forest: "#224228"
  olive: "#5c6f5d"
  sage: "#849671"
  sage-mute: "#7b886d"
  sage-pale: "#ced4b8"
  canvas: "#f7f1e8"
  surface: "#ffffff"
  surface-grey: "#ececec"
  silver: "#cccac7"
  ink-band: "#000000"
  ink-band-soft: "#19191c"
  ink: "#1c1b1a"
  ash: "#838280"
  mute: "#a8a5a0"
  on-dark: "#ffffff"
  hairline: "#e1dcd3"
  error: "#e33a22"

typography:
  display:
    fontFamily: Editorial New
    fontSize: 110px
    fontWeight: 300
    lineHeight: 1.05
    letterSpacing: 0
  display-2:
    fontFamily: Editorial New
    fontSize: 80px
    fontWeight: 300
    lineHeight: 1.1
    letterSpacing: 0
  heading-1:
    fontFamily: Editorial New
    fontSize: 68px
    fontWeight: 300
    lineHeight: 1.1
    letterSpacing: 0
  heading-2:
    fontFamily: Editorial New
    fontSize: 40px
    fontWeight: 300
    lineHeight: 1.15
    letterSpacing: 0
  heading-3:
    fontFamily: AkkuratLL
    fontSize: 40px
    fontWeight: 400
    lineHeight: 1.25
    letterSpacing: 0
  title:
    fontFamily: AkkuratLL
    fontSize: 32px
    fontWeight: 400
    lineHeight: 1.25
    letterSpacing: 0
  lead:
    fontFamily: Editorial New
    fontSize: 24px
    fontWeight: 100
    lineHeight: 1.25
    letterSpacing: 0
  body-lg:
    fontFamily: AkkuratLL
    fontSize: 20px
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: 0
  body:
    fontFamily: AkkuratLL
    fontSize: 18px
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: 0
  body-sm:
    fontFamily: AkkuratLL
    fontSize: 16px
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: 0
  button:
    fontFamily: AkkuratLL
    fontSize: 16px
    fontWeight: 600
    lineHeight: 1
    letterSpacing: 0
  ui:
    fontFamily: AkkuratLL
    fontSize: 14px
    fontWeight: 400
    lineHeight: 1.4
    letterSpacing: 0
  caption:
    fontFamily: AkkuratLL
    fontSize: 13px
    fontWeight: 400
    lineHeight: 1.4
    letterSpacing: 0
  eyebrow:
    fontFamily: AkkuratLL
    fontSize: 12px
    fontWeight: 700
    lineHeight: 1.2
    letterSpacing: 1px

rounded:
  none: 0px
  xs: 4px
  sm: 8px
  md: 12px
  lg: 24px
  xl: 40px
  full: 9999px

spacing:
  xxs: 4px
  xs: 8px
  sm: 12px
  md: 16px
  lg: 24px
  xl: 32px

components:
  # ─── Brand-native components (extracted) ───
  nav-bar:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.stone}"
    typography: "{typography.ui}"
    rounded: "{rounded.none}"

  announcement-bar:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.ink}"
    typography: "{typography.eyebrow}"
    rounded: "{rounded.none}"

  hero:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.ink}"
    typography: "{typography.display}"
    rounded: "{rounded.none}"

  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "{colors.on-primary}"
    typography: "{typography.button}"
    rounded: "{rounded.full}"

  button-secondary:
    backgroundColor: "{colors.stone}"
    textColor: "{colors.on-stone}"
    typography: "{typography.button}"
    rounded: "{rounded.full}"

  button-on-dark:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.stone}"
    typography: "{typography.button}"
    rounded: "{rounded.full}"

  button-outline:
    backgroundColor: "{colors.ink-band}"
    textColor: "{colors.on-dark}"
    borderColor: "{colors.on-dark}"
    typography: "{typography.button}"
    rounded: "{rounded.full}"

  button-outline-stone:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.stone}"
    borderColor: "{colors.stone}"
    typography: "{typography.button}"
    rounded: "{rounded.full}"

  button-icon-circular:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.stone}"
    borderColor: "{colors.hairline}"
    rounded: "{rounded.full}"

  text-input:
    backgroundColor: "{colors.stone}"
    textColor: "{colors.on-stone}"
    typography: "{typography.body-sm}"
    rounded: "{rounded.md}"

  text-input-focused:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    borderColor: "{colors.error}"
    typography: "{typography.body-sm}"
    rounded: "{rounded.md}"

  feature-card:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    borderColor: "{colors.hairline}"
    typography: "{typography.body}"
    rounded: "{rounded.lg}"
    padding: "{spacing.lg}"

  feature-card-elevated:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.ink}"
    typography: "{typography.body}"
    rounded: "{rounded.lg}"
    padding: "{spacing.lg}"

  product-card:
    backgroundColor: "{colors.surface-grey}"
    textColor: "{colors.ink}"
    typography: "{typography.body}"
    rounded: "{rounded.xl}"

  person-card:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.ink}"
    typography: "{typography.body-sm}"
    rounded: "{rounded.lg}"

  stat-badge:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.stone}"
    typography: "{typography.title}"
    rounded: "{rounded.full}"

  pill-tab:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.stone}"
    borderColor: "{colors.silver}"
    typography: "{typography.ui}"
    rounded: "{rounded.full}"

  eyebrow-label:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.ink}"
    typography: "{typography.eyebrow}"
    rounded: "{rounded.none}"

  news-card:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.ink}"
    typography: "{typography.body}"
    rounded: "{rounded.lg}"
    padding: "{spacing.lg}"

  footer:
    backgroundColor: "{colors.ink-band-soft}"
    textColor: "{colors.on-dark}"
    typography: "{typography.body-sm}"
    rounded: "{rounded.none}"

  # ─── Examples (illustrative, kit-mirror) ───
  # (derived in Step 7.5 by scripts/derive-examples-block.mjs)

  ex-pricing-tier:
    description: "Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface."
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    borderColor: "{colors.hairline}"
    rounded: "{rounded.lg}"
    padding: "{spacing.lg}"
  ex-pricing-tier-featured:
    description: "Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode)."
    backgroundColor: "{colors.ink}"
    textColor: "{colors.on-primary}"
    rounded: "{rounded.lg}"
    padding: "{spacing.lg}"
  ex-product-selector:
    description: "Color/size picker chrome — fashion / DTC variant selector."
    backgroundColor: "{colors.surface}"
    rounded: "{rounded.lg}"
    padding: "{spacing.md}"
  ex-cart-drawer:
    description: "Shopping cart drawer — DTC / fashion brand actual cart chrome."
    backgroundColor: "{colors.surface}"
    rounded: "{rounded.lg}"
    padding: "{spacing.lg}"
    item-divider: "{colors.hairline}"
  ex-app-shell-row:
    description: "Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator."
    backgroundColor: "{colors.canvas}"
    activeIndicator: "{colors.primary}"
    rounded: "{rounded.sm}"
    padding: "{spacing.sm} {spacing.md}"
  ex-data-table-cell:
    description: "Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm."
    headerBackground: "{colors.surface}"
    headerTypography: "{typography.eyebrow}"
    bodyTypography: "{typography.body-sm}"
    cellPadding: "{spacing.sm} {spacing.md}"
    rowBorder: "{colors.hairline}"
  ex-auth-form-card:
    description: "Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside."
    backgroundColor: "{colors.surface}"
    rounded: "{rounded.lg}"
    padding: "{spacing.lg}"
  ex-modal-card:
    description: "Modal dialog surface — same chrome as feature-card with elevated shadow."
    backgroundColor: "{colors.surface}"
    rounded: "{rounded.lg}"
    padding: "{spacing.lg}"
  ex-empty-state-card:
    description: "Empty-state illustration frame."
    backgroundColor: "{colors.surface}"
    rounded: "{rounded.lg}"
    padding: "{spacing.xl}"
    captionTypography: "{typography.body}"
  ex-toast:
    description: "Toast notification surface — feature-card shape + medium shadow."
    backgroundColor: "{colors.surface}"
    rounded: "{rounded.lg}"
    padding: "{spacing.sm} {spacing.md}"
    typography: "{typography.body-sm}"

Overview

Oura's web presence reads like a printed field journal that learned to breathe. The default surface is a warm paper cream ({colors.canvas} — #f7f1e8) rather than white, and everything sits on it with generous air: a light, high-contrast serif for the big statements, a calm grotesque sans for everything you actually read, and full-bleed lifestyle photography that carries most of the emotional weight. Where a typical wellness-tech site would reach for gradients and glassmorphism, Oura reaches for restraint — flat fills, hairline rules, and long vertical silences between sections.

The system runs three surface "worlds." The cream world ({colors.canvas}) is home base for marketing and editorial content. The ink world ({colors.ink-band} / {colors.ink-band-soft}) is a near-black stage reserved for the footer and the "In the News" band, where cream cards float like clippings on a dark table. The silver world ({colors.surface-grey} → {colors.silver}) is a cool, machined grey gradient used only on the product-showcase pages, where the ring is photographed like jewellery.

Color discipline is the signature move. The whole palette is earth-toned — mustard and gold ({colors.gold}, {colors.ochre}), clay and espresso ({colors.clay}, {colors.espresso}), olive and sage ({colors.forest}, {colors.sage}) — and these appear as accent bands, illustration, and score/data-visualisation, never as buttons. Buttons carry a single, deliberate exception: action blue ({colors.primary} — #2a72de), used only for the decisive conversion moments ("Explore", "Shop All Products"). The warm brand neutral {colors.stone} (#4a4741) does the quieter work — the wordmark, editorial pills, form fields, outlines, and links — so the blue never has to compete.

Key Characteristics:

  • Warm-paper canvas ({colors.canvas}) as the default surface, not white — cream is the brand's resting state.
  • A two-typeface voice: {typography.display} (Editorial New, a light high-contrast serif) for headlines, {typography.body} (AkkuratLL, a neutral grotesque) for reading.
  • One decisive action blue ({colors.primary}) reserved strictly for primary CTAs; every other button is warm-neutral {colors.stone} or cream.
  • An earth-tone accent family — mustard, clay, olive — used for bands, illustration and data-viz, deliberately kept off buttons.
  • Fully-rounded pill buttons ({rounded.full}) against softly-rounded cards ({rounded.lg}) and large-radius product images ({rounded.xl}).
  • Three surface worlds cycling in a predictable rhythm: cream editorial → black news/footer band → silver product stage.
  • Photography-first hierarchy: full-bleed imagery leads, UI recedes to hairlines and quiet labels.

Colors

Source pages analysed: the homepage, the Oura Ring 5 store page, the Activity & Movement page, and the Clinical & Science Experts page. The palette below reconciles all four into one system.

Brand & Accent

  • Action Blue ({colors.primary} — #2a72de): the single conversion color. Fills the primary CTA pill ("Explore", "Shop All Products") with {colors.on-primary} text. Used nowhere else — not for links, not for accents.
  • Stone ({colors.stone} — #4a4741): the warm taupe-brown brand neutral. Carries the wordmark, secondary/editorial pill buttons, form-field fills, circular-icon outlines, and default link color. This is the color that makes Oura feel "Oura."
  • Clay ({colors.clay} — #6b443d): a warm reddish-brown used for accent bands and content cards (e.g., the Activity page's "Your Oura Activity Score" band).
  • Espresso ({colors.espresso} — #39221e): the darkest brown, for deep accent fills and rich text on gold surfaces.
  • Gold ({colors.gold} — #af751b) / Ochre ({colors.ochre} — #bc924c) / Gold Soft ({colors.gold-soft} — #ddaa61) / Gold Pale ({colors.gold-pale} — #ddbe78) / Gold Deep ({colors.gold-deep} — #684d07): the mustard ramp. Powers warm illustration, the activity-ring dashboard card, and score data-visualisation.
  • Forest ({colors.forest} — #224228) / Olive ({colors.olive} — #5c6f5d) / Sage ({colors.sage} — #849671) / Sage Mute ({colors.sage-mute} — #7b886d) / Sage Pale ({colors.sage-pale} — #ced4b8): the olive ramp, used for calm accent bands, illustration, and secondary data-visualisation.

Surface

  • Canvas ({colors.canvas} — #f7f1e8): the signature warm-paper background for all editorial and marketing surfaces.
  • Surface ({colors.surface} — #ffffff): pure white, for elevated cards, inputs-on-cream, and the circular "+" overlay buttons on person cards.
  • Surface Grey ({colors.surface-grey} — #ececec): the light end of the product-page gradient and light utility fills.
  • Silver ({colors.silver} — #cccac7): the cool grey used on product-showcase pages and as the selected-tab border.
  • Ink Band ({colors.ink-band} — #000000): the true-black stage for the footer / news band.
  • Ink Band Soft ({colors.ink-band-soft} — #19191c): the near-black used for the footer surface, a hair warmer than pure black.
  • Hairline ({colors.hairline} — #e1dcd3): the warm 1px divider on cream (a low-opacity ink wash blended onto canvas).

Text

  • Ink ({colors.ink} — #1c1b1a): primary heading and body text on cream.
  • Stone ({colors.stone} — #4a4741): secondary text and editorial emphasis on cream.
  • Ash ({colors.ash} — #838280): muted grey for meta text, titles-under-names, and utility captions.
  • Mute ({colors.mute} — #a8a5a0): warm grey for the quietest captions and for secondary text on dark bands.
  • On Dark ({colors.on-dark} — #ffffff): text and icons on the ink and silver worlds.

Semantic

  • Error ({colors.error} — #e33a22): validation and focus-error state on form fields (the focused email field border).

Typography

Font Family

Two families carry the entire system, and the tension between them is the point.

  • Editorial New ({typography.display}, {typography.heading-1}, {typography.heading-2}, {typography.lead}): a light, high-contrast transitional serif used for display headlines, section titles, and the occasional light-serif lead paragraph. Weights run thin — 100 and 300 — so the large sizes read as elegant, not heavy. The Activity page shows it in italic ("move count") for a hand-set editorial flourish.
  • AkkuratLL ({typography.heading-3} through {typography.caption}): a neutral Swiss grotesque that does all the real reading work — subheads, body, UI labels, buttons, captions. Weights 300 / 400 / 600 / 700.

Hierarchy

TokenFamilySizeWeightLine HeightUse
{typography.display}Editorial New110px3001.05Homepage hero headline ("Subtle. Power.")
{typography.display-2}Editorial New80px3001.1Secondary-page display headlines
{typography.heading-1}Editorial New68px3001.1Large page titles
{typography.heading-2}Editorial New40px3001.15Section headlines
{typography.heading-3}AkkuratLL40px4001.25Sans section headings / large stats
{typography.title}AkkuratLL32px4001.25Card titles, sub-section titles
{typography.lead}Editorial New24px1001.25Light-serif intro / lead paragraphs
{typography.body-lg}AkkuratLL20px4001.5Emphasised body copy
{typography.body}AkkuratLL18px4001.5Default body text
{typography.body-sm}AkkuratLL16px4001.5Dense body, links, form text
{typography.button}AkkuratLL16px6001Button labels
{typography.ui}AkkuratLL14px4001.4Nav links, tabs, utility UI
{typography.caption}AkkuratLL13px4001.4Captions, footnotes
{typography.eyebrow}AkkuratLL12px7001.2Small-caps overlines ("IN THE NEWS", "FEATURED ARTICLE")

Principles

  • Serif for feeling, sans for facts. {typography.display} and its siblings appear only at large sizes where the high stroke contrast is legible and expressive; everything at reading scale is {typography.body}.
  • Thin display weights. Big serif headlines lean on weight 100–300, so scale — not boldness — creates hierarchy.
  • Quiet overlines. Section context is set with {typography.eyebrow} (uppercase, lightly tracked) rather than heavy kickers.

Note on Font Substitutes

Both faces are proprietary. For open-source builds, substitute Editorial New with Fraunces or Newsreader (both high-contrast serifs — set optical size high and weight low to match the thin display feel), and AkkuratLL with Inter or Hanken Grotesk (neutral grotesques with similar x-height). When substituting, nudge display line-height up slightly (Fraunces runs a touch taller than Editorial New) and keep body tracking at 0.

Layout

Spacing System

  • Base unit: 8px.
  • Tokens: {spacing.xxs} 4px · {spacing.xs} 8px · {spacing.sm} 12px · {spacing.md} 16px · {spacing.lg} 24px · {spacing.xl} 32px.
  • Card interiors sit at {spacing.lg}; tight utility groupings (form padding, chip padding) at {spacing.sm}–{spacing.md}. Section-to-section rhythm is deliberately large — long vertical gaps of blank cream separate content blocks, letting photography and headlines breathe.

Grid & Container

  • Content is center-constrained within a wide max-width, with full-bleed photography breaking out to the viewport edges.
  • Card grids run 3-up (person cards, benefit trios) and 4-up (news / expert carousels), collapsing toward 1-up on narrow screens.
  • The product page alternates centered single-column showcases with edge-to-edge media.

Whitespace Philosophy

Empty cream is a design element, not leftover space. Large silences between sections group related content and pace the scroll like chapters. UI chrome stays minimal so the eye rests on imagery and headlines.

Responsive Strategy

Breakpoints

NameWidthKey Changes
Desktop≥ 1280pxFull multi-column grids, horizontal nav, large display type
Laptop1024–1279pxSlightly tightened gutters, same structure
Tablet768–1023px4-up grids → 2-up, nav begins to condense
Mobile≤ 767pxSingle-column stacks, hamburger nav, display type scales down (110px → ~48px), pill CTAs go full-width-ish

(Breakpoint ladder observed in the extracted media-query data spans 1280 → 1024 → 896 → 768 → 600 → 480 → 320px.)

Touch Targets

Pill buttons (button-primary, button-secondary) and circular icon buttons (button-icon-circular) are sized for comfortable tapping; keep interactive controls at a minimum 44×44px on touch. Carousel arrows and the "+" person-card buttons are circular and finger-sized.

Collapsing Strategy

  • Horizontal nav collapses to a hamburger below the tablet breakpoint; the cart and wordmark persist.
  • Multi-column card grids collapse 4-up → 2-up → 1-up.
  • The silver product showcase keeps its centered single-column media on all sizes and simply scales the imagery.
  • Footer link columns reflow from a 4-column row into stacked groups.

Image Behavior

Photography is full-bleed and art-directed, often edge-to-edge on mobile. Product imagery uses large-radius rounded frames ({rounded.xl}); editorial imagery is frequently un-rounded full-bleed. Images lazy-load as sections enter the viewport.

Elevation & Depth

LevelTreatmentUse
0 — FlatNo shadow; separation by color-world shift or {colors.hairline} ruleDefault on cream; most sections
1 — Resting cardVery soft, low-opacity drop shadowNews cards on the black band, the Technical Specifications card
2 — FloatingSlightly deeper, more diffuse soft shadowProduct-showcase media cards, elevated content cards
3 — OverlayStrong diffuse shadow + scrimModals / dialogs (rare)

Depth is understated. On cream, sections separate through the surface-world shift (cream → black → silver) and hairline dividers rather than heavy elevation. Where shadows appear, they are soft, warm, and low-opacity — never hard or high-contrast.

Decorative Depth

Depth mostly comes from photography (full-bleed lifestyle imagery, machined product renders on the silver stage) and from warm accent bands ({colors.clay}, {colors.gold} families) that recede or advance a section. Subtle radial glows appear behind product imagery on the store page to lift the ring off its grey backdrop.

Shapes

Border Radius Scale

TokenValueUse
{rounded.none}0pxFull-bleed imagery, bands, nav
{rounded.xs}4pxSmall utility chips, tight controls
{rounded.sm}8pxSmall cards, badges, list items
{rounded.md}12pxForm fields (email input)
{rounded.lg}24pxContent cards, person cards, news cards
{rounded.xl}40pxLarge product-image cards on the store page
{rounded.full}9999pxPill buttons, tabs, circular icon buttons, stat badges

Photography Geometry

Product and lifestyle imagery is generous and soft-cornered: product cards use {rounded.xl}, editorial and person imagery uses {rounded.lg} or runs full-bleed with no radius. Person cards are near-portrait rectangles with a small circular "+" affordance in the corner. Stat readouts ("99%", "95%", "90%") sit in perfect circles ({rounded.full}).

Components

Only Default and (where genuinely extracted) Active/Pressed states are documented. Variants live as separate components: entries in the front matter.

Navigation

nav-bar — Top navigation on cream

  • Background {colors.canvas}, links in {colors.stone} at {typography.ui}, no radius. Slots: OURA wordmark (left, {colors.stone}), center dropdown links (Shop, Your Health, Why Oura, For Organizations), cart icon (right). Sits flush on the cream canvas with no divider until scrolled.

announcement-bar — Top promo strip

  • Full-width cream strip above the nav, centered {typography.eyebrow} text in {colors.ink} (e.g. free-trial offer copy). No radius, no background shift — it reads as the top edge of the paper.

Hero

hero — Page-opening statement

  • Cream background, {typography.display} serif headline in {colors.ink} (homepage: "Subtle. Power."), a small serif eyebrow label above, and a single button-primary blue pill CTA. Often paired with full-bleed product/lifestyle photography directly beneath the headline.

Buttons

button-primary — Primary conversion CTA

  • Background {colors.primary}, text {colors.on-primary}, type {typography.button}, fully rounded ({rounded.full}). The only blue in the interface. Used for "Explore" and "Shop All Products".

button-secondary — Editorial / secondary action

  • Background {colors.stone}, text {colors.on-stone}, {typography.button}, {rounded.full}. The warm-neutral pill for content actions ("Why Oura", "How It Works").

button-on-dark — Cream pill on dark surfaces

  • Background {colors.canvas}, text {colors.stone}, {typography.button}, {rounded.full}. Used for "Read More" and card actions floating on the black news band. (Extracted button variant: cream fill, stone text, full radius.)

button-outline — Outline pill on dark/photo

  • Transparent over {colors.ink-band}, 1px {colors.on-dark} border, white text, {rounded.full}. For low-emphasis actions over dark imagery.

button-outline-stone — Outline pill on cream

  • Cream background, 1px {colors.stone} border, {colors.stone} text, {rounded.full}. Low-emphasis action on the paper canvas.

button-icon-circular — Circular icon control

  • Circular ({rounded.full}) control for carousel arrows and the person-card "+" affordance. Two flavours: a white surface circle ({colors.surface}) with a hairline edge for the "+" overlays, and a stone-outlined circle for the carousel arrows.

Inputs & Forms

text-input — Newsletter / email field

  • Background {colors.stone}, text {colors.on-stone}, {typography.body-sm}, radius {rounded.md} (12px), padding roughly 8px vertical / 20px left with a trailing submit affordance on the right. The dark taupe fill makes the field feel like part of the footer rather than a bright form box.

text-input-focused — Focused / error field

  • On focus the field lifts to a light surface ({colors.surface}) with {colors.ink} text and a {colors.error} border for the validation-error state. Radius stays {rounded.md}.

Cards & Containers

feature-card — Content / benefit card

  • White surface ({colors.surface}), {colors.hairline} border, {colors.ink} text, {typography.body}, radius {rounded.lg}, padding {spacing.lg}. The default soft-cornered content container on cream.

feature-card-elevated — Floating content card

  • Cream surface ({colors.canvas}) with a soft Level-1/2 shadow, {rounded.lg}, padding {spacing.lg}. Used where a card floats over imagery or the black band (news clippings, spec card).

product-card — Product-showcase media card

  • Cool grey surface ({colors.surface-grey}), large radius {rounded.xl} (40px), holds a machined product render on the silver stage, often with a subtle radial glow behind the ring.

person-card — Expert / leadership card

  • Cream background, portrait photo with radius {rounded.lg}, a white circular button-icon-circular "+" in the corner, name in {typography.body}/{typography.title} and role in {colors.ash} {typography.caption}. Appears in horizontal carousels.

news-card — News clipping on the dark band

  • Cream card ({colors.canvas}) floating on {colors.ink-band}, {colors.ink} text, {typography.body}, {rounded.lg}, padding {spacing.lg}. Carries a publication quote plus a circular arrow link.

Signature Components

stat-badge — Circular stat readout

  • Perfect circle ({rounded.full}) on cream with a large {typography.title}/{typography.heading-3} number in {colors.stone} and a small caption beneath (e.g. "99% / 95% / 90%" accuracy figures on the product page).

pill-tab — Product selector tab

  • Fully-rounded ({rounded.full}) tab in a horizontal selector row; selected state gets a {colors.silver} (2px) border, label in {typography.ui}, {colors.stone} text on cream. Used for the "Everyday health sensing" category switcher.

eyebrow-label — Section overline

  • Uppercase {typography.eyebrow} label in {colors.ink} on cream, no background, marking section context ("ACTIVITY & MOVEMENT", "FROM THE PULSE BLOG", "FEATURED ARTICLE" as a small pill on imagery).

footer — Site footer

  • Near-black surface ({colors.ink-band-soft}), {colors.on-dark} text and {colors.mute} secondary text, {typography.body-sm}. Contains the OURA wordmark, a newsletter text-input, payment-method icons, a 4-column link grid, and a language pill.

Examples (illustrative)

Auto-derived kit-mirror demonstration surfaces (scripts/derive-examples-block.mjs). Each ex-* entry references brand-native primitives so downstream consumers (/preview-design, /generate-kit) re-skin the same 10 surfaces consistently.

ex-pricing-tier — Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface.

  • Properties: backgroundColor, textColor, borderColor, rounded, padding

ex-pricing-tier-featured — Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode).

  • Properties: backgroundColor, textColor, rounded, padding

ex-product-selector — Color/size picker chrome — fashion / DTC variant selector.

  • Properties: backgroundColor, rounded, padding

ex-cart-drawer — Shopping cart drawer — DTC / fashion brand actual cart chrome.

  • Properties: backgroundColor, rounded, padding, item-divider

ex-app-shell-row — Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator.

  • Properties: backgroundColor, activeIndicator, rounded, padding

ex-data-table-cell — Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm.

  • Properties: headerBackground, headerTypography, bodyTypography, cellPadding, rowBorder

ex-auth-form-card — Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside.

  • Properties: backgroundColor, rounded, padding

ex-modal-card — Modal dialog surface — same chrome as feature-card with elevated shadow.

  • Properties: backgroundColor, rounded, padding

ex-empty-state-card — Empty-state illustration frame.

  • Properties: backgroundColor, rounded, padding, captionTypography

ex-toast — Toast notification surface — feature-card shape + medium shadow.

  • Properties: backgroundColor, rounded, padding, typography

Do's and Don'ts

Do

  • Reserve {colors.primary} strictly for the primary conversion CTA — one blue moment per view, maximum.
  • Default every surface to {colors.canvas} (warm paper), not white. White ({colors.surface}) is for elevated cards and inputs, not backgrounds.
  • Use {colors.stone} for the wordmark, secondary pills, outlines, form fills, and links — it is the workhorse neutral.
  • Pair {typography.display} (thin serif) at large sizes with {typography.body} (grotesque) for reading; let scale create hierarchy.
  • Keep pills fully rounded ({rounded.full}) and cards softly rounded ({rounded.lg}); use {rounded.xl} only for large product imagery.
  • Let the earth-tone ramps (gold, clay, olive) live in bands, illustration, and data-viz — as color-blocked sections that pace the scroll.
  • Give sections large vertical breathing room; treat empty cream as structure.

Don't

  • Don't use {colors.primary} for links, accents, icons, or decorative fills — it must stay unique to the primary CTA.
  • Don't put the mustard/olive accent colors on buttons — they are surfaces and illustration, never actions.
  • Don't set body copy in {typography.display}; the thin serif is display-only and gets illegible at small sizes.
  • Don't default backgrounds to white — it breaks the warm-paper identity.
  • Don't add heavy or hard-edged shadows; elevation here is soft, warm, and low-opacity.
  • Don't crowd sections — compressing the vertical rhythm collapses the calm, editorial pacing that defines the brand.

Ingestion metadata

Source catalog
awesome-design-md
Last refreshed
10/24/2026, 3:00:12 AM (2h ago)
Refresh schedule
Daily · 03:00 UTC
Dedupe status
Merged — per-file DESIGN.md stubs folded into this canonical entry