OpenAI GPT 6 Luna Pro – Pets
via OpenAI · Generated
- AIMAC Debt 4.70
- Cost $0.015
- Total Violations 17
- HTML Size 40 KB
- Em Dashes 9
Screenshot
View Live Page
Accessibility Issues Found
17 Serious
-
color-contrast serious 17 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<p class="eyebrow">Behavior support, without the judgment</p>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#f8f5ed">
<meta name="description" content="Kindred Paws connects pet people with practical care guidance, trusted local resources, and animals waiting for a home.">
<title>Kindred Paws — Good care, closer connections</title>
<style>
:root {
--ink: #20332e;
--muted: #62716a;
--cream: #f8f5ed;
--white: #fffefa;
--green: #315b48;
--green-dark: #244537;
--mint: #e6eee5;
--coral: #e87961;
--yellow: #f2c979;
--line: #e5e4db;
--shadow: 0 18px 55px rgba(35, 54, 46, .10);
--serif: Georgia, "Times New Roman", serif;
--sans: "Avenir Next", Avenir, "Segoe UI", sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 88px; }
body {
margin: 0;
color: var(--ink);
background: var(--cream);
font-family: var(--sans);
font-size: 16px;
line-height: 1.65;
-webkit-font-smoothing: antialiased;
}
img { display: block; max-width: 100%; }
a { color: inherit; }
button, select { font: inherit; }
.container { width: min(1160px, calc(100% - 48px)); margin-inline: auto; }
.eyebrow {
margin: 0 0 14px;
color: var(--green);
font-size: .76rem;
font-weight: 800;
letter-spacing: .16em;
text-transform: uppercase;
}
h1, h2, h3, p { margin-top: 0; }
h1, h2, .serif { font-family: var(--serif); font-weight: 500; letter-spacing: -.035em; }
h1 { font-size: clamp(3.3rem, 7vw, 6.3rem); line-height: .98; }
h2 { font-size: clamp(2.3rem, 4.5vw, 4rem); line-height: 1.08; }
h3 { line-height: 1.25; }
.button {
display: inline-flex;
min-height: 50px;
align-items: center;
justify-content: center;
gap: 10px;
padding: 12px 21px;
border: 1px solid transparent;
border-radius: 999px;
background: var(--green);
color: #fff;
font-size: .92rem;
font-weight: 750;
text-decoration: none;
transition: transform .2s ease, background .2s ease;
}
.button:hover { background: var(--green-dark); transform: translateY(-2px); }
.button.light { background: var(--white); color: var(--green-dark); }
.button.light:hover { background: var(--mint); }
.button.outline { border-color: rgba(49,91,72,.34); background: transparent; color: var(--green-dark); }
.button.outline:hover { background: var(--mint); }
.text-link {
display: inline-flex;
gap: 8px;
align-items: center;
color: var(--green);
font-weight: 800;
text-decoration: none;
}
.text-link:hover { text-decoration: underline; text-underline-offset: 4px; }
.topline {
padding: 9px 20px;
background: var(--green-dark);
color: #f8f5ed;
text-align: center;
font-size: .78rem;
letter-spacing: .025em;
}
.topline a { color: #f2c979; font-weight: 700; text-underline-offset: 3px; }
header {
position: sticky;
z-index: 20;
top: 0;
border-bottom: 1px solid rgba(32,51,46,.08);
background: rgba(248,245,237,.95);
backdrop-filter: blur(14px);
}
.nav-wrap { display: flex; min-height: 82px; align-items: center; justify-content: space-between; gap: 26px; }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; flex-shrink: 0; }
.brand img { width: 47px; height: 47px; border-radius: 15px; object-fit: cover; }
.brand-copy { display: flex; flex-direction: column; line-height: 1.2; }
.brand-name { font-family: var(--serif); font-size: 1.34rem; font-weight: 700; letter-spacing: -.04em; }
.tagline { margin-top: 4px; color: var(--muted); font-size: .69rem; letter-spacing: .035em; }
nav { display: flex; align-items: center; gap: clamp(15px, 2.5vw, 31px); }
nav a { color: #43564f; font-size: .86rem; font-weight: 700; text-decoration: none; }
nav a:hover { color: var(--coral); }
nav .nav-cta { padding: 10px 16px; border-radius: 999px; background: var(--green); color: white; }
nav .nav-cta:hover { background: var(--green-dark); color: white; }
.menu-toggle { display: none; border: 0; background: transparent; color: var(--ink); font-size: 1.5rem; cursor: pointer; }
.hero { position: relative; overflow: hidden; padding: 76px 0 86px; }
.hero::before {
position: absolute; top: -135px; right: -130px; width: 510px; height: 510px;
border-radius: 50%; background: #f0e6d4; content: ""; opacity: .68;
}
.hero-grid { position: relative; display: grid; grid-template-columns: 1fr 1.02fr; align-items: center; gap: 55px; }
.hero-copy { padding: 14px 0; }
.hero-copy h1 { max-width: 650px; margin-bottom: 24px; }
.hero-copy h1 span { color: var(--green); font-style: italic; }
.hero-copy > p:not(.eyebrow) { max-width: 510px; margin-bottom: 29px; color: var(--muted); font-size: 1.08rem; }
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 13px; }
.hero-note { display: flex; align-items: center; gap: 10px; margin-top: 27px; color: var(--muted); font-size: .84rem; }
.mini-avatars { display: flex; padding-left: 5px; }
.mini-avatars img { width: 31px; height: 31px; margin-left: -6px; border: 2px solid var(--cream); border-radius: 50%; object-fit: cover; }
.hero-visual { position: relative; min-height: 500px; }
.hero-photo { position: absolute; inset: 0 28px 10px 0; width: calc(100% - 28px); height: 490px; border-radius: 48% 48% 22px 22px; object-fit: cover; }
.hero-badge {
position: absolute; right: -5px; bottom: 35px; width: 205px; padding: 19px;
border-radius: 18px; background: var(--white); box-shadow: var(--shadow);
}
.hero-badge strong { display: block; margin-bottom: 5px; font-family: var(--serif); font-size: 1.24rem; }
.hero-badge span { color: var(--muted); font-size: .83rem; }
.badge-icon { display: grid; width: 34px; height: 34px; margin-bottom: 11px; place-items: center; border-radius: 50%; background: #fbe4d9; color: #a34e3f; font-size: 1.1rem; }
.trust-strip { padding: 21px 0; border-block: 1px solid var(--line); background: rgba(255,254,250,.64); }
.trust-inner { display: flex; align-items: center; justify-content: space-between; gap: 25px; }
.trust-label { color: var(--muted); font-size: .82rem; }
.trust-points { display: flex; flex-wrap: wrap; gap: clamp(18px, 4vw, 52px); }
.trust-point { display: flex; align-items: center; gap: 9px; font-size: .85rem; font-weight: 750; }
.trust-point span { color: var(--green); font-size: 1.15rem; }
section { padding: 100px 0; }
.section-heading { max-width: 670px; margin-bottom: 39px; }
.section-heading h2 { margin-bottom: 17px; }
.section-heading > p:last-child { color: var(--muted); font-size: 1.02rem; }
.care-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.care-card {
overflow: hidden; border: 1px solid var(--line); border-radius: 17px; background: var(--white);
transition: transform .25s ease, box-shadow .25s ease;
}
.care-card:hover { transform: translateY(-5px); box-shadow: var(--shadow); }
.care-card img { width: 100%; height: 225px; object-fit: cover; }
.card-content { padding: 23px 23px 25px; }
.card-kicker { margin-bottom: 8px; color: var(--coral); font-size: .72rem; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }
.card-content h3 { margin-bottom: 10px; font-family: var(--serif); font-size: 1.55rem; font-weight: 600; letter-spacing: -.025em; }
.card-content p { margin-bottom: 18px; color: var(--muted); font-size: .91rem; }
.feature-section { background: var(--mint); }
.feature-grid { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 74px; }
.feature-image-wrap { position: relative; }
.feature-image { width: 100%; height: 510px; border-radius: 20px; object-fit: cover; }
.image-caption { position: absolute; right: -14px; bottom: 22px; max-width: 245px; padding: 15px 18px; border-radius: 12px; background: var(--white); box-shadow: var(--shadow); font-size: .83rem; }
.image-caption strong { display: block; margin-bottom: 3px; }
.feature-copy h2 { margin-bottom: 19px; }
.feature-copy > p { color: var(--muted); }
.feature-list { display: grid; gap: 17px; margin: 26px 0 29px; padding: 0; list-style: none; }
.feature-list li { display: flex; gap: 13px; }
.check { display: grid; width: 27px; height: 27px; flex: 0 0 27px; place-items: center; border-radius: 50%; background: #d0dfd0; color: var(--green); font-size: .82rem; font-weight: 900; }
.feature-list strong { display: block; margin-bottom: 2px; }
.feature-list span:last-child { color: var(--muted); font-size: .9rem; }
.safety-section { padding-bottom: 92px; }
.safety-panel { display: grid; grid-template-columns: .92fr 1.08fr; overflow: hidden; border-radius: 22px; background: #f4e9d8; }
.safety-copy { padding: clamp(30px, 5vw, 60px); }
.safety-copy h2 { margin-bottom: 17px; }
.safety-copy p { color: #626b5f; }
.safety-copy .button { margin-top: 8px; }
.safety-image { min-height: 410px; width: 100%; height: 100%; object-fit: cover; }
.safety-tips { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 27px; }
.safety-tip { padding-top: 16px; border-top: 1px solid rgba(32,51,46,.15); }
.safety-tip strong { display: block; margin-bottom: 5px; font-size: .9rem; }
.safety-tip span { color: var(--muted); font-size: .83rem; }
.adoption-section { background: var(--white); }
.adoption-grid { display: grid; grid-template-columns: .88fr 1.12fr; align-items: center; gap: 66px; }
.adoption-copy h2 { margin-bottom: 18px; }
.adoption-copy p { color: var(--muted); }
.adoption-copy p + p { margin-top: 12px; }
.adoption-photo-wrap { position: relative; }
.adoption-photo { width: 100%; height: 440px; border-radius: 18px; object-fit: cover; }
.adoption-label { position: absolute; top: 18px; left: 18px; padding: 9px 14px; border-radius: 999px; background: var(--white); font-size: .78rem; font-weight: 800; }
.adoption-footer { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-top: 17px; }
.adoption-footer small { color: var(--muted); }
.tool-section { padding: 92px 0; }
.tool-card { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; padding: clamp(29px, 5vw, 60px); border-radius: 22px; background: var(--green-dark); color: var(--white); }
.tool-card .eyebrow { color: #f2c979; }
.tool-card h2 { margin-bottom: 15px; }
.tool-card .tool-intro { color: #d2dfd5; }
.tool-note { margin-top: 20px; color: #bdcfc2; font-size: .78rem; }
.tool-form { align-self: center; padding: 25px; border-radius: 15px; background: var(--white); color: var(--ink); }
.tool-form label { display: block; margin-bottom: 8px; font-size: .83rem; font-weight: 800; }
.tool-form select { width: 100%; min-height: 48px; margin-bottom: 18px; padding: 10px 12px; border: 1px solid #d9dfd8; border-radius: 9px; background: #fff; color: var(--ink); }
.tool-form .button { width: 100%; border: 0; cursor: pointer; }
.tool-result { display: none; margin-top: 17px; padding: 14px; border-radius: 10px; background: var(--mint); font-size: .89rem; }
.tool-result.visible { display: block; }
.tool-result strong { display: block; margin-bottom: 4px; color: var(--green-dark); }
.community-section { background: #f3eee4; }
.community-top { display: flex; justify-content: space-between; align-items: end; gap: 30px; margin-bottom: 36px; }
.community-top .section-heading { margin: 0; }
.testimonial-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.quote-card { padding: 24px; border: 1px solid rgba(32,51,46,.08); border-radius: 15px; background: var(--white); }
.stars { margin-bottom: 12px; color: #d59535; letter-spacing: .13em; }
.quote-card blockquote { margin: 0 0 19px; font-family: var(--serif); font-size: 1.15rem; line-height: 1.48; }
.quote-person { display: flex; align-items: center; gap: 11px; color: var(--muted); font-size: .82rem; }
.quote-person img { width: 39px; height: 39px; border-radius: 50%; object-fit: cover; }
.quote-person strong { display: block; color: var(--ink); }
.faq-section { padding: 90px 0 100px; }
.faq-layout { display: grid; grid-template-columns: .75fr 1.25fr; gap: 75px; }
.faq-intro h2 { margin-bottom: 16px; }
.faq-intro p { color: var(--muted); }
.faq-list details { padding: 19px 0; border-bottom: 1px solid var(--line); }
.faq-list details:first-child { border-top: 1px solid var(--line); }
.faq-list summary { position: relative; padding-right: 32px; cursor: pointer; font-weight: 800; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after { position: absolute; right: 2px; content: "+"; color: var(--green); font-size: 1.35rem; line-height: 1; }
.faq-list details[open] summary::after { content: "−"; }
.faq-list details p { max-width: 650px; margin: 12px 30px 0 0; color: var(--muted); font-size: .92rem; }
.newsletter { padding: 55px 0; background: #e9dfcf; }
.newsletter-inner { display: flex; align-items: center; justify-content: space-between; gap: 32px; }
.newsletter h2 { margin: 0 0 7px; font-size: clamp(1.8rem, 3vw, 2.6rem); }
.newsletter p { margin: 0; color: var(--muted); }
.newsletter-form { display: flex; width: min(430px, 100%); gap: 9px; }
.newsletter-form input { width: 100%; min-width: 0; padding: 13px 15px; border: 1px solid #d5d0c4; border-radius: 999px; background: var(--white); }
.newsletter-form button { flex-shrink: 0; border: 0; cursor: pointer; }
.form-feedback { margin-top: 9px; color: var(--green-dark); font-size: .84rem; }
footer { padding: 55px 0 25px; background: #20352e; color: #f8f5ed; }
.footer-grid { display: grid; grid-template-columns: 1.45fr 1fr 1fr 1fr; gap: 36px; padding-bottom: 42px; }
.footer-brand .brand-name { font-size: 1.55rem; }
.footer-brand p { max-width: 300px; margin-top: 15px; color: #bdc9c1; font-size: .9rem; }
.footer-grid h3 { margin-bottom: 14px; font-size: .85rem; letter-spacing: .07em; text-transform: uppercase; }
.footer-grid ul { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; }
.footer-grid li, .footer-grid a { color: #bdc9c1; font-size: .88rem; text-decoration: none; }
.footer-grid a:hover { color: #f2c979; }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-top: 19px; border-top: 1px solid rgba(255,255,255,.15); color: #aebdb4; font-size: .79rem; }
.social-links { display: flex; gap: 17px; }
.social-links a { color: #f8f5ed; font-weight: 700; text-decoration: none; }
@media (max-width: 900px) {
.nav-wrap { gap: 14px; }
nav { gap: 14px; }
nav a { font-size: .79rem; }
.hero-grid { gap: 28px; }
.hero-visual { min-height: 420px; }
.hero-photo { height: 410px; }
.feature-grid, .adoption-grid { gap: 42px; }
.tool-card { gap: 30px; }
.faq-layout { gap: 42px; }
}
@media (max-width: 720px) {
.container { width: min(100% - 36px, 560px); }
.nav-wrap { min-height: 72px; }
.menu-toggle { display: block; }
nav {
position: absolute; top: 100%; right: 0; left: 0; display: none; align-items: stretch;
padding: 12px 22px 22px; border-bottom: 1px solid var(--line); background: var(--cream);
}
nav.open { display: flex; flex-direction: column; gap: 0; }
nav a { padding: 12px 5px; font-size: .95rem; }
nav .nav-cta { margin-top: 8px; text-align: center; }
.hero { padding: 53px 0 60px; }
.hero-grid { grid-template-columns: 1fr; gap: 28px; }
.hero-copy h1 { font-size: clamp(3.2rem, 15vw, 5.1rem); }
.hero-visual { min-height: 390px; }
.hero-photo { inset: 0 16px 0 0; width: calc(100% - 16px); height: 380px; }
.hero-badge { right: 0; bottom: 11px; }
.trust-inner { align-items: flex-start; flex-direction: column; }
.trust-points { gap: 12px 24px; }
section { padding: 72px 0; }
.care-grid { grid-template-columns: 1fr; }
.care-card img { height: 245px; }
.feature-grid, .safety-panel, .adoption-grid, .tool-card, .faq-layout { grid-template-columns: 1fr; }
.feature-grid { gap: 34px; }
.feature-image { height: 390px; }
.image-caption { right: -4px; }
.safety-image { min-height: 290px; max-height: 370px; grid-row: 1; }
.safety-copy { padding: 30px 24px; }
.adoption-grid { gap: 30px; }
.adoption-photo { height: 330px; }
.tool-card { gap: 25px; }
.community-top { align-items: flex-start; flex-direction: column; }
.testimonial-grid { grid-template-columns: 1fr; }
.faq-layout { gap: 27px; }
.newsletter-inner { align-items: flex-start; flex-direction: column; }
.footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 450px) {
.topline { font-size: .7rem; }
.tagline { max-width: 175px; font-size: .62rem; }
.brand img { width: 41px; height: 41px; }
.hero-actions { align-items: stretch; flex-direction: column; }
.hero-actions .button { width: 100%; }
.safety-tips { grid-template-columns: 1fr; gap: 13px; }
.adoption-footer { align-items: flex-start; flex-direction: column; }
.newsletter-form { flex-direction: column; }
.newsletter-form .button { width: 100%; }
.footer-grid { gap: 28px 20px; }
.footer-bottom { align-items: flex-start; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}
</style>
</head>
<body>
<div class="topline">
Need help finding a local rescue or clinic? <a href="#contact">Talk with our care team</a>
</div>
<header>
<div class="container nav-wrap">
<a class="brand" href="#home" aria-label="Kindred Paws home">
<img src="https://placehold.co/96x96/315b48/ffffff?text=KP&font=playfair+display" alt="Kindred Paws logo placeholder">
<span class="brand-copy">
<span class="brand-name">Kindred Paws</span>
<span class="tagline">Good care, closer connections.</span>
</span>
</a>
<button class="menu-toggle" type="button" aria-expanded="false" aria-controls="primary-nav" aria-label="Open navigation">☰</button>
<nav id="primary-nav" aria-label="Primary navigation">
<a href="#care">Pet Care</a>
<a href="#behavior">Behavior</a>
<a href="#safety">Safety</a>
<a href="#adopt">Adoption</a>
<a href="#community">Community</a>
<a href="#about">About</a>
<a class="nav-cta" href="#contact">Contact</a>
</nav>
</div>
</header>
<main id="home">
<section class="hero">
<div class="container hero-grid">
<div class="hero-copy">
<p class="eyebrow">A little more confident. A lot more connected.</p>
<h1>Better days<br>for <span>every</span> pet.</h1>
<p>From first-day nerves to lifelong wellness, find thoughtful advice, trusted local support, and the right next step for the animal you love.</p>
<div class="hero-actions">
<a class="button" href="#care">Explore pet care <span aria-hidden="true">↗</span></a>
<a class="button outline" href="#adopt">Meet your new best friend</a>
</div>
<div class="hero-note">
<div class="mini-avatars" aria-hidden="true">
<img src="https://i.pravatar.cc/80?u=kindred-community-1" alt="">
<img src="https://i.pravatar.cc/80?u=kindred-community-2" alt="">
<img src="https://i.pravatar.cc/80?u=kindred-community-3" alt="">
</div>
<span>Here for the people who show up for animals.</span>
</div>
</div>
<div class="hero-visual">
<img class="hero-photo" src="https://picsum.photos/id/237/1000/1100" alt="A friendly dog enjoying a quiet moment outdoors">
<div class="hero-badge">
<div class="badge-icon" aria-hidden="true">♥</div>
<strong>Care starts with connection.</strong>
<span>Practical guidance for the everyday moments that matter.</span>
</div>
</div>
</div>
</section>
<div class="trust-strip" aria-label="Our approach">
<div class="container trust-inner">
<span class="trust-label">A good place to start, whatever the question.</span>
<div class="trust-points">
<div class="trust-point"><span aria-hidden="true">✳</span> Vet-informed resources</div>
<div class="trust-point"><span aria-hidden="true">♡</span> Rescue-minded support</div>
<div class="trust-point"><span aria-hidden="true">⌂</span> Community close to home</div>
</div>
</div>
</div>
<section id="care">
<div class="container">
<div class="section-heading">
<p class="eyebrow">Care that meets you where you are</p>
<h2>Small steps make a happier life together.</h2>
<p>Good pet care isn't one-size-fits-all. Explore clear, compassionate starting points for your pet's health, behavior, and everyday well-being—and know when it's time to bring in a professional.</p>
</div>
<div class="care-grid">
<article class="care-card" id="behavior">
<img src="https://picsum.photos/id/1025/900/600" alt="A dog outdoors, ready to explore and learn">
<div class="card-content">
<p class="card-kicker">Behavior & training</p>
<h3>Build trust, one good habit at a time.</h3>
<p>Positive-reinforcement training helps pets understand what works while strengthening your bond. Start with short, rewarding sessions and give your dog or cat room to learn at their own pace.</p>
<a class="text-link" href="#tool">Find your next step <span aria-hidden="true">→</span></a>
</div>
</article>
<article class="care-card">
<img src="https://picsum.photos/id/1074/900/600" alt="A curious pet taking in its surroundings">
<div class="card-content">
<p class="card-kicker">Everyday enrichment</p>
<h3>Make space for play and curiosity.</h3>
<p>Sniff walks, food puzzles, climbing spaces, and gentle socialization can meet a pet's natural needs. Rotate activities to keep things interesting, and always make new experiences feel safe and optional.</p>
<a class="text-link" href="#safety">Explore daily-care tips <span aria-hidden="true">→</span></a>
</div>
</article>
<article class="care-card">
<img src="https://picsum.photos/id/433/900/600" alt="A calm outdoor setting for time spent together">
<div class="card-content">
<p class="card-kicker">Pet health</p>
<h3>Stay ahead with a care routine.</h3>
<p>Regular wellness visits are a chance to discuss nutrition, dental care, parasite prevention, and a vaccination schedule tailored to your pet's age, health, and lifestyle. Keep notes so small changes are easier to spot.</p>
<a class="text-link" href="#faq">Read common questions <span aria-hidden="true">→</span></a>
</div>
</article>
</div>
</div>
</section>
<section class="feature-section">
<div class="container feature-grid">
<div class="feature-image-wrap">
<img class="feature-image" src="https://picsum.photos/id/169/1000/1000" alt="A dog enjoying fresh air on a nature walk">
<div class="image-caption">
<strong>Learning takes time.</strong>
Let curiosity—and your pet's comfort—set the pace.
</div>
</div>
<div class="feature-copy">
<p class="eyebrow">Behavior support, without the judgment</p>
<h2>Understand the why behind the behavior.</h2>
<p>Barking, scratching, hiding, or pulling on leash can be a pet's way of communicating. Instead of looking for a quick fix, begin with patterns: when does it happen, what changed, and what helps your pet feel secure?</p>
<p>Consistent routines, enrichment, and reward-based practice can make a real difference. When a behavior is sudden, intense, or causing distress, your veterinarian can help rule out pain or illness and connect you with a qualified trainer or veterinary behavior professional.</p>
<ul class="feature-list">
<li><span class="check">✓</span><span><strong>Make new things manageable</strong><span>Thoughtful, gradual socialization supports confidence without overwhelming your pet.</span></span></li>
<li><span class="check">✓</span><span><strong>Reward the behavior you want</strong><span>Mark calm choices right away with a treat, praise, or play your pet enjoys.</span></span></li>
<li><span class="check">✓</span><span><strong>Get help early</strong><span>A trusted professional can tailor a plan to your pet and household.</span></span></li>
</ul>
<a class="button" href="#tool">Get a tailored starting point</a>
</div>
</div>
</section>
<section class="safety-section" id="safety">
<div class="container">
<div class="safety-panel">
<div class="safety-copy">
<p class="eyebrow">A safer home, a calmer mind</p>
<h2>Prepared is a form of love.</h2>
<p>A few simple habits can prevent stressful surprises. Keep your pet's ID information current, store medications and household hazards out of reach, and make sure everyone at home knows where the carrier, leash, and emergency contacts live.</p>
<div class="safety-tips">
<div class="safety-tip"><strong>Build a pet go-bag</strong><span>Include food, water, medication, a photo, and copies of records.</span></div>
<div class="safety-tip"><strong>Know your nearest clinic</strong><span>Save your regular vet and local emergency hospital before you need them.</span></div>
<div class="safety-tip"><strong>Check the environment</strong><span>Secure toxic plants, cleaning products, cords, and small chewable items.</span></div>
<div class="safety-tip"><strong>Plan for the weather</strong><span>Provide shade and water, and protect paws from hot or icy surfaces.</span></div>
</div>
<a class="button" href="#contact">Make a safety plan</a>
</div>
<img class="safety-image" src="https://picsum.photos/id/1011/1000/1000" alt="A peaceful woodland path, a reminder to plan safe outdoor adventures">
</div>
</div>
</section>
<section class="adoption-section" id="adopt">
<div class="container adoption-grid">
<div class="adoption-copy">
<p class="eyebrow">A new chapter starts here</p>
<h2>There’s room for one more kind of love.</h2>
<p>Adoption is a relationship, not a race. Local shelters and rescue groups can help you find an animal whose needs, temperament, and energy feel like a good fit for your home. Ask about medical history, routines, and the support available after adoption.</p>
<p>Give everyone time to settle in. A quiet space, predictable routine, and patient introductions help a new companion feel safe—and let trust grow at its own pace.</p>
<a class="button" href="#contact">Contact a shelter <span aria-hidden="true">↗</span></a>
</div>
<div class="adoption-photo-wrap">
<img class="adoption-photo" src="https://picsum.photos/id/1024/1000/750" alt="A dog looking toward a bright new day">
<span class="adoption-label">Your next chapter could have paws</span>
<div class="adoption-footer">
<small>Not ready to adopt? Fostering, volunteering, and donating help animals too.</small>
<a class="text-link" href="#contact">See ways to help →</a>
</div>
</div>
</div>
</section>
<section class="tool-section" id="tool">
<div class="container">
<div class="tool-card">
<div>
<p class="eyebrow">A helpful place to begin</p>
<h2>What does your pet need today?</h2>
<p class="tool-intro">Choose a life stage and the thing on your mind. Our Care Compass offers a practical first step you can explore with your pet's veterinarian or a trusted local professional.</p>
<p class="tool-note">This guide is educational and cannot diagnose an illness or replace veterinary advice. If your pet is seriously unwell or in immediate danger, contact an emergency veterinary clinic.</p>
</div>
<form class="tool-form" id="care-form">
<label for="life-stage">My pet is in their…</label>
<select id="life-stage" name="life-stage">
<option value="young">puppy or kitten stage</option>
<option value="adult">adult years</option>
<option value="senior">senior years</option>
</select>
<label for="concern">I'm looking for help with…</label>
<select id="concern" name="concern">
<option value="health">health and preventive care</option>
<option value="behavior">behavior or training</option>
<option value="enrichment">play and enrichment</option>
<option value="safety">home and outdoor safety</option>
</select>
<button class="button" type="submit">Show me a starting point <span aria-hidden="true">→</span></button>
<div class="tool-result" id="care-result" role="status" aria-live="polite"></div>
</form>
</div>
</div>
</section>
<section class="community-section" id="community">
<div class="container">
<div class="community-top">
<div class="section-heading">
<p class="eyebrow">Kind words, from our community</p>
<h2>Better together looks like this.</h2>
<p>Every pet and person has their own story. Here's what a little guidance and a lot of care can make possible.</p>
</div>
<a class="button outline" href="#contact">Join the community</a>
</div>
<div class="testimonial-grid">
<article class="quote-card">
<div class="stars" aria-label="5 out of 5 stars">★★★★★</div>
<blockquote>“We finally understood that Milo wasn't being stubborn—he was overwhelmed. The small changes to our walks made all the difference.”</blockquote>
<div class="quote-person">
<img src="https://i.pravatar.cc/100?u=kindred-testimonial-ana" alt="">
<span><strong>Ana & Milo</strong>Dog people, Portland</span>
</div>
</article>
<article class="quote-card">
<div class="stars" aria-label="5 out of 5 stars">★★★★★</div>
<blockquote>“The adoption checklist helped us ask better questions and set up a quiet space before Juniper came home. She settled in beautifully.”</blockquote>
<div class="quote-person">
<img src="https://i.pravatar.cc/100?u=kindred-testimonial-james" alt="">
<span><strong>James & Juniper</strong>New cat family, Austin</span>
</div>
</article>
<article class="quote-card">
<div class="stars" aria-label="5 out of 5 stars">★★★★★</div>
<blockquote>“I felt less alone figuring out senior-pet care. Having good questions ready made our next vet visit so much more useful.”</blockquote>
<div class="quote-person">
<img src="https://i.pravatar.cc/100?u=kindred-testimonial-renee" alt="">
<span><strong>Renee & Scout</strong>Longtime companions, Denver</span>
</div>
</article>
</div>
</div>
</section>
<section class="faq-section" id="faq">
<div class="container faq-layout">
<div class="faq-intro">
<p class="eyebrow">Good questions</p>
<h2>A few things you might be wondering.</h2>
<p>Pet care advice should support a conversation with the people who know your animal best. Here are some useful starting points.</p>
<a class="text-link" href="#contact">Ask us something else <span aria-hidden="true">→</span></a>
</div>
<div class="faq-list">
<details>
<summary>How often should my pet see a veterinarian?</summary>
<p>It depends on age, health, and individual needs. Many healthy adult pets benefit from a wellness exam at least once a year, while puppies, kittens, seniors, or pets managing a condition may need a different schedule. Your veterinary team can recommend a plan tailored to your pet.</p>
</details>
<details>
<summary>How do I know if a training approach is humane?</summary>
<p>Look for reward-based methods that build skills through reinforcement, patience, and clear communication. A qualified trainer should explain their approach, welcome your questions, and never rely on fear, intimidation, or pain to get results.</p>
</details>
<details>
<summary>What should I ask before adopting a pet?</summary>
<p>Ask about health and vaccination records, known behavior or training needs, daily routines, and how the animal responds to children or other pets. Also ask what support the shelter offers after adoption and what the adjustment period might look like.</p>
</details>
<details>
<summary>When is a health concern an emergency?</summary>
<p>Difficulty breathing, collapse, severe bleeding, suspected poisoning, or sudden inability to stand warrant urgent veterinary attention. When you're unsure, call your veterinarian or an emergency clinic for guidance rather than waiting for an online answer.</p>
</details>
</div>
</div>
</section>
<section class="newsletter" id="contact">
<div class="container newsletter-inner">
<div>
<p class="eyebrow">A little goodness in your inbox</p>
<h2>Care tips, community stories, no noise.</h2>
<p>Get our monthly note with seasonal reminders and local ways to lend a paw.</p>
</div>
<form class="newsletter-form" id="newsletter-form">
<label class="sr-only" for="email-address" style="position:absolute;left:-9999px;">Email address</label>
<input id="email-address" type="email" placeholder="Your email address" required>
<button class="button" type="submit">Sign me up</button>
</form>
<div class="form-feedback" id="newsletter-feedback" role="status" aria-live="polite"></div>
</div>
</section>
</main>
<footer id="about">
<div class="container">
<div class="footer-grid">
<div class="footer-brand">
<a class="brand" href="#home" aria-label="Kindred Paws home">
<img src="https://placehold.co/96x96/315b48/ffffff?text=KP&font=playfair+display" alt="">
<span class="brand-copy">
<span class="brand-name">Kindred Paws</span>
<span class="tagline" style="color:#bdc9c1;">Good care, closer connections.</span>
</span>
</a>
<p>Practical, compassionate support for the people who make life better for animals—one thoughtful step at a time.</p>
</div>
<div>
<h3>Explore</h3>
<ul>
<li><a href="#care">Pet care guides</a></li>
<li><a href="#behavior">Behavior & training</a></li>
<li><a href="#safety">Safety checklist</a></li>
<li><a href="#adopt">Adoption support</a></li>
</ul>
</div>
<div>
<h3>Kindred Paws</h3>
<ul>
<li><a href="#about">About our mission</a></li>
<li><a href="#community">Community stories</a></li>
<li><a href="#contact">Contact our team</a></li>
<li><a href="#faq">Frequently asked questions</a></li>
</ul>
</div>
<div>
<h3>Say hello</h3>
<ul>
<li>hello@kindredpaws.org</li>
<li>(503) 555-0148</li>
<li>Portland, OR · Serving pet people everywhere</li>
<li>Mon–Fri, 9 am–5 pm PT</li>
</ul>
</div>
</div>
<div class="footer-bottom">
<span>© <span id="year">2025</span> Kindred Paws. Made with care for every kind of companion.</span>
<div class="social-links">
<a href="https://instagram.com" aria-label="Instagram">Instagram</a>
<a href="https://facebook.com" aria-label="Facebook">Facebook</a>
<a href="https://youtube.com" aria-label="YouTube">YouTube</a>
<a href="#privacy">Privacy</a>
<a href="#terms">Terms</a>
</div>
</div>
</div>
</footer>
<script>
const menuButton = document.querySelector('.menu-toggle');
const navigation = document.querySelector('#primary-nav');
menuButton.addEventListener('click', () => {
const isOpen = navigation.classList.toggle('open');
menuButton.setAttribute('aria-expanded', String(isOpen));
menuButton.setAttribute('aria-label', isOpen ? 'Close navigation' : 'Open navigation');
menuButton.textContent = isOpen ? '×' : '☰';
});
navigation.querySelectorAll('a').forEach((link) => {
link.addEventListener('click', () => {
navigation.classList.remove('open');
menuButton.setAttribute('aria-expanded', 'false');
menuButton.setAttribute('aria-label', 'Open navigation');
menuButton.textContent = '☰';
});
});
const careForm = document.querySelector('#care-form');
const careResult = document.querySelector('#care-result');
careForm.addEventListener('submit', (event) => {
event.preventDefault();
const stage = document.querySelector('#life-stage').value;
const concern = document.querySelector('#concern').value;
const stageNotes = {
young: 'Young pets thrive with gentle routines, age-appropriate preventive care, and positive early socialization.',
adult: 'Adult pets benefit from consistent enrichment, regular preventive checkups, and habits that fit their everyday life.',
senior: 'For senior pets, comfort and mobility matter. Ask your vet about changes you notice and how to keep daily routines comfortable.'
};
const nextSteps = {
health: 'Gather your pet’s current records and make a wellness appointment to review their vaccination schedule and prevention plan.',
behavior: 'Note what happens before and after the behavior, then consider a reward-based trainer or a conversation with your veterinarian.',
enrichment: 'Try one short, low-pressure activity today—a sniff walk, food puzzle, or play session—and notice what your pet enjoys most.',
safety: 'Walk through your home at your pet’s level and save your veterinarian and nearest emergency clinic in your phone.'
};
careResult.innerHTML = '<strong>Your caring next step</strong>' + stageNotes[stage] + ' ' + nextSteps[concern];
careResult.classList.add('visible');
});
document.querySelector('#newsletter-form').addEventListener('submit', (event) => {
event.preventDefault();
const email = document.querySelector('#email-address');
const feedback = document.querySelector('#newsletter-feedback');
feedback.textContent = 'Thanks for being part of the pack. We’ll be in touch at ' + email.value + '.';
email.value = '';
});
document.querySelector('#year').textContent = new Date().getFullYear();
</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:57:42.060Z",
"url": "https://benchmark.aimac.invalid/2050abb9e64ee31f8331bfa43fe411b0734593e91c145981ad7f8f0353323c44.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-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-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-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": "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 class=\"brand\" href=\"#home\" aria-label=\"Kindred Paws home\">",
"target": [
".nav-wrap > .brand[href$=\"#home\"][aria-label=\"Kindred Paws home\"]"
]
}
]
},
{
"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 class=\"brand\" href=\"#home\" aria-label=\"Kindred Paws home\">",
"target": [
".nav-wrap > .brand[href$=\"#home\"][aria-label=\"Kindred Paws home\"]"
]
}
]
},
{
"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": [
{
"any": [],
"all": [],
"none": [
{
"id": "deprecatedrole",
"data": null,
"relatedNodes": [],
"impact": "minor",
"message": "ARIA role is not deprecated"
}
],
"impact": null,
"html": "<div class=\"form-feedback\" id=\"newsletter-feedback\" role=\"status\" aria-live=\"polite\"></div>",
"target": [
"#newsletter-feedback"
]
}
]
},
{
"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-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": [
{
"any": [],
"all": [
{
"id": "focusable-modal-open",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements while a modal is open"
},
{
"id": "focusable-disabled",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements contained within element"
},
{
"id": "focusable-not-tabbable",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements contained within element"
}
],
"none": [],
"impact": null,
"html": "<span aria-hidden=\"true\">\u2197</span>",
"target": [
".button[href$=\"#care\"] > span[aria-hidden=\"true\"]"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": "serious",
"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 class=\"brand\" href=\"#home\" aria-label=\"Kindred Paws home\">",
"target": [
".nav-wrap > .brand[href$=\"#home\"][aria-label=\"Kindred Paws home\"]"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "aria-required-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "All required ARIA attributes are present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"form-feedback\" id=\"newsletter-feedback\" role=\"status\" aria-live=\"polite\"></div>",
"target": [
"#newsletter-feedback"
]
}
]
},
{
"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": [
{
"any": [],
"all": [],
"none": [
{
"id": "invalidrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA role is valid"
},
{
"id": "abstractrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Abstract roles are not used"
},
{
"id": "unsupportedrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA role is supported"
}
],
"impact": null,
"html": "<div class=\"form-feedback\" id=\"newsletter-feedback\" role=\"status\" aria-live=\"polite\"></div>",
"target": [
"#newsletter-feedback"
]
}
]
},
{
"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 class=\"brand\" href=\"#home\" aria-label=\"Kindred Paws home\">",
"target": [
".nav-wrap > .brand[href$=\"#home\"][aria-label=\"Kindred Paws home\"]"
]
}
]
},
{
"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 class=\"brand\" href=\"#home\" aria-label=\"Kindred Paws home\">",
"target": [
".nav-wrap > .brand[href$=\"#home\"][aria-label=\"Kindred Paws home\"]"
]
}
]
},
{
"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": "<span class=\"tagline\" style=\"color:#bdc9c1;\">Good care, closer connections.</span>",
"target": [
".footer-brand > .brand[href$=\"#home\"][aria-label=\"Kindred Paws home\"] > .brand-copy > .tagline"
]
}
]
},
{
"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=\"button\" type=\"submit\">Show me a starting point <span aria-hidden=\"true\">\u2192</span></button>",
"target": [
"#care-form > button[type=\"submit\"]"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "internal-link-present",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Valid skip link found"
},
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1>Better days<br>for <span>every</span> pet.</h1>",
"target": [
"h1"
]
},
{
"html": "<h2>Small steps make a happier life together.</h2>",
"target": [
".container > .section-heading > h2"
]
},
{
"html": "<h3>Build trust, one good habit at a time.</h3>",
"target": [
"#behavior > .card-content > h3"
]
},
{
"html": "<h3>Make space for play and curiosity.</h3>",
"target": [
".care-card:nth-child(2) > .card-content > h3"
]
},
{
"html": "<h3>Stay ahead with a care routine.</h3>",
"target": [
".care-card:nth-child(3) > .card-content > h3"
]
},
{
"html": "<h2>Understand the why behind the behavior.</h2>",
"target": [
".feature-copy > h2"
]
},
{
"html": "<h2>Prepared is a form of love.</h2>",
"target": [
".safety-copy > h2"
]
},
{
"html": "<h2>There\u2019s room for one more kind of love.</h2>",
"target": [
".adoption-copy > h2"
]
},
{
"html": "<h2>What does your pet need today?</h2>",
"target": [
".tool-card > div > h2"
]
},
{
"html": "<h2>Better together looks like this.</h2>",
"target": [
".community-top > .section-heading > h2"
]
},
{
"html": "<h2>A few things you might be wondering.</h2>",
"target": [
".faq-intro > h2"
]
},
{
"html": "<h2>Care tips, community stories, no noise.</h2>",
"target": [
".newsletter-inner > div:nth-child(1) > h2"
]
},
{
"html": "<h3>Explore</h3>",
"target": [
".footer-grid > div:nth-child(2) > h3"
]
},
{
"html": "<h3>Kindred Paws</h3>",
"target": [
"div:nth-child(3) > h3"
]
},
{
"html": "<h3>Say hello</h3>",
"target": [
"div:nth-child(4) > h3"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main id=\"home\">",
"target": [
"#home"
]
}
],
"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": "#f8f5ed",
"bgColor": "#244537",
"contrastRatio": 9.72,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 9.72"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"topline\">\n Need help finding a local rescue or clinic? <a href=\"#contact\">Talk with our care team</a>\n </div>",
"target": [
".topline"
]
}
]
},
{
"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": "primary-nav",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<nav id=\"primary-nav\" aria-label=\"Primary navigation\">",
"target": [
"#primary-nav"
]
}
]
},
{
"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=\"life-stage\">My pet is in their\u2026</label>",
"target": [
"label[for=\"life-stage\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<select id=\"life-stage\" name=\"life-stage\">\n <option value=\"young\">puppy or kitten stage</option>\n <option value=\"adult\">adult years</option>\n <option value=\"senior\">senior years</option>\n </select>",
"target": [
"#life-stage"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/96x96/315b48/ffffff?text=KP&font=playfair+display\" alt=\"Kindred Paws logo placeholder\">",
"target": [
"img[alt=\"Kindred Paws logo placeholder\"]"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "explicit-label",
"data": null,
"relatedNodes": [
{
"html": "<label class=\"sr-only\" for=\"email-address\" style=\"position:absolute;left:-9999px;\">Email address</label>",
"target": [
".sr-only"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
},
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input id=\"email-address\" type=\"email\" placeholder=\"Your email address\" required=\"\">",
"target": [
"#email-address"
]
}
]
},
{
"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=\"topline\">\n Need help finding a local rescue or clinic? <a href=\"#contact\">Talk with our care team</a>\n </div>",
"target": [
".topline"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#contact\">Talk with our care team</a>",
"target": [
".topline > a[href$=\"#contact\"]"
]
}
]
},
{
"id": "link-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a href=\"#contact\">Talk with our care team</a>",
"target": [
".topline > a[href$=\"#contact\"]"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul class=\"feature-list\">",
"target": [
".feature-list"
]
}
]
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "listitem",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List item has a <ul>, <ol> or role=\"list\" parent element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<li><span class=\"check\">\u2713</span><span><strong>Make new things manageable</strong><span>Thoughtful, gradual socialization supports confidence without overwhelming your pet.</span></span></li>",
"target": [
".feature-list > 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\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/96x96/315b48/ffffff?text=KP&font=playfair+display\" alt=\"Kindred Paws logo placeholder\">",
"target": [
"img[alt=\"Kindred Paws logo placeholder\"]"
]
}
]
},
{
"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": "My pet is in their\u2026"
},
"relatedNodes": [
{
"html": "<label for=\"life-stage\">My pet is in their\u2026</label>",
"target": [
"label[for=\"life-stage\"]"
]
}
],
"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=\"life-stage\" name=\"life-stage\">\n <option value=\"young\">puppy or kitten stage</option>\n <option value=\"adult\">adult years</option>\n <option value=\"senior\">senior years</option>\n </select>",
"target": [
"#life-stage"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<summary>How often should my pet see a veterinarian?</summary>",
"target": [
"details:nth-child(1) > summary"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 226.4,
"height": 47
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (226.4px by 47px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a class=\"brand\" href=\"#home\" aria-label=\"Kindred Paws home\">",
"target": [
".nav-wrap > .brand[href$=\"#home\"][aria-label=\"Kindred Paws home\"]"
]
}
]
}
],
"incomplete": [
{
"id": "aria-prohibited-attr",
"impact": "serious",
"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": {
"role": null,
"nodeName": "div",
"messageKey": "noRoleSingular",
"prohibited": [
"aria-label"
]
},
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute is not well supported on a div with no valid role attribute."
}
],
"impact": "serious",
"html": "<div class=\"trust-strip\" aria-label=\"Our approach\">",
"target": [
".trust-strip"
],
"failureSummary": "Fix all of the following:\n aria-label attribute is not well supported on a div with no valid role attribute."
}
]
},
{
"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": {
"fontSize": "9.1pt (12.16px)",
"fontWeight": "bold",
"messageKey": "pseudoContent",
"expectedContrastRatio": "4.5:1"
},
"relatedNodes": [
{
"html": "<section class=\"hero\">",
"target": [
".hero"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a pseudo element"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">A little more confident. A lot more connected.</p>",
"target": [
".hero-copy > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a pseudo element"
}
]
}
],
"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": "#62716a",
"bgColor": "#e6eee5",
"contrastRatio": 4.33,
"fontSize": "9.1pt (12.16px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"feature-section\">",
"target": [
".feature-section"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 9.1pt (12.16px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Behavior support, without the judgment</p>",
"target": [
".feature-copy > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 9.1pt (12.16px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#e6eee5",
"contrastRatio": 4.33,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"feature-section\">",
"target": [
".feature-section"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Barking, scratching, hiding, or pulling on leash can be a pet's way of communicating. Instead of looking for a quick fix, begin with patterns: when does it happen, what changed, and what helps your pet feel secure?</p>",
"target": [
".feature-copy > p:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#e6eee5",
"contrastRatio": 4.33,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"feature-section\">",
"target": [
".feature-section"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Consistent routines, enrichment, and reward-based practice can make a real difference. When a behavior is sudden, intense, or causing distress, your veterinarian can help rule out pain or illness and connect you with a qualified trainer or veterinary behavior professional.</p>",
"target": [
".feature-copy > p:nth-child(4)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#e6eee5",
"contrastRatio": 4.33,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"feature-section\">",
"target": [
".feature-section"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>Make new things manageable</strong>",
"target": [
"li:nth-child(1) > span:nth-child(2) > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#e6eee5",
"contrastRatio": 4.33,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"feature-section\">",
"target": [
".feature-section"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Thoughtful, gradual socialization supports confidence without overwhelming your pet.</span>",
"target": [
"li:nth-child(1) > span:nth-child(2) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#e6eee5",
"contrastRatio": 4.33,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"feature-section\">",
"target": [
".feature-section"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>Reward the behavior you want</strong>",
"target": [
"li:nth-child(2) > span:nth-child(2) > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#e6eee5",
"contrastRatio": 4.33,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"feature-section\">",
"target": [
".feature-section"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Mark calm choices right away with a treat, praise, or play your pet enjoys.</span>",
"target": [
"li:nth-child(2) > span:nth-child(2) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#e6eee5",
"contrastRatio": 4.33,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"feature-section\">",
"target": [
".feature-section"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>Get help early</strong>",
"target": [
"li:nth-child(3) > span:nth-child(2) > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#e6eee5",
"contrastRatio": 4.33,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"feature-section\">",
"target": [
".feature-section"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>A trusted professional can tailor a plan to your pet and household.</span>",
"target": [
"li:nth-child(3) > span:nth-child(2) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #e6eee5, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#f4e9d8",
"contrastRatio": 4.27,
"fontSize": "10.0pt (13.28px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"safety-panel\">",
"target": [
".safety-panel"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.27 (foreground color: #62716a, background color: #f4e9d8, font size: 10.0pt (13.28px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Include food, water, medication, a photo, and copies of records.</span>",
"target": [
".safety-tip:nth-child(1) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.27 (foreground color: #62716a, background color: #f4e9d8, font size: 10.0pt (13.28px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#f4e9d8",
"contrastRatio": 4.27,
"fontSize": "10.0pt (13.28px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"safety-panel\">",
"target": [
".safety-panel"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.27 (foreground color: #62716a, background color: #f4e9d8, font size: 10.0pt (13.28px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Save your regular vet and local emergency hospital before you need them.</span>",
"target": [
".safety-tip:nth-child(2) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.27 (foreground color: #62716a, background color: #f4e9d8, font size: 10.0pt (13.28px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#f4e9d8",
"contrastRatio": 4.27,
"fontSize": "10.0pt (13.28px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"safety-panel\">",
"target": [
".safety-panel"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.27 (foreground color: #62716a, background color: #f4e9d8, font size: 10.0pt (13.28px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Secure toxic plants, cleaning products, cords, and small chewable items.</span>",
"target": [
".safety-tip:nth-child(3) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.27 (foreground color: #62716a, background color: #f4e9d8, font size: 10.0pt (13.28px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#f4e9d8",
"contrastRatio": 4.27,
"fontSize": "10.0pt (13.28px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"safety-panel\">",
"target": [
".safety-panel"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.27 (foreground color: #62716a, background color: #f4e9d8, font size: 10.0pt (13.28px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Provide shade and water, and protect paws from hot or icy surfaces.</span>",
"target": [
".safety-tip:nth-child(4) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.27 (foreground color: #62716a, background color: #f4e9d8, font size: 10.0pt (13.28px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#f3eee4",
"contrastRatio": 4.44,
"fontSize": "12.2pt (16.32px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"community-section\" id=\"community\">",
"target": [
"#community"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.44 (foreground color: #62716a, background color: #f3eee4, font size: 12.2pt (16.32px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Every pet and person has their own story. Here's what a little guidance and a lot of care can make possible.</p>",
"target": [
".community-top > .section-heading > p:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.44 (foreground color: #62716a, background color: #f3eee4, font size: 12.2pt (16.32px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#e9dfcf",
"contrastRatio": 3.89,
"fontSize": "9.1pt (12.16px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"newsletter\" id=\"contact\">",
"target": [
"#contact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.89 (foreground color: #62716a, background color: #e9dfcf, font size: 9.1pt (12.16px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">A little goodness in your inbox</p>",
"target": [
".newsletter-inner > div:nth-child(1) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.89 (foreground color: #62716a, background color: #e9dfcf, font size: 9.1pt (12.16px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#e9dfcf",
"contrastRatio": 3.89,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"newsletter\" id=\"contact\">",
"target": [
"#contact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.89 (foreground color: #62716a, background color: #e9dfcf, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Get our monthly note with seasonal reminders and local ways to lend a paw.</p>",
"target": [
".newsletter-inner > div:nth-child(1) > p:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.89 (foreground color: #62716a, background color: #e9dfcf, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#62716a",
"bgColor": "#edece4",
"contrastRatio": 4.33,
"fontSize": "8.3pt (11.04px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header>",
"target": [
"header"
]
},
{
"html": "<div class=\"tool-card\">",
"target": [
".tool-card"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #edece4, font size: 8.3pt (11.04px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tagline\">Good care, closer connections.</span>",
"target": [
".nav-wrap > .brand[href$=\"#home\"][aria-label=\"Kindred Paws home\"] > .brand-copy > .tagline"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.33 (foreground color: #62716a, background color: #edece4, font size: 8.3pt (11.04px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 6963
},
{
"y": 576,
"height": 6963
},
{
"y": 1152,
"height": 6963
},
{
"y": 1728,
"height": 6963
},
{
"y": 2304,
"height": 6963
},
{
"y": 2880,
"height": 6963
},
{
"y": 3456,
"height": 6963
},
{
"y": 4032,
"height": 6963
},
{
"y": 4608,
"height": 6963
},
{
"y": 5184,
"height": 6963
},
{
"y": 5760,
"height": 6963
},
{
"y": 6243,
"height": 6963
}
],
"scans": 13,
"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", "About", "Community".
- **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: "Behavior Help", "Pet Safety", "Pet Health".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "socialization", "enrichment", "vaccination schedule".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Contact Shelter", "Get Supplies", "Adopt Today".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Pets" sector. Ideas similar but not limited to: "pet name generator".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "event calendar", "pet health tips", "adoption success stories".
- **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.