Nex AGI Nex N2.5 Mini – Family and Parenting

via Nex AGI · Generated

  • AIMAC Debt 4.80
  • Cost $0.004
  • Total Violations 19
  • HTML Size 75 KB
  • Em Dashes 7

Screenshot

View Nex AGI Nex N2.5 Mini Family and Parenting page View Live Page

Accessibility Issues Found

19 Serious

  • color-contrast serious 19 instances

    Elements must meet minimum color contrast ratio thresholds

    Example HTML <p>Every family moves through different seasons at a different pace. Our guides pair developmental context with scripts, routines, and questions yo...

Artifacts

View Generated HTML
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Kindred Path offers evidence-informed parenting guidance, practical family activities, wellness resources, and supportive communities for every stage of family life.">
  <meta name="theme-color" content="#174b3b">
  <title>Kindred Path | Clear guidance for every stage of family life</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=Fraunces:opsz,wght@9..144,500;9..144,600&family=Manrope:wght@400;500;600;700;800&display=swap" rel="stylesheet">
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "name": "Kindred Path",
    "url": "https://www.kindredpath.family/",
    "slogan": "Clear guidance for every stage of family life.",
    "email": "hello@kindredpath.family",
    "telephone": "+1-555-014-2876",
    "areaServed": "Worldwide"
  }
  </script>
  <style>
    :root {
      --bg: #f7f6f1;
      --surface: #ffffff;
      --surface-soft: #edf3ee;
      --ink: #20352e;
      --muted: #62736c;
      --forest: #174b3b;
      --forest-deep: #10352d;
      --sage: #dce8df;
      --cream: #f4f0e7;
      --coral: #e6785f;
      --gold: #d5a84f;
      --line: rgba(23, 75, 59, 0.14);
      --shadow: 0 18px 50px rgba(23, 53, 46, 0.10);
      --radius: 22px;
    }

    * { box-sizing: border-box; }
    html { scroll-behavior: smooth; scroll-padding-top: 94px; }
    body {
      margin: 0;
      background: var(--bg);
      color: var(--ink);
      font-family: "Manrope", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      font-size: 16px;
      line-height: 1.65;
      -webkit-font-smoothing: antialiased;
    }
    img { display: block; max-width: 100%; }
    a { color: inherit; }
    button, input, select { font: inherit; }
    button { cursor: pointer; }
    ::selection { background: var(--sage); color: var(--forest-deep); }
    :focus-visible { outline: 3px solid var(--coral); outline-offset: 3px; }

    .container { width: min(1180px, calc(100% - 40px)); margin-inline: auto; }
    .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;
    }
    .skip-link {
      position: absolute;
      left: 20px;
      top: -60px;
      z-index: 100;
      padding: 12px 18px;
      border-radius: 10px;
      background: var(--forest-deep);
      color: #fff;
      text-decoration: none;
      transition: top .2s ease;
    }
    .skip-link:focus { top: 16px; }

    .site-header {
      position: sticky;
      top: 0;
      z-index: 50;
      border-bottom: 1px solid rgba(23, 75, 59, 0.10);
      background: rgba(250, 250, 246, 0.92);
      backdrop-filter: blur(14px);
      -webkit-backdrop-filter: blur(14px);
    }
    .site-header.is-scrolled { box-shadow: 0 12px 32px rgba(23, 53, 46, 0.08); }
    .header-inner {
      position: relative;
      min-height: 82px;
      display: flex;
      align-items: center;
      gap: 34px;
    }
    .brand {
      display: inline-flex;
      align-items: center;
      gap: 12px;
      min-width: 270px;
      color: inherit;
      text-decoration: none;
    }
    .brand-image {
      width: 50px;
      height: 50px;
      border-radius: 16px;
      object-fit: cover;
      box-shadow: 0 8px 18px rgba(23, 75, 59, 0.16);
    }
    .brand-copy { display: grid; gap: 1px; }
    .brand-name {
      color: var(--forest-deep);
      font-family: "Fraunces", Georgia, serif;
      font-size: 1.28rem;
      font-weight: 600;
      letter-spacing: -0.02em;
      line-height: 1.1;
    }
    .brand-tagline {
      color: var(--muted);
      font-size: 0.72rem;
      font-weight: 600;
      letter-spacing: 0.01em;
      line-height: 1.25;
    }
    .main-nav { display: flex; align-items: center; gap: 24px; margin-left: auto; }
    .nav-link {
      position: relative;
      color: #385048;
      font-size: 0.86rem;
      font-weight: 700;
      text-decoration: none;
      white-space: nowrap;
    }
    .nav-link::after {
      content: "";
      position: absolute;
      left: 0;
      right: 100%;
      bottom: -7px;
      height: 2px;
      border-radius: 2px;
      background: var(--coral);
      transition: right .2s ease;
    }
    .nav-link:hover::after, .nav-link:focus-visible::after { right: 0; }
    .menu-toggle {
      display: none;
      align-items: center;
      justify-content: center;
      width: 44px;
      height: 44px;
      padding: 0;
      border: 1px solid var(--line);
      border-radius: 12px;
      background: var(--surface);
      color: var(--forest-deep);
      font-size: 0.82rem;
      font-weight: 800;
    }
    .header-cta { min-height: 44px; padding: 11px 18px; font-size: 0.84rem; }

    .btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 9px;
      min-height: 49px;
      padding: 13px 21px;
      border: 1px solid transparent;
      border-radius: 999px;
      font-size: 0.9rem;
      font-weight: 800;
      line-height: 1.2;
      text-decoration: none;
      transition: transform .2s ease, box-shadow .2s ease, background .2s ease, color .2s ease, border-color .2s ease;
    }
    .btn:hover { transform: translateY(-2px); }
    .btn-primary { background: var(--forest); color: #fff; box-shadow: 0 10px 24px rgba(23, 75, 59, 0.20); }
    .btn-primary:hover { background: var(--forest-deep); box-shadow: 0 14px 28px rgba(23, 75, 59, 0.24); }
    .btn-secondary { border-color: rgba(23, 75, 59, 0.28); background: rgba(255,255,255,.68); color: var(--forest-deep); }
    .btn-secondary:hover { background: #fff; border-color: var(--forest); }
    .btn-light { background: #fff; color: var(--forest-deep); }
    .btn-light:hover { background: var(--sage); }
    .btn-ghost { border-color: rgba(255,255,255,.32); background: transparent; color: #fff; }
    .btn-ghost:hover { background: rgba(255,255,255,.10); border-color: rgba(255,255,255,.6); }
    .btn-sm { min-height: 42px; padding: 10px 17px; font-size: 0.82rem; }
    .text-link {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      color: var(--forest);
      font-size: 0.88rem;
      font-weight: 800;
      text-decoration: none;
    }
    .text-link span { transition: transform .2s ease; }
    .text-link:hover span { transform: translateX(4px); }

    .hero {
      position: relative;
      overflow: hidden;
      padding: 78px 0 74px;
      background:
        radial-gradient(circle at 8% 18%, rgba(220, 232, 223, 0.95), transparent 28%),
        radial-gradient(circle at 92% 78%, rgba(244, 240, 231, 0.95), transparent 27%),
        var(--bg);
    }
    .hero::before {
      content: "";
      position: absolute;
      width: 420px;
      height: 420px;
      right: -180px;
      top: -180px;
      border: 1px solid rgba(23, 75, 59, 0.12);
      border-radius: 50%;
      box-shadow: 0 0 0 55px rgba(23, 75, 59, 0.03), 0 0 0 110px rgba(23, 75, 59, 0.025);
    }
    .hero-grid {
      position: relative;
      z-index: 1;
      display: grid;
      grid-template-columns: 1.02fr 0.98fr;
      align-items: center;
      gap: clamp(42px, 6vw, 86px);
    }
    .eyebrow {
      display: inline-flex;
      align-items: center;
      gap: 9px;
      margin-bottom: 20px;
      color: var(--forest);
      font-size: 0.76rem;
      font-weight: 800;
      letter-spacing: 0.12em;
      text-transform: uppercase;
    }
    .eyebrow::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--coral); box-shadow: 0 0 0 5px rgba(230, 120, 95, 0.15); }
    .hero h1 {
      max-width: 730px;
      margin: 0;
      color: var(--forest-deep);
      font-family: "Fraunces", Georgia, serif;
      font-size: clamp(2.72rem, 5vw, 5.25rem);
      font-weight: 600;
      letter-spacing: -0.055em;
      line-height: 0.99;
    }
    .hero-copy > p {
      max-width: 650px;
      margin: 27px 0 0;
      color: #52665f;
      font-size: clamp(1rem, 1.5vw, 1.16rem);
      line-height: 1.75;
    }
    .hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 31px; }
    .hero-note { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin-top: 24px; color: var(--muted); font-size: 0.82rem; font-weight: 700; }
    .hero-note .note-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--forest); opacity: .45; }
    .hero-proof { display: flex; align-items: center; gap: 14px; margin-top: 34px; }
    .avatar-stack { display: flex; padding-left: 9px; }
    .avatar-stack img { width: 38px; height: 38px; margin-left: -9px; border: 3px solid var(--bg); border-radius: 50%; object-fit: cover; }
    .proof-copy { color: var(--muted); font-size: 0.8rem; line-height: 1.4; }
    .proof-copy strong { display: block; color: var(--ink); font-size: 0.9rem; }

    .hero-visual { position: relative; min-height: 590px; }
    .hero-photo {
      width: 100%;
      height: 590px;
      border-radius: 34px;
      object-fit: cover;
      box-shadow: var(--shadow);
    }
    .visual-card {
      position: absolute;
      left: -32px;
      bottom: -31px;
      width: min(335px, 76%);
      padding: 24px;
      border: 1px solid rgba(255,255,255,.72);
      border-radius: 23px;
      background: rgba(255, 255, 255, 0.94);
      box-shadow: 0 18px 45px rgba(23, 53, 46, 0.16);
      backdrop-filter: blur(8px);
    }
    .visual-card-kicker { display: flex; align-items: center; gap: 8px; margin-bottom: 11px; color: var(--coral); font-size: 0.7rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; }
    .visual-card-kicker svg { width: 17px; height: 17px; }
    .visual-card h2 { margin: 0; color: var(--forest-deep); font-family: "Fraunces", Georgia, serif; font-size: 1.5rem; font-weight: 600; line-height: 1.14; }
    .visual-card p { margin: 10px 0 0; color: var(--muted); font-size: 0.85rem; line-height: 1.55; }
    .mini-card {
      position: absolute;
      top: 22px;
      right: -14px;
      display: flex;
      align-items: center;
      gap: 11px;
      min-width: 175px;
      padding: 14px 16px;
      border-radius: 17px;
      background: var(--forest-deep);
      color: #fff;
      box-shadow: 0 14px 32px rgba(16, 53, 45, 0.22);
    }
    .mini-icon { display: grid; width: 36px; height: 36px; place-items: center; border-radius: 11px; background: rgba(255,255,255,.13); }
    .mini-icon svg { width: 18px; height: 18px; }
    .mini-card strong { display: block; font-size: 0.78rem; line-height: 1.2; }
    .mini-card small { display: block; margin-top: 3px; color: #b9d2c7; font-size: 0.69rem; line-height: 1.25; }

    .trust-bar { background: var(--forest-deep); color: #fff; }
    .trust-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; padding-top: 19px; padding-bottom: 19px; }
    .trust-item { display: flex; align-items: center; gap: 10px; color: #dcebe4; font-size: 0.82rem; font-weight: 700; }
    .trust-check { display: grid; flex: 0 0 auto; width: 25px; height: 25px; place-items: center; border: 1px solid rgba(255,255,255,.24); border-radius: 50%; color: #fff; }
    .trust-check svg { width: 13px; height: 13px; }

    .section { padding: 96px 0; scroll-margin-top: 80px; }
    .section-alt { background: var(--surface-soft); }
    .section-heading { max-width: 730px; margin-bottom: 42px; }
    .section-heading.center { margin-inline: auto; text-align: center; }
    .section-heading.center .eyebrow { justify-content: center; }
    .section-heading h2, .planner-section h2 {
      margin: 0;
      color: var(--forest-deep);
      font-family: "Fraunces", Georgia, serif;
      font-size: clamp(2.15rem, 3.8vw, 3.7rem);
      font-weight: 600;
      letter-spacing: -0.045em;
      line-height: 1.05;
    }
    .section-heading p { max-width: 690px; margin: 19px 0 0; color: var(--muted); font-size: 1.02rem; line-height: 1.75; }
    .section-heading.center p { margin-inline: auto; }
    .section-header-row { display: flex; align-items: end; justify-content: space-between; gap: 30px; margin-bottom: 42px; }
    .section-header-row .section-heading { margin-bottom: 0; }

    .guide-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
    .guide-card, .feature-card, .support-card, .article-card, .testimonial-card {
      border: 1px solid rgba(23, 75, 59, 0.12);
      border-radius: var(--radius);
      background: var(--surface);
      box-shadow: 0 10px 28px rgba(23, 53, 46, 0.04);
      transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
    }
    .guide-card { overflow: hidden; display: flex; flex-direction: column; }
    .guide-card:hover, .feature-card:hover, .support-card:hover, .article-card:hover, .testimonial-card:hover { transform: translateY(-5px); box-shadow: var(--shadow); border-color: rgba(23, 75, 59, 0.24); }
    .guide-image { overflow: hidden; aspect-ratio: 7 / 5; background: var(--sage); }
    .guide-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
    .guide-card:hover .guide-image img { transform: scale(1.04); }
    .guide-body { display: flex; flex: 1; flex-direction: column; padding: 22px; }
    .card-kicker { color: var(--coral); font-size: 0.68rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; }
    .guide-body h3 { margin: 8px 0 9px; color: var(--forest-deep); font-family: "Fraunces", Georgia, serif; font-size: 1.38rem; font-weight: 600; line-height: 1.15; }
    .guide-body p { margin: 0; color: var(--muted); font-size: 0.88rem; line-height: 1.65; }
    .guide-body .text-link { align-self: flex-start; margin-top: 18px; }

    .feature-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
    .feature-card { overflow: hidden; }
    .feature-image { position: relative; overflow: hidden; aspect-ratio: 640 / 430; background: var(--sage); }
    .feature-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
    .feature-card:hover .feature-image img { transform: scale(1.04); }
    .feature-number { position: absolute; top: 15px; left: 15px; display: grid; width: 34px; height: 34px; place-items: center; border-radius: 50%; background: rgba(255,255,255,.92); color: var(--forest); font-size: 0.73rem; font-weight: 800; }
    .feature-body { padding: 22px; }
    .feature-body h3 { margin: 0 0 9px; color: var(--forest-deep); font-family: "Fraunces", Georgia, serif; font-size: 1.34rem; font-weight: 600; line-height: 1.15; }
    .feature-body p { margin: 0; color: var(--muted); font-size: 0.88rem; line-height: 1.65; }
    .feature-body .text-link { margin-top: 18px; }

    .planner-section {
      position: relative;
      overflow: hidden;
      padding: 96px 0;
      background: var(--forest-deep);
      color: #fff;
    }
    .planner-section::before {
      content: "";
      position: absolute;
      width: 530px;
      height: 530px;
      right: -230px;
      bottom: -260px;
      border: 1px solid rgba(255,255,255,.12);
      border-radius: 50%;
      box-shadow: 0 0 0 60px rgba(255,255,255,.025), 0 0 0 120px rgba(255,255,255,.018);
    }
    .planner-section .container { position: relative; z-index: 1; }
    .planner-section .eyebrow { color: #b9d2c7; }
    .planner-section .section-heading p { color: #c5d9d0; }
    .planner-layout { display: grid; grid-template-columns: 0.8fr 1.2fr; align-items: start; gap: 24px; }
    .planner-panel { padding: 27px; border-radius: 24px; background: #f7f8f2; color: var(--ink); box-shadow: 0 24px 60px rgba(0,0,0,.17); }
    .form-head { display: flex; align-items: start; justify-content: space-between; gap: 18px; margin-bottom: 22px; }
    .form-head h3 { margin: 0; color: var(--forest-deep); font-family: "Fraunces", Georgia, serif; font-size: 1.65rem; font-weight: 600; line-height: 1.15; }
    .form-head p { margin: 6px 0 0; color: var(--muted); font-size: 0.83rem; line-height: 1.5; }
    .form-head .form-head-icon { display: grid; flex: 0 0 auto; width: 46px; height: 46px; place-items: center; border-radius: 15px; background: var(--sage); color: var(--forest); }
    .form-head .form-head-icon svg { width: 22px; height: 22px; }
    .planner-panel fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
    .planner-panel legend { margin-bottom: 11px; color: var(--forest-deep); font-size: 0.82rem; font-weight: 800; }
    .goal-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
    .goal-chip { position: relative; display: block; cursor: pointer; }
    .goal-chip input { position: absolute; opacity: 0; pointer-events: none; }
    .goal-chip span {
      display: flex;
      min-height: 73px;
      flex-direction: column;
      justify-content: center;
      padding: 13px 14px;
      border: 1px solid rgba(23, 75, 59, 0.16);
      border-radius: 14px;
      background: #fff;
      transition: border-color .2s ease, background .2s ease, box-shadow .2s ease;
    }
    .goal-chip strong { color: var(--forest-deep); font-size: 0.8rem; font-weight: 800; line-height: 1.25; }
    .goal-chip small { margin-top: 4px; color: var(--muted); font-size: 0.7rem; line-height: 1.3; }
    .goal-chip input:checked + span { border-color: var(--forest); background: var(--sage); box-shadow: inset 0 0 0 1px var(--forest); }
    .goal-chip input:focus-visible + span { outline: 3px solid var(--coral); outline-offset: 2px; }
    .form-group { margin-top: 21px; }
    .form-group label { display: block; margin-bottom: 8px; color: var(--forest-deep); font-size: 0.82rem; font-weight: 800; }
    .select-wrap { position: relative; }
    .select-wrap::after { content: "⌄"; position: absolute; right: 16px; top: 50%; color: var(--forest); font-size: 1.1rem; line-height: 1; transform: translateY(-54%); pointer-events: none; }
    .planner-panel select {
      width: 100%;
      min-height: 49px;
      padding: 11px 42px 11px 14px;
      border: 1px solid rgba(23, 75, 59, 0.25);
      border-radius: 13px;
      background: #fff;
      color: var(--ink);
      appearance: none;
    }
    .planner-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 21px; }
    .planner-actions .btn { min-height: 45px; padding: 11px 17px; font-size: 0.81rem; }
    .form-note { margin: 15px 0 0; color: var(--muted); font-size: 0.72rem; line-height: 1.5; }

    .plan-preview { padding: 27px; border-radius: 24px; background: #f7f8f2; color: var(--ink); box-shadow: 0 24px 60px rgba(0,0,0,.17); }
    .preview-head { display: flex; align-items: start; justify-content: space-between; gap: 20px; margin-bottom: 18px; }
    .preview-head h3 { margin: 0; color: var(--forest-deep); font-family: "Fraunces", Georgia, serif; font-size: 1.65rem; font-weight: 600; line-height: 1.15; }
    .preview-head p { margin: 6px 0 0; color: var(--muted); font-size: 0.82rem; line-height: 1.5; }
    .focus-label { display: inline-flex; align-items: center; gap: 7px; margin-top: 12px; padding: 7px 11px; border-radius: 999px; background: var(--sage); color: var(--forest-deep); font-size: 0.72rem; font-weight: 800; }
    .focus-label::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--coral); }
    .progress-wrap { margin-bottom: 20px; }
    .progress-meta { display: flex; justify-content: space-between; gap: 15px; margin-bottom: 8px; color: var(--muted); font-size: 0.74rem; font-weight: 700; }
    .progress-track { height: 8px; overflow: hidden; border-radius: 999px; background: #dce3dc; }
    .progress-fill { width: 60%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--forest), var(--gold)); transition: width .3s ease; }
    .week-grid { display: grid; grid-template-columns: repeat(7, minmax(135px, 1fr)); gap: 8px; overflow-x: auto; padding-bottom: 4px; }
    .day-card { min-height: 216px; padding: 14px; border: 1px solid rgba(23, 75, 59, 0.12); border-radius: 15px; background: #fff; }
    .day-top { display: flex; align-items: start; justify-content: space-between; gap: 7px; margin-bottom: 13px; }
    .day-top h4 { margin: 0; color: var(--forest-deep); font-size: 0.82rem; font-weight: 800; line-height: 1.2; }
    .day-date { color: var(--muted); font-size: 0.65rem; font-weight: 700; }
    .day-actions { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
    .day-actions li { display: flex; align-items: start; gap: 8px; color: #4d625a; font-size: 0.68rem; line-height: 1.38; }
    .plan-dot { flex: 0 0 auto; width: 6px; height: 6px; margin-top: 5px; border-radius: 50%; background: var(--coral); }
    .planner-empty { grid-column: 1 / -1; padding: 30px 18px; border: 1px dashed rgba(23,75,59,.28); border-radius: 15px; color: var(--muted); font-size: 0.85rem; text-align: center; }
    .preview-actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 18px; }
    .preview-actions .btn { min-height: 42px; padding: 10px 15px; font-size: 0.75rem; }
    .planner-note { display: flex; gap: 9px; margin: 18px 0 0; color: var(--muted); font-size: 0.72rem; line-height: 1.5; }
    .planner-note svg { flex: 0 0 auto; width: 16px; height: 16px; margin-top: 2px; color: var(--forest); }

    .article-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
    .article-card { overflow: hidden; display: flex; flex-direction: column; }
    .article-image { overflow: hidden; aspect-ratio: 760 / 470; background: var(--sage); }
    .article-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
    .article-card:hover .article-image img { transform: scale(1.04); }
    .article-body { display: flex; flex: 1; flex-direction: column; padding: 23px; }
    .article-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 13px; }
    .article-category { color: var(--coral); font-size: 0.68rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
    .article-time { color: var(--muted); font-size: 0.7rem; font-weight: 700; }
    .article-body h3 { margin: 0 0 10px; color: var(--forest-deep); font-family: "Fraunces", Georgia, serif; font-size: 1.42rem; font-weight: 600; line-height: 1.16; }
    .article-body p { margin: 0; color: var(--muted); font-size: 0.88rem; line-height: 1.65; }
    .article-body .text-link { align-self: flex-start; margin-top: auto; padding-top: 20px; }

    .support-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
    .support-card { padding: 25px; }
    .support-icon { display: grid; width: 47px; height: 47px; place-items: center; margin-bottom: 20px; border-radius: 15px; background: var(--sage); color: var(--forest); }
    .support-icon svg { width: 22px; height: 22px; }
    .support-card h3 { margin: 0 0 8px; color: var(--forest-deep); font-family: "Fraunces", Georgia, serif; font-size: 1.4rem; font-weight: 600; line-height: 1.15; }
    .support-meta { display: inline-flex; margin-bottom: 12px; padding: 6px 10px; border-radius: 999px; background: var(--cream); color: #765d31; font-size: 0.68rem; font-weight: 800; }
    .support-card p { margin: 0; color: var(--muted); font-size: 0.86rem; line-height: 1.65; }
    .support-card .text-link { margin-top: 20px; }
    .support-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; margin-top: 31px; padding: 20px 22px; border: 1px solid rgba(23,75,59,.14); border-radius: 18px; background: rgba(255,255,255,.55); }
    .support-footer p { margin: 0; color: var(--muted); font-size: 0.83rem; }

    .testimonial-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
    .testimonial-card { position: relative; padding: 27px; }
    .quote-mark { position: absolute; top: 20px; right: 25px; color: var(--sage); font-family: Georgia, serif; font-size: 4rem; line-height: 1; }
    .stars { margin-bottom: 17px; color: var(--gold); font-size: 0.8rem; letter-spacing: 0.12em; }
    .testimonial-card blockquote { margin: 0 0 24px; color: #3c534b; font-family: "Fraunces", Georgia, serif; font-size: 1.12rem; font-weight: 500; line-height: 1.55; }
    .person { display: flex; align-items: center; gap: 11px; }
    .person img { width: 43px; height: 43px; border-radius: 50%; object-fit: cover; }
    .person strong { display: block; color: var(--forest-deep); font-size: 0.8rem; line-height: 1.2; }
    .person small { display: block; margin-top: 3px; color: var(--muted); font-size: 0.7rem; }

    .faq-layout { display: grid; grid-template-columns: 0.72fr 1.28fr; align-items: start; gap: clamp(38px, 7vw, 90px); }
    .faq-intro p { color: var(--muted); font-size: 1rem; line-height: 1.75; }
    .faq-intro .btn { margin-top: 25px; }
    .faq-list { border-top: 1px solid var(--line); }
    .faq-item { border-bottom: 1px solid var(--line); }
    .faq-question { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 22px 0; border: 0; background: transparent; color: var(--forest-deep); text-align: left; font-family: "Fraunces", Georgia, serif; font-size: 1.12rem; font-weight: 600; line-height: 1.3; }
    .faq-plus { position: relative; flex: 0 0 auto; width: 25px; height: 25px; border: 1px solid rgba(23,75,59,.25); border-radius: 50%; }
    .faq-plus::before, .faq-plus::after { content: ""; position: absolute; top: 50%; left: 50%; width: 9px; height: 1px; background: var(--forest); transform: translate(-50%, -50%); }
    .faq-plus::after { transform: translate(-50%, -50%) rotate(90deg); transition: transform .2s ease; }
    .faq-item.open .faq-plus::after { transform: translate(-50%, -50%) rotate(0deg); }
    .faq-answer { padding: 0 45px 23px 0; color: var(--muted); font-size: 0.9rem; line-height: 1.72; }
    .faq-answer p { margin: 0; }

    .newsletter-section { padding: 96px 0; background: var(--cream); }
    .newsletter-box { display: grid; grid-template-columns: 1fr 0.8fr; align-items: center; gap: 55px; padding: clamp(28px, 5vw, 58px); border-radius: 28px; background: var(--forest); color: #fff; box-shadow: 0 22px 55px rgba(16,53,45,.18); }
    .newsletter-copy .eyebrow { color: #b9d2c7; }
    .newsletter-copy h2 { margin: 0; font-family: "Fraunces", Georgia, serif; font-size: clamp(2rem, 3.3vw, 3.2rem); font-weight: 600; letter-spacing: -0.04em; line-height: 1.08; }
    .newsletter-copy p { max-width: 520px; margin: 17px 0 0; color: #c9ded5; font-size: 0.95rem; line-height: 1.7; }
    .newsletter-form { display: flex; gap: 9px; }
    .newsletter-form input { width: 100%; min-height: 51px; padding: 12px 16px; border: 1px solid rgba(255,255,255,.34); border-radius: 999px; background: rgba(255,255,255,.10); color: #fff; }
    .newsletter-form input::placeholder { color: #d7e5df; }
    .newsletter-form input:focus { border-color: #fff; outline: 3px solid rgba(255,255,255,.30); }
    .form-status { min-height: 21px; margin: 10px 0 0; color: #dcebe4; font-size: 0.75rem; }
    .privacy-note { margin: 12px 0 0 !important; color: #a9c6bb !important; font-size: 0.69rem !important; }

    .site-footer { padding: 68px 0 24px; background: var(--forest-deep); color: #dcebe4; }
    .footer-grid { display: grid; grid-template-columns: 1.4fr 0.7fr 1fr 1fr; gap: 42px; padding-bottom: 45px; }
    .footer-brand .brand { min-width: 0; margin-bottom: 18px; }
    .footer-brand .brand-name { color: #fff; }
    .footer-brand .brand-tagline { color: #a9c6bb; }
    .footer-brand p { max-width: 310px; margin: 0; color: #a9c6bb; font-size: 0.83rem; line-height: 1.7; }
    .social-row { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 22px; }
    .social-link { display: inline-flex; align-items: center; gap: 7px; padding: 8px 11px; border: 1px solid rgba(255,255,255,.16); border-radius: 999px; color: #e4f0ea; font-size: 0.7rem; font-weight: 700; text-decoration: none; transition: background .2s ease, border-color .2s ease; }
    .social-link:hover { background: rgba(255,255,255,.10); border-color: rgba(255,255,255,.32); }
    .social-link svg { width: 14px; height: 14px; }
    .footer-col h3 { margin: 4px 0 15px; color: #fff; font-size: 0.77rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
    .footer-links { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; }
    .footer-links a { color: #a9c6bb; font-size: 0.81rem; text-decoration: none; }
    .footer-links a:hover { color: #fff; }
    .contact-list { display: grid; gap: 11px; margin: 0; padding: 0; list-style: none; }
    .contact-list li { display: flex; align-items: start; gap: 9px; color: #a9c6bb; font-size: 0.79rem; line-height: 1.5; }
    .contact-list svg { flex: 0 0 auto; width: 15px; height: 15px; margin-top: 3px; color: #b9d2c7; }
    .footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.12); color: #8fae a3; color: #8faea3; font-size: 0.72rem; }
    .legal-links { display: flex; flex-wrap: wrap; gap: 17px; }
    .legal-links a { color: #c9ded5; text-decoration: none; }
    .legal-links a:hover { color: #fff; }
    .disclaimer { max-width: 690px; margin: 22px 0 0; color: #8faea3; font-size: 0.69rem; line-height: 1.6; }

    .toast {
      position: fixed;
      right: 22px;
      bottom: 22px;
      z-index: 100;
      max-width: min(380px, calc(100% - 44px));
      padding: 14px 18px;
      border-radius: 13px;
      background: var(--forest-deep);
      color: #fff;
      box-shadow: 0 14px 35px rgba(0,0,0,.22);
      font-size: 0.82rem;
      font-weight: 700;
      opacity: 0;
      pointer-events: none;
      transform: translateY(14px);
      transition: opacity .2s ease, transform .2s ease;
    }
    .toast.show { opacity: 1; transform: translateY(0); }

    @media (max-width: 1080px) {
      .feature-grid { grid-template-columns: repeat(2, 1fr); }
      .week-grid { grid-template-columns: repeat(4, minmax(145px, 1fr)); }
    }
    @media (max-width: 980px) {
      .header-inner { flex-wrap: wrap; min-height: 78px; padding: 14px 0; }
      .brand { min-width: 0; }
      .header-cta { display: none; }
      .menu-toggle { display: inline-flex; margin-left: auto; }
      .main-nav {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        display: grid;
        gap: 0;
        margin: 0;
        padding: 8px 20px 17px;
        border: 1px solid var(--line);
        border-top: 0;
        border-radius: 0 0 18px 18px;
        background: rgba(250,250,246,.98);
        box-shadow: 0 18px 30px rgba(23,53,46,.10);
        opacity: 0;
        pointer-events: none;
        transform: translateY(-8px);
        transition: opacity .2s ease, transform .2s ease;
      }
      .main-nav.open { opacity: 1; pointer-events: auto; transform: translateY(0); }
      .nav-link { display: block; padding: 13px 0; border-bottom: 1px solid rgba(23,75,59,.10); font-size: 0.88rem; }
      .nav-link:last-child { border-bottom: 0; }
      .nav-link::after { display: none; }
      .hero { padding-top: 58px; }
      .hero-grid { grid-template-columns: 1fr; gap: 54px; }
      .hero-copy { max-width: 740px; }
      .hero-visual { width: min(720px, 100%); min-height: 560px; }
      .planner-layout { grid-template-columns: 1fr; }
      .planner-panel, .plan-preview { max-width: 720px; width: 100%; margin-inline: auto; }
      .footer-grid { grid-template-columns: 1.3fr 0.7fr 1fr; }
      .footer-col:last-child { grid-column: 2 / 4; }
    }
    @media (max-width: 700px) {
      .container { width: min(100% - 30px, 1180px); }
      .section, .planner-section, .newsletter-section { padding: 72px 0; }
      .hero { padding: 45px 0 60px; }
      .hero h1 { font-size: clamp(2.65rem, 13vw, 4rem); }
      .hero-copy > p { margin-top: 22px; }
      .hero-visual { min-height: 470px; }
      .hero-photo { height: 470px; border-radius: 25px; }
      .visual-card { left: -8px; bottom: -23px; width: calc(100% - 16px); padding: 19px; }
      .visual-card h2 { font-size: 1.3rem; }
      .mini-card { top: 14px; right: 8px; min-width: 150px; padding: 11px; }
      .trust-grid { grid-template-columns: 1fr; gap: 12px; padding-top: 15px; padding-bottom: 15px; }
      .trust-item { font-size: 0.76rem; }
      .section-header-row { align-items: start; flex-direction: column; gap: 18px; margin-bottom: 30px; }
      .guide-grid { grid-template-columns: repeat(2, 1fr); }
      .feature-grid { grid-template-columns: 1fr; }
      .feature-image { aspect-ratio: 640 / 310; }
      .form-head { flex-direction: column; gap: 12px; }
      .week-grid { grid-template-columns: repeat(2, minmax(145px, 1fr)); }
      .day-card { min-height: 205px; }
      .article-grid, .support-grid, .testimonial-grid { grid-template-columns: 1fr; }
      .faq-layout { grid-template-columns: 1fr; gap: 35px; }
      .newsletter-box { grid-template-columns: 1fr; gap: 27px; }
      .newsletter-form { flex-direction: column; }
      .newsletter-form .btn { width: 100%; }
      .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px 22px; }
      .footer-brand { grid-column: 1 / -1; }
      .footer-col:last-child { grid-column: 1 / -1; }
      .footer-bottom { align-items: start; flex-direction: column; }
    }
    @media (max-width: 460px) {
      .brand-tagline { font-size: 0.66rem; }
      .brand-image { width: 43px; height: 43px; border-radius: 14px; }
      .brand-name { font-size: 1.14rem; }
      .hero-actions, .planner-actions { flex-direction: column; align-items: stretch; }
      .hero-actions .btn, .planner-actions .btn { width: 100%; }
      .guide-grid { grid-template-columns: 1fr; }
      .goal-grid { grid-template-columns: 1fr; }
      .week-grid { grid-template-columns: 1fr; }
      .day-card { min-height: auto; }
      .footer-grid { grid-template-columns: 1fr; }
      .footer-brand, .footer-col:last-child { grid-column: auto; }
      .footer-bottom { font-size: 0.68rem; }
      .legal-links { gap: 10px; }
    }
    @media (prefers-reduced-motion: reduce) {
      html { scroll-behavior: auto; }
      *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: 0.01ms !important; }
    }
    @media print {
      .site-header, .hero-actions, .planner-actions, .preview-actions, .newsletter-form, .footer-bottom, .toast { display: none !important; }
      body { background: #fff; }
      .hero, .section, .planner-section, .newsletter-section { padding: 24px 0; }
      .hero-visual { display: none; }
      .planner-layout { display: block; }
      .planner-panel, .plan-preview { max-width: none; box-shadow: none; }
    }
  </style>
</head>
<body>
  <a class="skip-link" href="#main">Skip to main content</a>

  <header class="site-header">
    <div class="container header-inner">
      <a class="brand" href="#home" aria-label="Kindred Path home">
        <img class="brand-image" src="https://placehold.co/120x120/174B3B/FFFFFF?text=KP&amp;font=poppins" width="50" height="50" alt="Kindred Path logo">
        <span class="brand-copy">
          <span class="brand-name">Kindred Path</span>
          <span class="brand-tagline">Clear guidance for every stage of family life.</span>
        </span>
      </a>

      <button class="menu-toggle" id="menuToggle" type="button" aria-expanded="false" aria-controls="primaryNav">Menu</button>

      <nav class="main-nav" id="primaryNav" aria-label="Primary navigation">
        <a class="nav-link" href="#home">Home</a>
        <a class="nav-link" href="#age-guides">Age Guides</a>
        <a class="nav-link" href="#wellness">Resources</a>
        <a class="nav-link" href="#planner">Family Tools</a>
        <a class="nav-link" href="#blog">Blog</a>
        <a class="nav-link" href="#support">Support Groups</a>
        <a class="nav-link" href="#about">About</a>
      </nav>

      <a class="btn btn-primary header-cta" href="#support">Get support</a>
    </div>
  </header>

  <main id="main">
    <section class="hero" id="home" aria-labelledby="hero-title">
      <div class="container hero-grid">
        <div class="hero-copy">
          <div class="eyebrow">Evidence-informed parenting, without the overwhelm</div>
          <h1 id="hero-title">Parent with more confidence. Connect with more ease.</h1>
          <p>Kindred Path turns child-development research into calm, usable guidance for mornings, meals, big feelings, and everything in between. Explore age-specific resources, practical activities, and supportive communities designed for the way families actually live.</p>
          <div class="hero-actions">
            <a class="btn btn-primary" href="#age-guides">Explore age guides <span aria-hidden="true">→</span></a>
            <a class="btn btn-secondary" href="#planner">Build a family rhythm</a>
          </div>
          <div class="hero-note" aria-label="Site benefits">
            <span>Developmentally informed</span><span class="note-dot" aria-hidden="true"></span><span>Practical in 10 minutes</span><span class="note-dot" aria-hidden="true"></span><span>Made for real family schedules</span>
          </div>
          <div class="hero-proof">
            <div class="avatar-stack" aria-hidden="true">
              <img src="https://i.pravatar.cc/76?u=maya" width="38" height="38" alt="">
              <img src="https://i.pravatar.cc/76?u=jordan" width="38" height="38" alt="">
              <img src="https://i.pravatar.cc/76?u=elena" width="38" height="38" alt="">
              <img src="https://i.pravatar.cc/76?u=sam" width="38" height="38" alt="">
            </div>
            <div class="proof-copy"><strong>12,400+ families learning together</strong>Trusted by parents, caregivers, and educators.</div>
          </div>
        </div>

        <div class="hero-visual" aria-label="A calm family planning moment">
          <img class="hero-photo" src="https://picsum.photos/1200/900?grayscale" width="1200" height="900" alt="A family sharing a quiet planning moment together">
          <div class="visual-card">
            <div class="visual-card-kicker"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><path d="M5 12.5l4 4L19 7" stroke-linecap="round" stroke-linejoin="round"></path></svg> A small shift can help</div>
            <h2>Today's small rituals build tomorrow's resilience.</h2>
            <p>Try one manageable routine this week. Consistency matters more than perfection.</p>
          </div>
          <div class="mini-card">
            <span class="mini-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="4" y="5" width="16" height="15" rx="3"></rect><path d="M8 3v4M16 3v4M4 10h16M8 14h3M8 17h6" stroke-linecap="round"></path></svg></span>
            <span><strong>7-day family rhythm</strong><small>A flexible plan for calmer days</small></span>
          </div>
        </div>
      </div>
    </section>

    <section class="trust-bar" aria-label="Kindred Path commitments">
      <div class="container trust-grid">
        <div class="trust-item"><span class="trust-check" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12.5l4 4L19 7" stroke-linecap="round" stroke-linejoin="round"></path></svg></span>Developmentally informed guidance</div>
        <div class="trust-item"><span class="trust-check" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12.5l4 4L19 7" stroke-linecap="round" stroke-linejoin="round"></path></svg></span>Practical ideas for busy days</div>
        <div class="trust-item"><span class="trust-check" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12.5l4 4L19 7" stroke-linecap="round" stroke-linejoin="round"></path></svg></span>A judgment-free family community</div>
      </div>
    </section>

    <section class="section section-alt" id="age-guides" aria-labelledby="age-title">
      <div class="container">
        <div class="section-heading">
          <div class="eyebrow">Guidance for every season</div>
          <h2 id="age-title">Find support for where your family is right now.</h2>
          <p>Every family moves through different seasons at a different pace. Our guides pair developmental context with scripts, routines, and questions you can use today—so advice feels like a hand on your shoulder, not another thing to perfect.</p>
        </div>

        <div class="guide-grid">
          <article class="guide-card">
            <div class="guide-image"><img src="https://placehold.co/700x520/eaf2ec/174B3B?text=Toddler+routines&amp;font=poppins" width="700" height="520" alt="Illustrated guide for toddler routines" loading="lazy"></div>
            <div class="guide-body">
              <span class="card-kicker">Ages 1–3</span>
              <h3>Big feelings, small routines</h3>
              <p>Toddler behavior is communication. Find gentle limits, transition tips, and simple language that helps little ones feel seen while keeping the day moving.</p>
              <a class="text-link" href="#planner">Explore toddler tools <span aria-hidden="true">→</span></a>
            </div>
          </article>

          <article class="guide-card">
            <div class="guide-image"><img src="https://placehold.co/700x520/f3ece2/6B4F2A?text=Early+elementary&amp;font=poppins" width="700" height="520" alt="Illustrated guide for early elementary years" loading="lazy"></div>
            <div class="guide-body">
              <span class="card-kicker">Ages 4–7</span>
              <h3>Growing independence</h3>
              <p>School, friendships, and self-care bring new milestones. Build confidence with predictable routines, helpful choices, and activities that make learning feel playful.</p>
              <a class="text-link" href="#wellness">See learning resources <span aria-hidden="true">→</span></a>
            </div>
          </article>

          <article class="guide-card">
            <div class="guide-image"><img src="https://placehold.co/700x520/e7edf6/36566b?text=Tween+years&amp;font=poppins" width="700" height="520" alt="Illustrated guide for tween years" loading="lazy"></div>
            <div class="guide-body">
              <span class="card-kicker">Ages 8–11</span>
              <h3>Preparing for change</h3>
              <p>Tweens are practicing independence while still needing a secure base. Learn how to listen without taking over, talk about digital life, and keep connection alive.</p>
              <a class="text-link" href="#planner">Build a tween rhythm <span aria-hidden="true">→</span></a>
            </div>
          </article>

          <article class="guide-card">
            <div class="guide-image"><img src="https://placehold.co/700x520/f1e8ed/72465D?text=Teen+connection&amp;font=poppins" width="700" height="520" alt="Illustrated guide for teen connection" loading="lazy"></div>
            <div class="guide-body">
              <span class="card-kicker">Ages 12–18</span>
              <h3>Connection before correction</h3>
              <p>Adolescence calls for a different kind of closeness. Use respectful conversations, shared boundaries, and repair strategies that keep the door open when things get hard.</p>
              <a class="text-link" href="#support">Connect with experts <span aria-hidden="true">→</span></a>
            </div>
          </article>
        </div>
      </div>
    </section>

    <section class="section" id="wellness" aria-labelledby="wellness-title">
      <div class="container">
        <div class="section-heading">
          <div class="eyebrow">Play, learn &amp; grow</div>
          <h2 id="wellness-title">Resources that fit real family life.</h2>
          <p>We believe good parenting support should be useful before dinner is burned. Our editors and child-development specialists translate current research into short reads, conversation starters, and activities you can try with the materials already at home.</p>
        </div>

        <div class="feature-grid">
          <article class="feature-card">
            <div class="feature-image"><img src="https://placehold.co/640x440/174B3B/FFFFFF?text=Emotional+intelligence&amp;font=lora" width="640" height="440" alt="Emotional intelligence resource" loading="lazy"><span class="feature-number">01</span></div>
            <div class="feature-body">
              <span class="card-kicker">Emotional intelligence</span>
              <h3>Name it to tame it</h3>
              <p>Children build self-regulation through co-regulation. Try emotion labels, body clues, and repair phrases that make big feelings understandable without shaming them.</p>
              <a class="text-link" href="#planner">Try a regulation activity <span aria-hidden="true">→</span></a>
            </div>
          </article>

          <article class="feature-card">
            <div class="feature-image"><img src="https://placehold.co/640x440/EDF4E7/174B3B?text=Nutrition+%26+wellness&amp;font=poppins" width="640" height="440" alt="Nutrition and wellness resource" loading="lazy"><span class="feature-number">02</span></div>
            <div class="feature-body">
              <span class="card-kicker">Nutrition &amp; wellness</span>
              <h3>Nourishment without food fear</h3>
              <p>Family wellness starts with sustainable habits, not strict rules. Explore balanced plate ideas, hunger cues, sleep routines, and calm approaches to picky eating.</p>
              <a class="text-link" href="#blog">Read the wellness guide <span aria-hidden="true">→</span></a>
            </div>
          </article>

          <article class="feature-card">
            <div class="feature-image"><img src="https://placehold.co/640x440/F4F0E7/6B4F2A?text=Family+bonding&amp;font=poppins" width="640" height="440" alt="Family bonding resource" loading="lazy"><span class="feature-number">03</span></div>
            <div class="feature-body">
              <span class="card-kicker">Family bonding</span>
              <h3>Make space for togetherness</h3>
              <p>Connection is built in ordinary moments. Create low-pressure rituals like shared walks, kitchen jobs, game nights, and ten minutes of child-led play.</p>
              <a class="text-link" href="#planner">Create a family ritual <span aria-hidden="true">→</span></a>
            </div>
          </article>

          <article class="feature-card">
            <div class="feature-image"><img src="https://placehold.co/640x440/E9EEF5/36566B?text=Educational+activities&amp;font=poppins" width="640" height="440" alt="Educational activities resource" loading="lazy"><span class="feature-number">04</span></div>
            <div class="feature-body">
              <span class="card-kicker">Educational activities</span>
              <h3>Curiosity in the everyday</h3>
              <p>Learning does not require a perfect setup. Turn walks into nature observations, cooking into measurement practice, and storytelling into vocabulary building.</p>
              <a class="text-link" href="#blog">Browse activity ideas <span aria-hidden="true">→</span></a>
            </div>
          </article>
        </div>
      </div>
    </section>

    <section class="planner-section" id="planner" aria-labelledby="planner-title">
      <div class="container">
        <div class="section-heading">
          <div class="eyebrow">Interactive family tool</div>
          <h2 id="planner-title">Build a rhythm your family can actually keep.</h2>
          <p>Choose a few focus areas and turn them into a realistic weekly rhythm. Adjust the plan as life changes, save it for your household, or copy it to share with another caregiver.</p>
        </div>

        <div class="planner-layout">
          <form class="planner-panel" id="plannerForm">
            <div class="form-head">
              <div>
                <h3>Your weekly focus</h3>
                <p>Pick what would make the biggest difference this week.</p>
              </div>
              <span class="form-head-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M5 4h14v16H5z" stroke-linejoin="round"></path><path d="M8 8h8M8 12h8M8 16h5" stroke-linecap="round"></path></svg></span>
            </div>

            <fieldset>
              <legend>Choose up to five focus areas</legend>
              <div class="goal-grid" role="group" aria-label="Family focus areas">
                <label class="goal-chip"><input type="checkbox" value="calm-mornings" checked><span><strong>Calm mornings</strong><small>Reduce the rush</small></span></label>
                <label class="goal-chip"><input type="checkbox" value="screen-balance"><span><strong>Screen balance</strong><small>Set kind limits</small></span></label>
                <label class="goal-chip"><input type="checkbox" value="family-dinner" checked><span><strong>Family dinner</strong><small>Connect at the table</small></span></label>
                <label class="goal-chip"><input type="checkbox" value="bedtime" checked><span><strong>Bedtime</strong><small>Make wind-down predictable</small></span></label>
                <label class="goal-chip"><input type="checkbox" value="connection" checked><span><strong>Connection</strong><small>Protect playtime</small></span></label>
              </div>
            </fieldset>

            <div class="form-group">
              <label for="stageSelect">Choose your child's stage</label>
              <div class="select-wrap">
                <select id="stageSelect">
                  <option value="toddlers">Toddler years</option>
                  <option value="elementary">Early elementary</option>
                  <option value="tweens">Tween years</option>
                  <option value="teens">Teen years</option>
                </select>
              </div>
            </div>

            <div class="planner-actions">
              <button class="btn btn-primary" type="submit">Build my week <span aria-hidden="true">→</span></button>
              <button class="btn btn-secondary" id="resetPlan" type="button">Reset plan</button>
            </div>
            <p class="form-note">Use this as a flexible starting point—not a scorecard. Families can move at their own pace.</p>
          </form>

          <div class="plan-preview" aria-label="Generated weekly family rhythm">
            <div class="preview-head">
              <div>
                <h3>Your weekly rhythm</h3>
                <p>A simple sequence you can adapt throughout the week.</p>
                <span class="focus-label" id="focusLabel">Toddler years focus</span>
              </div>
            </div>
            <div class="progress-wrap">
              <div class="progress-meta"><span id="progressText">4 of 5 focus areas selected</span><span id="progressPercent">80%</span></div>
              <div class="progress-track" aria-hidden="true"><div class="progress-fill" id="progressFill"></div></div>
            </div>
            <div class="week-grid" id="weekGrid" aria-live="polite"></div>
            <div class="preview-actions">
              <button class="btn btn-primary" id="savePlan" type="button">Save my plan</button>
              <button class="btn btn-secondary" id="sharePlan" type="button">Share with co-parent</button>
              <button class="btn btn-secondary" id="printPlan" type="button">Print plan</button>
            </div>
            <p class="planner-note"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><circle cx="12" cy="12" r="8"></circle><path d="M12 11v5M12 8h.01" stroke-linecap="round"></path></svg><span>Small, repeated moments matter more than a perfect week. Save a plan and return to it when routines feel unsettled.</span></p>
          </div>
        </div>
      </div>
    </section>

    <section class="section section-alt" id="blog" aria-labelledby="blog-title">
      <div class="container">
        <div class="section-header-row">
          <div class="section-heading">
            <div class="eyebrow">From the Kindred Path journal</div>
            <h2 id="blog-title">Practical ideas for the days you wish were easier.</h2>
            <p>Fresh writing from our editors, clinicians, and family contributors—created for real schedules and updated as research evolves.</p>
          </div>
          <a class="btn btn-secondary" href="#newsletter">Get new articles <span aria-hidden="true">→</span></a>
        </div>

        <div class="article-grid">
          <article class="article-card">
            <div class="article-image"><img src="https://picsum.photos/760/500?grayscale" width="760" height="500" alt="A parent and child reconnecting after a difficult moment" loading="lazy"></div>
            <div class="article-body">
              <div class="article-meta"><span class="article-category">Parenting repair</span><span class="article-time">6 min read</span></div>
              <h3>How to repair after a hard parenting moment</h3>
              <p>An apology, a reset, and a plan can turn a difficult moment into a powerful lesson in emotional safety.</p>
              <a class="text-link" href="#newsletter">Read the article <span aria-hidden="true">→</span></a>
            </div>
          </article>

          <article class="article-card">
            <div class="article-image"><img src="https://picsum.photos/760/500?grayscale" width="760" height="500" alt="A child naming emotions during a family activity" loading="lazy"></div>
            <div class="article-body">
              <div class="article-meta"><span class="article-category">Emotional intelligence</span><span class="article-time">4 min read</span></div>
              <h3>Five words that help children name big feelings</h3>
              <p>Simple language can give children a bridge between sensation and expression—especially before they have the words to explain what is happening.</p>
              <a class="text-link" href="#newsletter">Read the article <span aria-hidden="true">→</span></a>
            </div>
          </article>

          <article class="article-card">
            <div class="article-image"><img src="https://picsum.photos/760/500?grayscale" width="760" height="500" alt="A family sharing a relaxed meal together" loading="lazy"></div>
            <div class="article-body">
              <div class="article-meta"><span class="article-category">Nutrition &amp; wellness</span><span class="article-time">7 min read</span></div>
              <h3>A realistic guide to family meals</h3>
              <p>Start with connection, not perfection. Practical ways to reduce mealtime pressure while building healthier relationships with food.</p>
              <a class="text-link" href="#newsletter">Read the article <span aria-hidden="true">→</span></a>
            </div>
          </article>
        </div>
      </div>
    </section>

    <section class="section" id="support" aria-labelledby="support-title">
      <div class="container">
        <div class="section-heading">
          <div class="eyebrow">You are not alone</div>
          <h2 id="support-title">Support that meets you where you are.</h2>
          <p>You do not have to solve every hard season alone. Our moderated groups connect parents and caregivers with people who understand the context, while our expert directory can help you find the right next step.</p>
        </div>

        <div class="support-grid">
          <article class="support-card">
            <span class="support-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M12 20s-7-4.3-7-9.2A4 4 0 0 1 12 8a4 4 0 0 1 7 2.8C19 15.7 12 20 12 20Z" stroke-linejoin="round"></path></svg></span>
            <h3>New Parent Circle</h3>
            <span class="support-meta">Online · Wednesdays at 8:00 PM ET</span>
            <p>A supportive space for sleep-deprived parents to share wins, ask ordinary questions, and leave with one manageable next step.</p>
            <a class="text-link" href="#newsletter">Browse upcoming groups <span aria-hidden="true">→</span></a>
          </article>

          <article class="support-card">
            <span class="support-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M4 12h4l2-5 4 10 2-5h4" stroke-linecap="round" stroke-linejoin="round"></path></svg></span>
            <h3>Calm Co-Parenting</h3>
            <span class="support-meta">Virtual · Biweekly</span>
            <p>Practical support for separated and divorced parents navigating routines, transitions, and respectful communication across households.</p>
            <a class="text-link" href="#newsletter">Find a facilitator <span aria-hidden="true">→</span></a>
          </article>

          <article class="support-card">
            <span class="support-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><circle cx="9" cy="8" r="3"></circle><circle cx="16.5" cy="9.5" r="2.5"></circle><path d="M4 20c.2-4 2-6 5-6s4.8 2 5 6M14 19c.2-2.5 1.2-4 2.5-4.5" stroke-linecap="round"></path></svg></span>
            <h3>GrandFamilies Hub</h3>
            <span class="support-meta">Online + in person</span>
            <p>Resources and peer connection for grandparents and kin caregivers raising children, from legal basics to daily routines.</p>
            <a class="text-link" href="#newsletter">Connect with caregivers <span aria-hidden="true">→</span></a>
          </article>
        </div>

        <div class="support-footer">
          <p>Every group is moderated, welcoming, and designed to protect your time and privacy.</p>
          <div class="hero-actions" style="margin:0">
            <a class="btn btn-primary" href="#newsletter">Get help</a>
            <a class="btn btn-light" href="#newsletter">Connect with experts</a>
          </div>
        </div>
      </div>
    </section>

    <section class="section section-alt" id="stories" aria-labelledby="stories-title">
      <div class="container">
        <div class="section-heading center">
          <div class="eyebrow">Stories from our community</div>
          <h2 id="stories-title">Small changes, felt at home.</h2>
          <p>Real families use Kindred Path in imperfect, busy, beautiful ways. These stories are shared with permission.</p>
        </div>

        <div class="testimonial-grid">
          <article class="testimonial-card">
            <span class="quote-mark" aria-hidden="true">“</span>
            <div class="stars" aria-label="5 out of 5 stars">★★★★★</div>
            <blockquote>I stopped searching for the perfect script and started using the small tools. Our evenings feel calmer, and my daughter is getting better at telling me what she needs.</blockquote>
            <div class="person"><img src="https://i.pravatar.cc/88?u=maya" width="43" height="43" alt="Avatar of Maya R."><span><strong>Maya R.</strong><small>Parent of a three-year-old</small></span></div>
          </article>

          <article class="testimonial-card">
            <span class="quote-mark" aria-hidden="true">“</span>
            <div class="stars" aria-label="5 out of 5 stars">★★★★★</div>
            <blockquote>The weekly planner fits our actual life. It gives us a shared plan without making either of us feel like we are being graded.</blockquote>
            <div class="person"><img src="https://i.pravatar.cc/88?u=jordan" width="43" height="43" alt="Avatar of Jordan T."><span><strong>Jordan T.</strong><small>Parent of twins</small></span></div>
          </article>

          <article class="testimonial-card">
            <span class="quote-mark" aria-hidden="true">“</span>
            <div class="stars" aria-label="5 out of 5 stars">★★★★★</div>
            <blockquote>The GrandFamilies resources helped me explain transitions to my grandson in a way he could understand. I finally have a community that gets it.</blockquote>
            <div class="person"><img src="https://i.pravatar.cc/88?u=elena" width="43" height="43" alt="Avatar of Elena M."><span><strong>Elena M.</strong><small>Grandparent caregiver</small></span></div>
          </article>
        </div>
      </div>
    </section>

    <section class="section" id="faq" aria-labelledby="faq-title">
      <div class="container faq-layout">
        <div class="faq-intro">
          <div class="eyebrow">Questions families ask</div>
          <h2 id="faq-title">A little clarity before you begin.</h2>
          <p>Our goal is to make helpful support easy to find, understand, and use. If you cannot find an answer here, our support team is happy to point you in the right direction.</p>
          <a class="btn btn-primary" href="#support">Ask a question <span aria-hidden="true">→</span></a>
        </div>

        <div class="faq-list">
          <div class="faq-item">
            <button class="faq-question" type="button" aria-expanded="false"><span>Is Kindred Path medical or mental-health advice?</span><span class="faq-plus" aria-hidden="true"></span></button>
            <div class="faq-answer" hidden><p>No. Kindred Path provides educational, evidence-informed resources. Our content is not a substitute for personalized care from a pediatrician, therapist, dietitian, or other qualified professional. If you are worried about your child's health or safety, please contact a licensed provider or local emergency service.</p></div>
          </div>
          <div class="faq-item">
            <button class="faq-question" type="button" aria-expanded="false"><span>How do you choose what to publish?</span><span class="faq-plus" aria-hidden="true"></span></button>
            <div class="faq-answer" hidden><p>Our editorial team looks for practical value, developmental accuracy, and a respectful tone. Articles are reviewed against current research and family feedback, then updated when guidance or best practices change.</p></div>
          </div>
          <div class="faq-item">
            <button class="faq-question" type="button" aria-expanded="false"><span>Can grandparents and other caregivers use the guides?</span><span class="faq-plus" aria-hidden="true"></span></button>
            <div class="faq-answer" hidden><p>Absolutely. Parenting support belongs to everyone who cares for a child. Our guides are written to be useful for parents, grandparents, foster caregivers, kin caregivers, educators, and other trusted adults.</p></div>
          </div>
          <div class="faq-item">
            <button class="faq-question" type="button" aria-expanded="false"><span>Are support groups free and private?</span><span class="faq-plus" aria-hidden="true"></span></button>
            <div class="faq-answer" hidden><p>Most community groups are free to join, and facilitators remind members to respect one another's stories. We collect only the information needed to provide a service and do not display member names publicly.</p></div>
          </div>
          <div class="faq-item">
            <button class="faq-question" type="button" aria-expanded="false"><span>How often are resources updated?</span><span class="faq-plus" aria-hidden="true"></span></button>
            <div class="faq-answer" hidden><p>We review high-traffic resources at least quarterly and update them sooner when important research, safety guidance, or family feedback changes. Each article includes a last-reviewed date when applicable.</p></div>
          </div>
        </div>
      </div>
    </section>

    <section class="newsletter-section" id="newsletter" aria-labelledby="newsletter-title">
      <div class="container">
        <div class="newsletter-box">
          <div class="newsletter-copy">
            <div class="eyebrow">The Kindred Path weekly</div>
            <h2 id="newsletter-title">A calmer week, in your inbox.</h2>
            <p>Get one practical idea, one family activity, and one moment of encouragement every Sunday—designed to help you feel prepared without adding more pressure.</p>
          </div>
          <div>
            <form class="newsletter-form" id="newsletterForm">
              <label class="sr-only" for="newsletterEmail">Email address</label>
              <input id="newsletterEmail" name="email" type="email" autocomplete="email" placeholder="Enter your email address" required>
              <button class="btn btn-light" type="submit">Get the weekly guide <span aria-hidden="true">→</span></button>
            </form>
            <p class="form-status" id="newsletterStatus" aria-live="polite"></p>
            <p class="privacy-note">We respect your inbox. Unsubscribe anytime. Read our <a href="#privacy">Privacy Policy</a>.</p>
          </div>
        </div>
      </div>
    </section>
  </main>

  <footer class="site-footer" id="about">
    <div class="container">
      <div class="footer-grid">
        <div class="footer-brand">
          <a class="brand" href="#home" aria-label="Kindred Path home">
            <img class="brand-image" src="https://placehold.co/120x120/174B3B/FFFFFF?text=KP&amp;font=poppins" width="50" height="50" alt="Kindred Path logo">
            <span class="brand-copy"><span class="brand-name">Kindred Path</span><span class="brand-tagline">Clear guidance for every stage of family life.</span></span>
          </a>
          <p>Evidence-informed parenting guidance, practical family tools, and a judgment-free community for the people doing the work.</p>
          <div class="social-row" aria-label="Social media links">
            <a class="social-link" href="https://www.instagram.com/" aria-label="Kindred Path on Instagram"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="4" y="4" width="16" height="16" rx="5"></rect><circle cx="12" cy="12" r="3.5"></circle><path d="M16.5 7.5h.01" stroke-linecap="round"></path></svg>Instagram</a>
            <a class="social-link" href="https://www.facebook.com/" aria-label="Kindred Path on Facebook"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M14 8h3V4.5h-3c-2.2 0-4 1.8-4 4V11H7v3.5h3V20h3.5v-5.5h3l.5-3.5h-3.5V8.7c0-.4.3-.7.5-.7Z"></path></svg>Facebook</a>
            <a class="social-link" href="https://www.youtube.com/" aria-label="Kindred Path on YouTube"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M21.6 7.2a2.7 2.7 0 0 0-1.9-1.9C18 4.8 12 4.8 12 4.8s-6 0-7.7.5A2.7 2.7 0 0 0 2.4 7.2 28 28 0 0 0 2 12a28 28 0 0 0 .4 4.8 2.7 2.7 0 0 0 1.9 1.9c1.7.5 7.7.5 7.7.5s6 0 7.7-.5a2.7 2.7 0 0 0 1.9-1.9A28 28 0 0 0 22 12a28 28 0 0 0-.4-4.8ZM10 15V9l5.2 3L10 15Z"></path></svg>YouTube</a>
          </div>
        </div>

        <div class="footer-col">
          <h3>Explore</h3>
          <ul class="footer-links">
            <li><a href="#age-guides">Age-specific guides</a></li>
            <li><a href="#wellness">Family resources</a></li>
            <li><a href="#planner">Weekly planner</a></li>
            <li><a href="#blog">Parenting journal</a></li>
            <li><a href="#stories">Family stories</a></li>
          </ul>
        </div>

        <div class="footer-col">
          <h3>Get support</h3>
          <ul class="footer-links">
            <li><a href="#support">Support groups</a></li>
            <li><a href="#support">Connect with experts</a></li>
            <li><a href="#newsletter">Share your story</a></li>
            <li><a href="#faq">Help &amp; FAQ</a></li>
            <li><a href="#newsletter">Contact us</a></li>
          </ul>
        </div>

        <div class="footer-col">
          <h3>Contact Kindred Path</h3>
          <ul class="contact-list">
            <li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><rect x="4" y="5" width="16" height="14" rx="2"></rect><path d="m5 7 7 5 7-5" stroke-linecap="round"></path></svg><a href="mailto:hello@kindredpath.family">hello@kindredpath.family</a></li>
            <li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><path d="M7 3H4a1 1 0 0 0-1 1c0 8.8 7.2 16 16 16a1 1 0 0 0 1-1v-3l-4-2-2 2c-4-1.6-7.4-5-9-9l2-2-2-4Z" stroke-linejoin="round"></path></svg><span>+1 (555) 014-2876</span></li>
            <li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><path d="M12 21s7-5.1 7-11a7 7 0 1 0-14 0c0 5.9 7 11 7 11Z"></path><circle cx="12" cy="10" r="2.5"></circle></svg><span>214 Maple Row<br>Portland, OR 97205</span></li>
          </ul>
        </div>
      </div>

      <p class="disclaimer">Kindred Path offers general educational information and is not a substitute for professional medical, mental-health, legal, or childcare advice. If you are in crisis or believe someone is in immediate danger, contact local emergency services right away.</p>

      <div class="footer-bottom">
        <span>© <span id="year">2025</span> Kindred Path. All rights reserved.</span>
        <nav class="legal-links" aria-label="Legal links"><a id="privacy" href="#about">Privacy Policy</a><a href="#about">Terms of Use</a><a href="#about">Accessibility</a></nav>
      </div>
    </div>
  </footer>

  <div class="toast" id="toast" role="status" aria-live="polite"></div>

  <script>
    (() => {
      const header = document.querySelector('.site-header');
      const menuToggle = document.getElementById('menuToggle');
      const primaryNav = document.getElementById('primaryNav');
      const toast = document.getElementById('toast');
      let toastTimer;

      const showToast = (message) => {
        toast.textContent = message;
        toast.classList.add('show');
        clearTimeout(toastTimer);
        toastTimer = setTimeout(() => toast.classList.remove('show'), 3600);
      };

      const closeMenu = () => {
        primaryNav.classList.remove('open');
        menuToggle.setAttribute('aria-expanded', 'false');
      };

      menuToggle.addEventListener('click', () => {
        const isOpen = primaryNav.classList.toggle('open');
        menuToggle.setAttribute('aria-expanded', String(isOpen));
      });

      primaryNav.querySelectorAll('a').forEach((link) => link.addEventListener('click', closeMenu));
      window.addEventListener('resize', () => { if (window.innerWidth > 980) closeMenu(); });
      window.addEventListener('scroll', () => header.classList.toggle('is-scrolled', window.scrollY > 10), { passive: true });

      document.querySelectorAll('.faq-question').forEach((button) => {
        button.addEventListener('click', () => {
          const item = button.closest('.faq-item');
          const wasOpen = item.classList.contains('open');
          document.querySelectorAll('.faq-item.open').forEach((openItem) => {
            openItem.classList.remove('open');
            openItem.querySelector('.faq-question').setAttribute('aria-expanded', 'false');
            openItem.querySelector('.faq-answer').hidden = true;
          });
          if (!wasOpen) {
            item.classList.add('open');
            button.setAttribute('aria-expanded', 'true');
            item.querySelector('.faq-answer').hidden = false;
          }
        });
      });

      const goalData = [
        { id: 'calm-mornings', title: 'Calm mornings', detail: '10-minute warning · shared breakfast' },
        { id: 'screen-balance', title: 'Screen balance', detail: 'Outdoor reset · agreed screen window' },
        { id: 'family-dinner', title: 'Family dinner', detail: 'Device-free table · good-day question' },
        { id: 'bedtime', title: 'Bedtime', detail: 'Predictable wind-down · read together' },
        { id: 'connection', title: 'Connection', detail: '10 minutes of child-led play' }
      ];
      const plannerForm = document.getElementById('plannerForm');
      const stageSelect = document.getElementById('stageSelect');
      const focusLabel = document.getElementById('focusLabel');
      const weekGrid = document.getElementById('weekGrid');
      const progressFill = document.getElementById('progressFill');
      const progressText = document.getElementById('progressText');
      const progressPercent = document.getElementById('progressPercent');

      const getSelectedGoals = () => goalData.filter((goal) => document.querySelector(`input[value="${goal.id}"]:checked`));
      const stageName = () => stageSelect.options[stageSelect.selectedIndex].text;

      const buildPlan = () => {
        const selected = getSelectedGoals();
        focusLabel.textContent = `${stageName()} focus`;
        progressText.textContent = `${selected.length} of 5 focus areas selected`;
        progressPercent.textContent = `${Math.round((selected.length / goalData.length) * 100)}%`;
        progressFill.style.width = `${(selected.length / goalData.length) * 100}%`;

        if (!selected.length) {
          weekGrid.innerHTML = '<div class="planner-empty">Choose at least one focus area to create your weekly rhythm.</div>';
          return;
        }

        const today = new Date();
        const offset = (today.getDay() + 6) % 7;
        const monday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - offset);
        const days = selected.map((_, index) => {
          const date = new Date(monday.getFullYear(), monday.getMonth(), monday.getDate() + index);
          const dayName = index === 0 ? 'Today' : date.toLocaleDateString('en-US', { weekday: 'short' });
          const dateLabel = index === 0 ? '' : date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
          const actions = selected.map((goal) => `<li><span class="plan-dot" aria-hidden="true"></span><span><strong>${goal.title}:</strong> ${goal.detail}</span></li>`).join('');
          return `<article class="day-card"><div class="day-top"><h4>${dayName}</h4>${dateLabel ? `<span class="day-date">${dateLabel}</span>` : ''}</div><ul class="day-actions">${actions}</ul></article>`;
        }).join('');
        weekGrid.innerHTML = days;
      };

      plannerForm.addEventListener('submit', (event) => {
        event.preventDefault();
        buildPlan();
        showToast('Your weekly family rhythm is ready.');
      });

      document.getElementById('resetPlan').addEventListener('click', () => {
        plannerForm.querySelectorAll('input[type="checkbox"]').forEach((input) => {
          input.checked = input.value !== 'screen-balance';
        });
        stageSelect.value = 'toddlers';
        buildPlan();
        showToast('Your default family rhythm has been restored.');
      });

      document.getElementById('savePlan').addEventListener('click', () => {
        const selected = getSelectedGoals().map((goal) => goal.id);
        try {
          localStorage.setItem('kindred-path-plan', JSON.stringify({ goals: selected, stage: stageSelect.value, savedAt: new Date().toISOString() }));
          showToast('Your family rhythm has been saved in this browser.');
        } catch (error) {
          showToast('Your plan is ready—use Share to keep it nearby.');
        }
      });

      document.getElementById('sharePlan').addEventListener('click', async () => {
        const selected = getSelectedGoals();
        if (!selected.length) {
          showToast('Choose at least one focus area before sharing.');
          return;
        }
        const lines = selected.map((goal) => `• ${goal.title}: ${goal.detail}`).join('\n');
        const text = `Kindred Path weekly family rhythm\nStage: ${stageName()}\n\n${lines}\n\nBuilt with Kindred Path.`;
        try {
          await navigator.clipboard.writeText(text);
          showToast('Your family rhythm is copied to the clipboard.');
        } catch (error) {
          window.prompt('Copy this family rhythm:', text);
        }
      });

      document.getElementById('printPlan').addEventListener('click', () => window.print());
      buildPlan();

      const newsletterForm = document.getElementById('newsletterForm');
      const newsletterStatus = document.getElementById('newsletterStatus');
      newsletterForm.addEventListener('submit', (event) => {
        event.preventDefault();
        const email = document.getElementById('newsletterEmail');
        if (!email.checkValidity()) {
          email.reportValidity();
          return;
        }
        newsletterStatus.textContent = `Thank you — a welcome note is on its way to ${email.value}.`;
        newsletterForm.reset();
        showToast('You are on the Kindred Path weekly list.');
      });

      document.getElementById('year').textContent = new Date().getFullYear();
    })();
  </script>
</body>
</html>
View Axe Report (JSON)
{
  "testEngine": {
    "name": "axe-core",
    "version": "4.10.2"
  },
  "testRunner": {
    "name": "axe"
  },
  "testEnvironment": {
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
    "windowWidth": 1280,
    "windowHeight": 720,
    "orientationAngle": 0,
    "orientationType": "landscape-primary"
  },
  "timestamp": "2026-11-12T09:55:35.372Z",
  "url": "https://benchmark.aimac.invalid/fa4279a5c5f630152677056f42712b1c7aba69cedd01fe8c151f8652db37f684.html",
  "toolOptions": {
    "runOnly": {
      "type": "tag",
      "values": [
        "wcag2a",
        "wcag2aa",
        "wcag21a",
        "wcag21aa",
        "wcag22a",
        "wcag22aa"
      ]
    },
    "resultTypes": [
      "violations"
    ],
    "reporter": "v1"
  },
  "inapplicable": [
    {
      "id": "area-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure <area> elements of image maps have alternative text",
      "help": "Active <area> elements must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-braille-equivalent",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
      "help": "aria-braille attributes must have a non-braille equivalent",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-command-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA button, link and menuitem has an accessible name",
      "help": "ARIA commands must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-input-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA input field has an accessible name",
      "help": "ARIA input fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-meter-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag111",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure every ARIA meter node has an accessible name",
      "help": "ARIA meter nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-progressbar-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag111",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure every ARIA progressbar node has an accessible name",
      "help": "ARIA progressbar nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-required-children",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure elements with an ARIA role that require child roles contain them",
      "help": "Certain ARIA roles must contain particular children",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-required-parent",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure elements with an ARIA role that require parent roles are contained by them",
      "help": "Certain ARIA roles must be contained by particular parents",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-toggle-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA toggle field has an accessible name",
      "help": "ARIA toggle fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-tooltip-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every ARIA tooltip node has an accessible name",
      "help": "ARIA tooltip nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "blink",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag222",
        "section508",
        "section508.22.j",
        "TTv5",
        "TT2.b",
        "EN-301-549",
        "EN-9.2.2.2"
      ],
      "description": "Ensure <blink> elements are not used",
      "help": "<blink> elements are deprecated and must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
      "nodes": []
    },
    {
      "id": "definition-list",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <dl> elements are structured correctly",
      "help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
      "nodes": []
    },
    {
      "id": "dlitem",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <dt> and <dd> elements are contained by a <dl>",
      "help": "<dt> and <dd> elements must be contained by a <dl>",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-focusable-content",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag211",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
      "help": "Frames with focusable content must not have tabindex=-1",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-title-unique",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT12.d",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
      "help": "Frames must have a unique title attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.i",
        "TTv5",
        "TT12.d",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure <iframe> and <frame> elements have an accessible name",
      "help": "Frames must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
      "nodes": []
    },
    {
      "id": "html-xml-lang-mismatch",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
      "help": "HTML elements with lang and xml:lang must have the same base language",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
      "nodes": []
    },
    {
      "id": "input-button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure input buttons have discernible text",
      "help": "Input buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "input-image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure <input type=\"image\"> elements have alternative text",
      "help": "Image buttons must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "marquee",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag222",
        "TTv5",
        "TT2.b",
        "EN-301-549",
        "EN-9.2.2.2"
      ],
      "description": "Ensure <marquee> elements are not used",
      "help": "<marquee> elements are deprecated and must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
      "nodes": []
    },
    {
      "id": "meta-refresh",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag221",
        "TTv5",
        "TT8.a",
        "EN-301-549",
        "EN-9.2.2.1"
      ],
      "description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
      "help": "Delayed refresh under 20 hours must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
      "nodes": []
    },
    {
      "id": "object-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure <object> elements have alternative text",
      "help": "<object> elements must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "role-img-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure [role=\"img\"] elements have alternative text",
      "help": "[role=\"img\"] elements must have an alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "scrollable-region-focusable",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag211",
        "wcag213",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1",
        "EN-9.2.1.3"
      ],
      "description": "Ensure elements that have scrollable content are accessible by keyboard",
      "help": "Scrollable region must have keyboard access",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
      "nodes": []
    },
    {
      "id": "server-side-image-map",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag211",
        "section508",
        "section508.22.f",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure that server-side image maps are not used",
      "help": "Server-side image maps must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
      "nodes": []
    },
    {
      "id": "summary-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure summary elements have discernible text",
      "help": "Summary elements must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "svg-img-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
      "help": "<svg> elements with an img role must have an alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "td-headers-attr",
      "impact": null,
      "tags": [
        "cat.tables",
        "wcag2a",
        "wcag131",
        "section508",
        "section508.22.g",
        "TTv5",
        "TT14.b",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
      "help": "Table cells that use the headers attribute must only refer to cells in the same table",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
      "nodes": []
    },
    {
      "id": "th-has-data-cells",
      "impact": null,
      "tags": [
        "cat.tables",
        "wcag2a",
        "wcag131",
        "section508",
        "section508.22.g",
        "TTv5",
        "TT14.b",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
      "help": "Table headers in a data table must refer to data cells",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
      "nodes": []
    },
    {
      "id": "valid-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2aa",
        "wcag312",
        "TTv5",
        "TT11.b",
        "EN-301-549",
        "EN-9.3.1.2",
        "ACT"
      ],
      "description": "Ensure lang attributes have valid values",
      "help": "lang attribute must have a valid value",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
      "nodes": []
    },
    {
      "id": "video-caption",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag122",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT17.a",
        "EN-301-549",
        "EN-9.1.2.2"
      ],
      "description": "Ensure <video> elements have captions",
      "help": "<video> elements must have captions",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
      "nodes": []
    },
    {
      "id": "no-autoplay-audio",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag142",
        "TTv5",
        "TT2.a",
        "EN-301-549",
        "EN-9.1.4.2",
        "ACT"
      ],
      "description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
      "help": "<video> or <audio> elements must not play automatically",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
      "nodes": []
    }
  ],
  "passes": [
    {
      "id": "aria-allowed-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure an element's role supports its ARIA attributes",
      "help": "Elements must only use supported ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-allowed-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attributes are used correctly for the defined role"
            }
          ],
          "none": [
            {
              "id": "aria-unsupported-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute is supported"
            }
          ],
          "impact": null,
          "html": "<a class=\"brand\" href=\"#home\" aria-label=\"Kindred Path home\">",
          "target": [
            ".header-inner > .brand[aria-label=\"Kindred Path home\"][href$=\"#home\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-conditional-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are used as described in the specification of the element's role",
      "help": "ARIA attributes must be used as specified for the element's role",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-conditional-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<a class=\"brand\" href=\"#home\" aria-label=\"Kindred Path home\">",
          "target": [
            ".header-inner > .brand[aria-label=\"Kindred Path home\"][href$=\"#home\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-deprecated-role",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements do not use deprecated roles",
      "help": "Deprecated ARIA roles must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "deprecatedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "minor",
              "message": "ARIA role is not deprecated"
            }
          ],
          "impact": null,
          "html": "<div class=\"goal-grid\" role=\"group\" aria-label=\"Family focus areas\">",
          "target": [
            ".goal-grid"
          ]
        }
      ]
    },
    {
      "id": "aria-hidden-body",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "wcag412",
        "EN-301-549",
        "EN-9.1.3.1",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-hidden=\"true\" is not present on the document body.",
      "help": "aria-hidden=\"true\" must not be present on the document body",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-hidden-body",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "No aria-hidden attribute is present on document body"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<body>",
          "target": [
            "body"
          ]
        }
      ]
    },
    {
      "id": "aria-hidden-focus",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
      "help": "ARIA hidden element must not be focusable or contain focusable elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "focusable-modal-open",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements while a modal is open"
            },
            {
              "id": "focusable-disabled",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            },
            {
              "id": "focusable-not-tabbable",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<span aria-hidden=\"true\">\u2192</span>",
          "target": [
            ".btn-primary.btn[href$=\"#age-guides\"] > span[aria-hidden=\"true\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-prohibited-attr",
      "impact": "serious",
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are not prohibited for an element's role",
      "help": "Elements must only use permitted ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "aria-prohibited-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "impact": null,
          "html": "<a class=\"brand\" href=\"#home\" aria-label=\"Kindred Path home\">",
          "target": [
            ".header-inner > .brand[aria-label=\"Kindred Path home\"][href$=\"#home\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-required-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements with ARIA roles have all required ARIA attributes",
      "help": "Required ARIA attributes must be provided",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-required-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "All required ARIA attributes are present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"goal-grid\" role=\"group\" aria-label=\"Family focus areas\">",
          "target": [
            ".goal-grid"
          ]
        }
      ]
    },
    {
      "id": "aria-roles",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all elements with a role attribute use a valid value",
      "help": "ARIA roles used must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "invalidrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is valid"
            },
            {
              "id": "abstractrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Abstract roles are not used"
            },
            {
              "id": "unsupportedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is supported"
            }
          ],
          "impact": null,
          "html": "<div class=\"goal-grid\" role=\"group\" aria-label=\"Family focus areas\">",
          "target": [
            ".goal-grid"
          ]
        }
      ]
    },
    {
      "id": "aria-valid-attr-value",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all ARIA attributes have valid values",
      "help": "ARIA attributes must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-valid-attr-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute values are valid"
            },
            {
              "id": "aria-errormessage",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
            },
            {
              "id": "aria-level",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-level values are valid"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<a class=\"brand\" href=\"#home\" aria-label=\"Kindred Path home\">",
          "target": [
            ".header-inner > .brand[aria-label=\"Kindred Path home\"][href$=\"#home\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-valid-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure attributes that begin with aria- are valid ARIA attributes",
      "help": "ARIA attributes must conform to valid names",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-valid-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute name is valid"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a class=\"brand\" href=\"#home\" aria-label=\"Kindred Path home\">",
          "target": [
            ".header-inner > .brand[aria-label=\"Kindred Path home\"][href$=\"#home\"]"
          ]
        }
      ]
    },
    {
      "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 id=\"newsletterEmail\" name=\"email\" type=\"email\" autocomplete=\"email\" placeholder=\"Enter your email address\" required=\"\">",
          "target": [
            "#newsletterEmail"
          ]
        }
      ]
    },
    {
      "id": "avoid-inline-spacing",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag21aa",
        "wcag1412",
        "EN-301-549",
        "EN-9.1.4.12",
        "ACT"
      ],
      "description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
      "help": "Inline text spacing must be adjustable with custom stylesheets",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "important-letter-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-word-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-line-height",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "line-height in the style attribute is not set to !important, or meets the minimum"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<div class=\"hero-actions\" style=\"margin:0\">\n            <a class=\"btn btn-primary\" href=\"#newsletter\">Get help</a>\n            <a class=\"btn btn-light\" href=\"#newsletter\">Connect with experts</a>\n          </div>",
          "target": [
            ".support-footer > .hero-actions"
          ]
        }
      ]
    },
    {
      "id": "button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure buttons have discernible text",
      "help": "Buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "button-has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has inner text that is visible to screen readers"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<button class=\"btn btn-primary\" type=\"submit\">Build my week <span aria-hidden=\"true\">\u2192</span></button>",
          "target": [
            ".btn-primary[type=\"submit\"]"
          ]
        }
      ]
    },
    {
      "id": "bypass",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag241",
        "section508",
        "section508.22.o",
        "TTv5",
        "TT9.a",
        "EN-301-549",
        "EN-9.2.4.1"
      ],
      "description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
      "help": "Page must have means to bypass repeated blocks",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "internal-link-present",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Valid skip link found"
            },
            {
              "id": "header-present",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<h1 id=\"hero-title\">Parent with more confidence. Connect with more ease.</h1>",
                  "target": [
                    "#hero-title"
                  ]
                },
                {
                  "html": "<h2>Today's small rituals build tomorrow's resilience.</h2>",
                  "target": [
                    ".visual-card > h2"
                  ]
                },
                {
                  "html": "<h2 id=\"age-title\">Find support for where your family is right now.</h2>",
                  "target": [
                    "#age-title"
                  ]
                },
                {
                  "html": "<h3>Big feelings, small routines</h3>",
                  "target": [
                    ".guide-card:nth-child(1) > .guide-body > h3"
                  ]
                },
                {
                  "html": "<h3>Growing independence</h3>",
                  "target": [
                    ".guide-card:nth-child(2) > .guide-body > h3"
                  ]
                },
                {
                  "html": "<h3>Preparing for change</h3>",
                  "target": [
                    ".guide-card:nth-child(3) > .guide-body > h3"
                  ]
                },
                {
                  "html": "<h3>Connection before correction</h3>",
                  "target": [
                    ".guide-card:nth-child(4) > .guide-body > h3"
                  ]
                },
                {
                  "html": "<h2 id=\"wellness-title\">Resources that fit real family life.</h2>",
                  "target": [
                    "#wellness-title"
                  ]
                },
                {
                  "html": "<h3>Name it to tame it</h3>",
                  "target": [
                    ".feature-card:nth-child(1) > .feature-body > h3"
                  ]
                },
                {
                  "html": "<h3>Nourishment without food fear</h3>",
                  "target": [
                    ".feature-card:nth-child(2) > .feature-body > h3"
                  ]
                },
                {
                  "html": "<h3>Make space for togetherness</h3>",
                  "target": [
                    ".feature-card:nth-child(3) > .feature-body > h3"
                  ]
                },
                {
                  "html": "<h3>Curiosity in the everyday</h3>",
                  "target": [
                    ".feature-card:nth-child(4) > .feature-body > h3"
                  ]
                },
                {
                  "html": "<h2 id=\"planner-title\">Build a rhythm your family can actually keep.</h2>",
                  "target": [
                    "#planner-title"
                  ]
                },
                {
                  "html": "<h3>Your weekly focus</h3>",
                  "target": [
                    ".form-head > div > h3"
                  ]
                },
                {
                  "html": "<h3>Your weekly rhythm</h3>",
                  "target": [
                    ".preview-head > div > h3"
                  ]
                },
                {
                  "html": "<h4>Today</h4>",
                  "target": [
                    ".day-card:nth-child(1) > .day-top > h4"
                  ]
                },
                {
                  "html": "<h4>Tue</h4>",
                  "target": [
                    ".day-card:nth-child(2) > .day-top > h4"
                  ]
                },
                {
                  "html": "<h4>Wed</h4>",
                  "target": [
                    ".day-card:nth-child(3) > .day-top > h4"
                  ]
                },
                {
                  "html": "<h4>Thu</h4>",
                  "target": [
                    ".day-card:nth-child(4) > .day-top > h4"
                  ]
                },
                {
                  "html": "<h2 id=\"blog-title\">Practical ideas for the days you wish were easier.</h2>",
                  "target": [
                    "#blog-title"
                  ]
                },
                {
                  "html": "<h3>How to repair after a hard parenting moment</h3>",
                  "target": [
                    ".article-card:nth-child(1) > .article-body > h3"
                  ]
                },
                {
                  "html": "<h3>Five words that help children name big feelings</h3>",
                  "target": [
                    ".article-card:nth-child(2) > .article-body > h3"
                  ]
                },
                {
                  "html": "<h3>A realistic guide to family meals</h3>",
                  "target": [
                    ".article-card:nth-child(3) > .article-body > h3"
                  ]
                },
                {
                  "html": "<h2 id=\"support-title\">Support that meets you where you are.</h2>",
                  "target": [
                    "#support-title"
                  ]
                },
                {
                  "html": "<h3>New Parent Circle</h3>",
                  "target": [
                    ".support-card:nth-child(1) > h3"
                  ]
                },
                {
                  "html": "<h3>Calm Co-Parenting</h3>",
                  "target": [
                    ".support-card:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>GrandFamilies Hub</h3>",
                  "target": [
                    ".support-card:nth-child(3) > h3"
                  ]
                },
                {
                  "html": "<h2 id=\"stories-title\">Small changes, felt at home.</h2>",
                  "target": [
                    "#stories-title"
                  ]
                },
                {
                  "html": "<h2 id=\"faq-title\">A little clarity before you begin.</h2>",
                  "target": [
                    "#faq-title"
                  ]
                },
                {
                  "html": "<h2 id=\"newsletter-title\">A calmer week, in your inbox.</h2>",
                  "target": [
                    "#newsletter-title"
                  ]
                },
                {
                  "html": "<h3>Explore</h3>",
                  "target": [
                    ".footer-col:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>Get support</h3>",
                  "target": [
                    ".footer-col:nth-child(3) > h3"
                  ]
                },
                {
                  "html": "<h3>Contact Kindred Path</h3>",
                  "target": [
                    ".footer-col:nth-child(4) > h3"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a heading"
            },
            {
              "id": "landmark",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<main id=\"main\">",
                  "target": [
                    "#main"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a landmark region"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#10352d",
                "bgColor": "#fafaf6",
                "contrastRatio": 12.79,
                "fontSize": "15.4pt (20.48px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has sufficient color contrast of 12.79"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<span class=\"brand-name\">Kindred Path</span>",
          "target": [
            ".header-inner > .brand[aria-label=\"Kindred Path home\"][href$=\"#home\"] > .brand-copy > .brand-name"
          ]
        }
      ]
    },
    {
      "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": "primaryNav",
              "relatedNodes": [],
              "impact": "critical",
              "message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<nav class=\"main-nav\" id=\"primaryNav\" aria-label=\"Primary navigation\">",
          "target": [
            "#primaryNav"
          ]
        }
      ]
    },
    {
      "id": "form-field-multiple-labels",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag332",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.3.3.2"
      ],
      "description": "Ensure form field does not have multiple label elements",
      "help": "Form field must not have multiple label elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "multiple-label",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<label class=\"goal-chip\"><input type=\"checkbox\" value=\"calm-mornings\" checked=\"\"><span><strong>Calm mornings</strong><small>Reduce the rush</small></span></label>",
                  "target": [
                    ".goal-chip:nth-child(1)"
                  ]
                }
              ],
              "impact": "moderate",
              "message": "Form field does not have multiple label elements"
            }
          ],
          "impact": null,
          "html": "<input type=\"checkbox\" value=\"calm-mornings\" checked=\"\">",
          "target": [
            "input[value=\"calm-mornings\"]"
          ]
        }
      ]
    },
    {
      "id": "html-has-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure every HTML document has a lang attribute",
      "help": "<html> element must have a lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "The <html> element has a lang attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "html-lang-valid",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure the lang attribute of the <html> element has a valid value",
      "help": "<html> element must have a valid value for the lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "valid-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Value of lang attribute is included in the list of valid languages"
            }
          ],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "TT7.b",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <img> elements have alternative text or a role of none or presentation",
      "help": "Images must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-alt",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has an alt attribute"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "alt-space-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has a valid alt attribute value"
            }
          ],
          "impact": null,
          "html": "<img class=\"brand-image\" src=\"https://placehold.co/120x120/174B3B/FFFFFF?text=KP&amp;font=poppins\" width=\"50\" height=\"50\" alt=\"Kindred Path logo\">",
          "target": [
            ".header-inner > .brand[aria-label=\"Kindred Path home\"][href$=\"#home\"] > .brand-image[width=\"50\"][height=\"50\"]"
          ]
        }
      ]
    },
    {
      "id": "label",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every form element has a label",
      "help": "Form elements must have labels",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "implicit-label",
              "data": {
                "implicitLabel": "Calm morningsReduce the rush"
              },
              "relatedNodes": [
                {
                  "html": "<label class=\"goal-chip\"><input type=\"checkbox\" value=\"calm-mornings\" checked=\"\"><span><strong>Calm mornings</strong><small>Reduce the rush</small></span></label>",
                  "target": [
                    ".goal-chip:nth-child(1)"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has an implicit (wrapped) <label>"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "hidden-explicit-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Form element has a visible explicit <label>"
            }
          ],
          "impact": null,
          "html": "<input type=\"checkbox\" value=\"calm-mornings\" checked=\"\">",
          "target": [
            "input[value=\"calm-mornings\"]"
          ]
        }
      ]
    },
    {
      "id": "link-in-text-block",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2a",
        "wcag141",
        "TTv5",
        "TT13.a",
        "EN-301-549",
        "EN-9.1.4.1"
      ],
      "description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
      "help": "Links must be distinguishable without relying on color",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "link-in-text-block-style",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<div class=\"feature-body\">",
                  "target": [
                    ".feature-card:nth-child(1) > .feature-body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Links can be distinguished from surrounding text by visual styling"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a class=\"text-link\" href=\"#planner\">Try a regulation activity <span aria-hidden=\"true\">\u2192</span></a>",
          "target": [
            ".feature-card:nth-child(1) > .feature-body > .text-link[href$=\"#planner\"]"
          ]
        }
      ]
    },
    {
      "id": "link-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure links have discernible text",
      "help": "Links must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has text that is visible to screen readers"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "focusable-no-name",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element is not in tab order or has accessible text"
            }
          ],
          "impact": null,
          "html": "<a class=\"skip-link\" href=\"#main\">Skip to main content</a>",
          "target": [
            ".skip-link"
          ]
        }
      ]
    },
    {
      "id": "list",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that lists are structured correctly",
      "help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "only-listitems",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "List element only has direct children that are allowed inside <li> elements"
            }
          ],
          "impact": null,
          "html": "<ul class=\"day-actions\">",
          "target": [
            ".day-card:nth-child(1) > .day-actions"
          ]
        }
      ]
    },
    {
      "id": "listitem",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <li> elements are used semantically",
      "help": "<li> elements must be contained in a <ul> or <ol>",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "listitem",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "List item has a <ul>, <ol> or role=\"list\" parent element"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<li><span class=\"plan-dot\" aria-hidden=\"true\"></span><span><strong>Calm mornings:</strong> 10-minute warning \u00b7 shared breakfast</span></li>",
          "target": [
            ".day-card:nth-child(1) > .day-actions > li:nth-child(1)"
          ]
        }
      ]
    },
    {
      "id": "meta-viewport",
      "impact": null,
      "tags": [
        "cat.sensory-and-visual-cues",
        "wcag2aa",
        "wcag144",
        "EN-301-549",
        "EN-9.1.4.4",
        "ACT"
      ],
      "description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
      "help": "Zooming and scaling must not be disabled",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "meta-viewport",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "<meta> tag does not disable zooming on mobile devices"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">",
          "target": [
            "meta[name=\"viewport\"]"
          ]
        }
      ]
    },
    {
      "id": "nested-interactive",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
      "help": "Interactive controls must not be nested",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "no-focusable-content",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element does not have focusable descendants"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<img class=\"brand-image\" src=\"https://placehold.co/120x120/174B3B/FFFFFF?text=KP&amp;font=poppins\" width=\"50\" height=\"50\" alt=\"Kindred Path logo\">",
          "target": [
            ".header-inner > .brand[aria-label=\"Kindred Path home\"][href$=\"#home\"] > .brand-image[width=\"50\"][height=\"50\"]"
          ]
        }
      ]
    },
    {
      "id": "select-name",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure select element has an accessible name",
      "help": "Select element must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "explicit-label",
              "data": {
                "explicitLabel": "Choose your child's stage"
              },
              "relatedNodes": [
                {
                  "html": "<label for=\"stageSelect\">Choose your child's stage</label>",
                  "target": [
                    "label[for=\"stageSelect\"]"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has an explicit <label>"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "hidden-explicit-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Form element has a visible explicit <label>"
            }
          ],
          "impact": null,
          "html": "<select id=\"stageSelect\">",
          "target": [
            "#stageSelect"
          ]
        }
      ]
    },
    {
      "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": 186.6,
                "height": 50.4
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Control has sufficient size (186.6px by 50.4px, should be at least 24px by 24px)"
            },
            {
              "id": "target-offset",
              "data": {
                "closestOffset": 24,
                "minOffset": 24
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a class=\"skip-link\" href=\"#main\">Skip to main content</a>",
          "target": [
            ".skip-link"
          ]
        }
      ]
    }
  ],
  "incomplete": [
    {
      "id": "aria-prohibited-attr",
      "impact": "serious",
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are not prohibited for an element's role",
      "help": "Elements must only use permitted ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "aria-prohibited-attr",
              "data": {
                "role": null,
                "nodeName": "div",
                "messageKey": "noRoleSingular",
                "prohibited": [
                  "aria-label"
                ]
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "aria-label attribute is not well supported on a div with no valid role attribute."
            }
          ],
          "impact": "serious",
          "html": "<div class=\"hero-note\" aria-label=\"Site benefits\">\n            <span>Developmentally informed</span><span class=\"note-dot\" aria-hidden=\"true\"></span><span>Practical in 10 minutes</span><span class=\"note-dot\" aria-hidden=\"true\"></span><span>Made for real family schedules</span>\n          </div>",
          "target": [
            ".hero-note"
          ],
          "failureSummary": "Fix all of the following:\n  aria-label attribute is not well supported on a div with no valid role attribute."
        }
      ]
    },
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": null,
                "bgColor": null,
                "contrastRatio": 0,
                "fontSize": "9.1pt (12.16px)",
                "fontWeight": "bold",
                "messageKey": "bgGradient",
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"hero\" id=\"home\" aria-labelledby=\"hero-title\">",
                  "target": [
                    "#home"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element's background color could not be determined due to a background gradient"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"eyebrow\">Evidence-informed parenting, without the overwhelm</div>",
          "target": [
            ".hero-copy > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element's background color could not be determined due to a background gradient"
        }
      ]
    },
    {
      "id": "link-in-text-block",
      "impact": "serious",
      "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": {
                "messageKey": "bgOverlap"
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"footer-brand\">",
                  "target": [
                    ".footer-brand"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element's contrast ratio could not be determined because of element overlap"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"brand\" href=\"#home\" aria-label=\"Kindred Path home\">",
          "target": [
            ".footer-brand > .brand[aria-label=\"Kindred Path home\"][href$=\"#home\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element's contrast ratio could not be determined because of element overlap"
        }
      ]
    }
  ],
  "violations": [
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#62736c",
                "bgColor": "#edf3ee",
                "contrastRatio": 4.45,
                "fontSize": "12.2pt (16.32px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"section section-alt\" id=\"age-guides\" aria-labelledby=\"age-title\">",
                  "target": [
                    "#age-guides"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.45 (foreground color: #62736c, background color: #edf3ee, font size: 12.2pt (16.32px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>Every family moves through different seasons at a different pace. Our guides pair developmental context with scripts, routines, and questions you can use today\u2014so advice feels like a hand on your shoulder, not another thing to perfect.</p>",
          "target": [
            "#age-guides > .container > .section-heading > p"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.45 (foreground color: #62736c, background color: #edf3ee, font size: 12.2pt (16.32px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"guide-card\">",
                  "target": [
                    ".guide-card:nth-child(1)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"card-kicker\">Ages 1\u20133</span>",
          "target": [
            ".guide-card:nth-child(1) > .guide-body > .card-kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"guide-card\">",
                  "target": [
                    ".guide-card:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"card-kicker\">Ages 4\u20137</span>",
          "target": [
            ".guide-card:nth-child(2) > .guide-body > .card-kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"guide-card\">",
                  "target": [
                    ".guide-card:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"card-kicker\">Ages 8\u201311</span>",
          "target": [
            ".guide-card:nth-child(3) > .guide-body > .card-kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"guide-card\">",
                  "target": [
                    ".guide-card:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"card-kicker\">Ages 12\u201318</span>",
          "target": [
            ".guide-card:nth-child(4) > .guide-body > .card-kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feature-card\">",
                  "target": [
                    ".feature-card:nth-child(1)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"card-kicker\">Emotional intelligence</span>",
          "target": [
            ".feature-card:nth-child(1) > .feature-body > .card-kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feature-card\">",
                  "target": [
                    ".feature-card:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"card-kicker\">Nutrition &amp; wellness</span>",
          "target": [
            ".feature-card:nth-child(2) > .feature-body > .card-kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feature-card\">",
                  "target": [
                    ".feature-card:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"card-kicker\">Family bonding</span>",
          "target": [
            ".feature-card:nth-child(3) > .feature-body > .card-kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"feature-card\">",
                  "target": [
                    ".feature-card:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"card-kicker\">Educational activities</span>",
          "target": [
            ".feature-card:nth-child(4) > .feature-body > .card-kicker"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#62736c",
                "bgColor": "#dce8df",
                "contrastRatio": 3.97,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span><strong>Calm mornings</strong><small>Reduce the rush</small></span>",
                  "target": [
                    ".goal-chip:nth-child(1) > span"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.97 (foreground color: #62736c, background color: #dce8df, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<small>Reduce the rush</small>",
          "target": [
            ".goal-chip:nth-child(1) > span > small"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.97 (foreground color: #62736c, background color: #dce8df, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#62736c",
                "bgColor": "#dce8df",
                "contrastRatio": 3.97,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span><strong>Family dinner</strong><small>Connect at the table</small></span>",
                  "target": [
                    ".goal-chip:nth-child(3) > span"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.97 (foreground color: #62736c, background color: #dce8df, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<small>Connect at the table</small>",
          "target": [
            ".goal-chip:nth-child(3) > span > small"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.97 (foreground color: #62736c, background color: #dce8df, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#62736c",
                "bgColor": "#dce8df",
                "contrastRatio": 3.97,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span><strong>Bedtime</strong><small>Make wind-down predictable</small></span>",
                  "target": [
                    ".goal-chip:nth-child(4) > span"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.97 (foreground color: #62736c, background color: #dce8df, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<small>Make wind-down predictable</small>",
          "target": [
            ".goal-chip:nth-child(4) > span > small"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.97 (foreground color: #62736c, background color: #dce8df, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#62736c",
                "bgColor": "#dce8df",
                "contrastRatio": 3.97,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span><strong>Connection</strong><small>Protect playtime</small></span>",
                  "target": [
                    ".goal-chip:nth-child(5) > span"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.97 (foreground color: #62736c, background color: #dce8df, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<small>Protect playtime</small>",
          "target": [
            ".goal-chip:nth-child(5) > span > small"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.97 (foreground color: #62736c, background color: #dce8df, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#62736c",
                "bgColor": "#edf3ee",
                "contrastRatio": 4.45,
                "fontSize": "12.2pt (16.32px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"section section-alt\" id=\"blog\" aria-labelledby=\"blog-title\">",
                  "target": [
                    "#blog"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.45 (foreground color: #62736c, background color: #edf3ee, font size: 12.2pt (16.32px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>Fresh writing from our editors, clinicians, and family contributors\u2014created for real schedules and updated as research evolves.</p>",
          "target": [
            ".section-header-row > .section-heading > p"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.45 (foreground color: #62736c, background color: #edf3ee, font size: 12.2pt (16.32px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card\">",
                  "target": [
                    ".article-card:nth-child(1)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"article-category\">Parenting repair</span>",
          "target": [
            ".article-card:nth-child(1) > .article-body > .article-meta > .article-category"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card\">",
                  "target": [
                    ".article-card:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"article-category\">Emotional intelligence</span>",
          "target": [
            ".article-card:nth-child(2) > .article-body > .article-meta > .article-category"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e6785f",
                "bgColor": "#ffffff",
                "contrastRatio": 2.91,
                "fontSize": "8.2pt (10.88px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card\">",
                  "target": [
                    ".article-card:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"article-category\">Nutrition &amp; wellness</span>",
          "target": [
            ".article-card:nth-child(3) > .article-body > .article-meta > .article-category"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.91 (foreground color: #e6785f, background color: #ffffff, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#62736c",
                "bgColor": "#edf3ee",
                "contrastRatio": 4.45,
                "fontSize": "12.2pt (16.32px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"section section-alt\" id=\"stories\" aria-labelledby=\"stories-title\">",
                  "target": [
                    "#stories"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.45 (foreground color: #62736c, background color: #edf3ee, font size: 12.2pt (16.32px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>Real families use Kindred Path in imperfect, busy, beautiful ways. These stories are shared with permission.</p>",
          "target": [
            ".center > p"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.45 (foreground color: #62736c, background color: #edf3ee, font size: 12.2pt (16.32px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#62736c",
                "bgColor": "#e7eae6",
                "contrastRatio": 4.13,
                "fontSize": "8.6pt (11.52px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header class=\"site-header is-scrolled\">",
                  "target": [
                    "header"
                  ]
                },
                {
                  "html": "<section class=\"planner-section\" id=\"planner\" aria-labelledby=\"planner-title\">",
                  "target": [
                    "#planner"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.13 (foreground color: #62736c, background color: #e7eae6, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"brand-tagline\">Clear guidance for every stage of family life.</span>",
          "target": [
            ".header-inner > .brand[aria-label=\"Kindred Path home\"][href$=\"#home\"] > .brand-copy > .brand-tagline"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.13 (foreground color: #62736c, background color: #e7eae6, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
        }
      ]
    }
  ],
  "coverage": {
    "contract": "main-document-vertical-scroll",
    "complete": true,
    "positions": [
      {
        "y": 0,
        "height": 8195
      },
      {
        "y": 576,
        "height": 8195
      },
      {
        "y": 1152,
        "height": 8195
      },
      {
        "y": 1728,
        "height": 8195
      },
      {
        "y": 2304,
        "height": 8195
      },
      {
        "y": 2880,
        "height": 8195
      },
      {
        "y": 3456,
        "height": 8195
      },
      {
        "y": 4032,
        "height": 8195
      },
      {
        "y": 4608,
        "height": 8195
      },
      {
        "y": 5184,
        "height": 8195
      },
      {
        "y": 5760,
        "height": 8195
      },
      {
        "y": 6336,
        "height": 8195
      },
      {
        "y": 6912,
        "height": 8195
      },
      {
        "y": 7475,
        "height": 8195
      }
    ],
    "scans": 15,
    "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", "Resources", "Support Groups".
-   **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: "Family Fun", "Educational Activities", "Family Wellness".
    -   **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "nutrition", "emotional intelligence", "family bonding".
    -   **Visuals:** Integrate relevant placeholder images logically within the content sections.
    -   **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Get Help", "Share Story", "Connect with Experts".
-   **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: "behavior log".
-   **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "age-specific guides", "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.