Skip to content

Now in the official shadcn registry directory.

Start free
Back to gallery
ai

ElevenLabs

Cinematic dark-canvas AI-voice marketing — purple-gradient hero with near-monochrome scroll body, waveform motif as both decoration and live product demo, and theatrical 3-5 second opening animation that proves voice expressiveness. The page is a trailer; everything downstream earns its calmer pacing.

elevenlabs.ioAdded 2026-05-11
ElevenLabs - Desktop

Editorial disclaimer

Editorial note

This entry documents observable design-language patterns for educational transfer and AI-agent briefing. Screenshots and trademarks are property of their respective owners. AI2 Design is not affiliated with or endorsed by the featured brand. Inspiration here is about language and rhythm - do not reproduce brand identity, logo, product copy, or proprietary features.

Fair Use & Gallery Policy
FreePrompt kit

Copy the full design language into your agent

A typed, paste-ready design system brief - philosophy, tokens, rules, techniques, and fitness checks. Drop it into Claude, Cursor, v0 or any coding agent and it builds in ElevenLabs’s language, not just a screenshot.

Paste into your agent. No signup, no cost.
Cinematic dark-canvas AI-voice marketing — purple-gradient hero with near-monochrome scroll body, waveform motif throughout, theatrical hero motion that proves product expressiveness, restrained downstream sections. The page is a trailer; everything after the hero earns its calmer pacing.
Main prompt
Adopt this as a design-language brief for AI generative-media marketing. Use the dark canvas with purple gradient hero, near-monochrome downstream scroll, audio-waveform motif throughout, and theatrical 3-5 second hero animation that proves product expressiveness. Reserve gradient density for the hero; the rest of the page is calm. Use product-derived motifs (waveforms here) as both decoration and demo.
Layout
Stacked
Content width
Bounded
Framing
Layered
Grid strength
Strong

Dark-first canvas — primary surface #000000 paired with foreground #ffffff doing the bulk of reading-layer work. Accent moments use #777169 + #ffffff sparingly. Near-black backdrop with restrained warm or cool accents.

Mode strategydark-first
  • #000000 — primary surface / dominant background
  • #e5e5e5 — primary foreground / reading layer
  • #777169 — first accent — used for CTAs and highlights
  • #ffffff — secondary accent / hover states
  • #fdfcfc — tertiary surface / panels

Gradients (paste-ready)

// No gradient extracted — use solid surfaces
  • Primary family: Inter. Mono fallback: JetBrains Mono for code and tabular numerics.
  • Weight ladder: 300 / 400 / 500 / 700. Keep substitutions tight — the captured ladder is the typographic signature.
  • Display tracking uses negative px (not em) for optical correction at large sizes — typically -0.5 to -1.5px at 48-64px hero scale.
  • Heading line-height tightens at display sizes (1.0-1.2); body sits at 1.4-1.6. Captions and small UI labels at 1.3.
  • Tabular numerals mandatory on aligned columns: font-variant-numeric: tabular-nums.
  • Italic reserved for editorial quotes and emphasis where weight cannot carry — never for product UI labels.
  • Paragraph max 45-55ch at body size; dense data tables may extend to 65ch with line-height 1.5.
  • Scale (observed): 2 / 4 / 6 / 9 / 12 / 14 / 16 / 18 px. Stay on the scale — no magic numbers.
  • Container max-width: 1920px. Secondary bounded rails for narrow content clusters at ~480-640px.
  • Section vertical rhythm: 64-128px on desktop, 40-80px on mobile, scaled by page depth.
  • Card padding: 16-24px on desktop, 12-16px on mobile.
  • Gutter values draw from the smaller half of the scale (4 / 8 / 12 / 16 / 24).
Surface styleLayered
  • Primary elevation is inset 1px border shadow — `box-shadow: <border-color> 0 0 0 1px inset`. Use this before reaching for drop shadow.
  • Drop shadows stay subtle (opacity 0.05-0.4, blur 1-12px, zero spread). No bloom, no halo.
  • Layering depth comes from border weight + background tone shift, not stacked shadow.
  • Focus state uses inset ring at accent color — never an outer glow on form fields.

Techniques

Inset-1px border as surface delimiter

Cards default to a 1px inset border shadow at the surface-divider color. Hover adds a second inset in the accent color. Never switch to outer drop-shadow for hover.

Radii4 / 8 / 12 / 16 / 24Icon treatmentLinearIcon setsLucide, Custom waveform
  • Radius scale: 4 / 8 / 12 / 16 / 24. Buttons default to 12px, cards to 16px, modals to 24px.
  • Icon style is linear — stroke-based at 1.5-2px weight; no filled or duotone variants.
  • Tap targets minimum 44×44 on touch, 40×40 on pointer devices.
  • button-primary
    backgroundColor
    #777169
    textColor
    #000000
    radius
    12px
    padding
    10px 16px
    border
    1px solid transparent
    boxShadow
    none
    fontWeight
    500
    fontSize
    14px
    lineHeight
    20px

    Tailwind

    inline-flex items-center gap-1.5 rounded-[12px] bg-[#777169] px-4 py-2.5 text-[14px] font-medium text-[#000000] transition-colors duration-200 ease-out hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#777169]
  • button-secondary
    backgroundColor
    transparent
    textColor
    #ffffff
    radius
    12px
    padding
    10px 16px
    border
    1px solid #ffffff
    boxShadow
    none
    fontWeight
    500
    fontSize
    14px

    Tailwind

    inline-flex items-center gap-1.5 rounded-[12px] border border-[#ffffff] bg-transparent px-4 py-2.5 text-[14px] font-medium text-[#ffffff] transition-colors duration-200 ease-out hover:bg-[#fdfcfc] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#777169]
  • card-surface
    backgroundColor
    #e5e5e5
    textColor
    #ffffff
    radius
    16px
    padding
    24px
    border
    none
    boxShadow
    #ffffff 0 0 0 1px inset

    Tailwind

    rounded-[16px] bg-[#e5e5e5] p-6 text-[#ffffff] shadow-[#ffffff_0_0_0_1px_inset]
  • input-field
    backgroundColor
    #e5e5e5
    textColor
    #ffffff
    radius
    8px
    padding
    8px 12px
    border
    1px solid #ffffff
    boxShadow
    none
    fontSize
    14px
    lineHeight
    20px

    Tailwind

    w-full rounded-[8px] border border-[#ffffff] bg-[#e5e5e5] px-3 py-2 text-[14px] leading-5 text-[#ffffff] placeholder:text-[#fdfcfc] focus-visible:outline-none focus-visible:border-[#777169] focus-visible:ring-2 focus-visible:ring-[#777169]/30
LevelexpressiveDurations0.15s / 0.3s

Easings

cubic-bezier(0.4, 0, 0.2, 1)ease-outease
Hoveropacity + color shift on interactive elements (160-200ms on ease-out), subtle scale (1.0 → 1.02) on cards and tappable surfaces, rarely above 1.05, background tone shift between surface and surface-elevated on hover

Scroll patterns

  • Intersection-triggered opacity + translateY reveals (12-24px) on 0.3-0.5s ease-out
  • Stagger 40-80ms between grouped cards or list items
  • No parallax beyond 2-4% translateY — subtle depth, never theatrical
  • Captured motion level: expressive. Libraries detected: Framer Motion.
  • useReducedMotion mandatory — all animations collapse to opacity-only or disable entirely.
  • Deterministic cubic-bezier or ease-out only; spring animations only where genuinely needed.
  • Loop animations forbidden except explicit loaders.
  • Hover and reveal motion use the same primary easing curve to feel consistent across the page.
  • Segmented controls for binary/ternary choices (pricing toggle, doc version switcher) over toggle switches.
  • Accordion: single-open for FAQ; multi-open only for deeply nested documentation.
  • Tooltips: hover + focus with 300-400ms delay, dismiss instantly on blur.
  • Modals for destructive confirmations; drawers for mobile-only expansions; never nested modals.
  • Form validation: inline below field on blur; submit disabled until pristine.
  • Empty states: small icon + one-line copy + primary action link, no illustrations beyond brand pattern.
  • Loading states: skeleton shimmer for content blocks; inline spinner for button confirm states.
Approachdesktop-first

Desktop-first because the audience is technical teams on wide displays. Mobile adapts the same language without reinventing it — no hamburger-revealed alternate architecture.

  • Breakpoints: sm 640 / md 768 / lg 1024 / xl 1280 / 2xl 1536 — standard Tailwind ladder.
  • Container max-width: 1920px. Below 1280, padding compresses but composition holds.
  • Hide-on-mobile is banned — if a control exists on desktop, it must reach mobile via reflow.
  • Tap target minimum 44×44 on touch; 40×40 on pointer devices.
  • Typography scales proportionally: hero 48-64 → 32-40 on tablet → 28-32 on mobile.
  • Color contrast: foreground #ffffff on background #000000 should meet WCAG AA at minimum (4.5:1 for body, 3:1 for display). Verify with axe-core or Lighthouse.
  • focus-visible: 2px ring at accent color, never display:none on focus outline. Mandatory on every interactive element.
  • All interactive elements reachable via Tab in logical reading order; never rely on hover to expose actions.
  • ARIA labels on icon-only buttons; aria-expanded on collapsibles; aria-live='polite' on toasts.
  • Motion respects prefers-reduced-motion — animations reduce to opacity-only or disable entirely.
  • Form errors announced via aria-describedby on the associated input; never color-only signaling.
  • Screen reader-only content uses sr-only; never display:none for meaningful context.
Framer MotionNext/Image

Motion library detected: Framer Motion. Image handling uses Next/Image (or equivalent) with lazy-loading default. Icons: Lucide.

  • Motion: motion.div with whileInView and viewport={{ once: true, margin: '-10%' }} for scroll reveals.
  • Transitions use constants only — define ease and duration as named tokens (e.g. ease.standard, duration.fast).
  • useReducedMotion guard wraps every animation primitive — no exceptions.
  • Next/Image with sizes attribute always set; priority only on LCP candidate (hero image).
  • No canvas, no WebGL, no Lottie unless required by product (e.g. waveform demos).
  • Apply focus-visible ring at accent color #777169 on every interactive element.
  • Use tabular-nums on aligned numerics; reach for monospace fallback for code and kbd inline.
  • Stay within the captured spacing scale (2, 4, 6, 9, 12, 14 px) — no magic numbers.
  • Break body text at 45-55ch; dense tables may extend to 65ch at 13-14px.
  • Reach for inset 1px border shadows before any drop shadow.
  • Pass every page through useReducedMotion before shipping.
  • Default to the primary easing curve for interactive transitions; reserve longer durations for atmospheric beats.
  • Never introduce a font weight outside the captured ladder — the discipline is the signature.
  • Never invent durations or easings outside the captured set — pick from the existing scale.
  • Never use drop shadows above 0.4 opacity or 16px blur — heavy elevation breaks the surface language.
  • Never introduce a secondary display font without explicit reason — one family + one mono is the boundary.
  • Never animate height: auto — use measured transforms or scaleY.
  • Never use em for tracking on display sizes — the px-based scale is an optical constant.
  • Never apply hover-only affordances — every interaction must be keyboard + screen reader reachable.
  • Tailwind v4 @theme inline only — no runtime style concatenation, no CSS-in-JS beyond the design system.
  • Spacing scale: 2 / 4 / 6 / 9 / 12 / 14 / 16 / 18 px.
  • Container max-width: 1920px — do not exceed.
  • Single font family: Inter, plus JetBrains Mono mono fallback.
  • Weight ladder: 300 / 400 / 500 / 700 — no substitutions.
  • Motion: durations 0.15s, 0.3s; easings ease-out + cubic-bezier(0.4, 0, 0.2, 1). No springs unless explicitly motivated.
  • Radius scale: 4 / 8 / 12 / 16 / 24 px.
  • Container width: no page section exceeds 1920px wide.
  • Spacing grep: no values outside the 2 / 4 / 6 / 9 / 12 / 14 ladder (+ scale extensions).
  • Font weight grep: only 300, 400, 500, 700 appear in computed styles.
  • Transition timing-function values draw from the captured easing set (ease-out + cubic-bezier(0.4, 0, 0.2, 1)).
  • Transition duration values draw from {0.15s, 0.3s}s.
  • Shadow audit: every elevation uses an inset 1px shadow first; drop shadows ≤ 0.4 opacity.
  • Image audit: loading='lazy' on every non-LCP image; priority only on hero.
  • Contrast audit: body text on dominant background ≥ 4.5:1 (WCAG AA).
  • Tap target audit: minimum 44×44 on touch surfaces; 40×40 on pointer.

Design tokens

Observed token system

Color, type, spacing, gradients, and stacking order captured from the live page and rendered here as living, paste-ready previews.

Inspector

Observable layers

Structure, breakpoints, motion, fonts, and images captured from the live page and kept paste-ready alongside the tokens.

Depth-first walk of the meaningful sections. 9 nodes across 6 levels, shallow to deep by color.

  • body3
    • Main2
      • div1
        • div1
          • div1
            • Nav
      • Footer
    • div (×2)
    • iframepresentation

Accessibility

Contrast matrix

120 combinations - 50 pass AA - 22 pass AAA. Each pair is previewed with its real foreground on background; APCA Lc sits alongside the WCAG 2.1 ratio for draft WCAG 3 awareness.

Normal text passes AAALarge text passes AAA
fg
#000000
bg
#FFFFFF
APCA Lc
+106
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#FFFFFF
bg
#000000
APCA Lc
-108
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#FDFCFC
APCA Lc
+104
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#FDFCFC
bg
#000000
APCA Lc
-106
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#FFF9F5
APCA Lc
+103
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#FFF9F5
bg
#000000
APCA Lc
-105
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#F5F8FF
APCA Lc
+102
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#F5F8FF
bg
#000000
APCA Lc
-103
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#E5E5E5
APCA Lc
+91
Use
foreground on neutral

Images

Image strategy

Observable image posture - total count, lazy-loading ratio, and format mix. The hero image is measured above the fold.

Total images
30
Lazy loaded
100%
Format mix
  • unknown37 · 76%
  • svg12 · 24%

Hero image

https://elevenlabs.io/_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=384&q=80
Format
UNKNOWN
Dimensions
288x288
Loading
lazy
srcset
yes
srcset descriptor
/_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=16&q=80 16w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=32&q=80 32w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=48&q=80 48w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=64&q=80 64w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=96&q=80 96w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=128&q=80 128w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=256&q=80 256w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=384&q=80 384w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=640&q=80 640w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=750&q=80 750w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=828&q=80 828w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=1080&q=80 1080w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=1200&q=80 1200w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=1920&q=80 1920w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=2048&q=80 2048w, /_next/image?url=https%3A%2F%2Feleven-public-cdn.elevenlabs.io%2Fmarketing_website%2F_next%2Fstatic%2Fmedia%2Fcreative-1.f3361dab.png&w=3840&q=80 3840w
Industry
ai
Theme
Light
Added
2026-05-11

FAQ

Questions people ask about ElevenLabs

3questions

Answers are pulled from the curator verdict and design brief - the same text your AI agent sees when it paste-reads this page.

Compare this with