OpenAI GPT 6 Luna Pro – Food and Drink

via OpenAI · Generated

  • AIMAC Debt 4.90
  • Cost $0.014
  • Total Violations 21
  • HTML Size 41 KB
  • Em Dashes 4

Screenshot

View OpenAI GPT 6 Luna Pro Food and Drink page View Live Page

Accessibility Issues Found

21 Serious

  • color-contrast serious 21 instances

    Elements must meet minimum color contrast ratio thresholds

    Example HTML <span class="eyebrow">A neighborhood kitchen &amp; food journal</span>

Artifacts

View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="theme-color" content="#f7f5ee">
  <meta name="description" content="Gather & Grove is a neighborhood table and food journal celebrating seasonal cooking, thoughtful wine, and good company.">
  <title>Gather &amp; Grove — Good food, well gathered</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=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@500;600;700&display=swap" rel="stylesheet">
  <style>
    :root {
      --cream: #f7f5ee;
      --paper: #fffefa;
      --ink: #24342b;
      --muted: #69736a;
      --green: #385b43;
      --green-dark: #253d30;
      --sage: #e6ebdf;
      --orange: #bd6846;
      --line: #e4e3d9;
      --serif: "Playfair Display", Georgia, serif;
      --sans: "DM Sans", Arial, sans-serif;
      --wrap: 1180px;
    }

    * { box-sizing: border-box; }
    html { scroll-behavior: smooth; scroll-padding-top: 90px; }
    body {
      margin: 0;
      background: var(--cream);
      color: var(--ink);
      font-family: var(--sans);
      font-size: 16px;
      line-height: 1.7;
      -webkit-font-smoothing: antialiased;
    }
    img { display: block; max-width: 100%; }
    a { color: inherit; text-decoration: none; }
    button, input { font: inherit; }
    button, a { -webkit-tap-highlight-color: transparent; }
    .wrap { width: min(var(--wrap), calc(100% - 48px)); margin-inline: auto; }
    .eyebrow {
      color: var(--orange);
      font-size: .72rem;
      font-weight: 700;
      letter-spacing: .17em;
      text-transform: uppercase;
    }
    h1, h2, h3, p { margin-top: 0; }
    h1, h2, h3 { font-family: var(--serif); font-weight: 500; line-height: 1.12; }
    h1 { font-size: clamp(3.2rem, 7.2vw, 6.5rem); letter-spacing: -.055em; }
    h2 { font-size: clamp(2.25rem, 4.5vw, 3.8rem); letter-spacing: -.035em; }
    h3 { font-size: 1.55rem; }
    p { color: var(--muted); }
    .btn {
      display: inline-flex;
      min-height: 50px;
      align-items: center;
      justify-content: center;
      gap: 12px;
      padding: 0 22px;
      border: 1px solid var(--green);
      border-radius: 3px;
      background: var(--green);
      color: white;
      font-size: .82rem;
      font-weight: 700;
      letter-spacing: .04em;
      transition: background .2s, color .2s, transform .2s;
    }
    .btn:hover { background: var(--green-dark); transform: translateY(-2px); }
    .btn-outline { background: transparent; color: var(--green); }
    .btn-outline:hover { color: white; }
    .text-link {
      display: inline-flex;
      align-items: center;
      gap: 9px;
      color: var(--green);
      font-size: .84rem;
      font-weight: 700;
    }
    .text-link span { font-size: 1.1rem; transition: transform .2s; }
    .text-link:hover span { transform: translateX(4px); }

    .announcement {
      padding: 8px 16px;
      background: var(--green-dark);
      color: #f5f1e7;
      text-align: center;
      font-size: .72rem;
      letter-spacing: .08em;
    }
    .announcement a { margin-left: 7px; text-decoration: underline; text-underline-offset: 3px; }
    .site-header {
      position: sticky;
      z-index: 20;
      top: 0;
      border-bottom: 1px solid rgba(36, 52, 43, .1);
      background: rgba(247, 245, 238, .96);
      backdrop-filter: blur(12px);
    }
    .header-inner {
      display: flex;
      min-height: 86px;
      align-items: center;
      justify-content: space-between;
      gap: 28px;
    }
    .brand { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
    .brand img { width: 48px; height: 48px; border-radius: 50%; }
    .brand-copy { display: grid; line-height: 1.15; }
    .brand-name { font-family: var(--serif); font-size: 1.35rem; font-weight: 600; letter-spacing: -.04em; }
    .brand-tagline { margin-top: 4px; color: var(--muted); font-size: .59rem; letter-spacing: .08em; }
    .primary-nav { display: flex; align-items: center; gap: clamp(15px, 2.1vw, 30px); }
    .primary-nav a { color: #414c43; font-size: .76rem; font-weight: 600; transition: color .2s; }
    .primary-nav a:hover { color: var(--orange); }
    .primary-nav .nav-cta { padding: 11px 15px; border: 1px solid var(--green); color: var(--green); }
    .menu-toggle { display: none; padding: 8px; border: 0; background: transparent; color: var(--ink); cursor: pointer; }

    .hero { padding: 54px 0 74px; }
    .hero-grid { display: grid; grid-template-columns: .91fr 1.09fr; align-items: center; gap: clamp(32px, 7vw, 88px); }
    .hero-copy { padding: 12px 0 8px; }
    .hero h1 { max-width: 610px; margin: 18px 0 22px; }
    .hero h1 em { color: var(--green); font-weight: 500; }
    .hero-copy > p { max-width: 460px; margin-bottom: 28px; font-size: 1.02rem; }
    .hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
    .hero-note { display: flex; align-items: center; gap: 10px; margin-top: 29px; color: var(--muted); font-size: .75rem; }
    .hero-note::before { width: 29px; height: 1px; background: var(--orange); content: ""; }
    .hero-image { position: relative; min-height: 540px; }
    .hero-image > img { width: 100%; height: 540px; border-radius: 4px; object-fit: cover; }
    .image-note {
      position: absolute;
      right: -22px;
      bottom: 25px;
      width: 185px;
      padding: 17px 19px;
      background: var(--paper);
      box-shadow: 0 12px 35px rgba(25, 35, 27, .12);
    }
    .image-note strong { display: block; font-family: var(--serif); font-size: 1.12rem; font-weight: 500; }
    .image-note span { color: var(--muted); font-size: .72rem; }

    .intro-strip { padding: 23px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
    .intro-strip .wrap { display: flex; justify-content: space-between; gap: 24px; }
    .intro-strip p { margin: 0; font-size: .81rem; }
    .intro-strip strong { color: var(--ink); }

    .section { padding: 105px 0; }
    .section-head { display: flex; align-items: end; justify-content: space-between; gap: 34px; margin-bottom: 42px; }
    .section-head h2 { max-width: 620px; margin: 10px 0 0; }
    .section-head > p { max-width: 365px; margin: 0 0 5px; font-size: .9rem; }
    .menu-section { background: var(--paper); }
    .menu-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 24px; }
    .menu-card { background: var(--cream); }
    .menu-card img { width: 100%; height: 255px; object-fit: cover; }
    .menu-card-copy { padding: 24px 24px 26px; }
    .menu-card .eyebrow { font-size: .64rem; }
    .menu-card h3 { margin: 9px 0 10px; }
    .menu-card p { min-height: 81px; margin-bottom: 18px; font-size: .86rem; }
    .menu-card .price { float: right; color: var(--green); font-size: .83rem; font-weight: 700; }

    .recipe-section { padding: 108px 0; }
    .recipe-layout { display: grid; grid-template-columns: 1.03fr .97fr; align-items: center; gap: clamp(38px, 7vw, 92px); }
    .recipe-photo { position: relative; }
    .recipe-photo img { width: 100%; height: 570px; object-fit: cover; border-radius: 3px; }
    .photo-caption { position: absolute; bottom: 17px; left: 17px; padding: 9px 13px; background: var(--paper); color: var(--ink); font-size: .72rem; }
    .recipe-copy h2 { margin: 12px 0 17px; }
    .recipe-copy > p { font-size: .92rem; }
    .recipe-meta { display: flex; gap: 25px; margin: 22px 0; padding: 17px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
    .recipe-meta span { color: var(--muted); font-size: .76rem; }
    .recipe-meta strong { display: block; color: var(--ink); font-size: .84rem; }
    .calculator { margin: 24px 0 25px; padding: 21px; border: 1px solid var(--line); background: rgba(255, 254, 250, .68); }
    .calculator-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
    .calculator-head strong { font-size: .86rem; }
    .serving-control { display: inline-flex; align-items: center; gap: 13px; }
    .serving-control button { width: 30px; height: 30px; border: 1px solid #ccd2c7; border-radius: 50%; background: transparent; color: var(--green); cursor: pointer; }
    .serving-control button:hover { background: var(--sage); }
    .serving-count { min-width: 18px; color: var(--ink); text-align: center; font-weight: 700; }
    .ingredients { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 16px; margin: 0; padding: 0; list-style: none; }
    .ingredients li { color: var(--muted); font-size: .78rem; }
    .ingredients strong { color: var(--ink); font-weight: 600; }
    .recipe-footnote { margin: 12px 0 0; font-size: .68rem; }

    .wine-section { padding: 92px 0; background: var(--green-dark); color: white; }
    .wine-section .eyebrow { color: #d89a76; }
    .wine-section h2 { max-width: 580px; color: white; }
    .wine-section .section-head > p { color: #c3cec3; }
    .wine-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; }
    .wine-card { display: grid; grid-template-columns: 42% 58%; min-height: 285px; background: #314b3b; }
    .wine-card img { width: 100%; height: 100%; min-height: 285px; object-fit: cover; }
    .wine-card-copy { align-self: center; padding: 28px; }
    .wine-card-copy .eyebrow { font-size: .64rem; }
    .wine-card-copy h3 { margin: 9px 0 11px; color: white; }
    .wine-card-copy p { margin-bottom: 16px; color: #c3cec3; font-size: .82rem; }
    .wine-card-copy .text-link { color: #f0c5a8; }

    .guide-section { background: var(--paper); }
    .guide-grid { display: grid; grid-template-columns: 1.18fr .82fr; gap: 24px; }
    .guide-feature { position: relative; min-height: 460px; overflow: hidden; color: white; }
    .guide-feature img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
    .guide-feature::after { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(18, 32, 23, .84), rgba(18, 32, 23, .02) 80%); content: ""; }
    .guide-feature-copy { position: absolute; z-index: 1; right: 30px; bottom: 27px; left: 30px; }
    .guide-feature-copy .eyebrow { color: #e6b999; }
    .guide-feature-copy h3 { max-width: 470px; margin: 9px 0; font-size: 2rem; }
    .guide-feature-copy p { max-width: 560px; margin-bottom: 14px; color: #f0eee7; font-size: .86rem; }
    .guide-list { display: grid; gap: 16px; }
    .guide-item { display: flex; gap: 17px; align-items: center; padding: 16px; border: 1px solid var(--line); }
    .guide-item img { width: 110px; height: 110px; flex-shrink: 0; object-fit: cover; }
    .guide-item .eyebrow { font-size: .61rem; }
    .guide-item h3 { margin: 5px 0 5px; font-size: 1.22rem; }
    .guide-item p { margin: 0; font-size: .76rem; line-height: 1.55; }

    .gather-section { padding: 100px 0; }
    .gather-grid { display: grid; grid-template-columns: .86fr 1.14fr; gap: clamp(35px, 8vw, 110px); align-items: start; }
    .gather-copy h2 { margin: 10px 0 18px; }
    .gather-copy p { font-size: .9rem; }
    .gather-copy .btn { margin-top: 11px; }
    .feature-list { display: grid; grid-template-columns: 1fr 1fr; gap: 27px 28px; }
    .feature { padding-top: 18px; border-top: 1px solid #d8dbd0; }
    .feature-number { color: var(--orange); font-family: var(--serif); font-size: 1.2rem; }
    .feature h3 { margin: 9px 0 7px; font-size: 1.28rem; }
    .feature p { margin: 0; font-size: .81rem; }

    .quote-section { padding: 70px 0; background: #ebece3; }
    .quote-inner { max-width: 800px; margin: auto; text-align: center; }
    .quote-mark { color: var(--orange); font-family: var(--serif); font-size: 3.6rem; line-height: 1; }
    blockquote { margin: 10px 0 18px; font-family: var(--serif); font-size: clamp(1.4rem, 3vw, 2.2rem); line-height: 1.38; }
    .quote-credit { color: var(--muted); font-size: .74rem; letter-spacing: .06em; text-transform: uppercase; }

    .faq-section { padding: 90px 0; background: var(--paper); }
    .faq-layout { display: grid; grid-template-columns: .7fr 1.3fr; gap: 70px; }
    .faq-layout h2 { margin: 10px 0; }
    .faq-layout > div:first-child p { max-width: 320px; font-size: .87rem; }
    .faq-list details { border-top: 1px solid var(--line); }
    .faq-list details:last-child { border-bottom: 1px solid var(--line); }
    .faq-list summary { position: relative; padding: 19px 36px 19px 0; cursor: pointer; font-family: var(--serif); font-size: 1.16rem; list-style: none; }
    .faq-list summary::-webkit-details-marker { display: none; }
    .faq-list summary::after { position: absolute; right: 3px; content: "+"; color: var(--orange); font-family: var(--sans); font-size: 1.3rem; }
    .faq-list details[open] summary::after { content: "−"; }
    .faq-list details p { max-width: 650px; margin: -3px 30px 20px 0; font-size: .85rem; }

    .newsletter { padding: 64px 0; background: #e4e9de; }
    .newsletter-inner { display: flex; align-items: center; justify-content: space-between; gap: 35px; }
    .newsletter h2 { margin: 8px 0 8px; font-size: clamp(1.8rem, 3vw, 2.6rem); }
    .newsletter p { max-width: 480px; margin: 0; font-size: .84rem; }
    .newsletter-form { display: flex; width: min(100%, 420px); gap: 8px; }
    .newsletter-form input { min-width: 0; flex: 1; padding: 0 14px; border: 1px solid #cbd2c6; border-radius: 2px; background: var(--paper); color: var(--ink); font-size: .82rem; }
    .newsletter-form input:focus { outline: 2px solid var(--green); outline-offset: 2px; }
    .newsletter-form .btn { white-space: nowrap; }
    .form-message { min-height: 20px; margin-top: 7px; color: var(--green); font-size: .75rem; }

    footer { padding: 62px 0 25px; background: var(--green-dark); color: #f5f1e7; }
    .footer-grid { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: 38px; padding-bottom: 44px; }
    .footer-brand { display: flex; align-items: center; gap: 12px; }
    .footer-brand img { width: 45px; height: 45px; border-radius: 50%; }
    .footer-brand span { font-family: var(--serif); font-size: 1.3rem; }
    .footer-about p { max-width: 275px; margin: 16px 0 0; color: #c3cec3; font-size: .8rem; }
    .footer-col h3 { margin: 3px 0 14px; color: #d9a384; font-family: var(--sans); font-size: .68rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
    .footer-col a, .footer-col p { display: block; margin: 0 0 9px; color: #e0e5dc; font-size: .8rem; }
    .footer-col a:hover { color: #f0c5a8; }
    .footer-bottom { display: flex; justify-content: space-between; gap: 20px; padding-top: 20px; border-top: 1px solid rgba(255,255,255,.18); color: #c3cec3; font-size: .7rem; }
    .footer-legal { display: flex; gap: 20px; }
    .socials { display: flex; gap: 14px; margin-top: 17px; }
    .socials a { display: grid; width: 30px; height: 30px; place-items: center; border: 1px solid rgba(255,255,255,.38); border-radius: 50%; font-size: .67rem; }

    @media (max-width: 940px) {
      .primary-nav { gap: 14px; }
      .primary-nav a { font-size: .7rem; }
      .brand-tagline { display: none; }
      .hero-grid { gap: 36px; }
      .hero-image, .hero-image > img { min-height: 460px; height: 460px; }
      .wine-card { grid-template-columns: 1fr; }
      .wine-card img { height: 190px; min-height: 190px; }
      .wine-card-copy { padding: 22px; }
      .footer-grid { grid-template-columns: 1fr 1fr; }
    }
    @media (max-width: 720px) {
      .wrap { width: min(var(--wrap), calc(100% - 34px)); }
      .announcement { font-size: .65rem; }
      .header-inner { min-height: 72px; }
      .brand img { width: 42px; height: 42px; }
      .menu-toggle { display: block; }
      .menu-toggle svg { display: block; }
      .primary-nav {
        position: absolute;
        top: 100%;
        right: 0;
        left: 0;
        display: none;
        align-items: stretch;
        gap: 0;
        padding: 8px 17px 18px;
        border-bottom: 1px solid var(--line);
        background: var(--cream);
      }
      .primary-nav.is-open { display: flex; flex-direction: column; }
      .primary-nav a { padding: 12px 5px; border-bottom: 1px solid var(--line); font-size: .83rem; }
      .primary-nav .nav-cta { margin-top: 10px; text-align: center; }
      .hero { padding: 45px 0 52px; }
      .hero-grid, .recipe-layout, .gather-grid, .faq-layout { grid-template-columns: 1fr; }
      .hero h1 { max-width: 550px; }
      .hero-image { margin-right: 12px; }
      .hero-image, .hero-image > img { min-height: 390px; height: 390px; }
      .image-note { right: -12px; bottom: 14px; }
      .intro-strip .wrap { flex-direction: column; gap: 9px; }
      .section { padding: 72px 0; }
      .section-head { display: block; margin-bottom: 29px; }
      .section-head > p { margin-top: 16px; }
      .menu-grid { grid-template-columns: 1fr; gap: 18px; }
      .menu-card { display: grid; grid-template-columns: 38% 62%; }
      .menu-card img { height: 100%; min-height: 240px; }
      .menu-card-copy { padding: 18px; }
      .menu-card p { min-height: 0; font-size: .8rem; }
      .recipe-section { padding: 75px 0; }
      .recipe-photo img { height: 400px; }
      .wine-section { padding: 72px 0; }
      .wine-grid { grid-template-columns: 1fr 1fr; gap: 14px; }
      .wine-card-copy { padding: 16px; }
      .wine-card-copy p { font-size: .76rem; }
      .guide-grid { grid-template-columns: 1fr; }
      .guide-feature { min-height: 400px; }
      .gather-section { padding: 75px 0; }
      .faq-layout { gap: 28px; }
      .newsletter-inner { align-items: stretch; flex-direction: column; }
      .newsletter-form { width: 100%; }
    }
    @media (max-width: 480px) {
      h1 { font-size: 3.15rem; }
      .hero-image, .hero-image > img { min-height: 330px; height: 330px; }
      .hero-actions .btn { width: 100%; }
      .menu-card { grid-template-columns: 1fr; }
      .menu-card img { height: 205px; min-height: 0; }
      .menu-card-copy { padding: 20px; }
      .wine-grid { grid-template-columns: 1fr; }
      .wine-card { grid-template-columns: 40% 60%; }
      .wine-card img { height: 100%; min-height: 250px; }
      .guide-item { gap: 12px; padding: 12px; }
      .guide-item img { width: 88px; height: 95px; }
      .feature-list { gap: 23px 16px; }
      .ingredients { grid-template-columns: 1fr; }
      .footer-grid { grid-template-columns: 1fr 1fr; gap: 28px 18px; }
      .footer-about { grid-column: 1 / -1; }
      .footer-bottom { flex-direction: column; }
    }
    @media (prefers-reduced-motion: reduce) {
      html { scroll-behavior: auto; }
      *, *::before, *::after { transition-duration: .01ms !important; }
    }
  </style>
</head>
<body>
  <div class="announcement">
    A new season at the table — spring reservations are now open.
    <a href="#reserve">Find your seat</a>
  </div>

  <header class="site-header">
    <div class="wrap header-inner">
      <a class="brand" href="#home" aria-label="Gather and Grove home">
        <img src="https://placehold.co/96x96/385b43/f7f5ee?text=G%26G&font=playfair+display" alt="Gather &amp; Grove logo">
        <span class="brand-copy">
          <span class="brand-name">Gather &amp; Grove</span>
          <span class="brand-tagline">GOOD FOOD, WELL GATHERED</span>
        </span>
      </a>
      <button class="menu-toggle" aria-label="Open navigation" aria-expanded="false" aria-controls="primary-nav">
        <svg width="25" height="25" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" aria-hidden="true"><path d="M3 7h18M3 12h18M3 17h18"/></svg>
      </button>
      <nav class="primary-nav" id="primary-nav" aria-label="Main navigation">
        <a href="#menu">Seasonal menu</a>
        <a href="#recipes">Recipes</a>
        <a href="#guide">Restaurant guide</a>
        <a href="#wine">Wine</a>
        <a href="#catering">Catering</a>
        <a href="#journal">Journal</a>
        <a class="nav-cta" href="#contact">Contact</a>
      </nav>
    </div>
  </header>

  <main id="home">
    <section class="hero">
      <div class="wrap hero-grid">
        <div class="hero-copy">
          <span class="eyebrow">A neighborhood kitchen &amp; food journal</span>
          <h1>Come for the food.<br><em>Stay for the feeling.</em></h1>
          <p>Gather &amp; Grove is a place for generous plates, good bottles, and the kind of meal that makes an ordinary Tuesday feel worth lingering over. Pull up a chair, or bring a little of the table home.</p>
          <div class="hero-actions">
            <a class="btn" href="#reserve">Reserve a table <span aria-hidden="true">↗</span></a>
            <a class="btn btn-outline" href="#menu">Explore the menu</a>
          </div>
          <div class="hero-note">Season-led cooking, proudly rooted in the neighborhood.</div>
        </div>
        <div class="hero-image">
          <img src="https://picsum.photos/seed/gather-grove-table/1000/1100" alt="A beautifully set table with seasonal dishes ready to share">
          <div class="image-note">
            <strong>Made of the moment.</strong>
            <span>Local produce. Open-hearted cooking.</span>
          </div>
        </div>
      </div>
    </section>

    <div class="intro-strip">
      <div class="wrap">
        <p><strong>At the table:</strong> seasonal dining · practical recipes · considered wine</p>
        <p><strong>Kitchen hours:</strong> Tue–Sun, 11:30 am–10 pm &nbsp; · &nbsp; 18 Alder Street, Portland</p>
      </div>
    </div>

    <section class="section menu-section" id="menu">
      <div class="wrap">
        <div class="section-head">
          <div>
            <span class="eyebrow">What's good right now</span>
            <h2>A menu that follows the season.</h2>
          </div>
          <p>Our kitchen starts at the market, not the calendar. Expect tender greens, bright herbs, slow-cooked comfort, and a few happy surprises that change as the growing season does.</p>
        </div>
        <div class="menu-grid">
          <article class="menu-card">
            <img src="https://picsum.photos/seed/spring-asparagus/720/520" alt="Fresh seasonal greens and vegetables on a ceramic plate" loading="lazy">
            <div class="menu-card-copy">
              <span class="eyebrow">First things first</span>
              <h3>Market greens &amp; whipped ricotta</h3>
              <p>Snapped asparagus, garden peas, lemon zest, and grilled sourdough. A little crunch, a little cream, and the first taste of spring.</p>
              <span class="price">$16</span>
              <a class="text-link" href="#reserve">See the full menu <span aria-hidden="true">→</span></a>
            </div>
          </article>
          <article class="menu-card">
            <img src="https://picsum.photos/seed/braised-chicken/720/520" alt="Slow-braised chicken with vegetables and fresh herbs" loading="lazy">
            <div class="menu-card-copy">
              <span class="eyebrow">From the hearth</span>
              <h3>Cider-braised heirloom chicken</h3>
              <p>Patiently braised with sweet onions and thyme until fork-tender, then finished with a silky pan jus and buttery spring potatoes.</p>
              <span class="price">$29</span>
              <a class="text-link" href="#reserve">See the full menu <span aria-hidden="true">→</span></a>
            </div>
          </article>
          <article class="menu-card">
            <img src="https://picsum.photos/seed/rhubarb-dessert/720/520" alt="Seasonal dessert with fruit and a scoop of cream" loading="lazy">
            <div class="menu-card-copy">
              <span class="eyebrow">Save room</span>
              <h3>Roasted rhubarb &amp; buttermilk cake</h3>
              <p>Tart rhubarb, a tender crumb, and softly whipped cream. Just sweet enough, and especially good with the last sip of something fizzy.</p>
              <span class="price">$12</span>
              <a class="text-link" href="#reserve">See the full menu <span aria-hidden="true">→</span></a>
            </div>
          </article>
        </div>
      </div>
    </section>

    <section class="recipe-section" id="recipes">
      <div class="wrap recipe-layout">
        <div class="recipe-photo">
          <img src="https://picsum.photos/seed/lemon-orzo-recipe/900/1100" alt="A bowl of lemony orzo with herbs and seasonal vegetables" loading="lazy">
          <span class="photo-caption">From our kitchen notebook · No. 24</span>
        </div>
        <div class="recipe-copy">
          <span class="eyebrow">Cook something lovely</span>
          <h2>One-pot lemon orzo with peas &amp; herbs</h2>
          <p>This is a weeknight recipe with weekend energy: toasted orzo simmered in a light, savory broth, finished with sweet peas, lemon, and a shower of herbs. Stir in the cheese off the heat and the starch does its quiet work, bringing everything together in a glossy, almost risotto-like sauce.</p>
          <p>For a silky finish, whisk the olive oil and lemon juice into a quick emulsion before folding it through. Taste as you go; the best seasoning is always the last little adjustment.</p>
          <div class="recipe-meta">
            <span><strong>Prep</strong> 10 minutes</span>
            <span><strong>Cook</strong> 20 minutes</span>
            <span><strong>Level</strong> Weeknight easy</span>
          </div>
          <div class="calculator" aria-live="polite">
            <div class="calculator-head">
              <strong>Scale this recipe</strong>
              <div class="serving-control" aria-label="Adjust recipe servings">
                <button type="button" id="decrease-servings" aria-label="Decrease servings">−</button>
                <span class="serving-count"><span id="servings">4</span></span>
                <button type="button" id="increase-servings" aria-label="Increase servings">+</button>
                <span style="color:var(--muted);font-size:.76rem">servings</span>
              </div>
            </div>
            <ul class="ingredients">
              <li><strong id="orzo-amount">1½ cups</strong> orzo</li>
              <li><strong id="broth-amount">3 cups</strong> vegetable broth</li>
              <li><strong id="peas-amount">1 cup</strong> fresh or frozen peas</li>
              <li><strong id="lemon-amount">1</strong> lemon, zest and juice</li>
              <li><strong id="cheese-amount">½ cup</strong> grated parmesan</li>
              <li><strong id="herbs-amount">¼ cup</strong> chopped soft herbs</li>
            </ul>
            <p class="recipe-footnote">Amounts scale from the original four-serving recipe. Season with salt and pepper to taste.</p>
          </div>
          <a class="text-link" href="#journal">Read the full recipe &amp; kitchen notes <span aria-hidden="true">→</span></a>
        </div>
      </div>
    </section>

    <section class="wine-section" id="wine">
      <div class="wrap">
        <div class="section-head">
          <div>
            <span class="eyebrow">From our little cellar</span>
            <h2>Good wine makes room for conversation.</h2>
          </div>
          <p>We buy from people who care for their land and make wine with a light hand. Ask us what's open by the glass; the right bottle should feel like an invitation, not a test.</p>
        </div>
        <div class="wine-grid">
          <article class="wine-card">
            <img src="https://picsum.photos/seed/white-wine-vineyard/600/700" alt="Sunlit vineyard rows in wine country" loading="lazy">
            <div class="wine-card-copy">
              <span class="eyebrow">Bright &amp; mineral</span>
              <h3>Loire Valley Chenin Blanc</h3>
              <p>Quince, chamomile, and a clean line of acidity. Its limestone terroir and lively finish make a lovely match for spring greens, shellfish, or a second helping of conversation.</p>
              <a class="text-link" href="#reserve">Explore our wine list <span aria-hidden="true">→</span></a>
            </div>
          </article>
          <article class="wine-card">
            <img src="https://picsum.photos/seed/red-wine-cellar/600/700" alt="A glass of red wine poured beside a candlelit dinner" loading="lazy">
            <div class="wine-card-copy">
              <span class="eyebrow">Soft &amp; soulful</span>
              <h3>Gamay from the foothills</h3>
              <p>Juicy red cherry, a whisper of spice, and gentle tannins. A slight chill brings it to life beside braised chicken, roasted mushrooms, or a long Sunday lunch.</p>
              <a class="text-link" href="#reserve">Ask our wine team <span aria-hidden="true">→</span></a>
            </div>
          </article>
        </div>
      </div>
    </section>

    <section class="section guide-section" id="guide">
      <div class="wrap">
        <div class="section-head">
          <div>
            <span class="eyebrow">The neighborhood, well tasted</span>
            <h2>A few places we keep coming back to.</h2>
          </div>
          <p>Our restaurant guide is less about chasing the next big thing and more about finding the places with a point of view. These are the tables, counters, and bakeries we’d send a friend to.</p>
        </div>
        <div class="guide-grid">
          <article class="guide-feature">
            <img src="https://picsum.photos/seed/restaurant-guide-portland/1200/850" alt="Warm, welcoming neighborhood restaurant dining room" loading="lazy">
            <div class="guide-feature-copy">
              <span class="eyebrow">Editor's neighborhood pick</span>
              <h3>Where the good evenings begin: Alder Street</h3>
              <p>Independent kitchens, a tiny natural-wine bar, and a bakery that sells out before noon. Our walkable guide maps the delicious details and tells you what to order when you get there.</p>
              <a class="text-link" style="color:#f0c5a8" href="#journal">Read the neighborhood guide <span aria-hidden="true">→</span></a>
            </div>
          </article>
          <div class="guide-list">
            <article class="guide-item">
              <img src="https://picsum.photos/seed/bakery-counter/260/260" alt="Fresh loaves and pastries at a neighborhood bakery" loading="lazy">
              <div>
                <span class="eyebrow">For the early riser</span>
                <h3>Daybreak Bread Co.</h3>
                <p>Slow-fermented country loaves, excellent coffee, and a cardamom bun worth setting an alarm for.</p>
              </div>
            </article>
            <article class="guide-item">
              <img src="https://picsum.photos/seed/small-plates-wine/260/260" alt="Small plates served at a relaxed wine bar" loading="lazy">
              <div>
                <span class="eyebrow">For one more glass</span>
                <h3>Little Vine Wine Bar</h3>
                <p>Low-intervention bottles, generous little plates, and a staff who love finding your kind of wine.</p>
              </div>
            </article>
            <article class="guide-item">
              <img src="https://picsum.photos/seed/farmers-market/260/260" alt="Colorful produce arranged at a local farmers market" loading="lazy">
              <div>
                <span class="eyebrow">For market day</span>
                <h3>Saturday at South Market</h3>
                <p>Meet the growers behind the season, stock up on greens, and let dinner take shape on the walk home.</p>
              </div>
            </article>
          </div>
        </div>
      </div>
    </section>

    <section class="gather-section" id="catering">
      <div class="wrap gather-grid">
        <div class="gather-copy">
          <span class="eyebrow">A good reason to gather</span>
          <h2>Let us take care of the table.</h2>
          <p>From a candlelit dinner for two to a room full of your favorite people, we make hosting feel easy. Our events team builds menus around the season, the setting, and the way you want the night to feel.</p>
          <p>Choose a family-style supper, a polished passed-plate reception, or a relaxed lunch with generous market salads and something lovely to finish. We’ll handle the details, including thoughtful wine pairings and dietary needs.</p>
          <a class="btn" href="#contact">Book an event <span aria-hidden="true">↗</span></a>
        </div>
        <div class="feature-list">
          <article class="feature">
            <span class="feature-number">01</span>
            <h3>At-home catering</h3>
            <p>Seasonal menus delivered ready to share, with clear reheating notes and all the finishing touches.</p>
          </article>
          <article class="feature">
            <span class="feature-number">02</span>
            <h3>Private dining</h3>
            <p>A warm, tucked-away room for birthdays, team dinners, and the people you want around one table.</p>
          </article>
          <article class="feature">
            <span class="feature-number">03</span>
            <h3>Menus with meaning</h3>
            <p>Local ingredients, flexible options, and a menu that feels personal rather than off the shelf.</p>
          </article>
          <article class="feature">
            <span class="feature-number">04</span>
            <h3>Wine, sorted</h3>
            <p>Our team will help choose bottles that complement the menu and suit the mood of your gathering.</p>
          </article>
        </div>
      </div>
    </section>

    <section class="quote-section" id="journal">
      <div class="wrap quote-inner">
        <div class="quote-mark" aria-hidden="true">“</div>
        <blockquote>We came for dinner and left with three new recipes, a bottle we loved, and plans to come back next week. It felt like being welcomed into someone's home.</blockquote>
        <div class="quote-credit">Mara L. · A note from our guest book</div>
      </div>
    </section>

    <section class="faq-section">
      <div class="wrap faq-layout">
        <div>
          <span class="eyebrow">A little practical magic</span>
          <h2>Good to know.</h2>
          <p>Planning a visit, an event, or your next dinner at home? Here are a few helpful details. Still wondering? Our team is always happy to help.</p>
          <a class="text-link" href="#contact">Get in touch <span aria-hidden="true">→</span></a>
        </div>
        <div class="faq-list">
          <details>
            <summary>Do you have vegetarian and allergy-aware options?</summary>
            <p>Absolutely. Our menu always includes thoughtful vegetarian dishes, and we’re glad to accommodate many dietary needs with advance notice. Please share allergies when you reserve so our kitchen can guide you safely through the menu.</p>
          </details>
          <details>
            <summary>Can I reserve a table for a larger group?</summary>
            <p>For parties of seven or more, contact us directly and we’ll help find the right setup. We can arrange a shared seasonal menu, suggest wine pairings, and make sure the evening feels relaxed from the first pour to the last course.</p>
          </details>
          <details>
            <summary>How far ahead should I book catering?</summary>
            <p>Two weeks gives our team the best chance to source your preferred ingredients and shape a menu just for you. We can sometimes accommodate shorter notice, so do reach out with your date, guest count, and a few details about the gathering.</p>
          </details>
          <details>
            <summary>Where do your recipes and nutrition notes come from?</summary>
            <p>Our recipes are tested in the Gather &amp; Grove kitchen and written for real home cooks. We share practical technique, flexible ingredient swaps, and balanced meal ideas—without losing sight of the pleasure that makes good food worth cooking.</p>
          </details>
        </div>
      </div>
    </section>

    <section class="newsletter">
      <div class="wrap newsletter-inner">
        <div>
          <span class="eyebrow">A good note for your inbox</span>
          <h2>Seasonal ideas, served occasionally.</h2>
          <p>Get a fresh recipe, a bottle worth knowing, and a little inspiration for gathering well. No noise—just the good things, about twice a month.</p>
        </div>
        <form class="newsletter-form" id="newsletter-form">
          <label for="email-address" class="sr-only" style="position:absolute;clip:rect(0,0,0,0);clip-path:inset(50%);width:1px;height:1px;overflow:hidden;">Email address</label>
          <input type="email" id="email-address" name="email" placeholder="Your email address" autocomplete="email" required>
          <button class="btn" type="submit">Count me in</button>
        </form>
        <div class="form-message" id="form-message" role="status" aria-live="polite"></div>
      </div>
    </section>
  </main>

  <footer id="contact">
    <div class="wrap">
      <div class="footer-grid">
        <div class="footer-about">
          <a class="footer-brand" href="#home">
            <img src="https://placehold.co/96x96/385b43/f7f5ee?text=G%26G&font=playfair+display" alt="">
            <span>Gather &amp; Grove</span>
          </a>
          <p>A neighborhood kitchen and food journal for curious cooks, generous hosts, and anyone who believes the best things happen around a table.</p>
          <div class="socials" aria-label="Social media links">
            <a href="https://www.instagram.com/" aria-label="Instagram">ig</a>
            <a href="https://www.facebook.com/" aria-label="Facebook">f</a>
            <a href="https://www.pinterest.com/" aria-label="Pinterest">p</a>
          </div>
        </div>
        <div class="footer-col">
          <h3>Come by</h3>
          <p>18 Alder Street<br>Portland, OR 97205</p>
          <a href="tel:+15035550184">(503) 555-0184</a>
          <a href="mailto:hello@gatherandgrove.com">hello@gatherandgrove.com</a>
        </div>
        <div class="footer-col">
          <h3>Find your way</h3>
          <a href="#menu">Seasonal menu</a>
          <a href="#recipes">Recipes &amp; cooking</a>
          <a href="#guide">Restaurant guide</a>
          <a href="#wine">Wine selections</a>
          <a href="#catering">Catering &amp; events</a>
        </div>
        <div class="footer-col">
          <h3>Pull up a chair</h3>
          <p>Tue–Thu · 11:30 am–9 pm<br>Fri–Sat · 11:30 am–10 pm<br>Sunday · 10 am–3 pm<br>Monday · Taking a breath</p>
          <a href="#reserve">Reserve a table ↗</a>
        </div>
      </div>
      <div class="footer-bottom">
        <span>© <span id="current-year"></span> Gather &amp; Grove. All good things reserved.</span>
        <div class="footer-legal">
          <a href="#privacy">Privacy</a>
          <a href="#terms">Terms</a>
          <a href="#contact">Contact</a>
        </div>
      </div>
    </div>
  </footer>

  <script>
    (() => {
      const menuToggle = document.querySelector('.menu-toggle');
      const nav = document.querySelector('.primary-nav');

      menuToggle.addEventListener('click', () => {
        const isOpen = nav.classList.toggle('is-open');
        menuToggle.setAttribute('aria-expanded', String(isOpen));
        menuToggle.setAttribute('aria-label', isOpen ? 'Close navigation' : 'Open navigation');
      });

      nav.querySelectorAll('a').forEach((link) => {
        link.addEventListener('click', () => {
          nav.classList.remove('is-open');
          menuToggle.setAttribute('aria-expanded', 'false');
          menuToggle.setAttribute('aria-label', 'Open navigation');
        });
      });

      let servings = 4;
      const updateRecipe = () => {
        document.getElementById('servings').textContent = servings;
        const factor = servings / 4;
        const amount = (value, singular = '', plural = '') => {
          const scaled = value * factor;
          const rounded = Math.round(scaled * 4) / 4;
          const whole = Math.floor(rounded);
          const fraction = rounded - whole;
          const fractions = { 0.25: '¼', 0.5: '½', 0.75: '¾' };
          const display = `${whole || ''}${fractions[fraction] || ''}` || '¼';
          return `${display}${rounded === 1 ? singular : plural}`;
        };
        document.getElementById('orzo-amount').textContent = amount(1.5, ' cup', ' cups');
        document.getElementById('broth-amount').textContent = amount(3, ' cup', ' cups');
        document.getElementById('peas-amount').textContent = amount(1, ' cup', ' cups');
        document.getElementById('lemon-amount').textContent = amount(1);
        document.getElementById('cheese-amount').textContent = amount(.5, ' cup', ' cups');
        document.getElementById('herbs-amount').textContent = amount(.25, ' cup', ' cups');
      };

      document.getElementById('decrease-servings').addEventListener('click', () => {
        if (servings > 1) { servings--; updateRecipe(); }
      });
      document.getElementById('increase-servings').addEventListener('click', () => {
        if (servings < 16) { servings++; updateRecipe(); }
      });

      document.getElementById('current-year').textContent = new Date().getFullYear();

      document.getElementById('newsletter-form').addEventListener('submit', (event) => {
        event.preventDefault();
        const email = document.getElementById('email-address');
        if (email.checkValidity()) {
          document.getElementById('form-message').textContent = 'Thanks for joining us. Look for a little goodness in your inbox soon.';
          email.value = '';
        } else {
          email.reportValidity();
        }
      });
    })();
  </script>
</body>
</html>
View Axe Report (JSON)
{
  "testEngine": {
    "name": "axe-core",
    "version": "4.10.2"
  },
  "testRunner": {
    "name": "axe"
  },
  "testEnvironment": {
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
    "windowWidth": 1280,
    "windowHeight": 720,
    "orientationAngle": 0,
    "orientationType": "landscape-primary"
  },
  "timestamp": "2026-11-12T09:57:27.637Z",
  "url": "https://benchmark.aimac.invalid/2fb000eef2fb758e0604861a2d4ea1c9d044a0bc5559a1334474217303eea47d.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": "select-name",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure select element has an accessible name",
      "help": "Select element must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "server-side-image-map",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag211",
        "section508",
        "section508.22.f",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure that server-side image maps are not used",
      "help": "Server-side image maps must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
      "nodes": []
    },
    {
      "id": "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=\"Gather and Grove home\">",
          "target": [
            ".brand"
          ]
        }
      ]
    },
    {
      "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=\"Gather and Grove home\">",
          "target": [
            ".brand"
          ]
        }
      ]
    },
    {
      "id": "aria-deprecated-role",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements do not use deprecated roles",
      "help": "Deprecated ARIA roles must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "deprecatedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "minor",
              "message": "ARIA role is not deprecated"
            }
          ],
          "impact": null,
          "html": "<div class=\"form-message\" id=\"form-message\" role=\"status\" aria-live=\"polite\"></div>",
          "target": [
            "#form-message"
          ]
        }
      ]
    },
    {
      "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": "<svg width=\"25\" height=\"25\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M3 7h18M3 12h18M3 17h18\"></path></svg>",
          "target": [
            "svg"
          ]
        }
      ]
    },
    {
      "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=\"Gather and Grove home\">",
          "target": [
            ".brand"
          ]
        }
      ]
    },
    {
      "id": "aria-required-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements with ARIA roles have all required ARIA attributes",
      "help": "Required ARIA attributes must be provided",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-required-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "All required ARIA attributes are present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"form-message\" id=\"form-message\" role=\"status\" aria-live=\"polite\"></div>",
          "target": [
            "#form-message"
          ]
        }
      ]
    },
    {
      "id": "aria-roles",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all elements with a role attribute use a valid value",
      "help": "ARIA roles used must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "invalidrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is valid"
            },
            {
              "id": "abstractrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Abstract roles are not used"
            },
            {
              "id": "unsupportedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is supported"
            }
          ],
          "impact": null,
          "html": "<div class=\"form-message\" id=\"form-message\" role=\"status\" aria-live=\"polite\"></div>",
          "target": [
            "#form-message"
          ]
        }
      ]
    },
    {
      "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=\"Gather and Grove home\">",
          "target": [
            ".brand"
          ]
        }
      ]
    },
    {
      "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=\"Gather and Grove home\">",
          "target": [
            ".brand"
          ]
        }
      ]
    },
    {
      "id": "autocomplete-valid",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag21aa",
        "wcag135",
        "EN-301-549",
        "EN-9.1.3.5",
        "ACT"
      ],
      "description": "Ensure the autocomplete attribute is correct and suitable for the form field",
      "help": "autocomplete attribute must be used correctly",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "autocomplete-valid",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "the autocomplete attribute is correctly formatted"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<input type=\"email\" id=\"email-address\" name=\"email\" placeholder=\"Your email address\" autocomplete=\"email\" required=\"\">",
          "target": [
            "#email-address"
          ]
        }
      ]
    },
    {
      "id": "avoid-inline-spacing",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag21aa",
        "wcag1412",
        "EN-301-549",
        "EN-9.1.4.12",
        "ACT"
      ],
      "description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
      "help": "Inline text spacing must be adjustable with custom stylesheets",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "important-letter-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-word-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-line-height",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "line-height in the style attribute is not set to !important, or meets the minimum"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<span style=\"color:var(--muted);font-size:.76rem\">servings</span>",
          "target": [
            ".serving-control > span:nth-child(4)"
          ]
        }
      ]
    },
    {
      "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"
            },
            {
              "id": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-label attribute exists and is not empty"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<button type=\"button\" id=\"decrease-servings\" aria-label=\"Decrease servings\">\u2212</button>",
          "target": [
            "#decrease-servings"
          ]
        }
      ]
    },
    {
      "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>Come for the food.<br><em>Stay for the feeling.</em></h1>",
                  "target": [
                    "h1"
                  ]
                },
                {
                  "html": "<h2>A menu that follows the season.</h2>",
                  "target": [
                    "#menu > .wrap > .section-head > div > h2"
                  ]
                },
                {
                  "html": "<h3>Market greens &amp; whipped ricotta</h3>",
                  "target": [
                    ".menu-card:nth-child(1) > .menu-card-copy > h3"
                  ]
                },
                {
                  "html": "<h3>Cider-braised heirloom chicken</h3>",
                  "target": [
                    ".menu-card:nth-child(2) > .menu-card-copy > h3"
                  ]
                },
                {
                  "html": "<h3>Roasted rhubarb &amp; buttermilk cake</h3>",
                  "target": [
                    ".menu-card:nth-child(3) > .menu-card-copy > h3"
                  ]
                },
                {
                  "html": "<h2>One-pot lemon orzo with peas &amp; herbs</h2>",
                  "target": [
                    ".recipe-copy > h2"
                  ]
                },
                {
                  "html": "<h2>Good wine makes room for conversation.</h2>",
                  "target": [
                    "#wine > .wrap > .section-head > div > h2"
                  ]
                },
                {
                  "html": "<h3>Loire Valley Chenin Blanc</h3>",
                  "target": [
                    ".wine-card:nth-child(1) > .wine-card-copy > h3"
                  ]
                },
                {
                  "html": "<h3>Gamay from the foothills</h3>",
                  "target": [
                    ".wine-card:nth-child(2) > .wine-card-copy > h3"
                  ]
                },
                {
                  "html": "<h2>A few places we keep coming back to.</h2>",
                  "target": [
                    "#guide > .wrap > .section-head > div > h2"
                  ]
                },
                {
                  "html": "<h3>Where the good evenings begin: Alder Street</h3>",
                  "target": [
                    ".guide-feature-copy > h3"
                  ]
                },
                {
                  "html": "<h3>Daybreak Bread Co.</h3>",
                  "target": [
                    ".guide-item:nth-child(1) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Little Vine Wine Bar</h3>",
                  "target": [
                    ".guide-item:nth-child(2) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Saturday at South Market</h3>",
                  "target": [
                    ".guide-item:nth-child(3) > div > h3"
                  ]
                },
                {
                  "html": "<h2>Let us take care of the table.</h2>",
                  "target": [
                    ".gather-copy > h2"
                  ]
                },
                {
                  "html": "<h3>At-home catering</h3>",
                  "target": [
                    ".feature:nth-child(1) > h3"
                  ]
                },
                {
                  "html": "<h3>Private dining</h3>",
                  "target": [
                    ".feature:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>Menus with meaning</h3>",
                  "target": [
                    ".feature:nth-child(3) > h3"
                  ]
                },
                {
                  "html": "<h3>Wine, sorted</h3>",
                  "target": [
                    ".feature:nth-child(4) > h3"
                  ]
                },
                {
                  "html": "<h2>Good to know.</h2>",
                  "target": [
                    ".faq-layout > div:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h2>Seasonal ideas, served occasionally.</h2>",
                  "target": [
                    ".newsletter-inner > div:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h3>Come by</h3>",
                  "target": [
                    ".footer-col:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>Find your way</h3>",
                  "target": [
                    ".footer-col:nth-child(3) > h3"
                  ]
                },
                {
                  "html": "<h3>Pull up a chair</h3>",
                  "target": [
                    ".footer-col:nth-child(4) > h3"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a heading"
            },
            {
              "id": "landmark",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<main id=\"home\">",
                  "target": [
                    "#home"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a landmark region"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#f5f1e7",
                "bgColor": "#253d30",
                "contrastRatio": 10.4,
                "fontSize": "8.6pt (11.52px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has sufficient color contrast of 10.4"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"announcement\">\n    A new season at the table \u2014 spring reservations are now open.\n    <a href=\"#reserve\">Find your seat</a>\n  </div>",
          "target": [
            ".announcement"
          ]
        }
      ]
    },
    {
      "id": "document-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag242",
        "TTv5",
        "TT12.a",
        "EN-301-549",
        "EN-9.2.4.2",
        "ACT"
      ],
      "description": "Ensure each HTML document contains a non-empty <title> element",
      "help": "Documents must have <title> element to aid in navigation",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "doc-has-title",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Document has a non-empty <title> element"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "duplicate-id-aria",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every id attribute value used in ARIA and in labels is unique",
      "help": "IDs used in ARIA and labels must be unique",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "duplicate-id-aria",
              "data": "primary-nav",
              "relatedNodes": [],
              "impact": "critical",
              "message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<nav class=\"primary-nav\" id=\"primary-nav\" aria-label=\"Main navigation\">",
          "target": [
            "#primary-nav"
          ]
        }
      ]
    },
    {
      "id": "form-field-multiple-labels",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag332",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.3.3.2"
      ],
      "description": "Ensure form field does not have multiple label elements",
      "help": "Form field must not have multiple label elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "multiple-label",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<label for=\"email-address\" class=\"sr-only\" style=\"position:absolute;clip:rect(0,0,0,0);clip-path:inset(50%);width:1px;height:1px;overflow:hidden;\">Email address</label>",
                  "target": [
                    "label"
                  ]
                }
              ],
              "impact": "moderate",
              "message": "Form field does not have multiple label elements"
            }
          ],
          "impact": null,
          "html": "<input type=\"email\" id=\"email-address\" name=\"email\" placeholder=\"Your email address\" autocomplete=\"email\" required=\"\">",
          "target": [
            "#email-address"
          ]
        }
      ]
    },
    {
      "id": "html-has-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure every HTML document has a lang attribute",
      "help": "<html> element must have a lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "The <html> element has a lang attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "html-lang-valid",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure the lang attribute of the <html> element has a valid value",
      "help": "<html> element must have a valid value for the lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "valid-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Value of lang attribute is included in the list of valid languages"
            }
          ],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "TT7.b",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <img> elements have alternative text or a role of none or presentation",
      "help": "Images must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-alt",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has an alt attribute"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "alt-space-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has a valid alt attribute value"
            }
          ],
          "impact": null,
          "html": "<img src=\"https://placehold.co/96x96/385b43/f7f5ee?text=G%26G&amp;font=playfair+display\" alt=\"Gather &amp; Grove logo\">",
          "target": [
            "img[alt=\"Gather & Grove logo\"]"
          ]
        }
      ]
    },
    {
      "id": "label",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every form element has a label",
      "help": "Form elements must have labels",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "explicit-label",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<label for=\"email-address\" class=\"sr-only\" style=\"position:absolute;clip:rect(0,0,0,0);clip-path:inset(50%);width:1px;height:1px;overflow:hidden;\">Email address</label>",
                  "target": [
                    "label"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has an explicit <label>"
            },
            {
              "id": "non-empty-placeholder",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has a placeholder attribute"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "hidden-explicit-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Form element has a visible explicit <label>"
            }
          ],
          "impact": null,
          "html": "<input type=\"email\" id=\"email-address\" name=\"email\" placeholder=\"Your email address\" autocomplete=\"email\" required=\"\">",
          "target": [
            "#email-address"
          ]
        }
      ]
    },
    {
      "id": "link-in-text-block",
      "impact": null,
      "tags": [
        "cat.color",
        "wcag2a",
        "wcag141",
        "TTv5",
        "TT13.a",
        "EN-301-549",
        "EN-9.1.4.1"
      ],
      "description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
      "help": "Links must be distinguishable without relying on color",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "link-in-text-block",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<div class=\"announcement\">\n    A new season at the table \u2014 spring reservations are now open.\n    <a href=\"#reserve\">Find your seat</a>\n  </div>",
                  "target": [
                    ".announcement"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Links can be distinguished from surrounding text in some way other than by color"
            },
            {
              "id": "link-in-text-block-style",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<div class=\"announcement\">\n    A new season at the table \u2014 spring reservations are now open.\n    <a href=\"#reserve\">Find your seat</a>\n  </div>",
                  "target": [
                    ".announcement"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Links can be distinguished from surrounding text by visual styling"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"#reserve\">Find your seat</a>",
          "target": [
            ".announcement > a[href$=\"#reserve\"]"
          ]
        }
      ]
    },
    {
      "id": "link-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure links have discernible text",
      "help": "Links must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has text that is visible to screen readers"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "focusable-no-name",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element is not in tab order or has accessible text"
            }
          ],
          "impact": null,
          "html": "<a href=\"#reserve\">Find your seat</a>",
          "target": [
            ".announcement > a[href$=\"#reserve\"]"
          ]
        }
      ]
    },
    {
      "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=\"ingredients\">",
          "target": [
            "ul"
          ]
        }
      ]
    },
    {
      "id": "listitem",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <li> elements are used semantically",
      "help": "<li> elements must be contained in a <ul> or <ol>",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "listitem",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "List item has a <ul>, <ol> or role=\"list\" parent element"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<li><strong id=\"orzo-amount\">1\u00bd cups</strong> orzo</li>",
          "target": [
            "li:nth-child(1)"
          ]
        }
      ]
    },
    {
      "id": "meta-viewport",
      "impact": null,
      "tags": [
        "cat.sensory-and-visual-cues",
        "wcag2aa",
        "wcag144",
        "EN-301-549",
        "EN-9.1.4.4",
        "ACT"
      ],
      "description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
      "help": "Zooming and scaling must not be disabled",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "meta-viewport",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "<meta> tag does not disable zooming on mobile devices"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">",
          "target": [
            "meta[name=\"viewport\"]"
          ]
        }
      ]
    },
    {
      "id": "nested-interactive",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
      "help": "Interactive controls must not be nested",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "no-focusable-content",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element does not have focusable descendants"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<img src=\"https://placehold.co/96x96/385b43/f7f5ee?text=G%26G&amp;font=playfair+display\" alt=\"Gather &amp; Grove logo\">",
          "target": [
            "img[alt=\"Gather & Grove logo\"]"
          ]
        }
      ]
    },
    {
      "id": "summary-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure summary elements have discernible text",
      "help": "Summary elements must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has text that is visible to screen readers"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<summary>Do you have vegetarian and allergy-aware options?</summary>",
          "target": [
            "details:nth-child(1) > summary"
          ]
        }
      ]
    },
    {
      "id": "target-size",
      "impact": null,
      "tags": [
        "cat.sensory-and-visual-cues",
        "wcag22aa",
        "wcag258"
      ],
      "description": "Ensure touch targets have sufficient size and space",
      "help": "All touch targets must be 24px large, or leave sufficient space",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "target-size",
              "data": {
                "minSize": 24,
                "width": 212.9,
                "height": 48
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Control has sufficient size (212.9px by 48px, should be at least 24px by 24px)"
            },
            {
              "id": "target-offset",
              "data": {
                "closestOffset": 24,
                "minOffset": 24
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a class=\"brand\" href=\"#home\" aria-label=\"Gather and Grove home\">",
          "target": [
            ".brand"
          ]
        }
      ]
    }
  ],
  "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=\"serving-control\" aria-label=\"Adjust recipe servings\">",
          "target": [
            ".serving-control"
          ],
          "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": {
                "messageKey": "nonBmp"
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element content contains only non-text characters"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span aria-hidden=\"true\">\u2192</span>",
          "target": [
            ".menu-card:nth-child(1) > .menu-card-copy > .text-link[href$=\"#reserve\"] > span[aria-hidden=\"true\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element content contains only non-text characters"
        }
      ]
    }
  ],
  "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": "#bd6846",
                "bgColor": "#f7f5ee",
                "contrastRatio": 3.67,
                "fontSize": "8.6pt (11.52px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">A neighborhood kitchen &amp; food journal</span>",
          "target": [
            ".hero-copy > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#fffefa",
                "contrastRatio": 3.97,
                "fontSize": "8.6pt (11.52px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"section menu-section\" id=\"menu\">",
                  "target": [
                    "#menu"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">What's good right now</span>",
          "target": [
            "#menu > .wrap > .section-head > div > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#f7f5ee",
                "contrastRatio": 3.67,
                "fontSize": "7.7pt (10.24px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"menu-card\">",
                  "target": [
                    ".menu-card:nth-child(1)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 7.7pt (10.24px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">First things first</span>",
          "target": [
            ".menu-card:nth-child(1) > .menu-card-copy > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 7.7pt (10.24px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#f7f5ee",
                "contrastRatio": 3.67,
                "fontSize": "7.7pt (10.24px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"menu-card\">",
                  "target": [
                    ".menu-card:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 7.7pt (10.24px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">From the hearth</span>",
          "target": [
            ".menu-card:nth-child(2) > .menu-card-copy > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 7.7pt (10.24px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#f7f5ee",
                "contrastRatio": 3.67,
                "fontSize": "7.7pt (10.24px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"menu-card\">",
                  "target": [
                    ".menu-card:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 7.7pt (10.24px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">Save room</span>",
          "target": [
            ".menu-card:nth-child(3) > .menu-card-copy > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 7.7pt (10.24px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#f7f5ee",
                "contrastRatio": 3.67,
                "fontSize": "8.6pt (11.52px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">Cook something lovely</span>",
          "target": [
            ".recipe-copy > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#d89a76",
                "bgColor": "#314b3b",
                "contrastRatio": 4,
                "fontSize": "7.7pt (10.24px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"wine-card\">",
                  "target": [
                    ".wine-card:nth-child(1)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4 (foreground color: #d89a76, background color: #314b3b, font size: 7.7pt (10.24px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">Bright &amp; mineral</span>",
          "target": [
            ".wine-card:nth-child(1) > .wine-card-copy > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4 (foreground color: #d89a76, background color: #314b3b, font size: 7.7pt (10.24px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#d89a76",
                "bgColor": "#314b3b",
                "contrastRatio": 4,
                "fontSize": "7.7pt (10.24px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"wine-card\">",
                  "target": [
                    ".wine-card:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4 (foreground color: #d89a76, background color: #314b3b, font size: 7.7pt (10.24px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">Soft &amp; soulful</span>",
          "target": [
            ".wine-card:nth-child(2) > .wine-card-copy > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4 (foreground color: #d89a76, background color: #314b3b, font size: 7.7pt (10.24px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#fffefa",
                "contrastRatio": 3.97,
                "fontSize": "8.6pt (11.52px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"section guide-section\" id=\"guide\">",
                  "target": [
                    "#guide"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">The neighborhood, well tasted</span>",
          "target": [
            "#guide > .wrap > .section-head > div > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#fffefa",
                "contrastRatio": 3.97,
                "fontSize": "7.3pt (9.76px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"section guide-section\" id=\"guide\">",
                  "target": [
                    "#guide"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 7.3pt (9.76px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">For the early riser</span>",
          "target": [
            ".guide-item:nth-child(1) > div > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 7.3pt (9.76px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#fffefa",
                "contrastRatio": 3.97,
                "fontSize": "7.3pt (9.76px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"section guide-section\" id=\"guide\">",
                  "target": [
                    "#guide"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 7.3pt (9.76px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">For one more glass</span>",
          "target": [
            ".guide-item:nth-child(2) > div > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 7.3pt (9.76px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#fffefa",
                "contrastRatio": 3.97,
                "fontSize": "7.3pt (9.76px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"section guide-section\" id=\"guide\">",
                  "target": [
                    "#guide"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 7.3pt (9.76px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">For market day</span>",
          "target": [
            ".guide-item:nth-child(3) > div > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 7.3pt (9.76px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#f7f5ee",
                "contrastRatio": 3.67,
                "fontSize": "8.6pt (11.52px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">A good reason to gather</span>",
          "target": [
            ".gather-copy > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#f7f5ee",
                "contrastRatio": 3.67,
                "fontSize": "14.4pt (19.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 14.4pt (19.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"feature-number\">01</span>",
          "target": [
            ".feature:nth-child(1) > .feature-number"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 14.4pt (19.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#f7f5ee",
                "contrastRatio": 3.67,
                "fontSize": "14.4pt (19.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 14.4pt (19.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"feature-number\">02</span>",
          "target": [
            ".feature:nth-child(2) > .feature-number"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 14.4pt (19.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#f7f5ee",
                "contrastRatio": 3.67,
                "fontSize": "14.4pt (19.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 14.4pt (19.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"feature-number\">03</span>",
          "target": [
            ".feature:nth-child(3) > .feature-number"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 14.4pt (19.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#f7f5ee",
                "contrastRatio": 3.67,
                "fontSize": "14.4pt (19.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 14.4pt (19.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"feature-number\">04</span>",
          "target": [
            ".feature:nth-child(4) > .feature-number"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.67 (foreground color: #bd6846, background color: #f7f5ee, font size: 14.4pt (19.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#69736a",
                "bgColor": "#ebece3",
                "contrastRatio": 4.13,
                "fontSize": "8.9pt (11.84px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"quote-section\" id=\"journal\">",
                  "target": [
                    "#journal"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.13 (foreground color: #69736a, background color: #ebece3, font size: 8.9pt (11.84px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"quote-credit\">Mara L. \u00b7 A note from our guest book</div>",
          "target": [
            ".quote-credit"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.13 (foreground color: #69736a, background color: #ebece3, font size: 8.9pt (11.84px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#fffefa",
                "contrastRatio": 3.97,
                "fontSize": "8.6pt (11.52px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"faq-section\">",
                  "target": [
                    ".faq-section"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">A little practical magic</span>",
          "target": [
            ".faq-layout > div:nth-child(1) > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.97 (foreground color: #bd6846, background color: #fffefa, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#bd6846",
                "bgColor": "#e4e9de",
                "contrastRatio": 3.25,
                "fontSize": "8.6pt (11.52px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"newsletter\">",
                  "target": [
                    ".newsletter"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.25 (foreground color: #bd6846, background color: #e4e9de, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"eyebrow\">A good note for your inbox</span>",
          "target": [
            ".newsletter-inner > div:nth-child(1) > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.25 (foreground color: #bd6846, background color: #e4e9de, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#69736a",
                "bgColor": "#e4e9de",
                "contrastRatio": 3.99,
                "fontSize": "10.1pt (13.44px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"newsletter\">",
                  "target": [
                    ".newsletter"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.99 (foreground color: #69736a, background color: #e4e9de, font size: 10.1pt (13.44px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>Get a fresh recipe, a bottle worth knowing, and a little inspiration for gathering well. No noise\u2014just the good things, about twice a month.</p>",
          "target": [
            ".newsletter-inner > div:nth-child(1) > p"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.99 (foreground color: #69736a, background color: #e4e9de, font size: 10.1pt (13.44px), font weight: normal). Expected contrast ratio of 4.5:1"
        }
      ]
    }
  ],
  "coverage": {
    "contract": "main-document-vertical-scroll",
    "complete": true,
    "positions": [
      {
        "y": 0,
        "height": 6726
      },
      {
        "y": 576,
        "height": 6726
      },
      {
        "y": 1152,
        "height": 6726
      },
      {
        "y": 1728,
        "height": 6726
      },
      {
        "y": 2304,
        "height": 6726
      },
      {
        "y": 2880,
        "height": 6726
      },
      {
        "y": 3456,
        "height": 6726
      },
      {
        "y": 4032,
        "height": 6726
      },
      {
        "y": 4608,
        "height": 6726
      },
      {
        "y": 5184,
        "height": 6726
      },
      {
        "y": 5760,
        "height": 6726
      },
      {
        "y": 6006,
        "height": 6726
      }
    ],
    "scans": 13,
    "max_states": 512,
    "settle_ms": 5000,
    "page_timeout_seconds": 150,
    "layout_stability": "consecutive 100ms size samples within one CSS pixel",
    "animation_settling": "finite animations present when scroll resources are ready finish or are cancelled",
    "interactive_states": "not exercised",
    "horizontal_scroll": "not exercised"
  }
}
System Prompt
You are a lead web developer at a top digital agency, tasked with creating a one-page website for a new client based on the given specifications, delivered as an HTML file. First non-whitespace char '<', last non-whitespace char '>'. Use the following services to generate placeholder images where needed:
- placehold.co (text): https://placehold.co/[{w}x{h}|{size}][/{bg-color}/{text-color}]?text={text}&font=[lato|lora|montserrat|noto sans|open sans|oswald|playfair display|poppins|pt sans|raleway|roboto|source sans|source sans pro]
- picsum.photos (photos): https://picsum.photos/[{w}/{h}|{size}]?[grayscale][&blur={1-10}]
- pravatar.cc (avatars): https://i.pravatar.cc/{size}?u={identifier}
Choose sizes appropriate to layout.
User Prompt
Create a **complete, polished, production-quality** primary web page for a new client in the "Food and Drink" 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: "Food and Drink"
- Description: Recipes, restaurant guides, cooking tips, and nutrition resources.

**Your Creative Task:**
1.  **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Food and Drink" category.
2.  **Define Page:** Determine the most effective primary page type (e.g., homepage, service landing page, category portal) to showcase this fictional entity.
3.  **Design:** Develop an opinionated, modern, and professional layout. Make distinct choices about structure and flow.

**Content & Structure Requirements (Deliver a COMPLETE page):**
-   **Overall:** The final page must feel substantial and complete, with realistic amounts of text (multiple paragraphs per section where appropriate, avoid single sentences), well-integrated placeholder images, and logical flow. It should look like a real website a business would proudly use.
-   **HEADER:** Include the invented site name, tagline, a logo placeholder image, and a primary navigation bar. Ensure the navigation has **at least 5-7 clearly defined, relevant links** including: "Contact", "Catering", "Wine".
-   **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
    -   Address key topics relevant to the "Food and Drink" category. Consider themes similar to: "Seasonal Menus", "Wine Pairings", "Restaurant Guide".
    -   **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "emulsification", "braising", "terroir".
    -   **Visuals:** Integrate relevant placeholder images logically within the content sections.
    -   **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Start Order", "Reserve Table", "Book Event".
-   **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Food and Drink" sector. Ideas similar but not limited to: "recipe calculator".
-   **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "trending recipes", "food news", "wine selections".
-   **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.