Qwen Qwen3.7 Plus – Home and Garden
via Alibaba · Generated
- AIMAC Debt 7.64
- Cost $0.018
- Total Violations 18
- HTML Size 54 KB
- Em Dashes 8
Screenshot
View Live Page
Accessibility Issues Found
18 Serious
-
color-contrast serious 16 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<p>Where Your Home Meets Nature</p> -
target-size serious 2 instances
All touch targets must be 24px large, or leave sufficient space
Example HTML
<select id="project-type">
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>Verdant Haven — Where Your Home Meets Nature</title>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700&family=Source+Sans+Pro:wght@300;400;600;700&display=swap" rel="stylesheet">
<style>
:root {
--forest: #2D5016;
--sage: #6B8F3C;
--mint: #A8C686;
--cream: #FDF8F0;
--bark: #3E2723;
--clay: #8D6E63;
--gold: #C8A951;
--white: #FFFFFF;
--light-gray: #F5F5F0;
--text-dark: #2C2C2C;
--text-medium: #5A5A5A;
--shadow: 0 4px 20px rgba(0,0,0,0.08);
--shadow-hover: 0 8px 40px rgba(0,0,0,0.12);
--radius: 12px;
--transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Source Sans Pro', sans-serif;
color: var(--text-dark);
line-height: 1.7;
background: var(--cream);
overflow-x: hidden;
}
h1, h2, h3, h4, h5 {
font-family: 'Playfair Display', serif;
line-height: 1.3;
}
/* HEADER */
.header {
background: var(--white);
border-bottom: 1px solid rgba(45, 80, 22, 0.1);
position: sticky;
top: 0;
z-index: 1000;
backdrop-filter: blur(10px);
background: rgba(255,255,255,0.97);
}
.header-top {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 48px;
max-width: 1400px;
margin: 0 auto;
}
.logo-area {
display: flex;
align-items: center;
gap: 16px;
}
.logo-area img {
width: 52px;
height: 52px;
border-radius: 50%;
object-fit: cover;
}
.logo-text h1 {
font-size: 1.6rem;
color: var(--forest);
letter-spacing: -0.5px;
}
.logo-text p {
font-size: 0.75rem;
color: var(--sage);
text-transform: uppercase;
letter-spacing: 2px;
font-weight: 600;
}
.header-actions {
display: flex;
align-items: center;
gap: 20px;
}
.search-btn, .cart-btn {
background: none;
border: none;
font-size: 1.2rem;
cursor: pointer;
color: var(--text-medium);
transition: var(--transition);
padding: 8px;
border-radius: 50%;
}
.search-btn:hover, .cart-btn:hover {
color: var(--forest);
background: var(--light-gray);
}
.nav {
border-top: 1px solid rgba(0,0,0,0.05);
max-width: 1400px;
margin: 0 auto;
padding: 0 48px;
}
.nav ul {
display: flex;
list-style: none;
gap: 0;
}
.nav ul li a {
display: block;
padding: 14px 20px;
text-decoration: none;
color: var(--text-medium);
font-weight: 600;
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 1px;
transition: var(--transition);
border-bottom: 3px solid transparent;
}
.nav ul li a:hover, .nav ul li a.active {
color: var(--forest);
border-bottom-color: var(--sage);
background: rgba(107, 143, 60, 0.05);
}
/* HERO */
.hero {
position: relative;
height: 75vh;
min-height: 550px;
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;
}
.hero-overlay {
position: absolute;
inset: 0;
background: linear-gradient(135deg, rgba(45, 80, 22, 0.85) 0%, rgba(45, 80, 22, 0.4) 50%, rgba(0,0,0,0.2) 100%);
z-index: 1;
}
.hero-content {
position: relative;
z-index: 2;
max-width: 1400px;
margin: 0 auto;
padding: 0 48px;
width: 100%;
}
.hero-content h2 {
font-size: 3.5rem;
color: var(--white);
max-width: 650px;
margin-bottom: 20px;
text-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
.hero-content p {
font-size: 1.2rem;
color: rgba(255,255,255,0.9);
max-width: 520px;
margin-bottom: 36px;
line-height: 1.8;
}
.hero-buttons {
display: flex;
gap: 16px;
flex-wrap: wrap;
}
.btn-primary {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 16px 32px;
background: var(--sage);
color: var(--white);
border: none;
border-radius: 50px;
font-size: 1rem;
font-weight: 600;
cursor: pointer;
transition: var(--transition);
text-decoration: none;
letter-spacing: 0.5px;
}
.btn-primary:hover {
background: var(--forest);
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(45, 80, 22, 0.3);
}
.btn-secondary {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 16px 32px;
background: transparent;
color: var(--white);
border: 2px solid rgba(255,255,255,0.6);
border-radius: 50px;
font-size: 1rem;
font-weight: 600;
cursor: pointer;
transition: var(--transition);
text-decoration: none;
}
.btn-secondary:hover {
background: rgba(255,255,255,0.15);
border-color: var(--white);
}
/* STATS BAR */
.stats-bar {
background: var(--white);
padding: 32px 48px;
max-width: 1400px;
margin: -50px auto 0;
border-radius: var(--radius);
box-shadow: var(--shadow);
position: relative;
z-index: 3;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
}
.stat-item {
text-align: center;
padding: 12px;
}
.stat-item .number {
font-family: 'Playfair Display', serif;
font-size: 2.2rem;
font-weight: 700;
color: var(--forest);
}
.stat-item .label {
font-size: 0.85rem;
color: var(--text-medium);
text-transform: uppercase;
letter-spacing: 1px;
margin-top: 4px;
}
/* MAIN LAYOUT */
.main-layout {
max-width: 1400px;
margin: 80px auto;
padding: 0 48px;
display: grid;
grid-template-columns: 1fr 340px;
gap: 48px;
}
.main-content {
min-width: 0;
}
/* SECTION STYLES */
.section {
margin-bottom: 72px;
}
.section-header {
margin-bottom: 36px;
}
.section-header h2 {
font-size: 2.2rem;
color: var(--bark);
margin-bottom: 12px;
}
.section-header p {
font-size: 1.05rem;
color: var(--text-medium);
max-width: 600px;
}
.section-label {
display: inline-block;
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 2px;
color: var(--sage);
margin-bottom: 8px;
}
/* FEATURE GRID */
.feature-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 28px;
}
.feature-card {
background: var(--white);
border-radius: var(--radius);
overflow: hidden;
box-shadow: var(--shadow);
transition: var(--transition);
}
.feature-card:hover {
transform: translateY(-4px);
box-shadow: var(--shadow-hover);
}
.feature-card img {
width: 100%;
height: 200px;
object-fit: cover;
}
.feature-card-body {
padding: 24px;
}
.feature-card-body h3 {
font-size: 1.2rem;
color: var(--bark);
margin-bottom: 10px;
}
.feature-card-body p {
font-size: 0.95rem;
color: var(--text-medium);
margin-bottom: 16px;
}
.feature-card-body .tag {
display: inline-block;
padding: 4px 12px;
background: rgba(107, 143, 60, 0.1);
color: var(--sage);
border-radius: 20px;
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
}
/* LANDSCAPING SECTION */
.landscaping-content {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 36px;
align-items: center;
}
.landscaping-text h3 {
font-size: 1.5rem;
color: var(--bark);
margin-bottom: 16px;
}
.landscaping-text p {
color: var(--text-medium);
margin-bottom: 16px;
font-size: 0.98rem;
}
.landscaping-text ul {
list-style: none;
margin-bottom: 24px;
}
.landscaping-text ul li {
padding: 8px 0;
padding-left: 28px;
position: relative;
color: var(--text-medium);
}
.landscaping-text ul li::before {
content: "✓";
position: absolute;
left: 0;
color: var(--sage);
font-weight: 700;
}
.landscaping-image {
border-radius: var(--radius);
overflow: hidden;
box-shadow: var(--shadow);
}
.landscaping-image img {
width: 100%;
height: 380px;
object-fit: cover;
display: block;
}
/* CALCULATOR */
.calculator-section {
background: var(--white);
border-radius: var(--radius);
padding: 40px;
box-shadow: var(--shadow);
}
.calculator-section h3 {
font-size: 1.5rem;
color: var(--bark);
margin-bottom: 8px;
}
.calculator-section > p {
color: var(--text-medium);
margin-bottom: 28px;
}
.calc-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
margin-bottom: 24px;
}
.calc-field label {
display: block;
font-size: 0.85rem;
font-weight: 600;
color: var(--text-dark);
margin-bottom: 6px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.calc-field input, .calc-field select {
width: 100%;
padding: 12px 16px;
border: 2px solid #E0E0D8;
border-radius: 8px;
font-size: 1rem;
font-family: inherit;
transition: var(--transition);
background: var(--light-gray);
}
.calc-field input:focus, .calc-field select:focus {
outline: none;
border-color: var(--sage);
background: var(--white);
}
.calc-result {
background: linear-gradient(135deg, var(--forest), var(--sage));
border-radius: 8px;
padding: 24px;
color: var(--white);
text-align: center;
display: none;
}
.calc-result.visible {
display: block;
animation: fadeIn 0.4s ease;
}
.calc-result .result-number {
font-family: 'Playfair Display', serif;
font-size: 2.5rem;
font-weight: 700;
}
.calc-result .result-label {
font-size: 0.9rem;
opacity: 0.9;
margin-top: 4px;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
/* TESTIMONIALS */
.testimonials-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 24px;
}
.testimonial-card {
background: var(--white);
border-radius: var(--radius);
padding: 28px;
box-shadow: var(--shadow);
border-left: 4px solid var(--sage);
}
.testimonial-card .quote {
font-style: italic;
color: var(--text-medium);
margin-bottom: 20px;
font-size: 0.95rem;
line-height: 1.8;
}
.testimonial-card .author {
display: flex;
align-items: center;
gap: 12px;
}
.testimonial-card .author img {
width: 44px;
height: 44px;
border-radius: 50%;
object-fit: cover;
}
.testimonial-card .author-info strong {
display: block;
font-size: 0.9rem;
color: var(--text-dark);
}
.testimonial-card .author-info span {
font-size: 0.8rem;
color: var(--text-medium);
}
.stars {
color: var(--gold);
margin-bottom: 12px;
font-size: 1rem;
}
/* FAQ */
.faq-list {
display: flex;
flex-direction: column;
gap: 12px;
}
.faq-item {
background: var(--white);
border-radius: var(--radius);
overflow: hidden;
box-shadow: var(--shadow);
}
.faq-question {
width: 100%;
padding: 20px 24px;
background: none;
border: none;
text-align: left;
font-size: 1rem;
font-weight: 600;
color: var(--text-dark);
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
font-family: inherit;
transition: var(--transition);
}
.faq-question:hover {
background: rgba(107, 143, 60, 0.05);
}
.faq-question .icon {
font-size: 1.4rem;
color: var(--sage);
transition: var(--transition);
flex-shrink: 0;
margin-left: 16px;
}
.faq-item.active .faq-question .icon {
transform: rotate(45deg);
}
.faq-answer {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s ease, padding 0.3s ease;
}
.faq-item.active .faq-answer {
max-height: 300px;
padding: 0 24px 20px;
}
.faq-answer p {
color: var(--text-medium);
font-size: 0.95rem;
line-height: 1.8;
}
/* SIDEBAR */
.sidebar {
position: sticky;
top: 120px;
align-self: start;
}
.sidebar-widget {
background: var(--white);
border-radius: var(--radius);
padding: 28px;
box-shadow: var(--shadow);
margin-bottom: 28px;
}
.sidebar-widget h4 {
font-size: 1.1rem;
color: var(--bark);
margin-bottom: 16px;
padding-bottom: 12px;
border-bottom: 2px solid var(--light-gray);
}
.featured-project {
display: flex;
gap: 12px;
margin-bottom: 16px;
padding-bottom: 16px;
border-bottom: 1px solid var(--light-gray);
}
.featured-project:last-child {
margin-bottom: 0;
padding-bottom: 0;
border-bottom: none;
}
.featured-project img {
width: 70px;
height: 70px;
border-radius: 8px;
object-fit: cover;
flex-shrink: 0;
}
.featured-project-info h5 {
font-family: 'Source Sans Pro', sans-serif;
font-size: 0.9rem;
font-weight: 600;
color: var(--text-dark);
margin-bottom: 4px;
}
.featured-project-info p {
font-size: 0.8rem;
color: var(--text-medium);
}
.expert-card {
text-align: center;
padding: 16px 0;
}
.expert-card img {
width: 80px;
height: 80px;
border-radius: 50%;
object-fit: cover;
margin-bottom: 12px;
}
.expert-card h5 {
font-family: 'Source Sans Pro', sans-serif;
font-size: 1rem;
font-weight: 600;
color: var(--text-dark);
}
.expert-card .specialty {
font-size: 0.85rem;
color: var(--sage);
margin-bottom: 8px;
}
.expert-card p {
font-size: 0.85rem;
color: var(--text-medium);
}
.seasonal-tips {
list-style: none;
}
.seasonal-tips li {
padding: 10px 0;
border-bottom: 1px solid var(--light-gray);
font-size: 0.9rem;
color: var(--text-medium);
display: flex;
align-items: flex-start;
gap: 10px;
}
.seasonal-tips li:last-child {
border-bottom: none;
}
.seasonal-tips li .tip-icon {
color: var(--sage);
font-weight: 700;
flex-shrink: 0;
}
/* CTA BANNER */
.cta-banner {
background: linear-gradient(135deg, var(--forest) 0%, #1a3a0a 100%);
border-radius: var(--radius);
padding: 60px 48px;
text-align: center;
margin: 80px 0;
position: relative;
overflow: hidden;
}
.cta-banner::before {
content: '';
position: absolute;
top: -50%;
right: -20%;
width: 400px;
height: 400px;
border-radius: 50%;
background: rgba(168, 198, 134, 0.1);
}
.cta-banner h2 {
color: var(--white);
font-size: 2.2rem;
margin-bottom: 16px;
position: relative;
}
.cta-banner p {
color: rgba(255,255,255,0.85);
font-size: 1.1rem;
max-width: 550px;
margin: 0 auto 32px;
position: relative;
}
.cta-banner .btn-primary {
background: var(--gold);
color: var(--bark);
position: relative;
}
.cta-banner .btn-primary:hover {
background: #d4b85c;
}
/* FOOTER */
.footer {
background: var(--bark);
color: rgba(255,255,255,0.8);
padding: 64px 48px 32px;
}
.footer-grid {
max-width: 1400px;
margin: 0 auto;
display: grid;
grid-template-columns: 2fr 1fr 1fr 1fr;
gap: 48px;
margin-bottom: 48px;
}
.footer h4 {
color: var(--white);
font-size: 1rem;
margin-bottom: 20px;
font-family: 'Source Sans Pro', sans-serif;
text-transform: uppercase;
letter-spacing: 1px;
}
.footer-about p {
font-size: 0.9rem;
line-height: 1.8;
margin-bottom: 20px;
}
.footer-social {
display: flex;
gap: 12px;
}
.footer-social a {
width: 40px;
height: 40px;
border-radius: 50%;
background: rgba(255,255,255,0.1);
display: flex;
align-items: center;
justify-content: center;
color: var(--white);
text-decoration: none;
transition: var(--transition);
font-size: 0.9rem;
}
.footer-social a:hover {
background: var(--sage);
}
.footer-links {
list-style: none;
}
.footer-links li {
margin-bottom: 10px;
}
.footer-links a {
color: rgba(255,255,255,0.7);
text-decoration: none;
font-size: 0.9rem;
transition: var(--transition);
}
.footer-links a:hover {
color: var(--mint);
}
.footer-bottom {
max-width: 1400px;
margin: 0 auto;
padding-top: 32px;
border-top: 1px solid rgba(255,255,255,0.1);
display: flex;
justify-content: space-between;
align-items: center;
font-size: 0.85rem;
}
.footer-bottom a {
color: rgba(255,255,255,0.6);
text-decoration: none;
margin-left: 24px;
transition: var(--transition);
}
.footer-bottom a:hover {
color: var(--mint);
}
/* RESPONSIVE */
@media (max-width: 1024px) {
.main-layout {
grid-template-columns: 1fr;
}
.sidebar {
position: static;
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 24px;
}
.sidebar-widget {
margin-bottom: 0;
}
}
@media (max-width: 768px) {
.header-top {
padding: 12px 20px;
}
.nav {
padding: 0 20px;
overflow-x: auto;
}
.nav ul li a {
padding: 12px 14px;
font-size: 0.8rem;
white-space: nowrap;
}
.hero-content {
padding: 0 20px;
}
.hero-content h2 {
font-size: 2.2rem;
}
.stats-bar {
grid-template-columns: repeat(2, 1fr);
margin: -30px 20px 0;
padding: 24px;
}
.main-layout {
padding: 0 20px;
margin: 60px auto;
}
.feature-grid, .testimonials-grid {
grid-template-columns: 1fr;
}
.landscaping-content {
grid-template-columns: 1fr;
}
.calc-grid {
grid-template-columns: 1fr;
}
.footer-grid {
grid-template-columns: 1fr 1fr;
}
.footer-bottom {
flex-direction: column;
gap: 12px;
text-align: center;
}
.sidebar {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body>
<!-- HEADER -->
<header class="header">
<div class="header-top">
<div class="logo-area">
<img src="https://placehold.co/52x52/2D5016/A8C686?text=VH&font=playfair+display" alt="Verdant Haven Logo">
<div class="logo-text">
<h1>Verdant Haven</h1>
<p>Where Your Home Meets Nature</p>
</div>
</div>
<div class="header-actions">
<button class="search-btn" aria-label="Search">🔍</button>
<button class="cart-btn" aria-label="Cart">🛒</button>
</div>
</div>
<nav class="nav">
<ul>
<li><a href="#" class="active">Home</a></li>
<li><a href="#">Ideas</a></li>
<li><a href="#">Shop</a></li>
<li><a href="#">DIY Guides</a></li>
<li><a href="#">Experts</a></li>
<li><a href="#">Landscaping</a></li>
<li><a href="#">Community</a></li>
</ul>
</nav>
</header>
<!-- HERO -->
<section class="hero">
<div class="hero-bg">
<img src="https://picsum.photos/1600/900?blur=1" alt="Beautiful garden landscape">
</div>
<div class="hero-overlay"></div>
<div class="hero-content">
<h2>Transform Your Outdoor Space Into a Living Masterpiece</h2>
<p>From backyard renovations to complete landscape overhauls, discover expert-guided design ideas, premium materials, and the confidence to bring your vision to life.</p>
<div class="hero-buttons">
<a href="#" class="btn-primary">Browse Ideas →</a>
<a href="#" class="btn-secondary">Get Design Consultation</a>
</div>
</div>
</section>
<!-- STATS BAR -->
<div class="stats-bar">
<div class="stat-item">
<div class="number">2,400+</div>
<div class="label">Design Ideas</div>
</div>
<div class="stat-item">
<div class="number">180+</div>
<div class="label">Expert Contributors</div>
</div>
<div class="stat-item">
<div class="number">50K+</div>
<div class="label">Projects Completed</div>
</div>
<div class="stat-item">
<div class="number">4.9★</div>
<div class="label">Community Rating</div>
</div>
</div>
<!-- MAIN LAYOUT -->
<div class="main-layout">
<main class="main-content">
<!-- SECTION 1: DESIGN IDEAS -->
<section class="section">
<div class="section-header">
<span class="section-label">Inspiration Gallery</span>
<h2>Design Ideas for Every Space</h2>
<p>Whether you're reimagining a compact urban balcony or planning a sprawling estate garden, our curated collections provide the creative spark you need to begin your next project with confidence.</p>
</div>
<div class="feature-grid">
<div class="feature-card">
<img src="https://picsum.photos/600/400?random=1" alt="Modern patio design">
<div class="feature-card-body">
<h3>Modern Patio Retreats</h3>
<p>Create an inviting outdoor living area with clean lines, natural stone pavers, and strategically placed perennial plantings that provide year-round visual interest and privacy screening.</p>
<span class="tag">Outdoor Living</span>
</div>
</div>
<div class="feature-card">
<img src="https://picsum.photos/600/400?random=2" alt="Kitchen garden">
<div class="feature-card-body">
<h3>Kitchen Garden Layouts</h3>
<p>Design a productive raised-bed vegetable garden that maximizes yield in minimal space. Learn companion planting strategies and seasonal rotation plans for continuous harvests.</p>
<span class="tag">Edible Gardens</span>
</div>
</div>
<div class="feature-card">
<img src="https://picsum.photos/600/400?random=3" alt="Water features">
<div class="feature-card-body">
<h3>Water Features & Fountains</h3>
<p>Introduce the soothing sound of moving water to your landscape. From recirculating bog filters to formal reflecting pools, explore designs that attract wildlife and create tranquility.</p>
<span class="tag">Water Design</span>
</div>
</div>
<div class="feature-card">
<img src="https://picsum.photos/600/400?random=4" alt="Outdoor lighting">
<div class="feature-card-body">
<h3>Landscape Lighting Plans</h3>
<p>Extend the usability of your outdoor spaces well into the evening with layered lighting design. Combine path lights, uplighting for specimen trees, and ambient string lighting for entertaining areas.</p>
<span class="tag">Lighting</span>
</div>
</div>
</div>
<div style="text-align: center; margin-top: 32px;">
<a href="#" class="btn-primary">Get Design Ideas →</a>
</div>
</section>
<!-- SECTION 2: LANDSCAPING TIPS -->
<section class="section">
<div class="section-header">
<span class="section-label">Expert Guidance</span>
<h2>Landscaping Tips That Last</h2>
<p>Great landscaping isn't just about aesthetics — it's about creating resilient ecosystems that thrive with minimal intervention while enhancing your property's value and your daily quality of life.</p>
</div>
<div class="landscaping-content">
<div class="landscaping-text">
<h3>Building a Foundation for Long-Term Success</h3>
<p>Every successful landscape begins beneath the surface. Soil preparation is the single most impactful investment you can make before installing any plant material. Conducting a comprehensive soil analysis reveals pH levels, nutrient deficiencies, and drainage characteristics that will dictate your plant selection and amendment strategy.</p>
<p>When planning hardscape elements such as retaining walls, patios, or walkways, understanding your site's grading and load-bearing capacity is essential. Improperly engineered structures can lead to costly failures, particularly in regions with expansive clay soils or significant freeze-thaw cycles.</p>
<ul>
<li>Test soil pH and amend before planting season begins</li>
<li>Install drainage solutions before hardscape construction</li>
<li>Select native perennials adapted to your USDA hardiness zone</li>
<li>Plan for mature plant sizes to avoid overcrowding</li>
<li>Incorporating organic mulch reduces water evaporation by 70%</li>
</ul>
<a href="#" class="btn-primary">Explore Landscaping Guides →</a>
</div>
<div class="landscaping-image">
<img src="https://picsum.photos/600/760?random=5" alt="Landscaping in progress">
</div>
</div>
</section>
<!-- SECTION 3: MATERIAL CALCULATOR -->
<section class="section">
<div class="calculator-section">
<span class="section-label">Interactive Tool</span>
<h3>Garden Material Calculator</h3>
<p>Planning a renovation or new installation? Use our calculator to estimate the materials you'll need for your project. Accurate estimates help you budget effectively and reduce waste.</p>
<div class="calc-grid">
<div class="calc-field">
<label for="project-type">Project Type</label>
<select id="project-type">
<option value="mulch">Mulch / Soil Amendment</option>
<option value="paver">Paver Patio</option>
<option value="raised-bed">Raised Garden Bed</option>
<option value="gravel">Gravel Pathway</option>
<option value="sod">New Lawn (Sod)</option>
</select>
</div>
<div class="calc-field">
<label for="length">Length (feet)</label>
<input type="number" id="length" placeholder="e.g., 20" min="1">
</div>
<div class="calc-field">
<label for="width">Width (feet)</label>
<input type="number" id="width" placeholder="e.g., 15" min="1">
</div>
<div class="calc-field">
<label for="depth">Depth (inches)</label>
<input type="number" id="depth" placeholder="e.g., 3" min="1" value="3">
</div>
</div>
<button class="btn-primary" onclick="calculateMaterials()" style="width: 100%; justify-content: center;">Calculate Materials</button>
<div class="calc-result" id="calc-result">
<div class="result-number" id="result-number">—</div>
<div class="result-label" id="result-label">cubic yards estimated</div>
</div>
</div>
</section>
<!-- SECTION 4: TESTIMONIALS -->
<section class="section">
<div class="section-header">
<span class="section-label">Community Voices</span>
<h2>What Our Members Are Saying</h2>
<p>Join thousands of homeowners who've transformed their properties with guidance from the Verdant Haven community.</p>
</div>
<div class="testimonials-grid">
<div class="testimonial-card">
<div class="stars">★★★★★</div>
<p class="quote">"The landscaping guides completely changed how I approached our backyard renovation. I went from overwhelmed to confident in a weekend. Our native perennial garden is now the envy of the neighborhood, and it requires almost no supplemental watering once established."</p>
<div class="author">
<img src="https://i.pravatar.cc/44?u=martha" alt="Martha R.">
<div class="author-info">
<strong>Martha R.</strong>
<span>Homeowner, Portland OR</span>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="stars">★★★★★</div>
<p class="quote">"As a first-time homeowner, the DIY guides were invaluable. The step-by-step paver patio tutorial saved me thousands compared to hiring a contractor. The material calculator was spot-on — I had less than 5% waste on my project."</p>
<div class="author">
<img src="https://i.pravatar.cc/44?u=james" alt="James K.">
<div class="author-info">
<strong>James K.</strong>
<span>DIY Enthusiast, Austin TX</span>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="stars">★★★★★</div>
<p class="quote">"The expert consultation service connected me with a landscape architect who understood my vision for a drought-tolerant front yard. The final design reduced our water usage by 60% while dramatically improving curb appeal."</p>
<div class="author">
<img src="https://i.pravatar.cc/44?u=priya" alt="Priya S.">
<div class="author-info">
<strong>Priya S.</strong>
<span>Homeowner, San Diego CA</span>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="stars">★★★★★</div>
<p class="quote">"I've been using Verdant Haven for three growing seasons now. The seasonal planting calendars and companion planting guides have turned my small urban lot into a productive food garden. My family eats fresh from the yard from April through November."</p>
<div class="author">
<img src="https://i.pravatar.cc/44?u=david" alt="David L.">
<div class="author-info">
<strong>David L.</strong>
<span>Urban Gardener, Chicago IL</span>
</div>
</div>
</div>
</div>
</section>
<!-- SECTION 5: FAQ -->
<section class="section">
<div class="section-header">
<span class="section-label">Common Questions</span>
<h2>Frequently Asked Questions</h2>
<p>Get quick answers to the questions we hear most from homeowners starting their garden and landscape projects.</p>
</div>
<div class="faq-list">
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
When is the best time to start a landscaping renovation?
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>The ideal time depends on your climate zone and project scope. For most temperate regions, early fall (September–October) is optimal for planting trees and shrubs, as cooler temperatures and increased rainfall reduce transplant shock. Spring planting works well for perennials and annuals. Hardscape projects like patios and retaining walls can be built year-round in mild climates, but avoid frost-prone periods for concrete work. Planning should begin 2–3 months before your target installation date to allow for design refinement and material sourcing.</p>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
How do I choose the right plants for my soil type?
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>Start with a soil test — most university extension offices offer affordable testing kits that reveal pH, organic matter content, and nutrient levels. Once you understand your soil profile, select plants adapted to those conditions rather than fighting to amend your soil extensively. Sandy soils suit lavender, rosemary, and sedum. Clay soils work beautifully with bee balm, aster, and switchgrass. Loamy soils offer the widest selection. Native plants are almost always a strong choice because they've evolved to thrive in your region's specific soil chemistry.</p>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
What's the difference between a landscape designer and a landscape architect?
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>Landscape architects hold professional degrees and state licensure, qualifying them to design complex grading plans, structural elements like retaining walls over 4 feet, drainage systems, and public spaces. They're essential for projects involving significant earthwork, load-bearing structures, or regulatory approvals. Landscape designers focus on planting plans, aesthetic composition, and garden layouts — ideal for residential projects where no engineering stamps are required. Both can create beautiful outdoor spaces; the distinction matters primarily for structural complexity and permitting requirements.</p>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
How can I make my garden more drought-resistant?
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>Xeriscaping principles can reduce outdoor water use by 50–75%. Key strategies include: grouping plants with similar water needs (hydrozoning), installing drip irrigation instead of sprinklers, applying 3–4 inches of organic mulch to reduce evaporation, improving soil with compost to increase water retention, and selecting deep-rooted native perennials that access moisture from lower soil layers. Replacing thirsty turf grass with ground covers like creeping thyme or ornamental grasses dramatically cuts maintenance and water bills while creating visual interest.</p>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
Do I need a permit for my patio or deck project?
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>Permit requirements vary significantly by municipality. Generally, structures attached to your home (decks, covered patios) almost always require permits, especially if they involve footings below frost line or affect load-bearing walls. Freestanding paver patios at grade level often don't require permits in many jurisdictions, but some cities require them for any impervious surface increase due to stormwater management regulations. Always check with your local building department before beginning construction — unpermitted work can cause issues during future home sales.</p>
</div>
</div>
</div>
</section>
</main>
<!-- SIDEBAR -->
<aside class="sidebar">
<div class="sidebar-widget">
<h4>Featured Projects</h4>
<div class="featured-project">
<img src="https://picsum.photos/140/140?random=10" alt="Project thumbnail">
<div class="featured-project-info">
<h5>Cottage Garden Transformation</h5>
<p>A 1,200 sq ft backyard converted from lawn to a layered cottage garden with 40+ perennial species.</p>
</div>
</div>
<div class="featured-project">
<img src="https://picsum.photos/140/140?random=11" alt="Project thumbnail">
<div class="featured-project-info">
<h5>Flagstone Walkway & Entry</h5>
<p>Natural flagstone path with Pennsylvania blue stone, connecting driveway to front entry through a shade garden.</p>
</div>
</div>
<div class="featured-project">
<img src="https://picsum.photos/140/140?random=12" alt="Project thumbnail">
<div class="featured-project-info">
<h5>Rooftop Urban Oasis</h5>
<p>Container-based garden on a 400 sq ft rooftop featuring dwarf fruit trees, herbs, and a compact dining area.</p>
</div>
</div>
</div>
<div class="sidebar-widget">
<h4>Meet Our Expert</h4>
<div class="expert-card">
<img src="https://i.pravatar.cc/80?u=expert1" alt="Elena Vasquez">
<h5>Elena Vasquez</h5>
<p class="specialty">Landscape Architect, ASLA</p>
<p>15 years designing residential landscapes across the Southwest. Specializes in drought-tolerant designs and native plant communities. Available for consultations through our Expert Network.</p>
</div>
</div>
<div class="sidebar-widget">
<h4>This Season's Tips</h4>
<ul class="seasonal-tips">
<li>
<span class="tip-icon">🌱</span>
<span>Begin hardening off seedlings 2 weeks before last frost date for your zone.</span>
</li>
<li>
<span class="tip-icon">✂️</span>
<span>Prune dormant deciduous shrubs before new growth emerges in early spring.</span>
</li>
<li>
<span class="tip-icon">🧪</span>
<span>Order soil tests now — results take 2 weeks and guide your amendment strategy.</span>
</li>
<li>
<span class="tip-icon">💧</span>
<span>Inspect irrigation systems for winter damage before spring startup.</span>
</li>
<li>
<span class="tip-icon">🐝</span>
<span>Leave some garden debris for early-season pollinator habitat until temps consistently reach 50°F.</span>
</li>
</ul>
</div>
<div class="sidebar-widget" style="background: linear-gradient(135deg, var(--forest), var(--sage)); color: white; text-align: center;">
<h4 style="color: white; border-bottom-color: rgba(255,255,255,0.2);">Join Our Newsletter</h4>
<p style="font-size: 0.9rem; margin-bottom: 16px; opacity: 0.9;">Get weekly design inspiration, seasonal guides, and exclusive member discounts delivered to your inbox.</p>
<input type="email" placeholder="Your email address" style="width: 100%; padding: 12px 16px; border: none; border-radius: 8px; margin-bottom: 12px; font-size: 0.9rem; font-family: inherit;">
<button class="btn-primary" style="width: 100%; justify-content: center; background: var(--gold); color: var(--bark);">Subscribe Free</button>
</div>
</aside>
</div>
<!-- CTA BANNER -->
<div style="max-width: 1400px; margin: 0 auto; padding: 0 48px;">
<div class="cta-banner">
<h2>Ready to Start Your Dream Project?</h2>
<p>Connect with our network of vetted landscape professionals or dive into our step-by-step DIY guides. Your perfect outdoor space is closer than you think.</p>
<a href="#" class="btn-primary">Find an Expert Near You →</a>
</div>
</div>
<!-- FOOTER -->
<footer class="footer">
<div class="footer-grid">
<div class="footer-about">
<h4>Verdant Haven</h4>
<p>Verdant Haven is the premier digital resource for homeowners passionate about creating beautiful, functional outdoor spaces. From initial inspiration through project completion, we provide the expert guidance, tools, and community support you need to transform your property into a personal paradise.</p>
<div class="footer-social">
<a href="#" aria-label="Facebook">f</a>
<a href="#" aria-label="Instagram">ig</a>
<a href="#" aria-label="Pinterest">P</a>
<a href="#" aria-label="YouTube">▶</a>
<a href="#" aria-label="Twitter">X</a>
</div>
</div>
<div>
<h4>Explore</h4>
<ul class="footer-links">
<li><a href="#">Design Ideas</a></li>
<li><a href="#">DIY Guides</a></li>
<li><a href="#">Plant Database</a></li>
<li><a href="#">Seasonal Calendar</a></li>
<li><a href="#">Material Calculator</a></li>
<li><a href="#">Project Gallery</a></li>
</ul>
</div>
<div>
<h4>Services</h4>
<ul class="footer-links">
<li><a href="#">Find an Expert</a></li>
<li><a href="#">Design Consultation</a></li>
<li><a href="#">Shop Materials</a></li>
<li><a href="#">Pro Membership</a></li>
<li><a href="#">Workshops</a></li>
<li><a href="#">Gift Cards</a></li>
</ul>
</div>
<div>
<h4>Contact</h4>
<ul class="footer-links">
<li><a href="#">hello@verdanthaven.com</a></li>
<li><a href="#">1-800-VERDANT</a></li>
<li><a href="#">245 Garden Way, Suite 300</a></li>
<li><a href="#">Portland, OR 97201</a></li>
<li><a href="#">Mon–Fri: 8am–6pm PT</a></li>
<li><a href="#">Sat: 9am–3pm PT</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>© 2025 Verdant Haven. All rights reserved.</p>
<div>
<a href="#">Privacy Policy</a>
<a href="#">Terms of Service</a>
<a href="#">Cookie Settings</a>
<a href="#">Accessibility</a>
</div>
</div>
</footer>
<script>
// Material Calculator
function calculateMaterials() {
const projectType = document.getElementById('project-type').value;
const length = parseFloat(document.getElementById('length').value);
const width = parseFloat(document.getElementById('width').value);
const depth = parseFloat(document.getElementById('depth').value);
if (!length || !width || !depth) {
alert('Please fill in all dimensions.');
return;
}
const area = length * width;
const volumeCubicFeet = area * (depth / 12);
let resultText = '';
let resultLabel = '';
switch(projectType) {
case 'mulch':
const cubicYards = Math.ceil(volumeCubicFeet / 27);
const bags = Math.ceil(volumeCubicFeet / 2);
resultText = `${cubicYards} cu yds (${bags} bags)`;
resultLabel = 'of mulch/soil amendment needed';
break;
case 'paver':
const sqft = Math.ceil(area * 1.1);
const baseTons = Math.ceil((area * 0.25 * 100) / 2000);
resultText = `${sqft} sq ft pavers + ${baseTons} tons base`;
resultLabel = 'including 10% overage for cuts and waste';
break;
case 'raised-bed':
const bedCubicFeet = Math.ceil(volumeCubicFeet);
const soilBags = Math.ceil(volumeCubicFeet / 1.5);
resultText = `${bedCubicFeet} cu ft (${soilBags} bags)`;
resultLabel = 'of raised bed soil mix needed';
break;
case 'gravel':
const gravelTons = Math.ceil((volumeCubicFeet * 100) / 2000 * 1.1);
resultText = `${gravelTons} tons`;
resultLabel = 'of gravel (includes 10% compaction factor)';
break;
case 'sod':
const sodSqft = Math.ceil(area * 1.05);
const rolls = Math.ceil(sodSqft / 9);
resultText = `${sodSqft} sq ft (${rolls} rolls)`;
resultLabel = 'of sod needed (includes 5% overage)';
break;
}
document.getElementById('result-number').textContent = resultText;
document.getElementById('result-label').textContent = resultLabel;
document.getElementById('calc-result').classList.add('visible');
}
// FAQ Accordion
function toggleFaq(button) {
const item = button.parentElement;
const isActive = item.classList.contains('active');
// Close all
document.querySelectorAll('.faq-item').forEach(el => {
el.classList.remove('active');
});
// Open clicked if it wasn't active
if (!isActive) {
item.classList.add('active');
}
}
</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:43:06.465Z",
"url": "https://benchmark.aimac.invalid/c628bf2f8e8174e42d35722dcb51973ba952015e50286d31f062d84fdd29ad5c.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=\"search-btn\" aria-label=\"Search\">\ud83d\udd0d</button>",
"target": [
".search-btn"
]
}
]
},
{
"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=\"search-btn\" aria-label=\"Search\">\ud83d\udd0d</button>",
"target": [
".search-btn"
]
}
]
},
{
"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=\"search-btn\" aria-label=\"Search\">\ud83d\udd0d</button>",
"target": [
".search-btn"
]
}
]
},
{
"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=\"search-btn\" aria-label=\"Search\">\ud83d\udd0d</button>",
"target": [
".search-btn"
]
}
]
},
{
"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=\"search-btn\" aria-label=\"Search\">\ud83d\udd0d</button>",
"target": [
".search-btn"
]
}
]
},
{
"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 style=\"text-align: center; margin-top: 32px;\">\n <a href=\"#\" class=\"btn-primary\">Get Design Ideas \u2192</a>\n </div>",
"target": [
".section:nth-child(1) > div:nth-child(3)"
]
}
]
},
{
"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"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute exists and is not empty"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"search-btn\" aria-label=\"Search\">\ud83d\udd0d</button>",
"target": [
".search-btn"
]
}
]
},
{
"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": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1>Verdant Haven</h1>",
"target": [
"h1"
]
},
{
"html": "<h2>Transform Your Outdoor Space Into a Living Masterpiece</h2>",
"target": [
".hero-content > h2"
]
},
{
"html": "<h2>Design Ideas for Every Space</h2>",
"target": [
".section:nth-child(1) > .section-header > h2"
]
},
{
"html": "<h3>Modern Patio Retreats</h3>",
"target": [
".feature-card:nth-child(1) > .feature-card-body > h3"
]
},
{
"html": "<h3>Kitchen Garden Layouts</h3>",
"target": [
".feature-card:nth-child(2) > .feature-card-body > h3"
]
},
{
"html": "<h3>Water Features & Fountains</h3>",
"target": [
".feature-card:nth-child(3) > .feature-card-body > h3"
]
},
{
"html": "<h3>Landscape Lighting Plans</h3>",
"target": [
".feature-card:nth-child(4) > .feature-card-body > h3"
]
},
{
"html": "<h2>Landscaping Tips That Last</h2>",
"target": [
".section:nth-child(2) > .section-header > h2"
]
},
{
"html": "<h3>Building a Foundation for Long-Term Success</h3>",
"target": [
".landscaping-text > h3"
]
},
{
"html": "<h3>Garden Material Calculator</h3>",
"target": [
".calculator-section > h3"
]
},
{
"html": "<h2>What Our Members Are Saying</h2>",
"target": [
".section:nth-child(4) > .section-header > h2"
]
},
{
"html": "<h2>Frequently Asked Questions</h2>",
"target": [
".section:nth-child(5) > .section-header > h2"
]
},
{
"html": "<h4>Featured Projects</h4>",
"target": [
".sidebar-widget:nth-child(1) > h4"
]
},
{
"html": "<h5>Cottage Garden Transformation</h5>",
"target": [
".featured-project:nth-child(2) > .featured-project-info > h5"
]
},
{
"html": "<h5>Flagstone Walkway & Entry</h5>",
"target": [
".featured-project:nth-child(3) > .featured-project-info > h5"
]
},
{
"html": "<h5>Rooftop Urban Oasis</h5>",
"target": [
".featured-project:nth-child(4) > .featured-project-info > h5"
]
},
{
"html": "<h4>Meet Our Expert</h4>",
"target": [
".sidebar-widget:nth-child(2) > h4"
]
},
{
"html": "<h5>Elena Vasquez</h5>",
"target": [
".expert-card > h5"
]
},
{
"html": "<h4>This Season's Tips</h4>",
"target": [
".sidebar-widget:nth-child(3) > h4"
]
},
{
"html": "<h4 style=\"color: white; border-bottom-color: rgba(255,255,255,0.2);\">Join Our Newsletter</h4>",
"target": [
".sidebar-widget:nth-child(4) > h4"
]
},
{
"html": "<h2>Ready to Start Your Dream Project?</h2>",
"target": [
".cta-banner > h2"
]
},
{
"html": "<h4>Verdant Haven</h4>",
"target": [
".footer-about > h4"
]
},
{
"html": "<h4>Explore</h4>",
"target": [
".footer-grid > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Services</h4>",
"target": [
".footer-grid > div:nth-child(3) > h4"
]
},
{
"html": "<h4>Contact</h4>",
"target": [
".footer-grid > div:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main class=\"main-content\">",
"target": [
"main"
]
}
],
"impact": "serious",
"message": "Page has a landmark region"
}
],
"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": "#2d5016",
"bgColor": "#ffffff",
"contrastRatio": 9.24,
"fontSize": "19.2pt (25.6px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 9.24"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<h1>Verdant Haven</h1>",
"target": [
"h1"
]
}
]
},
{
"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": "project-type",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<select id=\"project-type\">",
"target": [
"#project-type"
]
}
]
},
{
"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": [
{
"html": "<label for=\"project-type\">Project Type</label>",
"target": [
"label[for=\"project-type\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<select id=\"project-type\">",
"target": [
"#project-type"
]
}
]
},
{
"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/52x52/2D5016/A8C686?text=VH&font=playfair+display\" alt=\"Verdant Haven Logo\">",
"target": [
"img[alt=\"Verdant Haven 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": "Length (feet)"
},
"relatedNodes": [
{
"html": "<label for=\"length\">Length (feet)</label>",
"target": [
"label[for=\"length\"]"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
},
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"number\" id=\"length\" placeholder=\"e.g., 20\" min=\"1\">",
"target": [
"#length"
]
}
]
},
{
"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 class=\"landscaping-text\">",
"target": [
".landscaping-text"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"btn-primary\">Explore Landscaping Guides \u2192</a>",
"target": [
".landscaping-text > .btn-primary"
]
}
]
},
{
"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=\"active\">Home</a>",
"target": [
".active"
]
}
]
},
{
"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>",
"target": [
"nav > ul"
]
}
]
},
{
"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><a href=\"#\" class=\"active\">Home</a></li>",
"target": [
"nav > ul > 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/52x52/2D5016/A8C686?text=VH&font=playfair+display\" alt=\"Verdant Haven Logo\">",
"target": [
"img[alt=\"Verdant Haven Logo\"]"
]
}
]
},
{
"id": "select-name",
"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 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": "explicit-label",
"data": {
"explicitLabel": "Project Type"
},
"relatedNodes": [
{
"html": "<label for=\"project-type\">Project Type</label>",
"target": [
"label[for=\"project-type\"]"
]
}
],
"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": "<select id=\"project-type\">",
"target": [
"#project-type"
]
}
]
},
{
"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": 38,
"height": 45
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (38px by 45px, 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": "<button class=\"search-btn\" aria-label=\"Search\">\ud83d\udd0d</button>",
"target": [
".search-btn"
]
}
]
}
],
"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": "42.0pt (56px)",
"fontWeight": "bold",
"messageKey": "bgGradient",
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"hero-overlay\"></div>",
"target": [
".hero-overlay"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h2>Transform Your Outdoor Space Into a Living Masterpiece</h2>",
"target": [
".hero-content > h2"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a background gradient"
}
]
}
],
"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": "#6b8f3c",
"bgColor": "#ffffff",
"contrastRatio": 3.73,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"header\">",
"target": [
"header"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.73 (foreground color: #6b8f3c, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Where Your Home Meets Nature</p>",
"target": [
".logo-text > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.73 (foreground color: #6b8f3c, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#6b8f3c",
"contrastRatio": 3.73,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"btn-primary\">Browse Ideas \u2192</a>",
"target": [
".hero-buttons > .btn-primary"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.73 (foreground color: #ffffff, background color: #6b8f3c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"btn-primary\">Browse Ideas \u2192</a>",
"target": [
".hero-buttons > .btn-primary"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.73 (foreground color: #ffffff, background color: #6b8f3c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b8f3c",
"bgColor": "#fdf8f0",
"contrastRatio": 3.53,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.53 (foreground color: #6b8f3c, background color: #fdf8f0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"section-label\">Inspiration Gallery</span>",
"target": [
".section:nth-child(1) > .section-header > .section-label"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.53 (foreground color: #6b8f3c, background color: #fdf8f0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b8f3c",
"bgColor": "#f0f4ec",
"contrastRatio": 3.35,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"tag\">Outdoor Living</span>",
"target": [
".feature-card:nth-child(1) > .feature-card-body > .tag"
]
},
{
"html": "<div class=\"feature-card\">",
"target": [
".feature-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.35 (foreground color: #6b8f3c, background color: #f0f4ec, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Outdoor Living</span>",
"target": [
".feature-card:nth-child(1) > .feature-card-body > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.35 (foreground color: #6b8f3c, background color: #f0f4ec, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b8f3c",
"bgColor": "#f0f4ec",
"contrastRatio": 3.35,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"tag\">Edible Gardens</span>",
"target": [
".feature-card:nth-child(2) > .feature-card-body > .tag"
]
},
{
"html": "<div class=\"feature-card\">",
"target": [
".feature-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.35 (foreground color: #6b8f3c, background color: #f0f4ec, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Edible Gardens</span>",
"target": [
".feature-card:nth-child(2) > .feature-card-body > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.35 (foreground color: #6b8f3c, background color: #f0f4ec, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b8f3c",
"bgColor": "#f0f4ec",
"contrastRatio": 3.35,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"tag\">Water Design</span>",
"target": [
".feature-card:nth-child(3) > .feature-card-body > .tag"
]
},
{
"html": "<div class=\"feature-card\">",
"target": [
".feature-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.35 (foreground color: #6b8f3c, background color: #f0f4ec, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Water Design</span>",
"target": [
".feature-card:nth-child(3) > .feature-card-body > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.35 (foreground color: #6b8f3c, background color: #f0f4ec, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b8f3c",
"bgColor": "#f0f4ec",
"contrastRatio": 3.35,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"tag\">Lighting</span>",
"target": [
".feature-card:nth-child(4) > .feature-card-body > .tag"
]
},
{
"html": "<div class=\"feature-card\">",
"target": [
".feature-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.35 (foreground color: #6b8f3c, background color: #f0f4ec, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Lighting</span>",
"target": [
".feature-card:nth-child(4) > .feature-card-body > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.35 (foreground color: #6b8f3c, background color: #f0f4ec, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#6b8f3c",
"contrastRatio": 3.73,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"btn-primary\">Get Design Ideas \u2192</a>",
"target": [
".section:nth-child(1) > div:nth-child(3) > .btn-primary"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.73 (foreground color: #ffffff, background color: #6b8f3c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"btn-primary\">Get Design Ideas \u2192</a>",
"target": [
".section:nth-child(1) > div:nth-child(3) > .btn-primary"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.73 (foreground color: #ffffff, background color: #6b8f3c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b8f3c",
"bgColor": "#fdf8f0",
"contrastRatio": 3.53,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.53 (foreground color: #6b8f3c, background color: #fdf8f0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"section-label\">Expert Guidance</span>",
"target": [
".section:nth-child(2) > .section-header > .section-label"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.53 (foreground color: #6b8f3c, background color: #fdf8f0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#6b8f3c",
"contrastRatio": 3.73,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"btn-primary\">Explore Landscaping Guides \u2192</a>",
"target": [
".landscaping-text > .btn-primary"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.73 (foreground color: #ffffff, background color: #6b8f3c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"btn-primary\">Explore Landscaping Guides \u2192</a>",
"target": [
".landscaping-text > .btn-primary"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.73 (foreground color: #ffffff, background color: #6b8f3c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b8f3c",
"bgColor": "#ffffff",
"contrastRatio": 3.73,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"calculator-section\">",
"target": [
".calculator-section"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.73 (foreground color: #6b8f3c, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"section-label\">Interactive Tool</span>",
"target": [
".calculator-section > .section-label"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.73 (foreground color: #6b8f3c, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#6b8f3c",
"contrastRatio": 3.73,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn-primary\" onclick=\"calculateMaterials()\" style=\"width: 100%; justify-content: center;\">Calculate Materials</button>",
"target": [
"button[onclick=\"calculateMaterials()\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.73 (foreground color: #ffffff, background color: #6b8f3c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn-primary\" onclick=\"calculateMaterials()\" style=\"width: 100%; justify-content: center;\">Calculate Materials</button>",
"target": [
"button[onclick=\"calculateMaterials()\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.73 (foreground color: #ffffff, background color: #6b8f3c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b8f3c",
"bgColor": "#fdf8f0",
"contrastRatio": 3.53,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.53 (foreground color: #6b8f3c, background color: #fdf8f0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"section-label\">Community Voices</span>",
"target": [
".section:nth-child(4) > .section-header > .section-label"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.53 (foreground color: #6b8f3c, background color: #fdf8f0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b8f3c",
"bgColor": "#fdf8f0",
"contrastRatio": 3.53,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.53 (foreground color: #6b8f3c, background color: #fdf8f0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"section-label\">Common Questions</span>",
"target": [
".section:nth-child(5) > .section-header > .section-label"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.53 (foreground color: #6b8f3c, background color: #fdf8f0, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b8f3c",
"bgColor": "#ffffff",
"contrastRatio": 3.73,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget\">",
"target": [
".sidebar-widget:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.73 (foreground color: #6b8f3c, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"specialty\">Landscape Architect, ASLA</p>",
"target": [
".specialty"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.73 (foreground color: #6b8f3c, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#fffefe",
"bgColor": "#fdf8f0",
"contrastRatio": 1.05,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.05 (foreground color: #fffefe, background color: #fdf8f0, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p style=\"font-size: 0.9rem; margin-bottom: 16px; opacity: 0.9;\">Get weekly design inspiration, seasonal guides, and exclusive member discounts delivered to your inbox.</p>",
"target": [
".sidebar-widget:nth-child(4) > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.05 (foreground color: #fffefe, background color: #fdf8f0, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
},
{
"id": "target-size",
"impact": "serious",
"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": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 348,
"height": 7.4
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"active\">Home</a>",
"target": [
".active"
]
},
{
"html": "<a href=\"#\">Ideas</a>",
"target": [
"nav > ul > li:nth-child(2) > a"
]
},
{
"html": "<a href=\"#\">Shop</a>",
"target": [
"nav > ul > li:nth-child(3) > a"
]
},
{
"html": "<a href=\"#\">DIY Guides</a>",
"target": [
"nav > ul > li:nth-child(4) > a"
]
},
{
"html": "<a href=\"#\">Experts</a>",
"target": [
"nav > ul > li:nth-child(5) > a"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 348px by 7.4px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 8.4,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#\">Shop</a>",
"target": [
"nav > ul > li:nth-child(3) > a"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 8.4px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<select id=\"project-type\">",
"target": [
"#project-type"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 348px by 7.4px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 8.4px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 348,
"height": 5.4
},
"relatedNodes": [
{
"html": "<a href=\"#\">Experts</a>",
"target": [
"nav > ul > li:nth-child(5) > a"
]
},
{
"html": "<a href=\"#\">Landscaping</a>",
"target": [
"nav > ul > li:nth-child(6) > a"
]
},
{
"html": "<a href=\"#\">Community</a>",
"target": [
"li:nth-child(7) > a"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 348px by 5.4px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 6.4,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#\">Landscaping</a>",
"target": [
"nav > ul > li:nth-child(6) > a"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 6.4px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<input type=\"number\" id=\"length\" placeholder=\"e.g., 20\" min=\"1\">",
"target": [
"#length"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 348px by 5.4px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 6.4px instead of at least 24px."
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 6462
},
{
"y": 576,
"height": 6462
},
{
"y": 1152,
"height": 6462
},
{
"y": 1728,
"height": 6462
},
{
"y": 2304,
"height": 6462
},
{
"y": 2880,
"height": 6462
},
{
"y": 3456,
"height": 6462
},
{
"y": 4032,
"height": 6462
},
{
"y": 4608,
"height": 6462
},
{
"y": 5184,
"height": 6462
},
{
"y": 5742,
"height": 6462
}
],
"scans": 12,
"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 "Home and Garden" 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: "Home and Garden"
- Description: Home improvement, gardening, DIY guides, landscaping, and decor resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Home and Garden" 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: "Ideas", "Shop", "Experts".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Home and Garden" category. Consider themes similar to: "Design Ideas", "Landscaping Tips", "Outdoor Living".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "perennial", "renovation", "load-bearing".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Browse Ideas", "Get Design Ideas", "Calculate Materials".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Home and Garden" sector. Ideas similar but not limited to: "garden layout planner".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "featured projects", "expert advice", "local resources".
- **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.