Meituan LongCat 2.0 – Food and Drink

via AtlasCloud · Generated

  • AIMAC Debt 5.27
  • Cost $0.035
  • Total Violations 31
  • HTML Size 64 KB
  • Em Dashes 18

Screenshot

View Meituan LongCat 2.0 Food and Drink page View Live Page

Accessibility Issues Found

31 Serious

  • color-contrast serious 31 instances

    Elements must meet minimum color contrast ratio thresholds

    Example HTML <a href="#newsletter" class="btn btn-secondary nav-cta">Subscribe</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 & Vine — Your definitive guide to recipes, wine pairings, restaurant reviews, and culinary techniques.">
<title>Savor & Vine — Where Culinary Artistry Meets Exceptional Taste</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&family=Source+Sans+Pro:wght@300;400;600;700&display=swap" rel="stylesheet">
<style>
:root {
  --color-primary: #1B3A2D;
  --color-primary-light: #2D5A47;
  --color-primary-dark: #0F2419;
  --color-secondary: #C8854B;
  --color-secondary-light: #D4A373;
  --color-secondary-dark: #A66B3A;
  --color-accent: #9B2226;
  --color-accent-light: #C44536;
  --color-cream: #FDF8F3;
  --color-cream-dark: #F5EDE4;
  --color-white: #FFFFFF;
  --color-text: #1A1A1A;
  --color-text-light: #3D3D3D;
  --color-text-muted: #6B6B6B;
  --color-border: #E0D5C7;
  --color-success: #4CAF50;
  --color-warning: #FF9800;
  --font-heading: 'Playfair Display', Georgia, serif;
  --font-body: 'Source Sans Pro', 'Segoe UI', sans-serif;
  --shadow-sm: 0 2px 4px rgba(0,0,0,0.05);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.08);
  --shadow-lg: 0 8px 24px rgba(0,0,0,0.12);
  --shadow-xl: 0 16px 48px rgba(0,0,0,0.15);
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --transition: all 0.3s ease;
  --transition-fast: all 0.15s ease;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; font-size: 16px; }

body {
  font-family: var(--font-body);
  color: var(--color-text);
  background-color: var(--color-cream);
  line-height: 1.7;
  overflow-x: hidden;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  line-height: 1.2;
  color: var(--color-primary-dark);
}

a { text-decoration: none; color: inherit; transition: var(--transition-fast); }

img { max-width: 100%; height: auto; display: block; }

ul { list-style: none; }

.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px;
}

.section-padding { padding: 80px 0; }

.section-label {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 2px;
  color: var(--color-secondary);
  margin-bottom: 8px;
}

.section-title {
  font-size: 2.5rem;
  font-weight: 700;
  margin-bottom: 16px;
  color: var(--color-primary-dark);
}

.section-subtitle {
  font-size: 1.1rem;
  color: var(--color-text-muted);
  max-width: 600px;
  line-height: 1.8;
}

.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 28px;
  font-family: var(--font-body);
  font-size: 0.95rem;
  font-weight: 600;
  border-radius: var(--radius-md);
  border: none;
  cursor: pointer;
  transition: var(--transition);
  text-align: center;
  justify-content: center;
}

.btn-primary {
  background: var(--color-primary);
  color: var(--color-white);
}
.btn-primary:hover {
  background: var(--color-primary-light);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

.btn-secondary {
  background: var(--color-secondary);
  color: var(--color-white);
}
.btn-secondary:hover {
  background: var(--color-secondary-dark);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

.btn-outline {
  background: transparent;
  color: var(--color-primary);
  border: 2px solid var(--color-primary);
}
.btn-outline:hover {
  background: var(--color-primary);
  color: var(--color-white);
  transform: translateY(-2px);
}

.btn-accent {
  background: var(--color-accent);
  color: var(--color-white);
}
.btn-accent:hover {
  background: var(--color-accent-light);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

/* HEADER */
.header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  background: rgba(253, 248, 243, 0.95);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--color-border);
  transition: var(--transition);
}

.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 72px;
}

.logo {
  display: flex;
  align-items: center;
  gap: 12px;
}

.logo-icon {
  width: 44px;
  height: 44px;
  border-radius: var(--radius-sm);
}

.logo-text {
  display: flex;
  flex-direction: column;
}

.logo-name {
  font-family: var(--font-heading);
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--color-primary-dark);
  line-height: 1.1;
}

.logo-tagline {
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: var(--color-text-muted);
  font-weight: 600;
}

.nav { display: flex; align-items: center; gap: 8px; }

.nav-link {
  padding: 8px 16px;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--color-text-light);
  border-radius: var(--radius-sm);
  transition: var(--transition-fast);
}

.nav-link:hover {
  color: var(--color-primary);
  background: rgba(27, 58, 45, 0.06);
}

.nav-cta {
  padding: 10px 20px;
  font-size: 0.85rem;
  margin-left: 8px;
}

.mobile-toggle {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 8px;
}

.mobile-toggle span {
  display: block;
  width: 24px;
  height: 2px;
  background: var(--color-primary);
  transition: var(--transition);
  border-radius: 2px;
}

/* HERO */
.hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  overflow: hidden;
  padding-top: 72px;
}

.hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.hero-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(27, 58, 45, 0.85) 0%, rgba(15, 36, 25, 0.7) 50%, rgba(155, 34, 38, 0.4) 100%);
  z-index: 1;
}

.hero-content {
  position: relative;
  z-index: 2;
  max-width: 700px;
  padding: 60px 0;
}

.hero-label {
  display: inline-block;
  padding: 6px 16px;
  background: rgba(200, 133, 75, 0.2);
  border: 1px solid rgba(200, 133, 75, 0.4);
  border-radius: 50px;
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 2px;
  color: var(--color-secondary-light);
  margin-bottom: 24px;
}

.hero-title {
  font-size: 3.8rem;
  font-weight: 700;
  color: var(--color-white);
  margin-bottom: 20px;
  line-height: 1.1;
}

.hero-title em {
  font-style: italic;
  color: var(--color-secondary-light);
}

.hero-description {
  font-size: 1.15rem;
  color: rgba(255, 255, 255, 0.85);
  line-height: 1.8;
  margin-bottom: 36px;
  max-width: 560px;
}

.hero-actions {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

.hero-stats {
  display: flex;
  gap: 40px;
  margin-top: 48px;
  padding-top: 32px;
  border-top: 1px solid rgba(255, 255, 255, 0.15);
}

.hero-stat {
  text-align: left;
}

.hero-stat-number {
  font-family: var(--font-heading);
  font-size: 2rem;
  font-weight: 700;
  color: var(--color-secondary-light);
}

.hero-stat-label {
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.6);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 1px;
}

/* FEATURED RECIPES + SIDEBAR */
.recipes-section {
  background: var(--color-cream);
}

.recipes-layout {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 40px;
  margin-top: 40px;
}

.recipes-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}

.recipe-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: var(--transition);
  border: 1px solid var(--color-border);
}

.recipe-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}

.recipe-card-image {
  position: relative;
  height: 200px;
  overflow: hidden;
}

.recipe-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}

.recipe-card:hover .recipe-card-image img {
  transform: scale(1.05);
}

.recipe-card-badge {
  position: absolute;
  top: 12px;
  left: 12px;
  padding: 4px 12px;
  background: var(--color-primary);
  color: var(--color-white);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  border-radius: 50px;
}

.recipe-card-body {
  padding: 20px;
}

.recipe-card-title {
  font-size: 1.15rem;
  font-weight: 700;
  margin-bottom: 8px;
  color: var(--color-primary-dark);
}

.recipe-card-desc {
  font-size: 0.9rem;
  color: var(--color-text-muted);
  line-height: 1.6;
  margin-bottom: 16px;
}

.recipe-card-meta {
  display: flex;
  gap: 16px;
  font-size: 0.8rem;
  color: var(--color-text-muted);
  font-weight: 600;
}

.recipe-card-meta span {
  display: flex;
  align-items: center;
  gap: 4px;
}

.recipe-card-cta {
  display: block;
  margin-top: 16px;
  padding: 10px;
  text-align: center;
  background: var(--color-cream-dark);
  color: var(--color-primary);
  font-weight: 600;
  font-size: 0.85rem;
  border-radius: var(--radius-sm);
  transition: var(--transition-fast);
}

.recipe-card-cta:hover {
  background: var(--color-primary);
  color: var(--color-white);
}

/* SIDEBAR */
.sidebar {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.sidebar-widget {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 24px;
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-sm);
}

.sidebar-widget-title {
  font-family: var(--font-heading);
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--color-primary-dark);
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--color-secondary);
}

.trending-item {
  display: flex;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid var(--color-border);
  transition: var(--transition-fast);
}

.trending-item:last-child { border-bottom: none; }

.trending-item:hover { transform: translateX(4px); }

.trending-thumb {
  width: 56px;
  height: 56px;
  border-radius: var(--radius-sm);
  object-fit: cover;
  flex-shrink: 0;
}

.trending-info { flex: 1; }

.trending-title {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-text);
  line-height: 1.4;
  margin-bottom: 4px;
}

.trending-views {
  font-size: 0.75rem;
  color: var(--color-text-muted);
}

.wine-feature {
  text-align: center;
}

.wine-feature-image {
  width: 100%;
  height: 160px;
  object-fit: cover;
  border-radius: var(--radius-md);
  margin-bottom: 12px;
}

.wine-feature-name {
  font-family: var(--font-heading);
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-primary-dark);
  margin-bottom: 4px;
}

.wine-feature-type {
  font-size: 0.8rem;
  color: var(--color-secondary);
  font-weight: 600;
  margin-bottom: 8px;
}

.wine-feature-desc {
  font-size: 0.85rem;
  color: var(--color-text-muted);
  line-height: 1.6;
}

.chef-feature {
  text-align: center;
}

.chef-avatar {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  object-fit: cover;
  margin: 0 auto 12px;
  border: 3px solid var(--color-secondary);
}

.chef-name {
  font-family: var(--font-heading);
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-primary-dark);
}

.chef-specialty {
  font-size: 0.8rem;
  color: var(--color-secondary);
  font-weight: 600;
  margin-bottom: 8px;
}

.chef-bio {
  font-size: 0.85rem;
  color: var(--color-text-muted);
  line-height: 1.6;
}

.quick-tip {
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
  border-radius: var(--radius-lg);
  padding: 24px;
  color: var(--color-white);
}

.quick-tip-label {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 2px;
  color: var(--color-secondary-light);
  font-weight: 700;
  margin-bottom: 8px;
}

.quick-tip-text {
  font-size: 0.9rem;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.9);
}

/* WINE PAIRINGS */
.wine-section {
  background: var(--color-white);
}

.wine-pairings-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  margin-top: 40px;
}

.wine-pairing-card {
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid var(--color-border);
  transition: var(--transition);
  background: var(--color-cream);
}

.wine-pairing-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}

.wine-pairing-image {
  height: 220px;
  overflow: hidden;
}

.wine-pairing-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}

.wine-pairing-card:hover .wine-pairing-image img {
  transform: scale(1.05);
}

.wine-pairing-body {
  padding: 24px;
}

.wine-pairing-name {
  font-family: var(--font-heading);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--color-primary-dark);
  margin-bottom: 4px;
}

.wine-pairing-type {
  font-size: 0.8rem;
  color: var(--color-secondary);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-bottom: 12px;
}

.wine-pairing-desc {
  font-size: 0.9rem;
  color: var(--color-text-muted);
  line-height: 1.7;
  margin-bottom: 16px;
}

.wine-pairing-notes {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.wine-note {
  padding: 4px 10px;
  background: var(--color-cream-dark);
  border-radius: 50px;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-text-muted);
}

/* TECHNIQUES */
.techniques-section {
  background: var(--color-cream);
}

.techniques-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  margin-top: 40px;
}

.technique-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 28px;
  border: 1px solid var(--color-border);
  transition: var(--transition);
  text-align: center;
}

.technique-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: var(--color-secondary);
}

.technique-icon {
  width: 56px;
  height: 56px;
  margin: 0 auto 16px;
  background: var(--color-cream-dark);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
}

.technique-name {
  font-family: var(--font-heading);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--color-primary-dark);
  margin-bottom: 8px;
}

.technique-desc {
  font-size: 0.85rem;
  color: var(--color-text-muted);
  line-height: 1.6;
  margin-bottom: 12px;
}

.technique-level {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 50px;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
}

.level-beginner { background: #E8F5E9; color: #2E7D32; }
.level-intermediate { background: #FFF3E0; color: #E65100; }
.level-advanced { background: #FFEBEE; color: #C62828; }

/* RESTAURANT REVIEWS */
.reviews-section {
  background: var(--color-white);
}

.reviews-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  margin-top: 40px;
}

.review-card {
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid var(--color-border);
  transition: var(--transition);
  background: var(--color-cream);
}

.review-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}

.review-image {
  height: 180px;
  overflow: hidden;
}

.review-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.review-body {
  padding: 24px;
}

.review-stars {
  color: var(--color-secondary);
  font-size: 0.9rem;
  margin-bottom: 8px;
}

.review-restaurant {
  font-family: var(--font-heading);
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--color-primary-dark);
  margin-bottom: 4px;
}

.review-cuisine {
  font-size: 0.8rem;
  color: var(--color-secondary);
  font-weight: 600;
  margin-bottom: 12px;
}

.review-text {
  font-size: 0.9rem;
  color: var(--color-text-muted);
  line-height: 1.7;
  font-style: italic;
  margin-bottom: 12px;
}

.review-author {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--color-text-light);
}

/* NUTRITION CALCULATOR */
.calculator-section {
  background: linear-gradient(135deg, var(--color-primary-dark) 0%, var(--color-primary) 100%);
  color: var(--color-white);
}

.calculator-section .section-label { color: var(--color-secondary-light); }
.calculator-section .section-title { color: var(--color-white); }
.calculator-section .section-subtitle { color: rgba(255,255,255,0.7); }

.calculator-wrapper {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  margin-top: 40px;
  align-items: start;
}

.calculator-ingredients {
  background: rgba(255,255,255,0.08);
  border-radius: var(--radius-lg);
  padding: 28px;
  border: 1px solid rgba(255,255,255,0.12);
}

.calculator-subtitle {
  font-family: var(--font-heading);
  font-size: 1.1rem;
  font-weight: 700;
  margin-bottom: 16px;
  color: var(--color-secondary-light);
}

.ingredient-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 16px;
}

.ingredient-tab {
  padding: 6px 14px;
  border-radius: 50px;
  font-size: 0.75rem;
  font-weight: 600;
  background: rgba(255,255,255,0.1);
  color: rgba(255,255,255,0.7);
  border: 1px solid rgba(255,255,255,0.15);
  cursor: pointer;
  transition: var(--transition-fast);
}

.ingredient-tab.active, .ingredient-tab:hover {
  background: var(--color-secondary);
  color: var(--color-white);
  border-color: var(--color-secondary);
}

.ingredient-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 320px;
  overflow-y: auto;
}

.ingredient-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  background: rgba(255,255,255,0.06);
  border-radius: var(--radius-sm);
  border: 1px solid rgba(255,255,255,0.08);
  transition: var(--transition-fast);
}

.ingredient-item:hover {
  background: rgba(255,255,255,0.12);
}

.ingredient-name {
  font-size: 0.85rem;
  font-weight: 600;
}

.ingredient-cals {
  font-size: 0.75rem;
  color: rgba(255,255,255,0.5);
  margin-left: 8px;
}

.ingredient-add {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--color-secondary);
  color: var(--color-white);
  border: none;
  cursor: pointer;
  font-size: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: var(--transition-fast);
}

.ingredient-add:hover {
  background: var(--color-secondary-light);
  transform: scale(1.1);
}

.calculator-result {
  background: rgba(255,255,255,0.08);
  border-radius: var(--radius-lg);
  padding: 28px;
  border: 1px solid rgba(255,255,255,0.12);
}

.meal-list {
  min-height: 160px;
  margin-bottom: 20px;
}

.meal-list-title {
  font-family: var(--font-heading);
  font-size: 1.1rem;
  font-weight: 700;
  margin-bottom: 12px;
  color: var(--color-secondary-light);
}

.meal-empty {
  text-align: center;
  padding: 32px;
  color: rgba(255,255,255,0.4);
  font-size: 0.9rem;
}

.meal-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  background: rgba(255,255,255,0.06);
  border-radius: var(--radius-sm);
  margin-bottom: 6px;
  border: 1px solid rgba(255,255,255,0.08);
}

.meal-item-name {
  font-size: 0.85rem;
  font-weight: 600;
}

.meal-item-macros {
  display: flex;
  gap: 12px;
  font-size: 0.75rem;
  color: rgba(255,255,255,0.5);
}

.meal-item-remove {
  background: none;
  border: none;
  color: rgba(255,255,255,0.4);
  cursor: pointer;
  font-size: 1.1rem;
  padding: 4px;
  transition: var(--transition-fast);
}

.meal-item-remove:hover { color: var(--color-accent-light); }

.macro-totals {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  padding-top: 20px;
  border-top: 1px solid rgba(255,255,255,0.12);
}

.macro-item {
  text-align: center;
  padding: 12px;
  background: rgba(255,255,255,0.06);
  border-radius: var(--radius-sm);
}

.macro-value {
  font-family: var(--font-heading);
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--color-secondary-light);
}

.macro-label {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: rgba(255,255,255,0.5);
  margin-top: 4px;
}

.calculator-reset {
  margin-top: 16px;
  width: 100%;
  padding: 10px;
  background: rgba(255,255,255,0.1);
  color: rgba(255,255,255,0.7);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-weight: 600;
  font-size: 0.85rem;
  transition: var(--transition-fast);
}

.calculator-reset:hover {
  background: var(--color-accent);
  color: var(--color-white);
  border-color: var(--color-accent);
}

/* TESTIMONIALS */
.testimonials-section {
  background: var(--color-cream);
}

.testimonials-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  margin-top: 40px;
}

.testimonial-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 32px;
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-sm);
  transition: var(--transition);
}

.testimonial-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}

.testimonial-quote {
  font-size: 0.95rem;
  color: var(--color-text-light);
  line-height: 1.8;
  margin-bottom: 20px;
  font-style: italic;
}

.testimonial-author {
  display: flex;
  align-items: center;
  gap: 12px;
}

.testimonial-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
}

.testimonial-name {
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--color-primary-dark);
}

.testimonial-role {
  font-size: 0.8rem;
  color: var(--color-text-muted);
}

/* FAQ */
.faq-section {
  background: var(--color-white);
}

.faq-list {
  max-width: 760px;
  margin: 40px auto 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.faq-item {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow: hidden;
  transition: var(--transition);
}

.faq-item:hover { border-color: var(--color-secondary); }

.faq-question {
  width: 100%;
  padding: 20px 24px;
  background: var(--color-cream);
  border: none;
  text-align: left;
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-primary-dark);
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  transition: var(--transition-fast);
}

.faq-question:hover { background: var(--color-cream-dark); }

.faq-icon {
  font-size: 1.2rem;
  transition: transform 0.3s ease;
  flex-shrink: 0;
}

.faq-item.active .faq-icon { transform: rotate(45deg); }

.faq-answer {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease, padding 0.3s ease;
}

.faq-item.active .faq-answer {
  max-height: 300px;
  padding: 0 24px 20px;
}

.faq-answer p {
  font-size: 0.9rem;
  color: var(--color-text-muted);
  line-height: 1.8;
}

/* NEWSLETTER */
.newsletter-section {
  background: linear-gradient(135deg, var(--color-secondary) 0%, var(--color-secondary-dark) 100%);
  text-align: center;
  color: var(--color-white);
}

.newsletter-section .section-title { color: var(--color-white); }
.newsletter-section .section-subtitle { color: rgba(255,255,255,0.8); margin: 0 auto; }

.newsletter-form {
  display: flex;
  max-width: 480px;
  margin: 32px auto 0;
  gap: 8px;
}

.newsletter-input {
  flex: 1;
  padding: 14px 20px;
  border-radius: var(--radius-md);
  border: 2px solid rgba(255,255,255,0.3);
  background: rgba(255,255,255,0.15);
  color: var(--color-white);
  font-family: var(--font-body);
  font-size: 0.95rem;
  outline: none;
  transition: var(--transition-fast);
}

.newsletter-input::placeholder { color: rgba(255,255,255,0.6); }
.newsletter-input:focus { border-color: var(--color-white); background: rgba(255,255,255,0.25); }

.newsletter-note {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.6);
  margin-top: 12px;
}

/* FOOTER */
.footer {
  background: var(--color-primary-dark);
  color: rgba(255,255,255,0.7);
  padding: 60px 0 0;
}

.footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 40px;
  padding-bottom: 40px;
  border-bottom: 1px solid rgba(255,255,255,0.1);
}

.footer-brand {
  max-width: 300px;
}

.footer-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
}

.footer-logo-icon {
  width: 36px;
  height: 36px;
  border-radius: var(--radius-sm);
}

.footer-logo-name {
  font-family: var(--font-heading);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--color-white);
}

.footer-desc {
  font-size: 0.9rem;
  line-height: 1.7;
  color: rgba(255,255,255,0.5);
  margin-bottom: 16px;
}

.footer-social {
  display: flex;
  gap: 10px;
}

.social-link {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(255,255,255,0.1);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.85rem;
  transition: var(--transition-fast);
}

.social-link:hover {
  background: var(--color-secondary);
  color: var(--color-white);
}

.footer-column-title {
  font-family: var(--font-heading);
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-white);
  margin-bottom: 16px;
}

.footer-links li {
  margin-bottom: 8px;
}

.footer-links a {
  font-size: 0.9rem;
  color: rgba(255,255,255,0.5);
  transition: var(--transition-fast);
}

.footer-links a:hover { color: var(--color-secondary-light); }

.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 0;
  font-size: 0.8rem;
  color: rgba(255,255,255,0.4);
}

.footer-legal {
  display: flex;
  gap: 20px;
}

.footer-legal a:hover { color: var(--color-secondary-light); }

/* SCROLL ANIMATIONS */
.fade-in {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.fade-in.visible {
  opacity: 1;
  transform: translateY(0);
}

/* RESPONSIVE */
@media (max-width: 1024px) {
  .recipes-layout { grid-template-columns: 1fr; }
  .sidebar { flex-direction: row; flex-wrap: wrap; }
  .sidebar-widget { flex: 1; min-width: 260px; }
  .calculator-wrapper { grid-template-columns: 1fr; }
  .techniques-grid { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 768px) {
  .nav { display: none; }
  .nav.open {
    display: flex;
    flex-direction: column;
    position: absolute;
    top: 72px;
    left: 0;
    right: 0;
    background: var(--color-cream);
    border-bottom: 1px solid var(--color-border);
    padding: 16px;
    gap: 4px;
  }
  .mobile-toggle { display: flex; }
  .hero-title { font-size: 2.4rem; }
  .hero-stats { gap: 24px; }
  .hero-stat-number { font-size: 1.5rem; }
  .recipes-grid { grid-template-columns: 1fr; }
  .wine-pairings-grid { grid-template-columns: 1fr; }
  .techniques-grid { grid-template-columns: 1fr; }
  .reviews-grid { grid-template-columns: 1fr; }
  .testimonials-grid { grid-template-columns: 1fr; }
  .macro-totals { grid-template-columns: repeat(2, 1fr); }
  .newsletter-form { flex-direction: column; }
  .footer-grid { grid-template-columns: 1fr; }
  .footer-bottom { flex-direction: column; gap: 12px; text-align: center; }
  .section-title { font-size: 2rem; }
  .section-padding { padding: 60px 0; }
}

@media (max-width: 480px) {
  .hero-title { font-size: 2rem; }
  .hero-actions { flex-direction: column; }
  .hero-stats { flex-direction: column; gap: 16px; }
  .sidebar { flex-direction: column; }
}
</style>
</head>
<body>

<!-- HEADER -->
<header class="header" id="header">
  <div class="container">
    <div class="header-inner">
      <a href="#" class="logo">
        <img src="https://placehold.co/88x88/1B3A2D/D4A373?text=SV&font=playfair+display" alt="Savor & Vine Logo" class="logo-icon">
        <div class="logo-text">
          <span class="logo-name">Savor & Vine</span>
          <span class="logo-tagline">Culinary Artistry & Exceptional Taste</span>
        </div>
      </a>
      <nav class="nav" id="nav">
        <a href="#recipes" class="nav-link">Recipes</a>
        <a href="#wine" class="nav-link">Wine</a>
        <a href="#reviews" class="nav-link">Restaurant Reviews</a>
        <a href="#techniques" class="nav-link">Techniques</a>
        <a href="#calculator" class="nav-link">Nutrition</a>
        <a href="#about" class="nav-link">About</a>
        <a href="#contact" class="nav-link">Contact</a>
        <a href="#newsletter" class="btn btn-secondary nav-cta">Subscribe</a>
      </nav>
      <button class="mobile-toggle" id="mobileToggle" aria-label="Toggle menu">
        <span></span><span></span><span></span>
      </button>
    </div>
  </div>
</header>

<!-- HERO -->
<section class="hero">
  <div class="hero-bg">
    <img src="https://picsum.photos/seed/savorvine-hero/1920/1080" alt="Beautifully plated gourmet dish">
  </div>
  <div class="hero-overlay"></div>
  <div class="container">
    <div class="hero-content">
      <span class="hero-label">Est. 2024 — Premium Food & Drink</span>
      <h1 class="hero-title">Discover the Art of <em>Exceptional Dining</em></h1>
      <p class="hero-description">From curated wine pairings to masterful cooking techniques, Savor & Vine is your definitive guide to the world of gastronomy. Explore thousands of recipes, expert restaurant reviews, and nutritional insights crafted for passionate food lovers who refuse to settle for ordinary.</p>
      <div class="hero-actions">
        <a href="#recipes" class="btn btn-secondary">Explore Recipes</a>
        <a href="#wine" class="btn btn-outline" style="border-color:rgba(255,255,255,0.4);color:#fff;">Wine Guide</a>
      </div>
      <div class="hero-stats">
        <div class="hero-stat">
          <div class="hero-stat-number">2,400+</div>
          <div class="hero-stat-label">Curated Recipes</div>
        </div>
        <div class="hero-stat">
          <div class="hero-stat-number">850+</div>
          <div class="hero-stat-label">Wine Reviews</div>
        </div>
        <div class="hero-stat">
          <div class="hero-stat-number">320+</div>
          <div class="hero-stat-label">Restaurant Guides</div>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- FEATURED RECIPES + SIDEBAR -->
<section class="recipes-section section-padding" id="recipes">
  <div class="container">
    <div class="fade-in">
      <span class="section-label">Chef's Selection</span>
      <h2 class="section-title">Featured Recipes</h2>
      <p class="section-subtitle">Hand-tested recipes from world-class chefs, ranging from approachable weeknight dinners to show-stopping dishes that will impress even the most discerning palate.</p>
    </div>
    <div class="recipes-layout fade-in">
      <div class="recipes-grid">
        <article class="recipe-card">
          <div class="recipe-card-image">
            <img src="https://picsum.photos/seed/duck-gastrique/600/400" alt="Pan-Seared Duck Breast with Cherry Gastrique">
            <span class="recipe-card-badge">Signature</span>
          </div>
          <div class="recipe-card-body">
            <h3 class="recipe-card-title">Pan-Seared Duck Breast with Cherry Gastrique</h3>
            <p class="recipe-card-desc">A sophisticated dish featuring perfectly seared duck breast with crispy skin, balanced by a rich cherry gastrique. Served alongside roasted root vegetables and a silky parsnip purée.</p>
            <div class="recipe-card-meta">
              <span>⏱ 45 min</span>
              <span>★ Advanced</span>
              <span>🍽 2 servings</span>
            </div>
            <a href="#" class="recipe-card-cta">View Full Recipe →</a>
          </div>
        </article>
        <article class="recipe-card">
          <div class="recipe-card-image">
            <img src="https://picsum.photos/seed/mushroom-risotto/600/400" alt="Wild Mushroom Risotto with Truffle Oil">
            <span class="recipe-card-badge">Vegetarian</span>
          </div>
          <div class="recipe-card-body">
            <h3 class="recipe-card-title">Wild Mushroom Risotto with Truffle Oil</h3>
            <p class="recipe-card-desc">Creamy Arborio rice slowly coaxed to perfection with a medley of wild mushrooms — chanterelles, porcini, and oyster — finished with aromatic truffle oil and aged Parmigiano-Reggiano.</p>
            <div class="recipe-card-meta">
              <span>⏱ 35 min</span>
              <span>★ Intermediate</span>
              <span>🍽 4 servings</span>
            </div>
            <a href="#" class="recipe-card-cta">View Full Recipe →</a>
          </div>
        </article>
        <article class="recipe-card">
          <div class="recipe-card-image">
            <img src="https://picsum.photos/seed/miso-cod/600/400" alt="Miso-Glazed Black Cod with Pickled Ginger">
            <span class="recipe-card-badge">Japanese</span>
          </div>
          <div class="recipe-card-body">
            <h3 class="recipe-card-title">Miso-Glazed Black Cod with Pickled Ginger</h3>
            <p class="recipe-card-desc">Buttery black cod marinated for 48 hours in a sweet white miso glaze, then broiled until caramelized. Served with fragrant jasmine rice and quick-pickled ginger for brightness.</p>
            <div class="recipe-card-meta">
              <span>⏱ 30 min + marinate</span>
              <span>★ Intermediate</span>
              <span>🍽 2 servings</span>
            </div>
            <a href="#" class="recipe-card-cta">View Full Recipe →</a>
          </div>
        </article>
        <article class="recipe-card">
          <div class="recipe-card-image">
            <img src="https://picsum.photos/seed/lamb-rack/600/400" alt="Herb-Crusted Lamb Rack with Ratatouille">
            <span class="recipe-card-badge">French</span>
          </div>
          <div class="recipe-card-body">
            <h3 class="recipe-card-title">Herb-Crusted Lamb Rack with Ratatouille</h3>
            <p class="recipe-card-desc">Premium lamb rack coated in fresh herbs de Provence and Dijon mustard, roasted to a perfect medium-rare. Served over a classic Provençal ratatouille of summer vegetables.</p>
            <div class="recipe-card-meta">
              <span>⏱ 55 min</span>
              <span>★ Advanced</span>
              <span>🍽 4 servings</span>
            </div>
            <a href="#" class="recipe-card-cta">View Full Recipe →</a>
          </div>
        </article>
      </div>
      <aside class="sidebar">
        <div class="sidebar-widget">
          <h3 class="sidebar-widget-title">Trending This Week</h3>
          <div class="trending-item">
            <img src="https://picsum.photos/seed/sourdough/112/112" alt="" class="trending-thumb">
            <div class="trending-info">
              <div class="trending-title">Sourdough Bread from Scratch</div>
              <div class="trending-views">2.4k views</div>
            </div>
          </div>
          <div class="trending-item">
            <img src="https://picsum.photos/seed/steak/112/112" alt="" class="trending-thumb">
            <div class="trending-info">
              <div class="trending-title">Perfect Steakhouse Steak at Home</div>
              <div class="trending-views">1.8k views</div>
            </div>
          </div>
          <div class="trending-item">
            <img src="https://picsum.photos/seed/pasta/112/112" alt="" class="trending-thumb">
            <div class="trending-info">
              <div class="trending-title">Homemade Pasta Without a Machine</div>
              <div class="trending-views">1.5k views</div>
            </div>
          </div>
          <div class="trending-item">
            <img src="https://picsum.photos/seed/souffle/112/112" alt="" class="trending-thumb">
            <div class="trending-info">
              <div class="trending-title">The Ultimate Chocolate Soufflé</div>
              <div class="trending-views">1.2k views</div>
            </div>
          </div>
          <div class="trending-item">
            <img src="https://picsum.photos/seed/hotsauce/112/112" alt="" class="trending-thumb">
            <div class="trending-info">
              <div class="trending-title">Fermented Hot Sauce Guide</div>
              <div class="trending-views">980 views</div>
            </div>
          </div>
        </div>
        <div class="sidebar-widget">
          <h3 class="sidebar-widget-title">Wine of the Week</h3>
          <div class="wine-feature">
            <img src="https://picsum.photos/seed/bordeaux-wine/400/200" alt="2019 Château Margaux" class="wine-feature-image">
            <div class="wine-feature-name">2019 Château Margaux</div>
            <div class="wine-feature-type">Bordeaux, France</div>
            <p class="wine-feature-desc">An exceptional vintage with notes of blackcurrant, violet, and cedar. Silky tannins and a long, elegant finish. Pair with lamb or aged Comté cheese.</p>
          </div>
        </div>
        <div class="sidebar-widget">
          <h3 class="sidebar-widget-title">Featured Chef</h3>
          <div class="chef-feature">
            <img src="https://i.pravatar.cc/160?u=maria-santos" alt="Chef Maria Santos" class="chef-avatar">
            <div class="chef-name">Chef Maria Santos</div>
            <div class="chef-specialty">Modern Mediterranean Cuisine</div>
            <p class="chef-bio">Executive Chef at Osteria Bella, specializing in sustainable, locally-sourced Mediterranean dishes. James Beard Award nominee 2023.</p>
          </div>
        </div>
        <div class="quick-tip">
          <div class="quick-tip-label">Chef's Quick Tip</div>
          <p class="quick-tip-text">Always let your meat come to room temperature for 30–45 minutes before cooking. This ensures even heat penetration and superior caramelization through the Maillard reaction.</p>
        </div>
      </aside>
    </div>
  </div>
</section>

<!-- WINE PAIRINGS -->
<section class="wine-section section-padding" id="wine">
  <div class="container">
    <div class="fade-in" style="text-align:center;">
      <span class="section-label">Sommelier's Picks</span>
      <h2 class="section-title">Curated Wine Pairings</h2>
      <p class="section-subtitle" style="margin:0 auto;">The art of pairing wine with food lies in balancing acidity, tannins, body, and flavor intensity. Our sommelier team has crafted these expert pairings to elevate every meal.</p>
    </div>
    <div class="wine-pairings-grid fade-in">
      <div class="wine-pairing-card">
        <div class="wine-pairing-image">
          <img src="https://picsum.photos/seed/pinot-duck/600/400" alt="Pinot Noir with Roasted Duck">
        </div>
        <div class="wine-pairing-body">
          <h3 class="wine-pairing-name">Pinot Noir & Roasted Duck</h3>
          <div class="wine-pairing-type">Red Pairing</div>
          <p class="wine-pairing-desc">The earthy, fruit-forward notes of a Burgundy Pinot Noir complement the rich, fatty profile of duck beautifully. The wine's bright acidity cuts through the fat while its subtle mushroom undertones harmonize with the bird's natural gaminess.</p>
          <div class="wine-pairing-notes">
            <span class="wine-note">Earthy</span>
            <span class="wine-note">Cherry</span>
            <span class="wine-note">Medium Body</span>
            <span class="wine-note">Bright Acidity</span>
          </div>
        </div>
      </div>
      <div class="wine-pairing-card">
        <div class="wine-pairing-image">
          <img src="https://picsum.photos/seed/chardonnay-lobster/600/400" alt="Chardonnay with Lobster Thermidor">
        </div>
        <div class="wine-pairing-body">
          <h3 class="wine-pairing-name">Chardonnay & Lobster Thermidor</h3>
          <div class="wine-pairing-type">White Pairing</div>
          <p class="wine-pairing-desc">A full-bodied, oaked Chardonnay from Meursault stands up magnificently to the richness of lobster in cream sauce. The wine's buttery texture mirrors the dish's luxurious mouthfeel, while its mineral backbone provides essential contrast.</p>
          <div class="wine-pairing-notes">
            <span class="wine-note">Buttery</span>
            <span class="wine-note">Vanilla</span>
            <span class="wine-note">Full Body</span>
            <span class="wine-note">Mineral</span>
          </div>
        </div>
      </div>
      <div class="wine-pairing-card">
        <div class="wine-pairing-image">
          <img src="https://picsum.photos/seed/barolo-ribs/600/400" alt="Barolo with Braised Short Ribs">
        </div>
        <div class="wine-pairing-body">
          <h3 class="wine-pairing-name">Barolo & Braised Short Ribs</h3>
          <div class="wine-pairing-type">Bold Pairing</div>
          <p class="wine-pairing-desc">The bold tannins and complex flavors of a Piedmontese Barolo — with its signature notes of tar, roses, and dried cherry — are a perfect match for slow-braised short ribs. The wine's structure stands up to the intense, concentrated flavors of the meat.</p>
          <div class="wine-pairing-notes">
            <span class="wine-note">Tannic</span>
            <span class="wine-note">Rose</span>
            <span class="wine-note">Tar</span>
            <span class="wine-note">Full Body</span>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- TECHNIQUE TUTORIALS -->
<section class="techniques-section section-padding" id="techniques">
  <div class="container">
    <div class="fade-in" style="text-align:center;">
      <span class="section-label">Master Your Craft</span>
      <h2 class="section-title">Essential Technique Tutorials</h2>
      <p class="section-subtitle" style="margin:0 auto;">Build your culinary foundation with our in-depth technique guides. From fundamental knife skills to advanced molecular gastronomy, these tutorials will transform your cooking.</p>
    </div>
    <div class="techniques-grid fade-in">
      <div class="technique-card">
        <div class="technique-icon">🫧</div>
        <h3 class="technique-name">The Art of Emulsification</h3>
        <p class="technique-desc">Learn the science behind creating stable vinaigrettes, hollandaise, and aioli. Understand how lecithin in egg yolks bridges oil and water for silky, cohesive sauces.</p>
        <span class="technique-level level-intermediate">Intermediate</span>
      </div>
      <div class="technique-card">
        <div class="technique-icon">🔥</div>
        <h3 class="technique-name">Perfecting the Maillard Reaction</h3>
        <p class="technique-desc">Master the chemical reaction between amino acids and reducing sugars that creates complex flavors and beautiful browning on seared meats, roasted vegetables, and toasted breads.</p>
        <span class="technique-level level-beginner">Beginner</span>
      </div>
      <div class="technique-card">
        <div class="technique-icon">🔪</div>
        <h3 class="technique-name">Knife Skills Mastery</h3>
        <p class="technique-desc">From julienne to chiffonade, brunoise to tourné — develop the precise knife techniques that professional chefs rely on for consistent, beautiful, and efficient food preparation.</p>
        <span class="technique-level level-beginner">Beginner</span>
      </div>
      <div class="technique-card">
        <div class="technique-icon">🌡</div>
        <h3 class="technique-name">Sous Vide Fundamentals</h3>
        <p class="technique-desc">Explore precision temperature cooking that yields perfectly consistent results every time. Learn about bagging techniques, water bath management, and finishing methods.</p>
        <span class="technique-level level-advanced">Advanced</span>
      </div>
    </div>
  </div>
</section>

<!-- RESTAURANT REVIEWS -->
<section class="reviews-section section-padding" id="reviews">
  <div class="container">
    <div class="fade-in" style="text-align:center;">
      <span class="section-label">Honest & Unbiased</span>
      <h2 class="section-title">Restaurant Reviews</h2>
      <p class="section-subtitle" style="margin:0 auto;">Our team of experienced food critics dines anonymously and pays their own way. We believe in honest, thorough reviews that help you discover exceptional dining experiences.</p>
    </div>
    <div class="reviews-grid fade-in">
      <div class="review-card">
        <div class="review-image">
          <img src="https://picsum.photos/seed/restaurant-fine/600/400" alt="Le Jardin Étoilé restaurant interior">
        </div>
        <div class="review-body">
          <div class="review-stars">★★★★★</div>
          <h3 class="review-restaurant">Le Jardin Étoilé</h3>
          <div class="review-cuisine">French Fine Dining · $$$$</div>
          <p class="review-text">"An extraordinary tasting menu that reads like a love letter to seasonal produce. The hand-rolled pasta with black truffle shavings was transcendent, and the wine pairing was impeccable throughout."</p>
          <div class="review-author">— Reviewed by Claire Beaumont, Food Critic</div>
        </div>
      </div>
      <div class="review-card">
        <div class="review-image">
          <img src="https://picsum.photos/seed/restaurant-izakaya/600/400" alt="Sakura Izakaya restaurant interior">
        </div>
        <div class="review-body">
          <div class="review-stars">★★★★☆</div>
          <h3 class="review-restaurant">Sakura Izakaya</h3>
          <div class="review-cuisine">Japanese Izakaya · $$</div>
          <p class="review-text">"Authentic yakitori grilled over binchotan charcoal, with a smoky depth that's hard to replicate. The karaage was perfectly crispy, and the sake selection is thoughtfully curated. A neighborhood gem."</p>
          <div class="review-author">— Reviewed by Marcus Chen, Senior Editor</div>
        </div>
      </div>
      <div class="review-card">
        <div class="review-image">
          <img src="https://picsum.photos/seed/restaurant-trattoria/600/400" alt="Bella Notte Trattoria restaurant interior">
        </div>
        <div class="review-body">
          <div class="review-stars">★★★★★</div>
          <h3 class="review-restaurant">Bella Notte Trattoria</h3>
          <div class="review-cuisine">Italian Trattoria · $$$</div>
          <p class="review-text">"The cacio e pepe here is a masterclass in simplicity — perfectly al dente tonnarelli coated in a creamy emulsion of Pecorino Romano and starchy pasta water. Roman comfort food at its absolute finest."</p>
          <div class="review-author">— Reviewed by Antonio Rossi, Italian Cuisine Editor</div>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- NUTRITION CALCULATOR -->
<section class="calculator-section section-padding" id="calculator">
  <div class="container">
    <div class="fade-in" style="text-align:center;">
      <span class="section-label">Interactive Tool</span>
      <h2 class="section-title">Nutrition Calculator</h2>
      <p class="section-subtitle" style="margin:0 auto;">Build your meal ingredient by ingredient and see real-time nutritional breakdowns. Make informed choices about your diet with accurate macro and calorie tracking.</p>
    </div>
    <div class="calculator-wrapper fade-in">
      <div class="calculator-ingredients">
        <h3 class="calculator-subtitle">Select Ingredients</h3>
        <div class="ingredient-tabs" id="ingredientTabs">
          <button class="ingredient-tab active" data-category="proteins">Proteins</button>
          <button class="ingredient-tab" data-category="vegetables">Vegetables</button>
          <button class="ingredient-tab" data-category="grains">Grains</button>
          <button class="ingredient-tab" data-category="dairy">Dairy</button>
          <button class="ingredient-tab" data-category="fats">Fats & Oils</button>
        </div>
        <div class="ingredient-list" id="ingredientList">
          <!-- Populated by JS -->
        </div>
      </div>
      <div class="calculator-result">
        <h3 class="meal-list-title">Your Meal</h3>
        <div class="meal-list" id="mealList">
          <div class="meal-empty">Add ingredients to see nutritional totals</div>
        </div>
        <div class="macro-totals">
          <div class="macro-item">
            <div class="macro-value" id="totalCalories">0</div>
            <div class="macro-label">Calories</div>
          </div>
          <div class="macro-item">
            <div class="macro-value" id="totalProtein">0g</div>
            <div class="macro-label">Protein</div>
          </div>
          <div class="macro-item">
            <div class="macro-value" id="totalCarbs">0g</div>
            <div class="macro-label">Carbs</div>
          </div>
          <div class="macro-item">
            <div class="macro-value" id="totalFat">0g</div>
            <div class="macro-label">Fat</div>
          </div>
        </div>
        <button class="calculator-reset" id="resetCalculator">Reset Calculator</button>
      </div>
    </div>
  </div>
</section>

<!-- TESTIMONIALS -->
<section class="testimonials-section section-padding" id="about">
  <div class="container">
    <div class="fade-in" style="text-align:center;">
      <span class="section-label">Community Love</span>
      <h2 class="section-title">What Our Community Says</h2>
      <p class="section-subtitle" style="margin:0 auto;">Join thousands of passionate home cooks and food enthusiasts who trust Savor & Vine for inspiration, education, and culinary discovery.</p>
    </div>
    <div class="testimonials-grid fade-in">
      <div class="testimonial-card">
        <p class="testimonial-quote">"Savor & Vine has completely transformed how I approach cooking. The technique tutorials are incredibly detailed and easy to follow, and the wine pairings have given me the confidence to host dinner parties that truly impress."</p>
        <div class="testimonial-author">
          <img src="https://i.pravatar.cc/96?u=sarah-mitchell" alt="Sarah Mitchell" class="testimonial-avatar">
          <div>
            <div class="testimonial-name">Sarah Mitchell</div>
            <div class="testimonial-role">Home Cook & Blog Reader</div>
          </div>
        </div>
      </div>
      <div class="testimonial-card">
        <p class="testimonial-quote">"As a professional chef, I'm impressed by the depth and accuracy of the content here. The recipes are well-tested, the nutritional information is reliable, and the restaurant reviews are refreshingly honest."</p>
        <div class="testimonial-author">
          <img src="https://i.pravatar.cc/96?u=david-rodriguez" alt="Chef David Rodriguez" class="testimonial-avatar">
          <div>
            <div class="testimonial-name">Chef David Rodriguez</div>
            <div class="testimonial-role">Executive Chef, The Copper Room</div>
          </div>
        </div>
      </div>
      <div class="testimonial-card">
        <p class="testimonial-quote">"The nutrition calculator alone is worth visiting this site. I've been able to plan my meals more effectively, understand portion sizes, and make better dietary choices for my entire family."</p>
        <div class="testimonial-author">
          <img src="https://i.pravatar.cc/96?u=jennifer-lee" alt="Jennifer Lee" class="testimonial-avatar">
          <div>
            <div class="testimonial-name">Jennifer Lee</div>
            <div class="testimonial-role">Nutrition Enthusiast & Parent</div>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- FAQ -->
<section class="faq-section section-padding">
  <div class="container">
    <div class="fade-in" style="text-align:center;">
      <span class="section-label">Knowledge Base</span>
      <h2 class="section-title">Frequently Asked Questions</h2>
      <p class="section-subtitle" style="margin:0 auto;">Answers to the most common questions about cooking techniques, wine selection, and nutrition from our expert team.</p>
    </div>
    <div class="faq-list fade-in">
      <div class="faq-item active">
        <button class="faq-question">How do I properly season a cast iron pan?<span class="faq-icon">+</span></button>
        <div class="faq-answer">
          <p>Start by washing and thoroughly drying your pan. Apply a thin layer of high-smoke-point oil (such as flaxseed or grapeseed) to all surfaces, then wipe away excess until the pan looks nearly dry. Place it upside down in a 450°F oven for one hour. This process creates a polymerized layer through seasoning — a chemical reaction where oil bonds to the iron surface, creating a natural non-stick patina. Repeat 3–4 times for best results.</p>
        </div>
      </div>
      <div class="faq-item">
        <button class="faq-question">What's the best wine to pair with seafood?<span class="faq-icon">+</span></button>
        <div class="faq-answer">
          <p>The golden rule is matching the wine's weight to the dish's richness. Light, delicate fish like sole or flounder pair beautifully with crisp whites such as Muscadet or Albariño. For richer fish like salmon or tuna, opt for a light Pinot Noir or oaked Chardonnay. Shellfish loves high-acidity wines — think Chablis with oysters or Champagne with lobster. The key is letting the wine's acidity complement the seafood's natural brininess.</p>
        </div>
      </div>
      <div class="faq-item">
        <button class="faq-question">How do I achieve the perfect emulsification?<span class="faq-icon">+</span></button>
        <div class="faq-answer">
          <p>Emulsification is the process of combining two normally immiscible liquids — like oil and water — into a stable mixture. The key is adding the oil slowly while whisking vigorously to create tiny droplets suspended in the water-based liquid. An emulsifier like egg yolk (containing lecithin) or mustard helps stabilize the mixture by surrounding oil droplets and preventing them from coalescing. Temperature control matters too — ingredients should be at similar temperatures for best results.</p>
        </div>
      </div>
      <div class="faq-item">
        <button class="faq-question">What internal temperature should chicken be cooked to?<span class="faq-icon">+</span></button>
        <div class="faq-answer">
          <p>The USDA recommends cooking all poultry to an internal temperature of 165°F (74°C) as measured with a meat thermometer in the thickest part of the breast and thigh. However, many chefs prefer pulling chicken at 160°F and letting carryover cooking bring it to temperature during a 5–10 minute rest. For thighs and legs, 175–180°F yields more tender, rendered results due to their higher collagen content.</p>
        </div>
      </div>
      <div class="faq-item">
        <button class="faq-question">How can I tell if olive oil is authentic?<span class="faq-icon">+</span></button>
        <div class="faq-answer">
          <p>Look for a harvest date on the label — fresh olive oil should be used within 18–24 months of pressing. Check for a DOP or PDO certification seal indicating protected origin. Authentic extra virgin olive oil should have a fruity, slightly peppery taste with a tingling sensation in the throat (from oleocanthal, a natural anti-inflammatory). Avoid oils that smell rancid, musty, or have no aroma at all. Store in a cool, dark place and never in clear glass bottles exposed to light.</p>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- NEWSLETTER -->
<section class="newsletter-section section-padding" id="newsletter">
  <div class="container">
    <div class="fade-in">
      <span class="section-label" style="color:rgba(255,255,255,0.7);">Stay Inspired</span>
      <h2 class="section-title">Get Weekly Culinary Inspiration</h2>
      <p class="section-subtitle" style="margin:0 auto;">Join 45,000+ food lovers who receive our weekly newsletter featuring exclusive recipes, seasonal wine picks, cooking tips, and the latest restaurant reviews.</p>
      <form class="newsletter-form" id="newsletterForm">
        <input type="email" class="newsletter-input" placeholder="Enter your email address" required aria-label="Email address">
        <button type="submit" class="btn btn-accent">Subscribe</button>
      </form>
      <p class="newsletter-note">No spam, ever. Unsubscribe anytime. We respect your privacy.</p>
    </div>
  </div>
</section>

<!-- FOOTER -->
<footer class="footer" id="contact">
  <div class="container">
    <div class="footer-grid">
      <div class="footer-brand">
        <div class="footer-logo">
          <img src="https://placehold.co/72x72/1B3A2D/D4A373?text=SV&font=playfair+display" alt="Savor & Vine" class="footer-logo-icon">
          <span class="footer-logo-name">Savor & Vine</span>
        </div>
        <p class="footer-desc">Your definitive guide to the world of gastronomy. We curate exceptional recipes, expert wine pairings, honest restaurant reviews, and evidence-based nutrition resources for passionate food lovers everywhere.</p>
        <div class="footer-social">
          <a href="#" class="social-link" aria-label="Instagram">IG</a>
          <a href="#" class="social-link" aria-label="Twitter">X</a>
          <a href="#" class="social-link" aria-label="YouTube">YT</a>
          <a href="#" class="social-link" aria-label="Pinterest">PI</a>
        </div>
      </div>
      <div class="footer-column">
        <h4 class="footer-column-title">Explore</h4>
        <ul class="footer-links">
          <li><a href="#recipes">Recipes</a></li>
          <li><a href="#wine">Wine Pairings</a></li>
          <li><a href="#reviews">Restaurant Reviews</a></li>
          <li><a href="#techniques">Cooking Techniques</a></li>
          <li><a href="#calculator">Nutrition Calculator</a></li>
        </ul>
      </div>
      <div class="footer-column">
        <h4 class="footer-column-title">Company</h4>
        <ul class="footer-links">
          <li><a href="#about">About Us</a></li>
          <li><a href="#">Our Team</a></li>
          <li><a href="#">Careers</a></li>
          <li><a href="#">Press Kit</a></li>
          <li><a href="#contact">Contact</a></li>
        </ul>
      </div>
      <div class="footer-column">
        <h4 class="footer-column-title">Contact</h4>
        <ul class="footer-links">
          <li>hello@savorandvine.com</li>
          <li>+1 (555) 842-7700</li>
          <li>340 Culinary Lane, Suite 200</li>
          <li>San Francisco, CA 94102</li>
        </ul>
      </div>
    </div>
    <div class="footer-bottom">
      <span>© 2024 Savor & Vine. All rights reserved.</span>
      <div class="footer-legal">
        <a href="#">Privacy Policy</a>
        <a href="#">Terms of Service</a>
        <a href="#">Cookie Policy</a>
      </div>
    </div>
  </div>
</footer>

<script>
// Ingredient data for nutrition calculator
const ingredientsData = {
  proteins: [
    { name: "Chicken Breast", calories: 165, protein: 31, carbs: 0, fat: 3.6 },
    { name: "Salmon Fillet", calories: 208, protein: 20, carbs: 0, fat: 13 },
    { name: "Beef Sirloin", calories: 206, protein: 26, carbs: 0, fat: 11 },
    { name: "Shrimp", calories: 99, protein: 24, carbs: 0.2, fat: 0.3 },
    { name: "Tofu", calories: 76, protein: 8, carbs: 1.9, fat: 4.8 },
    { name: "Turkey Breast", calories: 135, protein: 30, carbs: 0, fat: 1 }
  ],
  vegetables: [
    { name: "Broccoli", calories: 34, protein: 2.8, carbs: 7, fat: 0.4 },
    { name: "Spinach", calories: 23, protein: 2.9, carbs: 3.6, fat: 0.4 },
    { name: "Bell Pepper", calories: 31, protein: 1, carbs: 6, fat: 0.3 },
    { name: "Sweet Potato", calories: 86, protein: 1.6, carbs: 20, fat: 0.1 },
    { name: "Kale", calories: 49, protein: 4.3, carbs: 9, fat: 0.9 },
    { name: "Zucchini", calories: 17, protein: 1.2, carbs: 3.1, fat: 0.3 }
  ],
  grains: [
    { name: "Brown Rice", calories: 123, protein: 2.7, carbs: 26, fat: 1 },
    { name: "Quinoa", calories: 120, protein: 4.4, carbs: 21, fat: 1.9 },
    { name: "Pasta", calories: 131, protein: 5, carbs: 25, fat: 1.1 },
    { name: "Oats", calories: 389, protein: 16.9, carbs: 66, fat: 6.9 },
    { name: "Couscous", calories: 112, protein: 3.8, carbs: 23, fat: 0.2 }
  ],
  dairy: [
    { name: "Greek Yogurt", calories: 59, protein: 10, carbs: 3.6, fat: 0.4 },
    { name: "Cheddar Cheese", calories: 403, protein: 25, carbs: 1.3, fat: 33 },
    { name: "Butter", calories: 717, protein: 0.9, carbs: 0.1, fat: 81 },
    { name: "Whole Milk", calories: 61, protein: 3.2, carbs: 4.8, fat: 3.3 },
    { name: "Mozzarella", calories: 280, protein: 28, carbs: 3.1, fat: 17 }
  ],
  fats: [
    { name: "Olive Oil", calories: 884, protein: 0, carbs: 0, fat: 100 },
    { name: "Avocado", calories: 160, protein: 2, carbs: 9, fat: 15 },
    { name: "Almonds", calories: 579, protein: 21, carbs: 22, fat: 50 },
    { name: "Walnuts", calories: 654, protein: 15, carbs: 14, fat: 65 },
    { name: "Coconut Oil", calories: 862, protein: 0, carbs: 0, fat: 100 }
  ]
};

let currentCategory = 'proteins';
let mealItems = [];

// Render ingredient list
function renderIngredients() {
  const list = document.getElementById('ingredientList');
  const items = ingredientsData[currentCategory];
  list.innerHTML = items.map((item, i) => `
    <div class="ingredient-item">
      <div>
        <span class="ingredient-name">${item.name}</span>
        <span class="ingredient-cals">${item.calories} cal/100g</span>
      </div>
      <button class="ingredient-add" data-index="${i}" aria-label="Add ${item.name}">+</button>
    </div>
  `).join('');

  list.querySelectorAll('.ingredient-add').forEach(btn => {
    btn.addEventListener('click', () => {
      const idx = parseInt(btn.dataset.index);
      addIngredient(items[idx]);
    });
  });
}

// Add ingredient to meal
function addIngredient(item) {
  mealItems.push({ ...item, id: Date.now() + Math.random() });
  renderMeal();
}

// Remove ingredient from meal
function removeIngredient(id) {
  mealItems = mealItems.filter(item => item.id !== id);
  renderMeal();
}

// Render meal list and totals
function renderMeal() {
  const mealList = document.getElementById('mealList');
  
  if (mealItems.length === 0) {
    mealList.innerHTML = '<div class="meal-empty">Add ingredients to see nutritional totals</div>';
  } else {
    mealList.innerHTML = mealItems.map(item => `
      <div class="meal-item">
        <div>
          <span class="meal-item-name">${item.name}</span>
          <div class="meal-item-macros">
            <span>${item.calories} cal</span>
            <span>P: ${item.protein}g</span>
            <span>C: ${item.carbs}g</span>
            <span>F: ${item.fat}g</span>
          </div>
        </div>
        <button class="meal-item-remove" data-id="${item.id}" aria-label="Remove ${item.name}">×</button>
      </div>
    `).join('');

    mealList.querySelectorAll('.meal-item-remove').forEach(btn => {
      btn.addEventListener('click', () => removeIngredient(parseFloat(btn.dataset.id)));
    });
  }

  // Calculate totals
  const totals = mealItems.reduce((acc, item) => ({
    calories: acc.calories + item.calories,
    protein: acc.protein + item.protein,
    carbs: acc.carbs + item.carbs,
    fat: acc.fat + item.fat
  }), { calories: 0, protein: 0, carbs: 0, fat: 0 });

  document.getElementById('totalCalories').textContent = Math.round(totals.calories);
  document.getElementById('totalProtein').textContent = totals.protein.toFixed(1) + 'g';
  document.getElementById('totalCarbs').textContent = totals.carbs.toFixed(1) + 'g';
  document.getElementById('totalFat').textContent = totals.fat.toFixed(1) + 'g';
}

// Tab switching
document.getElementById('ingredientTabs').addEventListener('click', (e) => {
  if (e.target.classList.contains('ingredient-tab')) {
    document.querySelectorAll('.ingredient-tab').forEach(t => t.classList.remove('active'));
    e.target.classList.add('active');
    currentCategory = e.target.dataset.category;
    renderIngredients();
  }
});

// Reset calculator
document.getElementById('resetCalculator').addEventListener('click', () => {
  mealItems = [];
  renderMeal();
});

// Initialize calculator
renderIngredients();

// FAQ Accordion
document.querySelectorAll('.faq-question').forEach(btn => {
  btn.addEventListener('click', () => {
    const item = btn.parentElement;
    const isActive = item.classList.contains('active');
    document.querySelectorAll('.faq-item').forEach(i => i.classList.remove('active'));
    if (!isActive) item.classList.add('active');
  });
});

// Mobile menu toggle
document.getElementById('mobileToggle').addEventListener('click', () => {
  document.getElementById('nav').classList.toggle('open');
});

// Close mobile menu on link click
document.querySelectorAll('.nav-link').forEach(link => {
  link.addEventListener('click', () => {
    document.getElementById('nav').classList.remove('open');
  });
});

// Newsletter form
document.getElementById('newsletterForm').addEventListener('submit', (e) => {
  e.preventDefault();
  const input = e.target.querySelector('input');
  if (input.value) {
    alert('Thank you for subscribing! Welcome to the Savor & Vine community.');
    input.value = '';
  }
});

// Scroll animations using Intersection Observer
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      entry.target.classList.add('visible');
    }
  });
}, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' });

document.querySelectorAll('.fade-in').forEach(el => observer.observe(el));

// Header shadow on scroll
window.addEventListener('scroll', () => {
  const header = document.getElementById('header');
  if (window.scrollY > 20) {
    header.style.boxShadow = '0 2px 12px rgba(0,0,0,0.08)';
  } else {
    header.style.boxShadow = 'none';
  }
});
</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:44:24.586Z",
  "url": "https://benchmark.aimac.invalid/df97ad9c94178e475066fb90083cd721640ecc41741ddf4bcb996702b4d10913.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-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": []
    },
    {
      "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": []
    },
    {
      "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-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": []
    },
    {
      "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-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": []
    },
    {
      "id": "aria-toggle-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA toggle field has an accessible name",
      "help": "ARIA toggle fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-tooltip-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every ARIA tooltip node has an accessible name",
      "help": "ARIA tooltip nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "autocomplete-valid",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag21aa",
        "wcag135",
        "EN-301-549",
        "EN-9.1.3.5",
        "ACT"
      ],
      "description": "Ensure the autocomplete attribute is correct and suitable for the form field",
      "help": "autocomplete attribute must be used correctly",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
      "nodes": []
    },
    {
      "id": "blink",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag222",
        "section508",
        "section508.22.j",
        "TTv5",
        "TT2.b",
        "EN-301-549",
        "EN-9.2.2.2"
      ],
      "description": "Ensure <blink> elements are not used",
      "help": "<blink> elements are deprecated and must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
      "nodes": []
    },
    {
      "id": "definition-list",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <dl> elements are structured correctly",
      "help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
      "nodes": []
    },
    {
      "id": "dlitem",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <dt> and <dd> elements are contained by a <dl>",
      "help": "<dt> and <dd> elements must be contained by a <dl>",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
      "nodes": []
    },
    {
      "id": "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": []
    },
    {
      "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": "select-name",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure select element has an accessible name",
      "help": "Select element must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "server-side-image-map",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag211",
        "section508",
        "section508.22.f",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure that server-side image maps are not used",
      "help": "Server-side image maps must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
      "nodes": []
    },
    {
      "id": "summary-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure summary elements have discernible text",
      "help": "Summary elements must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "svg-img-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
      "help": "<svg> elements with an img role must have an alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "td-headers-attr",
      "impact": null,
      "tags": [
        "cat.tables",
        "wcag2a",
        "wcag131",
        "section508",
        "section508.22.g",
        "TTv5",
        "TT14.b",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
      "help": "Table cells that use the headers attribute must only refer to cells in the same table",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
      "nodes": []
    },
    {
      "id": "th-has-data-cells",
      "impact": null,
      "tags": [
        "cat.tables",
        "wcag2a",
        "wcag131",
        "section508",
        "section508.22.g",
        "TTv5",
        "TT14.b",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
      "help": "Table headers in a data table must refer to data cells",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
      "nodes": []
    },
    {
      "id": "valid-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2aa",
        "wcag312",
        "TTv5",
        "TT11.b",
        "EN-301-549",
        "EN-9.3.1.2",
        "ACT"
      ],
      "description": "Ensure lang attributes have valid values",
      "help": "lang attribute must have a valid value",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
      "nodes": []
    },
    {
      "id": "video-caption",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag122",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT17.a",
        "EN-301-549",
        "EN-9.1.2.2"
      ],
      "description": "Ensure <video> elements have captions",
      "help": "<video> elements must have captions",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
      "nodes": []
    },
    {
      "id": "no-autoplay-audio",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag142",
        "TTv5",
        "TT2.a",
        "EN-301-549",
        "EN-9.1.4.2",
        "ACT"
      ],
      "description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
      "help": "<video> or <audio> elements must not play automatically",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
      "nodes": []
    }
  ],
  "passes": [
    {
      "id": "aria-allowed-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure an element's role supports its ARIA attributes",
      "help": "Elements must only use supported ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-allowed-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attributes are used correctly for the defined role"
            }
          ],
          "none": [
            {
              "id": "aria-unsupported-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute is supported"
            }
          ],
          "impact": null,
          "html": "<button class=\"ingredient-add\" data-index=\"0\" aria-label=\"Add Chicken Breast\">+</button>",
          "target": [
            "button[data-index=\"0\"]"
          ]
        }
      ]
    },
    {
      "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": "<button class=\"ingredient-add\" data-index=\"0\" aria-label=\"Add Chicken Breast\">+</button>",
          "target": [
            "button[data-index=\"0\"]"
          ]
        }
      ]
    },
    {
      "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-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": "<button class=\"ingredient-add\" data-index=\"0\" aria-label=\"Add Chicken Breast\">+</button>",
          "target": [
            "button[data-index=\"0\"]"
          ]
        }
      ]
    },
    {
      "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": "<button class=\"ingredient-add\" data-index=\"0\" aria-label=\"Add Chicken Breast\">+</button>",
          "target": [
            "button[data-index=\"0\"]"
          ]
        }
      ]
    },
    {
      "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": "<button class=\"ingredient-add\" data-index=\"0\" aria-label=\"Add Chicken Breast\">+</button>",
          "target": [
            "button[data-index=\"0\"]"
          ]
        }
      ]
    },
    {
      "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": "<a href=\"#wine\" class=\"btn btn-outline\" style=\"border-color:rgba(255,255,255,0.4);color:#fff;\">Wine Guide</a>",
          "target": [
            ".btn-outline"
          ]
        }
      ]
    },
    {
      "id": "button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure buttons have discernible text",
      "help": "Buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "button-has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has inner text that is visible to screen readers"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<button class=\"ingredient-tab active\" data-category=\"proteins\">Proteins</button>",
          "target": [
            "button[data-category=\"proteins\"]"
          ]
        }
      ]
    },
    {
      "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 class=\"hero-title\">Discover the Art of <em>Exceptional Dining</em></h1>",
                  "target": [
                    "h1"
                  ]
                },
                {
                  "html": "<h2 class=\"section-title\">Featured Recipes</h2>",
                  "target": [
                    "#recipes > .container > .fade-in:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h3 class=\"recipe-card-title\">Pan-Seared Duck Breast with Cherry Gastrique</h3>",
                  "target": [
                    "article:nth-child(1) > .recipe-card-body > .recipe-card-title"
                  ]
                },
                {
                  "html": "<h3 class=\"recipe-card-title\">Wild Mushroom Risotto with Truffle Oil</h3>",
                  "target": [
                    "article:nth-child(2) > .recipe-card-body > .recipe-card-title"
                  ]
                },
                {
                  "html": "<h3 class=\"recipe-card-title\">Miso-Glazed Black Cod with Pickled Ginger</h3>",
                  "target": [
                    "article:nth-child(3) > .recipe-card-body > .recipe-card-title"
                  ]
                },
                {
                  "html": "<h3 class=\"recipe-card-title\">Herb-Crusted Lamb Rack with Ratatouille</h3>",
                  "target": [
                    "article:nth-child(4) > .recipe-card-body > .recipe-card-title"
                  ]
                },
                {
                  "html": "<h3 class=\"sidebar-widget-title\">Trending This Week</h3>",
                  "target": [
                    ".sidebar-widget:nth-child(1) > .sidebar-widget-title"
                  ]
                },
                {
                  "html": "<h3 class=\"sidebar-widget-title\">Wine of the Week</h3>",
                  "target": [
                    ".sidebar-widget:nth-child(2) > .sidebar-widget-title"
                  ]
                },
                {
                  "html": "<h3 class=\"sidebar-widget-title\">Featured Chef</h3>",
                  "target": [
                    ".sidebar-widget:nth-child(3) > .sidebar-widget-title"
                  ]
                },
                {
                  "html": "<h2 class=\"section-title\">Curated Wine Pairings</h2>",
                  "target": [
                    "#wine > .container > .fade-in:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h3 class=\"wine-pairing-name\">Pinot Noir &amp; Roasted Duck</h3>",
                  "target": [
                    ".wine-pairing-card:nth-child(1) > .wine-pairing-body > .wine-pairing-name"
                  ]
                },
                {
                  "html": "<h3 class=\"wine-pairing-name\">Chardonnay &amp; Lobster Thermidor</h3>",
                  "target": [
                    ".wine-pairing-card:nth-child(2) > .wine-pairing-body > .wine-pairing-name"
                  ]
                },
                {
                  "html": "<h3 class=\"wine-pairing-name\">Barolo &amp; Braised Short Ribs</h3>",
                  "target": [
                    ".wine-pairing-card:nth-child(3) > .wine-pairing-body > .wine-pairing-name"
                  ]
                },
                {
                  "html": "<h2 class=\"section-title\">Essential Technique Tutorials</h2>",
                  "target": [
                    "#techniques > .container > .fade-in:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h3 class=\"technique-name\">The Art of Emulsification</h3>",
                  "target": [
                    ".technique-card:nth-child(1) > .technique-name"
                  ]
                },
                {
                  "html": "<h3 class=\"technique-name\">Perfecting the Maillard Reaction</h3>",
                  "target": [
                    ".technique-card:nth-child(2) > .technique-name"
                  ]
                },
                {
                  "html": "<h3 class=\"technique-name\">Knife Skills Mastery</h3>",
                  "target": [
                    ".technique-card:nth-child(3) > .technique-name"
                  ]
                },
                {
                  "html": "<h3 class=\"technique-name\">Sous Vide Fundamentals</h3>",
                  "target": [
                    ".technique-card:nth-child(4) > .technique-name"
                  ]
                },
                {
                  "html": "<h2 class=\"section-title\">Restaurant Reviews</h2>",
                  "target": [
                    "#reviews > .container > .fade-in:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h3 class=\"review-restaurant\">Le Jardin \u00c9toil\u00e9</h3>",
                  "target": [
                    ".review-card:nth-child(1) > .review-body > .review-restaurant"
                  ]
                },
                {
                  "html": "<h3 class=\"review-restaurant\">Sakura Izakaya</h3>",
                  "target": [
                    ".review-card:nth-child(2) > .review-body > .review-restaurant"
                  ]
                },
                {
                  "html": "<h3 class=\"review-restaurant\">Bella Notte Trattoria</h3>",
                  "target": [
                    ".review-card:nth-child(3) > .review-body > .review-restaurant"
                  ]
                },
                {
                  "html": "<h2 class=\"section-title\">Nutrition Calculator</h2>",
                  "target": [
                    "#calculator > .container > .fade-in:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h3 class=\"calculator-subtitle\">Select Ingredients</h3>",
                  "target": [
                    ".calculator-subtitle"
                  ]
                },
                {
                  "html": "<h3 class=\"meal-list-title\">Your Meal</h3>",
                  "target": [
                    ".meal-list-title"
                  ]
                },
                {
                  "html": "<h2 class=\"section-title\">What Our Community Says</h2>",
                  "target": [
                    "#about > .container > .fade-in:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h2 class=\"section-title\">Frequently Asked Questions</h2>",
                  "target": [
                    ".faq-section > .container > .fade-in:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h2 class=\"section-title\">Get Weekly Culinary Inspiration</h2>",
                  "target": [
                    "#newsletter > .container > .fade-in > h2"
                  ]
                },
                {
                  "html": "<h4 class=\"footer-column-title\">Explore</h4>",
                  "target": [
                    ".footer-column:nth-child(2) > h4"
                  ]
                },
                {
                  "html": "<h4 class=\"footer-column-title\">Company</h4>",
                  "target": [
                    ".footer-column:nth-child(3) > h4"
                  ]
                },
                {
                  "html": "<h4 class=\"footer-column-title\">Contact</h4>",
                  "target": [
                    ".footer-column:nth-child(4) > h4"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a heading"
            }
          ],
          "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": {
                "messageKey": "hidden"
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element is hidden"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<input type=\"email\" class=\"newsletter-input\" placeholder=\"Enter your email address\" required=\"\" aria-label=\"Email address\">",
          "target": [
            "input"
          ]
        }
      ]
    },
    {
      "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": "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": [],
              "impact": "moderate",
              "message": "Form field does not have multiple label elements"
            }
          ],
          "impact": null,
          "html": "<input type=\"email\" class=\"newsletter-input\" placeholder=\"Enter your email address\" required=\"\" aria-label=\"Email address\">",
          "target": [
            "input"
          ]
        }
      ]
    },
    {
      "id": "html-has-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure every HTML document has a lang attribute",
      "help": "<html> element must have a lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "The <html> element has a lang attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "html-lang-valid",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure the lang attribute of the <html> element has a valid value",
      "help": "<html> element must have a valid value for the lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "valid-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Value of lang attribute is included in the list of valid languages"
            }
          ],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "TT7.b",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <img> elements have alternative text or a role of none or presentation",
      "help": "Images must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-alt",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has an alt attribute"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "alt-space-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has a valid alt attribute value"
            }
          ],
          "impact": null,
          "html": "<img src=\"https://placehold.co/88x88/1B3A2D/D4A373?text=SV&amp;font=playfair+display\" alt=\"Savor &amp; Vine Logo\" class=\"logo-icon\">",
          "target": [
            ".logo-icon"
          ]
        }
      ]
    },
    {
      "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": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-label attribute exists and is not empty"
            },
            {
              "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\" class=\"newsletter-input\" placeholder=\"Enter your email address\" required=\"\" aria-label=\"Email address\">",
          "target": [
            "input"
          ]
        }
      ]
    },
    {
      "id": "link-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure links have discernible text",
      "help": "Links must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has text that is visible to screen readers"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "focusable-no-name",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element is not in tab order or has accessible text"
            }
          ],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "id": "list",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that lists are structured correctly",
      "help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "only-listitems",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "List element only has direct children that are allowed inside <li> elements"
            }
          ],
          "impact": null,
          "html": "<ul class=\"footer-links\">",
          "target": [
            ".footer-column:nth-child(2) > ul"
          ]
        }
      ]
    },
    {
      "id": "listitem",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <li> elements are used semantically",
      "help": "<li> elements must be contained in a <ul> or <ol>",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "listitem",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "List item has a <ul>, <ol> or role=\"list\" parent element"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<li><a href=\"#recipes\">Recipes</a></li>",
          "target": [
            ".footer-column:nth-child(2) > 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": "<img src=\"https://placehold.co/88x88/1B3A2D/D4A373?text=SV&amp;font=playfair+display\" alt=\"Savor &amp; Vine Logo\" class=\"logo-icon\">",
          "target": [
            ".logo-icon"
          ]
        }
      ]
    },
    {
      "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": [
        {
          "any": [
            {
              "id": "focusable-content",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element contains focusable elements"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"ingredient-list\" id=\"ingredientList\">",
          "target": [
            "#ingredientList"
          ]
        }
      ]
    },
    {
      "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": 303.7,
                "height": 44
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Control has sufficient size (303.7px by 44px, 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\">",
          "target": [
            ".logo"
          ]
        }
      ]
    }
  ],
  "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": {
                "fgColor": null,
                "bgColor": null,
                "contrastRatio": 0,
                "fontSize": "16.8pt (22.4px)",
                "fontWeight": "bold",
                "messageKey": "bgGradient",
                "expectedContrastRatio": "3:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header class=\"header\" id=\"header\">",
                  "target": [
                    "#header"
                  ]
                },
                {
                  "html": "<div class=\"hero-overlay\"></div>",
                  "target": [
                    ".hero-overlay"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element's background color could not be determined due to a background gradient"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"logo-name\">Savor &amp; Vine</span>",
          "target": [
            ".logo-name"
          ],
          "failureSummary": "Fix any of the following:\n  Element's background color could not be determined due to a background gradient"
        }
      ]
    }
  ],
  "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": "#ffffff",
                "bgColor": "#c8854b",
                "contrastRatio": 3.03,
                "fontSize": "10.2pt (13.6px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#newsletter\" class=\"btn btn-secondary nav-cta\">Subscribe</a>",
                  "target": [
                    ".nav-cta"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #ffffff, background color: #c8854b, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#newsletter\" class=\"btn btn-secondary nav-cta\">Subscribe</a>",
          "target": [
            ".nav-cta"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #ffffff, background color: #c8854b, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#c8854b",
                "contrastRatio": 3.03,
                "fontSize": "11.4pt (15.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#recipes\" class=\"btn btn-secondary\">Explore Recipes</a>",
                  "target": [
                    ".btn-secondary.btn[href$=\"#recipes\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #ffffff, background color: #c8854b, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#recipes\" class=\"btn btn-secondary\">Explore Recipes</a>",
          "target": [
            ".btn-secondary.btn[href$=\"#recipes\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #ffffff, background color: #c8854b, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6f7c75",
                "bgColor": "#0f2419",
                "contrastRatio": 3.74,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"footer\" id=\"contact\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.74 (foreground color: #6f7c75, background color: #0f2419, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>\u00a9 2024 Savor &amp; Vine. All rights reserved.</span>",
          "target": [
            ".footer-bottom > span"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.74 (foreground color: #6f7c75, background color: #0f2419, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6f7c75",
                "bgColor": "#0f2419",
                "contrastRatio": 3.74,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"footer\" id=\"contact\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.74 (foreground color: #6f7c75, background color: #0f2419, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#\">Privacy Policy</a>",
          "target": [
            ".footer-legal > a[href=\"#\"]:nth-child(1)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.74 (foreground color: #6f7c75, background color: #0f2419, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6f7c75",
                "bgColor": "#0f2419",
                "contrastRatio": 3.74,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"footer\" id=\"contact\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.74 (foreground color: #6f7c75, background color: #0f2419, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#\">Terms of Service</a>",
          "target": [
            ".footer-legal > a[href=\"#\"]:nth-child(2)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.74 (foreground color: #6f7c75, background color: #0f2419, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6f7c75",
                "bgColor": "#0f2419",
                "contrastRatio": 3.74,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"footer\" id=\"contact\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.74 (foreground color: #6f7c75, background color: #0f2419, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#\">Cookie Policy</a>",
          "target": [
            ".footer-legal > a[href=\"#\"]:nth-child(3)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.74 (foreground color: #6f7c75, background color: #0f2419, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"recipes-section section-padding\" id=\"recipes\">",
                  "target": [
                    "#recipes"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Chef's Selection</span>",
          "target": [
            ".visible > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"recipes-section section-padding\" id=\"recipes\">",
                  "target": [
                    "#recipes"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Chef's Selection</span>",
          "target": [
            ".visible.fade-in:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.03,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"sidebar-widget\">",
                  "target": [
                    ".sidebar-widget:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"wine-feature-type\">Bordeaux, France</div>",
          "target": [
            ".wine-feature-type"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.03,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"sidebar-widget\">",
                  "target": [
                    ".sidebar-widget:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"chef-specialty\">Modern Mediterranean Cuisine</div>",
          "target": [
            ".chef-specialty"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"recipes-section section-padding\" id=\"recipes\">",
                  "target": [
                    "#recipes"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Chef's Selection</span>",
          "target": [
            "#recipes > .container > .visible.fade-in:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.03,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"wine-section section-padding\" id=\"wine\">",
                  "target": [
                    "#wine"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Sommelier's Picks</span>",
          "target": [
            "#wine > .container > .visible.fade-in > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.03,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"wine-section section-padding\" id=\"wine\">",
                  "target": [
                    "#wine"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Sommelier's Picks</span>",
          "target": [
            "#wine > .container > .visible.fade-in:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"wine-pairing-card\">",
                  "target": [
                    ".wine-pairing-card:nth-child(1)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"wine-pairing-type\">Red Pairing</div>",
          "target": [
            ".wine-pairing-card:nth-child(1) > .wine-pairing-body > .wine-pairing-type"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"wine-pairing-card\">",
                  "target": [
                    ".wine-pairing-card:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"wine-pairing-type\">White Pairing</div>",
          "target": [
            ".wine-pairing-card:nth-child(2) > .wine-pairing-body > .wine-pairing-type"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"wine-pairing-card\">",
                  "target": [
                    ".wine-pairing-card:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"wine-pairing-type\">Bold Pairing</div>",
          "target": [
            ".wine-pairing-card:nth-child(3) > .wine-pairing-body > .wine-pairing-type"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"techniques-section section-padding\" id=\"techniques\">",
                  "target": [
                    "#techniques"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Master Your Craft</span>",
          "target": [
            "#techniques > .container > .visible.fade-in:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e65100",
                "bgColor": "#fff3e0",
                "contrastRatio": 3.45,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"technique-level level-intermediate\">Intermediate</span>",
                  "target": [
                    ".level-intermediate"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.45 (foreground color: #e65100, background color: #fff3e0, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"technique-level level-intermediate\">Intermediate</span>",
          "target": [
            ".level-intermediate"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.45 (foreground color: #e65100, background color: #fff3e0, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.03,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"reviews-section section-padding\" id=\"reviews\">",
                  "target": [
                    "#reviews"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Honest &amp; Unbiased</span>",
          "target": [
            "#reviews > .container > .visible.fade-in:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"review-card\">",
                  "target": [
                    ".review-card:nth-child(1)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"review-cuisine\">French Fine Dining \u00b7 $$$$</div>",
          "target": [
            ".review-card:nth-child(1) > .review-body > .review-cuisine"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"review-card\">",
                  "target": [
                    ".review-card:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"review-cuisine\">Japanese Izakaya \u00b7 $$</div>",
          "target": [
            ".review-card:nth-child(2) > .review-body > .review-cuisine"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.6pt (12.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"review-card\">",
                  "target": [
                    ".review-card:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<div class=\"review-cuisine\">Italian Trattoria \u00b7 $$$</div>",
          "target": [
            ".review-card:nth-child(3) > .review-body > .review-cuisine"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#c8854b",
                "contrastRatio": 3.03,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<button class=\"ingredient-tab active\" data-category=\"proteins\">Proteins</button>",
                  "target": [
                    "button[data-category=\"proteins\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #ffffff, background color: #c8854b, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<button class=\"ingredient-tab active\" data-category=\"proteins\">Proteins</button>",
          "target": [
            "button[data-category=\"proteins\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #ffffff, background color: #c8854b, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"testimonials-section section-padding\" id=\"about\">",
                  "target": [
                    "#about"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Community Love</span>",
          "target": [
            "#about > .container > .visible.fade-in:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.03,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"faq-section section-padding\">",
                  "target": [
                    ".faq-section"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Knowledge Base</span>",
          "target": [
            ".faq-section > .container > .visible.fade-in:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"recipes-section section-padding\" id=\"recipes\">",
                  "target": [
                    "#recipes"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Chef's Selection</span>",
          "target": [
            "#recipes > .container > .fade-in.visible:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.03,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"wine-section section-padding\" id=\"wine\">",
                  "target": [
                    "#wine"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Sommelier's Picks</span>",
          "target": [
            "#wine > .container > .fade-in.visible:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"techniques-section section-padding\" id=\"techniques\">",
                  "target": [
                    "#techniques"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Master Your Craft</span>",
          "target": [
            "#techniques > .container > .fade-in.visible:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.03,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"reviews-section section-padding\" id=\"reviews\">",
                  "target": [
                    "#reviews"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Honest &amp; Unbiased</span>",
          "target": [
            "#reviews > .container > .fade-in.visible:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#fdf8f3",
                "contrastRatio": 2.87,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"testimonials-section section-padding\" id=\"about\">",
                  "target": [
                    "#about"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Community Love</span>",
          "target": [
            "#about > .container > .fade-in.visible:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.87 (foreground color: #c8854b, background color: #fdf8f3, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c8854b",
                "bgColor": "#ffffff",
                "contrastRatio": 3.03,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"faq-section section-padding\">",
                  "target": [
                    ".faq-section"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"section-label\">Knowledge Base</span>",
          "target": [
            ".faq-section > .container > .fade-in.visible:nth-child(1) > .section-label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.03 (foreground color: #c8854b, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        }
      ]
    }
  ],
  "coverage": {
    "contract": "main-document-vertical-scroll",
    "complete": true,
    "positions": [
      {
        "y": 0,
        "height": 8330
      },
      {
        "y": 576,
        "height": 8330
      },
      {
        "y": 1152,
        "height": 8330
      },
      {
        "y": 1728,
        "height": 8330
      },
      {
        "y": 2304,
        "height": 8330
      },
      {
        "y": 2880,
        "height": 8330
      },
      {
        "y": 3456,
        "height": 8330
      },
      {
        "y": 4032,
        "height": 8330
      },
      {
        "y": 4608,
        "height": 8330
      },
      {
        "y": 5184,
        "height": 8330
      },
      {
        "y": 5760,
        "height": 8330
      },
      {
        "y": 6336,
        "height": 8330
      },
      {
        "y": 6912,
        "height": 8330
      },
      {
        "y": 7488,
        "height": 8330
      },
      {
        "y": 7610,
        "height": 8330
      }
    ],
    "scans": 16,
    "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", "Wine", "Restaurant Reviews".
-   **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: "Wine Pairings", "Technique Tutorials", "Chef's Recipes".
    -   **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "emulsification", "gastronomy", "seasoning".
    -   **Visuals:** Integrate relevant placeholder images logically within the content sections.
    -   **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "View Menu", "Order Now", "Download Cookbook".
-   **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: "nutrition calculator".
-   **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "trending recipes", "wine selections", "featured chefs".
-   **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.