MiniMax MiniMax M3 – Pets
via CoreWeave · Generated
- AIMAC Debt 5.46
- Cost $0.017
- Total Violations 38
- HTML Size 61 KB
- Em Dashes 28
Screenshot
View Live Page
Accessibility Issues Found
38 Serious
-
color-contrast serious 38 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<a href="#donate" class="cta-nav">Donate</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>PawHaven — Where Every Paw Finds a Home</title>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&family=Playfair+Display:wght@500;600;700&display=swap" rel="stylesheet">
<style>
:root {
--primary: #8B5A3C;
--primary-dark: #6B4226;
--secondary: #7C9A7E;
--accent: #E76F51;
--cream: #FAF3E0;
--warm: #F4E4C1;
--text: #2D3436;
--muted: #636E72;
--light-bg: #FDFCF8;
--white: #ffffff;
--shadow: 0 4px 20px rgba(139, 90, 60, 0.08);
--shadow-lg: 0 10px 40px rgba(139, 90, 60, 0.12);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
font-family: 'Poppins', sans-serif;
color: var(--text);
background: var(--light-bg);
line-height: 1.6;
font-size: 16px;
}
h1, h2, h3, h4 { font-family: 'Playfair Display', serif; line-height: 1.2; color: var(--text); }
h1 { font-size: 3rem; font-weight: 700; }
h2 { font-size: 2.25rem; font-weight: 600; margin-bottom: 0.5rem; }
h3 { font-size: 1.4rem; font-weight: 600; }
p { margin-bottom: 1rem; color: var(--muted); }
a { color: var(--primary); text-decoration: none; transition: color 0.2s; }
a:hover { color: var(--accent); }
img { max-width: 100%; display: block; }
.container { max-width: 1240px; margin: 0 auto; padding: 0 24px; }
/* ========== TOP BAR ========== */
.topbar {
background: var(--primary-dark);
color: var(--cream);
padding: 8px 0;
font-size: 0.85rem;
}
.topbar .container { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; }
.topbar a { color: var(--cream); }
.topbar a:hover { color: var(--warm); }
.topbar-info span { margin-right: 18px; }
.topbar-info i { color: var(--accent); margin-right: 6px; }
.topbar-social a { margin-left: 12px; font-size: 0.95rem; }
/* ========== HEADER ========== */
header.main-header {
background: var(--white);
box-shadow: var(--shadow);
position: sticky;
top: 0;
z-index: 100;
}
.header-inner {
display: flex;
align-items: center;
justify-content: space-between;
padding: 18px 24px;
max-width: 1240px;
margin: 0 auto;
}
.logo { display: flex; align-items: center; gap: 14px; }
.logo img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; border: 3px solid var(--warm); }
.logo-text h3 {
font-size: 1.6rem;
margin: 0;
color: var(--primary-dark);
line-height: 1;
}
.logo-text small { color: var(--muted); font-size: 0.78rem; font-weight: 400; letter-spacing: 0.5px; }
nav.main-nav ul {
display: flex;
list-style: none;
gap: 6px;
align-items: center;
}
nav.main-nav a {
color: var(--text);
font-weight: 500;
padding: 10px 14px;
border-radius: 8px;
transition: all 0.2s;
font-size: 0.95rem;
}
nav.main-nav a:hover { background: var(--cream); color: var(--primary); }
nav.main-nav a.cta-nav {
background: var(--accent);
color: var(--white);
padding: 10px 20px;
}
nav.main-nav a.cta-nav:hover { background: var(--primary); color: var(--white); }
/* ========== HERO ========== */
.hero {
background: linear-gradient(135deg, rgba(139,90,60,0.85), rgba(231,111,81,0.75)),
url('https://picsum.photos/1600/700?random=20') center/cover;
color: var(--white);
padding: 100px 0 80px;
position: relative;
}
.hero .container { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 50px; align-items: center; }
.hero h1 { color: var(--white); font-size: 3.4rem; margin-bottom: 1rem; }
.hero h1 span { color: var(--warm); font-style: italic; }
.hero .lede { font-size: 1.15rem; color: rgba(255,255,255,0.95); margin-bottom: 1.8rem; max-width: 540px; }
.hero-buttons { display: flex; gap: 14px; flex-wrap: wrap; }
.btn {
display: inline-block;
padding: 14px 28px;
border-radius: 30px;
font-weight: 600;
font-size: 0.95rem;
cursor: pointer;
transition: all 0.25s;
border: 2px solid transparent;
text-align: center;
}
.btn-primary { background: var(--accent); color: var(--white); }
.btn-primary:hover { background: var(--white); color: var(--accent); transform: translateY(-2px); }
.btn-outline { border-color: var(--white); color: var(--white); }
.btn-outline:hover { background: var(--white); color: var(--primary); }
.btn-secondary { background: var(--secondary); color: var(--white); }
.btn-secondary:hover { background: var(--primary); color: var(--white); }
.hero-stats {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
margin-top: 40px;
max-width: 540px;
}
.stat {
background: rgba(255,255,255,0.15);
backdrop-filter: blur(6px);
border: 1px solid rgba(255,255,255,0.2);
padding: 16px;
border-radius: 12px;
text-align: center;
}
.stat strong { display: block; font-size: 1.8rem; font-family: 'Playfair Display', serif; color: var(--warm); }
.stat span { font-size: 0.78rem; color: rgba(255,255,255,0.85); text-transform: uppercase; letter-spacing: 1px; }
.hero-image-card {
background: var(--white);
padding: 14px;
border-radius: 18px;
box-shadow: var(--shadow-lg);
transform: rotate(-2deg);
}
.hero-image-card img { border-radius: 12px; width: 100%; height: 420px; object-fit: cover; }
.hero-card-tag {
background: var(--accent);
color: var(--white);
padding: 8px 16px;
border-radius: 30px;
font-size: 0.85rem;
font-weight: 600;
display: inline-block;
margin-top: 12px;
transform: rotate(2deg);
}
/* ========== SECTION COMMON ========== */
section { padding: 80px 0; }
.section-head { text-align: center; max-width: 720px; margin: 0 auto 50px; }
.section-head .eyebrow {
color: var(--accent);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 2px;
font-size: 0.85rem;
margin-bottom: 10px;
display: block;
}
.section-head p { font-size: 1.05rem; }
/* ========== SERVICES GRID ========== */
.services { background: var(--cream); }
.services-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
}
.service-card {
background: var(--white);
padding: 32px 24px;
border-radius: 16px;
text-align: center;
transition: all 0.3s;
border: 2px solid transparent;
}
.service-card:hover { transform: translateY(-6px); border-color: var(--accent); box-shadow: var(--shadow-lg); }
.service-icon {
width: 70px;
height: 70px;
background: var(--warm);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 18px;
font-size: 1.8rem;
color: var(--primary);
}
.service-card h3 { margin-bottom: 12px; color: var(--primary-dark); }
.service-card p { font-size: 0.92rem; }
.service-card a.more { display: inline-block; margin-top: 14px; font-weight: 600; font-size: 0.9rem; }
/* ========== ADOPTION SEARCH ========== */
.adoption-search { background: var(--white); }
.search-wrapper {
background: linear-gradient(135deg, var(--cream), var(--warm));
border-radius: 20px;
padding: 40px;
box-shadow: var(--shadow);
}
.search-filters {
display: grid;
grid-template-columns: repeat(4, 1fr) auto;
gap: 14px;
margin-bottom: 24px;
}
.filter-group label {
display: block;
font-size: 0.82rem;
font-weight: 600;
margin-bottom: 6px;
color: var(--primary-dark);
text-transform: uppercase;
letter-spacing: 1px;
}
.filter-group select, .filter-group input {
width: 100%;
padding: 12px 14px;
border: 2px solid transparent;
border-radius: 10px;
background: var(--white);
font-family: inherit;
font-size: 0.95rem;
color: var(--text);
}
.filter-group select:focus, .filter-group input:focus { outline: none; border-color: var(--accent); }
.search-btn {
align-self: end;
padding: 12px 28px;
background: var(--accent);
color: var(--white);
border: none;
border-radius: 10px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
}
.search-btn:hover { background: var(--primary); }
.pets-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
margin-top: 30px;
}
.pet-card {
background: var(--white);
border-radius: 16px;
overflow: hidden;
box-shadow: var(--shadow);
transition: all 0.3s;
}
.pet-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.pet-card-img {
height: 240px;
background: var(--warm);
position: relative;
overflow: hidden;
}
.pet-card-img img { width: 100%; height: 100%; object-fit: cover; }
.pet-badge {
position: absolute;
top: 12px;
left: 12px;
background: var(--accent);
color: var(--white);
padding: 4px 12px;
border-radius: 20px;
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
}
.pet-badge.urgent { background: #d63031; }
.pet-badge.new { background: var(--secondary); }
.pet-card-body { padding: 20px; }
.pet-card-body h3 { margin-bottom: 6px; color: var(--primary-dark); }
.pet-meta {
display: flex;
gap: 12px;
font-size: 0.82rem;
color: var(--muted);
margin-bottom: 12px;
flex-wrap: wrap;
}
.pet-meta span { display: flex; align-items: center; gap: 4px; }
.pet-card-body p { font-size: 0.88rem; margin-bottom: 14px; }
.pet-card-footer {
display: flex;
justify-content: space-between;
align-items: center;
padding-top: 14px;
border-top: 1px solid var(--warm);
}
.pet-card-footer a { font-weight: 600; font-size: 0.9rem; }
/* ========== MAIN LAYOUT WITH SIDEBAR ========== */
.layout-with-sidebar {
display: grid;
grid-template-columns: 1fr 320px;
gap: 40px;
align-items: start;
}
/* ========== EMERGENCY SECTION ========== */
.emergency-banner {
background: linear-gradient(135deg, #d63031, #b0273a);
color: var(--white);
padding: 30px;
border-radius: 16px;
display: grid;
grid-template-columns: auto 1fr auto;
gap: 20px;
align-items: center;
margin-bottom: 30px;
}
.emergency-banner .icon { font-size: 2.5rem; }
.emergency-banner h3 { color: var(--white); margin-bottom: 6px; font-size: 1.3rem; }
.emergency-banner p { color: rgba(255,255,255,0.92); margin: 0; font-size: 0.95rem; }
.emergency-banner .btn { background: var(--white); color: #d63031; }
.emergency-banner .btn:hover { background: var(--cream); }
.info-block {
background: var(--white);
padding: 28px;
border-radius: 14px;
margin-bottom: 24px;
box-shadow: var(--shadow);
border-left: 4px solid var(--accent);
}
.info-block h3 { color: var(--primary-dark); margin-bottom: 12px; }
.info-block ul { padding-left: 20px; color: var(--muted); }
.info-block li { margin-bottom: 8px; }
/* ========== SIDEBAR ========== */
aside.sidebar { position: sticky; top: 110px; }
.sidebar-widget {
background: var(--white);
padding: 22px;
border-radius: 14px;
margin-bottom: 22px;
box-shadow: var(--shadow);
}
.sidebar-widget h3 {
font-size: 1.1rem;
margin-bottom: 16px;
padding-bottom: 10px;
border-bottom: 2px solid var(--warm);
color: var(--primary-dark);
}
.community-photos {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 6px;
}
.community-photos img {
width: 100%;
aspect-ratio: 1;
object-fit: cover;
border-radius: 8px;
transition: transform 0.2s;
}
.community-photos img:hover { transform: scale(1.05); }
.widget-tag { font-size: 0.78rem; color: var(--muted); margin-top: 10px; text-align: center; }
.event-item {
display: flex;
gap: 12px;
padding: 10px 0;
border-bottom: 1px dashed var(--warm);
}
.event-item:last-child { border-bottom: none; }
.event-date {
background: var(--cream);
border-radius: 8px;
text-align: center;
padding: 6px 10px;
min-width: 56px;
flex-shrink: 0;
}
.event-date strong { display: block; color: var(--accent); font-size: 1.2rem; line-height: 1; }
.event-date small { font-size: 0.7rem; color: var(--muted); text-transform: uppercase; }
.event-info h4 { font-size: 0.95rem; margin-bottom: 4px; color: var(--text); }
.event-info p { font-size: 0.82rem; margin: 0; }
.training-tip {
background: linear-gradient(135deg, var(--cream), var(--warm));
padding: 16px;
border-radius: 10px;
margin-bottom: 10px;
}
.training-tip:last-child { margin-bottom: 0; }
.training-tip h4 { font-size: 0.95rem; color: var(--primary-dark); margin-bottom: 6px; font-family: 'Poppins', sans-serif; font-weight: 600; }
.training-tip p { font-size: 0.85rem; margin: 0; }
/* ========== BREED GUIDES ========== */
.breed-guides { background: var(--cream); }
.breeds-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
.breed-card {
background: var(--white);
border-radius: 16px;
overflow: hidden;
box-shadow: var(--shadow);
transition: all 0.3s;
}
.breed-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.breed-card img { width: 100%; height: 200px; object-fit: cover; }
.breed-card-body { padding: 22px; }
.breed-card-body h3 { margin-bottom: 8px; color: var(--primary-dark); }
.breed-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
.breed-tag {
background: var(--cream);
color: var(--primary-dark);
padding: 3px 10px;
border-radius: 20px;
font-size: 0.75rem;
font-weight: 500;
}
.breed-card-body p { font-size: 0.9rem; margin-bottom: 12px; }
.breed-card-body a { font-weight: 600; }
/* ========== BEHAVIOR HELP ========== */
.behavior-help { background: var(--white); }
.behavior-content { display: grid; grid-template-columns: 1fr 1fr; gap: 50px; align-items: center; }
.behavior-content img { border-radius: 16px; box-shadow: var(--shadow-lg); height: 420px; object-fit: cover; }
.behavior-text h2 { margin-bottom: 16px; }
.behavior-text ul { margin: 16px 0; padding-left: 0; list-style: none; }
.behavior-text ul li {
padding: 12px 0 12px 32px;
position: relative;
color: var(--muted);
border-bottom: 1px solid var(--warm);
}
.behavior-text ul li:before {
content: "🐾";
position: absolute;
left: 0;
top: 12px;
}
.behavior-text ul li strong { color: var(--primary-dark); display: block; margin-bottom: 4px; }
/* ========== TESTIMONIALS ========== */
.testimonials { background: var(--primary-dark); color: var(--white); }
.testimonials .section-head .eyebrow { color: var(--warm); }
.testimonials h2 { color: var(--white); }
.testimonials .section-head p { color: rgba(255,255,255,0.8); }
.testimonials-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
.testimonial-card {
background: rgba(255,255,255,0.08);
backdrop-filter: blur(8px);
border: 1px solid rgba(255,255,255,0.15);
padding: 28px;
border-radius: 16px;
transition: all 0.3s;
}
.testimonial-card:hover { background: rgba(255,255,255,0.12); transform: translateY(-4px); }
.testimonial-rating { color: #ffc107; margin-bottom: 14px; font-size: 1.1rem; }
.testimonial-card blockquote {
color: rgba(255,255,255,0.95);
font-style: italic;
margin-bottom: 20px;
line-height: 1.7;
font-size: 0.95rem;
}
.testimonial-author {
display: flex;
align-items: center;
gap: 12px;
}
.testimonial-author img {
width: 50px;
height: 50px;
border-radius: 50%;
object-fit: cover;
border: 2px solid var(--warm);
}
.testimonial-author h4 { color: var(--white); font-size: 1rem; margin: 0; font-family: 'Poppins', sans-serif; }
.testimonial-author p { color: rgba(255,255,255,0.7); font-size: 0.8rem; margin: 0; }
/* ========== BLOG ========== */
.blog-preview { background: var(--cream); }
.blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.blog-card {
background: var(--white);
border-radius: 16px;
overflow: hidden;
box-shadow: var(--shadow);
transition: all 0.3s;
}
.blog-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.blog-card img { width: 100%; height: 200px; object-fit: cover; }
.blog-card-body { padding: 22px; }
.blog-meta {
display: flex;
gap: 14px;
font-size: 0.78rem;
color: var(--muted);
margin-bottom: 10px;
text-transform: uppercase;
letter-spacing: 1px;
}
.blog-meta .category { color: var(--accent); font-weight: 600; }
.blog-card-body h3 { margin-bottom: 10px; font-size: 1.2rem; }
.blog-card-body p { font-size: 0.9rem; margin-bottom: 14px; }
.blog-card-body a { font-weight: 600; }
/* ========== FAQ ========== */
.faq { background: var(--white); }
.faq-list { max-width: 820px; margin: 0 auto; }
.faq-item {
background: var(--white);
border: 2px solid var(--warm);
border-radius: 12px;
margin-bottom: 12px;
overflow: hidden;
transition: all 0.2s;
}
.faq-item.open { border-color: var(--accent); }
.faq-question {
padding: 18px 22px;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: 600;
color: var(--primary-dark);
background: var(--cream);
}
.faq-item.open .faq-question { background: var(--white); }
.faq-question span.toggle {
font-size: 1.4rem;
color: var(--accent);
transition: transform 0.2s;
}
.faq-item.open .toggle { transform: rotate(45deg); }
.faq-answer {
padding: 0 22px;
max-height: 0;
overflow: hidden;
transition: all 0.3s;
}
.faq-item.open .faq-answer { padding: 0 22px 20px; max-height: 400px; }
.faq-answer p { margin: 0; color: var(--muted); }
/* ========== DONATE / CTA ========== */
.donate-cta {
background: linear-gradient(135deg, var(--secondary), var(--primary));
color: var(--white);
padding: 70px 0;
text-align: center;
}
.donate-cta h2 { color: var(--white); font-size: 2.5rem; margin-bottom: 14px; }
.donate-cta p { color: rgba(255,255,255,0.92); max-width: 640px; margin: 0 auto 28px; font-size: 1.1rem; }
.donate-buttons { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.donate-cta .btn-primary { background: var(--accent); }
.donate-cta .btn-outline { border-color: var(--white); color: var(--white); }
/* ========== NEWSLETTER ========== */
.newsletter {
background: var(--warm);
padding: 50px 0;
}
.newsletter-inner {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 40px;
align-items: center;
}
.newsletter h2 { font-size: 1.8rem; margin-bottom: 8px; }
.newsletter p { margin: 0; }
.newsletter-form {
display: flex;
gap: 10px;
}
.newsletter-form input {
flex: 1;
padding: 14px 18px;
border: 2px solid transparent;
border-radius: 30px;
font-family: inherit;
font-size: 0.95rem;
}
.newsletter-form input:focus { outline: none; border-color: var(--accent); }
/* ========== FOOTER ========== */
footer.main-footer {
background: var(--primary-dark);
color: var(--cream);
padding: 70px 0 0;
}
.footer-grid {
display: grid;
grid-template-columns: 1.4fr 1fr 1fr 1fr;
gap: 40px;
margin-bottom: 50px;
}
.footer-col h4 {
color: var(--white);
font-size: 1.1rem;
margin-bottom: 18px;
position: relative;
padding-bottom: 10px;
font-family: 'Poppins', sans-serif;
font-weight: 600;
}
.footer-col h4:after {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 40px;
height: 2px;
background: var(--accent);
}
.footer-col ul { list-style: none; }
.footer-col li { margin-bottom: 10px; }
.footer-col a { color: rgba(250,243,224,0.75); font-size: 0.92rem; }
.footer-col a:hover { color: var(--warm); }
.footer-about p { color: rgba(250,243,224,0.75); font-size: 0.92rem; margin: 14px 0 18px; }
.footer-contact div {
display: flex;
gap: 10px;
align-items: flex-start;
margin-bottom: 12px;
color: rgba(250,243,224,0.75);
font-size: 0.9rem;
}
.footer-contact div span.icon { color: var(--accent); flex-shrink: 0; }
.footer-social { display: flex; gap: 10px; margin-top: 14px; }
.footer-social a {
width: 38px;
height: 38px;
background: rgba(255,255,255,0.1);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: var(--cream);
transition: all 0.2s;
}
.footer-social a:hover { background: var(--accent); color: var(--white); transform: translateY(-2px); }
.footer-bottom {
border-top: 1px solid rgba(250,243,224,0.15);
padding: 24px 0;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 14px;
font-size: 0.85rem;
color: rgba(250,243,224,0.7);
}
.footer-bottom-links { display: flex; gap: 18px; }
.footer-bottom-links a { color: rgba(250,243,224,0.7); }
.footer-bottom-links a:hover { color: var(--warm); }
/* ========== RESPONSIVE ========== */
@media (max-width: 992px) {
.hero .container { grid-template-columns: 1fr; }
.hero-image-card { max-width: 460px; margin: 0 auto; }
.services-grid { grid-template-columns: repeat(2, 1fr); }
.search-filters { grid-template-columns: repeat(2, 1fr); }
.pets-grid, .breeds-grid, .testimonials-grid, .blog-grid { grid-template-columns: repeat(2, 1fr); }
.layout-with-sidebar { grid-template-columns: 1fr; }
aside.sidebar { position: static; }
.behavior-content { grid-template-columns: 1fr; }
.footer-grid { grid-template-columns: repeat(2, 1fr); }
.newsletter-inner { grid-template-columns: 1fr; }
.emergency-banner { grid-template-columns: 1fr; text-align: center; }
h1 { font-size: 2.4rem; }
.hero h1 { font-size: 2.6rem; }
}
@media (max-width: 640px) {
.services-grid, .pets-grid, .breeds-grid, .testimonials-grid, .blog-grid { grid-template-columns: 1fr; }
.search-filters { grid-template-columns: 1fr; }
.footer-grid { grid-template-columns: 1fr; }
nav.main-nav ul { flex-wrap: wrap; justify-content: center; gap: 4px; }
nav.main-nav a { padding: 8px 10px; font-size: 0.85rem; }
.header-inner { flex-direction: column; gap: 14px; }
.topbar .container { justify-content: center; }
.hero { padding: 60px 0 50px; }
section { padding: 50px 0; }
h2 { font-size: 1.7rem; }
}
</style>
</head>
<body>
<!-- TOP BAR -->
<div class="topbar">
<div class="container">
<div class="topbar-info">
<span><i>📞</i> (555) 273-PAWS</span>
<span><i>✉</i> hello@pawhaven.org</span>
<span><i>📍</i> 284 Maple Lane, Brookfield</span>
</div>
<div class="topbar-social">
<a href="#" aria-label="Facebook">f</a>
<a href="#" aria-label="Instagram">ig</a>
<a href="#" aria-label="Twitter">tw</a>
<a href="#" aria-label="YouTube">yt</a>
</div>
</div>
</div>
<!-- HEADER -->
<header class="main-header">
<div class="header-inner">
<div class="logo">
<img src="https://picsum.photos/120/120?random=50" alt="PawHaven Logo">
<div class="logo-text">
<h3>PawHaven</h3>
<small>Where every paw finds a home</small>
</div>
</div>
<nav class="main-nav">
<ul>
<li><a href="#services">Services</a></li>
<li><a href="#adopt">Adopt a Pet</a></li>
<li><a href="#guides">Breed Guides</a></li>
<li><a href="#behavior">Behavior Help</a></li>
<li><a href="#blog">Blog</a></li>
<li><a href="#faq">Resources</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#donate" class="cta-nav">Donate</a></li>
</ul>
</nav>
</div>
</header>
<!-- HERO -->
<section class="hero">
<div class="container">
<div>
<h1>Compassionate care for every <span>wag, purr, and chirp</span></h1>
<p class="lede">From first vaccinations to lifelong companionship, PawHaven connects families with the resources, expertise, and second chances every animal deserves. Explore adoptable pets, book expert training, and access trusted veterinary guidance — all in one place.</p>
<div class="hero-buttons">
<a href="#adopt" class="btn btn-primary">Find Your Match</a>
<a href="#services" class="btn btn-outline">Explore Services</a>
</div>
<div class="hero-stats">
<div class="stat"><strong>2,400+</strong><span>Pets Adopted</span></div>
<div class="stat"><strong>15</strong><span>Years of Care</span></div>
<div class="stat"><strong>98%</strong><span>Happy Tails</span></div>
</div>
</div>
<div>
<div class="hero-image-card">
<img src="https://picsum.photos/600/500?random=22" alt="Happy adopted dog with family">
<div style="text-align:center;"><span class="hero-card-tag">🐾 Meet Biscuit — Adopted Today!</span></div>
</div>
</div>
</div>
</section>
<!-- SERVICES -->
<section id="services" class="services">
<div class="container">
<div class="section-head">
<span class="eyebrow">What We Offer</span>
<h2>Complete care, under one roof</h2>
<p>Whether you're welcoming a new companion or caring for a longtime family member, our network of professionals and partners is here to support every stage of your pet's journey.</p>
</div>
<div class="services-grid">
<div class="service-card">
<div class="service-icon">🏥</div>
<h3>Veterinary Care</h3>
<p>Wellness exams, vaccinations, dental cleanings, and surgical services delivered by our partner clinics across the region.</p>
<a href="#" class="more">Schedule Vet Visit →</a>
</div>
<div class="service-card">
<div class="service-icon">🎓</div>
<h3>Training Classes</h3>
<p>Positive-reinforcement group classes and private sessions covering obedience, puppy socialization, and advanced skills.</p>
<a href="#" class="more">Book Training →</a>
</div>
<div class="service-card">
<div class="service-icon">🛁</div>
<h3>Grooming & Spa</h3>
<p>Full-service bathing, breed-specific styling, nail trimming, and skin treatments by certified gentle groomers.</p>
<a href="#" class="more">Book Grooming →</a>
</div>
<div class="service-card">
<div class="service-icon">🏠</div>
<h3>Boarding & Daycare</h3>
<p>Safe, enrichment-focused boarding with supervised playgroups, individual attention, and live webcams for peace of mind.</p>
<a href="#" class="more">Reserve a Stay →</a>
</div>
</div>
</div>
</section>
<!-- ADOPTION SEARCH -->
<section id="adopt" class="adoption-search">
<div class="container">
<div class="section-head">
<span class="eyebrow">Adoption Search</span>
<h2>Find your forever friend</h2>
<p>Browse adoptable dogs, cats, rabbits, and small companions from local shelters and rescue partners. Use the filters below to narrow your search, then schedule a meet-and-greet at our facility.</p>
</div>
<div class="search-wrapper">
<div class="search-filters">
<div class="filter-group">
<label for="species">Species</label>
<select id="species">
<option value="all">All Animals</option>
<option value="dog">Dogs</option>
<option value="cat">Cats</option>
<option value="rabbit">Rabbits</option>
<option value="small">Small Pets</option>
</select>
</div>
<div class="filter-group">
<label for="age">Age</label>
<select id="age">
<option value="any">Any Age</option>
<option value="baby">Under 6 months</option>
<option value="young">6 mo – 2 yrs</option>
<option value="adult">2 – 7 yrs</option>
<option value="senior">8+ years</option>
</select>
</div>
<div class="filter-group">
<label for="size">Size</label>
<select id="size">
<option value="any">Any Size</option>
<option value="small">Small (under 25 lbs)</option>
<option value="medium">Medium (25–55 lbs)</option>
<option value="large">Large (55+ lbs)</option>
</select>
</div>
<div class="filter-group">
<label for="needs">Special Needs</label>
<select id="needs">
<option value="any">No Preference</option>
<option value="kids">Good with Kids</option>
<option value="dogs">Good with Dogs</option>
<option value="cats">Good with Cats</option>
<option value="low-energy">Low Energy</option>
</select>
</div>
<button class="search-btn" onclick="searchPets()">🔍 Search</button>
</div>
<div class="pets-grid" id="petsGrid">
<div class="pet-card" data-species="dog" data-age="young" data-size="medium" data-needs="kids">
<div class="pet-card-img">
<img src="https://picsum.photos/400/300?random=31" alt="Biscuit the dog">
<span class="pet-badge new">New Arrival</span>
</div>
<div class="pet-card-body">
<h3>Biscuit</h3>
<div class="pet-meta">
<span>🐕 Mixed Breed</span>
<span>📅 1 yr</span>
<span>⚖ 42 lbs</span>
<span>♂ Male</span>
</div>
<p>A playful, affectionate pup who loves squeaky toys, long walks, and curling up at your feet. Crate-trained and learning basic commands fast.</p>
<div class="pet-card-footer">
<a href="#">Meet Biscuit →</a>
<small style="color:var(--accent); font-weight:600;">Ready Now</small>
</div>
</div>
</div>
<div class="pet-card" data-species="cat" data-age="adult" data-size="small" data-needs="low-energy">
<div class="pet-card-img">
<img src="https://picsum.photos/400/300?random=32" alt="Luna the cat">
<span class="pet-badge">Featured</span>
</div>
<div class="pet-card-body">
<h3>Luna</h3>
<div class="pet-meta">
<span>🐈 Domestic Shorthair</span>
<span>📅 4 yrs</span>
<span>♀ Female</span>
</div>
<p>A gentle, quiet companion who thrives in calm households. Loves sunbeams, chin scratches, and watching birds from a windowsill.</p>
<div class="pet-card-footer">
<a href="#">Meet Luna →</a>
<small style="color:var(--accent); font-weight:600;">Ready Now</small>
</div>
</div>
</div>
<div class="pet-card" data-species="dog" data-age="senior" data-size="large" data-needs="dogs">
<div class="pet-card-img">
<img src="https://picsum.photos/400/300?random=33" alt="Maverick the dog">
<span class="pet-badge urgent">Urgent — Long Stay</span>
</div>
<div class="pet-card-body">
<h3>Maverick</h3>
<div class="pet-meta">
<span>🐕 Labrador Retriever</span>
<span>📅 9 yrs</span>
<span>⚖ 78 lbs</span>
<span>♂ Male</span>
</div>
<p>A wise, gentle senior looking for a quiet retirement home. Loves slow walks, soft beds, and gentle affection. House-trained and great with other dogs.</p>
<div class="pet-card-footer">
<a href="#">Meet Maverick →</a>
<small style="color:#d63031; font-weight:600;">300+ days in shelter</small>
</div>
</div>
</div>
<div class="pet-card" data-species="rabbit" data-age="young" data-size="small" data-needs="kids">
<div class="pet-card-img">
<img src="https://picsum.photos/400/300?random=34" alt="Hopper the rabbit">
<span class="pet-badge new">New Arrival</span>
</div>
<div class="pet-card-body">
<h3>Hopper</h3>
<div class="pet-meta">
<span>🐇 Holland Lop</span>
<span>📅 8 mo</span>
<span>♂ Male</span>
</div>
<p>A curious, social bunny who enjoys exploring tunnels, fresh herbs, and gentle handling from respectful children.</p>
<div class="pet-card-footer">
<a href="#">Meet Hopper →</a>
<small style="color:var(--accent); font-weight:600;">Bonded pairs available</small>
</div>
</div>
</div>
<div class="pet-card" data-species="cat" data-age="baby" data-size="small" data-needs="cats">
<div class="pet-card-img">
<img src="https://picsum.photos/400/300?random=35" alt="Mittens the kitten">
<span class="pet-badge">Featured</span>
</div>
<div class="pet-card-body">
<h3>Mittens</h3>
<div class="pet-meta">
<span>🐈 Tabby</span>
<span>📅 4 mo</span>
<span>♀ Female</span>
</div>
<p>Part of an adorable bonded pair, Mittens is bold, playful, and purrs the moment you pick her up. Best adopted with her sister, Socks.</p>
<div class="pet-card-footer">
<a href="#">Meet Mittens →</a>
<small style="color:var(--accent); font-weight:600;">Bonded pair</small>
</div>
</div>
</div>
<div class="pet-card" data-species="dog" data-age="adult" data-size="small" data-needs="cats">
<div class="pet-card-img">
<img src="https://picsum.photos/400/300?random=36" alt="Pepper the dog">
<span class="pet-badge">Featured</span>
</div>
<div class="pet-card-body">
<h3>Pepper</h3>
<div class="pet-meta">
<span>🐕 Terrier Mix</span>
<span>📅 3 yrs</span>
<span>⚖ 18 lbs</span>
<span>♀ Female</span>
</div>
<p>A smart, sassy little lady who has perfected the art of cuddling and learned to live harmoniously with cats in her foster home.</p>
<div class="pet-card-footer">
<a href="#">Meet Pepper →</a>
<small style="color:var(--accent); font-weight:600;">Ready Now</small>
</div>
</div>
</div>
</div>
<div id="noResults" style="display:none; text-align:center; padding:30px; color:var(--muted);">
<p style="font-size:1.1rem;">🐾 No pets match your filters right now — try widening your search or check back tomorrow as new arrivals come in daily!</p>
</div>
<div style="text-align:center; margin-top:30px;">
<a href="#" class="btn btn-primary">View All 87 Adoptable Pets</a>
</div>
</div>
</div>
</section>
<!-- MAIN CONTENT WITH SIDEBAR -->
<section style="background: var(--light-bg);">
<div class="container">
<div class="layout-with-sidebar">
<main>
<!-- Emergency -->
<div class="emergency-banner">
<div class="icon">🚨</div>
<div>
<h3>Pet Emergency? Don't wait.</h3>
<p>Signs of distress, toxin ingestion, or trauma require immediate care. Save our 24/7 emergency line and ASPCA Poison Control contacts now.</p>
</div>
<a href="#contact" class="btn">Call Now</a>
</div>
<article class="info-block">
<h3>Emergency First-Aid Checklist</h3>
<p>Before you rush to the vet, having these steps ready can stabilize your pet and improve outcomes. Bookmark this list and share it with everyone in your household — including pet sitters.</p>
<ul>
<li><strong>Bleeding:</strong> Apply firm pressure with a clean cloth; elevate the area if possible. Do not remove embedded objects.</li>
<li><strong>Choking:</strong> Look inside the mouth carefully. For dogs, perform a modified Heimlich; for cats, gently sweep with a finger only if safe.</li>
<li><strong>Toxin Ingestion:</strong> Call ASPCA Poison Control (888-426-4435) <em>before</em> inducing vomiting — many substances cause more damage coming back up.</li>
<li><strong>Heatstroke:</strong> Move to shade, wet the belly and paws with cool (not cold) water, and transport to the vet immediately.</li>
<li><strong>Seizures:</strong> Clear the area of hazards, do not restrain, time the episode, and stay calm. Call the vet once it ends.</li>
<li><strong>Always call ahead</strong> to your emergency clinic so the team can prepare for your arrival.</li>
</ul>
</article>
<article class="info-block" style="border-left-color: var(--secondary);">
<h3>Behavioral Warning Signs to Watch For</h3>
<p>Sudden changes in behavior often signal pain, illness, or stress. Knowing what's normal for your individual animal — and acting quickly when patterns shift — is one of the most important things a guardian can do. Below are the changes our behavior team flags most frequently during consultations.</p>
<ul>
<li><strong>Appetite shifts:</strong> Eating significantly more or less, or difficulty chewing, can indicate dental disease, GI issues, or metabolic conditions.</li>
<li><strong>Litter box changes:</strong> Cats that suddenly eliminate outside the box may be marking territory, stressed by a household change, or developing urinary tract issues.</li>
<li><strong>Aggression or fear:</strong> A normally social animal that growls, hides, or snaps is almost always communicating discomfort, not "being naughty."</li>
<li><strong>Excessive vocalization:</strong> Especially in older pets, increased vocalizing at night may indicate cognitive decline or sensory loss.</li>
<li><strong>Compulsive behaviors:</strong> Tail chasing, paw licking, or pacing beyond normal exercise needs warrants a behavior and medical evaluation.</li>
</ul>
</article>
<article class="info-block" style="border-left-color: var(--primary);">
<h3>Understanding Your Pet's Nutrition Requirements</h3>
<p>Quality nutrition is the single biggest factor in your companion's long-term health, but "premium" marketing claims can be misleading. Our veterinary nutritionists recommend focusing on a few evidence-based markers rather than brand loyalty, and on tailoring intake to your animal's life stage, body condition, and activity level.</p>
<ul>
<li><strong>Life stage matters:</strong> Puppies and kittens need calorie-dense food with precise calcium-phosphorus ratios; seniors benefit from joint-supporting omega-3s and lower-calorie formulas.</li>
<li><strong>AAFCO statement:</strong> Look for packaging that says the food is "complete and balanced" for your pet's specific life stage, backed by AAFCO feeding trials.</li>
<li><strong>Protein quality:</strong> Named meat sources (chicken, salmon) listed first indicate higher digestibility than generic "meat by-products."</li>
<li><strong>Portion control:</strong> Use a measuring cup. Free-feeding is the leading cause of pet obesity, which shortens lifespan by up to 2.5 years.</li>
<li><strong>Consult your vet</strong> before switching diets, especially for pets with kidney disease, allergies, or chronic conditions.</li>
</ul>
</article>
</main>
<!-- SIDEBAR -->
<aside class="sidebar">
<div class="sidebar-widget">
<h3>🐾 Community Photos</h3>
<div class="community-photos">
<img src="https://picsum.photos/120/120?random=41" alt="Pet photo">
<img src="https://picsum.photos/120/120?random=42" alt="Pet photo">
<img src="https://picsum.photos/120/120?random=43" alt="Pet photo">
<img src="https://picsum.photos/120/120?random=44" alt="Pet photo">
<img src="https://picsum.photos/120/120?random=45" alt="Pet photo">
<img src="https://picsum.photos/120/120?random=46" alt="Pet photo">
</div>
<p class="widget-tag">Share yours with #PawHavenFamily</p>
</div>
<div class="sidebar-widget">
<h3>📅 Upcoming Events</h3>
<div class="event-item">
<div class="event-date"><strong>12</strong><small>OCT</small></div>
<div class="event-info">
<h4>Low-Cost Vaccine Clinic</h4>
<p>10am–2pm at Brookfield Park</p>
</div>
</div>
<div class="event-item">
<div class="event-date"><strong>19</strong><small>OCT</small></div>
<div class="event-info">
<h4>Adoption Day — Meet 30+ Pets</h4>
<p>11am–4pm, Main Facility</p>
</div>
</div>
<div class="event-item">
<div class="event-date"><strong>26</strong><small>OCT</small></div>
<div class="event-info">
<h4>Puppy Socialization Workshop</h4>
<p>$15 • Pre-registration required</p>
</div>
</div>
<div class="event-item">
<div class="event-date"><strong>02</strong><small>NOV</small></div>
<div class="event-info">
<h4>Senior Pet Care Seminar</h4>
<p>Free • Online + In-person</p>
</div>
</div>
</div>
<div class="sidebar-widget">
<h3>🎓 Quick Training Tips</h3>
<div class="training-tip">
<h4>Recall That Actually Works</h4>
<p>Practice "come" on a long line in a low-distraction area first. Reward with high-value treats the instant your dog turns toward you.</p>
</div>
<div class="training-tip">
<h4>Settle on a Mat</h4>
<p>Teach a "go to your place" cue for vet visits, restaurants, and busy gatherings. Start with 30-second sessions and build up.</p>
</div>
<div class="training-tip">
<h4>Leave It Saves Lives</h4>
<p>Trade up, never chase. Offer something better than what they picked up, then reward the swap generously.</p>
</div>
</div>
<div class="sidebar-widget" style="background: linear-gradient(135deg, var(--accent), var(--primary)); color: var(--white);">
<h3 style="color:var(--white); border-bottom-color:rgba(255,255,255,0.3);">Need Help Right Now?</h3>
<p style="color:rgba(255,255,255,0.95); font-size:0.9rem;">Our behavior helpline is open weekdays 9am–6pm. Free 15-minute consultations.</p>
<a href="#" class="btn" style="background:var(--white); color:var(--accent); display:inline-block; margin-top:10px;">Call Behavior Line</a>
</div>
</aside>
</div>
</div>
</section>
<!-- BREED GUIDES -->
<section id="guides" class="breed-guides">
<div class="container">
<div class="section-head">
<span class="eyebrow">Breed Guides</span>
<h2>Choosing the right companion</h2>
<p>Every breed carries unique traits — energy levels, grooming needs, trainability, and common health considerations. Our expert-reviewed guides help you find a match that fits your home, lifestyle, and the next 12–15 years of adventures ahead.</p>
</div>
<div class="breeds-grid">
<div class="breed-card">
<img src="https://picsum.photos/400/250?random=61" alt="Golden Retriever">
<div class="breed-card-body">
<h3>Golden Retriever</h3>
<div class="breed-tags">
<span class="breed-tag">Family-Friendly</span>
<span class="breed-tag">High Energy</span>
<span class="breed-tag">Heavy Shedder</span>
</div>
<p>Affectionate, eager to please, and excellent with children. Goldens thrive on daily exercise, training, and lots of social interaction. Prone to hip dysplasia and certain cancers — regular vet screening is essential.</p>
<a href="#">Read Full Guide →</a>
</div>
</div>
<div class="breed-card">
<img src="https://picsum.photos/400/250?random=62" alt="Maine Coon Cat">
<div class="breed-card-body">
<h3>Maine Coon</h3>
<div class="breed-tags">
<span class="breed-tag">Gentle Giant</span>
<span class="breed-tag">Moderate Energy</span>
<span class="breed-tag">Long Coat</span>
</div>
<p>Often called "the dog of the cat world," Maine Coons are social, trainable, and surprisingly vocal. They need weekly brushing and benefit from tall cat trees and puzzle feeders to stay stimulated.</p>
<a href="#">Read Full Guide →</a>
</div>
</div>
<div class="breed-card">
<img src="https://picsum.photos/400/250?random=63" alt="French Bulldog">
<div class="breed-card-body">
<h3>French Bulldog</h3>
<div class="breed-tags">
<span class="breed-tag">Apartment-Sized</span>
<span class="breed-tag">Low Energy</span>
<span class="breed-tag">Brachycephalic</span>
</div>
<p>Adaptable, charming, and perfectly suited to urban living. Be aware: their flat faces make them sensitive to heat, prone to breathing issues, and often require C-section births — important ethical sourcing considerations.</p>
<a href="#">Read Full Guide →</a>
</div>
</div>
</div>
<div style="text-align:center; margin-top:40px;">
<a href="#" class="btn btn-secondary">Browse All 84 Breed Guides</a>
</div>
</div>
</section>
<!-- BEHAVIOR HELP -->
<section id="behavior" class="behavior-help">
<div class="container">
<div class="behavior-content">
<div>
<h2>Real help for real behavior challenges</h2>
<p>From separation anxiety to leash reactivity, our certified animal behavior team uses evidence-based, force-free methods to help you and your companion communicate better. We never use shock, prong, or dominance-based training — because modern behavioral science has moved beyond those harmful practices, and so have we.</p>
<ul>
<li>
<strong>Separation Anxiety</strong>
Gradual desensitization protocols, environmental enrichment, and — when warranted — coordination with your vet on anti-anxiety support.
</li>
<li>
<strong>Leash Reactivity</strong>
Counter-conditioning, "engage-disengage" games, and equipment guidance so walks become enjoyable again.
</li>
<li>
<strong>Resource Guarding</strong>
Cooperative care training, trade-up games, and management strategies that build trust around food, toys, and space.
</li>
<li>
<strong>Multi-Pet Households</strong>
Slow introductions, scent-swapping protocols, and structured parallel routines to ease tension between cats and dogs.
</li>
</ul>
<a href="#" class="btn btn-primary">Book a Behavior Consultation</a>
</div>
<div>
<img src="https://picsum.photos/600/500?random=71" alt="Trainer working with dog">
</div>
</div>
</div>
</section>
<!-- TESTIMONIALS -->
<section class="testimonials">
<div class="container">
<div class="section-head">
<span class="eyebrow">Happy Tails</span>
<h2>Stories from our community</h2>
<p>Behind every adoption, training milestone, and recovered patient is a story of patience, love, and partnership. Here are a few from the families who make our work meaningful.</p>
</div>
<div class="testimonials-grid">
<div class="testimonial-card">
<div class="testimonial-rating">★★★★★</div>
<blockquote>"We adopted Maverick after 11 months in the shelter. The PawHaven team sent us home with a complete behavior plan, follow-up calls, and a free training package. He's now sleeping on our son's bed every night."</blockquote>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/100?img=12" alt="Sarah">
<div>
<h4>Sarah & Daniel R.</h4>
<p>Adopted Maverick • 2024</p>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="testimonial-rating">★★★★★</div>
<blockquote>"The behavior helpline saved my cat's life. Luna was peeing outside the box and I was ready to rehome her. The consultant identified a urinary infection and gave me the patience to address it properly."</blockquote>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/100?img=47" alt="Maria">
<div>
<h4>Maria G.</h4>
<p>Behavior Helpline Client</p>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="testimonial-rating">★★★★★</div>
<blockquote>"Our puppy class was the best $150 we've ever spent. The trainers taught us so much, and our golden doodle, Cooper, now walks politely past other dogs. We graduated last month — highly recommend!"</blockquote>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/100?img=33" alt="James">
<div>
<h4>James & Priya K.</h4>
<p>Puppy Class Graduates</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- BLOG PREVIEW -->
<section id="blog" class="blog-preview">
<div class="container">
<div class="section-head">
<span class="eyebrow">From the Blog</span>
<h2>Resources, guides & stories</h2>
<p>Our team of veterinarians, trainers, and behavior consultants share practical advice, the latest research, and heartwarming adoption stories every week.</p>
</div>
<div class="blog-grid">
<div class="blog-card">
<img src="https://picsum.photos/400/250?random=81" alt="Enrichment activities">
<div class="blog-card-body">
<div class="blog-meta">
<span class="category">Enrichment</span>
<span>Oct 3, 2024</span>
<span>8 min read</span>
</div>
<h3>15 Indoor Enrichment Ideas for Cold-Weather Days</h3>
<p>Stuck inside with a bored pup? From snuffle mats to scent games and DIY puzzle feeders, here are research-backed ways to keep your dog's brain busy when the weather keeps walks short.</p>
<a href="#">Read Article →</a>
</div>
</div>
<div class="blog-card">
<img src="https://picsum.photos/400/250?random=82" alt="Senior dog care">
<div class="blog-card-body">
<div class="blog-meta">
<span class="category">Senior Care</span>
<span>Sep 27, 2024</span>
<span>12 min read</span>
</div>
<h3>Recognizing Pain in Senior Pets: The Subtle Signs Most Owners Miss</h3>
<p>Cats especially are masters at hiding discomfort. Our geriatric care vet walks through the behavioral cues — from sleeping posture to litter box habits — that signal it's time for a checkup.</p>
<a href="#">Read Article →</a>
</div>
</div>
<div class="blog-card">
<img src="https://picsum.photos/400/250?random=83" alt="Fostering guide">
<div class="blog-card-body">
<div class="blog-meta">
<span class="category">Rescue</span>
<span>Sep 19, 2024</span>
<span>6 min read</span>
</div>
<h3>Becoming a Foster: A Complete Guide for First-Timers</h3>
<p>Fostering saves lives — and you don't need a perfect home, just patience and a willingness to learn. Here's what to expect in your first two weeks, what to buy, and how to handle goodbyes.</p>
<a href="#">Read Article →</a>
</div>
</div>
</div>
<div style="text-align:center; margin-top:40px;">
<a href="#" class="btn btn-secondary">Visit the Full Blog</a>
</div>
</div>
</section>
<!-- FAQ -->
<section id="faq" class="faq">
<div class="container">
<div class="section-head">
<span class="eyebrow">Common Questions</span>
<h2>Frequently asked questions</h2>
<p>Quick answers to the questions our team hears most often. Don't see yours? Our staff is just a phone call away.</p>
</div>
<div class="faq-list">
<div class="faq-item open">
<div class="faq-question" onclick="toggleFaq(this)">
What is included in the adoption fee?
<span class="toggle">+</span>
</div>
<div class="faq-answer">
<p>Every adoption fee covers spay/neuter surgery, age-appropriate vaccinations, microchip registration, deworming, flea treatment, and a free wellness exam at one of our partner clinics within 14 days. For dogs, it also includes a basic obedience starter session. Fees range from $95 (small pets) to $350 (adult dogs) and directly fund the medical care of incoming animals.</p>
</div>
</div>
<div class="faq-item">
<div class="faq-question" onclick="toggleFaq(this)">
Do you offer financial assistance for veterinary care?
<span class="toggle">+</span>
</div>
<div class="faq-answer">
<p>Yes. Our Hope Fund provides subsidized care for qualifying low-income families, including emergency stabilization, chronic disease management, and preventive services. Applications are reviewed within 48 hours, and we partner with several local clinics willing to offer matching discounts. We never want financial barriers to mean suffering.</p>
</div>
</div>
<div class="faq-item">
<div class="faq-question" onclick="toggleFaq(this)">
How long does the adoption process take from application to bringing a pet home?
<span class="toggle">+</span>
</div>
<div class="faq-answer">
<p>Most adopters complete the process in 3–7 days. After submitting an application, our team conducts a brief phone interview (20 minutes), schedules a meet-and-greet at the shelter, and — if it's a good match — arranges a same- or next-day home visit for dogs. Cats and small pets can often go home the same day as the meet-and-greet.</p>
</div>
</div>
<div class="faq-item">
<div class="faq-question" onclick="toggleFaq(this)">
Are your training methods force-free?
<span class="toggle">+</span>
</div>
<div class="faq-answer">
<p>Absolutely. Every trainer on our team is certified in positive reinforcement methodology, and we are committed to the force-free standards set by the Pet Professional Guild. We do not use shock, prong, choke, or electronic collars — period. Our methods are backed by the latest behavioral science and prioritize your pet's emotional wellbeing alongside your training goals.</p>
</div>
</div>
<div class="faq-item">
<div class="faq-question" onclick="toggleFaq(this)">
Can I volunteer or foster if I work full-time?
<span class="toggle">+</span>
</div>
<div class="faq-answer">
<p>Yes — we have flexible volunteer shifts including evenings and weekends, and our foster program includes short-term and weekend-only options for animals that need a break from the shelter. Many of our busiest fosters are working professionals. We'll work with your schedule to find a meaningful role.</p>
</div>
</div>
<div class="faq-item">
<div class="faq-question" onclick="toggleFaq(this)">
What happens if my adopted pet doesn't work out?
<span class="toggle">+</span>
</div>
<div class="faq-answer">
<p>Every adoption includes a lifetime return policy. If circumstances change — whether it's an allergy, a move, or a behavioral issue you need help with — you can return your pet to us at any time, no questions asked. We'd rather bring them back into our care than see them passed between unsuitable homes. We'll also provide free behavior support to help troubleshoot issues first.</p>
</div>
</div>
</div>
</div>
</section>
<!-- DONATE CTA -->
<section id="donate" class="donate-cta">
<div class="container">
<h2>Help us write the next happy tail</h2>
<p>Every dollar you give directly funds medical care, shelter operations, and behavior programs for animals who would otherwise have nowhere to turn. Your generosity transforms lives — one wag at a time.</p>
<div class="donate-buttons">
<a href="#" class="btn btn-primary">Donate Now</a>
<a href="#" class="btn btn-outline">Become a Monthly Supporter</a>
<a href="#" class="btn btn-outline">Other Ways to Give</a>
</div>
<p style="margin-top:30px; font-size:0.9rem; opacity:0.85;">PawHaven is a registered 501(c)(3) nonprofit. EIN: 88-1234567. All donations are tax-deductible to the fullest extent of the law.</p>
</div>
</section>
<!-- NEWSLETTER -->
<section class="newsletter">
<div class="container">
<div class="newsletter-inner">
<div>
<h2>Get our weekly newsletter</h2>
<p>Adoption updates, training tips, vet Q&As, and event invites — delivered every Thursday. Unsubscribe anytime.</p>
</div>
<form class="newsletter-form" onsubmit="event.preventDefault(); this.querySelector('button').textContent='✓ Subscribed!';">
<input type="email" placeholder="Enter your email address" required>
<button type="submit" class="btn btn-primary">Subscribe</button>
</form>
</div>
</div>
</section>
<!-- FOOTER -->
<footer id="contact" class="main-footer">
<div class="container">
<div class="footer-grid">
<div class="footer-col footer-about">
<div class="logo" style="margin-bottom:6px;">
<img src="https://picsum.photos/120/120?random=50" alt="PawHaven" style="width:48px; height:48px; border-color:var(--accent);">
<div class="logo-text">
<h3 style="color:var(--warm); font-size:1.4rem;">PawHaven</h3>
</div>
</div>
<p>A community-funded nonprofit dedicated to rescue, rehabilitation, and the lifelong wellbeing of companion animals. Serving the greater Brookfield region since 2009.</p>
<div class="footer-social">
<a href="#" aria-label="Facebook">f</a>
<a href="#" aria-label="Instagram">ig</a>
<a href="#" aria-label="Twitter">tw</a>
<a href="#" aria-label="TikTok">tt</a>
<a href="#" aria-label="YouTube">yt</a>
</div>
</div>
<div class="footer-col">
<h4>Get Involved</h4>
<ul>
<li><a href="#">Adopt a Pet</a></li>
<li><a href="#">Foster an Animal</a></li>
<li><a href="#">Volunteer</a></li>
<li><a href="#">Donate</a></li>
<li><a href="#">Corporate Partners</a></li>
<li><a href="#">Wish List</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Resources</h4>
<ul>
<li><a href="#">Veterinary Care</a></li>
<li><a href="#">Training Classes</a></li>
<li><a href="#">Behavior Help</a></li>
<li><a href="#">Breed Guides</a></li>
<li><a href="#">Pet Loss Support</a></li>
<li><a href="#">Blog & Articles</a></li>
</ul>
</div>
<div class="footer-col footer-contact">
<h4>Visit & Contact</h4>
<div><span class="icon">📍</span><span>284 Maple Lane<br>Brookfield, NY 10502</span></div>
<div><span class="icon">📞</span><span>(555) 273-PAWS<br>24/7 Emergency Line</span></div>
<div><span class="icon">✉</span><span>hello@pawhaven.org<br>volunteer@pawhaven.org</span></div>
<div><span class="icon">🕐</span><span>Tue–Sun: 11am–7pm<br>Closed Mondays</span></div>
</div>
</div>
<div class="footer-bottom">
<p>© 2024 PawHaven Animal Rescue & Care Center. All rights reserved. Made with 🐾 in Brookfield.</p>
<div class="footer-bottom-links">
<a href="#">Privacy Policy</a>
<a href="#">Terms of Service</a>
<a href="#">Cookie Settings</a>
<a href="#">Accessibility</a>
</div>
</div>
</div>
</footer>
<script>
// FAQ Accordion
function toggleFaq(el) {
const item = el.parentElement;
item.classList.toggle('open');
}
// Adoption Search Filter
function searchPets() {
const species = document.getElementById('species').value;
const age = document.getElementById('age').value;
const size = document.getElementById('size').value;
const needs = document.getElementById('needs').value;
const cards = document.querySelectorAll('.pet-card');
let visibleCount = 0;
cards.forEach(card => {
const matchSpecies = species === 'all' || card.dataset.species === species;
const matchAge = age === 'any' || card.dataset.age === age;
const matchSize = size === 'any' || card.dataset.size === size;
const matchNeeds = needs === 'any' || card.dataset.needs === needs;
if (matchSpecies && matchAge && matchSize && matchNeeds) {
card.style.display = '';
visibleCount++;
} else {
card.style.display = 'none';
}
});
document.getElementById('noResults').style.display = visibleCount === 0 ? 'block' : 'none';
}
</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:42:02.418Z",
"url": "https://benchmark.aimac.invalid/7317e71ced2c2d9efe6623ae6d5097ee1a5a818c5715446b8a5ebec4a6466f5c.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-allowed-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attributes are used correctly for the defined role"
}
],
"none": [
{
"id": "aria-unsupported-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute is supported"
}
],
"impact": null,
"html": "<a href=\"#\" aria-label=\"Facebook\">f</a>",
"target": [
".topbar-social > a[aria-label=\"Facebook\"][href=\"#\"]"
]
}
]
},
{
"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=\"#\" aria-label=\"Facebook\">f</a>",
"target": [
".topbar-social > a[aria-label=\"Facebook\"][href=\"#\"]"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<a href=\"#\" aria-label=\"Facebook\">f</a>",
"target": [
".topbar-social > a[aria-label=\"Facebook\"][href=\"#\"]"
]
}
]
},
{
"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=\"#\" aria-label=\"Facebook\">f</a>",
"target": [
".topbar-social > a[aria-label=\"Facebook\"][href=\"#\"]"
]
}
]
},
{
"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=\"#\" aria-label=\"Facebook\">f</a>",
"target": [
".topbar-social > a[aria-label=\"Facebook\"][href=\"#\"]"
]
}
]
},
{
"id": "avoid-inline-spacing",
"impact": null,
"tags": [
"cat.structure",
"wcag21aa",
"wcag1412",
"EN-301-549",
"EN-9.1.4.12",
"ACT"
],
"description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
"help": "Inline text spacing must be adjustable with custom stylesheets",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "important-letter-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-word-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-line-height",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "line-height in the style attribute is not set to !important, or meets the minimum"
}
],
"none": [],
"impact": null,
"html": "<div style=\"text-align:center;\"><span class=\"hero-card-tag\">\ud83d\udc3e Meet Biscuit \u2014 Adopted Today!</span></div>",
"target": [
".hero-image-card > div"
]
}
]
},
{
"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 class=\"search-btn\" onclick=\"searchPets()\">\ud83d\udd0d Search</button>",
"target": [
".search-btn"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "internal-link-present",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Valid skip link found"
},
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h3>PawHaven</h3>",
"target": [
".header-inner > .logo > .logo-text > h3"
]
},
{
"html": "<h1>Compassionate care for every <span>wag, purr, and chirp</span></h1>",
"target": [
"h1"
]
},
{
"html": "<h2>Complete care, under one roof</h2>",
"target": [
"#services > .container > .section-head > h2"
]
},
{
"html": "<h3>Veterinary Care</h3>",
"target": [
".service-card:nth-child(1) > h3"
]
},
{
"html": "<h3>Training Classes</h3>",
"target": [
".service-card:nth-child(2) > h3"
]
},
{
"html": "<h3>Grooming & Spa</h3>",
"target": [
".service-card:nth-child(3) > h3"
]
},
{
"html": "<h3>Boarding & Daycare</h3>",
"target": [
".service-card:nth-child(4) > h3"
]
},
{
"html": "<h2>Find your forever friend</h2>",
"target": [
"#adopt > .container > .section-head > h2"
]
},
{
"html": "<h3>Biscuit</h3>",
"target": [
"div[data-size=\"medium\"] > .pet-card-body > h3"
]
},
{
"html": "<h3>Luna</h3>",
"target": [
"div[data-needs=\"low-energy\"] > .pet-card-body > h3"
]
},
{
"html": "<h3>Maverick</h3>",
"target": [
"div[data-age=\"senior\"] > .pet-card-body > h3"
]
},
{
"html": "<h3>Hopper</h3>",
"target": [
"div[data-species=\"rabbit\"] > .pet-card-body > h3"
]
},
{
"html": "<h3>Mittens</h3>",
"target": [
"div[data-age=\"baby\"] > .pet-card-body > h3"
]
},
{
"html": "<h3>Pepper</h3>",
"target": [
"div[data-age=\"adult\"][data-needs=\"cats\"][data-species=\"dog\"] > .pet-card-body > h3"
]
},
{
"html": "<h3>Pet Emergency? Don't wait.</h3>",
"target": [
".emergency-banner > div:nth-child(2) > h3"
]
},
{
"html": "<h3>Emergency First-Aid Checklist</h3>",
"target": [
"article:nth-child(2) > h3"
]
},
{
"html": "<h3>Behavioral Warning Signs to Watch For</h3>",
"target": [
"article:nth-child(3) > h3"
]
},
{
"html": "<h3>Understanding Your Pet's Nutrition Requirements</h3>",
"target": [
"article:nth-child(4) > h3"
]
},
{
"html": "<h3>\ud83d\udc3e Community Photos</h3>",
"target": [
".sidebar-widget:nth-child(1) > h3"
]
},
{
"html": "<h3>\ud83d\udcc5 Upcoming Events</h3>",
"target": [
".sidebar-widget:nth-child(2) > h3"
]
},
{
"html": "<h4>Low-Cost Vaccine Clinic</h4>",
"target": [
".event-item:nth-child(2) > .event-info > h4"
]
},
{
"html": "<h4>Adoption Day \u2014 Meet 30+ Pets</h4>",
"target": [
".event-item:nth-child(3) > .event-info > h4"
]
},
{
"html": "<h4>Puppy Socialization Workshop</h4>",
"target": [
".event-item:nth-child(4) > .event-info > h4"
]
},
{
"html": "<h4>Senior Pet Care Seminar</h4>",
"target": [
".event-item:nth-child(5) > .event-info > h4"
]
},
{
"html": "<h3>\ud83c\udf93 Quick Training Tips</h3>",
"target": [
".sidebar-widget:nth-child(3) > h3"
]
},
{
"html": "<h4>Recall That Actually Works</h4>",
"target": [
".training-tip:nth-child(2) > h4"
]
},
{
"html": "<h4>Settle on a Mat</h4>",
"target": [
".training-tip:nth-child(3) > h4"
]
},
{
"html": "<h4>Leave It Saves Lives</h4>",
"target": [
".training-tip:nth-child(4) > h4"
]
},
{
"html": "<h3 style=\"color:var(--white); border-bottom-color:rgba(255,255,255,0.3);\">Need Help Right Now?</h3>",
"target": [
".sidebar-widget:nth-child(4) > h3"
]
},
{
"html": "<h2>Choosing the right companion</h2>",
"target": [
"#guides > .container > .section-head > h2"
]
},
{
"html": "<h3>Golden Retriever</h3>",
"target": [
".breed-card:nth-child(1) > .breed-card-body > h3"
]
},
{
"html": "<h3>Maine Coon</h3>",
"target": [
".breed-card:nth-child(2) > .breed-card-body > h3"
]
},
{
"html": "<h3>French Bulldog</h3>",
"target": [
".breed-card:nth-child(3) > .breed-card-body > h3"
]
},
{
"html": "<h2>Real help for real behavior challenges</h2>",
"target": [
".behavior-content > div:nth-child(1) > h2"
]
},
{
"html": "<h2>Stories from our community</h2>",
"target": [
".testimonials > .container > .section-head > h2"
]
},
{
"html": "<h4>Sarah & Daniel R.</h4>",
"target": [
".testimonial-card:nth-child(1) > .testimonial-author > div > h4"
]
},
{
"html": "<h4>Maria G.</h4>",
"target": [
".testimonial-card:nth-child(2) > .testimonial-author > div > h4"
]
},
{
"html": "<h4>James & Priya K.</h4>",
"target": [
".testimonial-card:nth-child(3) > .testimonial-author > div > h4"
]
},
{
"html": "<h2>Resources, guides & stories</h2>",
"target": [
"#blog > .container > .section-head > h2"
]
},
{
"html": "<h3>15 Indoor Enrichment Ideas for Cold-Weather Days</h3>",
"target": [
".blog-card:nth-child(1) > .blog-card-body > h3"
]
},
{
"html": "<h3>Recognizing Pain in Senior Pets: The Subtle Signs Most Owners Miss</h3>",
"target": [
".blog-card:nth-child(2) > .blog-card-body > h3"
]
},
{
"html": "<h3>Becoming a Foster: A Complete Guide for First-Timers</h3>",
"target": [
".blog-card:nth-child(3) > .blog-card-body > h3"
]
},
{
"html": "<h2>Frequently asked questions</h2>",
"target": [
"#faq > .container > .section-head > h2"
]
},
{
"html": "<h2>Help us write the next happy tail</h2>",
"target": [
".container > h2"
]
},
{
"html": "<h2>Get our weekly newsletter</h2>",
"target": [
".newsletter-inner > div > h2"
]
},
{
"html": "<h3 style=\"color:var(--warm); font-size:1.4rem;\">PawHaven</h3>",
"target": [
".footer-about > .logo > .logo-text > h3"
]
},
{
"html": "<h4>Get Involved</h4>",
"target": [
".footer-col:nth-child(2) > h4"
]
},
{
"html": "<h4>Resources</h4>",
"target": [
".footer-col:nth-child(3) > h4"
]
},
{
"html": "<h4>Visit & Contact</h4>",
"target": [
".footer-contact > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main>",
"target": [
"main"
]
}
],
"impact": "serious",
"message": "Page has a landmark region"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#faf3e0",
"bgColor": "#6b4226",
"contrastRatio": 7.79,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 7.79"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span><i>\ud83d\udcde</i> (555) 273-PAWS</span>",
"target": [
".topbar-info > span:nth-child(1)"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "duplicate-id-aria",
"data": "species",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<select id=\"species\">\n <option value=\"all\">All Animals</option>\n <option value=\"dog\">Dogs</option>\n <option value=\"cat\">Cats</option>\n <option value=\"rabbit\">Rabbits</option>\n <option value=\"small\">Small Pets</option>\n </select>",
"target": [
"#species"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [
{
"html": "<label for=\"species\">Species</label>",
"target": [
"label[for=\"species\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<select id=\"species\">\n <option value=\"all\">All Animals</option>\n <option value=\"dog\">Dogs</option>\n <option value=\"cat\">Cats</option>\n <option value=\"rabbit\">Rabbits</option>\n <option value=\"small\">Small Pets</option>\n </select>",
"target": [
"#species"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://picsum.photos/120/120?random=50\" alt=\"PawHaven Logo\">",
"target": [
"img[alt=\"PawHaven Logo\"]"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"email\" placeholder=\"Enter your email address\" required=\"\">",
"target": [
"input"
]
}
]
},
{
"id": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "link-in-text-block-style",
"data": null,
"relatedNodes": [
{
"html": "<div class=\"breed-card-body\">",
"target": [
".breed-card:nth-child(1) > .breed-card-body"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\">Read Full Guide \u2192</a>",
"target": [
".breed-card:nth-child(1) > .breed-card-body > a[href=\"#\"]"
]
}
]
},
{
"id": "link-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
},
{
"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=\"#\" aria-label=\"Facebook\">f</a>",
"target": [
".topbar-social > a[aria-label=\"Facebook\"][href=\"#\"]"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul>",
"target": [
"nav > ul"
]
}
]
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "listitem",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List item has a <ul>, <ol> or role=\"list\" parent element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<li><a href=\"#services\">Services</a></li>",
"target": [
"nav > ul > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://picsum.photos/120/120?random=50\" alt=\"PawHaven Logo\">",
"target": [
"img[alt=\"PawHaven Logo\"]"
]
}
]
},
{
"id": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "explicit-label",
"data": {
"explicitLabel": "Species"
},
"relatedNodes": [
{
"html": "<label for=\"species\">Species</label>",
"target": [
"label[for=\"species\"]"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<select id=\"species\">\n <option value=\"all\">All Animals</option>\n <option value=\"dog\">Dogs</option>\n <option value=\"cat\">Cats</option>\n <option value=\"rabbit\">Rabbits</option>\n <option value=\"small\">Small Pets</option>\n </select>",
"target": [
"#species"
]
}
]
},
{
"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=\"#\" aria-label=\"Facebook\">f</a>",
"target": [
".topbar-social > a[aria-label=\"Facebook\"][href=\"#\"]"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "40.8pt (54.4px)",
"fontWeight": "bold",
"messageKey": "bgGradient",
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"hero\">",
"target": [
".hero"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h1>Compassionate care for every <span>wag, purr, and chirp</span></h1>",
"target": [
"h1"
],
"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": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#donate\" class=\"cta-nav\">Donate</a>",
"target": [
".cta-nav"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#donate\" class=\"cta-nav\">Donate</a>",
"target": [
".cta-nav"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#adopt\" class=\"btn btn-primary\">Find Your Match</a>",
"target": [
".btn-primary.btn[href$=\"#adopt\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#adopt\" class=\"btn btn-primary\">Find Your Match</a>",
"target": [
".btn-primary.btn[href$=\"#adopt\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"hero-card-tag\">\ud83d\udc3e Meet Biscuit \u2014 Adopted Today!</span>",
"target": [
".hero-card-tag"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"hero-card-tag\">\ud83d\udc3e Meet Biscuit \u2014 Adopted Today!</span>",
"target": [
".hero-card-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#faf3e0",
"contrastRatio": 2.79,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"services\" class=\"services\">",
"target": [
"#services"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">What We Offer</span>",
"target": [
"#services > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"adopt\" class=\"adoption-search\">",
"target": [
"#adopt"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Adoption Search</span>",
"target": [
"#adopt > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"search-btn\" onclick=\"searchPets()\">\ud83d\udd0d Search</button>",
"target": [
".search-btn"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"search-btn\" onclick=\"searchPets()\">\ud83d\udd0d Search</button>",
"target": [
".search-btn"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#7c9a7e",
"contrastRatio": 3.09,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pet-badge new\">New Arrival</span>",
"target": [
"div[data-size=\"medium\"] > .pet-card-img > .new.pet-badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #7c9a7e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pet-badge new\">New Arrival</span>",
"target": [
"div[data-size=\"medium\"] > .pet-card-img > .new.pet-badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #7c9a7e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"pet-card\" data-species=\"dog\" data-age=\"young\" data-size=\"medium\" data-needs=\"kids\">",
"target": [
"div[data-size=\"medium\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small style=\"color:var(--accent); font-weight:600;\">Ready Now</small>",
"target": [
"div[data-size=\"medium\"] > .pet-card-body > .pet-card-footer > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pet-badge\">Featured</span>",
"target": [
"div[data-needs=\"low-energy\"] > .pet-card-img > .pet-badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pet-badge\">Featured</span>",
"target": [
"div[data-needs=\"low-energy\"] > .pet-card-img > .pet-badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"pet-card\" data-species=\"cat\" data-age=\"adult\" data-size=\"small\" data-needs=\"low-energy\">",
"target": [
"div[data-needs=\"low-energy\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small style=\"color:var(--accent); font-weight:600;\">Ready Now</small>",
"target": [
"div[data-needs=\"low-energy\"] > .pet-card-body > .pet-card-footer > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#7c9a7e",
"contrastRatio": 3.09,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pet-badge new\">New Arrival</span>",
"target": [
"div[data-species=\"rabbit\"] > .pet-card-img > .new.pet-badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #7c9a7e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pet-badge new\">New Arrival</span>",
"target": [
"div[data-species=\"rabbit\"] > .pet-card-img > .new.pet-badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #7c9a7e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"pet-card\" data-species=\"rabbit\" data-age=\"young\" data-size=\"small\" data-needs=\"kids\">",
"target": [
"div[data-species=\"rabbit\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small style=\"color:var(--accent); font-weight:600;\">Bonded pairs available</small>",
"target": [
"div[data-species=\"rabbit\"] > .pet-card-body > .pet-card-footer > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pet-badge\">Featured</span>",
"target": [
"div[data-age=\"baby\"] > .pet-card-img > .pet-badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pet-badge\">Featured</span>",
"target": [
"div[data-age=\"baby\"] > .pet-card-img > .pet-badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"pet-card\" data-species=\"cat\" data-age=\"baby\" data-size=\"small\" data-needs=\"cats\">",
"target": [
"div[data-age=\"baby\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small style=\"color:var(--accent); font-weight:600;\">Bonded pair</small>",
"target": [
"div[data-age=\"baby\"] > .pet-card-body > .pet-card-footer > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pet-badge\">Featured</span>",
"target": [
"div[data-age=\"adult\"][data-needs=\"cats\"][data-species=\"dog\"] > .pet-card-img > .pet-badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pet-badge\">Featured</span>",
"target": [
"div[data-age=\"adult\"][data-needs=\"cats\"][data-species=\"dog\"] > .pet-card-img > .pet-badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"pet-card\" data-species=\"dog\" data-age=\"adult\" data-size=\"small\" data-needs=\"cats\">",
"target": [
"div[data-age=\"adult\"][data-needs=\"cats\"][data-species=\"dog\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small style=\"color:var(--accent); font-weight:600;\">Ready Now</small>",
"target": [
"div[data-age=\"adult\"][data-needs=\"cats\"][data-species=\"dog\"] > .pet-card-body > .pet-card-footer > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"btn btn-primary\">View All 87 Adoptable Pets</a>",
"target": [
"div:nth-child(4) > .btn-primary.btn[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"btn btn-primary\">View All 87 Adoptable Pets</a>",
"target": [
"div:nth-child(4) > .btn-primary.btn[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#faf3e0",
"contrastRatio": 2.79,
"fontSize": "14.4pt (19.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"event-date\"><strong>12</strong><small>OCT</small></div>",
"target": [
".event-item:nth-child(2) > .event-date"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 14.4pt (19.2px), font weight: bold). Expected contrast ratio of 3:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>12</strong>",
"target": [
".event-item:nth-child(2) > .event-date > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 14.4pt (19.2px), font weight: bold). Expected contrast ratio of 3:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#faf3e0",
"contrastRatio": 2.79,
"fontSize": "14.4pt (19.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"event-date\"><strong>19</strong><small>OCT</small></div>",
"target": [
".event-item:nth-child(3) > .event-date"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 14.4pt (19.2px), font weight: bold). Expected contrast ratio of 3:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>19</strong>",
"target": [
".event-item:nth-child(3) > .event-date > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 14.4pt (19.2px), font weight: bold). Expected contrast ratio of 3:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#faf3e0",
"contrastRatio": 2.79,
"fontSize": "14.4pt (19.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"event-date\"><strong>26</strong><small>OCT</small></div>",
"target": [
".event-item:nth-child(4) > .event-date"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 14.4pt (19.2px), font weight: bold). Expected contrast ratio of 3:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>26</strong>",
"target": [
".event-item:nth-child(4) > .event-date > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 14.4pt (19.2px), font weight: bold). Expected contrast ratio of 3:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#faf3e0",
"contrastRatio": 2.79,
"fontSize": "14.4pt (19.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"event-date\"><strong>02</strong><small>NOV</small></div>",
"target": [
".event-item:nth-child(5) > .event-date"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 14.4pt (19.2px), font weight: bold). Expected contrast ratio of 3:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>02</strong>",
"target": [
".event-item:nth-child(5) > .event-date > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 14.4pt (19.2px), font weight: bold). Expected contrast ratio of 3:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"btn\" style=\"background:var(--white); color:var(--accent); display:inline-block; margin-top:10px;\">Call Behavior Line</a>",
"target": [
".sidebar-widget:nth-child(4) > .btn[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"btn\" style=\"background:var(--white); color:var(--accent); display:inline-block; margin-top:10px;\">Call Behavior Line</a>",
"target": [
".sidebar-widget:nth-child(4) > .btn[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#faf3e0",
"contrastRatio": 2.79,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"guides\" class=\"breed-guides\">",
"target": [
"#guides"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Breed Guides</span>",
"target": [
"#guides > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#7c9a7e",
"contrastRatio": 3.09,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"btn btn-secondary\">Browse All 84 Breed Guides</a>",
"target": [
"#guides > .container > div:nth-child(3) > .btn-secondary.btn[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #7c9a7e, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"btn btn-secondary\">Browse All 84 Breed Guides</a>",
"target": [
"#guides > .container > div:nth-child(3) > .btn-secondary.btn[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #7c9a7e, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"btn btn-primary\">Book a Behavior Consultation</a>",
"target": [
"div:nth-child(1) > .btn-primary.btn[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"btn btn-primary\">Book a Behavior Consultation</a>",
"target": [
"div:nth-child(1) > .btn-primary.btn[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d6cbc3",
"bgColor": "#775137",
"contrastRatio": 4.37,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"testimonial-card\">",
"target": [
".testimonial-card:nth-child(1)"
]
},
{
"html": "<section class=\"testimonials\">",
"target": [
".testimonials"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.37 (foreground color: #d6cbc3, background color: #775137, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Adopted Maverick \u2022 2024</p>",
"target": [
".testimonial-card:nth-child(1) > .testimonial-author > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.37 (foreground color: #d6cbc3, background color: #775137, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d6cbc3",
"bgColor": "#775137",
"contrastRatio": 4.37,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"testimonial-card\">",
"target": [
".testimonial-card:nth-child(2)"
]
},
{
"html": "<section class=\"testimonials\">",
"target": [
".testimonials"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.37 (foreground color: #d6cbc3, background color: #775137, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Behavior Helpline Client</p>",
"target": [
".testimonial-card:nth-child(2) > .testimonial-author > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.37 (foreground color: #d6cbc3, background color: #775137, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d6cbc3",
"bgColor": "#775137",
"contrastRatio": 4.37,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"testimonial-card\">",
"target": [
".testimonial-card:nth-child(3)"
]
},
{
"html": "<section class=\"testimonials\">",
"target": [
".testimonials"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.37 (foreground color: #d6cbc3, background color: #775137, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Puppy Class Graduates</p>",
"target": [
".testimonial-card:nth-child(3) > .testimonial-author > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.37 (foreground color: #d6cbc3, background color: #775137, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#faf3e0",
"contrastRatio": 2.79,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"blog\" class=\"blog-preview\">",
"target": [
"#blog"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">From the Blog</span>",
"target": [
"#blog > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e76f51, background color: #faf3e0, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"blog-card\">",
"target": [
".blog-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"category\">Enrichment</span>",
"target": [
".blog-card:nth-child(1) > .blog-card-body > .blog-meta > .category"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"blog-card\">",
"target": [
".blog-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"category\">Senior Care</span>",
"target": [
".blog-card:nth-child(2) > .blog-card-body > .blog-meta > .category"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"blog-card\">",
"target": [
".blog-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"category\">Rescue</span>",
"target": [
".blog-card:nth-child(3) > .blog-card-body > .blog-meta > .category"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#7c9a7e",
"contrastRatio": 3.09,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"btn btn-secondary\">Visit the Full Blog</a>",
"target": [
"#blog > .container > div:nth-child(3) > .btn-secondary.btn[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #7c9a7e, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"btn btn-secondary\">Visit the Full Blog</a>",
"target": [
"#blog > .container > div:nth-child(3) > .btn-secondary.btn[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #7c9a7e, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e76f51",
"bgColor": "#ffffff",
"contrastRatio": 3.09,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"faq\" class=\"faq\">",
"target": [
"#faq"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Common Questions</span>",
"target": [
"#faq > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #e76f51, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"btn btn-primary\">Donate Now</a>",
"target": [
".donate-buttons > .btn-primary.btn[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"btn btn-primary\">Donate Now</a>",
"target": [
".donate-buttons > .btn-primary.btn[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#636e72",
"bgColor": "#f4e4c1",
"contrastRatio": 4.17,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"newsletter\">",
"target": [
".newsletter"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.17 (foreground color: #636e72, background color: #f4e4c1, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Adoption updates, training tips, vet Q&As, and event invites \u2014 delivered every Thursday. Unsubscribe anytime.</p>",
"target": [
".newsletter-inner > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.17 (foreground color: #636e72, background color: #f4e4c1, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e76f51",
"contrastRatio": 3.09,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button type=\"submit\" class=\"btn btn-primary\">Subscribe</button>",
"target": [
"button[type=\"submit\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button type=\"submit\" class=\"btn btn-primary\">Subscribe</button>",
"target": [
"button[type=\"submit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.09 (foreground color: #ffffff, background color: #e76f51, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#636e72",
"bgColor": "#6b4226",
"contrastRatio": 1.64,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer id=\"contact\" class=\"main-footer\">",
"target": [
"#contact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.64 (foreground color: #636e72, background color: #6b4226, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>\u00a9 2024 PawHaven Animal Rescue & Care Center. All rights reserved. Made with \ud83d\udc3e in Brookfield.</p>",
"target": [
".footer-bottom > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.64 (foreground color: #636e72, background color: #6b4226, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 10723
},
{
"y": 576,
"height": 10723
},
{
"y": 1152,
"height": 10723
},
{
"y": 1728,
"height": 10723
},
{
"y": 2304,
"height": 10723
},
{
"y": 2880,
"height": 10723
},
{
"y": 3456,
"height": 10723
},
{
"y": 4032,
"height": 10723
},
{
"y": 4608,
"height": 10723
},
{
"y": 5184,
"height": 10723
},
{
"y": 5760,
"height": 10723
},
{
"y": 6336,
"height": 10723
},
{
"y": 6912,
"height": 10723
},
{
"y": 7488,
"height": 10723
},
{
"y": 8064,
"height": 10723
},
{
"y": 8640,
"height": 10723
},
{
"y": 9216,
"height": 10723
},
{
"y": 9792,
"height": 10723
},
{
"y": 10003,
"height": 10723
}
],
"scans": 20,
"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: "Contact", "Adopt a Pet", "Blog".
- **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: "Emergency Info", "Behavior Help", "Breed Guides".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "nutrition requirements", "animal behavior", "enrichment".
- **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", "Donate", "Book Training".
- **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: "adoption search".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "community photos", "event calendar", "training advice".
- **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.