NVIDIA Nemotron 3 Ultra – Family and Parenting
via BaseTen · Generated
- AIMAC Debt 13.14
- Cost $0.06
- Total Violations 30
- HTML Size 83 KB
- Em Dashes 1
Screenshot
View Live Page
Accessibility Issues Found
1 Critical 29 Serious
-
aria-required-children critical 1 instance
Certain ARIA roles must contain particular children
Example HTML
<div class="social-links" role="list" aria-label="Social Media Links"> -
color-contrast serious 27 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<a href="/" aria-current="page">Home</a> -
target-size serious 2 instances
All touch targets must be 24px large, or leave sufficient space
Example HTML
<button class="tab-btn active" role="tab" aria-selected="true" aria-controls="panel-0-12" id="tab-0-12" data-panel="panel-0-12">0–12 Months</button>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Little Sprouts Guide: Expert parenting advice, developmental milestone trackers, educational activities, and community support for modern families.">
<title>Little Sprouts Guide | Cultivating Confidence, One Milestone at a Time</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,600;1,400&display=swap" rel="stylesheet">
<style>
/* =========================================
CSS CUSTOM PROPERTIES & RESET
========================================= */
:root {
/* Light Theme (Default) */
--color-bg: #fdfbf7;
--color-bg-alt: #ffffff;
--color-text: #2d2d2d;
--color-text-muted: #5a5a5a;
--color-primary: #2a7f62; /* Deep Teal */
--color-primary-hover: #1e5f4a;
--color-primary-light: #e8f4ef;
--color-accent: #e8a87c; /* Warm Terracotta */
--color-accent-hover: #d48c5e;
--color-border: #eaeaea;
--color-shadow: rgba(42, 127, 98, 0.1);
--color-focus: #2a7f62;
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
--font-serif: 'Playfair Display', Georgia, serif;
--space-xs: 0.5rem;
--space-sm: 1rem;
--space-md: 1.5rem;
--space-lg: 3rem;
--space-xl: 5rem;
--container-max: 1200px;
--header-height: 72px;
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 16px;
--radius-full: 9999px;
--transition-fast: 150ms ease;
--transition-base: 250ms ease;
--transition-slow: 400ms ease;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--color-bg: #1a1a1a;
--color-bg-alt: #242424;
--color-text: #f0efe9;
--color-text-muted: #a0a0a0;
--color-primary: #4adeb0;
--color-primary-hover: #6ee7c2;
--color-primary-light: #064e3b;
--color-accent: #f9b382;
--color-accent-hover: #fca66a;
--color-border: #333;
--color-shadow: rgba(0, 0, 0, 0.4);
--color-focus: #4adeb0;
}
}
[data-theme="light"] { /* Explicit light mode override */
--color-bg: #fdfbf7;
--color-bg-alt: #ffffff;
--color-text: #2d2d2d;
--color-text-muted: #5a5a5a;
--color-primary: #2a7f62;
--color-primary-hover: #1e5f4a;
--color-primary-light: #e8f4ef;
--color-accent: #e8a87c;
--color-accent-hover: #d48c5e;
--color-border: #eaeaea;
--color-shadow: rgba(42, 127, 98, 0.1);
}
[data-theme="dark"] { /* Explicit dark mode override */
--color-bg: #1a1a1a;
--color-bg-alt: #242424;
--color-text: #f0efe9;
--color-text-muted: #a0a0a0;
--color-primary: #4adeb0;
--color-primary-hover: #6ee7c2;
--color-primary-light: #064e3b;
--color-accent: #f9b382;
--color-accent-hover: #fca66a;
--color-border: #333;
--color-shadow: rgba(0, 0, 0, 0.4);
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; font-size: 16px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
body { font-family: var(--font-sans); background-color: var(--color-bg); color: var(--color-text); line-height: 1.7; font-weight: 400; transition: background-color var(--transition-base), color var(--transition-base); }
img, picture, video, canvas, svg { display: block; max-width: 100%; height: auto; }
a { color: var(--color-primary); text-decoration: none; transition: color var(--transition-fast); }
a:hover { color: var(--color-primary-hover); text-decoration: underline; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 2px; border-radius: var(--radius-sm); }
h1, h2, h3, h4 { font-family: var(--font-serif); font-weight: 600; line-height: 1.2; color: var(--color-text); }
h1 { font-size: clamp(2.5rem, 5vw + 1rem, 4rem); letter-spacing: -0.02em; }
h2 { font-size: clamp(2rem, 3vw + 1rem, 3rem); letter-spacing: -0.01em; margin-bottom: var(--space-sm); }
h3 { font-size: clamp(1.25rem, 1.5vw + 1rem, 1.75rem); margin-bottom: var(--space-xs); }
p { margin-bottom: 1em; color: var(--color-text-muted); max-width: 75ch; }
.container { width: 100%; max-width: var(--container-max); margin: 0 auto; padding: 0 var(--space-md); }
.section { padding: var(--space-xl) 0; }
.section-header { text-align: center; max-width: 700px; margin: 0 auto var(--space-xl); }
.section-header p { font-size: 1.125rem; margin: 0; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-xs); padding: 0.875rem 1.75rem; border-radius: var(--radius-full); font-weight: 600; font-size: 0.9375rem; border: 2px solid transparent; cursor: pointer; transition: all var(--transition-fast); text-decoration: none; white-space: nowrap; }
.btn-primary { background-color: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.btn-primary:hover { background-color: var(--color-primary-hover); border-color: var(--color-primary-hover); color: #fff; text-decoration: none; transform: translateY(-2px); box-shadow: 0 4px 12px var(--color-shadow); }
.btn-secondary { background-color: transparent; color: var(--color-primary); border-color: var(--color-primary); }
.btn-secondary:hover { background-color: var(--color-primary-light); color: var(--color-primary-hover); text-decoration: none; }
.btn-accent { background-color: var(--color-accent); color: #fff; border-color: var(--color-accent); }
.btn-accent:hover { background-color: var(--color-accent-hover); border-color: var(--color-accent-hover); color: #fff; text-decoration: none; transform: translateY(-2px); }
/* =========================================
HEADER & NAVIGATION
========================================= */
.site-header { position: sticky; top: 0; z-index: 100; background-color: var(--color-bg-alt); border-bottom: 1px solid var(--color-border); height: var(--header-height); transition: background-color var(--transition-base), border-color var(--transition-base); }
.header-inner { display: flex; align-items: center; justify-content: space-between; height: 100%; gap: var(--space-md); }
.logo { display: flex; align-items: center; gap: var(--space-sm); text-decoration: none; color: var(--color-text); flex-shrink: 0; }
.logo-img { width: 40px; height: 40px; border-radius: var(--radius-md); object-fit: cover; }
.logo-text { font-family: var(--font-serif); font-size: 1.5rem; font-weight: 600; color: var(--color-text); letter-spacing: -0.01em; }
.logo-tagline { display: none; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--color-text-muted); font-family: var(--font-sans); font-weight: 500; }
.nav-primary { display: none; gap: var(--space-xs); list-style: none; }
.nav-primary a { display: block; padding: var(--space-xs) var(--space-sm); color: var(--color-text-muted); font-weight: 500; font-size: 0.9rem; border-radius: var(--radius-md); transition: all var(--transition-fast); text-decoration: none; }
.nav-primary a:hover, .nav-primary a[aria-current="page"] { color: var(--color-primary); background-color: var(--color-primary-light); text-decoration: none; }
.header-actions { display: flex; align-items: center; gap: var(--space-sm); flex-shrink: 0; }
.theme-toggle { background: var(--color-bg); border: 1px solid var(--color-border); padding: 0.5rem; border-radius: var(--radius-full); cursor: pointer; display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; color: var(--color-text); transition: all var(--transition-fast); }
.theme-toggle:hover { border-color: var(--color-primary); color: var(--color-primary); }
.theme-toggle svg { width: 20px; height: 20px; display: none; }
.theme-toggle .sun-icon { display: block; }
[data-theme="dark"] .theme-toggle .sun-icon { display: none; }
[data-theme="dark"] .theme-toggle .moon-icon { display: block; }
.mobile-menu-btn { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; background: none; border: none; color: var(--color-text); padding: 0; }
.mobile-menu-btn svg { width: 24px; height: 24px; }
/* Mobile Nav Overlay */
.mobile-nav-overlay { position: fixed; inset: 0; background: var(--color-bg-alt); z-index: 200; display: flex; flex-direction: column; padding: var(--space-xl) var(--space-md); transform: translateX(100%); transition: transform var(--transition-base) ease-out; opacity: 0; visibility: hidden; }
.mobile-nav-overlay.is-open { transform: translateX(0); opacity: 1; visibility: visible; }
.mobile-nav-close { align-self: flex-end; background: none; border: none; color: var(--color-text); padding: var(--space-xs); margin-bottom: var(--space-md); }
.mobile-nav-list { list-style: none; display: flex; flex-direction: column; gap: var(--space-xs); flex-grow: 1; }
.mobile-nav-list a { display: block; padding: var(--space-sm) var(--space-md); font-size: 1.125rem; font-weight: 500; color: var(--color-text); border-radius: var(--radius-md); text-decoration: none; }
.mobile-nav-list a:hover, .mobile-nav-list a[aria-current="page"] { background: var(--color-primary-light); color: var(--color-primary); }
.mobile-nav-cta { margin-top: auto; display: flex; flex-direction: column; gap: var(--space-sm); }
/* =========================================
HERO SECTION
========================================= */
.hero { position: relative; padding: calc(var(--space-xl) + var(--header-height)) 0 var(--space-xl); overflow: hidden; }
.hero::before { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: radial-gradient(ellipse at 20% 0%, var(--color-primary-light) 0%, transparent 60%), radial-gradient(ellipse at 80% 100%, #fff3e0 0%, transparent 50%); opacity: 0.5; z-index: -1; pointer-events: none; }
[data-theme="dark"] .hero::before { background: radial-gradient(ellipse at 20% 0%, var(--color-primary-light) 0%, transparent 60%), radial-gradient(ellipse at 80% 100%, #3d2b1f 0%, transparent 50%); }
.hero-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-xl); align-items: center; }
.hero-content { text-align: center; }
.hero-badge { display: inline-block; background: var(--color-primary-light); color: var(--color-primary); padding: var(--space-xs) var(--space-md); border-radius: var(--radius-full); font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: var(--space-md); }
.hero h1 { margin-bottom: var(--space-md); }
.hero .lead { font-size: 1.25rem; color: var(--color-text); font-weight: 400; margin-bottom: var(--space-lg); max-width: 60ch; margin-left: auto; margin-right: auto; font-family: var(--font-serif); font-style: italic; }
.hero-ctas { display: flex; flex-direction: column; gap: var(--space-sm); align-items: center; margin-top: var(--space-md); }
.hero-image { border-radius: var(--radius-lg); box-shadow: 0 20px 40px var(--color-shadow); overflow: hidden; background: var(--color-border); aspect-ratio: 4/3; }
.hero-image img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--transition-slow); }
.hero-image:hover img { transform: scale(1.02); }
.trust-indicators { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-lg); margin-top: var(--space-xl); padding-top: var(--space-lg); border-top: 1px solid var(--color-border); color: var(--color-text-muted); font-size: 0.875rem; }
.trust-indicators span { display: flex; align-items: center; gap: var(--space-xs); font-weight: 500; }
/* =========================================
FEATURE GRID (PARENTING PILLARS)
========================================= */
.features { background-color: var(--color-bg-alt); border-top: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); }
.features-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-lg); }
.feature-card { background: var(--color-bg); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-lg); transition: all var(--transition-base); display: flex; flex-direction: column; }
.feature-card:hover { transform: translateY(-4px); box-shadow: 0 12px 24px var(--color-shadow); border-color: var(--color-primary); }
.feature-icon { width: 56px; height: 56px; border-radius: var(--radius-md); background: var(--color-primary-light); color: var(--color-primary); display: flex; align-items: center; justify-content: center; margin-bottom: var(--space-md); flex-shrink: 0; }
.feature-icon svg { width: 28px; height: 28px; }
.feature-card h3 { color: var(--color-text); }
.feature-card p { flex-grow: 1; margin-bottom: var(--space-md); font-size: 0.9375rem; }
.feature-link { font-weight: 600; font-size: 0.9rem; display: inline-flex; align-items: center; gap: 4px; color: var(--color-primary); text-decoration: none; }
.feature-link:hover { gap: 8px; text-decoration: none; }
/* =========================================
INTERACTIVE MILESTONE CHECKER
========================================= */
.milestone-checker { background: var(--color-bg); }
.checker-wrapper { max-width: 800px; margin: 0 auto; }
.checker-tabs { display: flex; flex-wrap: wrap; gap: var(--space-xs); justify-content: center; margin-bottom: var(--space-lg); border-bottom: 2px solid var(--color-border); padding-bottom: var(--space-xs); }
.tab-btn { padding: var(--space-xs) var(--space-md); background: none; border: none; color: var(--color-text-muted); font-weight: 500; font-size: 0.9rem; cursor: pointer; border-radius: var(--radius-full); transition: all var(--transition-fast); position: relative; }
.tab-btn:hover { color: var(--color-text); background: var(--color-bg-alt); }
.tab-btn.active { color: var(--color-primary); background: var(--color-primary-light); }
.checker-panel { display: none; animation: fadeIn 0.3s ease; }
.checker-panel.active { display: block; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.milestone-category { margin-bottom: var(--space-lg); }
.milestone-category h4 { font-family: var(--font-sans); font-size: 1rem; color: var(--color-primary); margin-bottom: var(--space-sm); padding-bottom: var(--space-xs); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; gap: var(--space-xs); }
.milestone-list { list-style: none; display: grid; gap: var(--space-sm); }
.milestone-item { display: flex; align-items: flex-start; gap: var(--space-sm); padding: var(--space-md); background: var(--color-bg-alt); border: 1px solid var(--color-border); border-radius: var(--radius-md); transition: all var(--transition-fast); }
.milestone-item:hover { border-color: var(--color-primary); }
.milestone-checkbox { appearance: none; width: 24px; height: 24px; border: 2px solid var(--color-border); border-radius: var(--radius-sm); margin-top: 2px; flex-shrink: 0; cursor: pointer; position: relative; transition: all var(--transition-fast); }
.milestone-checkbox:checked { background: var(--color-primary); border-color: var(--color-primary); }
.milestone-checkbox:checked::after { content: ''; position: absolute; left: 7px; top: 3px; width: 5px; height: 10px; border: solid white; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.milestone-checkbox:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 2px; }
.milestone-text { font-size: 0.9375rem; color: var(--color-text); line-height: 1.5; }
.milestone-age { font-size: 0.75rem; font-weight: 600; color: var(--color-accent); background: #fff3e0; padding: 2px 8px; border-radius: var(--radius-full); margin-left: auto; white-space: nowrap; flex-shrink: 0; }
[data-theme="dark"] .milestone-age { background: #3d2b1f; }
/* =========================================
EXPERT TESTIMONIALS
========================================= */
.testimonials { background: var(--color-bg-alt); }
.testimonials-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-lg); }
.testimonial-card { background: var(--color-bg); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-lg); display: flex; flex-direction: column; }
.testimonial-quote { font-family: var(--font-serif); font-style: italic; font-size: 1.125rem; color: var(--color-text); line-height: 1.6; margin-bottom: var(--space-lg); flex-grow: 1; position: relative; padding-left: var(--space-md); border-left: 3px solid var(--color-primary); }
.testimonial-author { display: flex; align-items: center; gap: var(--space-sm); }
.author-avatar { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; border: 2px solid var(--color-primary-light); }
.author-info { line-height: 1.3; }
.author-name { font-weight: 600; color: var(--color-text); font-family: var(--font-sans); }
.author-role { font-size: 0.875rem; color: var(--color-text-muted); }
/* =========================================
BLOG PREVIEW
========================================= */
.blog-preview { background: var(--color-bg); }
.blog-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-lg); }
.article-card { background: var(--color-bg-alt); border: 1px solid var(--color-border); border-radius: var(--radius-lg); overflow: hidden; display: flex; flex-direction: column; transition: all var(--transition-base); }
.article-card:hover { transform: translateY(-4px); box-shadow: 0 12px 24px var(--color-shadow); border-color: transparent; }
.article-image { aspect-ratio: 16/9; overflow: hidden; background: var(--color-border); }
.article-image img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--transition-slow); }
.article-card:hover .article-image img { transform: scale(1.05); }
.article-content { padding: var(--space-lg); display: flex; flex-direction: column; flex-grow: 1; }
.article-meta { display: flex; gap: var(--space-sm); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-primary); font-weight: 600; margin-bottom: var(--space-xs); }
.article-meta time { color: var(--color-text-muted); font-weight: 400; text-transform: none; letter-spacing: 0; }
.article-card h3 { font-size: 1.25rem; margin-bottom: var(--space-xs); line-height: 1.3; }
.article-card h3 a { color: var(--color-text); text-decoration: none; transition: color var(--transition-fast); }
.article-card h3 a:hover { color: var(--color-primary); text-decoration: none; }
.article-excerpt { color: var(--color-text-muted); font-size: 0.9375rem; flex-grow: 1; margin-bottom: var(--space-md); }
.article-link { font-weight: 600; font-size: 0.875rem; display: inline-flex; align-items: center; gap: 4px; color: var(--color-primary); }
.article-link:hover { gap: 8px; }
/* =========================================
NEWSLETTER / SIDEBAR CTAs
========================================= */
.newsletter-section { background: linear-gradient(135deg, var(--color-primary) 0%, #1e5f4a 100%); color: #fff; border-radius: var(--radius-lg); padding: var(--space-lg); text-align: center; margin-top: var(--space-xl); }
.newsletter-section h3 { color: #fff; margin-bottom: var(--space-xs); }
.newsletter-section p { color: rgba(255,255,255,0.8); margin-bottom: var(--space-md); max-width: none; }
.newsletter-form { display: flex; flex-direction: column; gap: var(--space-sm); max-width: 400px; margin: 0 auto; }
.newsletter-form .form-group { display: flex; gap: var(--space-xs); }
.newsletter-form input[type="email"] { flex-grow: 1; padding: 0.875rem 1.25rem; border: none; border-radius: var(--radius-full); font-family: var(--font-sans); font-size: 1rem; background: #fff; color: var(--color-text); }
.newsletter-form input[type="email"]::placeholder { color: var(--color-text-muted); }
.newsletter-form button { background: var(--color-accent); color: #fff; border: none; padding: 0.875rem 1.5rem; border-radius: var(--radius-full); font-weight: 600; cursor: pointer; transition: background var(--transition-fast); white-space: nowrap; }
.newsletter-form button:hover { background: var(--color-accent-hover); }
/* =========================================
FOOTER
========================================= */
.site-footer { background: var(--color-bg-alt); border-top: 1px solid var(--color-border); padding: var(--space-xl) 0 var(--space-lg); margin-top: var(--space-xl); }
.footer-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-xl); margin-bottom: var(--space-xl); }
.footer-brand { max-width: 350px; }
.footer-brand .logo { margin-bottom: var(--space-md); }
.footer-brand p { color: var(--color-text-muted); font-size: 0.9375rem; margin-bottom: var(--space-md); }
.social-links { display: flex; gap: var(--space-sm); }
.social-links a { width: 40px; height: 40px; border-radius: 50%; background: var(--color-bg); border: 1px solid var(--color-border); display: flex; align-items: center; justify-content: center; color: var(--color-text-muted); transition: all var(--transition-fast); }
.social-links a:hover { background: var(--color-primary); border-color: var(--color-primary); color: #fff; text-decoration: none; transform: translateY(-2px); }
.social-links svg { width: 20px; height: 20px; }
.footer-nav { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-lg); }
.footer-column h4 { font-family: var(--font-sans); font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-text-muted); margin-bottom: var(--space-md); font-weight: 600; }
.footer-column ul { list-style: none; display: flex; flex-direction: column; gap: var(--space-xs); }
.footer-column a { color: var(--color-text); font-size: 0.9375rem; transition: color var(--transition-fast); text-decoration: none; }
.footer-column a:hover { color: var(--color-primary); text-decoration: none; }
.footer-bottom { padding-top: var(--space-lg); border-top: 1px solid var(--color-border); display: flex; flex-direction: column; align-items: center; gap: var(--space-sm); text-align: center; font-size: 0.875rem; color: var(--color-text-muted); }
.footer-bottom a { color: var(--color-text-muted); }
.footer-bottom a:hover { color: var(--color-primary); }
/* =========================================
LAYOUT: MAIN + SIDEBAR (Desktop)
========================================= */
.main-layout { display: grid; grid-template-columns: 1fr; gap: var(--space-xl); }
@media (min-width: 768px) {
.logo-tagline { display: block; }
.nav-primary { display: flex; }
.mobile-menu-btn { display: none; }
.hero-grid { grid-template-columns: 1fr 1fr; text-align: left; }
.hero-content { text-align: left; }
.hero-ctas { flex-direction: row; justify-content: flex-start; }
.hero .lead { margin-left: 0; margin-right: 0; }
.trust-indicators { justify-content: flex-start; }
.features-grid { grid-template-columns: repeat(2, 1fr); }
.testimonials-grid { grid-template-columns: repeat(3, 1fr); }
.blog-grid { grid-template-columns: repeat(3, 1fr); }
.checker-tabs { justify-content: flex-start; padding-left: var(--space-xs); }
.main-layout { grid-template-columns: 1fr 320px; align-items: start; }
.sidebar { position: sticky; top: calc(var(--header-height) + var(--space-lg)); }
.newsletter-section { margin-top: 0; border-radius: var(--radius-lg); }
.footer-grid { grid-template-columns: 1.5fr repeat(3, 1fr); }
.footer-bottom { flex-direction: row; justify-content: space-between; text-align: left; }
}
@media (min-width: 1024px) {
.features-grid { grid-template-columns: repeat(4, 1fr); }
}
/* =========================================
UTILITIES & ANIMATIONS
========================================= */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.reveal { opacity: 0; transform: translateY(20px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; }
.reveal.visible { opacity: 1; transform: translateY(0); }
.stagger-1 { transition-delay: 100ms; }
.stagger-2 { transition-delay: 200ms; }
.stagger-3 { transition-delay: 300ms; }
.stagger-4 { transition-delay: 400ms; }
/* Form Inputs Base */
input, select, textarea, button { font-family: inherit; font-size: inherit; }
</style>
</head>
<body data-theme="light">
<!-- =========================================
HEADER
========================================= -->
<header class="site-header" role="banner">
<div class="container header-inner">
<a href="/" class="logo" aria-label="Little Sprouts Guide Home">
<img src="https://placehold.co/80x80/2a7f62/ffffff?text=LS&font=playfair+display" alt="" class="logo-img" width="40" height="40" loading="eager">
<div>
<span class="logo-text">Little Sprouts Guide</span>
<span class="logo-tagline">Cultivating Confidence</span>
</div>
</a>
<nav class="nav-primary" aria-label="Primary Navigation" role="navigation">
<ul>
<li><a href="/" aria-current="page">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/activities">Activities</a></li>
<li><a href="/expert-advice">Expert Advice</a></li>
<li><a href="/community">Community</a></li>
<li><a href="/shop">Shop</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>
<div class="header-actions">
<button class="theme-toggle" id="themeToggle" aria-label="Toggle dark mode" title="Toggle dark mode">
<svg class="sun-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg>
<svg class="moon-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</button>
<a href="/subscribe" class="btn btn-primary" style="display: none;">Subscribe</a>
<button class="mobile-menu-btn" id="mobileMenuBtn" aria-label="Open menu" aria-expanded="false" aria-controls="mobileNav">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="18" x2="21" y2="18"/></svg>
</button>
</div>
</div>
</header>
<!-- Mobile Nav Overlay -->
<div class="mobile-nav-overlay" id="mobileNav" role="dialog" aria-modal="true" aria-labelledby="mobileNavTitle">
<button class="mobile-nav-close" id="mobileNavClose" aria-label="Close menu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg></button>
<h2 id="mobileNavTitle" class="sr-only">Navigation Menu</h2>
<ul class="mobile-nav-list">
<li><a href="/" aria-current="page">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/activities">Activities</a></li>
<li><a href="/expert-advice">Expert Advice</a></li>
<li><a href="/community">Community</a></li>
<li><a href="/shop">Shop</a></li>
<li><a href="/about">About</a></li>
</ul>
<div class="mobile-nav-cta">
<a href="/subscribe" class="btn btn-primary">Subscribe to Newsletter</a>
<a href="/contact" class="btn btn-secondary">Contact Us</a>
</div>
</div>
<!-- =========================================
MAIN CONTENT
========================================= -->
<main id="mainContent" role="main">
<!-- HERO SECTION -->
<section class="hero reveal" aria-labelledby="hero-title">
<div class="container">
<div class="hero-grid">
<div class="hero-content">
<span class="hero-badge">Trusted by 500k+ Parents Worldwide</span>
<h1 id="hero-title">Evidence-Based Parenting for the Modern Family</h1>
<p class="lead">Navigate developmental milestones, manage screen time, and foster emotional intelligence with confidence. We translate research into practical daily rhythms.</p>
<div class="hero-ctas">
<a href="/milestone-checker" class="btn btn-primary">Check Milestones Now</a>
<a href="/blog" class="btn btn-secondary">Read Latest Articles</a>
</div>
<div class="trust-indicators">
<span><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></svg> Pediatrician Reviewed</span>
<span><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg> 500k+ Families</span>
<span><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8"/><path d="M12 17v4"/></svg> Evidence-Based</span>
</div>
</div>
<div class="hero-image reveal stagger-1">
<img src="https://picsum.photos/seed/littlesprouts-hero/800/600.jpg" alt="A diverse family reading together on a couch, warm lighting" loading="eager" width="800" height="600">
</div>
</div>
</div>
</section>
<!-- PARENTING PILLARS / FEATURES -->
<section class="features section reveal" aria-labelledby="pillars-title">
<div class="container">
<header class="section-header">
<h2 id="pillars-title">Our Four Parenting Pillars</h2>
<p>Foundational frameworks built on developmental psychology and real-world application to support your journey from newborn to teenager.</p>
</header>
<div class="features-grid">
<!-- Card 1 -->
<article class="feature-card reveal stagger-1">
<div class="feature-icon" aria-hidden="true">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>
</div>
<h3>Positive Discipline</h3>
<p>Move beyond time-outs and punishment. Learn connective parenting strategies that teach emotional regulation and cooperation through mutual respect, natural consequences, and firm, kind boundaries.</p>
<a href="/positive-discipline" class="feature-link">Explore Strategies <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></a>
</article>
<!-- Card 2 -->
<article class="feature-card reveal stagger-2">
<div class="feature-icon" aria-hidden="true">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8"/><path d="M12 17v4"/></svg>
</div>
<h3>Digital Wellness</h3>
<p>Create a family media plan that works. We help you navigate screen time limits, age-appropriate content curation, and modeling healthy tech habits without the guilt or power struggles.</p>
<a href="/digital-wellness" class="feature-link">Build a Plan <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></a>
</article>
<!-- Card 3 -->
<article class="feature-card reveal stagger-3">
<div class="feature-icon" aria-hidden="true">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg>
</div>
<h3>Nutrition & Mealtimes</h3>
<p>Transform picky eating into food exploration. Access dietitian-approved meal plans, division of responsibility guidelines, and sensory-friendly recipes that nurture a healthy relationship with food.</p>
<a href="/nutrition" class="feature-link">View Recipes <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></a>
</article>
<!-- Card 4 -->
<article class="feature-card reveal stagger-4">
<div class="feature-icon" aria-hidden="true">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2a10 10 0 0 0-7.5 3.5"/><path d="M22 12a10 10 0 0 1-7.5-3.5"/><path d="M7 19a10 10 0 0 1 3.5-7.5"/><path d="M17 5a10 10 0 0 1 3.5 7.5"/></svg>
</div>
<h3>Sleep Rhythms</h3>
<p>Establish sustainable sleep hygiene for the whole household. From newborn wake windows to toddler nap transitions and teen circadian shifts, get science-backed schedules and troubleshooting guides.</p>
<a href="/sleep" class="feature-link">Get Schedules <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></a>
</article>
</div>
</div>
</section>
<!-- MAIN LAYOUT: CONTENT + SIDEBAR -->
<div class="main-layout">
<div class="main-content">
<!-- INTERACTIVE MILESTONE CHECKER -->
<section class="milestone-checker section reveal" aria-labelledby="checker-title">
<div class="container checker-wrapper">
<header class="section-header">
<h2 id="checker-title">Developmental Milestone Checker</h2>
<p>Select your child's age range to see key developmental markers across motor, cognitive, language, and social-emotional domains. Remember: every child develops at their own pace.</p>
</header>
<div class="checker-tabs" role="tablist" aria-label="Age range selection">
<button class="tab-btn active" role="tab" aria-selected="true" aria-controls="panel-0-12" id="tab-0-12" data-panel="panel-0-12">0–12 Months</button>
<button class="tab-btn" role="tab" aria-selected="false" aria-controls="panel-1-3" id="tab-1-3" data-panel="panel-1-3">1–3 Years</button>
<button class="tab-btn" role="tab" aria-selected="false" aria-controls="panel-3-5" id="tab-3-5" data-panel="panel-3-5">3–5 Years</button>
<button class="tab-btn" role="tab" aria-selected="false" aria-controls="panel-6-12" id="tab-6-12" data-panel="panel-6-12">6–12 Years</button>
<button class="tab-btn" role="tab" aria-selected="false" aria-controls="panel-teen" id="tab-teen" data-panel="panel-teen">Teens (13+)</button>
</div>
<!-- Panel 0-12 Months -->
<div class="checker-panel active" id="panel-0-12" role="tabpanel" aria-labelledby="tab-0-12">
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/></svg> Social & Emotional</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m1-1"><label for="m1-1" class="milestone-text">Smiles responsively at caregivers (2-3 months)</label><span class="milestone-age">2-3 mo</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m1-2"><label for="m1-2" class="milestone-text">Enjoys peek-a-boo and shows stranger anxiety (6-9 months)</label><span class="milestone-age">6-9 mo</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m1-3"><label for="m1-3" class="milestone-text">Imitates gestures (waving, clapping) and shows preferences for people (9-12 months)</label><span class="milestone-age">9-12 mo</span></li>
</ul>
</div>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg> Language & Communication</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m2-1"><label for="m2-1" class="milestone-text">Coos and makes gurgling sounds (2-4 months)</label><span class="milestone-age">2-4 mo</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m2-2"><label for="m2-2" class="milestone-text">Babbles consonant chains ("ba-ba", "ma-ma") and responds to name (6-9 months)</label><span class="milestone-age">6-9 mo</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m2-3"><label for="m2-3" class="milestone-text">Says 1-2 words with meaning, understands simple commands (12 months)</label><span class="milestone-age">12 mo</span></li>
</ul>
</div>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2L2 7l10 5 10-5-10-5z"/></svg> Cognitive & Motor</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m3-1"><label for="m3-1" class="milestone-text">Tracks objects visually, reaches for toys (3-4 months)</label><span class="milestone-age">3-4 mo</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m3-2"><label for="m3-2" class="milestone-text">Sits without support, transfers objects hand-to-hand (6-8 months)</label><span class="milestone-age">6-8 mo</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m3-3"><label for="m3-3" class="milestone-text">Pulls to stand, cruises furniture, pincer grasp emerging (9-12 months)</label><span class="milestone-age">9-12 mo</span></li>
</ul>
</div>
<p style="margin-top: var(--space-md); font-size: 0.875rem; color: var(--color-text-muted);"><strong>Note:</strong> This tool is for educational purposes only and does not replace professional developmental screening. Consult your pediatrician for concerns.</p>
</div>
<!-- Panel 1-3 Years (Hidden initially) -->
<div class="checker-panel" id="panel-1-3" role="tabpanel" aria-labelledby="tab-1-3" hidden>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/></svg> Social & Emotional</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m4-1"><label for="m4-1" class="milestone-text">Engages in parallel play; begins symbolic/pretend play (18-24 months)</label><span class="milestone-age">18-24 mo</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m4-2"><label for="m4-2" class="milestone-text">Shows defiance/autonomy ("No!" phase); separation anxiety peaks then fades (2-3 years)</label><span class="milestone-age">2-3 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m4-3"><label for="m4-3" class="milestone-text">Begins cooperative play, shares (with prompting), expresses wide range of emotions verbally (3 years)</label><span class="milestone-age">3 yr</span></li>
</ul>
</div>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg> Language & Communication</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m5-1"><label for="m5-1" class="milestone-text">Vocabulary explosion: 50+ words, combines 2 words ("more milk") (18-24 months)</label><span class="milestone-age">18-24 mo</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m5-2"><label for="m5-2" class="milestone-text">Speaks in 3-4 word sentences; 75% intelligible to strangers; asks "why?" (2-3 years)</label><span class="milestone-age">2-3 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m5-3"><label for="m5-3" class="milestone-text">Tells simple stories, uses pronouns correctly, follows 2-3 step directions (3 years)</label><span class="milestone-age">3 yr</span></li>
</ul>
</div>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2L2 7l10 5 10-5-10-5z"/></svg> Cognitive & Motor</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m6-1"><label for="m6-1" class="milestone-text">Walks independently, climbs stairs with help, stacks 4+ blocks (18-24 months)</label><span class="milestone-age">18-24 mo</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m6-2"><label for="m6-2" class="milestone-text">Runs, kicks ball, turns pages, completes simple puzzles (2-3 years)</label><span class="milestone-age">2-3 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m6-3"><label for="m6-3" class="milestone-text">Pedals tricycle, draws circle/cross, dresses with help, toilet training begins (3 years)</label><span class="milestone-age">3 yr</span></li>
</ul>
</div>
</div>
<!-- Panel 3-5 Years -->
<div class="checker-panel" id="panel-3-5" role="tabpanel" aria-labelledby="tab-3-5" hidden>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/></svg> Social & Emotional</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m7-1"><label for="m7-1" class="milestone-text">Engages in cooperative play with rules; negotiates solutions to conflicts (4-5 years)</label><span class="milestone-age">4-5 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m7-2"><label for="m7-2" class="milestone-text">Shows empathy, understands others' perspectives; imaginary friends common (4 years)</label><span class="milestone-age">4 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m7-3"><label for="m7-3" class="milestone-text">Desires to please friends; follows group rules; gender identity awareness solidifies (5 years)</label><span class="milestone-age">5 yr</span></li>
</ul>
</div>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg> Language & Communication</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m8-1"><label for="m8-1" class="milestone-text">Speaks clearly in complex sentences; vocabulary 1,500+ words; tells detailed stories (4 years)</label><span class="milestone-age">4 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m8-2"><label for="m8-2" class="milestone-text">Uses future/past tense correctly; understands rhyming; recognizes some letters (4-5 years)</label><span class="milestone-age">4-5 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m8-3"><label for="m8-3" class="milestone-text">Can recount daily events sequentially; defines simple words; early reading attempts (5 years)</label><span class="milestone-age">5 yr</span></li>
</ul>
</div>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2L2 7l10 5 10-5-10-5z"/></svg> Cognitive & Motor</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m9-1"><label for="m9-1" class="milestone-text">Hops on one foot, catches bounced ball, uses scissors, draws person with 2-4 parts (4 years)</label><span class="milestone-age">4 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m9-2"><label for="m9-2" class="milestone-text">Counts 10+ objects, copies triangle/letters, prints name, knows address (5 years)</label><span class="milestone-age">5 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m9-3"><label for="m9-3" class="milestone-text">Skips, ties knots, distinguishes left/right, attention span 15-20 mins (5 years)</label><span class="milestone-age">5 yr</span></li>
</ul>
</div>
</div>
<!-- Panel 6-12 Years -->
<div class="checker-panel" id="panel-6-12" role="tabpanel" aria-labelledby="tab-6-12" hidden>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/></svg> Social & Emotional</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m10-1"><label for="m10-1" class="milestone-text">Forms deeper peer friendships; develops sense of humor; compares self to others (6-8 years)</label><span class="milestone-age">6-8 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m10-2"><label for="m10-2" class="milestone-text">Increased independence from family; peer acceptance crucial; moral reasoning develops (9-12 years)</label><span class="milestone-age">9-12 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m10-3"><label for="m10-3" class="milestone-text">Manages complex emotions; begins identity exploration; navigates social hierarchies (10-12 years)</label><span class="milestone-age">10-12 yr</span></li>
</ul>
</div>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg> Language & Cognitive</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m11-1"><label for="m11-1" class="milestone-text">Reads fluently, writes narratives, understands sarcasm/idioms; abstract thinking emerges (9-12 years)</label><span class="milestone-age">9-12 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m11-2"><label for="m11-2" class="milestone-text">Organizes schoolwork independently; plans ahead; critical thinking and debate skills sharpen (10-12 years)</label><span class="milestone-age">10-12 yr</span></li>
</ul>
</div>
</div>
<!-- Panel Teens -->
<div class="checker-panel" id="panel-teen" role="tabpanel" aria-labelledby="tab-teen" hidden>
<div class="milestone-category">
<h4><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/></svg> Social, Emotional & Cognitive</h4>
<ul class="milestone-list">
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m12-1"><label for="m12-1" class="milestone-text">Intense focus on identity formation, autonomy, and peer group belonging (13-15 years)</label><span class="milestone-age">13-15 yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m12-2"><label for="m12-2" class="milestone-text">Abstract reasoning matures; hypothetical-deductive logic; risk assessment improves (16+ years)</label><span class="milestone-age">16+ yr</span></li>
<li class="milestone-item"><input type="checkbox" class="milestone-checkbox" id="m12-3"><label for="m12-3" class="milestone-text">Develops intimate relationships; vocational/educational planning; emotional regulation stabilizes (17-19 years)</label><span class="milestone-age">17-19 yr</span></li>
</ul>
</div>
</div>
</div>
</section>
<!-- EXPERT TESTIMONIALS -->
<section class="testimonials section reveal" aria-labelledby="experts-title">
<div class="container">
<header class="section-header">
<h2 id="experts-title">Trusted by Leading Experts</h2>
<p>Our content is reviewed by a diverse board of pediatricians, child psychologists, occupational therapists, and certified parenting coaches.</p>
</header>
<div class="testimonials-grid">
<article class="testimonial-card reveal stagger-1">
<blockquote class="testimonial-quote">"Little Sprouts Guide bridges the critical gap between academic research and the 3 AM parenting reality. Their milestone tracker is the only one I recommend to my patients because it emphasizes ranges over rigid deadlines."</blockquote>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/150?u=dr-elena-vasquez" alt="Dr. Elena Vasquez" class="author-avatar" loading="lazy" width="56" height="56">
<div class="author-info">
<cite class="author-name">Dr. Elena Vasquez, MD</cite>
<p class="author-role">Developmental-Behavioral Pediatrician</p>
</div>
</div>
</article>
<article class="testimonial-card reveal stagger-2">
<blockquote class="testimonial-quote">"The screen time framework provided here aligns perfectly with AAP guidelines but adds the missing piece: practical scripts for parents. It transforms 'no screens' into 'intentional tech use' — a game changer for family dynamics."</blockquote>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/150?u=marcus-chen" alt="Marcus Chen" class="author-avatar" loading="lazy" width="56" height="56">
<div class="author-info">
<cite class="author-name">Marcus Chen, PhD</cite>
<p class="author-role">Child Psychologist & Author</p>
</div>
</div>
</article>
<article class="testimonial-card reveal stagger-3">
<blockquote class="testimonial-quote">"As an OT, I appreciate the sensory-informed approach to picky eating and motor milestones. The activity library respects neurodiversity and offers low-prep, high-impact play ideas that build genuine skills."</blockquote>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/150?u=sarah-johnson-ot" alt="Sarah Johnson" class="author-avatar" loading="lazy" width="56" height="56">
<div class="author-info">
<cite class="author-name">Sarah Johnson, OTR/L</cite>
<p class="author-role">Pediatric Occupational Therapist</p>
</div>
</div>
</article>
</div>
</div>
</section>
<!-- BLOG PREVIEW -->
<section class="blog-preview section reveal" aria-labelledby="blog-title">
<div class="container">
<header class="section-header">
<h2 id="blog-title">Latest from the Nest</h2>
<p>Fresh perspectives on parenting challenges, research roundups, and printable resources delivered weekly.</p>
</header>
<div class="blog-grid">
<article class="article-card reveal stagger-1">
<div class="article-image">
<img src="https://picsum.photos/seed/tantrum-science/600/338.jpg" alt="Parent kneeling to talk to upset toddler at eye level" loading="lazy" width="600" height="338">
</div>
<div class="article-content">
<div class="article-meta"><span>Positive Discipline</span><time datetime="2024-10-15">Oct 15, 2024</time></div>
<h3><a href="/blog/science-of-tantrums">The Neuroscience of Tantrums: Why Your Child's Brain "Flips Its Lid"</a></h3>
<p class="article-excerpt">Understand the amygdala hijack happening during a meltdown. Learn the "Connect then Redirect" method backed by interpersonal neurobiology to de-escalate and teach regulation.</p>
<a href="/blog/science-of-tantrums" class="article-link">Read Article <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></a>
</div>
</article>
<article class="article-card reveal stagger-2">
<div class="article-image">
<img src="https://picsum.photos/seed/screen-time-contract/600/338.jpg" alt="Family creating a media agreement together at kitchen table" loading="lazy" width="600" height="338">
</div>
<div class="article-content">
<div class="article-meta"><span>Digital Wellness</span><time datetime="2024-10-10">Oct 10, 2024</time></div>
<h3><a href="/blog/family-media-plan">Beyond Limits: Creating a Family Media Agreement That Actually Works</a></h3>
<p class="article-excerpt">Ditch the arbitrary timers. We walk you through a collaborative contract process that builds digital citizenship skills, defines "green/yellow/red" content zones, and includes tech-free rituals.</p>
<a href="/blog/family-media-plan" class="article-link">Read Article <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></a>
</div>
</article>
<article class="article-card reveal stagger-3">
<div class="article-image">
<img src="https://picsum.photos/seed/picky-eating/600/338.jpg" alt="Colorful divided plate with various foods for toddler exploration" loading="lazy" width="600" height="338">
</div>
<div class="article-content">
<div class="article-meta"><span>Nutrition</span><time datetime="2024-10-05">Oct 5, 2024</time></div>
<h3><a href="/blog/picky-eating-toolkit">The Picky Eating Protocol: 21 Days to Food Exploration</a></h3>
<p class="article-excerpt">A step-by-step sensory ladder approach from our resident dietitian. Includes printable food chaining charts, "no-thank-you bite" scripts, and division of responsibility troubleshooting.</p>
<a href="/blog/picky-eating-toolkit" class="article-link">Read Article <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></a>
</div>
</article>
</div>
<div style="text-align: center; margin-top: var(--space-lg);">
<a href="/blog" class="btn btn-secondary">View All Articles</a>
</div>
</div>
</section>
</div>
<!-- SIDEBAR -->
<aside class="sidebar" aria-label="Supplementary Resources">
<div class="newsletter-section reveal">
<h3>Join the Village</h3>
<p>Weekly evidence-based tips, milestone reminders, and printable activity calendars. No spam, ever.</p>
<form class="newsletter-form" id="newsletterForm" action="#subscribe" method="POST">
<div class="form-group">
<label for="email" class="sr-only">Email Address</label>
<input type="email" id="email" name="email" placeholder="Enter your email" required autocomplete="email">
<button type="submit">Subscribe</button>
</div>
<p style="font-size: 0.75rem; color: rgba(255,255,255,0.7); margin-top: var(--space-xs);">By subscribing, you agree to our <a href="/privacy" style="color: var(--color-accent); text-decoration: underline;">Privacy Policy</a>.</p>
</form>
</div>
<div class="newsletter-section reveal" style="margin-top: var(--space-lg); background: var(--color-bg-alt); color: var(--color-text); border: 1px solid var(--color-border);">
<h3 style="color: var(--color-text);">Quick Resources</h3>
<ul style="list-style: none; display: flex; flex-direction: column; gap: var(--space-sm); text-align: left; margin-top: var(--space-md);">
<li><a href="/printables/milestone-checklist" class="btn btn-secondary" style="justify-content: flex-start; padding: var(--space-sm) var(--space-md); font-size: 0.875rem;"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg> Milestone Checklists (PDF)</a></li>
<li><a href="/printables/screen-time-contract" class="btn btn-secondary" style="justify-content: flex-start; padding: var(--space-sm) var(--space-md); font-size: 0.875rem;"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8"/><path d="M12 17v4"/></svg> Family Media Agreement</a></li>
<li><a href="/printables/meal-planner" class="btn btn-secondary" style="justify-content: flex-start; padding: var(--space-sm) var(--space-md); font-size: 0.875rem;"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/><path d="M12 3v4"/><path d="M8 7h8"/><path d="M6 11h12"/><path d="M6 15h12"/><path d="M6 19h12"/></svg> Weekly Meal Planner</a></li>
<li><a href="/printables/bedtime-routine" class="btn btn-secondary" style="justify-content: flex-start; padding: var(--space-sm) var(--space-md); font-size: 0.875rem;"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2a10 10 0 0 0-7.5 3.5"/><path d="M22 12a10 10 0 0 1-7.5-3.5"/><path d="M7 19a10 10 0 0 1 3.5-7.5"/><path d="M17 5a10 10 0 0 1 3.5 7.5"/></svg> Visual Bedtime Routine Cards</a></li>
</ul>
</div>
<div class="newsletter-section reveal" style="margin-top: var(--space-lg); background: var(--color-bg-alt); color: var(--color-text); border: 1px solid var(--color-border);">
<h3 style="color: var(--color-text);">Ask Our Experts</h3>
<p style="color: var(--color-text-muted);">Have a specific question? Submit it for our monthly Q&A roundup with Dr. Vasquez and the team.</p>
<a href="/ask-an-expert" class="btn btn-primary" style="margin-top: var(--space-md); width: 100%;">Submit a Question</a>
</div>
</aside>
</div>
</main>
<!-- =========================================
FOOTER
========================================= -->
<footer class="site-footer" role="contentinfo">
<div class="container">
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Little Sprouts Guide Home">
<img src="https://placehold.co/80x80/2a7f62/ffffff?text=LS&font=playfair+display" alt="" class="logo-img" width="40" height="40">
<span class="logo-text">Little Sprouts Guide</span>
</a>
<p>Empowering parents with evidence-based resources, developmental tools, and a judgment-free community since 2021. We believe supported parents raise thriving children.</p>
<div class="social-links" role="list" aria-label="Social Media Links">
<a href="https://instagram.com" target="_blank" rel="noopener noreferrer" aria-label="Instagram"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/></svg></a>
<a href="https://facebook.com" target="_blank" rel="noopener noreferrer" aria-label="Facebook"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"/></svg></a>
<a href="https://youtube.com" target="_blank" rel="noopener noreferrer" aria-label="YouTube"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17"/><polygon points="10 15 15 12 10 9"/></svg></a>
<a href="https://pinterest.com" target="_blank" rel="noopener noreferrer" aria-label="Pinterest"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="17" x2="12.01" y2="17"/><path d="M5 17h14v-1.5c0-3.6 2.2-6.8 5.5-7.6 1.4-.3 2.8-.5 4.2-.6V3c0-.6-.6-1-1-1h-3.5c-1.5 0-2.7.9-3.3 2.1C14 6.3 11 8 11 10.5v4.2c-1.4.1-2.7.3-3.8.5H5c-.6 0-1 .4-1 1z"/></svg></a>
</div>
</div>
<nav class="footer-nav" aria-label="Footer Navigation">
<div class="footer-column">
<h4>Learn</h4>
<ul>
<li><a href="/blog">Parenting Blog</a></li>
<li><a href="/activities">Activity Library</a></li>
<li><a href="/milestone-checker">Milestone Checker</a></li>
<li><a href="/expert-advice">Expert Q&A</a></li>
<li><a href="/research">Research Library</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Support</h4>
<ul>
<li><a href="/community">Community Forum</a></li>
<li><a href="/courses">Parenting Courses</a></li>
<li><a href="/coaching">1:1 Coaching</a></li>
<li><a href="/printables">Free Printables</a></li>
<li><a href="/faq">Help Center</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Company</h4>
<ul>
<li><a href="/about">Our Mission</a></li>
<li><a href="/team">Meet the Experts</a></li>
<li><a href="/press">Press Kit</a></li>
<li><a href="/careers">Careers</a></li>
<li><a href="/contact">Contact Us</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Legal</h4>
<ul>
<li><a href="/privacy">Privacy Policy</a></li>
<li><a href="/terms">Terms of Service</a></li>
<li><a href="/disclaimer">Medical Disclaimer</a></li>
<li><a href="/accessibility">Accessibility</a></li>
<li><a href="/cookies">Cookie Policy</a></li>
</ul>
</div>
</nav>
</div>
<div class="footer-bottom">
<p>© 2024 Little Sprouts Guide. All rights reserved.</p>
<p>Made with care for families everywhere. <a href="/contact">Get in touch</a> | <a href="/advertise">Advertise</a></p>
</div>
</div>
</footer>
<!-- =========================================
JAVASCRIPT
========================================= -->
<script>
(function() {
'use strict';
// --- Theme Toggle ---
const themeToggle = document.getElementById('themeToggle');
const htmlEl = document.documentElement;
const savedTheme = localStorage.getItem('theme');
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
// Initialize theme
if (savedTheme) {
htmlEl.setAttribute('data-theme', savedTheme);
} else if (prefersDark) {
htmlEl.setAttribute('data-theme', 'dark');
}
themeToggle.addEventListener('click', () => {
const currentTheme = htmlEl.getAttribute('data-theme');
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
htmlEl.setAttribute('data-theme', newTheme);
localStorage.setItem('theme', newTheme);
});
// --- Mobile Navigation ---
const mobileMenuBtn = document.getElementById('mobileMenuBtn');
const mobileNav = document.getElementById('mobileNav');
const mobileNavClose = document.getElementById('mobileNavClose');
const mobileNavLinks = mobileNav.querySelectorAll('a');
function openMobileNav() {
mobileNav.classList.add('is-open');
mobileMenuBtn.setAttribute('aria-expanded', 'true');
document.body.style.overflow = 'hidden';
// Focus first link for accessibility
mobileNav.querySelector('a').focus();
}
function closeMobileNav() {
mobileNav.classList.remove('is-open');
mobileMenuBtn.setAttribute('aria-expanded', 'false');
document.body.style.overflow = '';
mobileMenuBtn.focus();
}
mobileMenuBtn.addEventListener('click', openMobileNav);
mobileNavClose.addEventListener('click', closeMobileNav);
// Close on link click
mobileNavLinks.forEach(link => {
link.addEventListener('click', closeMobileNav);
});
// Close on Escape key
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape' && mobileNav.classList.contains('is-open')) {
closeMobileNav();
}
});
// Trap focus in mobile nav (simple version)
mobileNav.addEventListener('keydown', (e) => {
if (e.key === 'Tab') {
const focusableElements = mobileNav.querySelectorAll('button, a');
const firstEl = focusableElements[0];
const lastEl = focusableElements[focusableElements.length - 1];
if (e.shiftKey && document.activeElement === firstEl) {
e.preventDefault(); lastEl.focus();
} else if (!e.shiftKey && document.activeElement === lastEl) {
e.preventDefault(); firstEl.focus();
}
}
});
// --- Milestone Checker Tabs ---
const tabButtons = document.querySelectorAll('.tab-btn');
const panels = document.querySelectorAll('.checker-panel');
tabButtons.forEach(btn => {
btn.addEventListener('click', () => {
const targetId = btn.dataset.panel;
// Update buttons
tabButtons.forEach(b => {
b.classList.remove('active');
b.setAttribute('aria-selected', 'false');
});
btn.classList.add('active');
btn.setAttribute('aria-selected', 'true');
// Update panels
panels.forEach(p => {
p.hidden = true;
p.classList.remove('active');
});
const targetPanel = document.getElementById(targetId);
if (targetPanel) {
targetPanel.hidden = false;
// Force reflow for animation
requestAnimationFrame(() => targetPanel.classList.add('active'));
}
});
});
// --- Intersection Observer for Reveal Animations ---
const revealElements = document.querySelectorAll('.reveal');
const observerOptions = {
root: null,
rootMargin: '0px 0px -10% 0px',
threshold: 0.1
};
const observer = new IntersectionObserver((entries, obs) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
obs.unobserve(entry.target);
}
});
}, observerOptions);
revealElements.forEach(el => observer.observe(el));
// --- Newsletter Form Submission (Demo) ---
const newsletterForm = document.getElementById('newsletterForm');
if (newsletterForm) {
newsletterForm.addEventListener('submit', (e) => {
e.preventDefault();
const btn = newsletterForm.querySelector('button');
const originalText = btn.textContent;
btn.textContent = 'Subscribing...';
btn.disabled = true;
// Simulate API call
setTimeout(() => {
btn.textContent = 'Subscribed!';
btn.style.background = 'var(--color-primary)';
setTimeout(() => {
btn.textContent = originalText;
btn.disabled = false;
btn.style.background = '';
newsletterForm.reset();
}, 2000);
}, 1000);
});
}
// --- Smooth Scroll for Anchor Links ---
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
const targetId = this.getAttribute('href');
if (targetId === '#') return;
const target = document.querySelector(targetId);
if (target) {
e.preventDefault();
const headerOffset = document.querySelector('.site-header').offsetHeight;
const elementPosition = target.getBoundingClientRect().top + window.scrollY;
const offsetPosition = elementPosition - headerOffset - 20;
window.scrollTo({ top: offsetPosition, behavior: 'smooth' });
}
});
});
})();
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T09:42:28.786Z",
"url": "https://benchmark.aimac.invalid/8ce2e2ea665e67704c4f4dcd696147e3958d009369ff1c68cbdddaafbf4c832e.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-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": "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": []
},
{
"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": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-allowed-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attributes are used correctly for the defined role"
}
],
"none": [
{
"id": "aria-unsupported-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute is supported"
}
],
"impact": null,
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
]
},
{
"id": "aria-conditional-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are used as described in the specification of the element's role",
"help": "ARIA attributes must be used as specified for the element's role",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-conditional-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"none": [],
"impact": null,
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
]
},
{
"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": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
}
]
},
{
"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 data-theme=\"light\">",
"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": "<div class=\"feature-icon\" aria-hidden=\"true\">",
"target": [
".feature-card.stagger-1 > .feature-icon[aria-hidden=\"true\"]"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
]
},
{
"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": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
}
]
},
{
"id": "aria-required-children",
"impact": "critical",
"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": [
{
"any": [
{
"id": "aria-required-children",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Required ARIA children are present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"checker-tabs\" role=\"tablist\" aria-label=\"Age range selection\">",
"target": [
".checker-tabs"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "aria-required-parent",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Required ARIA parent role present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"tab-btn active\" role=\"tab\" aria-selected=\"true\" aria-controls=\"panel-0-12\" id=\"tab-0-12\" data-panel=\"panel-0-12\">0\u201312 Months</button>",
"target": [
"#tab-0-12"
]
}
]
},
{
"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": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
}
]
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-valid-attr-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute values are valid"
},
{
"id": "aria-errormessage",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
},
{
"id": "aria-level",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-level values are valid"
}
],
"none": [],
"impact": null,
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
]
},
{
"id": "aria-valid-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure attributes that begin with aria- are valid ARIA attributes",
"help": "ARIA attributes must conform to valid names",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-valid-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute name is valid"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
]
},
{
"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": [
{
"any": [],
"all": [
{
"id": "autocomplete-valid",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "the autocomplete attribute is correctly formatted"
}
],
"none": [],
"impact": null,
"html": "<input type=\"email\" id=\"email\" name=\"email\" placeholder=\"Enter your email\" required=\"\" autocomplete=\"email\">",
"target": [
"#email"
]
}
]
},
{
"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": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute exists and is not empty"
},
{
"id": "non-empty-title",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a title attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"theme-toggle\" id=\"themeToggle\" aria-label=\"Toggle dark mode\" title=\"Toggle dark mode\">",
"target": [
"#themeToggle"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1 id=\"hero-title\">Evidence-Based Parenting for the Modern Family</h1>",
"target": [
"#hero-title"
]
},
{
"html": "<h2 id=\"pillars-title\">Our Four Parenting Pillars</h2>",
"target": [
"#pillars-title"
]
},
{
"html": "<h3>Positive Discipline</h3>",
"target": [
".feature-card.stagger-1 > h3"
]
},
{
"html": "<h3>Digital Wellness</h3>",
"target": [
".stagger-2.feature-card > h3"
]
},
{
"html": "<h3>Nutrition & Mealtimes</h3>",
"target": [
".stagger-3.feature-card > h3"
]
},
{
"html": "<h3>Sleep Rhythms</h3>",
"target": [
".stagger-4 > h3"
]
},
{
"html": "<h2 id=\"checker-title\">Developmental Milestone Checker</h2>",
"target": [
"#checker-title"
]
},
{
"html": "<h4>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(1) > h4"
]
},
{
"html": "<h4><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M12 6v6l4 2\"></path></svg> Language & Communication</h4>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(2) > h4"
]
},
{
"html": "<h4><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2L2 7l10 5 10-5-10-5z\"></path></svg> Cognitive & Motor</h4>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(3) > h4"
]
},
{
"html": "<h2 id=\"experts-title\">Trusted by Leading Experts</h2>",
"target": [
"#experts-title"
]
},
{
"html": "<h2 id=\"blog-title\">Latest from the Nest</h2>",
"target": [
"#blog-title"
]
},
{
"html": "<h3><a href=\"/blog/science-of-tantrums\">The Neuroscience of Tantrums: Why Your Child's Brain \"Flips Its Lid\"</a></h3>",
"target": [
".article-card.stagger-1 > .article-content > h3"
]
},
{
"html": "<h3><a href=\"/blog/family-media-plan\">Beyond Limits: Creating a Family Media Agreement That Actually Works</a></h3>",
"target": [
".article-card.stagger-2 > .article-content > h3"
]
},
{
"html": "<h3><a href=\"/blog/picky-eating-toolkit\">The Picky Eating Protocol: 21 Days to Food Exploration</a></h3>",
"target": [
".article-card.stagger-3 > .article-content > h3"
]
},
{
"html": "<h3>Join the Village</h3>",
"target": [
".newsletter-section.reveal:nth-child(1) > h3"
]
},
{
"html": "<h3 style=\"color: var(--color-text);\">Quick Resources</h3>",
"target": [
".newsletter-section.reveal:nth-child(2) > h3"
]
},
{
"html": "<h3 style=\"color: var(--color-text);\">Ask Our Experts</h3>",
"target": [
".newsletter-section.reveal:nth-child(3) > h3"
]
},
{
"html": "<h4>Learn</h4>",
"target": [
".footer-column:nth-child(1) > h4"
]
},
{
"html": "<h4>Support</h4>",
"target": [
".footer-column:nth-child(2) > h4"
]
},
{
"html": "<h4>Company</h4>",
"target": [
".footer-column:nth-child(3) > h4"
]
},
{
"html": "<h4>Legal</h4>",
"target": [
".footer-column:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main id=\"mainContent\" role=\"main\">",
"target": [
"#mainContent"
]
}
],
"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": "#2d2d2d",
"bgColor": "#ffffff",
"contrastRatio": 13.77,
"fontSize": "18.0pt (24px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 13.77"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span class=\"logo-text\">Little Sprouts Guide</span>",
"target": [
"div > .logo-text"
]
}
]
},
{
"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": "mobileNav",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"mobile-nav-overlay\" id=\"mobileNav\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"mobileNavTitle\">",
"target": [
"#mobileNav"
]
}
]
},
{
"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=\"m1-1\" class=\"milestone-text\">Smiles responsively at caregivers (2-3 months)</label>",
"target": [
"label[for=\"m1-1\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input type=\"checkbox\" class=\"milestone-checkbox\" id=\"m1-1\">",
"target": [
"#m1-1"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
},
{
"id": "presentational-role",
"data": {
"role": "presentation"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were overridden with role=\"presentation\""
}
],
"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/80x80/2a7f62/ffffff?text=LS&font=playfair+display\" alt=\"\" class=\"logo-img\" width=\"40\" height=\"40\" loading=\"eager\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"] > .logo-img[alt=\"\"][width=\"40\"]"
]
}
]
},
{
"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 for=\"m1-1\" class=\"milestone-text\">Smiles responsively at caregivers (2-3 months)</label>",
"target": [
"label[for=\"m1-1\"]"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"checkbox\" class=\"milestone-checkbox\" id=\"m1-1\">",
"target": [
"#m1-1"
]
}
]
},
{
"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",
"data": null,
"relatedNodes": [
{
"html": "<p>Made with care for families everywhere. <a href=\"/contact\">Get in touch</a> | <a href=\"/advertise\">Advertise</a></p>",
"target": [
".footer-bottom > p:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text in some way other than by color"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"/contact\">Get in touch</a>",
"target": [
"p:nth-child(2) > 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"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute exists and is not empty"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul>",
"target": [
".nav-primary > ul"
]
}
]
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "listitem",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List item has a <ul>, <ol> or role=\"list\" parent element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<li><a href=\"/\" aria-current=\"page\">Home</a></li>",
"target": [
".nav-primary > ul > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"theme-toggle\" id=\"themeToggle\" aria-label=\"Toggle dark mode\" title=\"Toggle dark mode\">",
"target": [
"#themeToggle"
]
}
]
},
{
"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": 271,
"height": 59.8
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (271px by 59.8px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": "pseudoContent",
"expectedContrastRatio": "4.5:1"
},
"relatedNodes": [
{
"html": "<section class=\"hero reveal visible\" aria-labelledby=\"hero-title\">",
"target": [
".hero"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a pseudo element"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"hero-badge\">Trusted by 500k+ Parents Worldwide</span>",
"target": [
".hero-badge"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a pseudo element"
}
]
}
],
"violations": [
{
"id": "aria-required-children",
"impact": "critical",
"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": [
{
"any": [
{
"id": "aria-required-children",
"data": {
"messageKey": "unallowed",
"values": "a[aria-label]"
},
"relatedNodes": [
{
"html": "<a href=\"https://instagram.com\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Instagram\">",
"target": [
"a[href$=\"instagram.com\"]"
]
},
{
"html": "<a href=\"https://facebook.com\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Facebook\">",
"target": [
"a[href$=\"facebook.com\"]"
]
},
{
"html": "<a href=\"https://youtube.com\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"YouTube\">",
"target": [
"a[href$=\"youtube.com\"]"
]
},
{
"html": "<a href=\"https://pinterest.com\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Pinterest\">",
"target": [
"a[href$=\"pinterest.com\"]"
]
}
],
"impact": "critical",
"message": "Element has children which are not allowed: a[aria-label]"
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<div class=\"social-links\" role=\"list\" aria-label=\"Social Media Links\">",
"target": [
".social-links"
],
"failureSummary": "Fix any of the following:\n Element has children which are not allowed: a[aria-label]"
}
]
},
{
"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": "#2a7f62",
"bgColor": "#e8f4ef",
"contrastRatio": 4.31,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"/\" aria-current=\"page\">Home</a>",
"target": [
".nav-primary > ul > li:nth-child(1) > a[aria-current=\"page\"][href=\"/\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.31 (foreground color: #2a7f62, background color: #e8f4ef, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"/\" aria-current=\"page\">Home</a>",
"target": [
".nav-primary > ul > li:nth-child(1) > a[aria-current=\"page\"][href=\"/\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.31 (foreground color: #2a7f62, background color: #e8f4ef, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#2a7f62",
"bgColor": "#e8f4ef",
"contrastRatio": 4.31,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"tab-btn active\" role=\"tab\" aria-selected=\"true\" aria-controls=\"panel-0-12\" id=\"tab-0-12\" data-panel=\"panel-0-12\">0\u201312 Months</button>",
"target": [
"#tab-0-12"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.31 (foreground color: #2a7f62, background color: #e8f4ef, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"tab-btn active\" role=\"tab\" aria-selected=\"true\" aria-controls=\"panel-0-12\" id=\"tab-0-12\" data-panel=\"panel-0-12\">0\u201312 Months</button>",
"target": [
"#tab-0-12"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.31 (foreground color: #2a7f62, background color: #e8f4ef, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e8a87c",
"bgColor": "#fff3e0",
"contrastRatio": 1.85,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"milestone-age\">2-3 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(1) > .milestone-list > .milestone-item:nth-child(1) > .milestone-age"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"milestone-age\">2-3 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(1) > .milestone-list > .milestone-item:nth-child(1) > .milestone-age"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e8a87c",
"bgColor": "#fff3e0",
"contrastRatio": 1.85,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"milestone-age\">6-9 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(1) > .milestone-list > .milestone-item:nth-child(2) > .milestone-age"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"milestone-age\">6-9 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(1) > .milestone-list > .milestone-item:nth-child(2) > .milestone-age"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e8a87c",
"bgColor": "#fff3e0",
"contrastRatio": 1.85,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"milestone-age\">9-12 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(1) > .milestone-list > .milestone-item:nth-child(3) > .milestone-age"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"milestone-age\">9-12 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(1) > .milestone-list > .milestone-item:nth-child(3) > .milestone-age"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e8a87c",
"bgColor": "#fff3e0",
"contrastRatio": 1.85,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"milestone-age\">2-4 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(2) > .milestone-list > .milestone-item:nth-child(1) > .milestone-age"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"milestone-age\">2-4 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(2) > .milestone-list > .milestone-item:nth-child(1) > .milestone-age"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e8a87c",
"bgColor": "#fff3e0",
"contrastRatio": 1.85,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"milestone-age\">6-9 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(2) > .milestone-list > .milestone-item:nth-child(2) > .milestone-age"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"milestone-age\">6-9 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(2) > .milestone-list > .milestone-item:nth-child(2) > .milestone-age"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e8a87c",
"bgColor": "#fff3e0",
"contrastRatio": 1.85,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"milestone-age\">12 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(2) > .milestone-list > .milestone-item:nth-child(3) > .milestone-age"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"milestone-age\">12 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(2) > .milestone-list > .milestone-item:nth-child(3) > .milestone-age"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e8a87c",
"bgColor": "#fff3e0",
"contrastRatio": 1.85,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"milestone-age\">3-4 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(3) > .milestone-list > .milestone-item:nth-child(1) > .milestone-age"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"milestone-age\">3-4 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(3) > .milestone-list > .milestone-item:nth-child(1) > .milestone-age"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e8a87c",
"bgColor": "#fff3e0",
"contrastRatio": 1.85,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"milestone-age\">6-8 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(3) > .milestone-list > .milestone-item:nth-child(2) > .milestone-age"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"milestone-age\">6-8 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(3) > .milestone-list > .milestone-item:nth-child(2) > .milestone-age"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e8a87c",
"bgColor": "#fff3e0",
"contrastRatio": 1.85,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"milestone-age\">9-12 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(3) > .milestone-list > .milestone-item:nth-child(3) > .milestone-age"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"milestone-age\">9-12 mo</span>",
"target": [
"#panel-0-12 > .milestone-category:nth-child(3) > .milestone-list > .milestone-item:nth-child(3) > .milestone-age"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.85 (foreground color: #e8a87c, background color: #fff3e0, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e8a87c",
"contrastRatio": 2.03,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button type=\"submit\">Subscribe</button>",
"target": [
"button[type=\"submit\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.03 (foreground color: #ffffff, background color: #e8a87c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button type=\"submit\">Subscribe</button>",
"target": [
"button[type=\"submit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.03 (foreground color: #ffffff, background color: #e8a87c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#88b7a6",
"bgColor": "#fefdfb",
"contrastRatio": 2.2,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-1 visible\">",
"target": [
".article-card.stagger-1"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.2 (foreground color: #88b7a6, background color: #fefdfb, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Positive Discipline</span>",
"target": [
".article-card.stagger-1 > .article-content > .article-meta > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.2 (foreground color: #88b7a6, background color: #fefdfb, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a3a2a1",
"bgColor": "#fefdfb",
"contrastRatio": 2.5,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-1 visible\">",
"target": [
".article-card.stagger-1"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.5 (foreground color: #a3a2a1, background color: #fefdfb, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<time datetime=\"2024-10-15\">Oct 15, 2024</time>",
"target": [
"time[datetime=\"2024-10-15\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.5 (foreground color: #a3a2a1, background color: #fefdfb, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#898988",
"bgColor": "#fefdfb",
"contrastRatio": 3.44,
"fontSize": "15.0pt (20px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-1 visible\">",
"target": [
".article-card.stagger-1"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.44 (foreground color: #898988, background color: #fefdfb, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"/blog/science-of-tantrums\">The Neuroscience of Tantrums: Why Your Child's Brain \"Flips Its Lid\"</a>",
"target": [
"h3 > a[href$=\"science-of-tantrums\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.44 (foreground color: #898988, background color: #fefdfb, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a3a2a1",
"bgColor": "#fefdfb",
"contrastRatio": 2.5,
"fontSize": "11.3pt (15px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-1 visible\">",
"target": [
".article-card.stagger-1"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.5 (foreground color: #a3a2a1, background color: #fefdfb, font size: 11.3pt (15px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"article-excerpt\">Understand the amygdala hijack happening during a meltdown. Learn the \"Connect then Redirect\" method backed by interpersonal neurobiology to de-escalate and teach regulation.</p>",
"target": [
".article-card.stagger-1 > .article-content > .article-excerpt"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.5 (foreground color: #a3a2a1, background color: #fefdfb, font size: 11.3pt (15px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#88b7a6",
"bgColor": "#fefdfb",
"contrastRatio": 2.2,
"fontSize": "10.5pt (14px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-1 visible\">",
"target": [
".article-card.stagger-1"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.2 (foreground color: #88b7a6, background color: #fefdfb, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"/blog/science-of-tantrums\" class=\"article-link\">",
"target": [
".article-link[href$=\"science-of-tantrums\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.2 (foreground color: #88b7a6, background color: #fefdfb, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#b6d2c6",
"bgColor": "#fefcfa",
"contrastRatio": 1.57,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-2 visible\">",
"target": [
".article-card.stagger-2"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.57 (foreground color: #b6d2c6, background color: #fefcfa, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Digital Wellness</span>",
"target": [
".article-card.stagger-2 > .article-content > .article-meta > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.57 (foreground color: #b6d2c6, background color: #fefcfa, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#c6c5c4",
"bgColor": "#fefcfa",
"contrastRatio": 1.68,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-2 visible\">",
"target": [
".article-card.stagger-2"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.68 (foreground color: #c6c5c4, background color: #fefcfa, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<time datetime=\"2024-10-10\">Oct 10, 2024</time>",
"target": [
"time[datetime=\"2024-10-10\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.68 (foreground color: #c6c5c4, background color: #fefcfa, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#b7b6b4",
"bgColor": "#fefcfa",
"contrastRatio": 1.97,
"fontSize": "15.0pt (20px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-2 visible\">",
"target": [
".article-card.stagger-2"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.97 (foreground color: #b7b6b4, background color: #fefcfa, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"/blog/family-media-plan\">Beyond Limits: Creating a Family Media Agreement That Actually Works</a>",
"target": [
"h3 > a[href$=\"family-media-plan\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.97 (foreground color: #b7b6b4, background color: #fefcfa, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#c6c5c4",
"bgColor": "#fefcfa",
"contrastRatio": 1.68,
"fontSize": "11.3pt (15px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-2 visible\">",
"target": [
".article-card.stagger-2"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.68 (foreground color: #c6c5c4, background color: #fefcfa, font size: 11.3pt (15px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"article-excerpt\">Ditch the arbitrary timers. We walk you through a collaborative contract process that builds digital citizenship skills, defines \"green/yellow/red\" content zones, and includes tech-free rituals.</p>",
"target": [
".article-card.stagger-2 > .article-content > .article-excerpt"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.68 (foreground color: #c6c5c4, background color: #fefcfa, font size: 11.3pt (15px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#b6d2c6",
"bgColor": "#fefcfa",
"contrastRatio": 1.57,
"fontSize": "10.5pt (14px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-2 visible\">",
"target": [
".article-card.stagger-2"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.57 (foreground color: #b6d2c6, background color: #fefcfa, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"/blog/family-media-plan\" class=\"article-link\">",
"target": [
".article-link[href$=\"family-media-plan\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.57 (foreground color: #b6d2c6, background color: #fefcfa, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#eaf0ea",
"bgColor": "#fdfbf8",
"contrastRatio": 1.12,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-3 visible\">",
"target": [
".article-card.stagger-3"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.12 (foreground color: #eaf0ea, background color: #fdfbf8, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Nutrition</span>",
"target": [
".article-card.stagger-3 > .article-content > .article-meta > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.12 (foreground color: #eaf0ea, background color: #fdfbf8, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#eeecea",
"bgColor": "#fdfbf8",
"contrastRatio": 1.14,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-3 visible\">",
"target": [
".article-card.stagger-3"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.14 (foreground color: #eeecea, background color: #fdfbf8, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<time datetime=\"2024-10-05\">Oct 5, 2024</time>",
"target": [
"time[datetime=\"2024-10-05\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.14 (foreground color: #eeecea, background color: #fdfbf8, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#eae8e5",
"bgColor": "#fdfbf8",
"contrastRatio": 1.18,
"fontSize": "15.0pt (20px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-3 visible\">",
"target": [
".article-card.stagger-3"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.18 (foreground color: #eae8e5, background color: #fdfbf8, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"/blog/picky-eating-toolkit\">The Picky Eating Protocol: 21 Days to Food Exploration</a>",
"target": [
"h3 > a[href$=\"picky-eating-toolkit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.18 (foreground color: #eae8e5, background color: #fdfbf8, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#eeecea",
"bgColor": "#fdfbf8",
"contrastRatio": 1.14,
"fontSize": "11.3pt (15px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-3 visible\">",
"target": [
".article-card.stagger-3"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.14 (foreground color: #eeecea, background color: #fdfbf8, font size: 11.3pt (15px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"article-excerpt\">A step-by-step sensory ladder approach from our resident dietitian. Includes printable food chaining charts, \"no-thank-you bite\" scripts, and division of responsibility troubleshooting.</p>",
"target": [
".article-card.stagger-3 > .article-content > .article-excerpt"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.14 (foreground color: #eeecea, background color: #fdfbf8, font size: 11.3pt (15px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#eaf0ea",
"bgColor": "#fdfbf8",
"contrastRatio": 1.12,
"fontSize": "10.5pt (14px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"article-card reveal stagger-3 visible\">",
"target": [
".article-card.stagger-3"
]
},
{
"html": "<section class=\"blog-preview section reveal visible\" aria-labelledby=\"blog-title\">",
"target": [
".blog-preview"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.12 (foreground color: #eaf0ea, background color: #fdfbf8, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"/blog/picky-eating-toolkit\" class=\"article-link\">",
"target": [
".article-link[href$=\"picky-eating-toolkit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.12 (foreground color: #eaf0ea, background color: #fdfbf8, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
},
{
"id": "target-size",
"impact": "serious",
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-size",
"data": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 135,
"height": 11.5
},
"relatedNodes": [
{
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 135px by 11.5px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 18,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 18px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"tab-btn active\" role=\"tab\" aria-selected=\"true\" aria-controls=\"panel-0-12\" id=\"tab-0-12\" data-panel=\"panel-0-12\">0\u201312 Months</button>",
"target": [
"#tab-0-12"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 135px by 11.5px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 18px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 112.9,
"height": 11.5
},
"relatedNodes": [
{
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 112.9px by 11.5px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 18,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"/\" class=\"logo\" aria-label=\"Little Sprouts Guide Home\">",
"target": [
".header-inner > .logo[aria-label=\"Little Sprouts Guide Home\"][href=\"/\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 18px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"tab-btn\" role=\"tab\" aria-selected=\"false\" aria-controls=\"panel-1-3\" id=\"tab-1-3\" data-panel=\"panel-1-3\">1\u20133 Years</button>",
"target": [
"#tab-1-3"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 112.9px by 11.5px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 18px instead of at least 24px."
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 7198
},
{
"y": 576,
"height": 7198
},
{
"y": 1152,
"height": 7198
},
{
"y": 1728,
"height": 7198
},
{
"y": 2304,
"height": 7198
},
{
"y": 2880,
"height": 7198
},
{
"y": 3456,
"height": 7198
},
{
"y": 4032,
"height": 7198
},
{
"y": 4608,
"height": 7198
},
{
"y": 5184,
"height": 7198
},
{
"y": 5760,
"height": 7198
},
{
"y": 6336,
"height": 7198
},
{
"y": 6478,
"height": 7198
}
],
"scans": 14,
"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 "Family and Parenting" 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: "Family and Parenting"
- Description: Parenting advice, family resources, childcare tips, and support for parents.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Family and Parenting" 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: "Blog", "Activities", "About".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Family and Parenting" category. Consider themes similar to: "Parenting Tips", "Educational Activities", "Expert Advice".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "developmental milestones", "positive reinforcement", "screen time".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Subscribe", "Get Parenting Tips", "Ask Question".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Family and Parenting" sector. Ideas similar but not limited to: "development quiz".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "featured products", "expert advice", "resource library".
- **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.