SpaceXAI Grok Build 0.1 – Pets
via xAI · Generated
- AIMAC Debt 7.05
- Cost $0.05
- Total Violations 7
- HTML Size 79 KB
- Em Dashes 3
Screenshot
View Live Page
Accessibility Issues Found
7 Serious
-
color-contrast serious 3 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<span class="uppercase tracking-[1.5px] text-xs font-bold text-emerald-600">Featured This Week</span> -
link-name serious 4 instances
Links must have discernible text
Example HTML
<a href="#" class="text-emerald-300 hover:text-white"><i class="fa-brands fa-instagram text-xl"></i></a>
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>PawVita • Lifelong Pet Wellness</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:wght@700&display=swap');
:root {
--primary: #166534;
}
.tail-container {
max-width: 1280px;
margin-left: auto;
margin-right: auto;
}
.section-header {
font-family: 'Playfair Display', Georgia, serif;
font-weight: 700;
line-height: 1.05;
}
.nav-link {
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.nav-link:hover {
color: #166534;
transform: translateY(-1px);
}
.pet-card {
transition: transform 0.3s cubic-bezier(0.4, 0.0, 0.2, 1),
box-shadow 0.3s cubic-bezier(0.4, 0.0, 0.2, 1);
}
.pet-card:hover {
transform: translateY(-8px);
box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
}
.resource-card {
transition: all 0.3s ease;
}
.resource-card:hover {
transform: translateY(-4px);
}
.hero-bg {
background-image: linear-gradient(rgba(0, 0, 0, 0.35), rgba(0, 0, 0, 0.25)), url('https://picsum.photos/id/1011/1920/1080');
background-size: cover;
background-position: center;
}
.modern-shadow {
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
}
.stat-number {
font-variant-numeric: tabular-nums;
}
.testimonial-card {
transition: all 0.3s ease;
}
.nav-active {
color: #166534;
font-weight: 600;
}
.paw-icon {
filter: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1));
}
.content-rich p {
line-height: 1.7;
}
.feature-grid {
background: linear-gradient(to bottom, #f8fafc, white);
}
.quiz-option {
transition: all 0.2s ease;
}
.quiz-option:hover {
background-color: #f8fafc;
}
.polished-btn {
transition: all 0.3s cubic-bezier(0.4, 0.0, 0.2, 1);
font-weight: 600;
letter-spacing: -.015em;
}
.polished-btn:hover {
transform: translateY(-2px);
box-shadow: 0 10px 15px -3px rgb(22 101 52 / 0.2), 0 4px 6px -4px rgb(22 101 52 / 0.2);
}
.section-divider {
height: 1px;
background: linear-gradient(to right, transparent, #e2e8f0, transparent);
}
</style>
</head>
<body class="bg-slate-50 font-sans antialiased text-slate-800">
<!-- HEADER -->
<header class="bg-white border-b border-slate-100 sticky top-0 z-50">
<div class="max-w-screen-2xl mx-auto">
<div class="px-8 py-5 flex items-center justify-between">
<!-- Logo -->
<div class="flex items-center gap-x-3">
<div class="flex items-center">
<img src="https://placehold.co/142x52/166534/ffffff?text=PawVita&font=playfair+display"
alt="PawVita Logo"
class="h-11 w-auto rounded-lg shadow-sm">
</div>
<div>
<span class="text-3xl font-bold tracking-tighter text-emerald-900">PawVita</span>
</div>
</div>
<!-- Desktop Navigation -->
<nav class="hidden md:flex items-center gap-x-8 text-sm">
<a href="#adopt" class="nav-link text-slate-600 hover:text-emerald-800 font-medium">Adopt</a>
<a href="#shop" class="nav-link text-slate-600 hover:text-emerald-800 font-medium">Shop</a>
<a href="#resources" class="nav-link text-slate-600 hover:text-emerald-800 font-medium">Resources</a>
<a href="#quiz" class="nav-link text-slate-600 hover:text-emerald-800 font-medium">Pet Match</a>
<a href="#help" class="nav-link text-slate-600 hover:text-emerald-800 font-medium">Find Help</a>
<a href="#contact" class="nav-link text-slate-600 hover:text-emerald-800 font-medium">Contact</a>
</nav>
<!-- Header Actions -->
<div class="hidden md:flex items-center gap-x-3">
<a href="#quiz"
class="px-5 py-2.5 text-sm font-semibold text-emerald-700 hover:bg-emerald-50 rounded-2xl transition-colors flex items-center gap-x-2">
<i class="fa-solid fa-paw text-sm"></i>
<span>Take Quiz</span>
</a>
<a href="#adopt"
class="px-6 py-2.5 bg-emerald-800 hover:bg-emerald-900 transition-all text-white text-sm font-semibold rounded-3xl flex items-center shadow-sm">
<span>Adopt Now</span>
</a>
</div>
<!-- Mobile Menu -->
<div class="md:hidden flex items-center gap-x-2">
<button onclick="toggleMobileMenu()"
class="w-10 h-10 flex items-center justify-center text-slate-600 hover:text-emerald-800 hover:bg-slate-100 rounded-2xl">
<i class="fa-solid fa-bars text-xl"></i>
</button>
</div>
</div>
</div>
<!-- Mobile Menu -->
<div id="mobile-menu" class="hidden md:hidden bg-white border-t px-6 py-4">
<div class="flex flex-col gap-y-1 text-sm">
<a href="#adopt" class="py-3 px-4 hover:bg-slate-50 rounded-2xl text-slate-700">Adopt</a>
<a href="#shop" class="py-3 px-4 hover:bg-slate-50 rounded-2xl text-slate-700">Shop</a>
<a href="#resources" class="py-3 px-4 hover:bg-slate-50 rounded-2xl text-slate-700">Resources</a>
<a href="#quiz" class="py-3 px-4 hover:bg-slate-50 rounded-2xl text-slate-700">Pet Match Quiz</a>
<a href="#help" class="py-3 px-4 hover:bg-slate-50 rounded-2xl text-slate-700">Find Help</a>
<a href="#contact" class="py-3 px-4 hover:bg-slate-50 rounded-2xl text-slate-700">Contact</a>
<div class="pt-3 border-t mt-2 flex flex-col gap-2">
<a href="#quiz" class="px-5 py-3 text-center text-sm font-semibold text-emerald-700 bg-emerald-50 hover:bg-emerald-100 rounded-3xl">Take Pet Match Quiz</a>
<a href="#adopt" class="px-5 py-3 text-center bg-emerald-800 text-white text-sm font-semibold rounded-3xl">Browse Adoptable Pets</a>
</div>
</div>
</div>
</header>
<!-- HERO SECTION -->
<section class="hero-bg h-[620px] flex items-center relative">
<div class="max-w-screen-2xl mx-auto px-8 w-full">
<div class="max-w-xl">
<div class="inline-flex items-center gap-x-2 bg-white/90 backdrop-blur-md px-4 py-1.5 rounded-3xl mb-6 shadow-inner">
<div class="flex items-center">
<div class="w-2 h-2 bg-emerald-500 rounded-full animate-pulse"></div>
<span class="ml-2 text-xs font-semibold tracking-[0.5px] text-emerald-800">2024 NATIONAL RESCUE AWARD WINNER</span>
</div>
</div>
<h1 class="text-6xl md:text-7xl leading-[1.05] tracking-tighter font-bold text-white mb-4">
Every pet<br>deserves a<br><span class="text-emerald-200">lifetime of care.</span>
</h1>
<p class="max-w-md text-lg text-white/90 mb-8">
Professional pet care, adoption matching, veterinary resources, and expert training —
all in one trusted community.
</p>
<div class="flex flex-wrap items-center gap-3">
<a href="#adopt"
class="polished-btn px-8 py-4 bg-white text-emerald-900 font-semibold rounded-3xl flex items-center gap-x-3 hover:bg-emerald-50 shadow-lg">
<span>Browse Adoptable Pets</span>
</a>
<a href="#quiz"
class="polished-btn px-8 py-4 bg-emerald-800/90 hover:bg-emerald-900 text-white font-semibold rounded-3xl flex items-center gap-x-3 backdrop-blur-sm border border-white/20">
<i class="fa-solid fa-paw"></i>
<span>Find Your Match</span>
</a>
</div>
<div class="flex items-center gap-x-4 mt-8">
<div class="flex -space-x-2">
<img src="https://i.pravatar.cc/28?u=pet1" class="w-7 h-7 rounded-full border-2 border-white ring-1 ring-white/30" alt="">
<img src="https://i.pravatar.cc/28?u=pet2" class="w-7 h-7 rounded-full border-2 border-white ring-1 ring-white/30" alt="">
<img src="https://i.pravatar.cc/28?u=pet3" class="w-7 h-7 rounded-full border-2 border-white ring-1 ring-white/30" alt="">
</div>
<div>
<span class="text-sm text-white/90 font-medium">Join 48,920 happy pet families</span>
</div>
</div>
</div>
</div>
<!-- Hero trust bar -->
<div class="absolute bottom-0 left-0 right-0 hidden md:block">
<div class="max-w-screen-2xl mx-auto px-8 pb-6">
<div class="bg-white/90 backdrop-blur-md rounded-3xl px-6 py-3 flex items-center justify-between max-w-[460px] shadow-inner">
<div class="flex items-center gap-x-5 text-xs">
<div class="flex items-center gap-x-1.5">
<i class="fa-solid fa-check-circle text-emerald-600"></i>
<span class="font-medium text-emerald-900">4.98/5</span>
</div>
<div class="h-3 w-px bg-slate-200"></div>
<span class="text-emerald-800 text-xs font-medium">Featured in Forbes Pet Health 2024</span>
</div>
</div>
</div>
</div>
</section>
<!-- MISSION + STATS -->
<section class="max-w-screen-2xl mx-auto px-8 pt-14 pb-10">
<div class="grid grid-cols-1 lg:grid-cols-12 gap-8 items-center">
<!-- Mission Text -->
<div class="lg:col-span-7">
<div class="max-w-xl">
<span class="text-emerald-700 text-sm font-semibold tracking-[1px]">OUR MISSION SINCE 2015</span>
<h2 class="section-header text-5xl leading-none tracking-tighter mt-2 mb-5 text-emerald-950">We believe pets are family — and family deserves the best care.</h2>
<div class="content-rich text-[15.2px] text-slate-600">
<p class="mb-4">PawVita was founded to bridge the gap between pet rescue, veterinary expertise, and long-term wellness education. We operate with a deep commitment to evidence-based practices, from nutritional science to behavioral enrichment.</p>
<p>Our team of certified veterinary behaviorists, rescue coordinators, and animal nutritionists work together to ensure every animal in our care receives the highest standard of support — before, during, and after adoption.</p>
</div>
<div class="mt-6 flex items-center gap-x-3">
<button onclick="document.getElementById('help').scrollIntoView({ behavior: 'smooth' })"
class="px-5 py-2.5 text-sm font-semibold rounded-2xl border border-emerald-200 text-emerald-700 hover:bg-emerald-50 transition-colors flex items-center gap-x-2">
<span>Learn about our impact</span>
</button>
</div>
</div>
</div>
<!-- Stats -->
<div class="lg:col-span-5 bg-white border border-slate-100 rounded-3xl p-8 modern-shadow">
<div class="grid grid-cols-3 gap-5">
<div>
<div class="text-4xl font-bold text-emerald-900 stat-number">12,847</div>
<div class="text-xs font-medium text-emerald-700 tracking-wider mt-1">PETS ADOPTED</div>
<div class="text-[10px] text-slate-500 mt-1">Since 2015</div>
</div>
<div>
<div class="text-4xl font-bold text-emerald-900 stat-number">94%</div>
<div class="text-xs font-medium text-emerald-700 tracking-wider mt-1">ADOPTION RETENTION</div>
<div class="text-[10px] text-slate-500 mt-1">5-year rate</div>
</div>
<div>
<div class="text-4xl font-bold text-emerald-900 stat-number">278</div>
<div class="text-xs font-medium text-emerald-700 tracking-wider mt-1">VETS PARTNERED</div>
<div class="text-[10px] text-slate-500 mt-1">Nationwide</div>
</div>
</div>
<div class="mt-6 pt-6 border-t text-xs text-slate-500">
<div class="flex items-center gap-x-2">
<i class="fa-solid fa-globe text-emerald-600"></i>
<span>Operating in 19 states with 42 rescue partners</span>
</div>
</div>
</div>
</div>
</section>
<!-- ADOPT SECTION -->
<section id="adopt" class="max-w-screen-2xl mx-auto px-8 py-12 bg-white">
<div class="flex flex-col md:flex-row md:items-end justify-between mb-8">
<div>
<span class="uppercase tracking-[1.5px] text-xs font-bold text-emerald-600">Featured This Week</span>
<h2 class="section-header text-4xl tracking-tighter text-emerald-950">Meet our adoptable companions</h2>
</div>
<div class="mt-3 md:mt-0">
<a href="#" class="text-emerald-700 hover:text-emerald-800 text-sm font-semibold flex items-center gap-x-2 group">
View all adoptable pets
<i class="fa-solid fa-arrow-right group-hover:translate-x-1 transition"></i>
</a>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6">
<!-- Pet 1 -->
<div class="pet-card bg-white border border-slate-100 rounded-3xl overflow-hidden shadow-sm">
<div class="relative">
<img src="https://picsum.photos/id/1005/600/420" alt="Luna the Golden Retriever" class="w-full h-56 object-cover">
<div class="absolute top-4 right-4 bg-white/95 text-emerald-800 px-3 py-1 rounded-2xl text-xs font-bold shadow flex items-center">
<i class="fa-solid fa-heart text-red-500 mr-1.5"></i>
<span class="text-[10px]">12 applications</span>
</div>
</div>
<div class="p-6">
<div class="flex justify-between items-start">
<div>
<h3 class="font-semibold text-2xl tracking-tight">Luna</h3>
<p class="text-emerald-700 text-sm font-medium">Golden Retriever • 2 years</p>
</div>
<div class="px-3 py-1 bg-emerald-100 text-emerald-700 text-xs rounded-2xl flex items-center font-medium">Spayed</div>
</div>
<p class="text-sm text-slate-600 mt-4 line-clamp-3">Luna is a gentle, intelligent companion who thrives on positive reinforcement training. She is fully vaccinated, microchipped, and enjoys daily enrichment activities like puzzle toys and long walks. She would be an excellent addition to an active household.</p>
<div class="flex items-center justify-between mt-5">
<div>
<span class="text-xs text-slate-500">Energy level:</span>
<span class="font-semibold text-sm ml-1 text-emerald-800">High</span>
</div>
<button onclick="adoptPet('Luna')"
class="px-5 py-[9px] bg-emerald-800 hover:bg-emerald-900 transition-colors text-white text-xs font-semibold rounded-2xl flex items-center gap-x-2">
<span>Adopt Luna</span>
</button>
</div>
</div>
</div>
<!-- Pet 2 -->
<div class="pet-card bg-white border border-slate-100 rounded-3xl overflow-hidden shadow-sm">
<div class="relative">
<img src="https://picsum.photos/id/201/600/420" alt="Whiskers the Cat" class="w-full h-56 object-cover">
<div class="absolute top-4 right-4 bg-white/95 text-emerald-800 px-3 py-1 rounded-2xl text-xs font-bold shadow flex items-center">
<i class="fa-solid fa-heart text-red-500 mr-1.5"></i>
<span class="text-[10px]">7 applications</span>
</div>
</div>
<div class="p-6">
<div class="flex justify-between items-start">
<div>
<h3 class="font-semibold text-2xl tracking-tight">Whiskers</h3>
<p class="text-emerald-700 text-sm font-medium">Domestic Shorthair • 4 years</p>
</div>
<div class="px-3 py-1 bg-emerald-100 text-emerald-700 text-xs rounded-2xl flex items-center font-medium">Neutered</div>
</div>
<p class="text-sm text-slate-600 mt-4 line-clamp-3">Whiskers is a calm, affectionate cat who prefers quiet environments and gentle handling. He is litter trained, loves window perches, and benefits from regular play sessions with feather toys. Ideal for first-time cat owners or seniors.</p>
<div class="flex items-center justify-between mt-5">
<div>
<span class="text-xs text-slate-500">Energy level:</span>
<span class="font-semibold text-sm ml-1 text-emerald-800">Low</span>
</div>
<button onclick="adoptPet('Whiskers')"
class="px-5 py-[9px] bg-emerald-800 hover:bg-emerald-900 transition-colors text-white text-xs font-semibold rounded-2xl flex items-center gap-x-2">
<span>Adopt Whiskers</span>
</button>
</div>
</div>
</div>
<!-- Pet 3 -->
<div class="pet-card bg-white border border-slate-100 rounded-3xl overflow-hidden shadow-sm">
<div class="relative">
<img src="https://picsum.photos/id/160/600/420" alt="Max the Beagle" class="w-full h-56 object-cover">
<div class="absolute top-4 right-4 bg-white/95 text-emerald-800 px-3 py-1 rounded-2xl text-xs font-bold shadow flex items-center">
<i class="fa-solid fa-heart text-red-500 mr-1.5"></i>
<span class="text-[10px]">19 applications</span>
</div>
</div>
<div class="p-6">
<div class="flex justify-between items-start">
<div>
<h3 class="font-semibold text-2xl tracking-tight">Max</h3>
<p class="text-emerald-700 text-sm font-medium">Beagle • 3 years</p>
</div>
<div class="px-3 py-1 bg-emerald-100 text-emerald-700 text-xs rounded-2xl flex items-center font-medium">Neutered</div>
</div>
<p class="text-sm text-slate-600 mt-4 line-clamp-3">Max is a curious and friendly Beagle with a strong nose for adventure. He has completed our advanced training program focused on leash manners and basic commands. Max is microchipped, vaccinated, and loves being part of a family with children.</p>
<div class="flex items-center justify-between mt-5">
<div>
<span class="text-xs text-slate-500">Energy level:</span>
<span class="font-semibold text-sm ml-1 text-emerald-800">Medium</span>
</div>
<button onclick="adoptPet('Max')"
class="px-5 py-[9px] bg-emerald-800 hover:bg-emerald-900 transition-colors text-white text-xs font-semibold rounded-2xl flex items-center gap-x-2">
<span>Adopt Max</span>
</button>
</div>
</div>
</div>
<!-- Pet 4 -->
<div class="pet-card bg-white border border-slate-100 rounded-3xl overflow-hidden shadow-sm">
<div class="relative">
<img src="https://picsum.photos/id/251/600/420" alt="Bella the Labrador" class="w-full h-56 object-cover">
<div class="absolute top-4 right-4 bg-white/95 text-emerald-800 px-3 py-1 rounded-2xl text-xs font-bold shadow flex items-center">
<i class="fa-solid fa-heart text-red-500 mr-1.5"></i>
<span class="text-[10px]">8 applications</span>
</div>
</div>
<div class="p-6">
<div class="flex justify-between items-start">
<div>
<h3 class="font-semibold text-2xl tracking-tight">Bella</h3>
<p class="text-emerald-700 text-sm font-medium">Labrador Retriever • 6 years</p>
</div>
<div class="px-3 py-1 bg-emerald-100 text-emerald-700 text-xs rounded-2xl flex items-center font-medium">Spayed</div>
</div>
<p class="text-sm text-slate-600 mt-4 line-clamp-3">Bella is a sweet, gentle senior who excels in calm homes. She has been through our senior wellness program and is an excellent candidate for a home with experienced owners. Bella loves slow walks and has a gentle temperament with other pets.</p>
<div class="flex items-center justify-between mt-5">
<div>
<span class="text-xs text-slate-500">Energy level:</span>
<span class="font-semibold text-sm ml-1 text-emerald-800">Low</span>
</div>
<button onclick="adoptPet('Bella')"
class="px-5 py-[9px] bg-emerald-800 hover:bg-emerald-900 transition-colors text-white text-xs font-semibold rounded-2xl flex items-center gap-x-2">
<span>Adopt Bella</span>
</button>
</div>
</div>
</div>
</div>
</section>
<!-- SHOP SECTION -->
<section id="shop" class="max-w-screen-2xl mx-auto px-8 py-12">
<div class="flex items-end justify-between mb-8">
<div>
<span class="text-emerald-600 text-xs font-bold tracking-wider">CURATED FOR WELLNESS</span>
<h2 class="section-header text-4xl tracking-tighter">Shop premium essentials</h2>
</div>
<a href="#" class="hidden md:flex items-center text-sm font-semibold text-emerald-700 hover:text-emerald-900">Browse full catalog <i class="fa-solid fa-chevron-right ml-2 text-xs"></i></a>
</div>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
<!-- Product 1 -->
<div class="bg-white border border-slate-100 rounded-3xl p-1 shadow-sm">
<div class="relative">
<img src="https://picsum.photos/id/292/400/260" alt="Organic dog food" class="w-full h-48 object-cover rounded-[22px]">
<div class="absolute top-3 left-3 bg-white px-2.5 py-px rounded-xl text-xs font-bold shadow">Best Seller</div>
</div>
<div class="px-5 pt-4 pb-5">
<div class="flex justify-between">
<div>
<h4 class="font-semibold">NutriPaw Organic Kibble</h4>
<p class="text-xs text-slate-500">Grain-free • 20 lb bag</p>
</div>
<div class="text-right">
<span class="font-bold">$34.99</span>
</div>
</div>
<p class="text-[13px] mt-3 text-slate-600">Formulated with veterinary nutritionists to support joint health and digestion.</p>
<button onclick="addToCart('NutriPaw Organic Kibble')" class="mt-4 w-full py-[9px] bg-emerald-800 hover:bg-emerald-900 transition-colors text-white text-sm font-semibold rounded-2xl">
Add to Cart
</button>
</div>
</div>
<!-- Product 2 -->
<div class="bg-white border border-slate-100 rounded-3xl p-1 shadow-sm">
<div class="relative">
<img src="https://picsum.photos/id/312/400/260" alt="Interactive toy" class="w-full h-48 object-cover rounded-[22px]">
</div>
<div class="px-5 pt-4 pb-5">
<div class="flex justify-between">
<div>
<h4 class="font-semibold">EnrichPlay Puzzle Feeder</h4>
<p class="text-xs text-slate-500">Slow feeder • 3 levels</p>
</div>
<div class="text-right">
<span class="font-bold">$19.50</span>
</div>
</div>
<p class="text-[13px] mt-3 text-slate-600">Promotes mental stimulation and reduces anxiety through interactive enrichment.</p>
<button onclick="addToCart('EnrichPlay Puzzle Feeder')" class="mt-4 w-full py-[9px] bg-emerald-800 hover:bg-emerald-900 transition-colors text-white text-sm font-semibold rounded-2xl">
Add to Cart
</button>
</div>
</div>
<!-- Product 3 -->
<div class="bg-white border border-slate-100 rounded-3xl p-1 shadow-sm">
<div class="relative">
<img src="https://picsum.photos/id/180/400/260" alt="Grooming kit" class="w-full h-48 object-cover rounded-[22px]">
</div>
<div class="px-5 pt-4 pb-5">
<div class="flex justify-between">
<div>
<h4 class="font-semibold">PawVita Grooming Kit</h4>
<p class="text-xs text-slate-500">5-piece set</p>
</div>
<div class="text-right">
<span class="font-bold">$27.00</span>
</div>
</div>
<p class="text-[13px] mt-3 text-slate-600">Professional-grade brushes and clippers developed with groomers and vets.</p>
<button onclick="addToCart('PawVita Grooming Kit')" class="mt-4 w-full py-[9px] bg-emerald-800 hover:bg-emerald-900 transition-colors text-white text-sm font-semibold rounded-2xl">
Add to Cart
</button>
</div>
</div>
<div class="bg-white border border-slate-100 rounded-3xl p-1 shadow-sm">
<div class="relative">
<img src="https://picsum.photos/id/106/400/260" alt="Joint supplement" class="w-full h-48 object-cover rounded-[22px]">
</div>
<div class="px-5 pt-4 pb-5">
<div class="flex justify-between">
<div>
<h4 class="font-semibold">Mobility+ Joint Chews</h4>
<p class="text-xs text-slate-500">60 chews • Senior formula</p>
</div>
<div class="text-right">
<span class="font-bold">$22.99</span>
</div>
</div>
<p class="text-[13px] mt-3 text-slate-600">Vet-formulated with glucosamine and omega-3s to support senior joint health.</p>
<button onclick="addToCart('Mobility+ Joint Chews')" class="mt-4 w-full py-[9px] bg-emerald-800 hover:bg-emerald-900 transition-colors text-white text-sm font-semibold rounded-2xl">
Add to Cart
</button>
</div>
</div>
</div>
</section>
<!-- RESOURCES SECTION -->
<section id="resources" class="max-w-screen-2xl mx-auto px-8 py-12 bg-white">
<div class="mb-9">
<span class="text-emerald-700 text-sm font-semibold tracking-wider">EXPERT KNOWLEDGE</span>
<h2 class="section-header text-4xl tracking-tighter text-emerald-950">Resources for responsible pet parents</h2>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
<!-- Resource 1: Breed Guides -->
<div class="resource-card bg-slate-50 border border-slate-100 rounded-3xl p-6">
<div class="flex items-center gap-x-3 mb-4">
<div class="w-9 h-9 flex items-center justify-center bg-emerald-100 text-emerald-700 rounded-2xl">
<i class="fa-solid fa-book text-lg"></i>
</div>
<h4 class="font-semibold text-xl">Breed Guides</h4>
</div>
<p class="text-sm text-slate-600 mb-4">In-depth profiles covering nutrition requirements, temperament, exercise needs, and common health concerns for over 120 breeds.</p>
<ul class="text-xs space-y-1.5 mb-5 text-slate-600">
<li class="flex items-center"><i class="fa-solid fa-check mr-2 text-emerald-600 text-xs"></i> Golden Retriever nutrition</li>
<li class="flex items-center"><i class="fa-solid fa-check mr-2 text-emerald-600 text-xs"></i> French Bulldog breathing care</li>
<li class="flex items-center"><i class="fa-solid fa-check mr-2 text-emerald-600 text-xs"></i> Border Collie enrichment</li>
</ul>
<button onclick="showResourceModal('Breed Guides')" class="text-emerald-700 hover:text-emerald-900 text-sm font-semibold flex items-center gap-x-2">
Explore guides <i class="fa-solid fa-arrow-right text-xs"></i>
</button>
</div>
<!-- Resource 2: Training -->
<div class="resource-card bg-slate-50 border border-slate-100 rounded-3xl p-6">
<div class="flex items-center gap-x-3 mb-4">
<div class="w-9 h-9 flex items-center justify-center bg-emerald-100 text-emerald-700 rounded-2xl">
<i class="fa-solid fa-graduation-cap text-lg"></i>
</div>
<h4 class="font-semibold text-xl">Training Tips</h4>
</div>
<p class="text-sm text-slate-600 mb-4">Positive reinforcement methods for puppies, adult dogs, and cats. Our certified trainers provide step-by-step protocols.</p>
<div class="mb-5">
<div class="text-xs font-semibold mb-1.5 text-emerald-700">Featured topics:</div>
<div class="flex flex-wrap gap-1.5">
<span class="px-3 py-1 bg-white text-xs rounded-2xl border text-slate-600">Leash training</span>
<span class="px-3 py-1 bg-white text-xs rounded-2xl border text-slate-600">Crate training</span>
<span class="px-3 py-1 bg-white text-xs rounded-2xl border text-slate-600">Clicker methods</span>
</div>
</div>
<button onclick="showResourceModal('Training Tips')" class="text-emerald-700 hover:text-emerald-900 text-sm font-semibold flex items-center gap-x-2">
Start training <i class="fa-solid fa-arrow-right text-xs"></i>
</button>
</div>
<!-- Resource 3: Senior Care -->
<div class="resource-card bg-slate-50 border border-slate-100 rounded-3xl p-6">
<div class="flex items-center gap-x-3 mb-4">
<div class="w-9 h-9 flex items-center justify-center bg-emerald-100 text-emerald-700 rounded-2xl">
<i class="fa-solid fa-heart-pulse text-lg"></i>
</div>
<h4 class="font-semibold text-xl">Senior Pet Care</h4>
</div>
<p class="text-sm text-slate-600 mb-4">Comprehensive guidance on managing arthritis, cognitive decline, nutrition adjustments, and creating comfortable environments for aging pets.</p>
<div class="text-xs mb-5">
<div class="flex gap-2 items-center">
<div class="px-2.5 py-1 bg-emerald-700 text-white text-[10px] font-bold rounded-2xl px-3">New</div>
<span class="text-xs text-emerald-700">Arthritis management guide</span>
</div>
</div>
<button onclick="showResourceModal('Senior Pet Care')" class="text-emerald-700 hover:text-emerald-900 text-sm font-semibold flex items-center gap-x-2">
Read senior guide <i class="fa-solid fa-arrow-right text-xs"></i>
</button>
</div>
<!-- Resource 4: Rescue & Microchipping -->
<div class="resource-card bg-slate-50 border border-slate-100 rounded-3xl p-6">
<div class="flex items-center gap-x-3 mb-4">
<div class="w-9 h-9 flex items-center justify-center bg-emerald-100 text-emerald-700 rounded-2xl">
<i class="fa-solid fa-handshake text-lg"></i>
</div>
<h4 class="font-semibold text-xl">Rescue & Microchipping</h4>
</div>
<p class="text-sm text-slate-600 mb-4">Learn about the importance of microchipping, lost pet recovery protocols, and how to safely participate in community rescue efforts.</p>
<div class="text-xs space-y-2 mb-5">
<div class="flex items-center text-emerald-700">
<i class="fa-solid fa-map-marker-alt mr-2"></i>
<span class="text-xs">Microchipping clinics near you</span>
</div>
</div>
<button onclick="showResourceModal('Rescue & Microchipping')" class="text-emerald-700 hover:text-emerald-900 text-sm font-semibold flex items-center gap-x-2">
Access resources <i class="fa-solid fa-arrow-right text-xs"></i>
</button>
</div>
</div>
</section>
<!-- PET MATCH QUIZ - Interactive Element -->
<section id="quiz" class="max-w-screen-2xl mx-auto px-8 py-12">
<div class="bg-emerald-900 rounded-3xl p-1">
<div class="bg-white rounded-[22px] px-8 pt-8 pb-10">
<div class="max-w-2xl mx-auto">
<div class="text-center mb-7">
<div class="inline-flex items-center justify-center px-3 py-1 rounded-3xl bg-emerald-100 mb-4">
<span class="text-xs font-bold text-emerald-700 tracking-wider">INTERACTIVE TOOL</span>
</div>
<h2 class="section-header text-4xl tracking-tighter text-emerald-950">Find your perfect pet match</h2>
<p class="text-slate-600 mt-2 max-w-md mx-auto">Answer a few quick questions and we'll recommend the best type of companion for your lifestyle.</p>
</div>
<form id="quiz-form" class="space-y-7">
<!-- Question 1 -->
<div>
<label class="block font-semibold text-sm mb-3 text-emerald-900">1. What best describes your living situation?</label>
<div class="grid grid-cols-1 sm:grid-cols-3 gap-2">
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q1" value="small" class="mr-3 accent-emerald-800">
<span class="text-sm">Apartment / Small space</span>
</label>
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q1" value="medium" class="mr-3 accent-emerald-800">
<span class="text-sm">House with small yard</span>
</label>
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q1" value="large" class="mr-3 accent-emerald-800">
<span class="text-sm">Large home / Property</span>
</label>
</div>
</div>
<!-- Question 2 -->
<div>
<label class="block font-semibold text-sm mb-3 text-emerald-900">2. How much daily time can you dedicate to exercise and play?</label>
<div class="grid grid-cols-1 sm:grid-cols-3 gap-2">
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q2" value="low" class="mr-3 accent-emerald-800">
<span class="text-sm">Less than 30 minutes</span>
</label>
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q2" value="medium" class="mr-3 accent-emerald-800">
<span class="text-sm">30–90 minutes</span>
</label>
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q2" value="high" class="mr-3 accent-emerald-800">
<span class="text-sm">More than 90 minutes</span>
</label>
</div>
</div>
<!-- Question 3 -->
<div>
<label class="block font-semibold text-sm mb-3 text-emerald-900">3. Do you have children under 12 in the home?</label>
<div class="grid grid-cols-2 gap-2">
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q3" value="yes" class="mr-3 accent-emerald-800">
<span class="text-sm">Yes</span>
</label>
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q3" value="no" class="mr-3 accent-emerald-800">
<span class="text-sm">No</span>
</label>
</div>
</div>
<!-- Question 4 -->
<div>
<label class="block font-semibold text-sm mb-3 text-emerald-900">4. What is your current pet experience level?</label>
<div class="grid grid-cols-1 sm:grid-cols-3 gap-2">
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q4" value="beginner" class="mr-3 accent-emerald-800">
<span class="text-sm">First-time owner</span>
</label>
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q4" value="some" class="mr-3 accent-emerald-800">
<span class="text-sm">Some experience</span>
</label>
<label class="quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50">
<input type="radio" name="q4" value="expert" class="mr-3 accent-emerald-800">
<span class="text-sm">Very experienced</span>
</label>
</div>
</div>
<div class="pt-4 flex flex-col sm:flex-row gap-3">
<button type="submit"
class="flex-1 py-4 bg-emerald-800 hover:bg-emerald-900 transition-colors text-white font-semibold rounded-3xl flex items-center justify-center gap-x-2">
<span>Calculate My Match</span>
<i class="fa-solid fa-paw"></i>
</button>
<button type="button" onclick="resetQuiz()"
class="px-7 py-4 text-sm border border-slate-200 hover:bg-slate-50 font-medium rounded-3xl text-slate-600 transition-colors">
Reset
</button>
</div>
</form>
<!-- Result Container -->
<div id="quiz-result" class="hidden mt-8 border border-emerald-100 bg-emerald-50 rounded-3xl p-6">
<div class="flex justify-between items-start">
<div>
<div class="uppercase tracking-wider text-xs font-bold text-emerald-700">Recommended for you</div>
<h3 id="quiz-result-title" class="text-3xl font-bold text-emerald-900 mt-1"></h3>
</div>
<button onclick="resetQuiz()" class="text-xs px-3 py-1 text-emerald-700 hover:text-emerald-800">Try again</button>
</div>
<p id="quiz-result-description" class="mt-3 text-sm text-emerald-800"></p>
<div class="mt-5 pt-5 border-t border-emerald-200 flex items-center gap-x-3">
<button onclick="document.getElementById('adopt').scrollIntoView({ behavior: 'smooth' })"
class="text-sm px-5 py-2.5 bg-emerald-800 text-white font-semibold rounded-2xl text-xs">Browse similar pets</button>
<button onclick="showResourceModal('Training Tips')"
class="text-sm px-5 py-2.5 border border-emerald-300 text-emerald-700 font-semibold rounded-2xl text-xs">View training guide</button>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- TESTIMONIALS -->
<section class="max-w-screen-2xl mx-auto px-8 py-12 bg-white">
<div class="mb-8">
<span class="uppercase tracking-[1.5px] text-xs font-bold text-emerald-600">Real stories</span>
<h2 class="section-header text-4xl tracking-tighter">What our community says</h2>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<!-- Testimonial 1 -->
<div class="testimonial-card bg-white border border-slate-100 p-6 rounded-3xl">
<div class="flex items-center gap-x-1 mb-1">
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
</div>
<p class="text-sm text-slate-600">"PawVita's team matched us with our dog Max after we completed the compatibility quiz. The training resources they provided helped us integrate him seamlessly into our family. The vet support has been outstanding."</p>
<div class="flex items-center gap-x-3 mt-6">
<img src="https://i.pravatar.cc/36?u=jenna" alt="Jenna Torres" class="w-9 h-9 rounded-full ring-1 ring-slate-100">
<div>
<div class="font-semibold text-sm">Jenna Torres</div>
<div class="text-xs text-slate-500">Owner of Max • San Diego, CA</div>
</div>
</div>
</div>
<!-- Testimonial 2 -->
<div class="testimonial-card bg-white border border-slate-100 p-6 rounded-3xl">
<div class="flex items-center gap-x-1 mb-1">
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star-half-stroke text-amber-400"></i>
</div>
<p class="text-sm text-slate-600">"After losing our senior cat, we turned to PawVita for guidance on adopting a new companion. Their senior pet care resources and adoption matching process made everything feel thoughtful and low-pressure."</p>
<div class="flex items-center gap-x-3 mt-6">
<img src="https://i.pravatar.cc/36?u=mark" alt="Marcus Chen" class="w-9 h-9 rounded-full ring-1 ring-slate-100">
<div>
<div class="font-semibold text-sm">Marcus Chen</div>
<div class="text-xs text-slate-500">Owner of Luna • Portland, OR</div>
</div>
</div>
</div>
<!-- Testimonial 3 -->
<div class="testimonial-card bg-white border border-slate-100 p-6 rounded-3xl">
<div class="flex items-center gap-x-1 mb-1">
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
<i class="fa-solid fa-star text-amber-400"></i>
</div>
<p class="text-sm text-slate-600">"We adopted Bella through PawVita and have been incredibly impressed with their ongoing support. The microchipping clinic and nutrition advice have been invaluable for our senior rescue. Highly recommended."</p>
<div class="flex items-center gap-x-3 mt-6">
<img src="https://i.pravatar.cc/36?u=sarah" alt="Sarah Patel" class="w-9 h-9 rounded-full ring-1 ring-slate-100">
<div>
<div class="font-semibold text-sm">Sarah Patel & Family</div>
<div class="text-xs text-slate-500">Owners of Bella • Austin, TX</div>
</div>
</div>
</div>
</div>
</section>
<!-- FIND HELP SECTION -->
<section id="help" class="max-w-screen-2xl mx-auto px-8 py-12">
<div class="grid grid-cols-1 lg:grid-cols-12 gap-8">
<div class="lg:col-span-5">
<span class="text-emerald-700 font-semibold text-xs tracking-[1px]">24/7 SUPPORT</span>
<h2 class="section-header text-4xl tracking-tighter mt-1">Find help when it matters most</h2>
<p class="text-slate-600 mt-4">Whether you need emergency veterinary resources, lost pet support, or want to volunteer with our rescue partners, we're here for you and your pets.</p>
<div class="mt-7">
<button onclick="document.getElementById('contact').scrollIntoView({ behavior: 'smooth' })"
class="px-6 py-3 text-sm font-semibold bg-emerald-800 text-white rounded-3xl flex items-center gap-x-3">
<span>Contact our care team</span>
</button>
</div>
</div>
<div class="lg:col-span-7 bg-white border border-slate-100 rounded-3xl p-7">
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div class="border border-slate-100 rounded-2xl px-5 py-4">
<div class="flex items-center gap-3">
<i class="fa-solid fa-phone-volume text-emerald-600 text-xl"></i>
<div>
<div class="font-semibold">Emergency Hotline</div>
<div class="text-emerald-800 font-bold text-xl">1-800-PAW-VITA</div>
<div class="text-xs text-slate-500">Available 24/7</div>
</div>
</div>
</div>
<div class="border border-slate-100 rounded-2xl px-5 py-4">
<div class="flex items-center gap-3">
<i class="fa-solid fa-microchip text-emerald-600 text-xl"></i>
<div>
<div class="font-semibold">Microchipping Clinic</div>
<div class="text-sm mt-0.5">Walk-ins welcome</div>
<div class="text-xs font-medium mt-1">Next clinic: Feb 12 • 9am–4pm</div>
</div>
</div>
</div>
<div class="border border-slate-100 rounded-2xl px-5 py-4">
<div>
<div class="font-semibold mb-1">Lost Pet Recovery</div>
<p class="text-xs text-slate-600">Report a lost pet or search our database of found animals.</p>
<button class="mt-3 px-3 py-1 text-xs bg-emerald-100 text-emerald-700 font-semibold rounded-2xl">Report lost pet</button>
</div>
</div>
<div class="border border-slate-100 rounded-2xl px-5 py-4">
<div>
<div class="font-semibold mb-1">Volunteer Opportunities</div>
<p class="text-xs text-slate-600">Foster homes, transport, and event volunteers always needed.</p>
<button onclick="volunteerAction()" class="mt-3 px-3 py-1 text-xs bg-emerald-800 text-white font-semibold rounded-2xl">Become a volunteer</button>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- FINAL CTA -->
<section class="max-w-screen-2xl mx-auto px-8 py-8">
<div class="bg-emerald-800 rounded-3xl px-9 py-9 text-white flex flex-col md:flex-row items-center justify-between gap-4">
<div>
<h3 class="text-2xl font-bold tracking-tight">Ready to make a difference?</h3>
<p class="text-emerald-200 mt-1">Join our community of over 48,000 pet families today.</p>
</div>
<div class="flex items-center gap-x-3">
<a href="#adopt" class="px-7 py-3 text-sm font-semibold bg-white text-emerald-900 rounded-3xl flex items-center justify-center hover:bg-emerald-100 transition-colors">Start adopting</a>
<a href="#quiz" class="px-7 py-3 text-sm font-semibold border border-white/40 hover:bg-emerald-700 transition-colors rounded-3xl flex items-center justify-center">Take the quiz</a>
</div>
</div>
</section>
<!-- FOOTER -->
<footer id="contact" class="bg-emerald-950 text-white pt-12 pb-7">
<div class="max-w-screen-2xl mx-auto px-8">
<div class="grid grid-cols-2 md:grid-cols-12 gap-y-10 gap-x-5">
<!-- Footer Column 1 -->
<div class="md:col-span-5">
<div class="flex items-center gap-x-3 mb-4">
<img src="https://placehold.co/110x38/166534/ffffff?text=PawVita&font=playfair+display" alt="PawVita" class="h-8">
<span class="font-bold text-xl">PawVita</span>
</div>
<p class="text-emerald-300 text-sm max-w-xs">Dedicated to creating healthier, happier lives for pets and the people who love them.</p>
<div class="mt-6 flex items-center gap-x-4">
<a href="#" class="text-emerald-300 hover:text-white"><i class="fa-brands fa-instagram text-xl"></i></a>
<a href="#" class="text-emerald-300 hover:text-white"><i class="fa-brands fa-facebook text-xl"></i></a>
<a href="#" class="text-emerald-300 hover:text-white"><i class="fa-brands fa-tiktok text-xl"></i></a>
<a href="#" class="text-emerald-300 hover:text-white"><i class="fa-brands fa-linkedin text-xl"></i></a>
</div>
</div>
<div class="md:col-span-2">
<h5 class="text-xs font-bold tracking-widest text-emerald-400 mb-4">EXPLORE</h5>
<div class="space-y-[9px] text-sm">
<a href="#adopt" class="block text-emerald-200 hover:text-white">Adopt a Pet</a>
<a href="#shop" class="block text-emerald-200 hover:text-white">Shop</a>
<a href="#resources" class="block text-emerald-200 hover:text-white">Resources</a>
<a href="#quiz" class="block text-emerald-200 hover:text-white">Pet Match Quiz</a>
</div>
</div>
<div class="md:col-span-2">
<h5 class="text-xs font-bold tracking-widest text-emerald-400 mb-4">SUPPORT</h5>
<div class="space-y-[9px] text-sm">
<a href="#help" class="block text-emerald-200 hover:text-white">Find Help</a>
<a href="#" class="block text-emerald-200 hover:text-white">Veterinary Network</a>
<a href="#" class="block text-emerald-200 hover:text-white">Volunteer</a>
<a href="#" class="block text-emerald-200 hover:text-white">Foster Program</a>
</div>
</div>
<div class="md:col-span-3">
<h5 class="text-xs font-bold tracking-widest text-emerald-400 mb-4">CONTACT US</h5>
<div class="space-y-2 text-sm">
<div>
<span class="text-emerald-300">1234 Harmony Lane</span><br>
<span class="text-emerald-300">Petville, CA 90210</span>
</div>
<div class="pt-1">
<a href="tel:18007298482" class="hover:text-white">1-800-PAW-VITA</a>
</div>
<div>
<a href="mailto:hello@pawvita.org" class="hover:text-white">hello@pawvita.org</a>
</div>
</div>
</div>
</div>
<div class="section-divider my-8"></div>
<div class="flex flex-col md:flex-row md:items-center justify-between text-xs gap-y-3 text-emerald-300">
<div>© 2025 PawVita. All rights reserved.</div>
<div class="flex gap-x-4 text-xs">
<a href="#" class="hover:text-white">Privacy Policy</a>
<a href="#" class="hover:text-white">Terms of Service</a>
<a href="#" class="hover:text-white">Accessibility</a>
<a href="#" class="hover:text-white">Sitemap</a>
</div>
<div class="text-[10px]">Licensed & accredited by the American Veterinary Medical Association</div>
</div>
</div>
</footer>
<!-- Resource Modal -->
<div id="resource-modal" onclick="hideResourceModal()" class="hidden fixed inset-0 bg-black/50 flex items-center justify-center z-50">
<div onclick="event.stopImmediatePropagation()" class="bg-white max-w-lg w-full mx-4 rounded-3xl overflow-hidden">
<div class="p-7">
<div class="flex justify-between items-center">
<h3 id="modal-title" class="font-bold text-2xl"></h3>
<button onclick="hideResourceModal()" class="text-slate-400 hover:text-slate-600">
<i class="fa-solid fa-times text-xl"></i>
</button>
</div>
<div id="modal-body" class="mt-5 text-sm text-slate-600 leading-relaxed"></div>
</div>
<div class="bg-slate-50 px-7 py-4 border-t flex justify-end">
<button onclick="hideResourceModal()"
class="px-6 py-2 text-sm font-semibold text-emerald-800">Close</button>
</div>
</div>
</div>
<script src="https://cdn.tailwindcss.com"></script>
<script>
// Tailwind script configuration
function initializeTailwind() {
document.documentElement.style.setProperty('--accent', '#166534');
tailwind.config = {
theme: {
extend: {
fontFamily: {
'serif-custom': ['Playfair Display', 'Georgia', 'serif']
}
}
}
};
}
// Mobile menu toggle
function toggleMobileMenu() {
const menu = document.getElementById('mobile-menu');
menu.classList.toggle('hidden');
}
// Add to cart functionality
function addToCart(productName) {
const btns = event.currentTarget;
const originalText = event.target.innerHTML;
event.target.innerHTML = `<span>Added to cart!</span>`;
event.target.disabled = true;
// Toast notification
showToast(`${productName} added to cart`);
setTimeout(() => {
if (event.target) {
event.target.innerHTML = originalText;
event.target.disabled = false;
}
}, 1500);
}
function showToast(message) {
const toast = document.createElement('div');
toast.className = `fixed bottom-5 right-5 bg-emerald-900 text-white px-5 py-3 text-sm rounded-3xl flex items-center gap-x-2 shadow-xl`;
toast.innerHTML = `
<span>${message}</span>
<button onclick="this.parentElement.remove()" class="ml-4 text-xs text-emerald-300">×</button>
`;
document.body.appendChild(toast);
setTimeout(() => {
if (toast.parentElement) toast.parentElement.removeChild(toast);
}, 3000);
}
// Adopt pet
function adoptPet(petName) {
const modal = document.createElement('div');
modal.className = `fixed inset-0 bg-black/60 flex items-center justify-center z-[999]`;
modal.innerHTML = `
<div class="bg-white w-full max-w-md mx-4 rounded-3xl overflow-hidden">
<div class="px-6 pt-6 pb-4">
<div class="flex justify-between items-center">
<div>
<h4 class="font-bold text-xl">Adopt ${petName}</h4>
<p class="text-xs text-emerald-600 font-medium">Step 1 of 3</p>
</div>
<button onclick="this.closest('.fixed').remove()" class="text-2xl leading-none text-slate-400 hover:text-red-400">×</button>
</div>
<div class="mt-6">
<div class="text-sm">Thank you for your interest in ${petName}. To begin the adoption process:</div>
<div class="mt-5 space-y-3">
<div class="border px-4 py-3 rounded-2xl text-xs">
<div class="flex justify-between"><span class="font-medium">1. Submit application</span> <span class="font-bold text-emerald-700">→</span></div>
</div>
<div class="border px-4 py-3 rounded-2xl text-xs">
<div class="flex justify-between"><span class="font-medium">2. Schedule meet & greet</span></div>
</div>
<div class="border px-4 py-3 rounded-2xl text-xs">
<div class="flex justify-between"><span class="font-medium">3. Home visit & approval</span></div>
</div>
</div>
<div class="mt-6">
<button onclick="submitAdoption(this, '${petName}')" class="w-full py-[13px] bg-emerald-800 hover:bg-emerald-900 text-white font-semibold rounded-3xl text-sm">Start Application</button>
</div>
<div class="text-center mt-4 text-xs text-slate-400">Applications are reviewed within 48 hours.</div>
</div>
</div>
</div>
`;
document.body.appendChild(modal);
}
function submitAdoption(element, petName) {
element.innerHTML = `Application submitted for ${petName}!`;
element.style.backgroundColor = '#166534';
setTimeout(() => {
element.closest('.fixed').remove();
showToast(`Thank you! We'll contact you about ${petName} within 48 hours.`);
}, 1600);
}
// Quiz functionality
function initializeQuiz() {
const form = document.getElementById('quiz-form');
const resultDiv = document.getElementById('quiz-result');
form.addEventListener('submit', function(e) {
e.preventDefault();
// Get all selected answers
const q1 = document.querySelector('input[name="q1"]:checked');
const q2 = document.querySelector('input[name="q2"]:checked');
const q3 = document.querySelector('input[name="q3"]:checked');
const q4 = document.querySelector('input[name="q4"]:checked');
if (!q1 || !q2 || !q3 || !q4) {
alert("Please answer all questions to receive your recommendation.");
return;
}
// Calculate scores
let dogScore = 0;
let catScore = 0;
// Q1: Living situation
if (q1.value === 'small') {
catScore += 4;
} else if (q1.value === 'medium') {
dogScore += 2;
catScore += 2;
} else if (q1.value === 'large') {
dogScore += 4;
}
// Q2: Exercise time
if (q2.value === 'low') {
catScore += 4;
} else if (q2.value === 'medium') {
dogScore += 2;
} else if (q2.value === 'high') {
dogScore += 4;
}
// Q3: Children
if (q3.value === 'yes') {
dogScore += 2;
catScore += 1;
} else {
catScore += 3;
}
// Q4: Experience
if (q4.value === 'beginner') {
catScore += 3;
} else if (q4.value === 'some') {
dogScore += 2;
} else if (q4.value === 'expert') {
dogScore += 3;
}
// Determine result
let title, description, imageAlt;
if (dogScore > catScore) {
title = "A Dog";
description = "Based on your lifestyle, a dog such as a Labrador Retriever, Beagle, or Golden Retriever would be an excellent match. Dogs thrive with regular exercise, positive reinforcement training, and family engagement. We recommend starting with our training resources.";
} else if (catScore > dogScore) {
title = "A Cat";
description = "Your answers indicate that a cat would be the best fit. Cats are independent yet affectionate companions that do well in apartments and with moderate activity levels. They benefit greatly from enrichment toys and vertical space.";
} else {
title = "Either a Cat or Dog";
description = "Your lifestyle is flexible enough for both! We recommend visiting our adoptable pets page to meet candidates or take a more in-depth assessment with our adoption specialists.";
}
// Show result
document.getElementById('quiz-result-title').innerHTML = title;
document.getElementById('quiz-result-description').innerHTML = description;
resultDiv.classList.remove('hidden');
resultDiv.scrollIntoView({ behavior: "smooth", block: "center" });
// Hide form temporarily
form.style.opacity = "0.3";
form.style.pointerEvents = "none";
});
}
function resetQuiz() {
const form = document.getElementById('quiz-form');
const resultDiv = document.getElementById('quiz-result');
form.reset();
resultDiv.classList.add('hidden');
form.style.opacity = "1";
form.style.pointerEvents = "all";
// Scroll to form
form.scrollIntoView({ behavior: "smooth", block: "center" });
}
// Resource modal
function showResourceModal(topic) {
const modal = document.getElementById('resource-modal');
const titleEl = document.getElementById('modal-title');
const bodyEl = document.getElementById('modal-body');
titleEl.textContent = topic;
let content = '';
if (topic === 'Breed Guides') {
content = `
<p class="mb-3">Our comprehensive breed guides include detailed information about:</p>
<ul class="list-disc pl-5 text-sm space-y-1.5">
<li>Nutrition requirements specific to breed size and age</li>
<li>Exercise and enrichment recommendations</li>
<li>Common health predispositions and preventive care</li>
<li>Temperament traits and ideal home environments</li>
</ul>
<div class="mt-5 text-xs bg-emerald-50 px-4 py-3 rounded-2xl">
Over 120 breeds covered with downloadable PDFs.
</div>
`;
} else if (topic === 'Training Tips') {
content = `
<p class="mb-3">PawVita uses science-backed, force-free training techniques.</p>
<div class="space-y-3 text-sm">
<div class="flex gap-3">
<div class="font-medium w-28">Puppies:</div>
<div>House training, socialization, and basic commands using positive reinforcement.</div>
</div>
<div class="flex gap-3">
<div class="font-medium w-28">Adult Dogs:</div>
<div>Leash manners, reactivity management, and advanced tricks.</div>
</div>
<div class="flex gap-3">
<div class="font-medium w-28">Cats:</div>
<div>Litter training, scratching behavior, and interactive play.</div>
</div>
</div>
`;
} else if (topic === 'Senior Pet Care') {
content = `
<p>Our senior pet care program focuses on quality of life for aging companions.</p>
<div class="mt-4 grid grid-cols-2 gap-3 text-sm">
<div class="bg-slate-50 px-3 py-2.5 rounded-2xl">
<strong class="text-xs">Joint Health</strong><br>
<span class="text-xs">Arthritis management plans & supplements</span>
</div>
<div class="bg-slate-50 px-3 py-2.5 rounded-2xl">
<strong class="text-xs">Cognitive Support</strong><br>
<span class="text-xs">Enrichment for mental stimulation</span>
</div>
</div>
<p class="mt-3 text-xs">We also offer discounted wellness exams for pets over 7 years of age.</p>
`;
} else if (topic === 'Rescue & Microchipping') {
content = `
<p class="mb-4">Microchipping is one of the most effective ways to reunite lost pets with their families.</p>
<div>
<p class="font-medium text-xs">Key facts:</p>
<ul class="list-disc pl-5 mt-2 text-sm">
<li>Over 70% of lost pets with microchips are returned home</li>
<li>Our clinics offer low-cost microchipping ($15)</li>
<li>Registration is included with lifetime updates</li>
</ul>
</div>
`;
}
bodyEl.innerHTML = content;
modal.classList.remove('hidden');
modal.classList.add('flex');
}
function hideResourceModal() {
const modal = document.getElementById('resource-modal');
modal.classList.remove('flex');
modal.classList.add('hidden');
}
// Volunteer action
function volunteerAction() {
const modal = document.createElement('div');
modal.className = `fixed inset-0 bg-black/50 flex items-center justify-center z-50`;
modal.innerHTML = `
<div onclick="event.target.remove()" class="absolute inset-0"></div>
<div class="bg-white max-w-md w-full mx-4 rounded-3xl overflow-hidden relative z-10">
<div class="px-7 pt-7 pb-6">
<h3 class="font-bold text-2xl">Join our volunteer team</h3>
<p class="text-sm text-slate-600 mt-2">Thank you for your interest in helping pets in need. Volunteers are the backbone of our rescue work.</p>
<div class="mt-6 space-y-4">
<div class="border rounded-2xl px-5 py-4">
<div class="font-semibold text-sm">Foster a pet</div>
<div class="text-xs mt-1 text-emerald-700">Provide temporary homes for animals awaiting adoption.</div>
</div>
<div class="border rounded-2xl px-5 py-4">
<div class="font-semibold text-sm">Transport volunteer</div>
<div class="text-xs mt-1 text-emerald-700">Help transport pets between clinics and foster homes.</div>
</div>
<div class="border rounded-2xl px-5 py-4">
<div class="font-semibold text-sm">Event support</div>
<div class="text-xs mt-1 text-emerald-700">Assist at adoption events and community outreach.</div>
</div>
</div>
<button onclick="submitVolunteer(this)" class="mt-6 w-full py-3.5 bg-emerald-800 hover:bg-emerald-900 text-white text-sm font-semibold rounded-3xl">Sign up to volunteer</button>
</div>
</div>
`;
document.body.appendChild(modal);
}
function submitVolunteer(element) {
element.innerHTML = 'Thank you! Application received.';
element.disabled = true;
setTimeout(() => {
element.closest('.fixed').remove();
showToast('Thank you! A volunteer coordinator will reach out within 3 days.');
}, 1650);
}
// Keyboard support and other polish
function addKeyboardSupport() {
document.addEventListener('keydown', function(e) {
if (e.key === "/" && document.activeElement.tagName === "BODY") {
e.preventDefault();
const quizSection = document.getElementById('quiz');
quizSection.scrollIntoView({ behavior: "smooth" });
setTimeout(() => {
const firstRadio = document.querySelector('#quiz-form input[type="radio"]');
if (firstRadio) firstRadio.focus();
}, 700);
}
});
// Add subtle scroll progress indicator on header
const header = document.querySelector('header');
window.addEventListener('scroll', () => {
if (window.scrollY > 80) {
header.style.boxShadow = '0 1px 0 0 #e2e8f0';
} else {
header.style.boxShadow = 'none';
}
});
}
// Initialize everything
function initializeWebsite() {
initializeTailwind();
initializeQuiz();
addKeyboardSupport();
// Demo: Pre-select nothing on quiz
// Bonus: Make all adopt buttons functional
// Add subtle animation to pet cards on load
setTimeout(() => {
const cards = document.querySelectorAll('.pet-card');
cards.forEach((card, i) => {
card.style.transitionDelay = (i * 70) + 'ms';
card.style.opacity = '1';
});
}, 400);
// Random testimonial highlight (subtle)
console.log('%c[PawVita] Production-ready one-page website initialized successfully.', 'color:#166534');
// Accessibility: Add aria labels where needed
const navLinks = document.querySelectorAll('nav a');
navLinks.forEach(link => {
if (!link.getAttribute('aria-label')) {
link.setAttribute('aria-label', link.textContent.trim() + ' section');
}
});
}
// Boot the site
window.onload = function() {
initializeWebsite();
}
// Bonus: Allow closing modals with ESC
document.addEventListener('keydown', function(e) {
if (e.key === "Escape") {
const modals = document.querySelectorAll('.fixed.inset-0');
if (modals.length > 0) {
modals[modals.length - 1].remove();
} else {
const resourceModal = document.getElementById('resource-modal');
if (!resourceModal.classList.contains('hidden')) {
resourceModal.classList.add('hidden');
resourceModal.classList.remove('flex');
}
}
}
});
</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:25.176Z",
"url": "https://benchmark.aimac.invalid/cbf5fc970491f2699516ca94d4b88659c80d467cef8b587c22e36c9c4fbfa2e3.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": "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": []
},
{
"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": "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": []
},
{
"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": "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": []
},
{
"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": "<a href=\"#adopt\" class=\"nav-link text-slate-600 hover:text-emerald-800 font-medium\" aria-label=\"Adopt section\">Adopt</a>",
"target": [
"a[aria-label=\"Adopt section\"]"
]
}
]
},
{
"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": "<a href=\"#adopt\" class=\"nav-link text-slate-600 hover:text-emerald-800 font-medium\" aria-label=\"Adopt section\">Adopt</a>",
"target": [
"a[aria-label=\"Adopt section\"]"
]
}
]
},
{
"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 class=\"bg-slate-50 font-sans antialiased text-slate-800\">",
"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": "<a href=\"#adopt\" class=\"nav-link text-slate-600 hover:text-emerald-800 font-medium\" aria-label=\"Adopt section\">Adopt</a>",
"target": [
"a[aria-label=\"Adopt section\"]"
]
}
]
},
{
"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": "<a href=\"#adopt\" class=\"nav-link text-slate-600 hover:text-emerald-800 font-medium\" aria-label=\"Adopt section\">Adopt</a>",
"target": [
"a[aria-label=\"Adopt section\"]"
]
}
]
},
{
"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": "<a href=\"#adopt\" class=\"nav-link text-slate-600 hover:text-emerald-800 font-medium\" aria-label=\"Adopt section\">Adopt</a>",
"target": [
"a[aria-label=\"Adopt section\"]"
]
}
]
},
{
"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": "<html lang=\"en\" style=\"--accent: #166534;\">",
"target": [
"html"
]
}
]
},
{
"id": "button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure buttons have discernible text",
"help": "Buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has inner text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button onclick=\"document.getElementById('help').scrollIntoView({ behavior: 'smooth' })\" class=\"px-5 py-2.5 text-sm font-semibold rounded-2xl border border-emerald-200 text-emerald-700 hover:bg-emerald-50 transition-colors flex items-center gap-x-2\">",
"target": [
".border-emerald-200.hover\\:bg-emerald-50.py-2\\.5"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "internal-link-present",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Valid skip link found"
},
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1 class=\"text-6xl md:text-7xl leading-[1.05] tracking-tighter font-bold text-white mb-4\">\n Every pet<br>deserves a<br><span class=\"text-emerald-200\">lifetime of care.</span>\n </h1>",
"target": [
"h1"
]
},
{
"html": "<h2 class=\"section-header text-5xl leading-none tracking-tighter mt-2 mb-5 text-emerald-950\">We believe pets are family \u2014 and family deserves the best care.</h2>",
"target": [
".text-5xl"
]
},
{
"html": "<h2 class=\"section-header text-4xl tracking-tighter text-emerald-950\">Meet our adoptable companions</h2>",
"target": [
".md\\:items-end > div:nth-child(1) > .text-emerald-950"
]
},
{
"html": "<h3 class=\"font-semibold text-2xl tracking-tight\">Luna</h3>",
"target": [
".pet-card.overflow-hidden.shadow-sm:nth-child(1) > .p-6 > .items-start.justify-between.flex > div:nth-child(1) > .tracking-tight.text-2xl"
]
},
{
"html": "<h3 class=\"font-semibold text-2xl tracking-tight\">Whiskers</h3>",
"target": [
".pet-card.overflow-hidden.shadow-sm:nth-child(2) > .p-6 > .items-start.justify-between.flex > div:nth-child(1) > .tracking-tight.text-2xl"
]
},
{
"html": "<h3 class=\"font-semibold text-2xl tracking-tight\">Max</h3>",
"target": [
".pet-card.overflow-hidden.shadow-sm:nth-child(3) > .p-6 > .items-start.justify-between.flex > div:nth-child(1) > .tracking-tight.text-2xl"
]
},
{
"html": "<h3 class=\"font-semibold text-2xl tracking-tight\">Bella</h3>",
"target": [
".pet-card.overflow-hidden.shadow-sm:nth-child(4) > .p-6 > .items-start.justify-between.flex > div:nth-child(1) > .tracking-tight.text-2xl"
]
},
{
"html": "<h2 class=\"section-header text-4xl tracking-tighter\">Shop premium essentials</h2>",
"target": [
".items-end > div > h2"
]
},
{
"html": "<h4 class=\"font-semibold\">NutriPaw Organic Kibble</h4>",
"target": [
".p-1.shadow-sm.border-slate-100:nth-child(1) > .pb-5.pt-4.px-5 > .justify-between.flex > div:nth-child(1) > h4"
]
},
{
"html": "<h4 class=\"font-semibold\">EnrichPlay Puzzle Feeder</h4>",
"target": [
".p-1.shadow-sm.border-slate-100:nth-child(2) > .pb-5.pt-4.px-5 > .justify-between.flex > div:nth-child(1) > h4"
]
},
{
"html": "<h4 class=\"font-semibold\">PawVita Grooming Kit</h4>",
"target": [
".p-1.shadow-sm.border-slate-100:nth-child(3) > .pb-5.pt-4.px-5 > .justify-between.flex > div:nth-child(1) > h4"
]
},
{
"html": "<h4 class=\"font-semibold\">Mobility+ Joint Chews</h4>",
"target": [
".p-1.shadow-sm.border-slate-100:nth-child(4) > .pb-5.pt-4.px-5 > .justify-between.flex > div:nth-child(1) > h4"
]
},
{
"html": "<h2 class=\"section-header text-4xl tracking-tighter text-emerald-950\">Resources for responsible pet parents</h2>",
"target": [
".mb-9 > .text-emerald-950"
]
},
{
"html": "<h4 class=\"font-semibold text-xl\">Breed Guides</h4>",
"target": [
".resource-card.bg-slate-50.p-6:nth-child(1) > .mb-4.gap-x-3.items-center > h4"
]
},
{
"html": "<h4 class=\"font-semibold text-xl\">Training Tips</h4>",
"target": [
".resource-card.bg-slate-50.p-6:nth-child(2) > .mb-4.gap-x-3.items-center > h4"
]
},
{
"html": "<h4 class=\"font-semibold text-xl\">Senior Pet Care</h4>",
"target": [
".resource-card.bg-slate-50.p-6:nth-child(3) > .mb-4.gap-x-3.items-center > h4"
]
},
{
"html": "<h4 class=\"font-semibold text-xl\">Rescue & Microchipping</h4>",
"target": [
".resource-card.bg-slate-50.p-6:nth-child(4) > .mb-4.gap-x-3.items-center > h4"
]
},
{
"html": "<h2 class=\"section-header text-4xl tracking-tighter text-emerald-950\">Find your perfect pet match</h2>",
"target": [
".mb-7 > .text-emerald-950"
]
},
{
"html": "<h2 class=\"section-header text-4xl tracking-tighter\">What our community says</h2>",
"target": [
".mb-8 > h2"
]
},
{
"html": "<h2 class=\"section-header text-4xl tracking-tighter mt-1\">Find help when it matters most</h2>",
"target": [
".lg\\:col-span-5 > h2"
]
},
{
"html": "<h3 class=\"text-2xl font-bold tracking-tight\">Ready to make a difference?</h3>",
"target": [
".px-9 > div:nth-child(1) > .tracking-tight.text-2xl"
]
},
{
"html": "<h5 class=\"text-xs font-bold tracking-widest text-emerald-400 mb-4\">EXPLORE</h5>",
"target": [
".md\\:col-span-2:nth-child(2) > h5"
]
},
{
"html": "<h5 class=\"text-xs font-bold tracking-widest text-emerald-400 mb-4\">SUPPORT</h5>",
"target": [
".md\\:col-span-2:nth-child(3) > h5"
]
},
{
"html": "<h5 class=\"text-xs font-bold tracking-widest text-emerald-400 mb-4\">CONTACT US</h5>",
"target": [
".md\\:col-span-3 > h5"
]
}
],
"impact": "serious",
"message": "Page has a heading"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\" style=\"--accent: #166534;\">",
"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": "#064e3b",
"bgColor": "#ffffff",
"contrastRatio": 9.71,
"fontSize": "22.5pt (30px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 9.71"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span class=\"text-3xl font-bold tracking-tighter text-emerald-900\">PawVita</span>",
"target": [
".text-3xl.tracking-tighter.text-emerald-900"
]
}
]
},
{
"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\" style=\"--accent: #166534;\">",
"target": [
"html"
]
}
]
},
{
"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 class=\"quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50\">",
"target": [
"div:nth-child(1) > .sm\\:grid-cols-3.gap-2.grid-cols-1 > .quiz-option.cursor-pointer.hover\\:border-emerald-200:nth-child(1)"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input type=\"radio\" name=\"q1\" value=\"small\" class=\"mr-3 accent-emerald-800\">",
"target": [
"input[value=\"small\"]"
]
}
]
},
{
"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\" style=\"--accent: #166534;\">",
"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\" style=\"--accent: #166534;\">",
"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/142x52/166534/ffffff?text=PawVita&font=playfair+display\" alt=\"PawVita Logo\" class=\"h-11 w-auto rounded-lg shadow-sm\">",
"target": [
".h-11"
]
}
]
},
{
"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": "implicit-label",
"data": {
"implicitLabel": "Apartment / Small space"
},
"relatedNodes": [
{
"html": "<label class=\"quiz-option flex items-center border border-slate-200 px-4 py-3 rounded-2xl cursor-pointer hover:border-emerald-200 has-[:checked]:border-emerald-400 has-[:checked]:bg-emerald-50\">",
"target": [
"div:nth-child(1) > .sm\\:grid-cols-3.gap-2.grid-cols-1 > .quiz-option.cursor-pointer.hover\\:border-emerald-200:nth-child(1)"
]
}
],
"impact": "critical",
"message": "Element has an implicit (wrapped) <label>"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"radio\" name=\"q1\" value=\"small\" class=\"mr-3 accent-emerald-800\">",
"target": [
"input[value=\"small\"]"
]
}
]
},
{
"id": "link-name",
"impact": "serious",
"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"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute exists and is not empty"
}
],
"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=\"#adopt\" class=\"nav-link text-slate-600 hover:text-emerald-800 font-medium\" aria-label=\"Adopt section\">Adopt</a>",
"target": [
"a[aria-label=\"Adopt section\"]"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul class=\"text-xs space-y-1.5 mb-5 text-slate-600\">",
"target": [
"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 class=\"flex items-center\"><i class=\"fa-solid fa-check mr-2 text-emerald-600 text-xs\"></i> Golden Retriever nutrition</li>",
"target": [
"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/142x52/166534/ffffff?text=PawVita&font=playfair+display\" alt=\"PawVita Logo\" class=\"h-11 w-auto rounded-lg shadow-sm\">",
"target": [
".h-11"
]
}
]
},
{
"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-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#adopt\" class=\"nav-link text-slate-600 hover:text-emerald-800 font-medium\" aria-label=\"Adopt section\">Adopt</a>",
"target": [
"a[aria-label=\"Adopt section\"]"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": "bgGradient",
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"inline-flex items-center gap-x-2 bg-white/90 backdrop-blur-md px-4 py-1.5 rounded-3xl mb-6 shadow-inner\">",
"target": [
".py-1\\.5"
]
},
{
"html": "<section class=\"hero-bg h-[620px] flex items-center relative\">",
"target": [
".hero-bg"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"ml-2 text-xs font-semibold tracking-[0.5px] text-emerald-800\">2024 NATIONAL RESCUE AWARD WINNER</span>",
"target": [
".tracking-\\[0\\.5px\\]"
],
"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": "#059669",
"bgColor": "#ffffff",
"contrastRatio": 3.76,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"adopt\" class=\"max-w-screen-2xl mx-auto px-8 py-12 bg-white\">",
"target": [
"#adopt"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.76 (foreground color: #059669, 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=\"uppercase tracking-[1.5px] text-xs font-bold text-emerald-600\">Featured This Week</span>",
"target": [
".md\\:items-end > div:nth-child(1) > .tracking-\\[1\\.5px\\].uppercase.text-emerald-600"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#f8fafc",
"contrastRatio": 3.6,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body class=\"bg-slate-50 font-sans antialiased text-slate-800\">",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #059669, background color: #f8fafc, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"text-emerald-600 text-xs font-bold tracking-wider\">CURATED FOR WELLNESS</span>",
"target": [
".tracking-wider.text-emerald-600.font-bold"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #059669, background color: #f8fafc, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ffffff",
"contrastRatio": 3.76,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"max-w-screen-2xl mx-auto px-8 py-12 bg-white\">",
"target": [
".py-12:nth-child(8)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.76 (foreground color: #059669, 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=\"uppercase tracking-[1.5px] text-xs font-bold text-emerald-600\">Real stories</span>",
"target": [
".mb-8 > .tracking-\\[1\\.5px\\].uppercase.text-emerald-600"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
]
},
{
"id": "link-name",
"impact": "serious",
"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 does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-emerald-300 hover:text-white\"><i class=\"fa-brands fa-instagram text-xl\"></i></a>",
"target": [
".text-emerald-300.hover\\:text-white[href=\"#\"]:nth-child(1)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
},
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-emerald-300 hover:text-white\"><i class=\"fa-brands fa-facebook text-xl\"></i></a>",
"target": [
".text-emerald-300.hover\\:text-white[href=\"#\"]:nth-child(2)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
},
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-emerald-300 hover:text-white\"><i class=\"fa-brands fa-tiktok text-xl\"></i></a>",
"target": [
".text-emerald-300.hover\\:text-white[href=\"#\"]:nth-child(3)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
},
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-emerald-300 hover:text-white\"><i class=\"fa-brands fa-linkedin text-xl\"></i></a>",
"target": [
".text-emerald-300.hover\\:text-white[href=\"#\"]:nth-child(4)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 5206
},
{
"y": 576,
"height": 5206
},
{
"y": 1152,
"height": 5206
},
{
"y": 1728,
"height": 5206
},
{
"y": 2304,
"height": 5206
},
{
"y": 2880,
"height": 5206
},
{
"y": 3456,
"height": 5206
},
{
"y": 4032,
"height": 5206
},
{
"y": 4486,
"height": 5206
}
],
"scans": 10,
"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 "Pets" 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: "Pets"
- Description: Pet care, adoption, veterinary resources, training, and animal rescue information.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Pets" 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: "Shop", "Find Help", "Contact".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Pets" category. Consider themes similar to: "Breed Guides", "Training Tips", "Senior Pet Care".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "enrichment", "microchipping", "nutrition requirements".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Schedule Vet Visit", "Volunteer", "Learn More".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Pets" sector. Ideas similar but not limited to: "pet compatibility quiz".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "pet health tips", "rescue spotlights", "community photos".
- **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.