Meituan LongCat 2.0 – Automotive
via AtlasCloud · Generated
- AIMAC Debt 16.12
- Cost $0.03
- Total Violations 31
- HTML Size 72 KB
- Em Dashes 16
Screenshot
View Live Page
Accessibility Issues Found
3 Critical 28 Serious
-
color-contrast serious 28 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<h3>Estimated Monthly Payment</h3> -
select-name critical 3 instances
Select element must have an accessible name
Example HTML
<select>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AutoHaven Motors — Where Performance Meets Precision</title>
<style>
:root {
--bg-primary: #0a0a14;
--bg-secondary: #12121f;
--bg-tertiary: #1a1a2e;
--bg-card: #16162a;
--accent: #f0a500;
--accent-hover: #ffbe33;
--accent-dark: #c48200;
--accent-glow: rgba(240, 165, 0, 0.25);
--text-primary: #ffffff;
--text-secondary: #b0b0c8;
--text-muted: #6a6a80;
--border: #2a2a40;
--border-light: #3a3a55;
--success: #4caf50;
--danger: #e85d04;
--radius-sm: 6px;
--radius: 10px;
--radius-lg: 16px;
--radius-xl: 20px;
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3);
--shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
--shadow-lg: 0 8px 40px rgba(0, 0, 0, 0.5);
--shadow-glow: 0 0 30px var(--accent-glow);
--transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
--font-heading: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;
--font-body: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
scroll-padding-top: 90px;
}
body {
font-family: var(--font-body);
background-color: var(--bg-primary);
color: var(--text-primary);
line-height: 1.7;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Custom Scrollbar */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: var(--bg-primary);
}
::-webkit-scrollbar-thumb {
background: var(--border-light);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--accent);
}
/* Scroll Progress Bar */
#scroll-progress {
position: fixed;
top: 0;
left: 0;
height: 3px;
background: linear-gradient(90deg, var(--accent), var(--accent-hover));
z-index: 10000;
transition: width 0.1s linear;
border-radius: 0 2px 2px 0;
}
/* ============ HEADER ============ */
.header {
position: sticky;
top: 0;
z-index: 1000;
background: rgba(10, 10, 20, 0.85);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border-bottom: 1px solid var(--border);
transition: var(--transition);
}
.header.scrolled {
box-shadow: var(--shadow);
border-bottom-color: var(--border-light);
}
.header-inner {
max-width: 1300px;
margin: 0 auto;
padding: 0 24px;
display: flex;
align-items: center;
justify-content: space-between;
height: 72px;
}
.logo {
display: flex;
align-items: center;
gap: 12px;
text-decoration: none;
color: var(--text-primary);
flex-shrink: 0;
}
.logo-icon {
width: 44px;
height: 44px;
border-radius: var(--radius-sm);
object-fit: cover;
border: 2px solid var(--accent);
}
.logo-text {
display: flex;
flex-direction: column;
}
.logo-name {
font-family: var(--font-heading);
font-size: 1.35rem;
font-weight: 800;
letter-spacing: -0.5px;
line-height: 1.1;
color: var(--text-primary);
}
.logo-tagline {
font-size: 0.7rem;
color: var(--accent);
letter-spacing: 1.5px;
text-transform: uppercase;
font-weight: 600;
}
/* Navigation */
.nav {
display: flex;
align-items: center;
gap: 4px;
}
.nav a {
text-decoration: none;
color: var(--text-secondary);
font-weight: 500;
font-size: 0.9rem;
padding: 8px 14px;
border-radius: var(--radius-sm);
transition: var(--transition);
position: relative;
white-space: nowrap;
}
.nav a:hover,
.nav a:focus {
color: var(--text-primary);
background: rgba(255, 255, 255, 0.05);
}
.nav a.nav-cta {
background: var(--accent);
color: #000;
font-weight: 700;
padding: 10px 20px;
margin-left: 8px;
border-radius: var(--radius);
transition: var(--transition);
}
.nav a.nav-cta:hover {
background: var(--accent-hover);
box-shadow: var(--shadow-glow);
transform: translateY(-1px);
}
.mobile-menu-btn {
display: none;
background: none;
border: none;
cursor: pointer;
padding: 8px;
color: var(--text-primary);
font-size: 1.5rem;
line-height: 1;
}
/* ============ HERO ============ */
.hero {
position: relative;
min-height: 600px;
display: flex;
align-items: center;
overflow: hidden;
}
.hero-bg {
position: absolute;
inset: 0;
z-index: 0;
}
.hero-bg img {
width: 100%;
height: 100%;
object-fit: cover;
filter: brightness(0.35) saturate(1.2);
}
.hero-bg::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(135deg, rgba(10, 10, 20, 0.9) 0%, rgba(10, 10, 20, 0.5) 50%, rgba(10, 10, 20, 0.8) 100%);
}
.hero-content {
position: relative;
z-index: 1;
max-width: 1300px;
margin: 0 auto;
padding: 80px 24px;
width: 100%;
}
.hero-badge {
display: inline-block;
background: var(--accent-glow);
border: 1px solid var(--accent);
color: var(--accent);
font-size: 0.8rem;
font-weight: 700;
letter-spacing: 2px;
text-transform: uppercase;
padding: 6px 16px;
border-radius: 50px;
margin-bottom: 20px;
}
.hero h1 {
font-family: var(--font-heading);
font-size: clamp(2.4rem, 5vw, 3.8rem);
font-weight: 900;
line-height: 1.1;
letter-spacing: -1px;
margin-bottom: 20px;
max-width: 700px;
}
.hero h1 .accent {
color: var(--accent);
position: relative;
}
.hero-subtitle {
font-size: 1.15rem;
color: var(--text-secondary);
max-width: 550px;
margin-bottom: 32px;
line-height: 1.8;
}
.hero-actions {
display: flex;
gap: 14px;
flex-wrap: wrap;
}
.btn {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 14px 28px;
font-size: 0.95rem;
font-weight: 700;
border-radius: var(--radius);
cursor: pointer;
border: none;
text-decoration: none;
transition: var(--transition);
font-family: var(--font-body);
letter-spacing: 0.3px;
}
.btn-primary {
background: var(--accent);
color: #000;
}
.btn-primary:hover {
background: var(--accent-hover);
box-shadow: var(--shadow-glow);
transform: translateY(-2px);
}
.btn-outline {
background: transparent;
color: var(--text-primary);
border: 2px solid var(--border-light);
}
.btn-outline:hover {
border-color: var(--accent);
color: var(--accent);
transform: translateY(-2px);
}
.btn-sm {
padding: 10px 20px;
font-size: 0.85rem;
}
.hero-stats {
display: flex;
gap: 40px;
margin-top: 48px;
flex-wrap: wrap;
}
.hero-stat {
text-align: left;
}
.hero-stat-value {
font-family: var(--font-heading);
font-size: 2rem;
font-weight: 900;
color: var(--accent);
line-height: 1;
}
.hero-stat-label {
font-size: 0.8rem;
color: var(--text-muted);
margin-top: 4px;
text-transform: uppercase;
letter-spacing: 1px;
}
/* ============ SECTIONS ============ */
.section {
padding: 80px 24px;
max-width: 1300px;
margin: 0 auto;
}
.section-header {
text-align: center;
margin-bottom: 50px;
}
.section-label {
display: inline-block;
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 10px;
}
.section-title {
font-family: var(--font-heading);
font-size: clamp(1.8rem, 3.5vw, 2.6rem);
font-weight: 800;
letter-spacing: -0.5px;
margin-bottom: 12px;
}
.section-desc {
color: var(--text-secondary);
max-width: 600px;
margin: 0 auto;
font-size: 1rem;
}
/* Features Grid */
.features-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20px;
}
.feature-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 32px 24px;
text-align: center;
transition: var(--transition);
position: relative;
overflow: hidden;
}
.feature-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: var(--accent);
transform: scaleX(0);
transform-origin: left;
transition: transform 0.4s ease;
}
.feature-card:hover {
border-color: var(--border-light);
transform: translateY(-4px);
box-shadow: var(--shadow);
}
.feature-card:hover::before {
transform: scaleX(1);
}
.feature-icon {
font-size: 2.5rem;
margin-bottom: 16px;
display: block;
}
.feature-card h3 {
font-family: var(--font-heading);
font-size: 1.1rem;
font-weight: 700;
margin-bottom: 8px;
}
.feature-card p {
font-size: 0.88rem;
color: var(--text-secondary);
line-height: 1.6;
}
/* ============ INVENTORY + SIDEBAR ============ */
.inventory-layout {
display: grid;
grid-template-columns: 1fr 320px;
gap: 32px;
align-items: start;
}
.vehicle-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 20px;
}
.vehicle-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
overflow: hidden;
transition: var(--transition);
position: relative;
}
.vehicle-card:hover {
border-color: var(--border-light);
transform: translateY(-4px);
box-shadow: var(--shadow-lg);
}
.vehicle-card-img {
width: 100%;
height: 200px;
object-fit: cover;
display: block;
transition: transform 0.4s ease;
}
.vehicle-card:hover .vehicle-card-img {
transform: scale(1.05);
}
.vehicle-card-img-wrap {
overflow: hidden;
position: relative;
}
.badge-new {
position: absolute;
top: 12px;
left: 12px;
background: var(--accent);
color: #000;
font-size: 0.7rem;
font-weight: 800;
letter-spacing: 1px;
text-transform: uppercase;
padding: 4px 10px;
border-radius: 50px;
z-index: 2;
}
.badge-cpo {
position: absolute;
top: 12px;
left: 12px;
background: #2196f3;
color: #fff;
font-size: 0.7rem;
font-weight: 800;
letter-spacing: 1px;
text-transform: uppercase;
padding: 4px 10px;
border-radius: 50px;
z-index: 2;
}
.vehicle-card-body {
padding: 20px;
}
.vehicle-card-body h3 {
font-family: var(--font-heading);
font-size: 1.1rem;
font-weight: 700;
margin-bottom: 4px;
}
.vehicle-price {
font-size: 1.4rem;
font-weight: 900;
color: var(--accent);
margin-bottom: 12px;
}
.vehicle-specs {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 16px;
}
.vehicle-spec {
font-size: 0.75rem;
color: var(--text-muted);
background: var(--bg-tertiary);
padding: 4px 10px;
border-radius: 50px;
white-space: nowrap;
}
.vehicle-card-body .btn {
width: 100%;
justify-content: center;
}
/* Sidebar */
.sidebar {
display: flex;
flex-direction: column;
gap: 20px;
position: sticky;
top: 90px;
}
.sidebar-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 24px;
transition: var(--transition);
}
.sidebar-card:hover {
border-color: var(--border-light);
}
.sidebar-card h4 {
font-family: var(--font-heading);
font-size: 0.95rem;
font-weight: 700;
margin-bottom: 14px;
display: flex;
align-items: center;
gap: 8px;
}
.sidebar-card h4 .icon {
font-size: 1.2rem;
}
.featured-vehicle-img {
width: 100%;
height: 140px;
object-fit: cover;
border-radius: var(--radius);
margin-bottom: 12px;
}
.featured-vehicle-price {
font-size: 1.3rem;
font-weight: 900;
color: var(--accent);
}
.sidebar-hours {
list-style: none;
font-size: 0.85rem;
color: var(--text-secondary);
}
.sidebar-hours li {
display: flex;
justify-content: space-between;
padding: 6px 0;
border-bottom: 1px solid var(--border);
}
.sidebar-hours li:last-child {
border-bottom: none;
}
.promo-banner {
background: linear-gradient(135deg, var(--accent-dark), var(--accent));
color: #000;
border-radius: var(--radius);
padding: 16px;
text-align: center;
font-weight: 700;
font-size: 0.9rem;
}
.promo-banner strong {
display: block;
font-size: 1.3rem;
}
.quick-search-form {
display: flex;
flex-direction: column;
gap: 10px;
}
.quick-search-form select,
.quick-search-form input {
width: 100%;
padding: 10px 12px;
border-radius: var(--radius-sm);
border: 1px solid var(--border);
background: var(--bg-tertiary);
color: var(--text-primary);
font-family: var(--font-body);
font-size: 0.85rem;
transition: var(--transition);
}
.quick-search-form select:focus,
.quick-search-form input:focus {
outline: none;
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-glow);
}
/* ============ TRADE-IN ============ */
.tradein-section {
background: var(--bg-secondary);
border-radius: var(--radius-xl);
padding: 60px 40px;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 50px;
align-items: center;
border: 1px solid var(--border);
}
.tradein-section h2 {
font-family: var(--font-heading);
font-size: 2rem;
font-weight: 800;
margin-bottom: 16px;
}
.tradein-section p {
color: var(--text-secondary);
margin-bottom: 16px;
line-height: 1.8;
}
.tradein-benefits {
list-style: none;
margin-bottom: 24px;
}
.tradein-benefits li {
padding: 8px 0;
color: var(--text-secondary);
font-size: 0.95rem;
display: flex;
align-items: center;
gap: 10px;
}
.tradein-benefits li::before {
content: '✓';
color: var(--success);
font-weight: 700;
font-size: 1rem;
}
.tradein-img {
width: 100%;
height: 350px;
object-fit: cover;
border-radius: var(--radius-lg);
border: 1px solid var(--border);
}
/* ============ PARTS & SERVICE ============ */
.parts-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
.parts-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 32px;
transition: var(--transition);
text-align: center;
}
.parts-card:hover {
border-color: var(--accent);
transform: translateY(-4px);
box-shadow: var(--shadow);
}
.parts-card-icon {
font-size: 2.5rem;
margin-bottom: 16px;
display: block;
}
.parts-card h3 {
font-family: var(--font-heading);
font-size: 1.1rem;
font-weight: 700;
margin-bottom: 10px;
}
.parts-card p {
font-size: 0.88rem;
color: var(--text-secondary);
line-height: 1.7;
}
/* ============ FINANCING CALCULATOR ============ */
.calculator-section {
background: var(--bg-secondary);
border-radius: var(--radius-xl);
border: 1px solid var(--border);
padding: 50px 40px;
}
.calculator-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 40px;
align-items: start;
}
.calc-inputs {
display: flex;
flex-direction: column;
gap: 24px;
}
.calc-field label {
display: block;
font-weight: 600;
font-size: 0.9rem;
margin-bottom: 6px;
color: var(--text-primary);
}
.calc-field input[type="range"] {
width: 100%;
height: 6px;
-webkit-appearance: none;
appearance: none;
background: var(--border);
border-radius: 3px;
outline: none;
cursor: pointer;
}
.calc-field input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
width: 22px;
height: 22px;
border-radius: 50%;
background: var(--accent);
cursor: pointer;
border: 3px solid var(--bg-primary);
box-shadow: var(--shadow-sm);
transition: var(--transition);
}
.calc-field input[type="range"]::-webkit-slider-thumb:hover {
transform: scale(1.15);
box-shadow: var(--shadow-glow);
}
.calc-field input[type="range"]::-moz-range-thumb {
width: 22px;
height: 22px;
border-radius: 50%;
background: var(--accent);
cursor: pointer;
border: 3px solid var(--bg-primary);
box-shadow: var(--shadow-sm);
}
.calc-field-value {
font-family: var(--font-heading);
font-size: 1.3rem;
font-weight: 800;
color: var(--accent);
margin-top: 4px;
}
.calc-results {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 32px;
text-align: center;
}
.calc-results h3 {
font-family: var(--font-heading);
font-size: 0.85rem;
text-transform: uppercase;
letter-spacing: 2px;
color: var(--text-muted);
margin-bottom: 8px;
}
.calc-monthly {
font-family: var(--font-heading);
font-size: 3rem;
font-weight: 900;
color: var(--accent);
line-height: 1;
margin-bottom: 20px;
}
.calc-breakdown {
display: flex;
flex-direction: column;
gap: 10px;
font-size: 0.9rem;
}
.calc-breakdown-row {
display: flex;
justify-content: space-between;
padding: 8px 0;
border-bottom: 1px solid var(--border);
color: var(--text-secondary);
}
.calc-breakdown-row:last-child {
border-bottom: none;
font-weight: 700;
color: var(--text-primary);
}
.calc-breakdown-row .val {
font-weight: 600;
}
/* ============ TESTIMONIALS ============ */
.testimonials-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
.testimonial-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 28px;
transition: var(--transition);
}
.testimonial-card:hover {
border-color: var(--border-light);
transform: translateY(-3px);
box-shadow: var(--shadow);
}
.testimonial-stars {
color: var(--accent);
font-size: 1rem;
letter-spacing: 2px;
margin-bottom: 14px;
}
.testimonial-card blockquote {
font-size: 0.9rem;
color: var(--text-secondary);
line-height: 1.7;
font-style: italic;
margin-bottom: 18px;
}
.testimonial-author {
display: flex;
align-items: center;
gap: 12px;
}
.testimonial-avatar {
width: 44px;
height: 44px;
border-radius: 50%;
object-fit: cover;
border: 2px solid var(--accent);
}
.testimonial-author-name {
font-weight: 700;
font-size: 0.9rem;
}
.testimonial-author-detail {
font-size: 0.75rem;
color: var(--text-muted);
}
/* ============ FAQ ============ */
.faq-list {
max-width: 800px;
margin: 0 auto;
display: flex;
flex-direction: column;
gap: 12px;
}
.faq-item {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius);
overflow: hidden;
transition: var(--transition);
}
.faq-item:hover {
border-color: var(--border-light);
}
.faq-question {
width: 100%;
background: none;
border: none;
color: var(--text-primary);
font-family: var(--font-body);
font-size: 0.95rem;
font-weight: 600;
padding: 18px 24px;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
text-align: left;
transition: var(--transition);
}
.faq-question:hover {
color: var(--accent);
}
.faq-arrow {
font-size: 1.2rem;
transition: transform 0.3s ease;
flex-shrink: 0;
}
.faq-item.active .faq-arrow {
transform: rotate(180deg);
}
.faq-answer {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s ease, padding 0.4s ease;
}
.faq-item.active .faq-answer {
max-height: 300px;
}
.faq-answer-inner {
padding: 0 24px 20px;
color: var(--text-secondary);
font-size: 0.9rem;
line-height: 1.7;
}
/* ============ FOOTER ============ */
.footer {
background: var(--bg-secondary);
border-top: 1px solid var(--border);
padding: 60px 24px 30px;
margin-top: 40px;
}
.footer-grid {
max-width: 1300px;
margin: 0 auto;
display: grid;
grid-template-columns: 2fr 1fr 1fr 1fr;
gap: 40px;
margin-bottom: 40px;
}
.footer-brand p {
color: var(--text-secondary);
font-size: 0.88rem;
margin-top: 12px;
line-height: 1.7;
max-width: 300px;
}
.footer h4 {
font-family: var(--font-heading);
font-size: 0.85rem;
font-weight: 700;
letter-spacing: 1px;
text-transform: uppercase;
margin-bottom: 16px;
color: var(--text-primary);
}
.footer-links {
list-style: none;
}
.footer-links li {
margin-bottom: 8px;
}
.footer-links a {
color: var(--text-secondary);
text-decoration: none;
font-size: 0.85rem;
transition: var(--transition);
}
.footer-links a:hover {
color: var(--accent);
}
.footer-bottom {
max-width: 1300px;
margin: 0 auto;
padding-top: 24px;
border-top: 1px solid var(--border);
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 16px;
font-size: 0.8rem;
color: var(--text-muted);
}
.social-links {
display: flex;
gap: 12px;
}
.social-links a {
width: 36px;
height: 36px;
border-radius: 50%;
background: var(--bg-tertiary);
display: flex;
align-items: center;
justify-content: center;
text-decoration: none;
font-size: 1rem;
transition: var(--transition);
border: 1px solid var(--border);
}
.social-links a:hover {
background: var(--accent);
border-color: var(--accent);
color: #000;
transform: translateY(-2px);
}
/* Scroll to Top */
#scrollTop {
position: fixed;
bottom: 30px;
right: 30px;
width: 48px;
height: 48px;
border-radius: 50%;
background: var(--accent);
color: #000;
border: none;
font-size: 1.3rem;
cursor: pointer;
z-index: 999;
opacity: 0;
transform: translateY(20px);
transition: var(--transition);
box-shadow: var(--shadow);
display: flex;
align-items: center;
justify-content: center;
}
#scrollTop.visible {
opacity: 1;
transform: translateY(0);
}
#scrollTop:hover {
background: var(--accent-hover);
box-shadow: var(--shadow-glow);
transform: translateY(-3px);
}
/* ============ RESPONSIVE ============ */
@media (max-width: 1024px) {
.features-grid {
grid-template-columns: repeat(2, 1fr);
}
.inventory-layout {
grid-template-columns: 1fr;
}
.sidebar {
position: static;
flex-direction: row;
flex-wrap: wrap;
}
.sidebar-card {
flex: 1 1 250px;
}
.tradein-section {
grid-template-columns: 1fr;
padding: 40px 24px;
}
.tradein-img {
height: 250px;
}
.calculator-grid {
grid-template-columns: 1fr;
}
.parts-grid {
grid-template-columns: repeat(2, 1fr);
}
.testimonials-grid {
grid-template-columns: repeat(2, 1fr);
}
.footer-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 768px) {
.nav {
display: none;
position: absolute;
top: 72px;
left: 0;
right: 0;
background: rgba(10, 10, 20, 0.98);
backdrop-filter: blur(20px);
flex-direction: column;
padding: 20px;
gap: 4px;
border-bottom: 1px solid var(--border);
}
.nav.open {
display: flex;
}
.nav a {
padding: 12px 16px;
font-size: 1rem;
}
.nav a.nav-cta {
margin-left: 0;
text-align: center;
margin-top: 8px;
}
.mobile-menu-btn {
display: block;
}
.hero {
min-height: 500px;
}
.hero h1 {
font-size: 2rem;
}
.hero-stats {
gap: 24px;
}
.features-grid {
grid-template-columns: 1fr;
}
.parts-grid {
grid-template-columns: 1fr;
}
.testimonials-grid {
grid-template-columns: 1fr;
}
.footer-grid {
grid-template-columns: 1fr;
}
.footer-bottom {
flex-direction: column;
text-align: center;
}
.section {
padding: 50px 16px;
}
.calculator-section {
padding: 30px 20px;
}
.sidebar {
flex-direction: column;
}
}
@media (max-width: 480px) {
.hero-actions {
flex-direction: column;
}
.btn {
width: 100%;
justify-content: center;
}
.vehicle-grid {
grid-template-columns: 1fr;
}
.calc-monthly {
font-size: 2.2rem;
}
}
</style>
</head>
<body>
<!-- Scroll Progress -->
<div id="scroll-progress" style="width:0%;"></div>
<!-- HEADER -->
<header class="header" id="header">
<div class="header-inner">
<a href="#" class="logo">
<img src="https://placehold.co/88x88/1a1a2e/f0a500?text=AH&font=montserrat" alt="AutoHaven Motors Logo" class="logo-icon">
<div class="logo-text">
<span class="logo-name">AutoHaven Motors</span>
<span class="logo-tagline">Where Performance Meets Precision</span>
</div>
</a>
<nav class="nav" id="mainNav">
<a href="#home">Home</a>
<a href="#inventory">Inventory</a>
<a href="#trade-in">Trade-In</a>
<a href="#specials">Specials</a>
<a href="#parts-service">Parts & Service</a>
<a href="#financing">Financing</a>
<a href="#about">About</a>
<a href="#contact" class="nav-cta">Contact Dealer</a>
</nav>
<button class="mobile-menu-btn" id="mobileMenuBtn" aria-label="Toggle menu">☰</button>
</div>
</header>
<!-- HERO -->
<section class="hero" id="home">
<div class="hero-bg">
<img src="https://picsum.photos/1920/800?random=10" alt="Luxury vehicle on open road">
</div>
<div class="hero-content">
<span class="hero-badge">🏆 #1 Rated Dealership 2025</span>
<h1>Find Your <span class="accent">Perfect Drive</span> Today</h1>
<p class="hero-subtitle">
Discover an exceptional selection of new and pre-owned vehicles, competitive financing options,
and a service team that treats every vehicle like their own. At AutoHaven Motors, we make the
car-buying experience transparent, enjoyable, and rewarding.
</p>
<div class="hero-actions">
<a href="#inventory" class="btn btn-primary">Browse Inventory</a>
<a href="#financing" class="btn btn-outline">Get Pre-Approved</a>
</div>
<div class="hero-stats">
<div class="hero-stat">
<div class="hero-stat-value">500+</div>
<div class="hero-stat-label">Vehicles In Stock</div>
</div>
<div class="hero-stat">
<div class="hero-stat-value">4.9★</div>
<div class="hero-stat-label">Customer Rating</div>
</div>
<div class="hero-stat">
<div class="hero-stat-value">15k+</div>
<div class="hero-stat-label">Happy Owners</div>
</div>
</div>
</div>
</section>
<!-- FEATURES GRID -->
<section class="section" id="about">
<div class="section-header">
<span class="section-label">Why Choose Us</span>
<h2 class="section-title">The AutoHaven Difference</h2>
<p class="section-desc">We go beyond the transaction to deliver a world-class automotive experience from test drive to trade-in.</p>
</div>
<div class="features-grid">
<div class="feature-card">
<span class="feature-icon">🚗</span>
<h3>Extensive Inventory</h3>
<p>Over 500 vehicles in stock spanning economy sedans, rugged trucks, luxury SUVs, and high-performance sports cars from all major manufacturers.</p>
</div>
<div class="feature-card">
<span class="feature-icon">✅</span>
<h3>Certified Pre-Owned</h3>
<p>Every CPO vehicle undergoes a rigorous 150-point inspection and comes with an extended warranty, roadside assistance, and a detailed vehicle history report.</p>
</div>
<div class="feature-card">
<span class="feature-icon">💰</span>
<h3>Competitive Financing</h3>
<p>Our finance team works with over 30 lenders to secure the best rates and terms — from first-time buyer programs to low-APR offers on select models.</p>
</div>
<div class="feature-card">
<span class="feature-icon">🔧</span>
<h3>Expert Service</h3>
<p>Factory-trained technicians using genuine OEM parts keep your vehicle running at peak performance. From oil changes to transmission rebuilds, we do it all.</p>
</div>
</div>
</section>
<!-- NEW ARRIVALS + SIDEBAR -->
<section class="section" id="inventory">
<div class="section-header">
<span class="section-label">Fresh Off the Lot</span>
<h2 class="section-title">New Arrivals</h2>
<p class="section-desc">Explore our latest inventory additions — hand-selected for quality, value, and performance.</p>
</div>
<div class="inventory-layout">
<div class="vehicle-grid">
<!-- Vehicle 1 -->
<div class="vehicle-card">
<div class="vehicle-card-img-wrap">
<img src="https://picsum.photos/600/400?random=20" alt="2024 Toyota Camry SE" class="vehicle-card-img">
<span class="badge-new">New Arrival</span>
</div>
<div class="vehicle-card-body">
<h3>2024 Toyota Camry SE</h3>
<div class="vehicle-price">$28,450</div>
<div class="vehicle-specs">
<span class="vehicle-spec">12,450 mi</span>
<span class="vehicle-spec">Automatic</span>
<span class="vehicle-spec">2.5L 4-Cyl</span>
</div>
<a href="#" class="btn btn-primary btn-sm">Schedule Test Drive</a>
</div>
</div>
<!-- Vehicle 2 -->
<div class="vehicle-card">
<div class="vehicle-card-img-wrap">
<img src="https://picsum.photos/600/400?random=21" alt="2023 Ford F-150 XLT" class="vehicle-card-img">
<span class="badge-new">New Arrival</span>
</div>
<div class="vehicle-card-body">
<h3>2023 Ford F-150 XLT</h3>
<div class="vehicle-price">$42,990</div>
<div class="vehicle-specs">
<span class="vehicle-spec">8,200 mi</span>
<span class="vehicle-spec">Automatic</span>
<span class="vehicle-spec">3.5L V6 EcoBoost</span>
</div>
<a href="#" class="btn btn-primary btn-sm">Schedule Test Drive</a>
</div>
</div>
<!-- Vehicle 3 -->
<div class="vehicle-card">
<div class="vehicle-card-img-wrap">
<img src="https://picsum.photos/600/400?random=22" alt="2024 Honda Civic Sport" class="vehicle-card-img">
<span class="badge-cpo">Certified</span>
</div>
<div class="vehicle-card-body">
<h3>2024 Honda Civic Sport</h3>
<div class="vehicle-price">$26,780</div>
<div class="vehicle-specs">
<span class="vehicle-spec">5,100 mi</span>
<span class="vehicle-spec">CVT</span>
<span class="vehicle-spec">1.5L Turbo</span>
</div>
<a href="#" class="btn btn-primary btn-sm">Schedule Test Drive</a>
</div>
</div>
<!-- Vehicle 4 -->
<div class="vehicle-card">
<div class="vehicle-card-img-wrap">
<img src="https://picsum.photos/600/400?random=23" alt="2023 BMW 330i" class="vehicle-card-img">
</div>
<div class="vehicle-card-body">
<h3>2023 BMW 330i</h3>
<div class="vehicle-price">$45,200</div>
<div class="vehicle-specs">
<span class="vehicle-spec">15,800 mi</span>
<span class="vehicle-spec">Automatic</span>
<span class="vehicle-spec">2.0L Turbo</span>
</div>
<a href="#" class="btn btn-primary btn-sm">Schedule Test Drive</a>
</div>
</div>
<!-- Vehicle 5 -->
<div class="vehicle-card">
<div class="vehicle-card-img-wrap">
<img src="https://picsum.photos/600/400?random=24" alt="2024 Chevrolet Silverado 1500" class="vehicle-card-img">
<span class="badge-new">New Arrival</span>
</div>
<div class="vehicle-card-body">
<h3>2024 Chevrolet Silverado 1500</h3>
<div class="vehicle-price">$48,500</div>
<div class="vehicle-specs">
<span class="vehicle-spec">3,200 mi</span>
<span class="vehicle-spec">Automatic</span>
<span class="vehicle-spec">5.3L V8</span>
</div>
<a href="#" class="btn btn-primary btn-sm">Schedule Test Drive</a>
</div>
</div>
<!-- Vehicle 6 -->
<div class="vehicle-card">
<div class="vehicle-card-img-wrap">
<img src="https://picsum.photos/600/400?random=25" alt="2023 Mazda CX-5 Carbon Edition" class="vehicle-card-img">
<span class="badge-cpo">Certified</span>
</div>
<div class="vehicle-card-body">
<h3>2023 Mazda CX-5 Carbon Edition</h3>
<div class="vehicle-price">$31,200</div>
<div class="vehicle-specs">
<span class="vehicle-spec">9,650 mi</span>
<span class="vehicle-spec">Automatic</span>
<span class="vehicle-spec">2.5L Turbo</span>
</div>
<a href="#" class="btn btn-primary btn-sm">Schedule Test Drive</a>
</div>
</div>
</div>
<!-- SIDEBAR -->
<aside class="sidebar">
<div class="sidebar-card">
<h4><span class="icon">⭐</span> Featured This Week</h4>
<img src="https://picsum.photos/400/200?random=30" alt="Featured Vehicle" class="featured-vehicle-img">
<h3 style="font-size:1rem;margin-bottom:4px;">2024 Mercedes-Benz C300</h3>
<p style="font-size:0.8rem;color:var(--text-muted);margin-bottom:8px;">Turbocharged 2.0L inline-4 producing 255 horsepower with 295 lb-ft of torque. Loaded with premium package.</p>
<div class="featured-vehicle-price">$49,800</div>
<a href="#" class="btn btn-outline btn-sm" style="margin-top:12px;width:100%;justify-content:center;">View Details</a>
</div>
<div class="sidebar-card">
<h4><span class="icon">🔍</span> Quick Search</h4>
<form class="quick-search-form" onsubmit="return false;">
<select>
<option>All Makes</option>
<option>Toyota</option>
<option>Ford</option>
<option>Honda</option>
<option>BMW</option>
<option>Chevrolet</option>
<option>Mazda</option>
</select>
<select>
<option>All Models</option>
<option>Camry</option>
<option>F-150</option>
<option>Civic</option>
<option>3 Series</option>
</select>
<select>
<option>Price Range</option>
<option>Under $25,000</option>
<option>$25,000 - $40,000</option>
<option>$40,000 - $60,000</option>
<option>Over $60,000</option>
</select>
<button type="button" class="btn btn-primary btn-sm">Search Inventory</button>
</form>
</div>
<div class="sidebar-card">
<h4><span class="icon">🕐</span> Service Hours</h4>
<ul class="sidebar-hours">
<li><span>Monday – Friday</span><span>7:00 AM – 6:00 PM</span></li>
<li><span>Saturday</span><span>8:00 AM – 4:00 PM</span></li>
<li><span>Sunday</span><span>Closed</span></li>
</ul>
</div>
<div class="sidebar-card" style="padding:0;overflow:hidden;">
<div class="promo-banner">
🔥 Special Financing<br>
<strong>0.9% APR</strong>
for 60 months on select models
</div>
</div>
</aside>
</div>
</section>
<!-- TRADE-IN VALUE -->
<section class="section" id="trade-in">
<div class="tradein-section">
<div>
<span class="section-label" style="color:var(--accent);">Trade-In & Appraisal</span>
<h2>Maximize Your Trade-In Value</h2>
<p>
Thinking about upgrading? Our certified appraisers use real-time market data and a comprehensive
50-point vehicle evaluation to ensure you receive the fairest trade-in value possible. We analyze
current auction trends, regional demand, and your vehicle's condition — including mileage, service
history, and cosmetic factors — to arrive at a competitive offer you can count on.
</p>
<p>
Unlike online valuation tools that provide rough estimates, our in-person appraisal accounts for
the nuances that algorithms miss. A well-documented service history, recent tire replacement,
or a desirable color combination can significantly boost your trade-in value. We'll walk you
through every step so there are no surprises.
</p>
<ul class="tradein-benefits">
<li>Instant online valuation tool — get a ballpark figure in 60 seconds</li>
<li>In-person appraisal with a certified vehicle evaluator</li>
<li>We accept all makes and models — running or not</li>
<li>Trade-in credit applied directly to your new purchase</li>
<li>No obligation — our offer stands for 7 days</li>
</ul>
<a href="#" class="btn btn-primary">Get Your Free Trade-In Offer</a>
</div>
<div>
<img src="https://picsum.photos/700/500?random=40" alt="Trade-in appraisal process" class="tradein-img">
</div>
</div>
</section>
<!-- PARTS & SERVICE -->
<section class="section" id="parts-service">
<div class="section-header">
<span class="section-label">Service Department</span>
<h2 class="section-title">Parts & Service You Can Trust</h2>
<p class="section-desc">Keep your vehicle performing at our peak with factory-trained technicians and genuine OEM parts.</p>
</div>
<div class="parts-grid">
<div class="parts-card">
<span class="parts-card-icon">🛠️</span>
<h3>Genuine OEM Parts</h3>
<p>We stock thousands of manufacturer-original parts and accessories. From brake pads and filters to performance exhaust systems and body panels, every component meets the exact specifications your vehicle was engineered for — ensuring optimal fit, finish, and longevity.</p>
</div>
<div class="parts-card">
<span class="parts-card-icon">📋</span>
<h3>Service Intervals & Maintenance</h3>
<p>Follow your manufacturer's recommended service interval to protect your investment. Our digital service tracker sends you timely reminders for oil changes, tire rotations, fluid flushes, and multi-point inspections. Staying proactive prevents costly repairs down the road.</p>
</div>
<div class="parts-card">
<span class="parts-card-icon">⚡</span>
<h3>Performance Upgrades</h3>
<p>Unlock your vehicle's full potential with professionally installed performance parts. Cold air intakes, ECU tuning, suspension upgrades, and forced induction kits — our dyno-tested components deliver measurable gains in horsepower and torque while maintaining reliability.</p>
</div>
</div>
</section>
<!-- FINANCING CALCULATOR -->
<section class="section" id="financing">
<div class="section-header">
<span class="section-label">Payment Estimator</span>
<h2 class="section-title">Financing Calculator</h2>
<p class="section-desc">Adjust the sliders below to estimate your monthly payment and see a full cost breakdown.</p>
</div>
<div class="calculator-section">
<div class="calculator-grid">
<div class="calc-inputs">
<div class="calc-field">
<label for="calcPrice">Vehicle Price</label>
<input type="range" id="calcPrice" min="10000" max="100000" step="1000" value="35000">
<div class="calc-field-value" id="calcPriceVal">$35,000</div>
</div>
<div class="calc-field">
<label for="calcDown">Down Payment</label>
<input type="range" id="calcDown" min="0" max="30000" step="500" value="5000">
<div class="calc-field-value" id="calcDownVal">$5,000</div>
</div>
<div class="calc-field">
<label for="calcRate">Interest Rate (APR)</label>
<input type="range" id="calcRate" min="0" max="15" step="0.1" value="5.9">
<div class="calc-field-value" id="calcRateVal">5.9%</div>
</div>
<div class="calc-field">
<label for="calcTerm">Loan Term</label>
<input type="range" id="calcTerm" min="24" max="84" step="12" value="60">
<div class="calc-field-value" id="calcTermVal">60 months</div>
</div>
</div>
<div class="calc-results">
<h3>Estimated Monthly Payment</h3>
<div class="calc-monthly" id="calcMonthly">$596</div>
<div class="calc-breakdown">
<div class="calc-breakdown-row">
<span>Loan Amount</span>
<span class="val" id="calcLoanAmt">$30,000</span>
</div>
<div class="calc-breakdown-row">
<span>Total Interest</span>
<span class="val" id="calcTotalInterest">$4,783</span>
</div>
<div class="calc-breakdown-row">
<span>Total Cost</span>
<span class="val" id="calcTotalCost">$34,783</span>
</div>
</div>
<a href="#" class="btn btn-primary" style="margin-top:20px;width:100%;justify-content:center;">Apply for Financing</a>
</div>
</div>
</div>
</section>
<!-- TESTIMONIALS -->
<section class="section" id="specials">
<div class="section-header">
<span class="section-label">Customer Stories</span>
<h2 class="section-title">What Our Clients Say</h2>
<p class="section-desc">Real experiences from real drivers who found their perfect vehicle at AutoHaven Motors.</p>
</div>
<div class="testimonials-grid">
<div class="testimonial-card">
<div class="testimonial-stars">★★★★★</div>
<blockquote>
"The team at AutoHaven made my truck-buying experience seamless. They found me a low-mileage F-150 with all the options I wanted, secured a rate lower than my credit union, and had me driving off the lot the same day. The trade-in value they gave my old Tacoma was fair and transparent — no games."
</blockquote>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/80?u=101" alt="Marcus T." class="testimonial-avatar">
<div>
<div class="testimonial-author-name">Marcus T.</div>
<div class="testimonial-author-detail">Purchased 2023 Ford F-150 XLT</div>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="testimonial-stars">★★★★★</div>
<blockquote>
"I was nervous about buying my first car, but the finance department walked me through every step. They explained the difference between APR and interest rate, helped me understand my service interval schedule, and even set up my first maintenance appointment. I felt supported the entire way."
</blockquote>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/80?u=102" alt="Sarah L." class="testimonial-avatar">
<div>
<div class="testimonial-author-name">Sarah L.</div>
<div class="testimonial-author-detail">Purchased 2024 Honda Civic Sport</div>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="testimonial-stars">★★★★★</div>
<blockquote>
"The service department is top-notch. I brought my BMW in for a transmission concern and they diagnosed it same day, handled the warranty claim, and had me back on the road within 48 hours. Their technicians clearly know these vehicles inside and out. I wouldn't go anywhere else."
</blockquote>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/80?u=103" alt="David K." class="testimonial-avatar">
<div>
<div class="testimonial-author-name">David K.</div>
<div class="testimonial-author-detail">BMW 330i Owner — Service Client</div>
</div>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section class="section">
<div class="section-header">
<span class="section-label">Knowledge Center</span>
<h2 class="section-title">Frequently Asked Questions</h2>
<p class="section-desc">Quick answers to common questions about buying, financing, and servicing your vehicle.</p>
</div>
<div class="faq-list">
<div class="faq-item active">
<button class="faq-question" aria-expanded="true">
What documents do I need to finance a vehicle?
<span class="faq-arrow">▼</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
To apply for financing, you'll need a valid government-issued photo ID, proof of income (recent pay stubs or tax returns), proof of residence (utility bill or lease agreement), and your insurance information. If you're trading in your vehicle, bring the title and registration. Our finance team can work with a variety of credit situations — from excellent credit to first-time buyers.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" aria-expanded="false">
How does the trade-in appraisal process work?
<span class="faq-arrow">▼</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Our appraisal process starts with a quick online valuation tool for a preliminary estimate. Then, you'll bring the vehicle in for a comprehensive in-person evaluation. Our certified appraiser inspects the exterior, interior, mechanical condition, tires, and reviews your service history. We cross-reference current market data and auction trends to provide a firm offer valid for 7 days. The entire process typically takes 30–45 minutes.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" aria-expanded="false">
What is included in a certified pre-owned (CPO) vehicle?
<span class="faq-arrow">▼</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Every CPO vehicle at AutoHaven undergoes a rigorous 150-point inspection covering mechanical, electrical, and cosmetic criteria. The inspection includes engine and transmission evaluation, brake measurement, fluid analysis, and a comprehensive road test. CPO vehicles come with an extended powertrain warranty, 24/7 roadside assistance, a detailed vehicle history report, and a 3-day/300-mile exchange policy for added peace of mind.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" aria-expanded="false">
How often should I service my vehicle?
<span class="faq-arrow">▼</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Most manufacturers recommend a service interval of every 5,000 to 7,500 miles for conventional oil, or every 7,500 to 10,000 miles for synthetic oil. However, severe driving conditions — frequent short trips, extreme temperatures, towing, or stop-and-go traffic — may require more frequent service. We recommend following your owner's maintenance schedule and using our complimentary service reminder program to stay on track.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" aria-expanded="false">
Can I get pre-approved for financing before visiting the dealership?
<span class="faq-arrow">▼</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Absolutely! You can complete our secure online pre-approval application in about 10 minutes. We'll perform a soft credit pull that won't affect your score and provide a decision quickly. Pre-approval gives you a clear budget, strengthens your negotiating position, and streamlines the buying process so you can focus on finding the right vehicle rather than worrying about financing.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" aria-expanded="false">
Do you offer warranty on pre-owned vehicles?
<span class="faq-arrow">▼</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Yes. All non-CPO pre-owned vehicles come with a complimentary 90-day/4,000-mile limited powertrain warranty. For extended coverage, we offer a range of third-party warranty plans that can cover everything from basic powertrain to comprehensive bumper-to-bumper protection. Our finance manager will walk you through the options so you can choose the coverage that fits your needs and budget.
</div>
</div>
</div>
</div>
</section>
<!-- FOOTER -->
<footer class="footer" id="contact">
<div class="footer-grid">
<div class="footer-brand">
<a href="#" class="logo" style="margin-bottom:8px;">
<img src="https://placehold.co/60x60/1a1a2e/f0a500?text=AH&font=montserrat" alt="AutoHaven Motors Logo" class="logo-icon" style="width:36px;height:36px;">
<span class="logo-name" style="font-size:1.1rem;">AutoHaven Motors</span>
</a>
<p>Where Performance Meets Precision. Serving drivers with integrity, transparency, and an unwavering commitment to excellence since 2008.</p>
<p style="margin-top:12px;">
📍 1234 Motor Parkway, Suite 100<br>
Detroit, MI 48201<br>
📞 (555) 867-5309<br>
✉️ info@autohavenmotors.com
</p>
</div>
<div>
<h4>Quick Links</h4>
<ul class="footer-links">
<li><a href="#inventory">Browse Inventory</a></li>
<li><a href="#trade-in">Trade-In Appraisal</a></li>
<li><a href="#specials">Current Specials</a></li>
<li><a href="#financing">Financing Options</a></li>
<li><a href="#parts-service">Parts & Service</a></li>
</ul>
</div>
<div>
<h4>Resources</h4>
<ul class="footer-links">
<li><a href="#">Financing Calculator</a></li>
<li><a href="#">Insurance Partners</a></li>
<li><a href="#">Service Coupons</a></li>
<li><a href="#">Recall Information</a></li>
<li><a href="#">Employment</a></li>
</ul>
</div>
<div>
<h4>Support</h4>
<ul class="footer-links">
<li><a href="#">Contact Us</a></li>
<li><a href="#">FAQs</a></li>
<li><a href="#">Privacy Policy</a></li>
<li><a href="#">Terms of Service</a></li>
<li><a href="#">Accessibility</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<span>© 2025 AutoHaven Motors. All rights reserved.</span>
<div class="social-links">
<a href="#" aria-label="Facebook">f</a>
<a href="#" aria-label="Twitter">𝕏</a>
<a href="#" aria-label="Instagram">📷</a>
<a href="#" aria-label="YouTube">▶</a>
<a href="#" aria-label="LinkedIn">in</a>
</div>
</div>
</footer>
<!-- Scroll to Top Button -->
<button id="scrollTop" aria-label="Scroll to top">▲</button>
<!-- JAVASCRIPT -->
<script>
(function() {
// === DOM Elements ===
const header = document.getElementById('header');
const scrollProgress = document.getElementById('scroll-progress');
const scrollTopBtn = document.getElementById('scrollTop');
const mobileMenuBtn = document.getElementById('mobileMenuBtn');
const mainNav = document.getElementById('mainNav');
const faqItems = document.querySelectorAll('.faq-item');
// === Scroll Progress & Header State ===
function updateScroll() {
const scrollTop = window.scrollY;
const docHeight = document.documentElement.scrollHeight - window.innerHeight;
const progress = docHeight > 0 ? (scrollTop / docHeight) * 100 : 0;
scrollProgress.style.width = progress + '%';
// Header shadow on scroll
if (scrollTop > 20) {
header.classList.add('scrolled');
} else {
header.classList.remove('scrolled');
}
// Scroll-to-top button visibility
if (scrollTop > 400) {
scrollTopBtn.classList.add('visible');
} else {
scrollTopBtn.classList.remove('visible');
}
}
window.addEventListener('scroll', updateScroll, { passive: true });
updateScroll();
// === Scroll to Top ===
scrollTopBtn.addEventListener('click', () => {
window.scrollTo({ top: 0, behavior: 'smooth' });
});
// === Mobile Menu Toggle ===
mobileMenuBtn.addEventListener('click', () => {
const isOpen = mainNav.classList.toggle('open');
mobileMenuBtn.innerHTML = isOpen ? '✕' : '☰';
mobileMenuBtn.setAttribute('aria-expanded', isOpen);
});
// Close mobile menu on link click
mainNav.querySelectorAll('a').forEach(link => {
link.addEventListener('click', () => {
mainNav.classList.remove('open');
mobileMenuBtn.innerHTML = '☰';
mobileMenuBtn.setAttribute('aria-expanded', 'false');
});
});
// === FAQ Accordion ===
faqItems.forEach(item => {
const question = item.querySelector('.faq-question');
question.addEventListener('click', () => {
const isActive = item.classList.contains('active');
// Close all
faqItems.forEach(fi => {
fi.classList.remove('active');
fi.querySelector('.faq-question').setAttribute('aria-expanded',
'false');
});
// Open clicked if it wasn't active
if (!isActive) {
item.classList.add('active');
question.setAttribute('aria-expanded', 'true');
}
});
});
// === Financing Calculator ===
const calcPrice = document.getElementById('calcPrice');
const calcDown = document.getElementById('calcDown');
const calcRate = document.getElementById('calcRate');
const calcTerm = document.getElementById('calcTerm');
const calcPriceVal = document.getElementById('calcPriceVal');
const calcDownVal = document.getElementById('calcDownVal');
const calcRateVal = document.getElementById('calcRateVal');
const calcTermVal = document.getElementById('calcTermVal');
const calcMonthly = document.getElementById('calcMonthly');
const calcLoanAmt = document.getElementById('calcLoanAmt');
const calcTotalInterest = document.getElementById('calcTotalInterest');
const calcTotalCost = document.getElementById('calcTotalCost');
function formatCurrency(val) {
return '$' + Math.round(val).toLocaleString('en-US');
}
function calculateLoan() {
const price = parseFloat(calcPrice.value);
const down = parseFloat(calcDown.value);
const rate = parseFloat(calcRate.value);
const term = parseFloat(calcTerm.value);
// Update display values
calcPriceVal.textContent = formatCurrency(price);
calcDownVal.textContent = formatCurrency(down);
calcRateVal.textContent = rate.toFixed(1) + '%';
calcTermVal.textContent = term + ' months';
const loanAmount = price - down;
const monthlyRate = (rate / 100) / 12;
const numPayments = term;
let monthlyPayment = 0;
let totalCost = 0;
let totalInterest = 0;
if (loanAmount <= 0) {
monthlyPayment = 0;
totalCost = 0;
totalInterest = 0;
} else if (rate === 0) {
monthlyPayment = loanAmount / numPayments;
totalCost = loanAmount;
totalInterest = 0;
} else {
monthlyPayment = loanAmount *
(monthlyRate * Math.pow(1 + monthlyRate, numPayments)) /
(Math.pow(1 + monthlyRate, numPayments) - 1);
totalCost = monthlyPayment * numPayments;
totalInterest = totalCost - loanAmount;
}
calcMonthly.textContent = formatCurrency(monthlyPayment);
calcLoanAmt.textContent = formatCurrency(loanAmount);
calcTotalInterest.textContent = formatCurrency(totalInterest);
calcTotalCost.textContent = formatCurrency(totalCost + down);
}
[calcPrice, calcDown, calcRate, calcTerm].forEach(el => {
el.addEventListener('input', calculateLoan);
});
// Initialize calculator
calculateLoan();
// === Intersection Observer for subtle fade-in ===
const observerOptions = { threshold: 0.1, rootMargin: '0px 0px -40px 0px' };
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
observer.unobserve(entry.target);
}
});
}, observerOptions);
// Observe section headers and cards for entrance animation
document.querySelectorAll(
'.feature-card, .vehicle-card, .parts-card, .testimonial-card, .faq-item, .sidebar-card'
).forEach((el, i) => {
el.style.opacity = '0';
el.style.transform = 'translateY(20px)';
el.style.transition = `opacity 0.5s ease ${i * 0.05}s, transform 0.5s ease ${i * 0.05}s`;
observer.observe(el);
});
console.log('🚗 AutoHaven Motors — Ready to roll. All systems loaded.');
})();
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T09:44:20.941Z",
"url": "https://benchmark.aimac.invalid/0c3726579e0e6cbd786e409d2ba037cd6be38bb474efed91c25225061b187ac1.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-allowed-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attributes are used correctly for the defined role"
}
],
"none": [
{
"id": "aria-unsupported-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute is supported"
}
],
"impact": null,
"html": "<button class=\"faq-question\" aria-expanded=\"true\">\n What documents do I need to finance a vehicle?\n <span class=\"faq-arrow\">\u25bc</span>\n </button>",
"target": [
".active > .faq-question"
]
}
]
},
{
"id": "aria-conditional-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are used as described in the specification of the element's role",
"help": "ARIA attributes must be used as specified for the element's role",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-conditional-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"none": [],
"impact": null,
"html": "<button class=\"faq-question\" aria-expanded=\"true\">\n What documents do I need to finance a vehicle?\n <span class=\"faq-arrow\">\u25bc</span>\n </button>",
"target": [
".active > .faq-question"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<button class=\"faq-question\" aria-expanded=\"true\">\n What documents do I need to finance a vehicle?\n <span class=\"faq-arrow\">\u25bc</span>\n </button>",
"target": [
".active > .faq-question"
]
}
]
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-valid-attr-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute values are valid"
},
{
"id": "aria-errormessage",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
},
{
"id": "aria-level",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-level values are valid"
}
],
"none": [],
"impact": null,
"html": "<button class=\"faq-question\" aria-expanded=\"true\">\n What documents do I need to finance a vehicle?\n <span class=\"faq-arrow\">\u25bc</span>\n </button>",
"target": [
".active > .faq-question"
]
}
]
},
{
"id": "aria-valid-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure attributes that begin with aria- are valid ARIA attributes",
"help": "ARIA attributes must conform to valid names",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-valid-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute name is valid"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"faq-question\" aria-expanded=\"true\">\n What documents do I need to finance a vehicle?\n <span class=\"faq-arrow\">\u25bc</span>\n </button>",
"target": [
".active > .faq-question"
]
}
]
},
{
"id": "avoid-inline-spacing",
"impact": null,
"tags": [
"cat.structure",
"wcag21aa",
"wcag1412",
"EN-301-549",
"EN-9.1.4.12",
"ACT"
],
"description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
"help": "Inline text spacing must be adjustable with custom stylesheets",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "important-letter-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-word-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-line-height",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "line-height in the style attribute is not set to !important, or meets the minimum"
}
],
"none": [],
"impact": null,
"html": "<div id=\"scroll-progress\" style=\"width:0%;\"></div>",
"target": [
"#scroll-progress"
]
}
]
},
{
"id": "button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure buttons have discernible text",
"help": "Buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has inner text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button type=\"button\" class=\"btn btn-primary btn-sm\">Search Inventory</button>",
"target": [
"button[type=\"button\"]"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "internal-link-present",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Valid skip link found"
},
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1>Find Your <span class=\"accent\">Perfect Drive</span> Today</h1>",
"target": [
"h1"
]
},
{
"html": "<h2 class=\"section-title\">The AutoHaven Difference</h2>",
"target": [
"#about > .section-header > .section-title"
]
},
{
"html": "<h3>Extensive Inventory</h3>",
"target": [
".feature-card:nth-child(1) > h3"
]
},
{
"html": "<h3>Certified Pre-Owned</h3>",
"target": [
".feature-card:nth-child(2) > h3"
]
},
{
"html": "<h3>Competitive Financing</h3>",
"target": [
".feature-card:nth-child(3) > h3"
]
},
{
"html": "<h3>Expert Service</h3>",
"target": [
".feature-card:nth-child(4) > h3"
]
},
{
"html": "<h2 class=\"section-title\">New Arrivals</h2>",
"target": [
"#inventory > .section-header > .section-title"
]
},
{
"html": "<h3>2024 Toyota Camry SE</h3>",
"target": [
".vehicle-card:nth-child(1) > .vehicle-card-body > h3"
]
},
{
"html": "<h3>2023 Ford F-150 XLT</h3>",
"target": [
".vehicle-card:nth-child(2) > .vehicle-card-body > h3"
]
},
{
"html": "<h3>2024 Honda Civic Sport</h3>",
"target": [
".vehicle-card:nth-child(3) > .vehicle-card-body > h3"
]
},
{
"html": "<h3>2023 BMW 330i</h3>",
"target": [
".vehicle-card:nth-child(4) > .vehicle-card-body > h3"
]
},
{
"html": "<h3>2024 Chevrolet Silverado 1500</h3>",
"target": [
".vehicle-card:nth-child(5) > .vehicle-card-body > h3"
]
},
{
"html": "<h3>2023 Mazda CX-5 Carbon Edition</h3>",
"target": [
".vehicle-card:nth-child(6) > .vehicle-card-body > h3"
]
},
{
"html": "<h4><span class=\"icon\">\u2b50</span> Featured This Week</h4>",
"target": [
".sidebar-card:nth-child(1) > h4"
]
},
{
"html": "<h3 style=\"font-size:1rem;margin-bottom:4px;\">2024 Mercedes-Benz C300</h3>",
"target": [
".sidebar-card:nth-child(1) > h3"
]
},
{
"html": "<h4><span class=\"icon\">\ud83d\udd0d</span> Quick Search</h4>",
"target": [
".sidebar-card:nth-child(2) > h4"
]
},
{
"html": "<h4><span class=\"icon\">\ud83d\udd50</span> Service Hours</h4>",
"target": [
".sidebar-card:nth-child(3) > h4"
]
},
{
"html": "<h2>Maximize Your Trade-In Value</h2>",
"target": [
".tradein-section > div:nth-child(1) > h2"
]
},
{
"html": "<h2 class=\"section-title\">Parts & Service You Can Trust</h2>",
"target": [
"#parts-service > .section-header > .section-title"
]
},
{
"html": "<h3>Genuine OEM Parts</h3>",
"target": [
".parts-card:nth-child(1) > h3"
]
},
{
"html": "<h3>Service Intervals & Maintenance</h3>",
"target": [
".parts-card:nth-child(2) > h3"
]
},
{
"html": "<h3>Performance Upgrades</h3>",
"target": [
".parts-card:nth-child(3) > h3"
]
},
{
"html": "<h2 class=\"section-title\">Financing Calculator</h2>",
"target": [
"#financing > .section-header > .section-title"
]
},
{
"html": "<h3>Estimated Monthly Payment</h3>",
"target": [
".calc-results > h3"
]
},
{
"html": "<h2 class=\"section-title\">What Our Clients Say</h2>",
"target": [
"#specials > .section-header > .section-title"
]
},
{
"html": "<h2 class=\"section-title\">Frequently Asked Questions</h2>",
"target": [
".section:nth-child(10) > .section-header > .section-title"
]
},
{
"html": "<h4>Quick Links</h4>",
"target": [
".footer-grid > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Resources</h4>",
"target": [
".footer-grid > div:nth-child(3) > h4"
]
},
{
"html": "<h4>Support</h4>",
"target": [
"div:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#0a0a14",
"contrastRatio": 19.69,
"fontSize": "16.2pt (21.6px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 19.69"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span class=\"logo-name\">AutoHaven Motors</span>",
"target": [
".logo-text > .logo-name"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "duplicate-id-aria",
"data": "calcPrice",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<input type=\"range\" id=\"calcPrice\" min=\"10000\" max=\"100000\" step=\"1000\" value=\"35000\">",
"target": [
"#calcPrice"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<select>",
"target": [
"select:nth-child(1)"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/88x88/1a1a2e/f0a500?text=AH&font=montserrat\" alt=\"AutoHaven Motors Logo\" class=\"logo-icon\">",
"target": [
".header-inner > .logo[href=\"#\"] > .logo-icon[alt=\"AutoHaven Motors Logo\"]"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "explicit-label",
"data": {
"explicitLabel": "Vehicle Price"
},
"relatedNodes": [
{
"html": "<label for=\"calcPrice\">Vehicle Price</label>",
"target": [
"label[for=\"calcPrice\"]"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"range\" id=\"calcPrice\" min=\"10000\" max=\"100000\" step=\"1000\" value=\"35000\">",
"target": [
"#calcPrice"
]
}
]
},
{
"id": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "link-in-text-block-style",
"data": null,
"relatedNodes": [
{
"html": "<div>",
"target": [
".tradein-section > div:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"btn btn-primary\">Get Your Free Trade-In Offer</a>",
"target": [
"div:nth-child(1) > .btn-primary.btn[href=\"#\"]"
]
}
]
},
{
"id": "link-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a href=\"#\" class=\"logo\">",
"target": [
".header-inner > .logo[href=\"#\"]"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul class=\"sidebar-hours\">",
"target": [
".sidebar-hours"
]
}
]
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "listitem",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List item has a <ul>, <ol> or role=\"list\" parent element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<li><span>Monday \u2013 Friday</span><span>7:00 AM \u2013 6:00 PM</span></li>",
"target": [
".sidebar-hours > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/88x88/1a1a2e/f0a500?text=AH&font=montserrat\" alt=\"AutoHaven Motors Logo\" class=\"logo-icon\">",
"target": [
".header-inner > .logo[href=\"#\"] > .logo-icon[alt=\"AutoHaven Motors Logo\"]"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 343.8,
"height": 44
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (343.8px by 44px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"logo\">",
"target": [
".header-inner > .logo[href=\"#\"]"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "bold",
"messageKey": "imgNode",
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"hero-badge\">\ud83c\udfc6 #1 Rated Dealership 2025</span>",
"target": [
".hero-badge"
]
},
{
"html": "<img src=\"https://picsum.photos/1920/800?random=10\" alt=\"Luxury vehicle on open road\">",
"target": [
"img[alt=\"Luxury vehicle on open road\"]"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined because element contains an image node"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"hero-badge\">\ud83c\udfc6 #1 Rated Dealership 2025</span>",
"target": [
".hero-badge"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because element contains an image node"
}
]
}
],
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#16162a",
"contrastRatio": 3.37,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"calc-results\">",
"target": [
".calc-results"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.37 (foreground color: #6a6a80, background color: #16162a, font size: 10.2pt (13.6px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h3>Estimated Monthly Payment</h3>",
"target": [
".calc-results > h3"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.37 (foreground color: #6a6a80, background color: #16162a, font size: 10.2pt (13.6px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#12121f",
"contrastRatio": 3.52,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"footer\" id=\"contact\">",
"target": [
"#contact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.52 (foreground color: #6a6a80, background color: #12121f, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>\u00a9 2025 AutoHaven Motors. All rights reserved.</span>",
"target": [
".footer-bottom > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.52 (foreground color: #6a6a80, background color: #12121f, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#0000ee",
"bgColor": "#1a1a2e",
"contrastRatio": 1.81,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" aria-label=\"Twitter\">\ud835\udd4f</a>",
"target": [
"a[aria-label=\"Twitter\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.81 (foreground color: #0000ee, background color: #1a1a2e, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" aria-label=\"Twitter\">\ud835\udd4f</a>",
"target": [
"a[aria-label=\"Twitter\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.81 (foreground color: #0000ee, background color: #1a1a2e, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#0000ee",
"bgColor": "#1a1a2e",
"contrastRatio": 1.81,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" aria-label=\"LinkedIn\">in</a>",
"target": [
"a[aria-label=\"LinkedIn\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.81 (foreground color: #0000ee, background color: #1a1a2e, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" aria-label=\"LinkedIn\">in</a>",
"target": [
"a[aria-label=\"LinkedIn\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.81 (foreground color: #0000ee, background color: #1a1a2e, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">12,450 mi</span>",
"target": [
".vehicle-card:nth-child(1) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">12,450 mi</span>",
"target": [
".vehicle-card:nth-child(1) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">Automatic</span>",
"target": [
".vehicle-card:nth-child(1) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">Automatic</span>",
"target": [
".vehicle-card:nth-child(1) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">2.5L 4-Cyl</span>",
"target": [
".vehicle-card:nth-child(1) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">2.5L 4-Cyl</span>",
"target": [
".vehicle-card:nth-child(1) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">8,200 mi</span>",
"target": [
".vehicle-card:nth-child(2) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">8,200 mi</span>",
"target": [
".vehicle-card:nth-child(2) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">Automatic</span>",
"target": [
".vehicle-card:nth-child(2) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">Automatic</span>",
"target": [
".vehicle-card:nth-child(2) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">3.5L V6 EcoBoost</span>",
"target": [
".vehicle-card:nth-child(2) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">3.5L V6 EcoBoost</span>",
"target": [
".vehicle-card:nth-child(2) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#2196f3",
"contrastRatio": 3.12,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge-cpo\">Certified</span>",
"target": [
".vehicle-card:nth-child(3) > .vehicle-card-img-wrap > .badge-cpo"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.12 (foreground color: #ffffff, background color: #2196f3, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge-cpo\">Certified</span>",
"target": [
".vehicle-card:nth-child(3) > .vehicle-card-img-wrap > .badge-cpo"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.12 (foreground color: #ffffff, background color: #2196f3, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">5,100 mi</span>",
"target": [
".vehicle-card:nth-child(3) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">5,100 mi</span>",
"target": [
".vehicle-card:nth-child(3) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">CVT</span>",
"target": [
".vehicle-card:nth-child(3) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">CVT</span>",
"target": [
".vehicle-card:nth-child(3) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">1.5L Turbo</span>",
"target": [
".vehicle-card:nth-child(3) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">1.5L Turbo</span>",
"target": [
".vehicle-card:nth-child(3) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#16162a",
"contrastRatio": 3.37,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\" style=\"opacity: 1; transform: translateY(0px); transition: opacity 0.5s 0.5s, transform 0.5s 0.5s;\">",
"target": [
".sidebar-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.37 (foreground color: #6a6a80, background color: #16162a, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p style=\"font-size:0.8rem;color:var(--text-muted);margin-bottom:8px;\">Turbocharged 2.0L inline-4 producing 255 horsepower with 295 lb-ft of torque. Loaded with premium package.</p>",
"target": [
".sidebar-card:nth-child(1) > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.37 (foreground color: #6a6a80, background color: #16162a, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">15,800 mi</span>",
"target": [
".vehicle-card:nth-child(4) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">15,800 mi</span>",
"target": [
".vehicle-card:nth-child(4) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">Automatic</span>",
"target": [
".vehicle-card:nth-child(4) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">Automatic</span>",
"target": [
".vehicle-card:nth-child(4) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">2.0L Turbo</span>",
"target": [
".vehicle-card:nth-child(4) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">2.0L Turbo</span>",
"target": [
".vehicle-card:nth-child(4) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">3,200 mi</span>",
"target": [
".vehicle-card:nth-child(5) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">3,200 mi</span>",
"target": [
".vehicle-card:nth-child(5) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">Automatic</span>",
"target": [
".vehicle-card:nth-child(5) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">Automatic</span>",
"target": [
".vehicle-card:nth-child(5) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">5.3L V8</span>",
"target": [
".vehicle-card:nth-child(5) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">5.3L V8</span>",
"target": [
".vehicle-card:nth-child(5) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#2196f3",
"contrastRatio": 3.12,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge-cpo\">Certified</span>",
"target": [
".vehicle-card:nth-child(6) > .vehicle-card-img-wrap > .badge-cpo"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.12 (foreground color: #ffffff, background color: #2196f3, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge-cpo\">Certified</span>",
"target": [
".vehicle-card:nth-child(6) > .vehicle-card-img-wrap > .badge-cpo"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.12 (foreground color: #ffffff, background color: #2196f3, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">9,650 mi</span>",
"target": [
".vehicle-card:nth-child(6) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">9,650 mi</span>",
"target": [
".vehicle-card:nth-child(6) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">Automatic</span>",
"target": [
".vehicle-card:nth-child(6) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">Automatic</span>",
"target": [
".vehicle-card:nth-child(6) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#1a1a2e",
"contrastRatio": 3.23,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"vehicle-spec\">2.5L Turbo</span>",
"target": [
".vehicle-card:nth-child(6) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"vehicle-spec\">2.5L Turbo</span>",
"target": [
".vehicle-card:nth-child(6) > .vehicle-card-body > .vehicle-specs > .vehicle-spec:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.23 (foreground color: #6a6a80, background color: #1a1a2e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#16162a",
"contrastRatio": 3.37,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"testimonial-card\" style=\"opacity: 1; transform: translateY(0px); transition: opacity 0.5s 0.85s, transform 0.5s 0.85s;\">",
"target": [
".testimonial-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.37 (foreground color: #6a6a80, background color: #16162a, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"testimonial-author-detail\">Purchased 2023 Ford F-150 XLT</div>",
"target": [
".testimonial-card:nth-child(1) > .testimonial-author > div > .testimonial-author-detail"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.37 (foreground color: #6a6a80, background color: #16162a, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#16162a",
"contrastRatio": 3.37,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"testimonial-card\" style=\"opacity: 1; transform: translateY(0px); transition: opacity 0.5s 0.9s, transform 0.5s 0.9s;\">",
"target": [
".testimonial-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.37 (foreground color: #6a6a80, background color: #16162a, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"testimonial-author-detail\">Purchased 2024 Honda Civic Sport</div>",
"target": [
".testimonial-card:nth-child(2) > .testimonial-author > div > .testimonial-author-detail"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.37 (foreground color: #6a6a80, background color: #16162a, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6a6a80",
"bgColor": "#16162a",
"contrastRatio": 3.37,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"testimonial-card\" style=\"opacity: 1; transform: translateY(0px); transition: opacity 0.5s 0.95s, transform 0.5s 0.95s;\">",
"target": [
".testimonial-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.37 (foreground color: #6a6a80, background color: #16162a, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"testimonial-author-detail\">BMW 330i Owner \u2014 Service Client</div>",
"target": [
".testimonial-card:nth-child(3) > .testimonial-author > div > .testimonial-author-detail"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.37 (foreground color: #6a6a80, background color: #16162a, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
},
{
"id": "select-name",
"impact": "critical",
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<select>",
"target": [
"select:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<select>",
"target": [
"select:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<select>",
"target": [
"select:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 7796
},
{
"y": 576,
"height": 7796
},
{
"y": 1152,
"height": 7796
},
{
"y": 1728,
"height": 7796
},
{
"y": 2304,
"height": 7796
},
{
"y": 2880,
"height": 7796
},
{
"y": 3456,
"height": 7796
},
{
"y": 4032,
"height": 7796
},
{
"y": 4608,
"height": 7796
},
{
"y": 5184,
"height": 7796
},
{
"y": 5760,
"height": 7796
},
{
"y": 6336,
"height": 7796
},
{
"y": 6912,
"height": 7796
},
{
"y": 7076,
"height": 7796
}
],
"scans": 15,
"max_states": 512,
"settle_ms": 5000,
"page_timeout_seconds": 150,
"layout_stability": "consecutive 100ms size samples within one CSS pixel",
"animation_settling": "finite animations present when scroll resources are ready finish or are cancelled",
"interactive_states": "not exercised",
"horizontal_scroll": "not exercised"
}
}
System Prompt
You are a lead web developer at a top digital agency, tasked with creating a one-page website for a new client based on the given specifications, delivered as an HTML file. First non-whitespace char '<', last non-whitespace char '>'. Use the following services to generate placeholder images where needed:
- placehold.co (text): https://placehold.co/[{w}x{h}|{size}][/{bg-color}/{text-color}]?text={text}&font=[lato|lora|montserrat|noto sans|open sans|oswald|playfair display|poppins|pt sans|raleway|roboto|source sans|source sans pro]
- picsum.photos (photos): https://picsum.photos/[{w}/{h}|{size}]?[grayscale][&blur={1-10}]
- pravatar.cc (avatars): https://i.pravatar.cc/{size}?u={identifier}
Choose sizes appropriate to layout.
User Prompt
Create a **complete, polished, production-quality** primary web page for a new client in the "Automotive" sector.
Your goal is to generate the full HTML code for a page that is not just functional but also visually compelling, content-rich, and feels like a finished product ready for launch.
**Client & Category:**
- Industry: "Automotive"
- Description: Automotive news, car reviews, repair tips, and dealership resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Automotive" category.
2. **Define Page:** Determine the most effective primary page type (e.g., homepage, service landing page, category portal) to showcase this fictional entity.
3. **Design:** Develop an opinionated, modern, and professional layout. Make distinct choices about structure and flow.
**Content & Structure Requirements (Deliver a COMPLETE page):**
- **Overall:** The final page must feel substantial and complete, with realistic amounts of text (multiple paragraphs per section where appropriate, avoid single sentences), well-integrated placeholder images, and logical flow. It should look like a real website a business would proudly use.
- **HEADER:** Include the invented site name, tagline, a logo placeholder image, and a primary navigation bar. Ensure the navigation has **at least 5-7 clearly defined, relevant links** including: "Inventory", "Trade-In", "Specials".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Automotive" category. Consider themes similar to: "Parts Department", "New Arrivals", "Trade-In Value".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "trade-in value", "torque", "service interval".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Schedule Test Drive", "Compare Models", "Contact Dealer".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Automotive" sector. Ideas similar but not limited to: "financing calculator".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "featured inventory", "maintenance reminders", "financing offers".
- **FOOTER:** Include a professional footer with invented contact details, copyright (current year), social media links, and standard links (Privacy, Terms).
- **MODERN WEB PATTERNS:** Include modern web patterns like testimonial cards, feature grids, or FAQ accordions where appropriate.