NVIDIA Nemotron 3 Ultra – Food and Drink

via BaseTen · Generated

  • AIMAC Debt 7.33
  • Cost $0.05
  • Total Violations 34
  • HTML Size 78 KB
  • Em Dashes 9

Screenshot

View NVIDIA Nemotron 3 Ultra Food and Drink page View Live Page

Accessibility Issues Found

34 Serious

  • color-contrast serious 33 instances

    Elements must meet minimum color contrast ratio thresholds

    Example HTML <span class="logo-tagline">Culinary Craft for Curious Palates</span>
  • link-in-text-block serious 1 instance

    Links must be distinguishable without relying on color

    Example HTML <a href="#" style="color: var(--color-brand-primary);">Privacy Policy</a>

Artifacts

View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Savor & Sage: Your definitive guide to recipes, restaurant insights, cooking techniques, and nutrition science. Elevate your culinary journey.">
    <title>Savor & Sage | Culinary Craft for Curious Palates</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&display=swap" rel="stylesheet">
    <style>
        /* ========================================
           CSS Variables & Reset
           ======================================== */
        :root {
            --color-bg: #FAF8F5;
            --color-surface: #FFFFFF;
            --color-text-primary: #2D2926;
            --color-text-secondary: #5C544E;
            --color-text-muted: #9B918A;
            --color-brand-primary: #A0522D; /* Sienna */
            --color-brand-dark: #7B3F1E;
            --color-brand-light: #D4A373;
            --color-accent: #6B8E5A; /* Sage Green */
            --color-accent-dark: #4F6B3F;
            --color-border: #E8E0D8;
            --shadow-sm: 0 1px 2px rgba(45, 41, 38, 0.05);
            --shadow-md: 0 4px 12px rgba(45, 41, 38, 0.08);
            --shadow-lg: 0 12px 24px rgba(45, 41, 38, 0.12);
            --radius-sm: 4px;
            --radius-md: 8px;
            --radius-lg: 16px;
            --transition-fast: 150ms ease;
            --transition-normal: 250ms ease;
            --container-max: 1280px;
            --header-height: 72px;
        }

        *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
        html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
        body { font-family: 'Inter', sans-serif; font-size: 16px; line-height: 1.7; color: var(--color-text-primary); background-color: var(--color-bg); }
        h1, h2, h3, h4 { font-family: 'Playfair Display', serif; font-weight: 600; line-height: 1.3; color: var(--color-text-primary); }
        h1 { font-size: clamp(2.5rem, 5vw, 4rem); }
        h2 { font-size: clamp(1.75rem, 3.5vw, 2.5rem); margin-bottom: 1rem; }
        h3 { font-size: clamp(1.25rem, 2vw, 1.5rem); margin-bottom: 0.75rem; }
        p { margin-bottom: 1rem; color: var(--color-text-secondary); }
        a { color: var(--color-brand-primary); text-decoration: none; transition: color var(--transition-fast); }
        a:hover { color: var(--color-brand-dark); text-decoration: underline; }
        img { max-width: 100%; height: auto; display: block; border-radius: var(--radius-md); }
        ul { list-style: none; }
        button { font-family: inherit; cursor: pointer; border: none; background: none; font-size: inherit; }
        .container { width: 100%; max-width: var(--container-max); margin: 0 auto; padding: 0 1.5rem; }
        .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

        /* ========================================
           Buttons
           ======================================== */
        .btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.875rem 1.75rem; border-radius: var(--radius-md); font-weight: 500; font-size: 0.9375rem; transition: all var(--transition-fast); border: 2px solid transparent; white-space: nowrap; }
        .btn--primary { background: var(--color-brand-primary); color: #fff; border-color: var(--color-brand-primary); }
        .btn--primary:hover { background: var(--color-brand-dark); border-color: var(--color-brand-dark); color: #fff; text-decoration: none; transform: translateY(-1px); box-shadow: var(--shadow-md); }
        .btn--secondary { background: transparent; color: var(--color-brand-primary); border-color: var(--color-brand-primary); }
        .btn--secondary:hover { background: var(--color-brand-primary); color: #fff; text-decoration: none; }
        .btn--outline { background: transparent; color: var(--color-text-primary); border-color: var(--color-border); }
        .btn--outline:hover { border-color: var(--color-text-muted); color: var(--color-text-primary); text-decoration: none; }
        .btn--sm { padding: 0.5rem 1rem; font-size: 0.875rem; }

        /* ========================================
           Header & Navigation
           ======================================== */
        .site-header { position: sticky; top: 0; z-index: 100; height: var(--header-height); background: rgba(250, 248, 245, 0.9); backdrop-filter: blur(12px); border-bottom: 1px solid var(--color-border); }
        .header-inner { display: flex; align-items: center; justify-content: space-between; height: 100%; gap: 2rem; }
        .logo { display: flex; align-items: center; gap: 0.75rem; text-decoration: none; color: var(--color-text-primary); flex-shrink: 0; }
        .logo img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; }
        .logo-text { display: flex; flex-direction: column; line-height: 1.1; }
        .logo-name { font-family: 'Playfair Display', serif; font-size: 1.25rem; font-weight: 700; color: var(--color-text-primary); }
        .logo-tagline { font-size: 0.625rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--color-text-muted); font-family: 'Inter', sans-serif; font-weight: 500; }

        .main-nav { display: none; }
        .main-nav__list { display: flex; gap: 0.5rem; align-items: center; }
        .main-nav__link { display: block; padding: 0.5rem 1rem; font-size: 0.9rem; font-weight: 500; color: var(--color-text-secondary); border-radius: var(--radius-sm); transition: all var(--transition-fast); }
        .main-nav__link:hover, .main-nav__link[aria-current="page"] { color: var(--color-brand-primary); background: rgba(160, 82, 45, 0.08); text-decoration: none; }
        .nav-cta { margin-left: 0.5rem; }

        .mobile-menu-btn { display: flex; flex-direction: column; gap: 5px; width: 28px; height: 22px; justify-content: center; padding: 0; }
        .mobile-menu-btn span { display: block; height: 2px; background: var(--color-text-primary); border-radius: 2px; transition: var(--transition-fast); }
        .mobile-menu-btn[aria-expanded="true"] span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
        .mobile-menu-btn[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
        .mobile-menu-btn[aria-expanded="true"] span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

        /* ========================================
           Hero Section
           ======================================== */
        .hero { position: relative; padding: 6rem 0; background: linear-gradient(135deg, rgba(160, 82, 45, 0.05) 0%, rgba(107, 142, 90, 0.05) 100%); overflow: hidden; }
        .hero::before { content: ''; position: absolute; inset: 0; background-image: url("https://picsum.photos/seed/hero-bg/1920/1080?grayscale&blur=3"); background-size: cover; background-position: center; opacity: 0.08; z-index: 0; }
        .hero-content { position: relative; z-index: 1; max-width: 720px; }
        .hero-badge { display: inline-block; padding: 0.375rem 1rem; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 100px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-brand-primary); margin-bottom: 1.5rem; box-shadow: var(--shadow-sm); }
        .hero-title { margin-bottom: 1.5rem; }
        .hero-text { font-size: 1.125rem; color: var(--color-text-secondary); margin-bottom: 2rem; max-width: 55ch; }
        .hero-actions { display: flex; flex-wrap: wrap; gap: 1rem; }
        .hero-stats { display: flex; flex-wrap: wrap; gap: 2.5rem; margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--color-border); }
        .stat-item { display: flex; flex-direction: column; }
        .stat-value { font-family: 'Playfair Display', serif; font-size: 2rem; font-weight: 700; color: var(--color-brand-primary); line-height: 1; }
        .stat-label { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-text-muted); font-weight: 500; }

        /* ========================================
           Layout: Main + Sidebar
           ======================================== */
        .main-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; padding: 5rem 0; }
        @media (min-width: 992px) { .main-grid { grid-template-columns: 1fr 320px; } }

        /* ========================================
           Section: Categories Grid
           ======================================== */
        .section-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 2.5rem; }
        .section-title-group { max-width: 60ch; }
        .section-subtitle { color: var(--color-text-muted); font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.1em; font-weight: 500; margin-bottom: 0.5rem; display: block; }
        .categories-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; }
        .category-card { background: var(--color-surface); border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--color-border); transition: transform var(--transition-normal), box-shadow var(--transition-normal); }
        .category-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); text-decoration: none; }
        .category-card__image { aspect-ratio: 16/10; object-fit: cover; width: 100%; }
        .category-card__body { padding: 1.5rem; }
        .category-card__tag { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-accent); background: rgba(107, 142, 90, 0.1); padding: 0.25rem 0.5rem; border-radius: var(--radius-sm); display: inline-block; margin-bottom: 0.75rem; }
        .category-card__title { font-size: 1.125rem; margin-bottom: 0.5rem; color: var(--color-text-primary); transition: color var(--transition-fast); }
        .category-card:hover .category-card__title { color: var(--color-brand-primary); }
        .category-card__desc { font-size: 0.875rem; color: var(--color-text-secondary); margin-bottom: 1rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
        .category-card__link { font-size: 0.875rem; font-weight: 500; display: inline-flex; align-items: center; gap: 0.35rem; color: var(--color-brand-primary); }
        .category-card__link svg { transition: transform var(--transition-fast); }
        .category-card:hover .category-card__link svg { transform: translateX(4px); }

        /* ========================================
           Section: Interactive Pairing Tool
           ======================================== */
        .pairing-tool { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 2.5rem; margin-top: 3rem; }
        .pairing-tool__header { text-align: center; margin-bottom: 2rem; }
        .pairing-tool__controls { display: grid; grid-template-columns: 1fr; gap: 1.5rem; margin-bottom: 2rem; }
        @media (min-width: 600px) { .pairing-tool__controls { grid-template-columns: repeat(2, 1fr); } }
        .form-group label { display: block; font-size: 0.875rem; font-weight: 500; color: var(--color-text-primary); margin-bottom: 0.5rem; }
        .custom-select { position: relative; width: 100%; }
        .custom-select select { width: 100%; padding: 0.875rem 3rem 0.875rem 1rem; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-bg); color: var(--color-text-primary); font-family: inherit; font-size: 1rem; appearance: none; cursor: pointer; transition: border-color var(--transition-fast), box-shadow var(--transition-fast); }
        .custom-select select:focus { outline: none; border-color: var(--color-brand-primary); box-shadow: 0 0 0 3px rgba(160, 82, 45, 0.15); }
        .custom-select::after { content: '\25BE'; position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); pointer-events: none; color: var(--color-text-muted); font-size: 0.75rem; }
        .pairing-result { background: var(--color-bg); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 1.5rem; min-height: 180px; transition: all var(--transition-normal); opacity: 0.6; }
        .pairing-result.active { opacity: 1; }
        .pairing-result__placeholder { color: var(--color-text-muted); text-align: center; font-style: italic; }
        .pairing-result__content h4 { font-size: 1.125rem; margin-bottom: 0.5rem; color: var(--color-brand-primary); }
        .pairing-result__content p { font-size: 0.9375rem; margin-bottom: 1rem; }
        .pairing-result__meta { display: flex; flex-wrap: wrap; gap: 0.5rem; font-size: 0.75rem; }
        .pairing-tag { background: var(--color-surface); border: 1px solid var(--color-border); padding: 0.25rem 0.75rem; border-radius: 100px; color: var(--color-text-secondary); }

        /* ========================================
           Section: Editorial / Articles
           ======================================== */
        .editorial-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 2rem; }
        .article-card { background: var(--color-surface); border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--color-border); display: flex; flex-direction: column; transition: box-shadow var(--transition-normal); }
        .article-card:hover { box-shadow: var(--shadow-lg); }
        .article-card__image { aspect-ratio: 16/9; object-fit: cover; width: 100%; }
        .article-card__body { padding: 1.5rem; display: flex; flex-direction: column; flex-grow: 1; }
        .article-card__meta { display: flex; flex-wrap: wrap; gap: 1rem; font-size: 0.75rem; color: var(--color-text-muted); margin-bottom: 0.75rem; }
        .article-card__meta time { font-weight: 500; }
        .article-card__category { color: var(--color-accent); font-weight: 600; text-transform: uppercase; letter-spacing: 0.02em; }
        .article-card__title { font-size: 1.125rem; line-height: 1.4; margin-bottom: 0.75rem; transition: color var(--transition-fast); }
        .article-card:hover .article-card__title { color: var(--color-brand-primary); }
        .article-card__excerpt { font-size: 0.9375rem; color: var(--color-text-secondary); flex-grow: 1; margin-bottom: 1.25rem; }
        .article-card__footer { display: flex; align-items: center; gap: 1rem; padding-top: 1rem; border-top: 1px solid var(--color-border); }
        .author-avatar { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; }
        .author-name { font-weight: 500; font-size: 0.875rem; color: var(--color-text-primary); }
        .author-name:hover { color: var(--color-brand-primary); }

        /* ========================================
           Sidebar Widgets
           ======================================== */
        .sidebar { position: sticky; top: calc(var(--header-height) + 2rem); height: fit-content; }
        .widget { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 1.5rem; margin-bottom: 1.5rem; }
        .widget-title { font-size: 1rem; font-weight: 600; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--color-border); display: flex; align-items: center; gap: 0.5rem; }
        .widget-title svg { color: var(--color-brand-primary); }
        .trending-list { display: flex; flex-direction: column; gap: 1rem; }
        .trending-item { display: flex; gap: 1rem; text-decoration: none; color: inherit; transition: opacity var(--transition-fast); }
        .trending-item:hover { opacity: 0.7; text-decoration: none; }
        .trending-item__img { width: 80px; height: 80px; border-radius: var(--radius-md); object-fit: cover; flex-shrink: 0; }
        .trending-item__content { display: flex; flex-direction: column; justify-content: center; min-width: 0; }
        .trending-item__rank { font-family: 'Playfair Display', serif; font-size: 1.5rem; font-weight: 700; color: var(--color-text-muted); line-height: 1; margin-bottom: 0.25rem; }
        .trending-item__title { font-size: 0.875rem; font-weight: 500; color: var(--color-text-primary); margin-bottom: 0.25rem; }
        .trending-item__meta { font-size: 0.75rem; color: var(--color-text-muted); }
        .newsletter-form { display: flex; flex-direction: column; gap: 0.75rem; }
        .newsletter-form .form-group { display: flex; flex-direction: column; gap: 0.35rem; }
        .newsletter-form input { padding: 0.875rem 1rem; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-bg); font-family: inherit; font-size: 0.9375rem; transition: border-color var(--transition-fast), box-shadow var(--transition-fast); }
        .newsletter-form input:focus { outline: none; border-color: var(--color-brand-primary); box-shadow: 0 0 0 3px rgba(160, 82, 45, 0.15); }
        .newsletter-form .btn { width: 100%; }
        .newsletter-note { font-size: 0.7rem; color: var(--color-text-muted); text-align: center; }

        /* ========================================
           Testimonials
           ======================================== */
        .testimonials { background: var(--color-text-primary); color: #fff; padding: 5rem 0; }
        .testimonials .section-title-group h2 { color: #fff; }
        .testimonials .section-subtitle { color: rgba(255,255,255,0.5); }
        .testimonials-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.5rem; }
        .testimonial-card { background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); border-radius: var(--radius-lg); padding: 2rem; display: flex; flex-direction: column; }
        .testimonial-card__quote { font-family: 'Playfair Display', serif; font-style: italic; font-size: 1.125rem; line-height: 1.6; color: rgba(255,255,255,0.9); margin-bottom: 1.5rem; flex-grow: 1; }
        .testimonial-card__author { display: flex; align-items: center; gap: 1rem; }
        .testimonial-card__avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; border: 2px solid var(--color-brand-light); }
        .testimonial-card__name { font-weight: 600; font-size: 0.9375rem; }
        .testimonial-card__role { font-size: 0.8rem; color: rgba(255,255,255,0.5); }

        /* ========================================
           FAQ Accordion
           ======================================== */
        .faq { padding: 5rem 0; }
        .faq-list { max-width: 800px; margin: 0 auto; display: flex; flex-direction: column; gap: 0.75rem; }
        .faq-item { border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); overflow: hidden; }
        .faq-question { width: 100%; display: flex; justify-content: space-between; align-items: center; padding: 1.25rem 1.5rem; text-align: left; font-family: 'Playfair Display', serif; font-size: 1.125rem; font-weight: 500; color: var(--color-text-primary); background: none; gap: 1rem; }
        .faq-question:hover { color: var(--color-brand-primary); }
        .faq-question[aria-expanded="true"] { color: var(--color-brand-primary); background: rgba(160, 82, 45, 0.04); }
        .faq-icon { flex-shrink: 0; width: 24px; height: 24px; color: var(--color-brand-primary); transition: transform var(--transition-fast); }
        .faq-question[aria-expanded="true"] .faq-icon { transform: rotate(180deg); }
        .faq-answer { max-height: 0; overflow: hidden; transition: max-height var(--transition-normal), padding var(--transition-normal); }
        .faq-answer.open { max-height: 500px; padding: 0 1.5rem 1.5rem; }
        .faq-answer p { color: var(--color-text-secondary); margin-bottom: 0; }

        /* ========================================
           Newsletter Section
           ======================================== */
        .newsletter-section { background: var(--color-brand-primary); color: #fff; padding: 5rem 0; text-align: center; }
        .newsletter-section h2 { color: #fff; max-width: 600px; margin: 0 auto 1rem; }
        .newsletter-section .lead { color: rgba(255,255,255,0.8); max-width: 500px; margin: 0 auto 2rem; font-size: 1.125rem; }
        .newsletter-section form { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; max-width: 500px; margin: 0 auto; }
        .newsletter-section input { flex-grow: 1; min-width: 250px; padding: 1rem 1.25rem; border-radius: var(--radius-md); border: none; font-family: inherit; font-size: 1rem; background: #fff; color: var(--color-text-primary); }
        .newsletter-section input:focus { outline: none; box-shadow: 0 0 0 3px rgba(255,255,255,0.3); }
        .newsletter-section .btn--primary { background: var(--color-text-primary); border-color: var(--color-text-primary); padding: 1rem 2rem; }
        .newsletter-section .btn--primary:hover { background: #fff; color: var(--color-brand-primary); }

        /* ========================================
           Footer
           ======================================== */
        .site-footer { background: var(--color-text-primary); color: rgba(255,255,255,0.7); padding: 4rem 0 2rem; }
        .footer-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; margin-bottom: 3rem; }
        @media (min-width: 600px) { .footer-grid { grid-template-columns: repeat(2, 1fr); } }
        @media (min-width: 992px) { .footer-grid { grid-template-columns: 2fr repeat(3, 1fr); } }
        .footer-brand .logo { margin-bottom: 1rem; }
        .footer-brand p { font-size: 0.9375rem; color: rgba(255,255,255,0.6); max-width: 300px; }
        .footer-social { display: flex; gap: 1rem; margin-top: 1.5rem; }
        .footer-social a { width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,0.08); display: flex; align-items: center; justify-content: center; color: #fff; transition: all var(--transition-fast); }
        .footer-social a:hover { background: var(--color-brand-primary); color: #fff; text-decoration: none; transform: translateY(-2px); }
        .footer-col h4 { color: #fff; font-size: 0.875rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 1.25rem; font-family: 'Inter', sans-serif; }
        .footer-links { display: flex; flex-direction: column; gap: 0.625rem; }
        .footer-links a { color: rgba(255,255,255,0.7); font-size: 0.9375rem; transition: color var(--transition-fast); }
        .footer-links a:hover { color: var(--color-brand-light); text-decoration: none; }
        .footer-bottom { border-top: 1px solid rgba(255,255,255,0.1); padding-top: 2rem; display: flex; flex-direction: column; align-items: center; gap: 1rem; text-align: center; font-size: 0.875rem; }
        @media (min-width: 600px) { .footer-bottom { flex-direction: row; justify-content: space-between; } }
        .footer-legal { display: flex; gap: 1.5rem; }
        .footer-legal a { color: rgba(255,255,255,0.5); font-size: 0.8rem; }
        .footer-legal a:hover { color: #fff; }

        /* ========================================
           Animations & Utilities
           ======================================== */
        .fade-in { opacity: 0; transform: translateY(20px); transition: opacity 0.6s ease, transform 0.6s ease; }
        .fade-in.visible { opacity: 1; transform: translateY(0); }
        .stagger-1 { transition-delay: 100ms; }
        .stagger-2 { transition-delay: 200ms; }
        .stagger-3 { transition-delay: 300ms; }
        .stagger-4 { transition-delay: 400ms; }

        /* Mobile Nav Overlay */
        .mobile-nav-overlay { position: fixed; inset: 0; background: var(--color-bg); z-index: 99; transform: translateX(100%); transition: transform 0.35s ease; display: flex; flex-direction: column; padding: 6rem 1.5rem 2rem; overflow-y: auto; }
        .mobile-nav-overlay.open { transform: translateX(0); }
        .mobile-nav-overlay .main-nav__list { flex-direction: column; width: 100%; gap: 0; }
        .mobile-nav-overlay .main-nav__link { padding: 1rem 0; font-size: 1.125rem; border-bottom: 1px solid var(--color-border); border-radius: 0; }
        .mobile-nav-overlay .nav-cta { margin: 1.5rem 0 0; width: 100%; text-align: center; }

        /* Focus Visible */
        :focus-visible { outline: 2px solid var(--color-brand-primary); outline-offset: 2px; border-radius: var(--radius-sm); }
    </style>
</head>
<body>

    <!-- ========================================
         HEADER
         ======================================== -->
    <header class="site-header" role="banner">
        <div class="container header-inner">
            <a href="#" class="logo" aria-label="Savor & Sage Home">
                <img src="https://placehold.co/120x120/5D4037/FFFFFF?text=S%26S&font=playfair+display" alt="" aria-hidden="true" loading="lazy">
                <span class="logo-text">
                    <span class="logo-name">Savor & Sage</span>
                    <span class="logo-tagline">Culinary Craft for Curious Palates</span>
                </span>
            </a>

            <nav class="main-nav" id="mainNav" role="navigation" aria-label="Main navigation">
                <ul class="main-nav__list">
                    <li><a href="#about" class="main-nav__link">About</a></li>
                    <li><a href="#recipes" class="main-nav__link" aria-current="page">Recipes</a></li>
                    <li><a href="#guides" class="main-nav__link">Guides</a></li>
                    <li><a href="#nutrition" class="main-nav__link">Nutrition</a></li>
                    <li><a href="#pairing" class="main-nav__link">Pairings</a></li>
                    <li><a href="#contact" class="main-nav__link">Contact</a></li>
                    <li class="nav-cta"><a href="#newsletter" class="btn btn--primary btn--sm">Subscribe</a></li>
                </ul>
            </nav>

            <button class="mobile-menu-btn" id="mobileMenuBtn" aria-expanded="false" aria-controls="mobileNav" aria-label="Toggle navigation menu">
                <span></span><span></span><span></span>
            </button>
        </div>
    </header>

    <!-- Mobile Nav Overlay -->
    <div class="mobile-nav-overlay" id="mobileNav" role="dialog" aria-modal="true" aria-label="Menu">
        <nav class="main-nav">
            <ul class="main-nav__list">
                <li><a href="#about" class="main-nav__link">About</a></li>
                <li><a href="#recipes" class="main-nav__link">Recipes</a></li>
                <li><a href="#guides" class="main-nav__link">Guides</a></li>
                <li><a href="#nutrition" class="main-nav__link">Nutrition</a></li>
                <li><a href="#pairing" class="main-nav__link">Pairings</a></li>
                <li><a href="#contact" class="main-nav__link">Contact</a></li>
                <li class="nav-cta"><a href="#newsletter" class="btn btn--primary">Subscribe to Newsletter</a></li>
            </ul>
        </nav>
    </div>

    <main id="mainContent">
        <!-- ========================================
             HERO SECTION
             ======================================== -->
        <section class="hero" aria-labelledby="hero-title">
            <div class="container hero-content fade-in">
                <span class="hero-badge">Est. 2024 • Independent Editorial</span>
                <h1 id="hero-title">Master the Art of Flavor, Technique & Terroir</h1>
                <p class="hero-text">From the science of the Maillard reaction to the nuance of natural wine terroir, we bridge the gap between professional kitchen rigor and home cook curiosity. Deep dives, tested recipes, and unpretentious expertise.</p>
                <div class="hero-actions">
                    <a href="#recipes" class="btn btn--primary">Explore Recipes</a>
                    <a href="#pairing" class="btn btn--secondary">Try Pairing Finder</a>
                </div>
                <div class="hero-stats">
                    <div class="stat-item"><span class="stat-value">420+</span><span class="stat-label">Tested Recipes</span></div>
                    <div class="stat-item"><span class="stat-value">85</span><span class="stat-label">Wine Profiles</span></div>
                    <div class="stat-item"><span class="stat-value">12K</span><span class="stat-label">Subscribers</span></div>
                    <div class="stat-item"><span class="stat-value">18</span><span class="stat-label">Cuisines Covered</span></div>
                </div>
            </div>
        </section>

        <!-- ========================================
             MAIN GRID (Content + Sidebar)
             ======================================== -->
        <div class="main-grid">
            <!-- MAIN CONTENT -->
            <div class="main-content">

                <!-- Section: Featured Categories -->
                <section id="recipes" class="fade-in" aria-labelledby="cat-heading">
                    <header class="section-header">
                        <div class="section-title-group">
                            <span class="section-subtitle">Browse Categories</span>
                            <h2 id="cat-heading">Curated Culinary Collections</h2>
                        </div>
                        <a href="#all-recipes" class="btn btn--outline btn--sm">View All Categories</a>
                    </header>
                    <div class="categories-grid">
                        <!-- Card 1 -->
                        <article class="category-card fade-in stagger-1">
                            <img src="https://picsum.photos/seed/techniques/600/400" alt="" class="category-card__image" loading="lazy">
                            <div class="category-card__body">
                                <span class="category-card__tag">Fundamentals</span>
                                <h3 class="category-card__title">Essential Techniques</h3>
                                <p class="category-card__desc">Master the building blocks of great cooking. From perfecting your mise en place and knife skills to understanding the thermodynamics of sautéing, braising, and roasting.</p>
                                <a href="#" class="category-card__link">Learn Techniques <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
                            </div>
                        </article>
                        <!-- Card 2 -->
                        <article class="category-card fade-in stagger-2">
                            <img src="https://picsum.photos/seed/global/600/400" alt="" class="category-card__image" loading="lazy">
                            <div class="category-card__body">
                                <span class="category-card__tag">Global Cuisine</span>
                                <h3 class="category-card__title">Regional Deep Dives</h3>
                                <p class="category-card__desc">Explore the terroir of Oaxacan moles, the umami depth of Japanese dashi, and the bright acidity of West African peanut stews. Authentic context for global flavors.</p>
                                <a href="#" class="category-card__link">Explore Regions <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
                            </div>
                        </article>
                        <!-- Card 3 -->
                        <article class="category-card fade-in stagger-3">
                            <img src="https://picsum.photos/seed/baking/600/400" alt="" class="category-card__image" loading="lazy">
                            <div class="category-card__body">
                                <span class="category-card__tag">Pastry & Bread</span>
                                <h3 class="category-card__title">The Baker's Percentage</h3>
                                <p class="category-card__desc">Demystify hydration levels, fermentation windows, and gluten development. Whether it's a crusty sourdough boule or a laminated croissant, precision yields perfection.</p>
                                <a href="#" class="category-card__link">Start Baking <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
                            </div>
                        </article>
                        <!-- Card 4 -->
                        <article class="category-card fade-in stagger-4">
                            <img src="https://picsum.photos/seed/drinks/600/400" alt="" class="category-card__image" loading="lazy">
                            <div class="category-card__body">
                                <span class="category-card__tag">Beverages</span>
                                <h3 class="category-card__title">Cellar & Cocktail</h3>
                                <p class="category-card__desc">Navigate natural wine movements, spirits taxonomy, and the chemistry of cocktail dilution. Pairing logic that goes beyond "red with meat, white with fish."</p>
                                <a href="#" class="category-card__link">Read Pairings <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
                            </div>
                        </article>
                    </div>
                </section>

                <!-- Section: Interactive Pairing Tool -->
                <section id="pairing" class="fade-in" aria-labelledby="pairing-heading">
                    <div class="pairing-tool">
                        <header class="pairing-tool__header">
                            <span class="section-subtitle" style="color: var(--color-accent);">Interactive Tool</span>
                            <h2 id="pairing-heading">Wine & Dish Pairing Finder</h2>
                            <p style="color: var(--color-text-secondary);">Select a protein and preparation method to discover curated wine matches with tasting notes and serving logic.</p>
                        </header>
                        <div class="pairing-tool__controls">
                            <div class="form-group">
                                <label for="proteinSelect">Primary Protein / Base</label>
                                <div class="custom-select">
                                    <select id="proteinSelect" aria-label="Select protein">
                                        <option value="">Choose a protein...</option>
                                        <option value="beef">Beef (Grass-fed, Ribeye, Brisket)</option>
                                        <option value="lamb">Lamb (Rack, Shank, Ground)</option>
                                        <option value="poultry">Poultry (Chicken, Duck, Turkey)</option>
                                        <option value="pork">Pork (Tenderloin, Belly, Shoulder)</option>
                                        <option value="fish-fatty">Fatty Fish (Salmon, Mackerel, Tuna)</option>
                                        <option value="fish-lean">Lean Fish (Cod, Halibut, Snapper)</option>
                                        <option value="shellfish">Shellfish (Scallops, Lobster, Oysters)</option>
                                        <option value="mushroom">Mushrooms / Plant-Based (Portobello, Tempeh)</option>
                                        <option value="pasta">Pasta & Grains (Ragu, Carbonara, Risotto)</option>
                                    </select>
                                </div>
                            </div>
                            <div class="form-group">
                                <label for="prepSelect">Preparation & Sauce Profile</label>
                                <div class="custom-select">
                                    <select id="prepSelect" aria-label="Select preparation method" disabled>
                                        <option value="">Select protein first</option>
                                    </select>
                                </div>
                            </div>
                        </div>
                        <div class="pairing-result" id="pairingResult" aria-live="polite">
                            <div class="pairing-result__placeholder">Select a protein and preparation above to reveal your pairing.</div>
                        </div>
                    </div>
                </section>

                <!-- Section: Editorial Articles -->
                <section id="guides" class="fade-in" aria-labelledby="editorial-heading">
                    <header class="section-header">
                        <div class="section-title-group">
                            <span class="section-subtitle">From the Test Kitchen</span>
                            <h2 id="editorial-heading">Essays, Guides & Investigations</h2>
                        </div>
                        <a href="#all-articles" class="btn btn--outline btn--sm">Read All Stories</a>
                    </header>
                    <div class="editorial-grid">
                        <!-- Article 1 -->
                        <article class="article-card fade-in stagger-1">
                            <img src="https://picsum.photos/seed/maillard/400/300" alt="Steak searing in cast iron pan" class="article-card__image" loading="lazy">
                            <div class="article-card__body">
                                <div class="article-card__meta">
                                    <span class="article-card__category">Technique</span>
                                    <time datetime="2024-10-15">Oct 15, 2024</time>
                                    <span>8 min read</span>
                                </div>
                                <h3 class="article-card__title">The Maillard Reaction: Beyond Browning</h3>
                                <p class="article-card__excerpt">We dissect the complex cascade of amino acid and reducing sugar interactions. Learn why surface moisture is the enemy of flavor development and how to manipulate pH for deeper crusts on everything from steak to roasted vegetables.</p>
                                <footer class="article-card__footer">
                                    <img src="https://i.pravatar.cc/150?u=chefmarco" alt="" class="author-avatar" loading="lazy">
                                    <span class="author-name">Marco Rossi</span>
                                </footer>
                            </div>
                        </article>
                        <!-- Article 2 -->
                        <article class="article-card fade-in stagger-2">
                            <img src="https://picsum.photos/seed/fermentation/400/300" alt="Jars of fermenting vegetables" class="article-card__image" loading="lazy">
                            <div class="article-card__body">
                                <div class="article-card__meta">
                                    <span class="article-card__category">Science</span>
                                    <time datetime="2024-10-10">Oct 10, 2024</time>
                                    <span>12 min read</span>
                                </div>
                                <h3 class="article-card__title">Lacto-Fermentation: Controlling the Brine</h3>
                                <p class="article-card__excerpt">A technical guide to salinity percentages, temperature curves, and Leuconostoc mesenteroides succession. Stop guessing with "tablespoon of salt" recipes and start calculating 2.5% brine ratios for consistent, safe, crisp pickles every time.</p>
                                <footer class="article-card__footer">
                                    <img src="https://i.pravatar.cc/150?u=drlin" alt="" class="author-avatar" loading="lazy">
                                    <span class="author-name">Dr. Elena Lin</span>
                                </footer>
                            </div>
                        </article>
                        <!-- Article 3 -->
                        <article class="article-card fade-in stagger-3">
                            <img src="https://picsum.photos/seed/wine/400/300" alt="Wine glasses with different varietals" class="article-card__image" loading="lazy">
                            <div class="article-card__body">
                                <div class="article-card__meta">
                                    <span class="article-card__category">Pairing</span>
                                    <time datetime="2024-10-05">Oct 5, 2024</time>
                                    <span>10 min read</span>
                                </div>
                                <h3 class="article-card__title">High Acid Whites & High Fat Foods: The Chemistry</h3>
                                <p class="article-card__excerpt">Why a Muscadet eviscerates the richness of beurre blanc, and why an oaked Chardonnay fails with vinaigrette. We explore the polarity of acid cutting lipid chains and the role of tannin in protein binding.</p>
                                <footer class="article-card__footer">
                                    <img src="https://i.pravatar.cc/150?u=sommsophia" alt="" class="author-avatar" loading="lazy">
                                    <span class="author-name">Sophia Varela</span>
                                </footer>
                            </div>
                        </article>
                    </div>
                </section>

                <!-- Section: Nutrition Focus -->
                <section id="nutrition" class="fade-in" aria-labelledby="nutrition-heading" style="margin-top: 3rem;">
                    <header class="section-header">
                        <div class="section-title-group">
                            <span class="section-subtitle">Evidence-Based</span>
                            <h2 id="nutrition-heading">Nutrition Science & Application</h2>
                        </div>
                    </header>
                    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: start;">
                        <div>
                            <img src="https://picsum.photos/seed/nutrition/800/600" alt="Colorful nutrient-dense meal prep bowls" class="fade-in stagger-1" loading="lazy" style="border-radius: var(--radius-lg);">
                        </div>
                        <div class="fade-in stagger-2">
                            <h3>Bioavailability Over Buzzwords</h3>
                            <p>We move past marketing terms like "superfood" and "clean label" to focus on nutrient density, bioavailability, and metabolic context. Understanding the difference between heme and non-heme iron absorption, or why fat-soluble vitamins (A, D, E, K) require dietary lipid co-factors, fundamentally changes how you plate a meal.</p>
                            <p>Our nutrition section translates peer-reviewed literature into actionable kitchen strategy. Whether you are managing inflammation through omega-3 to omega-6 ratios, optimizing gut microbiome diversity via prebiotic fiber variety, or navigating athletic performance nutrition, we provide the biochemical "why" behind the culinary "how."</p>
                            <h4 style="margin-top: 1.5rem; margin-bottom: 0.5rem;">Current Series:</h4>
                            <ul style="list-style: disc; padding-left: 1.5rem; color: var(--color-text-secondary);">
                                <li style="margin-bottom: 0.5rem;"><strong>The Protein Leverage Hypothesis:</strong> Satiety signaling and muscle protein synthesis thresholds.</li>
                                <li style="margin-bottom: 0.5rem;"><strong>Polyphenol Preservation:</strong> Cooking methods that retain vs. destroy antioxidant capacity.</li>
                                <li style="margin-bottom: 0.5rem;"><strong>Electrolyte Balance:</strong> Beyond sodium—potassium, magnesium, and cellular hydration.</li>
                            </ul>
                            <a href="#" class="btn btn--primary" style="margin-top: 1.5rem;">Read Nutrition Guides</a>
                        </div>
                    </div>
                </section>

                <!-- Section: Testimonials -->
                <section class="testimonials fade-in" aria-labelledby="testimonial-heading">
                    <div class="container">
                        <header class="section-header" style="margin-bottom: 3rem;">
                            <div class="section-title-group">
                                <span class="section-subtitle">Trusted By Professionals</span>
                                <h2 id="testimonial-heading">Voices from the Kitchen & Cellar</h2>
                            </div>
                        </header>
                        <div class="testimonials-grid">
                            <blockquote class="testimonial-card">
                                <p class="testimonial-card__quote">"Savor & Sage is the rare publication that respects the intelligence of the cook. Their piece on gluten hydration curves changed how I formulate doughs for our bakery program. It's technical without being academic, practical without being simplistic."</p>
                                <footer class="testimonial-card__author">
                                    <img src="https://i.pravatar.cc/150?u=chefjames" alt="" class="testimonial-card__avatar" loading="lazy">
                                    <div><strong class="testimonial-card__name">James Beard Award Winner</strong><br><span class="testimonial-card__role">Executive Chef, Hearth & Grain</span></div>
                                </footer>
                            </blockquote>
                            <blockquote class="testimonial-card">
                                <p class="testimonial-card__quote">"Finally, a wine resource that explains *structure* over *scores*. The pairing finder tool is surprisingly accurate for off-menu specials. I've sent my floor staff here to study the acid/tannin/alcohol framework before service."</p>
                                <footer class="testimonial-card__author">
                                    <img src="https://i.pravatar.cc/150?u=sommsarah" alt="" class="testimonial-card__avatar" loading="lazy">
                                    <div><strong class="testimonial-card__name">Sarah Jenkins, MS</strong><br><span class="testimonial-card__role">Master Sommelier, The Vault Restaurant</span></div>
                                </footer>
                            </blockquote>
                            <blockquote class="testimonial-card">
                                <p class="testimonial-card__quote">"As a dietitian, I appreciate the nuance. They don't fear-monger seed oils nor glorify bone broth. The article on Advanced Glycation End-products (AGEs) in high-heat cooking was the best patient-facing summary I've seen."</p>
                                <footer class="testimonial-card__author">
                                    <img src="https://i.pravatar.cc/150?u=rddavid" alt="" class="testimonial-card__avatar" loading="lazy">
                                    <div><strong class="testimonial-card__name">David Chen, RD</strong><br><span class="testimonial-card__role">Clinical Nutritionist, Metabolic Health Clinic</span></div>
                                </footer>
                            </blockquote>
                        </div>
                    </div>
                </section>

                <!-- Section: FAQ -->
                <section class="faq fade-in" aria-labelledby="faq-heading">
                    <div class="container">
                        <header class="section-header" style="margin-bottom: 2.5rem; justify-content: center; text-align: center;">
                            <div class="section-title-group">
                                <span class="section-subtitle">Your Questions</span>
                                <h2 id="faq-heading">Frequently Asked Questions</h2>
                            </div>
                        </header>
                        <div class="faq-list">
                            <details class="faq-item">
                                <summary class="faq-question" aria-expanded="false">
                                    Are your recipes tested for home ovens and equipment?
                                    <svg class="faq-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                                </summary>
                                <div class="faq-answer">
                                    <p>Absolutely. Every recipe undergoes a minimum of three test cycles in a standard residential kitchen (30-inch range, conventional oven, lightweight cookware). We document altitude adjustments, convection vs. conventional differentials, and common substitution failures so you know the guardrails before you start.</p>
                                </div>
                            </details>
                            <details class="faq-item">
                                <summary class="faq-question" aria-expanded="false">
                                    How does the Wine Pairing Finder determine matches?
                                    <svg class="faq-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                                </summary>
                                <div class="faq-answer">
                                    <p>The tool uses a rule-based expert system modeling sommelier logic: it weighs protein weight, fat content, cooking method (Maillard intensity), sauce dominance (acid, fat, salt, sweet, bitter, umami), and bridge ingredients (herbs, mushrooms, citrus). It outputs wines with structural compatibility—acidity to cut fat, tannin to bind protein, sweetness to temper heat—rather than just varietal stereotypes.</p>
                                </div>
                            </details>
                            <details class="faq-item">
                                <summary class="faq-question" aria-expanded="false">
                                Can I submit a recipe or correction?
                                    <svg class="faq-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                                </summary>
                                <div class="faq-answer">
                                    <p>We welcome community contributions. Submissions go through our editorial pipeline: nutritional analysis, technique verification, and copy editing for voice consistency. Accepted contributors receive a byline, bio link, and honorarium. Corrections on published pieces are acknowledged publicly in our changelog. Visit the <a href="#contact">Contact</a> page for submission guidelines.</p>
                                </div>
                            </details>
                            <details class="faq-item">
                                <summary class="faq-question" aria-expanded="false">
                                    Is there a print version or PDF download option?
                                    <svg class="faq-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                                </summary>
                                <div class="faq-answer">
                                    <p>Currently, we are digital-first to maintain living documents—recipes update with errata, nutrition data reflects new studies, and pairing notes evolve with vintage variation. However, every article and recipe has a "Print/Export" button generating a clean, ad-free PDF optimized for kitchen use (large fonts, checkbox steps, ingredient scaling calculator).</p>
                                </div>
                            </details>
                        </div>
                    </div>
                </section>

            </div> <!-- End Main Content -->

            <!-- ========================================
                 SIDEBAR
                 ======================================== -->
            <aside class="sidebar" aria-label="Sidebar widgets">
                <!-- Widget: Trending Now -->
                <div class="widget fade-in">
                    <h3 class="widget-title"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 23 16"><polyline points="1 4 1 10 1 16"><polyline points="17 20 12 20 7 20"></polyline></svg> Trending This Week</h3>
                    <div class="trending-list">
                        <a href="#" class="trending-item">
                            <img src="https://picsum.photos/seed/trend1/160/160" alt="" class="trending-item__img" loading="lazy">
                            <div class="trending-item__content">
                                <span class="trending-item__rank">01</span>
                                <span class="trending-item__title">Sourdough Starter Maintenance: The 1:1:1 Protocol</span>
                                <span class="trending-item__meta">Technique • 12k views</span>
                            </div>
                        </a>
                        <a href="#" class="trending-item">
                            <img src="https://picsum.photos/seed/trend2/160/160" alt="" class="trending-item__img" loading="lazy">
                            <div class="trending-item__content">
                                <span class="trending-item__rank">02</span>
                                <span class="trending-item__title">Natural Wine 101: Volatile Acidity Explained</span>
                                <span class="trending-item__meta">Beverage • 9.4k views</span>
                            </div>
                        </a>
                        <a href="#" class="trending-item">
                            <img src="https://picsum.photos/seed/trend3/160/160" alt="" class="trending-item__img" loading="lazy">
                            <div class="trending-item__content">
                                <span class="trending-item__rank">03</span>
                                <span class="trending-item__title">Knife Skills: The Tourne Cut & Why It Matters</span>
                                <span class="trending-item__meta">Fundamentals • 8.1k views</span>
                            </div>
                        </a>
                        <a href="#" class="trending-item">
                            <img src="https://picsum.photos/seed/trend4/160/160" alt="" class="trending-item__img" loading="lazy">
                            <div class="trending-item__content">
                                <span class="trending-item__rank">04</span>
                                <span class="trending-item__title">Umami Bomb: Dry-Aged Mushroom Powder Recipe</span>
                                <span class="trending-item__meta">Pantry • 7.6k views</span>
                            </div>
                        </a>
                    </div>
                </div>

                <!-- Widget: Seasonal Produce -->
                <div class="widget fade-in stagger-1">
                    <h3 class="widget-title"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H7M17 19H7"></path></svg> Peak Season (October)</h3>
                    <ul style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem; font-size: 0.875rem; color: var(--color-text-secondary);">
                        <li style="padding: 0.5rem; background: var(--color-bg); border-radius: var(--radius-sm);">🍐 Pears (Bosc, Anjou)</li>
                        <li style="padding: 0.5rem; background: var(--color-bg); border-radius: var(--radius-sm);">🍎 Apples (Honeycrisp, Fuji)</li>
                        <li style="padding: 0.5rem; background: var(--color-bg); border-radius: var(--radius-sm);">🎃 Squash (Delicata, Kabocha)</li>
                        <li style="padding: 0.5rem; background: var(--color-bg); border-radius: var(--radius-sm);">🌰 Chestnuts</li>
                        <li style="padding: 0.5rem; background: var(--color-bg); border-radius: var(--radius-sm);">🍇 Grapes (Concord, Muscat)</li>
                        <li style="padding: 0.5rem; background: var(--color-bg); border-radius: var(--radius-sm);">🥬 Brussels Sprouts</li>
                        <li style="padding: 0.5rem; background: var(--color-bg); border-radius: var(--radius-sm);">🥕 Carrots (Storage Crop)</li>
                        <li style="padding: 0.5rem; background: var(--color-bg); border-radius: var(--radius-sm);">🍠 Sweet Potatoes</li>
                    </ul>
                    <a href="#" class="btn btn--outline btn--sm" style="margin-top: 1rem; width: 100%;">View Seasonal Recipes</a>
                </div>

                <!-- Widget: Newsletter -->
                <div class="widget fade-in stagger-2" id="newsletter">
                    <h3 class="widget-title"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="4" width="20" height="16" rx="2"></rect><path d="m22 7-10 5L2 7"></path></svg> The Mise en Place</h3>
                    <p style="font-size: 0.875rem; color: var(--color-text-secondary); margin-bottom: 1rem;">Weekly dispatch: One technique, one ingredient spotlight, one pairing. No spam. Unsubscribe anytime.</p>
                    <form class="newsletter-form" action="#" method="POST">
                        <div class="form-group">
                            <label for="email" class="visually-hidden">Email Address</label>
                            <input type="email" id="email" name="email" placeholder="your@email.com" required autocomplete="email">
                        </div>
                        <button type="submit" class="btn btn--primary">Subscribe</button>
                        <p class="newsletter-note">By subscribing you agree to our <a href="#" style="color: var(--color-brand-primary);">Privacy Policy</a>.</p>
                    </form>
                </div>
            </aside>
        </div> <!-- End Main Grid -->
    </main>

    <!-- ========================================
         NEWSLETTER SECTION (Full Width)
         ======================================== -->
    <section class="newsletter-section fade-in" aria-labelledby="nl-heading">
        <div class="container">
            <h2 id="nl-heading">Join 12,000+ Cooks & Sommeliers</h2>
            <p class="lead">The only newsletter that makes you a better cook before you finish your morning coffee.</p>
            <form action="#" method="POST">
                <input type="email" name="email" placeholder="Enter your email" required autocomplete="email" aria-label="Email address for newsletter">
                <button type="submit" class="btn btn--primary">Subscribe Free</button>
            </form>
        </div>
    </section>

    <!-- ========================================
         FOOTER
         ======================================== -->
    <footer class="site-footer" role="contentinfo" id="contact">
        <div class="container">
            <div class="footer-grid">
                <div class="footer-brand">
                    <a href="#" class="logo" aria-label="Savor & Sage Home">
                        <img src="https://placehold.co/120x120/5D4037/FFFFFF?text=S%26S&font=playfair+display" alt="" aria-hidden="true" loading="lazy">
                        <span class="logo-text">
                            <span class="logo-name" style="color: #fff;">Savor & Sage</span>
                            <span class="logo-tagline">Culinary Craft for Curious Palates</span>
                        </span>
                    </a>
                    <p>Independent journalism for the serious home cook and hospitality professional. We investigate the science, honor the tradition, and celebrate the craft.</p>
                    <div class="footer-social">
                        <a href="#" aria-label="Instagram"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" x2="17.51" y1="6.5" y2="6.5"></line></svg></a>
                        <a href="#" aria-label="Twitter / X"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"></path></svg></a>
                        <a href="#" aria-label="YouTube"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17"></path><path d="m10 15 5-3-5-3z"></path></svg></a>
                        <a href="#" aria-label="Newsletter"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="4" width="20" height="16" rx="2"></rect><path d="m22 7-10 5L2 7"></path></svg></a>
                    </div>
                </div>
                <nav class="footer-col" aria-label="Explore">
                    <h4>Explore</h4>
                    <ul class="footer-links">
                        <li><a href="#recipes">Recipe Library</a></li>
                        <li><a href="#guides">Technique Guides</a></li>
                        <li><a href="#pairing">Pairing Finder</a></li>
                        <li><a href="#nutrition">Nutrition Science</a></li>
                        <li><a href="#">Ingredient Encyclopedia</a></li>
                        <li><a href="#">Equipment Reviews</a></li>
                    </ul>
                </nav>
                <nav class="footer-col" aria-label="Company">
                    <h4>Company</h4>
                    <ul class="footer-links">
                        <li><a href="#about">Our Mission</a></li>
                        <li><a href="#">Editorial Standards</a></li>
                        <li><a href="#">Test Kitchen</a></li>
                        <li><a href="#">Careers</a></li>
                        <li><a href="#">Advertise</a></li>
                        <li><a href="#contact">Contact Us</a></li>
                    </ul>
                </nav>
                <nav class="footer-col" aria-label="Legal">
                    <h4>Legal</h4>
                    <ul class="footer-links">
                        <li><a href="#">Privacy Policy</a></li>
                        <li><a href="#">Terms of Service</a></li>
                        <li><a href="#">Cookie Policy</a></li>
                        <li><a href="#">Accessibility</a></li>
                        <li><a href="#">Corrections</a></li>
                    </ul>
                </nav>
            </div>
            <div class="footer-bottom">
                <p>&copy; 2024 Savor & Sage. All rights reserved. Crafted with precision.</p>
                <div class="footer-legal">
                    <a href="#">Privacy</a>
                    <a href="#">Terms</a>
                    <a href="#">Cookies</a>
                </div>
            </div>
        </div>
    </footer>

    <!-- ========================================
         JAVASCRIPT
         ======================================== -->
    <script>
        (function() {
            'use strict';

            // --- Mobile Navigation Toggle ---
            const mobileBtn = document.getElementById('mobileMenuBtn');
            const mobileNav = document.getElementById('mobileNav');
            const mobileLinks = mobileNav.querySelectorAll('a');

            mobileBtn.addEventListener('click', () => {
                const isOpen = mobileBtn.getAttribute('aria-expanded') === 'true';
                mobileBtn.setAttribute('aria-expanded', !isOpen);
                mobileNav.classList.toggle('open');
                document.body.style.overflow = isOpen ? '' : 'hidden';
            });

            mobileLinks.forEach(link => {
                link.addEventListener('click', () => {
                    mobileBtn.setAttribute('aria-expanded', 'false');
                    mobileNav.classList.remove('open');
                    document.body.style.overflow = '';
                });
            });

            // --- Scroll Animations (IntersectionObserver) ---
            const fadeElements = document.querySelectorAll('.fade-in');
            const observerOptions = { root: null, rootMargin: '0px 0px -10% 0px', threshold: 0.1 };
            const observer = new IntersectionObserver((entries) => {
                entries.forEach(entry => {
                    if (entry.isIntersecting) {
                        entry.target.classList.add('visible');
                        observer.unobserve(entry.target);
                    }
                });
            }, observerOptions);
            fadeElements.forEach(el => observer.observe(el));

            // --- Wine Pairing Finder Logic ---
            const proteinSelect = document.getElementById('proteinSelect');
            const prepSelect = document.getElementById('prepSelect');
            const resultDiv = document.getElementById('pairingResult');

            const pairingData = {
                beef: {
                    options: [
                        { value: 'grilled', label: 'Grilled / Charred (High Maillard)', wines: [{ name: 'Cabernet Sauvignon (Napa Valley)', reason: 'High tannin binds protein; black fruit matches char.' }, { name: 'Syrah (Northern Rhône)', reason: 'Meaty, peppery notes mirror grilled herbs.' }] },
                        { value: 'braised', label: 'Braised / Stewed (Low & Slow)', wines: [{ name: 'Barolo / Barbaresco (Nebbiolo)', reason: 'High acid cuts gelatin richness; tar/rose aromatics complement aromatics.' }, { name: 'Aglianico (Taurasi)', reason: 'Rustic structure stands up to long cooking.' }] },
                        { value: 'raw', label: 'Raw / Carpaccio / Tartare', wines: [{ name: 'Beaujolais Cru (Morgon/Moulin-à-Vent)', reason: 'Bright acidity, low tannin, red fruit lifts lean raw beef.' }, { name: 'Pinot Noir (Bourgogne)', reason: 'Delicate structure won\'t overwhelm texture.' }] }
                    ]
                },
                lamb: {
                    options: [
                        { value: 'roasted', label: 'Roasted Rack (Herb Crust)', wines: [{ name: 'Bordeaux Blend (Left Bank)', reason: 'Graphite/cedar notes complement rosemary/garlic crust.' }, { name: 'Cabernet Franc (Loire)', reason: 'Bell pepper pyrazines match herbal marinade.' }] },
                        { value: 'braised', label: 'Braised Shank (Red Wine Sauce)', wines: [{ name: 'Rioja Reserva (Tempranillo)', reason: 'Oxidative vanilla notes harmonize with braise liquid.' }, { name: 'Monastrell (Jumilla)', reason: 'High alcohol/glycerol matches unctuous texture.' }] },
                        { value: 'spiced', label: 'Spiced / Harissa / Tagine', wines: [{ name: 'Grenache/Syrah (Priorat)', reason: 'Mineral drive cuts spice heat; dark fruit balances sweet spices.' }, { name: 'Zinfandel (Dry Creek)', reason: 'Jammy fruit tames chili heat; brambly spice echoes tagine.' }] }
                    ]
                },
                poultry: {
                    options: [
                        { value: 'roasted', label: 'Roasted Chicken (Classic)', wines: [{ name: 'White Burgundy (Chardonnay)', reason: 'Rich texture matches skin fat; citrus acidity cuts richness.' }, { name: 'Pinot Noir (Willamette)', reason: 'Light tannin, red fruit bridges white/dark meat.' }] },
                        { value: 'fried', label: 'Fried Chicken (Crispy, Salty)', wines: [{ name: 'Champagne / High-Acid Sparkling', reason: 'Bubbles scrub fat; high acid resets palate.' }, { name: 'Riesling Trocken (Alsace)', reason: 'Racy acidity, stone fruit cuts salt/spice.' }] },
                        { value: 'duck', label: 'Duck Breast (Cherry/Gastrique)', wines: [{ name: 'Pinot Noir (Central Otago)', reason: 'Dark cherry fruit mirrors sauce; structure handles fat.' }, { name: 'Gamay (Beaujolais)', reason: 'Juicy, chilled red contrasts rich meat.' }] }
                    ]
                },
                pork: {
                    options: [
                        { value: 'tenderloin', label: 'Tenderloin (Lean, Mild)', wines: [{ name: 'Riesling Kabinett (Mosel)', reason: 'Off-dry balances lean meat; petrol notes add complexity.' }, { name: 'Beaujolais Villages', reason: 'Low tannin, high drinkability for weekday pork.' }] },
                        { value: 'belly', label: 'Pork Belly (Crispy Skin, Fatty)', wines: [{ name: 'German Spätburgunder (Pinot Noir)', reason: 'Bright acidity, savory spice cuts unctuous fat.' }, { name: 'Chenin Blanc (Vouvray Sec)', reason: 'High acid, quince/apple notes cleanse palate.' }] },
                        { value: 'charcuterie', label: 'Charcuterie / Cured', wines: [{ name: 'Lambrusco (Secco)', reason: 'Fizzy, tannic, fruity—designed for salumi.' }, { name: 'Fino Sherry', reason: 'Saline, nutty, oxidative; perfect for jamón.' }] }
                    ]
                },
                'fish-fatty': {
                    options: [
                        { value: 'grilled', label: 'Grilled Salmon / Tuna Steak', wines: [{ name: 'Pinot Noir (Light Chill)', reason: 'Only red that works; fruit weight matches fish oil.' }, { name: 'Chardonnay (Oaked, Sonoma)', reason: 'Butter/vanilla bridges grill char and fat.' }] },
                        { value: 'raw', label: 'Sashimi / Crudo / Poke', wines: [{ name: 'Chablis (Premier Cru)', reason: 'Flinty minerality, laser acidity—purest expression.' }, { name: 'Sake (Junmai Daiginjo)', reason: 'Umami synergy; rice koji mirrors fish sweetness.' }] }
                    ]
                },
                'fish-lean': {
                    options: [
                        { value: 'poached', label: 'Poached / Steamed (Delicate)', wines: [{ name: 'Muscadet Sur Lie', reason: 'Saline, leesy texture matches gentle cooking.' }, { name: 'Vermentino (Sardinia)', reason: 'Bitter almond finish cuts clean protein.' }] },
                        { value: 'fried', label: 'Fish & Chips / Tempura', wines: [{ name: 'English Sparkling / Champagne', reason: 'Acid/bubbles cut batter oil perfectly.' }, { name: 'Grüner Veltliner (Kamptal)', reason: 'White pepper spice, high acid cuts grease.' }] }
                    ]
                },
                shellfish: {
                    options: [
                        { value: 'oysters', label: 'Raw Oysters / Clams', wines: [{ name: 'Muscadet / Chablis', reason: 'Classic match: iodine meets flint.' }, { name: 'Txakoli (Basque)', reason: 'Spritzy, saline, 10.5% ABV—palate cleanser.' }] },
                        { value: 'lobster', label: 'Lobster / Crab (Butter Poached)', wines: [{ name: 'White Burgundy (Meursault)', reason: 'Richness matches butter; acid prevents cloy.' }, { name: 'Champagne (Blanc de Blancs)', reason: 'Fine mousse scrubs butterfat elegantly.' }] }
                    ]
                },
                mushroom: {
                    options: [
                        { value: 'roasted', label: 'Roasted Portobello / Steak Style', wines: [{ name: 'Nebbiolo (Langhe)', reason: 'Tar/rose notes mirror mushroom earthiness.' }, { name: 'Pinot Noir (Baden)', reason: 'Forest floor terroir matches fungi habitat.' }] },
                        { value: 'stirfry', label: 'Asian Stir-fry (Soy/Ginger/Garlic)', wines: [{ name: 'Riesling Feinherb (Pfalz)', reason: 'Touch of sugar balances soy/salt; acid cuts oil.' }, { name: 'Gewürztraminer (Alsace)', reason: 'Lychee/spice stands up to ginger/garlic.' }] }
                    ]
                },
                pasta: {
                    options: [
                        { value: 'ragu', label: 'Bolognese / Meat Ragu', wines: [{ name: 'Chianti Classico Riserva', reason: 'Sangiovese acid cuts tomato/meat; tannin binds protein.' }, { name: 'Barbera d\'Alba', reason: 'Bright acid, zero tannin—tomato\'s best friend.' }] },
                        { value: 'carbonara', label: 'Carbonara / Cream & Egg Yolk', wines: [{ name: 'Frascati Superiore (Malvasia)', reason: 'Local Lazio white; almond/acid cuts guanciale fat.' }, { name: 'Sparkling Lambrusco', reason: 'Bubbles scrub palate; fruit balances pepper.' }] },
                        { value: 'seafood', label: 'Linguine alle Vongole / Seafood', wines: [{ name: 'Vermentino (Liguria)', reason: 'Saline minerality mirrors clam liquor.' }, { name: 'Picpoul de Pinet', reason: 'Lip-stinging acidity—"lip stinger" for shellfish.' }] }
                    ]
                }
            };

            function updatePrepOptions() {
                const protein = proteinSelect.value;
                prepSelect.innerHTML = '<option value="">Select preparation...</option>';
                prepSelect.disabled = !protein;

                if (protein && pairingData[protein]) {
                    pairingData[protein].options.forEach(opt => {
                        const option = document.createElement('option');
                        option.value = opt.value;
                        option.textContent = opt.label;
                        prepSelect.appendChild(option);
                    });
                }
                renderResult(); // Clear result on protein change
            }

            function renderResult() {
                const protein = proteinSelect.value;
                const prep = prepSelect.value;

                if (!protein || !prep) {
                    resultDiv.innerHTML = '<div class="pairing-result__placeholder">Select a protein and preparation above to reveal your pairing.</div>';
                    resultDiv.classList.remove('active');
                    return;
                }

                const data = pairingData[protein].options.find(o => o.value === prep);
                if (!data) return;

                let html = '<div class="pairing-result__content">';
                html += `<h4>${data.label} Pairings</h4>`;
                html += `<p>Selected: <strong>${proteinSelect.options[proteinSelect.selectedIndex].text}</strong> → <strong>${prepSelect.options[prepSelect.selectedIndex].text}</strong></p>`;
                html += '<div class="pairing-result__meta">';
                data.wines.forEach(w => {
                    html += `<span class="pairing-tag"><strong>${w.name}</strong>: ${w.reason}</span>`;
                });
                html += '</div></div>';
                resultDiv.innerHTML = html;
                resultDiv.classList.add('active');
            }

            proteinSelect.addEventListener('change', updatePrepOptions);
            prepSelect.addEventListener('change', renderResult);

            // --- FAQ Accordion Logic ---
            const faqQuestions = document.querySelectorAll('.faq-question');
            faqQuestions.forEach(btn => {
                btn.addEventListener('click', () => {
                    const expanded = btn.getAttribute('aria-expanded') === 'true';
                    const answer = btn.nextElementSibling;

                    // Close others (optional: allow multiple open? Spec says accordion, usually single. I'll allow multiple but close on re-click)
                    // Let's do single open for cleaner UX
                    faqQuestions.forEach(otherBtn => {
                        if (otherBtn !== btn && otherBtn.getAttribute('aria-expanded') === 'true') {
                            otherBtn.setAttribute('aria-expanded', 'false');
                            otherBtn.nextElementSibling.classList.remove('open');
                        }
                    });

                    btn.setAttribute('aria-expanded', !expanded);
                    answer.classList.toggle('open');
                });
            });

            // --- Smooth Scroll Polyfill for older browsers (CSS handles modern) ---
            document.querySelectorAll('a[href^="#"]').forEach(anchor => {
                anchor.addEventListener('click', function(e) {
                    const targetId = this.getAttribute('href');
                    if (targetId === '#') return;
                    const target = document.querySelector(targetId);
                    if (target) {
                        e.preventDefault();
                        const headerOffset = 80; // Account for sticky header
                        const elementPosition = target.getBoundingClientRect().top + window.pageYOffset;
                        const offsetPosition = elementPosition - headerOffset;
                        window.scrollTo({ top: offsetPosition, behavior: 'smooth' });
                        target.focus({ preventScroll: true }); // Accessibility
                    }
                });
            });

            // --- Newsletter Form Submit (Mock) ---
            document.querySelectorAll('.newsletter-form, .newsletter-section form').forEach(form => {
                form.addEventListener('submit', (e) => {
                    e.preventDefault();
                    const btn = form.querySelector('button[type="submit"]');
                    const input = form.querySelector('input[type="email"]');
                    if (input.checkValidity()) {
                        btn.textContent = 'Subscribed!';
                        btn.style.background = 'var(--color-accent)';
                        btn.style.borderColor = 'var(--color-accent)';
                        input.value = '';
                        setTimeout(() => {
                            btn.textContent = 'Subscribe';
                            btn.style.background = '';
                            btn.style.borderColor = '';
                        }, 3000);
                    }
                });
            });

        })();
    </script>
</body>
</html>
View Axe Report (JSON)
{
  "testEngine": {
    "name": "axe-core",
    "version": "4.10.2"
  },
  "testRunner": {
    "name": "axe"
  },
  "testEnvironment": {
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
    "windowWidth": 1280,
    "windowHeight": 720,
    "orientationAngle": 0,
    "orientationType": "landscape-primary"
  },
  "timestamp": "2026-11-12T09:42:28.876Z",
  "url": "https://benchmark.aimac.invalid/13f7264aef20661fe859291bd8823b5218f43d54a48dc6ba58c7a2d0f7872bd4.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": "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": []
    },
    {
      "id": "marquee",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag222",
        "TTv5",
        "TT2.b",
        "EN-301-549",
        "EN-9.2.2.2"
      ],
      "description": "Ensure <marquee> elements are not used",
      "help": "<marquee> elements are deprecated and must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
      "nodes": []
    },
    {
      "id": "meta-refresh",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag221",
        "TTv5",
        "TT8.a",
        "EN-301-549",
        "EN-9.2.2.1"
      ],
      "description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
      "help": "Delayed refresh under 20 hours must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
      "nodes": []
    },
    {
      "id": "object-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure <object> elements have alternative text",
      "help": "<object> elements must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "role-img-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure [role=\"img\"] elements have alternative text",
      "help": "[role=\"img\"] elements must have an alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "scrollable-region-focusable",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag211",
        "wcag213",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1",
        "EN-9.2.1.3"
      ],
      "description": "Ensure elements that have scrollable content are accessible by keyboard",
      "help": "Scrollable region must have keyboard access",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
      "nodes": []
    },
    {
      "id": "server-side-image-map",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag211",
        "section508",
        "section508.22.f",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure that server-side image maps are not used",
      "help": "Server-side image maps must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
      "nodes": []
    },
    {
      "id": "svg-img-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
      "help": "<svg> elements with an img role must have an alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "td-headers-attr",
      "impact": null,
      "tags": [
        "cat.tables",
        "wcag2a",
        "wcag131",
        "section508",
        "section508.22.g",
        "TTv5",
        "TT14.b",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
      "help": "Table cells that use the headers attribute must only refer to cells in the same table",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
      "nodes": []
    },
    {
      "id": "th-has-data-cells",
      "impact": null,
      "tags": [
        "cat.tables",
        "wcag2a",
        "wcag131",
        "section508",
        "section508.22.g",
        "TTv5",
        "TT14.b",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
      "help": "Table headers in a data table must refer to data cells",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
      "nodes": []
    },
    {
      "id": "valid-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2aa",
        "wcag312",
        "TTv5",
        "TT11.b",
        "EN-301-549",
        "EN-9.3.1.2",
        "ACT"
      ],
      "description": "Ensure lang attributes have valid values",
      "help": "lang attribute must have a valid value",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
      "nodes": []
    },
    {
      "id": "video-caption",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag122",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT17.a",
        "EN-301-549",
        "EN-9.1.2.2"
      ],
      "description": "Ensure <video> elements have captions",
      "help": "<video> elements must have captions",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
      "nodes": []
    },
    {
      "id": "no-autoplay-audio",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag142",
        "TTv5",
        "TT2.a",
        "EN-301-549",
        "EN-9.1.4.2",
        "ACT"
      ],
      "description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
      "help": "<video> or <audio> elements must not play automatically",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
      "nodes": []
    }
  ],
  "passes": [
    {
      "id": "aria-allowed-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure an element's role supports its ARIA attributes",
      "help": "Elements must only use supported ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-allowed-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attributes are used correctly for the defined role"
            }
          ],
          "none": [
            {
              "id": "aria-unsupported-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute is supported"
            }
          ],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Savor &amp; Sage Home\">",
          "target": [
            ".header-inner > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-conditional-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are used as described in the specification of the element's role",
      "help": "ARIA attributes must be used as specified for the element's role",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-conditional-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Savor &amp; Sage Home\">",
          "target": [
            ".header-inner > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-deprecated-role",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements do not use deprecated roles",
      "help": "Deprecated ARIA roles must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "deprecatedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "minor",
              "message": "ARIA role is not deprecated"
            }
          ],
          "impact": null,
          "html": "<header class=\"site-header\" role=\"banner\">",
          "target": [
            ".site-header"
          ]
        }
      ]
    },
    {
      "id": "aria-hidden-body",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "wcag412",
        "EN-301-549",
        "EN-9.1.3.1",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-hidden=\"true\" is not present on the document body.",
      "help": "aria-hidden=\"true\" must not be present on the document body",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-hidden-body",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "No aria-hidden attribute is present on document body"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<body>",
          "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": "<img src=\"https://placehold.co/120x120/5D4037/FFFFFF?text=S%26S&amp;font=playfair+display\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\">",
          "target": [
            ".header-inner > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"] > img[aria-hidden=\"true\"][alt=\"\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-prohibited-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are not prohibited for an element's role",
      "help": "Elements must only use permitted ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "aria-prohibited-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Savor &amp; Sage Home\">",
          "target": [
            ".header-inner > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-required-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements with ARIA roles have all required ARIA attributes",
      "help": "Required ARIA attributes must be provided",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-required-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "All required ARIA attributes are present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<header class=\"site-header\" role=\"banner\">",
          "target": [
            ".site-header"
          ]
        }
      ]
    },
    {
      "id": "aria-roles",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all elements with a role attribute use a valid value",
      "help": "ARIA roles used must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "invalidrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is valid"
            },
            {
              "id": "abstractrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Abstract roles are not used"
            },
            {
              "id": "unsupportedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is supported"
            }
          ],
          "impact": null,
          "html": "<header class=\"site-header\" role=\"banner\">",
          "target": [
            ".site-header"
          ]
        }
      ]
    },
    {
      "id": "aria-valid-attr-value",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all ARIA attributes have valid values",
      "help": "ARIA attributes must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-valid-attr-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute values are valid"
            },
            {
              "id": "aria-errormessage",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
            },
            {
              "id": "aria-level",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-level values are valid"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Savor &amp; Sage Home\">",
          "target": [
            ".header-inner > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-valid-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure attributes that begin with aria- are valid ARIA attributes",
      "help": "ARIA attributes must conform to valid names",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-valid-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute name is valid"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Savor &amp; Sage Home\">",
          "target": [
            ".header-inner > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"]"
          ]
        }
      ]
    },
    {
      "id": "autocomplete-valid",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag21aa",
        "wcag135",
        "EN-301-549",
        "EN-9.1.3.5",
        "ACT"
      ],
      "description": "Ensure the autocomplete attribute is correct and suitable for the form field",
      "help": "autocomplete attribute must be used correctly",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "autocomplete-valid",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "the autocomplete attribute is correctly formatted"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<input type=\"email\" id=\"email\" name=\"email\" placeholder=\"your@email.com\" required=\"\" autocomplete=\"email\">",
          "target": [
            "#email"
          ]
        }
      ]
    },
    {
      "id": "avoid-inline-spacing",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag21aa",
        "wcag1412",
        "EN-301-549",
        "EN-9.1.4.12",
        "ACT"
      ],
      "description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
      "help": "Inline text spacing must be adjustable with custom stylesheets",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "important-letter-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-word-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-line-height",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "line-height in the style attribute is not set to !important, or meets the minimum"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<span class=\"logo-name\" style=\"color: #fff;\">Savor &amp; Sage</span>",
          "target": [
            ".footer-brand > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"] > .logo-text > .logo-name"
          ]
        }
      ]
    },
    {
      "id": "button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure buttons have discernible text",
      "help": "Buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-label attribute exists and is not empty"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<button class=\"mobile-menu-btn\" id=\"mobileMenuBtn\" aria-expanded=\"false\" aria-controls=\"mobileNav\" aria-label=\"Toggle navigation menu\">\n                <span></span><span></span><span></span>\n            </button>",
          "target": [
            "#mobileMenuBtn"
          ]
        }
      ]
    },
    {
      "id": "bypass",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag241",
        "section508",
        "section508.22.o",
        "TTv5",
        "TT9.a",
        "EN-301-549",
        "EN-9.2.4.1"
      ],
      "description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
      "help": "Page must have means to bypass repeated blocks",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "internal-link-present",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Valid skip link found"
            },
            {
              "id": "header-present",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<h1 id=\"hero-title\">Master the Art of Flavor, Technique &amp; Terroir</h1>",
                  "target": [
                    "#hero-title"
                  ]
                },
                {
                  "html": "<h2 id=\"cat-heading\">Curated Culinary Collections</h2>",
                  "target": [
                    "#cat-heading"
                  ]
                },
                {
                  "html": "<h3 class=\"category-card__title\">Essential Techniques</h3>",
                  "target": [
                    ".category-card.stagger-1 > .category-card__body > .category-card__title"
                  ]
                },
                {
                  "html": "<h3 class=\"category-card__title\">Regional Deep Dives</h3>",
                  "target": [
                    ".category-card.stagger-2 > .category-card__body > .category-card__title"
                  ]
                },
                {
                  "html": "<h3 class=\"category-card__title\">The Baker's Percentage</h3>",
                  "target": [
                    ".stagger-3.category-card > .category-card__body > .category-card__title"
                  ]
                },
                {
                  "html": "<h3 class=\"category-card__title\">Cellar &amp; Cocktail</h3>",
                  "target": [
                    ".stagger-4 > .category-card__body > .category-card__title"
                  ]
                },
                {
                  "html": "<h2 id=\"pairing-heading\">Wine &amp; Dish Pairing Finder</h2>",
                  "target": [
                    "#pairing-heading"
                  ]
                },
                {
                  "html": "<h2 id=\"editorial-heading\">Essays, Guides &amp; Investigations</h2>",
                  "target": [
                    "#editorial-heading"
                  ]
                },
                {
                  "html": "<h3 class=\"article-card__title\">The Maillard Reaction: Beyond Browning</h3>",
                  "target": [
                    ".article-card.stagger-1 > .article-card__body > .article-card__title"
                  ]
                },
                {
                  "html": "<h3 class=\"article-card__title\">Lacto-Fermentation: Controlling the Brine</h3>",
                  "target": [
                    ".article-card.stagger-2 > .article-card__body > .article-card__title"
                  ]
                },
                {
                  "html": "<h3 class=\"article-card__title\">High Acid Whites &amp; High Fat Foods: The Chemistry</h3>",
                  "target": [
                    ".stagger-3.article-card > .article-card__body > .article-card__title"
                  ]
                },
                {
                  "html": "<h2 id=\"nutrition-heading\">Nutrition Science &amp; Application</h2>",
                  "target": [
                    "#nutrition-heading"
                  ]
                },
                {
                  "html": "<h3>Bioavailability Over Buzzwords</h3>",
                  "target": [
                    "div > .stagger-2.fade-in > h3"
                  ]
                },
                {
                  "html": "<h4 style=\"margin-top: 1.5rem; margin-bottom: 0.5rem;\">Current Series:</h4>",
                  "target": [
                    ".stagger-2.fade-in > h4"
                  ]
                },
                {
                  "html": "<h2 id=\"testimonial-heading\">Voices from the Kitchen &amp; Cellar</h2>",
                  "target": [
                    "#testimonial-heading"
                  ]
                },
                {
                  "html": "<h2 id=\"faq-heading\">Frequently Asked Questions</h2>",
                  "target": [
                    "#faq-heading"
                  ]
                },
                {
                  "html": "<h3 class=\"widget-title\">",
                  "target": [
                    ".widget.fade-in:nth-child(1) > .widget-title"
                  ]
                },
                {
                  "html": "<h3 class=\"widget-title\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2v20M17 5H7M17 19H7\"></path></svg> Peak Season (October)</h3>",
                  "target": [
                    ".widget.stagger-1.fade-in > .widget-title"
                  ]
                },
                {
                  "html": "<h3 class=\"widget-title\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"></rect><path d=\"m22 7-10 5L2 7\"></path></svg> The Mise en Place</h3>",
                  "target": [
                    "#newsletter > .widget-title"
                  ]
                },
                {
                  "html": "<h2 id=\"nl-heading\">Join 12,000+ Cooks &amp; Sommeliers</h2>",
                  "target": [
                    "#nl-heading"
                  ]
                },
                {
                  "html": "<h4>Explore</h4>",
                  "target": [
                    "nav[aria-label=\"Explore\"] > h4"
                  ]
                },
                {
                  "html": "<h4>Company</h4>",
                  "target": [
                    "nav[aria-label=\"Company\"] > h4"
                  ]
                },
                {
                  "html": "<h4>Legal</h4>",
                  "target": [
                    "nav[aria-label=\"Legal\"] > h4"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a heading"
            },
            {
              "id": "landmark",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<main id=\"mainContent\">",
                  "target": [
                    "#mainContent"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a landmark region"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#2d2926",
                "bgColor": "#faf8f5",
                "contrastRatio": 13.59,
                "fontSize": "15.0pt (20px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "3:1",
                "shadowColor": null
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has sufficient color contrast of 13.59"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<span class=\"logo-name\">Savor &amp; Sage</span>",
          "target": [
            ".header-inner > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"] > .logo-text > .logo-name"
          ]
        }
      ]
    },
    {
      "id": "document-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag242",
        "TTv5",
        "TT12.a",
        "EN-301-549",
        "EN-9.2.4.2",
        "ACT"
      ],
      "description": "Ensure each HTML document contains a non-empty <title> element",
      "help": "Documents must have <title> element to aid in navigation",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "doc-has-title",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Document has a non-empty <title> element"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "duplicate-id-aria",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every id attribute value used in ARIA and in labels is unique",
      "help": "IDs used in ARIA and labels must be unique",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "duplicate-id-aria",
              "data": "mobileNav",
              "relatedNodes": [],
              "impact": "critical",
              "message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"mobile-nav-overlay\" id=\"mobileNav\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Menu\">",
          "target": [
            "#mobileNav"
          ]
        }
      ]
    },
    {
      "id": "form-field-multiple-labels",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag332",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.3.3.2"
      ],
      "description": "Ensure form field does not have multiple label elements",
      "help": "Form field must not have multiple label elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "multiple-label",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<label for=\"proteinSelect\">Primary Protein / Base</label>",
                  "target": [
                    "label[for=\"proteinSelect\"]"
                  ]
                }
              ],
              "impact": "moderate",
              "message": "Form field does not have multiple label elements"
            }
          ],
          "impact": null,
          "html": "<select id=\"proteinSelect\" aria-label=\"Select protein\">",
          "target": [
            "#proteinSelect"
          ]
        }
      ]
    },
    {
      "id": "html-has-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure every HTML document has a lang attribute",
      "help": "<html> element must have a lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "The <html> element has a lang attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "html-lang-valid",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure the lang attribute of the <html> element has a valid value",
      "help": "<html> element must have a valid value for the lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "valid-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Value of lang attribute is included in the list of valid languages"
            }
          ],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "TT7.b",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <img> elements have alternative text or a role of none or presentation",
      "help": "Images must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-alt",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has an alt attribute"
            },
            {
              "id": "presentational-role",
              "data": {
                "role": "presentation"
              },
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element's default semantics were overridden with role=\"presentation\""
            }
          ],
          "all": [],
          "none": [
            {
              "id": "alt-space-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has a valid alt attribute value"
            }
          ],
          "impact": null,
          "html": "<img src=\"https://picsum.photos/seed/techniques/600/400\" alt=\"\" class=\"category-card__image\" loading=\"lazy\">",
          "target": [
            ".category-card.stagger-1 > .category-card__image[alt=\"\"]"
          ]
        }
      ]
    },
    {
      "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\" class=\"visually-hidden\">Email Address</label>",
                  "target": [
                    ".visually-hidden"
                  ]
                }
              ],
              "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\" name=\"email\" placeholder=\"your@email.com\" required=\"\" autocomplete=\"email\">",
          "target": [
            "#email"
          ]
        }
      ]
    },
    {
      "id": "link-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure links have discernible text",
      "help": "Links must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has text that is visible to screen readers"
            },
            {
              "id": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "aria-label attribute exists and is not empty"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "focusable-no-name",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element is not in tab order or has accessible text"
            }
          ],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Savor &amp; Sage Home\">",
          "target": [
            ".header-inner > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"]"
          ]
        }
      ]
    },
    {
      "id": "list",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that lists are structured correctly",
      "help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "only-listitems",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "List element only has direct children that are allowed inside <li> elements"
            }
          ],
          "impact": null,
          "html": "<ul style=\"list-style: disc; padding-left: 1.5rem; color: var(--color-text-secondary);\">",
          "target": [
            ".stagger-2.fade-in > 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 style=\"margin-bottom: 0.5rem;\"><strong>The Protein Leverage Hypothesis:</strong> Satiety signaling and muscle protein synthesis thresholds.</li>",
          "target": [
            ".stagger-2.fade-in > ul > li:nth-child(1)"
          ]
        }
      ]
    },
    {
      "id": "meta-viewport",
      "impact": null,
      "tags": [
        "cat.sensory-and-visual-cues",
        "wcag2aa",
        "wcag144",
        "EN-301-549",
        "EN-9.1.4.4",
        "ACT"
      ],
      "description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
      "help": "Zooming and scaling must not be disabled",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "meta-viewport",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "<meta> tag does not disable zooming on mobile devices"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
          "target": [
            "meta[name=\"viewport\"]"
          ]
        }
      ]
    },
    {
      "id": "nested-interactive",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
      "help": "Interactive controls must not be nested",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "no-focusable-content",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element does not have focusable descendants"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<button class=\"mobile-menu-btn\" id=\"mobileMenuBtn\" aria-expanded=\"false\" aria-controls=\"mobileNav\" aria-label=\"Toggle navigation menu\">\n                <span></span><span></span><span></span>\n            </button>",
          "target": [
            "#mobileMenuBtn"
          ]
        }
      ]
    },
    {
      "id": "select-name",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure select element has an accessible name",
      "help": "Select element must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "explicit-label",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<label for=\"proteinSelect\">Primary Protein / Base</label>",
                  "target": [
                    "label[for=\"proteinSelect\"]"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has an explicit <label>"
            },
            {
              "id": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-label attribute exists and is not empty"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "hidden-explicit-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Form element has a visible explicit <label>"
            }
          ],
          "impact": null,
          "html": "<select id=\"proteinSelect\" aria-label=\"Select protein\">",
          "target": [
            "#proteinSelect"
          ]
        }
      ]
    },
    {
      "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 class=\"faq-question\" aria-expanded=\"false\">",
          "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": 290.1,
                "height": 40
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Control has sufficient size (290.1px by 40px, should be at least 24px by 24px)"
            },
            {
              "id": "target-offset",
              "data": {
                "closestOffset": 24,
                "minOffset": 24
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Savor &amp; Sage Home\">",
          "target": [
            ".header-inner > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"]"
          ]
        }
      ]
    }
  ],
  "incomplete": [
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": "pseudoContent",
                "expectedContrastRatio": "4.5:1"
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"hero\" aria-labelledby=\"hero-title\">",
                  "target": [
                    ".hero"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element's background color could not be determined due to a pseudo element"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"hero-badge\">Est. 2024 \u2022 Independent Editorial</span>",
          "target": [
            ".hero-badge"
          ],
          "failureSummary": "Fix any of the following:\n  Element's background color could not be determined due to a pseudo element"
        }
      ]
    }
  ],
  "violations": [
    {
      "id": "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": "#9b918a",
                "bgColor": "#faf8f5",
                "contrastRatio": 2.9,
                "fontSize": "7.5pt (10px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header class=\"site-header\" role=\"banner\">",
                  "target": [
                    ".site-header"
                  ]
                },
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.9 (foreground color: #9b918a, background color: #faf8f5, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"logo-tagline\">Culinary Craft for Curious Palates</span>",
          "target": [
            ".header-inner > .logo[aria-label=\"Savor & Sage Home\"][href=\"#\"] > .logo-text > .logo-tagline"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.9 (foreground color: #9b918a, background color: #faf8f5, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#5c544e",
                "bgColor": "#2d2926",
                "contrastRatio": 1.94,
                "fontSize": "10.5pt (14px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"site-footer\" role=\"contentinfo\" id=\"contact\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.94 (foreground color: #5c544e, background color: #2d2926, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>\u00a9 2024 Savor &amp; Sage. All rights reserved. Crafted with precision.</p>",
          "target": [
            ".footer-bottom > p"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.94 (foreground color: #5c544e, background color: #2d2926, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#faf8f5",
                "contrastRatio": 2.9,
                "fontSize": "10.5pt (14px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.9 (foreground color: #9b918a, background color: #faf8f5, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-subtitle\">Browse Categories</span>",
          "target": [
            "#recipes > .section-header > .section-title-group > .section-subtitle"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.9 (foreground color: #9b918a, background color: #faf8f5, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#f0f4ef",
                "contrastRatio": 3.34,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"category-card__tag\">Fundamentals</span>",
                  "target": [
                    ".category-card.stagger-1.visible > .category-card__body > .category-card__tag"
                  ]
                },
                {
                  "html": "<article class=\"category-card fade-in stagger-1 visible\">",
                  "target": [
                    ".category-card.stagger-1.visible"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"category-card__tag\">Fundamentals</span>",
          "target": [
            ".category-card.stagger-1.visible > .category-card__body > .category-card__tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#f0f4ef",
                "contrastRatio": 3.34,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"category-card__tag\">Global Cuisine</span>",
                  "target": [
                    ".category-card.stagger-2.visible > .category-card__body > .category-card__tag"
                  ]
                },
                {
                  "html": "<article class=\"category-card fade-in stagger-2 visible\">",
                  "target": [
                    ".category-card.stagger-2.visible"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"category-card__tag\">Global Cuisine</span>",
          "target": [
            ".category-card.stagger-2.visible > .category-card__body > .category-card__tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#f0f4ef",
                "contrastRatio": 3.34,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"category-card__tag\">Pastry &amp; Bread</span>",
                  "target": [
                    ".stagger-3.category-card.visible > .category-card__body > .category-card__tag"
                  ]
                },
                {
                  "html": "<article class=\"category-card fade-in stagger-3 visible\">",
                  "target": [
                    ".stagger-3.category-card.visible"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"category-card__tag\">Pastry &amp; Bread</span>",
          "target": [
            ".stagger-3.category-card.visible > .category-card__body > .category-card__tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"widget fade-in visible\">",
                  "target": [
                    ".widget.visible.fade-in"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"trending-item__meta\">Technique \u2022 12k views</span>",
          "target": [
            ".trending-item[href=\"#\"]:nth-child(1) > .trending-item__content > .trending-item__meta"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"widget fade-in visible\">",
                  "target": [
                    ".widget.visible.fade-in"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"trending-item__meta\">Beverage \u2022 9.4k views</span>",
          "target": [
            ".trending-item[href=\"#\"]:nth-child(2) > .trending-item__content > .trending-item__meta"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"widget fade-in visible\">",
                  "target": [
                    ".widget.visible.fade-in"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"trending-item__meta\">Fundamentals \u2022 8.1k views</span>",
          "target": [
            ".trending-item[href=\"#\"]:nth-child(3) > .trending-item__content > .trending-item__meta"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"widget fade-in visible\">",
                  "target": [
                    ".widget.visible.fade-in"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"trending-item__meta\">Pantry \u2022 7.6k views</span>",
          "target": [
            ".trending-item[href=\"#\"]:nth-child(4) > .trending-item__content > .trending-item__meta"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#f0f4ef",
                "contrastRatio": 3.34,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"category-card__tag\">Fundamentals</span>",
                  "target": [
                    ".category-card.stagger-1 > .category-card__body > .category-card__tag"
                  ]
                },
                {
                  "html": "<article class=\"category-card fade-in stagger-1 visible\">",
                  "target": [
                    ".category-card.stagger-1"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"category-card__tag\">Fundamentals</span>",
          "target": [
            ".category-card.stagger-1 > .category-card__body > .category-card__tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#f0f4ef",
                "contrastRatio": 3.34,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"category-card__tag\">Global Cuisine</span>",
                  "target": [
                    ".category-card.stagger-2 > .category-card__body > .category-card__tag"
                  ]
                },
                {
                  "html": "<article class=\"category-card fade-in stagger-2 visible\">",
                  "target": [
                    ".category-card.stagger-2"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"category-card__tag\">Global Cuisine</span>",
          "target": [
            ".category-card.stagger-2 > .category-card__body > .category-card__tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#f0f4ef",
                "contrastRatio": 3.34,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"category-card__tag\">Pastry &amp; Bread</span>",
                  "target": [
                    ".stagger-3.category-card > .category-card__body > .category-card__tag"
                  ]
                },
                {
                  "html": "<article class=\"category-card fade-in stagger-3 visible\">",
                  "target": [
                    ".stagger-3.category-card"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"category-card__tag\">Pastry &amp; Bread</span>",
          "target": [
            ".stagger-3.category-card > .category-card__body > .category-card__tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#f0f4ef",
                "contrastRatio": 3.34,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"category-card__tag\">Beverages</span>",
                  "target": [
                    ".stagger-4 > .category-card__body > .category-card__tag"
                  ]
                },
                {
                  "html": "<article class=\"category-card fade-in stagger-4 visible\">",
                  "target": [
                    ".stagger-4"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"category-card__tag\">Beverages</span>",
          "target": [
            ".stagger-4 > .category-card__body > .category-card__tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.34 (foreground color: #6b8e5a, background color: #f0f4ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "10.5pt (14px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"pairing-tool\">",
                  "target": [
                    ".pairing-tool"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #6b8e5a, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-subtitle\" style=\"color: var(--color-accent);\">Interactive Tool</span>",
          "target": [
            ".pairing-tool__header > .section-subtitle"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #6b8e5a, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c3bdb9",
                "bgColor": "#fcfbf9",
                "contrastRatio": 1.79,
                "fontSize": "12.0pt (16px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"pairing-result\" id=\"pairingResult\" aria-live=\"polite\">\n                            <div class=\"pairing-result__placeholder\">Select a protein and preparation above to reveal your pairing.</div>\n                        </div>",
                  "target": [
                    "#pairingResult"
                  ]
                },
                {
                  "html": "<div class=\"pairing-tool\">",
                  "target": [
                    ".pairing-tool"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.79 (foreground color: #c3bdb9, background color: #fcfbf9, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"pairing-result__placeholder\">Select a protein and preparation above to reveal your pairing.</div>",
          "target": [
            ".pairing-result__placeholder"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.79 (foreground color: #c3bdb9, background color: #fcfbf9, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#faf8f5",
                "contrastRatio": 2.9,
                "fontSize": "10.5pt (14px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.9 (foreground color: #9b918a, background color: #faf8f5, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-subtitle\">From the Test Kitchen</span>",
          "target": [
            "#guides > .section-header > .section-title-group > .section-subtitle"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.9 (foreground color: #9b918a, background color: #faf8f5, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card fade-in stagger-1 visible\">",
                  "target": [
                    ".article-card.stagger-1"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #6b8e5a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"article-card__category\">Technique</span>",
          "target": [
            ".article-card.stagger-1 > .article-card__body > .article-card__meta > .article-card__category"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #6b8e5a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card fade-in stagger-1 visible\">",
                  "target": [
                    ".article-card.stagger-1"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<time datetime=\"2024-10-15\">Oct 15, 2024</time>",
          "target": [
            "time[datetime=\"2024-10-15\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card fade-in stagger-1 visible\">",
                  "target": [
                    ".article-card.stagger-1"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>8 min read</span>",
          "target": [
            ".article-card.stagger-1 > .article-card__body > .article-card__meta > span:nth-child(3)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card fade-in stagger-2 visible\">",
                  "target": [
                    ".article-card.stagger-2"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #6b8e5a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"article-card__category\">Science</span>",
          "target": [
            ".article-card.stagger-2 > .article-card__body > .article-card__meta > .article-card__category"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #6b8e5a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card fade-in stagger-2 visible\">",
                  "target": [
                    ".article-card.stagger-2"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<time datetime=\"2024-10-10\">Oct 10, 2024</time>",
          "target": [
            "time[datetime=\"2024-10-10\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card fade-in stagger-2 visible\">",
                  "target": [
                    ".article-card.stagger-2"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>12 min read</span>",
          "target": [
            ".article-card.stagger-2 > .article-card__body > .article-card__meta > span:nth-child(3)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6b8e5a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.72,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card fade-in stagger-3 visible\">",
                  "target": [
                    ".stagger-3.article-card"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #6b8e5a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"article-card__category\">Pairing</span>",
          "target": [
            ".stagger-3.article-card > .article-card__body > .article-card__meta > .article-card__category"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #6b8e5a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card fade-in stagger-3 visible\">",
                  "target": [
                    ".stagger-3.article-card"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<time datetime=\"2024-10-05\">Oct 5, 2024</time>",
          "target": [
            "time[datetime=\"2024-10-05\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<article class=\"article-card fade-in stagger-3 visible\">",
                  "target": [
                    ".stagger-3.article-card"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>10 min read</span>",
          "target": [
            ".stagger-3.article-card > .article-card__body > .article-card__meta > span:nth-child(3)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#faf8f5",
                "contrastRatio": 2.9,
                "fontSize": "10.5pt (14px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.9 (foreground color: #9b918a, background color: #faf8f5, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-subtitle\">Evidence-Based</span>",
          "target": [
            "#nutrition > .section-header > .section-title-group > .section-subtitle"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.9 (foreground color: #9b918a, background color: #faf8f5, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9a9997",
                "bgColor": "#35322f",
                "contrastRatio": 4.47,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<blockquote class=\"testimonial-card\">",
                  "target": [
                    "blockquote:nth-child(1)"
                  ]
                },
                {
                  "html": "<section class=\"testimonials fade-in visible\" aria-labelledby=\"testimonial-heading\">",
                  "target": [
                    ".testimonials"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #9a9997, background color: #35322f, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"testimonial-card__role\">Executive Chef, Hearth &amp; Grain</span>",
          "target": [
            "blockquote:nth-child(1) > .testimonial-card__author > div > .testimonial-card__role"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #9a9997, background color: #35322f, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9a9997",
                "bgColor": "#35322f",
                "contrastRatio": 4.47,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<blockquote class=\"testimonial-card\">",
                  "target": [
                    "blockquote:nth-child(2)"
                  ]
                },
                {
                  "html": "<section class=\"testimonials fade-in visible\" aria-labelledby=\"testimonial-heading\">",
                  "target": [
                    ".testimonials"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #9a9997, background color: #35322f, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"testimonial-card__role\">Master Sommelier, The Vault Restaurant</span>",
          "target": [
            "blockquote:nth-child(2) > .testimonial-card__author > div > .testimonial-card__role"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #9a9997, background color: #35322f, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9a9997",
                "bgColor": "#35322f",
                "contrastRatio": 4.47,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<blockquote class=\"testimonial-card\">",
                  "target": [
                    "blockquote:nth-child(3)"
                  ]
                },
                {
                  "html": "<section class=\"testimonials fade-in visible\" aria-labelledby=\"testimonial-heading\">",
                  "target": [
                    ".testimonials"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #9a9997, background color: #35322f, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"testimonial-card__role\">Clinical Nutritionist, Metabolic Health Clinic</span>",
          "target": [
            "blockquote:nth-child(3) > .testimonial-card__author > div > .testimonial-card__role"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #9a9997, background color: #35322f, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#faf8f5",
                "contrastRatio": 2.9,
                "fontSize": "10.5pt (14px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.9 (foreground color: #9b918a, background color: #faf8f5, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-subtitle\">Your Questions</span>",
          "target": [
            ".faq > .container > .section-header > .section-title-group > .section-subtitle"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.9 (foreground color: #9b918a, background color: #faf8f5, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#9b918a",
                "bgColor": "#ffffff",
                "contrastRatio": 3.08,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"widget fade-in stagger-2 visible\" id=\"newsletter\">",
                  "target": [
                    "#newsletter"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"newsletter-note\">By subscribing you agree to our <a href=\"#\" style=\"color: var(--color-brand-primary);\">Privacy Policy</a>.</p>",
          "target": [
            ".newsletter-note"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.08 (foreground color: #9b918a, background color: #ffffff, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ecdcd5",
                "bgColor": "#a0522d",
                "contrastRatio": 4.21,
                "fontSize": "13.5pt (18px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"newsletter-section fade-in visible\" aria-labelledby=\"nl-heading\">",
                  "target": [
                    ".newsletter-section"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.21 (foreground color: #ecdcd5, background color: #a0522d, font size: 13.5pt (18px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"lead\">The only newsletter that makes you a better cook before you finish your morning coffee.</p>",
          "target": [
            ".lead"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.21 (foreground color: #ecdcd5, background color: #a0522d, font size: 13.5pt (18px), font weight: normal). Expected contrast ratio of 4.5:1"
        }
      ]
    },
    {
      "id": "link-in-text-block",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2a",
        "wcag141",
        "TTv5",
        "TT13.a",
        "EN-301-549",
        "EN-9.1.4.1"
      ],
      "description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
      "help": "Links must be distinguishable without relying on color",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "link-in-text-block",
              "data": {
                "messageKey": "fgContrast",
                "contrastRatio": 1.82,
                "requiredContrastRatio": 3,
                "nodeColor": "#a0522d",
                "parentColor": "#9b918a"
              },
              "relatedNodes": [
                {
                  "html": "<p class=\"newsletter-note\">By subscribing you agree to our <a href=\"#\" style=\"color: var(--color-brand-primary);\">Privacy Policy</a>.</p>",
                  "target": [
                    ".newsletter-note"
                  ]
                }
              ],
              "impact": "serious",
              "message": "The link has insufficient color contrast of 1.82:1 with the surrounding text. (Minimum contrast is 3:1, link text: #a0522d, surrounding text: #9b918a)"
            },
            {
              "id": "link-in-text-block-style",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<p class=\"newsletter-note\">By subscribing you agree to our <a href=\"#\" style=\"color: var(--color-brand-primary);\">Privacy Policy</a>.</p>",
                  "target": [
                    ".newsletter-note"
                  ]
                }
              ],
              "impact": "serious",
              "message": "The link has no styling (such as underline) to distinguish it from the surrounding text"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#\" style=\"color: var(--color-brand-primary);\">Privacy Policy</a>",
          "target": [
            ".newsletter-note > a[href=\"#\"]"
          ],
          "failureSummary": "Fix any of the following:\n  The link has insufficient color contrast of 1.82:1 with the surrounding text. (Minimum contrast is 3:1, link text: #a0522d, surrounding text: #9b918a)\n  The link has no styling (such as underline) to distinguish it from the surrounding text"
        }
      ]
    }
  ],
  "coverage": {
    "contract": "main-document-vertical-scroll",
    "complete": true,
    "positions": [
      {
        "y": 0,
        "height": 7366
      },
      {
        "y": 576,
        "height": 7366
      },
      {
        "y": 1152,
        "height": 7366
      },
      {
        "y": 1728,
        "height": 7366
      },
      {
        "y": 2304,
        "height": 7366
      },
      {
        "y": 2880,
        "height": 7366
      },
      {
        "y": 3456,
        "height": 7366
      },
      {
        "y": 4032,
        "height": 7366
      },
      {
        "y": 4608,
        "height": 7366
      },
      {
        "y": 5184,
        "height": 7366
      },
      {
        "y": 5760,
        "height": 7366
      },
      {
        "y": 6336,
        "height": 7366
      },
      {
        "y": 6646,
        "height": 7366
      }
    ],
    "scans": 14,
    "max_states": 512,
    "settle_ms": 5000,
    "page_timeout_seconds": 150,
    "layout_stability": "consecutive 100ms size samples within one CSS pixel",
    "animation_settling": "finite animations present when scroll resources are ready finish or are cancelled",
    "interactive_states": "not exercised",
    "horizontal_scroll": "not exercised"
  }
}
System Prompt
You are a lead web developer at a top digital agency, tasked with creating a one-page website for a new client based on the given specifications, delivered as an HTML file. First non-whitespace char '<', last non-whitespace char '>'. Use the following services to generate placeholder images where needed:
- placehold.co (text): https://placehold.co/[{w}x{h}|{size}][/{bg-color}/{text-color}]?text={text}&font=[lato|lora|montserrat|noto sans|open sans|oswald|playfair display|poppins|pt sans|raleway|roboto|source sans|source sans pro]
- picsum.photos (photos): https://picsum.photos/[{w}/{h}|{size}]?[grayscale][&blur={1-10}]
- pravatar.cc (avatars): https://i.pravatar.cc/{size}?u={identifier}
Choose sizes appropriate to layout.
User Prompt
Create a **complete, polished, production-quality** primary web page for a new client in the "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: "About", "Recipes", "Contact".
-   **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: "Cooking Tips", "Culinary Trends", "Wine Pairings".
    -   **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "terroir", "umami", "sautéing".
    -   **Visuals:** Integrate relevant placeholder images logically within the content sections.
    -   **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Book Event", "Reserve Table", "Watch Tutorial".
-   **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: "wine pairing finder".
-   **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "daily specials", "food news", "seasonal ingredients".
-   **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.