v1.0.0

Voice Aura Design System

A comprehensive, reusable UI guideline built on Bootstrap 5 for premium SaaS applications.

Jump to section
ColorsTypographySpacing RadiusShadowsButtons BadgesCardsForms TTS InputPricingAuth NavbarHeroFeatures BlogBlog LayoutAgent DubbingLogosAuth Split GridBackgroundsAnimations BootstrapFooter FilesSample

Foundation

Color Palette

The Voice Aura palette is intentionally restrained. Near-black and white dominate, with blue used only for interactive accents.

Core Brand
Primary Blue
#0478FF
Near Black
#1A1919
Light Grey
#E9E9EA
White
#FFFFFF
UI & Text
Section BG
#F7F7F8
Body Text
#4B5563
Muted Text
#9CA3AF
Border
#E5E7EB
Semantic
Success
#10B981
Warning
#F59E0B
Danger
#EF4444
Badge BG
#EEF2FF
Code
// Core Brand $va-primary: #0478FF; $va-near-black: #1A1919; $va-light-grey: #E9E9EA; $va-white: #FFFFFF; // UI & Text $va-section-bg: #F7F7F8; $va-body-text: #4B5563; $va-muted-text: #9CA3AF; $va-border-color: #E5E7EB; // Semantic $va-success: #10B981; $va-warning: #F59E0B; $va-danger: #EF4444; $va-badge-bg: #EEF2FF; // CSS Custom Properties (runtime) // --va-color-primary, --va-color-near-black, etc. // See _reset.scss :root block for full list

Foundation

Typography

IBM Plex Serif for headings creates authority. IBM Plex Sans for body ensures readability. The pairing produces natural hierarchy.

Heading Font — IBM Plex Serif

H1 — Built for unmatched speed

H2 — Choose Pricing Plan

H3 — Experience the Fastest API

H4 — Studio-Grade Voice

H5 — Smart voice experiences

H6 — Natural language understanding

Body Font — IBM Plex Sans

Lead text (20px): Fastest TTS API. Customizable voice Studio. Instant AI dubbing. Trusted by 10M+ creators worldwide.

Body text (16px): Unlock the power of intelligent voice technology through interactive lessons and hands-on projects. Learn the core AI skills behind speech recognition, natural language understanding, and smart voice experiences.

Small/Muted (14px): By signing up, you accept Voice Aura privacy policy and terms of service.

Code
// Font families (set in _variables.scss) $font-family-heading: 'IBM Plex Serif', Georgia, serif; $font-family-base: 'IBM Plex Sans', system-ui, sans-serif; $font-family-mono: 'IBM Plex Mono', monospace; // Heading sizes (Bootstrap overrides) // H1: 3.5rem (56px) — Hero headlines // H2: 2.5rem (40px) — Section titles // H3: 1.75rem (28px) — Card titles // H4: 1.25rem (20px) — Sub-sections // H5: 1.125rem (18px) — Labels // H6: 1rem (16px) — Small headings // Body sizes // Lead: 1.25rem (20px), line-height 1.6 // Body: 1rem (16px), line-height 1.6 // Small: 0.875rem (14px), line-height 1.5 // Usage in HTML: // <h1 class="va-section__title">...</h1> // <p class="va-section__subtitle">...</p>

Foundation

Spacing Scale

Based on an 8px grid. Consistent spacing builds visual rhythm across the interface.

4px — $spacer-1
8px — $spacer-2 (1 grid unit)
16px — $spacer-3
24px — $spacer-4
48px — $spacer-5
64px — $spacer-6
80px — $spacer-7 (section padding)
96px — $spacer-8
120px — $spacer-9 (large section padding)
Code
// 8px grid unit $va-grid-unit: 0.5rem; // 8px // Spacer scale (Bootstrap $spacers override) $spacers: ( 0: 0, 1: $spacer * 0.25, // 4px 2: $spacer * 0.5, // 8px (1 grid unit) 3: $spacer, // 16px 4: $spacer * 1.5, // 24px 5: $spacer * 3, // 48px 6: $spacer * 4, // 64px 7: $spacer * 5, // 80px (section padding) 8: $spacer * 6, // 96px 9: $spacer * 7.5, // 120px (large section padding) ); // Usage — spacing function margin-top: va-space(3); // 1.5rem (24px) padding: va-space(5); // 2.5rem (40px) // Usage — Bootstrap utilities <div class="mt-4 p-3">...</div> <div class="va-mt-4 va-gap-3">...</div>

Foundation

Border Radius

Five radius levels provide visual consistency from buttons to hero cards.

sm
8px
default
12px
lg
16px
xl
24px
pill
full
Code
$va-radius-sm: 0.5rem; // 8px — inputs, small cards $va-radius: 0.75rem; // 12px — cards, modals (default) $va-radius-lg: 1rem; // 16px — hero cards, panels $va-radius-xl: 1.5rem; // 24px — feature sections $va-radius-pill: 50rem; // pill — buttons, badges // CSS custom properties // --va-radius-sm, --va-radius, --va-radius-lg, etc.

Foundation

Shadows & Elevation

Subtle, layered shadows create depth without competing with content.

sm
default
md
lg
xl
Code
$va-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); $va-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.07), 0 2px 4px -2px rgba(0, 0, 0, 0.05); $va-shadow-md: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04); $va-shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -6px rgba(0, 0, 0, 0.04); $va-shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.15); // CSS custom properties // --va-shadow-sm, --va-shadow, --va-shadow-lg, etc.

Components

Buttons

Four button variants cover every interaction pattern. Primary (dark) for main CTAs, accent (blue) for emphasis, secondary for alternatives, ghost for tertiary.

Variants
Sizes
Modifiers
Full Width
Code
<!-- Primary (dark CTA) --> <button class="va-btn va-btn--primary">Open Studio</button> <!-- Secondary (outlined) --> <button class="va-btn va-btn--secondary">API Docs</button> <!-- Accent (blue) --> <button class="va-btn va-btn--accent">Get API Key</button> <!-- Ghost (text-only) --> <button class="va-btn va-btn--ghost">Log in &rarr;</button> <!-- Sizes: --sm, (default), --lg --> <button class="va-btn va-btn--primary va-btn--sm">Small</button> <button class="va-btn va-btn--primary va-btn--lg">Large</button> <!-- Pill shape --> <button class="va-btn va-btn--primary va-btn--pill">Pill</button> <!-- With icon --> <button class="va-btn va-btn--accent va-btn--icon"> <span class="va-btn__icon"><svg>...</svg></span> With Icon </button> <!-- Full width --> <button class="va-btn va-btn--primary va-btn--block">Sign up &rarr;</button>

Components

Badges & Tags

Small status indicators and category labels used throughout the interface.

Badge Variants
Primary DON'T SPEAK JUST TYPE Light Badge Outlined
Section Badges
FOR DEVELOPERS FOR LOCALIZER WHITEPAPER
Tags
ANNUAL DISCOUNT %40
Code
<!-- Badge variants --> <span class="va-badge va-badge--primary va-badge--pill">Primary</span> <span class="va-badge va-badge--dark va-badge--pill">Dark</span> <span class="va-badge va-badge--light va-badge--pill">Light</span> <span class="va-badge va-badge--outline va-badge--pill">Outlined</span> <!-- Section badge (used above feature rows) --> <span class="va-section-badge">FOR DEVELOPERS</span> <!-- Discount tag --> <span class="va-tag">ANNUAL DISCOUNT <strong>%40</strong></span>

Components

Cards

Flexible card containers for organizing content. Choose bordered for flat layouts, elevated for floating emphasis.

Bordered Card

Uses border instead of shadow. Clean, flat appearance for content grids.

Elevated Card

Uses shadow for depth. Draws attention to important content blocks.

Interactive Card

Hover to see the lift effect. Great for clickable card grids.

Card Header

With Header & Footer

Structured card with distinct header and footer areas.

Code
<!-- Bordered card --> <div class="va-card va-card--bordered"> <div class="va-card__body"> <h4 class="va-card__title">Title</h4> <p class="va-card__text">Description text.</p> </div> </div> <!-- Elevated card --> <div class="va-card va-card--elevated">...</div> <!-- Interactive (hover lift) --> <div class="va-card va-card--elevated va-card--interactive">...</div> <!-- With header & footer --> <div class="va-card va-card--bordered"> <div class="va-card__header">Header</div> <div class="va-card__body">...</div> <div class="va-card__footer">Footer</div> </div>

Components

Forms

Clean form elements with consistent sizing, subtle borders, and blue focus rings.

Code
<div class="va-form-group"> <label class="va-form-label">Email</label> <input type="email" class="va-form-input" placeholder="you@example.com"> </div> <div class="va-form-group"> <label class="va-form-label">Message</label> <textarea class="va-form-textarea" rows="3"></textarea> </div> <div class="va-form-group"> <label class="va-form-label">Plan</label> <select class="va-form-select"> <option>Free</option> <option>Creator</option> </select> </div> <label class="va-form-checkbox"> <input type="checkbox"> <span>I agree to the terms</span> </label>
Toggle Switch

Uses Bootstrap's native .form-check.form-switch pattern, styled via VA variable overrides.

<div class="form-check form-switch"> <input class="form-check-input" type="checkbox" id="mySwitch" checked> <label class="form-check-label" for="mySwitch">Enable notifications</label> </div>
Floating Labels

Uses Bootstrap's .form-floating for labels that animate into the input on focus.

<div class="form-floating mb-3"> <input type="email" class="form-control" id="floatEmail" placeholder="name@example.com"> <label for="floatEmail">Email address</label> </div> <div class="form-floating"> <textarea class="form-control" id="floatTextarea" placeholder="Comment" style="height: 100px"></textarea> <label for="floatTextarea">Comments</label> </div>
Validation States

Add .is-invalid or .is-valid to .va-form-input for colored borders and focus rings. Use .va-form-error for always-visible error messages.

Please enter a valid email address.
Must be 3–20 characters, letters and numbers only.
<!-- Valid state --> <input type="text" class="va-form-input is-valid" value="hello@voiceaura.com"> <!-- Invalid state with error message --> <input type="text" class="va-form-input is-invalid" value="not-an-email"> <span class="va-form-error">Please enter a valid email address.</span> <!-- Hint text --> <input type="text" class="va-form-input" placeholder="Username"> <span class="va-form-hint">Must be 3–20 characters.</span>

Components

TTS Input Card

The signature Voice Aura input component — tabs, textarea, category pills, and send button.

Code
<div class="va-input-card"> <div class="va-input-card__tabs"> <button class="va-input-card__tab va-input-card__tab--active">Text to Speech</button> <button class="va-input-card__tab">Upload File</button> </div> <div class="va-input-card__body"> <textarea placeholder="Type or paste your text here..." rows="4"></textarea> </div> <div class="va-input-card__footer"> <div class="va-input-card__pills"> <button class="va-category-pill va-category-pill--active">YouTube</button> <button class="va-category-pill">Narration</button> <button class="va-category-pill">Advertisement</button> <button class="va-category-pill">Podcast</button> </div> <div class="va-input-card__meta"> <span>400/1000</span> <button class="va-input-card__send">&rarr;</button> </div> </div> </div>

Components

Pricing Cards

Three-tier pricing with tab selector, crosshair corner decorations, and featured tier emphasis.

ANNUAL DISCOUNT %40

Choose Pricing Plan

Choose the perfect plan for your voice creation needs — from getting started to scaling your production.

Free
$0 /Month

Get started with essential link tracking and customization — no credit card required.

  • Access to core Text-to-Speech
  • Limited monthly characters
  • Standard voice library
  • Basic voice customization
  • Community support
  • Watermarked exports
Business
$69 /Month

High-volume access, API integration, team tools, and enterprise-grade security.

  • Everything in Creator
  • Unlimited or high-volume characters
  • API access
  • Team collaboration tools
  • Custom voice cloning
  • Enterprise-grade security
Code
<div class="va-pricing"> <div class="va-pricing__tabs"> <button class="va-pricing__tab va-pricing__tab--active">Studio</button> <button class="va-pricing__tab">DUB</button> <button class="va-pricing__tab">API</button> </div> <div class="va-pricing__grid"> <!-- Standard tier --> <div class="va-pricing-card"> <span class="va-pricing-card__badge">Free</span> <div class="va-pricing-card__price">$0 <span>/Month</span></div> <p class="va-pricing-card__description">...</p> <button class="va-btn va-btn--secondary va-btn--block va-pricing-card__cta">Get Started</button> <ul class="va-pricing-card__features"> <li class="va-pricing-card__feature">Feature item</li> </ul> </div> <!-- Featured tier (add --featured modifier) --> <div class="va-pricing-card va-pricing-card--featured"> <span class="va-pricing-card__badge">Creator</span> ... </div> </div> </div>

Components

Authentication Forms

Sign up and login forms with social OAuth options.

Create an Account

You are few moments away from getting started!

By signing up, you accept Voice Aura privacy policy and terms of service.

or
Code
<div class="va-auth"> <h2 class="va-auth__header">Create an Account</h2> <p class="va-auth__subtitle">You are few moments away from getting started!</p> <form class="va-auth__form"> <div class="va-form-group"> <label class="va-form-label">Email</label> <input type="email" class="va-form-input" placeholder="Email Address"> </div> <div class="va-form-group"> <label class="va-form-label">Password</label> <input type="password" class="va-form-input" placeholder="Create a strong password"> </div> <p class="va-auth__terms">By signing up, you accept our <a href="#">privacy policy</a> and <a href="#">terms</a>.</p> <button class="va-btn va-btn--primary va-btn--block va-auth__submit">Sign up</button> <div class="va-auth__divider">or</div> <button type="button" class="va-auth__social-btn">Continue with Google</button> <button type="button" class="va-auth__social-btn">Continue with Microsoft</button> <p class="va-auth__footer">Already have an account? <a href="#"><strong>Log In</strong></a></p> </form> </div>

Layout

Hero Section

The signature landing hero with badge, serif headline, subtitle, dual CTAs, and the TTS input card below.

DON'T SPEAK JUST TYPE

Built for unmatched
speed and peak efficiency

Fastest TTS API. Customizable voice Studio. Instant AI dubbing.
Trusted by 10M+ creators worldwide.

Code
<section class="va-hero va-pattern-halftone va-pattern-waveform-bg va-bg-glow"> <span class="va-badge va-badge--dark va-badge--pill va-hero__badge"> DON'T SPEAK JUST TYPE </span> <h1 class="va-hero__title">Built for unmatched<br>speed and peak efficiency</h1> <p class="va-hero__subtitle"> Fastest TTS API. Trusted by <strong>10M+</strong> creators. </p> <div class="va-hero__actions"> <button class="va-btn va-btn--primary va-btn--icon"> <span class="va-btn__icon"><svg>...</svg></span> Open Studio </button> <button class="va-btn va-btn--secondary">API Docs</button> </div> </section>
Compact Variant

Add .va-hero--compact for reduced vertical padding — ideal for inner pages or secondary heroes.

INNER PAGE

Compact hero for inner pages

Less vertical padding, same visual hierarchy.

<!-- Compact hero: reduced vertical padding --> <section class="va-hero va-hero--compact"> <span class="va-badge va-badge--dark va-badge--pill va-hero__badge">INNER PAGE</span> <h1 class="va-hero__title">Compact hero for inner pages</h1> <p class="va-hero__subtitle">Less vertical padding, same visual hierarchy.</p> <div class="va-hero__actions"> <button class="va-btn va-btn--primary">Get Started</button> </div> </section>

Layout

Feature Section

Two-column layout pattern used for feature blocks. Text and visual side by side.

FOR DEVELOPERS

Experience the Fastest, Most Powerful Text-to-Speech API

Experience the fastest, most powerful Text-to-Speech API — delivering natural, high-quality voice with low latency and seamless integration for any application.

Learn more →
[ Visual / Agent Card ]
Code
<section class="va-feature-row va-bg-preset-feature-api"> <div class="va-feature-row__content"> <span class="va-section-badge">FOR DEVELOPERS</span> <h2>Experience the Fastest, Most Powerful Text-to-Speech API</h2> <p>Delivering natural, high-quality voice with low latency.</p> <div class="va-feature-row__actions"> <button class="va-btn va-btn--accent">Get API Key</button> <a href="#" class="va-link-arrow">Learn more</a> </div> </div> <div class="va-feature-row__visual"> <!-- Agent card, app icon, or illustration --> <div class="va-feature-visual va-feature-visual--light va-pattern-halftone va-pattern-halftone--dense"> <!-- Content here --> </div> </div> </section> <!-- Reverse layout: add .va-feature-row--reverse --> <!-- Dark visual: use .va-feature-visual--dark -->
Reverse Variant

Add .va-feature-row--reverse to swap columns — visual on the left, text on the right.

FOR CREATORS

AI Video Dubbing in 50+ Languages

Translate any video with natural-sounding AI voices while preserving the speaker's tone and emotion.

See examples →
[ Visual Panel ]
Dark Visual Panel

Use .va-feature-visual--dark for a dark gradient background — pairs well with product screenshots or light UI mockups.

VOICE STUDIO

Professional Voice Studio

Create, edit, and fine-tune AI voices with our intuitive studio interface.

[ Dark Visual Panel ]
<!-- Reverse layout --> <div class="va-feature-row va-feature-row--reverse"> <div class="va-feature-row__content">...</div> <div class="va-feature-visual va-feature-visual--light">...</div> </div> <!-- Dark visual panel --> <div class="va-feature-row"> <div class="va-feature-row__content">...</div> <div class="va-feature-visual va-feature-visual--dark">...</div> </div>

Components

Blog / Insights Cards

Article cards for the blog section with image, metadata, and read-more link.

AI VOICE AGENTS 2026-01-06 3 min

Why Voice Agent Prompts Require a Different Approach

Prompting voice agents requires a different mindset than crafting prompts for text-based LLMs.

Read more
PROMPT 2026-01-06 3 min

Twitter Video Translation Guide: Translate Videos Quickly and Easily

Designing for voice means prioritizing human-like dialogue, smoother transitions, and real-time responsiveness.

Read more
WHITEPAPER 2026-01-06

Designing for Voice: Prompting Text-Based LLMs

Learn how to quickly translate videos directly on iPhone using simple tools and AI-powered apps.

Read more
Code
<div class="va-blog-card"> <div class="va-blog-card__image"> <img src="..." alt="..."> </div> <div class="va-blog-card__meta"> <span class="va-blog-card__category">AI VOICE AGENTS</span> <span>2026-01-06</span> <span>3 min</span> </div> <h4 class="va-blog-card__title">Article Title</h4> <p class="va-blog-card__excerpt">Short excerpt...</p> <a href="#" class="va-blog-card__link">Read more</a> </div>

Layout

Blog Section Layout

Left-aligned header with title & subtitle on the left, action button on the right, and a 4-column blog card grid. Matches the Behance "Insights & Updates" section.

Insights & Updates

Latest news, product updates, and expert insights to keep you ahead.

Explore more blogs
AI AGENTS 2026-01-06

Voice Agent Prompts Guide

Prompting voice agents requires a different mindset.

Read more
PROMPT 2026-01-06

Video Translation Guide

Translate videos quickly and easily.

Read more
WHITEPAPER 2026-01-06

Designing for Voice

Prioritizing human-like dialogue and transitions.

Read more
TUTORIAL 2026-01-06

Step-by-Step iPhone Translation

Translate videos on iPhone using AI tools.

Read more
Code
<div class="va-blog-section"> <div class="va-blog-section__header"> <div class="va-blog-section__header-content"> <h2 class="va-blog-section__title">Insights & Updates</h2> <p class="va-blog-section__subtitle">Latest news and expert insights.</p> </div> <a href="#" class="va-blog-section__action">Explore more blogs</a> </div> <div class="va-blog-section__grid"> <div class="va-blog-card"> <div class="va-blog-card__image"><img src="..." alt="..."></div> <div class="va-blog-card__content"> <div class="va-blog-card__meta"> <span class="va-blog-card__category">AI AGENTS</span> <span>2026-01-06</span> </div> <h4 class="va-blog-card__title">Article Title</h4> <p class="va-blog-card__excerpt">Short excerpt...</p> <a href="#" class="va-blog-card__link">Read more</a> </div> </div> <!-- Repeat for more cards --> </div> </div>

Discount Badge

Used on pricing pages for promotional offers.

ANNUAL DISCOUNT %40

Character Counter

Displays character count in TTS input cards.

400/1000 900/1000 1050/1000

Components

Voice Agent Card

Dark card showcasing an AI voice agent with language selector, avatar, and action button. Now supports crosshair corner decorations.

Standard

Yang lu wu
Customer support agent

With Crosshairs

Yang lu wu
Customer support agent
Code
<div class="va-agent-card"> <div class="va-agent-card__language-tabs"> <button class="va-agent-card__lang va-agent-card__lang--active">English</button> <button class="va-agent-card__lang">Chinese</button> <button class="va-agent-card__lang">Japanese</button> </div> <div class="va-agent-card__avatar"> <img src="..." alt="Agent avatar"> </div> <div class="va-agent-card__info"> <div class="va-agent-card__name">Yang lu wu <span class="va-agent-card__verified">&#10004;</span></div> <div class="va-agent-card__role">Customer support agent</div> </div> <button class="va-agent-card__cta">Call Wang lu</button> </div> <!-- With crosshair decorations: add .va-agent-card--crosshairs --> <!-- Then add .va-agent-card__corners + .va-agent-card__corners-bottom inside -->

Components

Video Dubbing Card

Dark card for the "FOR LOCALIZER" section — language pill carousel, video player with subtitle overlay, and playback controls.

The Master - Processing Scene(HD)

like to think about that it makes me sick are you scientific in your

1:57 / 6:50
Code
<div class="va-dubbing-card"> <div class="va-dubbing-card__languages"> <button class="va-dubbing-card__lang va-dubbing-card__lang--active">English</button> <button class="va-dubbing-card__lang">Chinese</button> <button class="va-dubbing-card__lang">Japanese</button> <button class="va-dubbing-card__lang">Korean</button> </div> <div class="va-dubbing-card__player"> <div class="va-dubbing-card__player-header"> <div class="va-dubbing-card__player-thumb"><img src="..." alt=""></div> <span class="va-dubbing-card__player-title">Video Title</span> </div> <div class="va-dubbing-card__player-video"> <video src="..."></video> <p class="va-dubbing-card__subtitle">Subtitle text here</p> </div> <div class="va-dubbing-card__controls"> <button class="va-dubbing-card__control-btn">▶</button> <button class="va-dubbing-card__control-btn">🔊</button> <div class="va-dubbing-card__progress"> <div class="va-dubbing-card__progress-bar" style="width: 30%;"></div> </div> <span class="va-dubbing-card__time">1:57 / 6:50</span> <button class="va-dubbing-card__control-btn va-dubbing-card__control-btn--cc">CC</button> </div> </div> </div>

Component

Client Logos

A greyscale logo row with pipe separators. Used under the hero or auth forms to show trust signals.

The solution of choice for 300+ Forbes 2000 companies
AIRFRANCE / VERTIV. Honeywell splunk>
Code
<div class="va-client-logos"> <span class="va-client-logos__label">Trusted by 300+ Forbes 2000 companies</span> <div class="va-client-logos__list"> <img class="va-client-logos__img" src="logo-1.svg" alt="Company 1"> <img class="va-client-logos__img" src="logo-2.svg" alt="Company 2"> <img class="va-client-logos__img" src="logo-3.svg" alt="Company 3"> <img class="va-client-logos__img" src="logo-4.svg" alt="Company 4"> </div> </div> <!-- Remove pipe separators: add .va-client-logos--no-pipes -->
Trust Bar (va-trust-bar)

Alternative trust bar component with greyscale logos, hover-to-color effect, and optional separator lines.

The solution of choice for 300+ Forbes 2000 companies

Separator Variant

Add .va-trust-bar__logos--separated for vertical dividers between logos.

Trusted by 10M+ creators worldwide

Dark Variant

Add .va-trust-bar--dark for use on dark backgrounds. Logos are inverted and text is muted white.

Trusted by 10M+ creators worldwide

<!-- Basic trust bar --> <div class="va-trust-bar"> <p class="va-trust-bar__text">Trusted by <strong>10M+</strong> creators</p> <div class="va-trust-bar__logos"> <img class="va-trust-bar__logo" src="logo-1.svg" alt="Company 1"> <img class="va-trust-bar__logo" src="logo-2.svg" alt="Company 2"> </div> </div> <!-- With separator lines + top border --> <div class="va-trust-bar va-trust-bar--bordered"> <p class="va-trust-bar__text">...</p> <div class="va-trust-bar__logos va-trust-bar__logos--separated">...</div> </div> <!-- Dark variant (on dark backgrounds) --> <div class="va-trust-bar va-trust-bar--dark">...</div>

Layout

Auth Split Layout

Full-page two-panel auth layout: decorative illustration on the left, form on the right. Collapses to single-column on mobile.

Illustration

Create an Account

You are few moments away from your voice studio

Code
<div class="va-auth-split"> <div class="va-auth-split__illustration"> <!-- Decorative content / illustration --> </div> <div class="va-auth-split__form-panel"> <div class="va-auth va-auth--borderless"> <div class="va-auth__header"> <h2>Create an Account</h2> <p class="va-auth__subtitle">Start your voice studio journey</p> </div> <form class="va-auth__form"> <div class="va-form-group"> <label class="va-form-label">Email</label> <input class="va-form-input" type="email" placeholder="you@example.com"> </div> <div class="va-form-group"> <label class="va-form-label">Password</label> <div class="va-input-wrapper"> <input class="va-form-input" type="password" placeholder="Enter password"> <button class="va-input-wrapper__toggle" type="button" aria-label="Toggle password"> <svg>...</svg> </button> </div> </div> <button class="va-auth__submit" type="submit">Sign Up</button> </form> </div> </div> </div>

Layout

Grid & Layout Utilities

CSS Grid system with auto-fit responsive grids, fixed-column variants, flex utilities, and VA spacing (8px grid). The --va-grid-min custom property allows per-instance column width control.

Auto-fit Grid

Columns automatically fill available space. Set --va-grid-min to control minimum column width (default: 280px).

Column 1
Column 2
Column 3
Column 4
Fixed-column Variants

2-COLUMN

1
2

3-COLUMN

1
2
3

4-COLUMN

1
2
3
4
Gap & Spacing Utilities (8px grid)
.va-gap-1 (8px) .va-gap-2 (16px) .va-gap-3 (24px) .va-gap-4 (32px) .va-mt-1 … .va-mt-8 .va-flex-center
Code
<!-- Auto-fit responsive grid (custom column minimum) --> <div class="va-grid" style="--va-grid-min: 200px;"> <div>Column 1</div> <div>Column 2</div> <div>Column 3</div> </div> <!-- Fixed column counts --> <div class="va-grid va-grid--2col">...</div> <div class="va-grid va-grid--3col">...</div> <div class="va-grid va-grid--4col">...</div> <!-- Spacing utilities (8px grid) --> <div class="va-gap-2">...</div> <!-- gap: 16px --> <div class="va-mt-4">...</div> <!-- margin-top: 32px --> <div class="va-flex-center">...</div> <!-- Max-width container --> <div class="va-container">...</div> <!-- max-width: 1280px -->

SCSS source: scss/layout/_grid.scss · Note: VA spacing utilities use the 8px grid ($va-grid-unit). Bootstrap’s .mt-*, .gap-* use Bootstrap’s own spacer scale. Both can be used together.

Visual System

Backgrounds & Patterns

Decorative background patterns, gradient overlays, and abstract visual elements identified from the Behance reference design. All implemented as reusable CSS utility classes.

SVG Pattern Assets

Located in assets/patterns/. These are used as background images by the SCSS utilities or can be embedded inline.

halftone-wide.svg

Dramatic radial halftone dot gradient

sound-wave-wide.svg

Full-width audio waveform visualization

noise-texture.svg

Subtle film-grain texture overlay

gradient-radial-soft.svg

Soft blue radial glow accent

crosshair.svg

Plus/crosshair corner marker

halftone-dots.svg

Compact halftone dot pattern

New Pattern Assets

Five additional abstract patterns aligned with the Voice Aura visual language — tech-forward, audio-themed, and minimal.

circuit-lines.svg

Abstract tech/AI routing lines with node dots

concentric-rings.svg

Radiating voice/audio ripple rings

grid-lines.svg

Clean perpendicular grid (48px tile)

diagonal-lines.svg

Subtle diagonal hatching texture

mesh-gradient.svg

Soft multi-blob gradient mesh

wave-divider.svg

Wave-shaped section divider

Background Pattern Classes

Class Description Reference Usage
.va-pattern-halftone Large halftone dot gradient overlay Hero section, feature backgrounds
.va-pattern-halftone--bottom Halftone concentrated at bottom edge Hero section (dots below TTS card)
.va-pattern-halftone--left Halftone concentrated on left Feature section backgrounds
.va-pattern-waveform-bg Sound-wave bar spanning section Hero section mid-band
.va-pattern-noise Subtle grain texture overlay Feature sections, alt backgrounds
.va-bg-glow Soft radial gradient glow behind content Feature sections, pricing area
.va-bg-dots Uniform CSS dot grid with radial fade Pricing section background
.va-glass Frosted glass panel (backdrop-blur) TTS floating card, modals
.va-accent-line Decorative blue accent bar Hero floating elements, cursor line
.va-crosshairs Four-corner "+" markers Pricing cards, feature panels
.va-pattern-circuit Abstract tech/AI circuit lines overlay API section, integrations, technology features
.va-pattern-rings Concentric ripple rings (voice propagation) Voice agent section, hero, audio features
.va-bg-grid-lines Clean perpendicular grid lines (48px tile) Blog section, structured content areas
.va-pattern-diagonal Subtle diagonal hatching texture Alt-background sections, cards
.va-bg-mesh Soft gradient mesh (ambient blobs) Pricing, CTA sections, feature areas
.va-bg-layer Positioned overlay for pattern stacking Multi-pattern composition (see guide below)

Background Colour & Gradient Utilities

.va-bg-white
.va-bg-alt
.va-bg-dark
.va-bg-gradient-subtle

Live Demos

Halftone Pattern (bottom variant)

Content sits above the pattern

Glass Panel

Frosted glass effect

Uses backdrop-filter: blur

Dot Grid Background

va-bg-dots (radial fade)

Accent Lines

.va-accent-line
--horizontal
--long

Waveform Bars (animated)

.va-waveform-bars
--static

Circuit Lines Pattern

.va-pattern-circuit — tech/AI routing lines

Concentric Rings Pattern

.va-pattern-rings — voice/audio ripples

Grid Lines Background

.va-bg-grid-lines (radial fade)

Diagonal Lines Texture

.va-pattern-diagonal on .va-bg-alt

Mesh Gradient

.va-bg-mesh — soft ambient gradient blobs

Background Composition Guide

Patterns can be layered to create rich visual depth. Use the .va-bg-layer helper for additional overlays when a section already uses ::before / ::after for a pattern.

Layered Composition: Glow + Circuit + Noise

.va-bg-glow + .va-pattern-noise + .va-bg-layer--circuit

Composition Rules:

  1. Max 2-3 patterns per section — more causes visual noise and hurts performance.
  2. Use ::before-based patterns first (halftone, circuit, rings, mesh, grid-lines), then ::after-based patterns (noise, diagonal), then .va-bg-layer for a third.
  3. Pair a structural pattern with a texture — e.g., circuit lines (structural) + noise (texture).
  4. Use .va-bg-glow as an ambient base — it adds subtle color without competing.
  5. All patterns reduce opacity on mobile for performance and readability.
  6. Prefer CSS-only patterns (.va-bg-dots, gradients) over SVG patterns for simple use cases.

HTML Template (layered composition):

<section class="va-section va-bg-glow va-pattern-noise va-section-morph">
  <div class="va-bg-layer va-bg-layer--circuit"></div>
  <div class="va-container">
    ...content...
  </div>
</section>

Motion

Animations & Transitions

A complete motion system for entrance animations, interaction states, responsive layout transitions, and scroll-triggered reveals. All animations respect prefers-reduced-motion.

Entrance Animations

Apply directly to elements. Plays once on mount. Chain with .va-animate--delay-N for staggering.

.va-animate-fade-up
.va-animate-fade-in
.va-animate-scale-in

Interaction Animations

Hover over these cards to see the effect:

.va-hover-lift

Lifts up + shadow on hover

.va-hover-scale

Scales up slightly on hover

.va-hover-glow

Blue ring glow on hover

Transition Presets

Class Duration Easing
.va-transition 200ms ease-in-out
.va-transition-fast 120ms ease-in-out
.va-transition-slow 350ms ease-in-out
.va-transition-bounce 400ms cubic-bezier(0.34, 1.56, 0.64, 1)

Scroll-Triggered Animations

Elements start hidden and animate in when they enter the viewport. Requires a lightweight JS IntersectionObserver (included in the sample page).

Class Effect Best For
.va-scroll-fade-up Fade in + slide up 32px Section titles, cards, content blocks
.va-scroll-fade-in Simple opacity fade Images, decorative elements
.va-scroll-scale-in Fade in + scale from 92% Cards, floating panels
.va-scroll-fade-left Fade in + slide from left Feature text (left column)
.va-scroll-fade-right Fade in + slide from right Feature visuals (right column)

JS Setup (add before </body>):

const observer = new IntersectionObserver((entries) => {
  entries.forEach(e => e.isIntersecting && e.target.classList.add('is-visible'));
}, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' });

document.querySelectorAll('[class*="va-scroll-"]').forEach(el => observer.observe(el));

Responsive Visibility Transitions

Instead of abrupt show/hide at breakpoints, these classes fade elements in/out smoothly.

Class Behaviour
.va-show-md Hidden on mobile, fades in at 768px+
.va-show-lg Hidden on mobile, fades in at 992px+
.va-hide-md Visible on mobile, hidden at 768px+

Responsive Layout Smoothing

Add to grid/flex containers so breakpoint changes animate smoothly (device rotation, browser resize).

Class Transitions Use Case
.va-grid-smooth grid-template-columns, gap Pricing grid, blog grid
.va-flex-smooth flex-direction, gap, align-items Navbar actions, footer columns
.va-padding-smooth padding Section padding at breakpoints
.va-type-smooth font-size, line-height, letter-spacing Headlines with clamp() sizing

Responsive Entrance Animations

Direction-adaptive entrance animations that switch axis on mobile. On desktop they slide horizontally; on mobile they slide vertically for better narrow-screen UX.

Class Desktop (768px+) Mobile (<768px)
.va-responsive-fade-left Slide from left (X‑axis) Slide from top (Y‑axis)
.va-responsive-fade-right Slide from right (X‑axis) Slide from bottom (Y‑axis)
.va-responsive-fade-left

Resize to see direction change

.va-responsive-fade-right

X-axis on desktop, Y-axis on mobile

Auto-Stagger Groups

Add .va-stagger-group to a parent to auto-stagger children with increasing delays. Delay reduces on mobile for faster perceived load.

Child 1

0ms delay

Child 2

100ms delay

Child 3

200ms delay

Child 4

300ms delay

Component-Level Responsive Transitions

Apply to individual components for smooth layout adaptation at breakpoints.

Class What It Transitions Best For
.va-card-reflow width, height, padding, margin, border-radius Cards that resize at breakpoints
.va-breakpoint-fade opacity + visibility at breakpoints Show/hide elements per viewport
.va-section-morph background-size, background-position, padding Sections with pattern backgrounds
.va-container-smooth max-width, padding Container width transitions
.va-hero-adapt grid-template, min-height, padding, gap Hero sections reflow desktop→mobile
.va-nav-morph height, padding, gap, background Navbar desktop↔mobile morph
.va-scroll-stagger Scroll-triggered + auto-stagger children Feature grids, card lists

Responsive Animation Best Practices:

  1. Use .va-responsive-fade-left/right for feature-text + visual pairs — the direction adapts automatically.
  2. Wrap card grids in .va-stagger-group or .va-scroll-stagger for cascading reveals.
  3. Add .va-section-morph to sections with background patterns so the pattern transitions smoothly on resize.
  4. Apply .va-hero-adapt to hero sections with grid layouts for smooth desktop→mobile reflow.
  5. All animations honor prefers-reduced-motion: reduce — animations are disabled and elements appear immediately.

HTML Template (responsive animated section):

<section class="va-section va-section-morph va-bg-glow">
  <div class="va-container va-container-smooth">
    <h2 class="va-responsive-fade-left">Feature Title</h2>
    <div class="va-scroll-stagger ref-grid ref-grid--3">
      <div class="va-card va-card-reflow">...</div>
      <div class="va-card va-card-reflow">...</div>
      <div class="va-card va-card-reflow">...</div>
    </div>
  </div>
</section>

Demo

Sample Landing Page

A pixel-perfect sample landing page combining all components into a complete Voice Aura homepage.

Open Sample Page

Integration

Bootstrap Alignment Guide

Voice Aura is built on top of Bootstrap 5. Many custom .va-* classes have Bootstrap equivalents that work identically thanks to Sass variable overrides. Prefer Bootstrap's native classes in new code to keep the codebase simple and scalable.

Sass Variable Overrides

These Bootstrap variables are overridden in _variables.scss, so Bootstrap's built-in classes automatically produce Voice Aura–consistent output:

Category Bootstrap Variables VA Values
Theme Colors $primary, $secondary, $theme-colors #0478FF (primary), #1A1919 (secondary), + section-bg
Typography $font-family-base, $headings-font-family, $display-font-sizes IBM Plex Sans / Serif, fluid clamp() sizes
Spacing $spacers Keys 0–9 (0 to 120px)
Containers $container-max-widths xxl = 1280px (matches VA)
Buttons $btn-padding-*, $btn-font-*, $btn-border-radius VA sizing & radius tokens
Cards $card-bg, $card-border-*, $card-spacer-* VA border, radius & padding tokens
Forms $input-*, $form-label-*, $form-select-* VA input styling & focus colors
Shadows $box-shadow, $box-shadow-sm, $box-shadow-lg VA's multi-layered shadow values

VA ↔ Bootstrap Class Equivalences

Where a VA class duplicates Bootstrap functionality, the Bootstrap class produces equivalent output. Both are available; prefer Bootstrap's in new code.

VA Class Bootstrap Equivalent Notes
.va-container .container xxl = 1280px via $container-max-widths
.va-flex-center .d-flex .align-items-center .justify-content-center VA is a convenience shorthand
.va-flex-between .d-flex .align-items-center .justify-content-between VA is a convenience shorthand
.va-mx-auto .mx-auto Identical
.va-display-1…4 .display-1…4 VA adds letter-spacing: -0.03em
.va-lead .lead VA adds color and margin-bottom
.va-text-muted .text-body-secondary Same purpose, different color value
.va-text-bold .fw-semibold Both set font-weight: 600
.va-bg-white .bg-white Identical
.va-bg-alt .bg-section-bg section-bg added to $theme-colors
.va-bg-dark .bg-dark .text-white-50 VA version also recolors headings
.va-btn--primary .btn .btn-dark VA uses BEM; BS uses modifier classes
.va-btn--accent .btn .btn-primary Both use $primary (#0478FF)
.va-transition .transition-base Generated via utility API extension
.va-aspect--16x9 .ratio .ratio-16x9 VA uses aspect-ratio property directly

VA-Only Classes (No Bootstrap Equivalent)

These classes are unique to the Voice Aura design system and must use .va-* naming:

.va-input-card .va-category-pill .va-pricing-card .va-blog-card .va-section-badge .va-discount-badge .va-hero__* .va-navbar-* .va-footer__* .va-auth* .va-pattern-* .va-animate-* .va-scroll-* .va-hover-* .va-waveform-bars .va-glass .va-bg-glow .va-bg-dots .va-crosshairs .va-accent-line .va-auto-grid

When to Use Which

Use Bootstrap Classes

  • Standard utility patterns (flex, spacing, display)
  • App UI components (forms, modals, dropdowns)
  • When responsive variants are needed (.d-md-flex)
  • Simple backgrounds (.bg-white, .bg-dark)

Use VA Classes

  • Voice Aura–branded components (hero, pricing, blog)
  • Design-specific patterns (TTS card, waveform, glass)
  • 8px-grid precise spacing (.va-mt-3 = 24px)
  • Decorative elements (patterns, animations, glows)

Architecture

File Structure

voice-aura-design-system/
├── scss/
│   ├── abstracts/
│   │   ├── _variables.scss       // Design tokens, Bootstrap overrides
│   │   ├── _functions.scss       // Sass utility functions
│   │   └── _mixins.scss          // Reusable mixins
│   ├── base/
│   │   ├── _reset.scss           // CSS reset / normalize
│   │   └── _typography.scss      // Type system, font imports
│   ├── components/
│   │   ├── _buttons.scss         // Button variants
│   │   ├── _cards.scss           // Card variants
│   │   ├── _pricing.scss         // Pricing cards
│   │   ├── _forms.scss           // Forms + TTS input card
│   │   ├── _badges.scss          // Badges, pills, tags
│   │   ├── _blog-card.scss       // Blog / article cards
│   │   ├── _voice-agent.scss     // Voice agent card
│   │   └── _auth.scss            // Auth forms
│   ├── layout/
│   │   ├── _navbar.scss          // Navigation bar
│   │   ├── _hero.scss            // Hero section
│   │   ├── _section.scss         // Section layouts
│   │   ├── _footer.scss          // Footer
│   │   └── _grid.scss            // Grid extensions
│   ├── vendors/
│   │   └── _bootstrap.scss       // Bootstrap 5 selective import
│   └── voice-aura.scss           // Main entry point
├── dist/css/
│   ├── voice-aura.css            // Compiled (295 KB)
│   └── voice-aura.min.css        // Minified (242 KB)
├── site/
│   └── components.html           // This file
├── package.json
└── DESIGN_SYSTEM.md              // Full documentation