Skip to main content
Back to Examples

Cadence

Remix this template to create a similar design — same sections, layout, animations, colors, and typography.

Visit site

A landing page for private music lessons. Warm cream canvas, terracotta and sage accents, Source Serif over Work Sans.

13
core colors
2
typefaces
29
tokens
agent.kombai.com/kombai-inspiration-library/templates/cadence/index.html
01

Palette

terracotta
#B5715A
sage
#7E8C73
ochre
#B89B5E
paper
#EFE9DF
ink
#2B2A28
hairline
#D0D0CC
ink-70
RGBA(43,42,40,0.70)
ink-60
RGBA(43,42,40,0.60)
ink-55
RGBA(43,42,40,0.55)
ink-30
RGBA(43,42,40,0.30)
stave
RGBA(43,42,40,0.32)
card-scrim
RGBA(43,42,40,0.55)
label-gradient
LINEAR-GRADIENT(TO TOP, RGBA(43,42,40,0.85), RGBA(43,42,40,0))
02

Typography

displayThe quick brown fox jumps'Source Serif 4', serif
clamp(2.25rem, 5.2rem)
display-italicThe quick brown fox jumps'Source Serif 4', serif
1.5rem
headingThe quick brown fox jumps'Source Serif 4', serif
1.5rem
bodyThe quick brown fox jumps'Work Sans', sans-serif
15px
eyebrowThe quick brown fox jumps'Work Sans', sans-serif
12px
navThe quick brown fox jumps'Work Sans', sans-serif
13px
03

Spacing & Shape

TokenValuePreview
xs4px
sm8px
md16px
lg24px
xl32px
2xl40px
3xl64px
04

Border Radius

TokenValuePreview
none0px
sm1px
full9999px
05

design.md

design.mdreadable by AI agents
tokens (raw)
name: cadence-design
version: alpha
description: >
  Cadence is a warm, editorial landing page for private music lessons set on a
  paper-cream surface (#EFE9DF) with near-black ink (#2B2A28). Its signature
  move is musical: thin "stave-line" hairlines stretch between every section and
  skew in real time with scroll velocity, a terracotta (#B5715A) note follows
  the cursor, and portrait cards wipe open like a curtain to reveal cream
  waveform bars. Type pairs a serif display (Source Serif 4, used in italic for
  asides) with a light humanist sans (Work Sans) at a generous 2.0 line-height.
  Geometry is mostly square and hairline-bordered, with full pills reserved for
  the primary CTA, the cursor dot, and the play buttons.
colors:
  # Brand / Accent
  terracotta: '#B5715A'   # primary accent — logo, links, hover, cursor dot, play buttons, CTA hover
  sage: '#7E8C73'         # secondary accent — eyebrows, range thumb, pricing feature icons
  ochre: '#B89B5E'        # tertiary accent — timeline step "03" numeral only
  # Surface
  paper: '#EFE9DF'        # page background / card fills / text on dark
  ink: '#2B2A28'          # near-black — body text, dark cards, CTA fill, stave lines
  # Hairlines
  hairline: '#d0d0cc'     # 1px borders on cards/panels and the pricing grid gap
  # Tints (alpha over ink)
  ink-70: 'rgba(43,42,40,0.70)'   # body paragraphs
  ink-60: 'rgba(43,42,40,0.60)'   # captions / secondary
  ink-55: 'rgba(43,42,40,0.55)'   # fine print
  ink-30: 'rgba(43,42,40,0.30)'   # spine lines
  stave: 'rgba(43,42,40,0.32)'    # stave-line hairline (1px @ 32% ink)
  # Overlays / Gradient
  card-scrim: 'rgba(43,42,40,0.55)'  # portrait hover overlay
  label-gradient: 'linear-gradient(to top, rgba(43,42,40,0.85), rgba(43,42,40,0))'  # caption legibility scrim
typography:
  display:
    fontFamily: "'Source Serif 4', serif"
    fontSize: clamp(2.25rem, 5.2rem)
    fontWeight: 500
    lineHeight: 1.04
  display-italic:
    fontFamily: "'Source Serif 4', serif"
    fontSize: 1.5rem
    fontWeight: 400
    lineHeight: 1.6
  heading:
    fontFamily: "'Source Serif 4', serif"
    fontSize: 1.5rem
    fontWeight: 500
    lineHeight: 1.3
  body:
    fontFamily: "'Work Sans', sans-serif"
    fontSize: 15px
    fontWeight: 400
    lineHeight: 2.0
  eyebrow:
    fontFamily: "'Work Sans', sans-serif"
    fontSize: 12px
    fontWeight: 400
    letterSpacing: 0.28em
    textTransform: uppercase
  nav:
    fontFamily: "'Work Sans', sans-serif"
    fontSize: 13px
    fontWeight: 400
    letterSpacing: 0.02em
    textTransform: uppercase
rounded:
  none: 0px       # cards, panels, images, stave lines — the default
  sm: 1px         # waveform bars
  full: 9999px    # cursor dot, play buttons, range thumb, primary CTA
spacing:           # base unit 4px; Tailwind scale
  xs: 4px
  sm: 8px
  md: 16px
  lg: 24px
  xl: 32px
  '2xl': 40px
  '3xl': 64px
components:
  primary-cta:
    backgroundColor: '{colors.ink}'
    textColor: '{colors.paper}'
    typography: '{typography.heading}'
    rounded: '{rounded.full}'
    padding: '16px 40px'
    hoverBackground: '{colors.terracotta}'
    # label: "Start your first free lesson →"
  text-link:
    textColor: '{colors.terracotta}'
    typography: '{typography.heading}'
    border: '2px solid {colors.terracotta}'   # bottom border only
    # label: "Find your teacher →"
  nav-link:
    textColor: '{colors.ink}'
    typography: '{typography.nav}'
    hoverColor: '{colors.terracotta}'
  timeline-card:
    backgroundColor: '{colors.paper}'
    textColor: '{colors.ink-70}'
    typography: '{typography.body}'
    border: '1px solid {colors.hairline}'
    rounded: '{rounded.none}'
    padding: '32px'
  teacher-card:
    backgroundColor: '{colors.ink}'
    border: '1px solid {colors.hairline}'
    rounded: '{rounded.none}'
    # image fill; hover scrim {colors.card-scrim} wipes in
  play-button:
    backgroundColor: '{colors.terracotta}'
    textColor: '{colors.paper}'
    rounded: '{rounded.full}'
    size: '44px–48px'
  pricing-panel:
    backgroundColor: '{colors.paper}'
    border: '1px solid {colors.hairline}'
    rounded: '{rounded.none}'
    padding: '40px–56px'
  range-thumb:
    backgroundColor: '{colors.sage}'
    border: '3px solid {colors.paper}'
    rounded: '{rounded.full}'
    size: '26px'
    ring: '0 0 0 1px {colors.ink}'
motion:
  smooth-scroll: 'Lenis lerp 0.09'
  velocity-skew: 'scroll velocity sets --skew (clamped ±6deg); stave lines skewY(--skew * 0.25)'
  cursor: 'anime.js createAnimatable, x/y duration 350ms ease out(4)'
  hero-wipe: 'GSAP clip-path inset(0 100% 0 0) → 0, 1s power2.inOut, delay 0.2s'
  hero-lines: 'GSAP y:30 opacity:0 → in, 0.8s stagger 0.12 power2.out delay 0.35s'
  card-reveal: 'ScrollTrigger.batch autoAlpha/y:32 → in, 0.6s stagger 0.08–0.1'
  descend-note: 'GSAP top 0 → 100% scrubbed along spine over #timeline'
  card-hover-wipe: 'overlay clip-path wipe 0.7s + waveform bars scaleY 0.2→1 stagger 0.02'
  price-pop: 'GSAP scale 0.94 → 1, 0.3s back.out(2) on slider input'
icons:
  library: Tabler (@tabler/icons-webfont)
  style: outline (with a few -filled glyphs, e.g. ti-player-play-filled)
  sizes: { sm: 13px, md: 20px, lg: 24px }
  color: '{colors.terracotta}'  # also {colors.sage} for pricing feature icons

Cadence

cadence-design · alpha

Design spec — version alpha. Source: static HTML (index.html); tokens read from inline styles + class rules. Fictional/sample product; described factually.

Overview

Cadence is an editorial, paper-warm marketing page for one-on-one music lessons. The whole canvas sits on a cream #EFE9DF with near-black #2B2A28 ink and a luxurious 2.0 body line-height, so the page reads like a printed score with a lot of air. Its identity is built from one metaphor — the musical stave — rendered as sets of five 1px hairlines at 32% ink that separate every section and literally skew with scroll velocity. A single terracotta #B5715A is the voltage: it carries the logo, every link and hover, the play buttons, the price CTA-on-hover, and a multiply-blended dot that trails the (hidden) cursor. A muted sage #7E8C73 plays second accent on eyebrows and the pricing slider, with a one-off ochre #B89B5E on a single timeline numeral. Type is a serif/sans pair: Source Serif 4 carries display and headings (and turns italic for poetic asides), while Work Sans Light handles body and uppercase tracked labels. Geometry is deliberately square — cards, images and panels are sharp and hairline-bordered — with rounded-full reserved for the cursor, play buttons, slider thumb and the single ink-filled pill CTA. Motion is the finish: GSAP + ScrollTrigger + Lenis drive curtain-style clip-path wipes (hero, portrait overlays), a note that descends a treble-clef spine while you scroll the timeline, and cream waveform bars that rise on hover.

Colors

Brand / Accent. terracotta #B5715A is the primary voltage — the music-note logo, nav hover, hero underlined link, the descending timeline note, every play-button fill, the cursor dot, and the CTA's hover fill. sage #7E8C73 is the secondary accent on the eyebrow labels for the timeline and pricing sections, the range-slider thumb, and the four pricing feature icons. ochre #B89B5E appears once, as the tint of the "03" numeral in the timeline.

Surface. paper #EFE9DF is the page background, the fill of timeline and pricing cards, and the text color used on dark cards. ink #2B2A28 is the near-black used for body text, the dark portrait-card backgrounds, the primary CTA fill, and the stave lines.

Hairlines. hairline #d0d0cc is the 1px border on the .hairline cards, panels, and the divider grid in pricing (used as a gap-px background).

Tints. Text and structural elements lean on alpha-over-ink: rgba(43,42,40,0.70) for body paragraphs, 0.60 for captions, 0.55 for fine print, 0.30 for the timeline spine lines, and 0.32 for the stave hairlines themselves.

Overlays / Gradient. Portrait cards use a rgba(43,42,40,0.55) scrim that wipes in on hover; each caption sits over a linear-gradient(to top, rgba(43,42,40,0.85), rgba(43,42,40,0)) for legibility.

Typography

Two Google Fonts, imported together: Source Serif 4 (optical-size axis, 400/500/600 + italics) for everything expressive, and Work Sans (300/400/500) for body and labels. Source Serif 4 is open-source; no substitution needed. Body text runs at font-weight 400 but a light, airy feel via line-height: 2.0. Italic Source Serif is a recurring device for sub-headings and quotes.

TokenSizeWeightLine-heightTrackingUsage
displayclamp 2.25rem → 5.2rem5001.04tightHero H1
display-italic1.25–1.5rem400relaxedHero subhead, quote card, section asides (italic)
heading1.5–3rem500tight–1.3Section H2s, card H3s, CTA, price numeral (text-7xl)
body15px4002.0Paragraphs
eyebrow12px400normal0.28emUppercase section kickers
nav13px400normalwideUppercase nav, card meta, fine print

Layout

Base unit is 4px on the Tailwind scale; section padding is px-10 lg:px-16 with pt-24 pb-28 rhythm. The page is a single vertical column of full-bleed sections divided by five-line stave dividers. The hero is an asymmetric 40% / 60% split — a tall image panel (revealed by clip-path) beside a left-aligned serif headline. The timeline is a centered max-w-6xl two-column alternating layout straddling a vertical "spine" of five thin lines, a treble-clef SVG, and a descending note. Teachers use a 3-column CSS masonry grid (auto-rows-[20px] with row-[span_N]) mixing portraits with a terracotta quote tile. Pricing is a centered max-w-3xl hairline panel with a custom range slider laid over stave lines and a 2×2 feature grid built from gap-px hairlines. Whitespace is generous and editorial.

Elevation & Depth

The system is almost entirely flat and hairline-driven — depth comes from 1px #d0d0cc borders, not shadows. The only shadows are functional/decorative: the descending timeline note carries a soft terracotta ring shadow-[0_0_0_6px_rgba(181,113,90,0.12)], and the range thumb has a hard box-shadow: 0 0 0 1px #2B2A28 ring plus a 3px paper border. The cursor dot uses mix-blend-mode: multiply for an inky overlay effect. Portrait depth is a tonal scrim + caption gradient rather than elevation.

Shapes

Square by default — cards, images, panels and the stave lines are all sharp (rounded: 0). The radius vocabulary is binary: hairline-bordered rectangles versus full pills. rounded-full (9999px) is reserved for the cursor dot, the circular play buttons (44–48px), the slider thumb (26px), and the one ink-filled pill CTA. Waveform bars get a near-imperceptible 1px radius.

Components

  • Primary CTA — ink #2B2A28 fill, paper text, full pill, px-10 py-4, serif label "Start your first free lesson →"; hovers to terracotta.
  • Text link (hero) — terracotta text with a 2px terracotta bottom-border, serif, arrow that nudges right on hover ("Find your teacher →").
  • Nav link — uppercase 13px Work Sans, ink, hover terracotta; the header CTA adds an ink bottom-border that turns terracotta.
  • Timeline card — paper fill, 1px hairline, square, p-8; oversized tinted serif numeral, serif H3, ink-70 body.
  • Teacher card — ink background holding a cover image, 1px hairline, square; hover wipes in a 0.55 scrim with rising cream waveform bars and a terracotta play button; caption over a bottom gradient.
  • Quote tile — terracotta fill, paper text, large italic serif quote.
  • Pricing panel — paper fill, 1px hairline, square, p-10 lg:p-14; 7xl serif price, custom range slider over stave lines, gap-px 2×2 feature grid.
  • Range thumb — 26px sage circle, 3px paper border, 1px ink ring.

Motion

Motion is central and orchestrated with GSAP + ScrollTrigger over Lenis smooth scroll (lerp 0.09). Scroll velocity feeds a clamped --skew (±6deg) that gently skews every stave line in real time. A createAnimatable (anime.js) terracotta dot trails the pointer with a 350ms out(4) ease, replacing the native cursor (cursor: none). The hero image wipes open via clip-path inset (1s, power2.inOut) while hero lines stagger up. Timeline and teacher cards reveal in batches (autoAlpha + y:32, ~0.6s, staggered); a note element scrubs down the treble-clef spine as the timeline scrolls. Portrait overlays wipe in on hover (0.7s) with waveform bars scaling up (stagger 0.02); the price number pops with back.out(2) on each slider change.

Iconography

Tabler icons via the @tabler/icons-webfont CDN, used as <i class="ti ti-*">. Mostly outline glyphs (ti-music, ti-arrow-narrow-right, ti-clock, ti-device-laptop, ti-notes, ti-refresh), with filled play glyphs (ti-player-play-filled) inside play buttons. Sizes follow Tailwind text sizes (~13px meta, ~20px feature icons, ~24px logo). Default color is terracotta for brand/links and the play buttons; pricing feature icons are sage. Icons are decorative/affordance markers, never load-bearing alone.

Do's and Don'ts

  • Do keep the cream-on-ink palette and let a single terracotta carry every link, hover and primary action.
  • Do divide sections with five-line stave hairlines and preserve the 2.0 body line-height for the airy, printed-score feel.
  • Do use Source Serif 4 (italic for asides) against Work Sans labels in uppercase wide tracking.
  • Do keep cards/panels square with 1px #d0d0cc hairlines; reserve pills for the cursor, play buttons, slider thumb and the one CTA.
  • Don't add drop shadows or rounded card corners — depth here is hairlines, not elevation.
  • Don't introduce a second strong accent; sage and ochre stay quiet and supportive.
  • Don't restore the native cursor or remove the velocity skew — they are the signature interactions.

Known Gaps

  • Display H1 size is clamp-approximated from Tailwind text-5xl lg:text-[5.2rem]; the spec records the 2.25rem→5.2rem range.
  • Heading/italic sizes vary by instance (text-2xl through text-7xl); table lists representative ranges rather than every occurrence.
  • Spacing scale is inferred from Tailwind utility classes used (4px base), not an explicit design-token scale in the source.
  • Motion timings/easings are read from the GSAP/anime.js calls; the per-bar waveform heights are randomized at runtime (Math.sin-based), so exact bar shapes are generative.