← Demo Dashboard VK Style Guide  ·  Design system reference
VK Build Family Style Guide All Pages Page Layouts Prototype Versions
Design System

VK Style Guide

Color rules, typography scale, badge system, hero patterns, and page type classification for all secondary pages.

Colors Typography Badges Hero Patterns Page Types Companion Tools
01 — Color System

Two-Accent Rule

The entire secondary page system runs on two accents. The choice is determined by page type — not personal preference.

✓ Amber — Informational / Editorial
Hall of Fame gear guides (Fairchild, LA-2A, U47)
Gear Guide articles (Neve 1073 Guide)
Magazine / editorial (Playback)
About, careers, historical content
Section eyebrows, year markers, timeline dots, badges
✓ Red — Transactional / Program
Trade Program, Audio Consultants
Studio Professionals, Financing
Any page where the primary goal is a form submission or purchase
Section eyebrows, form accents, program badges
Universal rule: CTAs and Shop buttons are always Red #C0392B regardless of page type. Amber never appears on a buy/CTA button.
Full Palette
#D4860A — Amber
Editorial accent · Vintage/Used pricing · HOF eyebrows
#C0392B — VK Red
All CTAs · Transactional page accent · Form focus borders
#1A1A18 — Near-Black
All body text · Headings · Dark section backgrounds
#EDE8E2 — Hero Bg
Hero sections · CTA sections on all secondary pages
#F7F5F2 — Off-White
Grid/card section backgrounds · var(--off-white)
#FDFCFB — Warm White
Credential strips · Stat bars · var(--warm-white)
Banned
#fde8e6 — too pinkish. Use rgba(26,26,24,0.07) for neutral badge/pill backgrounds.
rgba(192,57,43,0.04–0.08) as standalone section background — looks pinkish. Use var(--off-white).
Amber on CTAs, shop buttons, or any actionable element.
02 — Typography

Type Scale

Two fonts only. Playfair Display for display/headings. DM Sans for everything else. Never mix on the same element type.

Display H1
Playfair Display
48–56px / weight 700
line-height 1.05
Hero Headline
H2 Section
Playfair Display
32–40px / weight 700
line-height 1.2
Section Heading
H3 Card
Playfair Display
18–22px / weight 700
line-height 1.3
Card or Sub-heading
Eyebrow
DM Sans
10–11px / weight 700
uppercase / 0.14–0.22em tracking
color: amber #D4860A
Section Eyebrow Label
Body
DM Sans
15–17px / weight 400
line-height 1.65–1.75
Body copy. Readable at arm's length. Never below 12px anywhere on the page including captions, labels, and footnotes.
Pricing
DM Sans ONLY
weight 500
color: near-black
$4,999 · From $34.99
Stat Number
Playfair Display
28–40px / weight 700
color: near-black
30+
Pricing rule: DM Sans only on all numbers and prices. Never Playfair Display on pricing. Font-weight 500, color near-black.

Eyebrow scale and usage

All eyebrows are DM Sans, weight 700, uppercase, amber #D4860A. Size and tracking vary by context. Never below 10px. Never grey — eyebrows are always amber on secondary pages.

Hero / section eyebrow
11px / 0.22em tracking
.pg-eyebrow
Vintage King Hall of Fame
Top of every page section. Sits above H1/H2. Widest tracking — most editorial.
Spec / stat label
11px / 0.16em tracking
.pg-stat-label
Year  ·  Topology  ·  Gain Stage
HOF spec strips, stat blocks, year/topology markers. Sits above the value (e.g., "1959", "Tube").
Card / explore eyebrow
10px / 0.14em tracking
.pg-explore-eyebrow
Related  ·  Buyer's Guide
Inside cards, explore tiles, mini-modules. Tighter — needs to fit a card frame.
Sticky bar / micro
10px / 0.12em tracking
inline · sticky CTAs
In Stock  ·  Ships Today
Sticky CTA bars and very tight pill contexts. Tightest tracking — width-constrained.
Eyebrow rules:
  • Always amber #D4860A on secondary pages. Never grey, never red.
  • Always DM Sans, weight 700, uppercase. Never Playfair, never lowercase.
  • Never below 10px. Never above 12px on secondary pages (12px reserved for legacy/core ecommerce).
  • One eyebrow per section header. Don't stack two amber eyebrows in a row.
  • If the eyebrow sits above an H1/H2, leave 12–16px below it before the heading.
03 — Badge System

Labels and Badges — Two Families

Two distinct badge families, used in different contexts. Editorial badges are text-only and flow inline with card copy on storytelling pages. Product Card badges use a tinted fill so they read against product imagery on PLP and grid layouts. Never mix the two systems on the same page.

Family 1 — Editorial (text-only)

Used on HOF timelines, buyer guides, vintage price labels, and program/transactional pages. No fill. Inline display, flowing with card content.

Version tag
Amber — editorial
Rev 1 — "Grayface"
Used in HOF timelines. Text only, no fill.
Buyer guide tag
Amber — editorial
In the Box
Reference
Pro Studio
Top of card, inline block, bottom padding 10px.
Program badge
Red — transactional
VK Exclusive
Trade Credit
Used on program/transactional pages only.
Vintage price
Amber always
Used — $4,800
Vintage/used pricing labels only. DM Sans, weight 500.
Family 2 — Product Card

Used on PLP product cards and any grid layout where badges must read against product imagery. Four canonical names — never invent new ones. Two visual styles: Tinted (default, strongest visibility) and Outline (lighter weight — use when imagery is busy or you want a quieter signal). 10px/700/0.10em tracking, 2px corner radius.

Style A — Tinted (default)
badge-new
Neutral tint
New
Newly added to inventory in the last ~30 days.
badge-vintage
Amber tint
Vintage
Used · Vintage
Vintage / used inventory. Always amber.
badge-bestseller
Red tint
Best Seller
Top-selling SKU in its category. Red signals transactional priority.
badge-featured
Neutral tint
Featured
Editor's pick / staff featured. Neutral so it doesn't compete with vintage or bestseller.
Style B — Outline (quieter)
badge-new
Outline · neutral
New
Same name, lighter visual weight. Pair with photo-heavy cards.
badge-vintage
Outline · amber
Vintage
Used · Vintage
Vintage / used. Outline keeps the amber recognizable without competing with product imagery.
badge-bestseller
Outline · red
Best Seller
Top seller, quieter signal. Use when card already has an Open Box / Sale price treatment.
badge-featured
Outline · neutral
Featured
Editor's pick, lighter. Good for premium / hero SKUs where you don't want a loud chip.
/* Base + 4 names (tinted by default) */
.badge { display:inline-block; font-size:10px; font-weight:700; letter-spacing:0.10em; text-transform:uppercase; padding:3px 8px; border-radius:2px; width:fit-content; }
.badge-new        { background:rgba(26,26,24,0.07);  color:var(--near-black); }
.badge-vintage    { background:var(--amber-bg);      color:var(--amber); }
.badge-bestseller { background:rgba(192,57,43,0.08); color:var(--vk-red); }
.badge-featured   { background:rgba(26,26,24,0.07);  color:var(--near-black); }

/* Outline modifier — stack on any name:  */
.badge--outline                   { background:transparent; border:1px solid currentColor; padding:2px 7px; }
.badge--outline.badge-new         { color:var(--near-black); border-color:rgba(26,26,24,0.30); }
.badge--outline.badge-vintage     { color:var(--amber);      border-color:rgba(212,134,10,0.45); }
.badge--outline.badge-bestseller  { color:var(--vk-red);     border-color:rgba(192,57,43,0.40); }
.badge--outline.badge-featured    { color:var(--near-black); border-color:rgba(26,26,24,0.30); }
Do
Editorial pages: text-only, no fill
Product cards: tinted (default) or outline (quieter)
10px, 700 weight, 0.10em tracking, uppercase — both families
Use the 4 canonical product-card names: new, vintage, bestseller, featured
Stack badge--outline on any name as a modifier
Only use badges if factually accurate
Don't
Filled pill backgrounds on editorial pages
Solid white-on-color fills (use tinted only)
position:absolute on badge — causes clip/overlap issues
Invent new product-card badge names — stick to the 4
Mix editorial and product-card families on the same page
04 — Hero Patterns

Hero Types — 4 Families, 11 Variants

Every secondary page header uses one of these four hero families. Hero 2 has 5 right-panel variants. All variants below are light — dark heroes are reserved for category PLPs and brand spotlights only (see Page Layouts).

Looking for the full visual catalog?
For all 11 hero variants (light + dark), every body section, page-type recipes, and "View live demo" links on every block, see Page Layouts — The Lego Catalog.
Open Page Layouts →
FULL-BLEED IMAGE · 520–640PX
Hero 1 — Big Photo (full-bleed)
Full-bleed image, copy overlaid or below
Single full-width image, ~520–640px tall.
Headline + eyebrow sits below the image (or overlaid on a darkened bottom-left zone).
Used on: Studio Installations, About, Make Your Mark — when there's a hero-quality photo of a console/studio/engineer.
Not for: gear detail items where product needs a clean white seamless.
Copy placement variants
Copy below in #EDE8E2 band
Copy overlaid on darkened scrim
STATS · PHOTO · LIST
Hero 2 — Light 50/50 (Trade pattern)
Full-bleed 50/50 split, both panels reach edges
Left 50%: background:#EDE8E2 · eyebrow, H1, body, CTAs
Right 50%: background:#fff · stats grid, photo, or feature list
grid-template-columns:1fr 1fr;min-height:560px
Used on: Trade Program, Studio Professionals, Audio Consultants, Financing — program/conversion pages.
Right-panel variants
Stats grid
Full image
Framed image
Feature list
Product grid
Category PLP — hero rule (LOCKED)
Category PLPs default to a DARK hero. The dark band signals authority + transactional intent. Light hero is reserved for storytelling pages (About, Heritage, gear stories) and editorial PLP drops only.

3 PLP variants — pick by intent:
1. Default (dark strip) — every standard category landing. Dark band hero · pill filter row · 3-up product grid.
2. Spotlight (featured + co-op dark) — brand spotlights, partner weeks, single-feature pushes.
3. Editorial (light six-grid) — opt-in only · curated drops, "Picks of the Week," PPC / email landing pages, staff picks.

See live: microphones-plp-default.html (default · dark) · microphones-plp-spotlight.html (spotlight · dark) · microphones-plp-editorial.html (editorial · light)
PRODUCT · CONTAIN
Hero 3 — HOF Pattern
Light text left + framed image right with horizontal margins
Left panel: background:#EDE8E2 · eyebrow, H1, intro, year/topology spec strip, CTAs
Right panel: background:#fff · product photo with horizontal padding — image graphic ends flush with the bottom of the hero.
Image: object-fit:contain · height:460–520px
Used on: Fairchild, LA-2A, U47, Neumann U67, Neve 1073, UA 175B — HOF gear detail pages.
Hero 4 — Text Only
Single light panel, type-led, no image
Full-width background:#EDE8E2 panel.
Eyebrow + large H1 + intro + dual CTA. Centered or left-aligned.
Used on: Policy pages, FAQ index, Hall of Fame index, Careers index — when no hero image exists or the page is purely informational.
Pair with a strong second section (grid, stat strip, or content card) immediately after.
Hero in page context — full-page silhouette for each variant
Hero 1 in context · About / Make Your Mark
Hero 2 in context · Trade / Studio Pros
Hero 3 in context · HOF gear page
Hero 4 in context · Policy / index pages
PLP page silhouettes — standard category vs editorial / curated drop
Standard PLP · no hero · transactional
Dark strip hero · pill filter row + 3-up product grid. Default for category landings. Live: microphones-plp-default.html
Editorial PLP · Hero 2 Product Grid · curated drop
50/50 hero with 6 curated picks on the right. Use only for drops, campaigns, or staff picks. Live: microphones-plp-editorial.html
Never
Dark hero backgrounds on secondary pages — always light #EDE8E2.
object-fit:cover on product shots with white backgrounds — use contain.
More than one hero pattern stacked at the top of a page.
Captions referencing specific studios/clients unless VK-verified.
05 — Page Classification

Page Types

Locked rule: ALL secondary pages use amber #D4860A as their accent — eyebrows, page CTAs, accent lines, step indicators. Red #C0392B is reserved for core ecommerce screens only (homepage, category, product, cart, checkout) and shared nav chrome (mega menu, "Talk to an Expert" button, cart badge). Form focus borders stay red on all pages per design system rule.

Editorial / Informational

HOF and Gear Guides

Content-first pages. Goal is to educate and build trust. The purchase happens at Vintage King but the decision is made here.

  • Fairchild 660/670
  • Teletronix LA-2A
  • Neumann U 47 / U 48 / U 67
  • Neve 1073 (all versions)
  • UA 175B / Apollo X
  • PLAYBACK Magazine
  • Hall of Fame index
  • About, Careers
Accent: Amber #D4860A
Program / Conversion

Program and Conversion Pages

Action-first pages. Goal is form submission, quote request, or direct purchase. Every element drives toward one CTA. Same amber accent — only the form focus border stays red.

  • Trade Program
  • Audio Consultants
  • Studio Professionals
  • Studio Installations
  • Financing / Section 179
  • Make Your Mark (careers form)
Accent: Amber #D4860A
Universal — applies to all secondary pages
Page CTAsAmber #D4860A on secondary pages. Red is for core ecommerce only.
Nav ChromeMega menu, "Talk to an Expert", cart badge stay Red — shared chrome, not page accent.
Sticky BarDark (#1A1A18) bar with Red CTA — treated as persistent nav chrome, not page accent. Every page has one.
Form FocusAlways var(--vk-red) border on every page — locked design system rule.
Min Font Size12px everywhere. Eyebrows allowed down to 10px (DM Sans 700 uppercase amber).
PricingDM Sans only, weight 500, near-black. Never Playfair on numbers.
JSON-LDEvery page needs at least one structured data block (Service, HowTo, FAQPage, Article, JobPosting, or Product).
HeroOne of the 4 locked types (Big Photo · Light 50/50 · HOF Pattern · Text Only). Always light, never dark.
No LocationsVK has no showrooms. Never reference Detroit/LA/Nashville as physical locations.
06 — Sticky Bar

Bottom Sticky Bar

Required on every page. Fixed to the bottom of the viewport. Dark background, red CTA, ghost secondary link.

Page Title or Product Name
Supporting context — price range or program benefit
Primary CTA Secondary Link
CSS: position:fixed;bottom:0;left:0;right:0;z-index:500 · Add height:68px spacer div before closing wrapper to prevent content overlap.
07 — Spacing and Rhythm

Layout System

One container width. One vertical rhythm. Used by every secondary page, the demo dashboard, and this style guide.

Container
max-width 1160px
.sg-wrap pattern: max-width:1160px;margin:0 auto;padding:0 40px
Narrow content (policy/legal): max-width:820px
Hero text column: max-width:520px for body copy
Section padding
64px vertical · 40px horizontal
Standard section: padding:64px 0
Hero section: padding:96px 0 (taller for impact)
Strip sections (trust, credential): padding:24px 0
Section dividers
1px hairline, never thick rules
border-bottom:1px solid rgba(26,26,24,0.08)
Never thicker than 1px. Never solid black. Never colored.
Grid gap
1px on dark bg (editorial cards)
Pattern: gap:1px;background:rgba(26,26,24,0.08) with white cards inside.
Creates a hairline grid. Used for stats, cards, page-type tiles.
Avoid wide gutters (12px+) — keeps editorial density.
Vertical rhythm cheat sheet
Eyebrow → H1/H212px below eyebrow
H1/H2 → body8–12px below heading
Body → CTA32–40px below body
Section → section64px (border + padding)
Card padding28px standard, 20px compact
Sub paragraph48px below before content
08 — Buttons

Button System

Three button types. Amber primary on secondary pages. Red reserved for "Talk to an Expert", form submits, and core ecommerce. Ghost for secondary actions.

Primary — Amber
Secondary page CTAs
.btn-primary
Get Started
background:#D4860A · color:#fff · padding:13px 28px · font-size:12px · weight:600 · letter-spacing:0.08em · uppercase · border-radius:3px
Hover: opacity 0.88
Red — Talk to Expert / Forms
Nav chrome + form submits + core ecommerce
.btn-red
Talk to an Expert
Same spec as primary, swap to #C0392B.
Use only for: "Talk to Expert" nav button, form submits, core ecommerce CTAs (homepage/category/product).
Ghost — Secondary action
"Learn more", inline secondary links
.btn-ghost
Learn More →
No background, no border. Text only with arrow. color:rgba(26,26,24,0.65) · weight:500.
Hover: color → near-black, arrow → translateX(4px)
Sticky bar CTA
Bottom-fixed bar on every page
.pg-stick-cta
Shop UA 175B →
Sticky bar treated as persistent nav chrome — keeps red. padding:10px 22px · font-size:13px · border-radius:2px.
Universal button rules
  • Always DM Sans, weight 600, uppercase. Never Playfair, never lowercase.
  • Border-radius: 3px standard, 2px on sticky bar. Never pill (border-radius:999px) on secondary pages.
  • No drop shadows. No gradients. No icon-only primary buttons.
  • Pair: 1 primary + 1 ghost. Never 2 primary buttons in the same section.
  • Disabled: opacity:0.4 · cursor:not-allowed. No grey-out backgrounds.
09 — Form Fields

Form System

White inputs on light backgrounds. Always red focus border (locked design system rule, regardless of page accent). Labels above inputs, never inside.

Default state
Focus state — always red border (locked)
⚠ Error — Please enter a valid phone number
Select / dropdown
Form rules
  • Inputs: background:#fff · border:1px solid rgba(26,26,24,0.18) · padding:12px 14px · font-size:14px · border-radius:3px
  • Focus: border:2px solid var(--vk-red) + reduce padding by 1px to keep dimensions stable. Always red — locked rule.
  • Labels: 11px DM Sans 600 uppercase, 0.08em tracking, color rgba(26,26,24,0.7), 8px above input. Never inside (no floating labels).
  • Error: border-color:#C0392B · text:#C0392B + warning glyph. Never red background fill.
  • Submit button: red (form CTA exception to amber rule).
  • Required fields: asterisk in label, never red placeholder text.
10 — Strip Patterns

Trust, Credential and Explore Strips

Three repeatable strip patterns. Every secondary page uses at least one. Always 3-up on desktop, stack on mobile.

Strip wireframes — structural template
Trust · 3-up icons
Credential · stat + body
Explore · 3-up cards
Trust strip — sits below hero on every page
Free shipping over $99
No surprise fees at checkout
VK Warranty included
2-year coverage on every order
0% financing available
Up to 36 months on qualifying gear
Spec: padding:24px 32px · 32px amber circle icon · 14px headline / 12px sub · 3-up grid, gap 24px
Credential strip — builds trust on program/conversion pages
30+ years
Trusted by Grammy-winning engineers, top-tier studios, and serious project rooms across North America.
Spec: background:#F5E6C8 · border-left:3px solid #D4860A · padding:18px 28px · Playfair stat + DM Sans body
Explore strip — sits above footer, drives crawl + cross-page traffic
Related
Hall of Fame
The gear that defined modern recording — deep-dive guides on every classic.
Explore →
Buyer's Guide
Which Console Fits?
Compare formats, channel counts, and price tiers in one place.
Read guide →
Get Help
Talk to an Expert
15+ engineers on staff. Live chat, video, or callback — same day.
Start chat →
Spec: 3-up cards, 1px gap on rgba(26,26,24,0.08) · amber eyebrow (10px / 0.14em) · Playfair H3 18px · DM Sans body
11 — Card System

Editorial Card Grid

One card pattern across the entire system: white card on a 1px hairline grid. Used on demo dashboard, this style guide, and every secondary page. Replaces traditional gutter-spaced cards.

Card grid wireframe — 3-up structural template
Anatomy (top to bottom): amber eyebrow → Playfair H3 → DM Sans body → ghost CTA. Cards float on 1px hairline grid (no gutters, no shadows).
Editorial

Hall of Fame Index

Deep-dive gear guides on the classics that defined modern recording.

Explore →
Program

Trade Your Gear

Get a same-day quote and trade credit toward your next piece.

Start trade →
Service

Studio Installations

Design, wiring, acoustic treatment, and gear sourcing — turnkey.

See projects →
Card spec
  • Wrapper: background:rgba(26,26,24,0.08) · display:grid · gap:1px · border:1px solid rgba(26,26,24,0.08) · border-radius:4px · overflow:hidden
  • Card: background:#fff · padding:28px 28px 24px (compact: 20px 20px 18px)
  • Anatomy: amber eyebrow (11px) → Playfair H3 (18–20px) → DM Sans body (13px) → ghost CTA (12px uppercase)
  • Grid: 3-up desktop · 2-up tablet · 1-up mobile. Always equal columns.
  • No drop shadows. No card-level border-radius. No hover-lift transforms — keep it editorial, not appy.
  • Hover state: subtle bg shift to var(--off-white) on entire card. CTA text → near-black + arrow translate.
12 — Image Direction

Photo and Placeholder System

Build the page with placeholders at production dimensions. Swap to real photo when VK photographer delivers. Never delay a page waiting on photography.

Placeholder block — locked spec
[ Photo placeholder — Console detail ]
background:var(--off-white) · border:1px solid rgba(26,26,24,0.08) · min-height: matches final image dim
Caption: DM Sans 12px / weight 500 / 0.14em / uppercase / color rgba(26,26,24,0.32) / text-align center
Hero placeholders (min-height)
Hero 1 — Big Photo: 520–640px
Hero 2 — Light 50/50 right panel: min-height:560px
Hero 3 — HOF Pattern right image: 460–520px
Hero 4 — Text Only: no image
Body placeholders (min-height)
Service feature card: 280px
Engineer/portrait: 260px · aspect-ratio 3/4
Gear heritage body: 520px
Version cards: 320px · Timeline cards: 360px
Shop CTA card: 300px
Photo subjects — what to shoot
YES — hero-quality • Console close-ups (faders, EQ knobs)
• Studio environments (desk, racks, monitors)
• Engineer hands working on gear
• Patch bays, tape machines, racks of outboard
• Vintage gear in real studio context
NO — never use • Stock photos of "people in studios"
• Smiling stock-model headshots
• Composite renders / 3D mockups
• Photos of clients/studios without VK verification
• Individual gear items in full-bleed hero (use HOF pattern instead)
Treatment rules:
  • object-fit:cover for full-bleed/environmental shots. object-fit:contain for product shots on white seamless.
  • No filters, no heavy grading, no duotones. Natural color, slightly warm white balance.
  • No drop shadows on images. No rounded corners > 3px on photos.
  • Captions sit below image, not overlaid (exception: Hero 1 darkened bottom-left zone).
  • Never reference specific clients/studios in captions unless VK-verified — use generic "professional studio" / "tracking room" instead.
13 — Voice and Tone

Editorial Voice

CB2 reference: one message per zone, white space as a feature. Sentence-case headings. Direct, expert, never salesy.

Voice anchors
Pro Audio Outfitter — locked tagline, never remove from nav
VK Warranty — never "Full Warranty" or "Lifetime"
Talk to an Expert — never "Contact us" / "Get in touch"
The Short List — homepage tabbed product section
Rare Gear — homepage Vintage section H2
Reference brands
CB2 — primary visual + tone reference
Apple — typography hierarchy, restraint
Sweetwater and B and H — competitor benchmarks (what NOT to do: never as cluttered)
Aesop — editorial discipline on body copy
Writing rules
Always • Sentence case on H1/H2 (not Title Case)
• Active voice ("Trade your gear" not "Gear can be traded")
• Specific numbers ("30+ years", "15 engineers")
• Em dashes — never double hyphens
• Curly quotes "smart" never straight "dumb"
Never • Exclamation points in body copy (rare on CTAs only)
• "Click here" / "Learn more!" hype language
• Reference cities as VK locations (no Detroit/LA/Nashville)
• "Showroom" / "visit us" / "in-store"
• HTML entities in visible UI (always write the word "and")
• Made-up engineer/studio quotes
No physical locations: VK has no showrooms, retail, or city offices. Never imply otherwise. los-angeles.html-style location pages are cancelled. Use "Talk to an Expert" + video chat / callback / live chat instead.
14 — Motion

Motion and Transitions

Restraint. Editorial pages don't bounce, fade, or parallax. Motion is a quiet confirmation, not a feature.

Standard transition
0.15–0.3s ease-out
Hover states: transition:all 0.15s ease-out
Reveals (sticky bar drop-in): transition:transform 0.3s ease-out
Mega menu open: transition:opacity 0.2s ease-out
Never longer than 0.4s. Never ease-in-out (feels sluggish).
What moves
OK: color/opacity on hover, sticky bar slide-in, mega menu fade, ghost CTA arrow translate (4px), button opacity 0.88 on hover
Never: body copy, headlines, hero photos, prices, pricing tables, scroll-triggered reveals, parallax
Reduced motion: Always honor @media (prefers-reduced-motion:reduce). Disable transforms, fades over 0.1s, and any auto-playing animation. Keep critical state changes (focus, error) instant.
15 — JSON-LD Library

Structured Data

Every page needs at least one JSON-LD block — for Google SGE, AI agents (ChatGPT/Perplexity/Claude), and search ranking. Paste-ready snippets below. Replace bracketed values per page.

Service — for Trade Program, Studio Installations, Audio Consultants
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "[Service Name]",
  "provider": {"@type": "Organization", "name": "Vintage King Audio", "url": "https://vintageking.com"},
  "areaServed": "United States",
  "description": "[140–160 char description]",
  "serviceType": "[Trade-In | Studio Installation | Consultation]"
}
</script>
FAQPage — for FAQ, Returns, Shipping, Warranty, any Q and A page
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type": "Question", "name": "[Question]?", "acceptedAnswer": {"@type": "Answer", "text": "[Answer]"}},
    {"@type": "Question", "name": "[Question]?", "acceptedAnswer": {"@type": "Answer", "text": "[Answer]"}}
  ]
}
</script>
HowTo — for Sell/Trade flow, Section 179 process, Setup guides
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "[How to Trade Your Gear]",
  "step": [
    {"@type": "HowToStep", "name": "Submit", "text": "[Step 1 description]"},
    {"@type": "HowToStep", "name": "Quote", "text": "[Step 2 description]"},
    {"@type": "HowToStep", "name": "Ship", "text": "[Step 3 description]"}
  ]
}
</script>
Article — for HOF gear pages, PLAYBACK Magazine, editorial content
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "[Article Title]",
  "author": {"@type": "Organization", "name": "Vintage King Audio"},
  "publisher": {"@type": "Organization", "name": "Vintage King Audio", "url": "https://vintageking.com"},
  "datePublished": "2026-04-18",
  "description": "[140–160 char description]"
}
</script>
JobPosting — for Make Your Mark / Careers
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "[Position Title]",
  "hiringOrganization": {"@type": "Organization", "name": "Vintage King Audio"},
  "employmentType": "FULL_TIME",
  "datePosted": "2026-04-18",
  "description": "[140–160 char description]"
}
</script>
Product — for HOF gear detail pages with shop link
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "[Gear Name]",
  "brand": {"@type": "Brand", "name": "[Brand]"},
  "description": "[140–160 char description]",
  "category": "Pro Audio Equipment"
}
</script>
Meta requirements (every page):
  • Title: [Page Name] — [Benefit Hook] | Vintage King
  • Meta description: 140–160 chars, action-oriented
  • Canonical URL set
  • OG image, OG title, OG description
  • Hero <p> gets class="speakable" for Google SGE
17 — Mega Menu

Mega Menu Spec

Live demo at top of this page. Six parent categories max — navigation is a conversion tool, not a sitemap.

Trigger and behavior
Hover-open with 200ms delay-close (prevents flicker)
Position: top:[nav.bottom]px recalculated on scroll/resize
Backdrop: subtle drop-shadow, white background
Closes on: outside click, Escape key, link selection
Layout
Multi-column grid (3–5 cols depending on parent)
Column header: 12px DM Sans 700 uppercase, near-black
Link list: 13px DM Sans 400, color rgba(26,26,24,0.7)
"View all" link: amber, with arrow → translate on hover
Featured image/promo card optional (right side)
Locked navigation rules
  • Six parent categories max. Nav is a conversion tool, not a sitemap.
  • Open Box excluded from mega menu (Sweetwater and B and H benchmark).
  • "Pro Audio Outfitter" tagline locked — never remove.
  • Crawl/GEO surface: All Categories CMS page + OPO pre-footer covers what nav doesn't.
  • Ask button hover dropdown: Live Chat / Callback / Video Chat — three tiers.
  • "Talk to an Expert" button stays red — shared chrome, not page accent.
18 — Mobile

Mobile Breakpoints and Behavior

Status: Desktop-first build. Mobile pass happens after all desktop pages are complete and approved. This section locks the rules so mobile pass is consistent when it runs.

Breakpoints
Desktop: ≥980px — full layout, all multi-col grids
Tablet: 700–979px — 3-col grids → 2-col, hero stays 50/50
Mobile: <700px — everything stacks 1-col, hero text above image
Sticky bar: padding:12px 20px on mobile
Hero behavior
Hero 1 — Big Photo: image full-width above text, 280–360px tall
Hero 2 — Light 50/50: text panel above image panel, both full-width
Hero 3 — HOF Pattern: text first, image second, both full-width
Hero 4 — Text Only: stays as-is, padding reduced to 48px top/bottom
Universal mobile rules
  • Section padding reduces: 64px → 40px top/bottom on mobile.
  • Container padding: 40px → 20px horizontal on mobile.
  • H1: 50px → 32px on mobile. H2: 36px → 26px. H3 stays.
  • Body type stays 15–17px (never shrink for mobile — readability priority).
  • Buttons: full-width on mobile when stacked (1 per row).
  • Tap targets: minimum 44×44px (iOS HIG / Android Material).
  • Sticky bar collapses to icon-row + 1 CTA on <480px.
19 — Accessibility

A11y Standards

WCAG 2.2 AA target across the entire system. Everything below is a hard requirement, not a goal.

Color contrast
Body text on white: rgba(26,26,24,0.7)+ = 8.9:1 ✓
Amber #D4860A on white: 4.6:1 ✓ (AA large text only — keep eyebrows ≥10px bold)
White on near-black: 18.5:1 ✓
Never: light grey on off-white, amber as body text on white
Focus states
All interactive elements: visible focus ring
Default: outline:2px solid var(--vk-red); outline-offset:2px
Form fields: 2px red border (already locked)
Never: outline:none without replacement
Semantic landmarks
Page: <header> <nav> <main> <footer>
One <h1> per page (hero headline)
Hero <p>: class="speakable" (Google SGE)
Skip-to-content link: first focusable element
Required attributes
Images: alt="" (descriptive, or empty for decorative)
Links: never empty, never just "click here"
Form inputs: associated <label for="">
Icon buttons: aria-label="..."
Mega menu: role="menu" + arrow-key nav
Reduced motion: respected (see Section 14)
20 — No-Go List

Banned Patterns

Hard rules. If you see one of these in a build, fix it before push. No exceptions, no "but it looks better with..."

Color and visual
  • #fde8e6 — pinkish on uncalibrated screens
  • rgba(192,57,43,0.04–0.08) as standalone bg — pinkish
  • Gradients of any kind on body content
  • Drop shadows on cards, buttons, images
  • Border-radius > 3px (4px on grid wrappers exempt)
  • Pill buttons (border-radius:999px)
  • Dark heroes on secondary pages
  • Amber CTAs on core ecommerce screens
  • Red CTAs on secondary pages (except form submits + Talk to Expert)
Typography and content
  • Playfair Display on prices or any number
  • Font sizes < 12px on body type
  • Eyebrows < 10px or in any color other than amber
  • Title Case on H1/H2 (sentence case only)
  • Exclamation points in body copy
  • Ampersand symbols (&) in any visible UI text — HARD RULE. Always write the word "and". Applies to titles, eyebrows, body copy, buttons, badges, labels, meta tags, tooltips. Only exceptions: brand names that use it in their legal mark (none currently in scope) and inside <code> examples
  • HTML entities in visible UI — never use &amp; or &quot;; type the literal character or word
  • Reference to Detroit/LA/Nashville as VK locations
  • "Showroom" / "visit us" / "in-store" language
  • Made-up engineer or studio quotes
  • Stock photos of "people in studios"
  • Auto-playing video, parallax, scroll-triggered reveals on body content
  • Pages without a JSON-LD block
VK Style Guide
Color · Typography · Badges · Heroes · Page Types
View Navigator Hall of Fame ↑