NVIDIA Nemotron 3 Ultra – Travel

via BaseTen · Generated

  • AIMAC Debt 4.19
  • Cost $0.04
  • Total Violations 10
  • HTML Size 62 KB
  • Em Dashes 3

Screenshot

View NVIDIA Nemotron 3 Ultra Travel page View Live Page

Accessibility Issues Found

10 Serious

  • color-contrast serious 10 instances

    Elements must meet minimum color contrast ratio thresholds

    Example HTML <p>© 2024 Horizon &amp; Compass. All rights reserved.</p>

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="Horizon & Compass - Expert travel guides, curated itineraries, and booking resources for the modern explorer. Plan your next adventure with confidence.">
    <title>Horizon & Compass | Travel Guides, Destinations & Trip Planning</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,600;1,400&display=swap" rel="stylesheet">
    <style>
        /* --- CSS Variables & Reset --- */
        :root {
            --color-bg: #fdfcf8;
            --color-text: #2d2d2d;
            --color-text-light: #5a5a5a;
            --color-primary: #1a5c5e; /* Deep Teal */
            --color-primary-hover: #144749;
            --color-accent: #d4a843; /* Muted Gold */
            --color-accent-hover: #c49838;
            --color-border: #e8e4dc;
            --color-card-bg: #ffffff;
            --color-input-bg: #f5f3ef;
            --font-heading: 'Playfair Display', serif;
            --font-body: 'Inter', sans-serif;
            --max-width: 1280px;
            --header-height: 80px;
            --transition-base: 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
            --shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
            --shadow-md: 0 4px 12px rgba(0,0,0,0.06);
            --shadow-lg: 0 12px 24px rgba(0,0,0,0.08);
            --radius-sm: 4px;
            --radius-md: 8px;
            --radius-lg: 16px;
        }

        *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
        html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
        body { font-family: var(--font-body); background-color: var(--color-bg); color: var(--color-text); line-height: 1.7; font-size: 1rem; }
        img { max-width: 100%; height: auto; display: block; border-radius: var(--radius-md); }
        a { color: var(--color-primary); text-decoration: none; transition: color var(--transition-base); }
        a:hover { color: var(--color-accent); }
        ul { list-style: none; }
        h1, h2, h3, h4 { font-family: var(--font-heading); font-weight: 600; line-height: 1.3; color: var(--color-text); }
        h1 { font-size: clamp(2.5rem, 5vw, 4rem); }
        h2 { font-size: clamp(2rem, 4vw, 3rem); margin-bottom: 1rem; }
        h3 { font-size: clamp(1.25rem, 2.5vw, 1.5rem); margin-bottom: 0.75rem; }
        p { margin-bottom: 1rem; color: var(--color-text-light); font-size: 1.05rem; }
        .container { width: 100%; max-width: var(--max-width); margin: 0 auto; padding: 0 1.5rem; }
        .section { padding: 6rem 0; }
        .section-header { text-align: center; max-width: 700px; margin: 0 auto 4rem; }
        .section-header p { font-size: 1.15rem; }
        .tagline { font-family: var(--font-heading); font-style: italic; color: var(--color-accent); font-size: 1.25rem; font-weight: 400; display: block; margin-bottom: 0.5rem; }

        /* --- Buttons --- */
        .btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.9rem 2rem; border-radius: var(--radius-md); font-weight: 500; font-size: 0.95rem; letter-spacing: 0.02em; transition: all var(--transition-base); border: 2px solid transparent; cursor: pointer; white-space: nowrap; }
        .btn-primary { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
        .btn-primary:hover { background: var(--color-primary-hover); border-color: var(--color-primary-hover); color: #fff; transform: translateY(-2px); box-shadow: var(--shadow-md); }
        .btn-secondary { background: transparent; color: var(--color-primary); border-color: var(--color-primary); }
        .btn-secondary:hover { background: var(--color-primary); color: #fff; }
        .btn-accent { background: var(--color-accent); color: #1a1a1a; border-color: var(--color-accent); }
        .btn-accent:hover { background: var(--color-accent-hover); border-color: var(--color-accent-hover); color: #1a1a1a; }
        .btn-ghost { background: transparent; color: var(--color-text); border-color: var(--color-border); }
        .btn-ghost:hover { border-color: var(--color-text); color: var(--color-text); }
        .btn-sm { padding: 0.6rem 1.25rem; font-size: 0.875rem; }

        /* --- Header & Navigation --- */
        .site-header { position: fixed; top: 0; left: 0; right: 0; height: var(--header-height); background: rgba(253, 252, 248, 0.92); backdrop-filter: blur(12px); border-bottom: 1px solid var(--color-border); z-index: 1000; transition: box-shadow var(--transition-base); }
        .site-header.scrolled { box-shadow: var(--shadow-md); }
        .header-inner { display: flex; align-items: center; justify-content: space-between; height: 100%; }
        .logo { display: flex; align-items: center; gap: 0.75rem; text-decoration: none; color: var(--color-text); }
        .logo img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; border: 2px solid var(--color-accent); }
        .logo-text { font-family: var(--font-heading); font-size: 1.5rem; font-weight: 600; color: var(--color-primary); }
        .main-nav { display: none; gap: 0.5rem; } /* Hidden mobile default */
        .main-nav a { padding: 0.5rem 1rem; border-radius: var(--radius-sm); font-weight: 500; font-size: 0.9rem; color: var(--color-text-light); transition: all 0.2s ease; }
        .main-nav a:hover, .main-nav a.active { color: var(--color-primary); background: rgba(26, 92, 94, 0.08); }
        .header-actions { display: flex; align-items: center; gap: 1rem; }
        .mobile-menu-btn { display: flex; flex-direction: column; gap: 5px; background: none; border: none; cursor: pointer; padding: 0.5rem; z-index: 1001; }
        .mobile-menu-btn span { width: 24px; height: 2px; background: var(--color-text); border-radius: 2px; transition: var(--transition-base); }
        .mobile-menu-btn.active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
        .mobile-menu-btn.active span:nth-child(2) { opacity: 0; }
        .mobile-menu-btn.active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

        /* Mobile Nav Overlay */
        .mobile-nav-overlay { position: fixed; inset: 0; background: var(--color-bg); z-index: 999; transform: translateX(100%); transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); display: flex; flex-direction: column; padding-top: calc(var(--header-height) + 2rem); overflow-y: auto; }
        .mobile-nav-overlay.active { transform: translateX(0); }
        .mobile-nav-overlay .main-nav { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; padding: 0 2rem; }
        .mobile-nav-overlay .main-nav a { width: 100%; text-align: center; padding: 1rem; font-size: 1.1rem; border-radius: var(--radius-md); }

        /* --- Hero Section --- */
        .hero { position: relative; min-height: 100vh; display: flex; align-items: center; padding-top: var(--header-height); overflow: hidden; }
        .hero-bg { position: absolute; inset: 0; z-index: -1; }
        .hero-bg img { width: 100%; height: 100%; object-fit: cover; filter: brightness(0.45); }
        .hero-content { position: relative; z-index: 1; color: #fff; width: 100%; }
        .hero h1 { max-width: 800px; margin-bottom: 1.5rem; text-shadow: 0 2px 10px rgba(0,0,0,0.2); }
        .hero .lead { font-size: clamp(1.1rem, 2.5vw, 1.35rem); max-width: 600px; margin-bottom: 2.5rem; color: rgba(255,255,255,0.9); font-weight: 300; }
        .hero-cta-group { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: 3rem; }
        
        /* Interactive Trip Planner Widget */
        .trip-planner-widget { background: rgba(255,255,255,0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,0.2); border-radius: var(--radius-lg); padding: 2rem; max-width: 600px; margin-top: 1rem; }
        .widget-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; flex-wrap: wrap; gap: 1rem; }
        .widget-header h3 { color: #fff; margin: 0; font-size: 1.25rem; }
        .widget-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 1rem; align-items: end; }
        .form-group { display: flex; flex-direction: column; gap: 0.4rem; }
        .form-group label { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08em; color: rgba(255,255,255,0.7); font-weight: 500; }
        .form-group select, .form-group input { background: rgba(255,255,255,0.15); border: 1px solid rgba(255,255,255,0.3); color: #fff; padding: 0.75rem 1rem; border-radius: var(--radius-sm); font-family: var(--font-body); font-size: 0.95rem; outline: none; transition: border-color var(--transition-base); }
        .form-group select:focus, .form-group input:focus { border-color: var(--color-accent); }
        .form-group select option { background: var(--color-primary); color: #fff; }
        .form-group input::placeholder { color: rgba(255,255,255,0.5); }
        .widget-results { margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid rgba(255,255,255,0.1); display: none; }
        .widget-results.visible { display: block; animation: fadeIn 0.4s ease; }
        @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
        .result-card { display: flex; gap: 1rem; background: rgba(0,0,0,0.2); padding: 1rem; border-radius: var(--radius-md); margin-bottom: 0.75rem; align-items: center; }
        .result-card img { width: 80px; height: 80px; object-fit: cover; border-radius: var(--radius-sm); flex-shrink: 0; }
        .result-info h4 { color: #fff; font-size: 1rem; margin-bottom: 0.25rem; }
        .result-info p { color: rgba(255,255,255,0.7); margin: 0; font-size: 0.85rem; }
        .result-info .meta { display: flex; gap: 1rem; margin-top: 0.5rem; font-size: 0.75rem; color: var(--color-accent); font-weight: 500; }

        /* --- Travel Styles Grid --- */
        .travel-styles { background: var(--color-bg); }
        .styles-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; }
        .style-card { position: relative; border-radius: var(--radius-lg); overflow: hidden; aspect-ratio: 4/3; background: var(--color-card-bg); box-shadow: var(--shadow-sm); transition: transform var(--transition-base), box-shadow var(--transition-base); }
        .style-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }
        .style-card img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s ease; }
        .style-card:hover img { transform: scale(1.05); }
        .style-card-content { position: absolute; inset: 0; padding: 2rem; display: flex; flex-direction: column; justify-content: flex-end; background: linear-gradient(180deg, transparent 40%, rgba(29,29,29,0.85) 100%); color: #fff; z-index: 1; }
        .style-card h3 { color: #fff; margin-bottom: 0.5rem; }
        .style-card p { color: rgba(255,255,255,0.8); margin-bottom: 1.5rem; font-size: 0.95rem; }
        .style-card .btn { width: fit-content; align-self: flex-start; }

        /* --- Destination Spotlight --- */
        .destinations { background: var(--color-card-bg); }
        .dest-grid { display: grid; grid-template-columns: 1fr; gap: 4rem; }
        .dest-item { display: grid; grid-template-columns: 1fr; gap: 3rem; align-items: start; }
        .dest-item.reverse .dest-media { order: 1; } /* Visual reverse on mobile not needed, handled by CSS Grid */
        .dest-item.reverse .dest-content { order: 2; }
        .dest-media { position: relative; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-lg); aspect-ratio: 16/10; }
        .dest-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.8s ease; }
        .dest-item:hover .dest-media img { transform: scale(1.02); }
        .dest-badge { position: absolute; top: 1.5rem; left: 1.5rem; background: var(--color-accent); color: #1a1a1a; padding: 0.4rem 1rem; border-radius: 100px; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; }
        .dest-content h2 { margin-bottom: 1.5rem; }
        .dest-content .lead { font-size: 1.15rem; font-weight: 300; color: var(--color-text-light); margin-bottom: 2rem; border-left: 3px solid var(--color-accent); padding-left: 1.5rem; }
        .dest-highlights { display: flex; flex-wrap: wrap; gap: 1rem; margin: 2rem 0; }
        .highlight-tag { background: var(--color-input-bg); border: 1px solid var(--color-border); padding: 0.5rem 1rem; border-radius: 100px; font-size: 0.85rem; font-weight: 500; color: var(--color-text); display: flex; align-items: center; gap: 0.5rem; }
        .highlight-tag::before { content: ''; width: 6px; height: 6px; background: var(--color-primary); border-radius: 50%; }
        .dest-meta { display: flex; flex-wrap: wrap; gap: 2rem; margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--color-border); font-size: 0.9rem; color: var(--color-text-light); }
        .dest-meta strong { color: var(--color-text); }

        /* --- Resources / Blog Grid --- */
        .resources { background: var(--color-bg); }
        .resources-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 2rem; }
        .resource-card { background: var(--color-card-bg); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); transition: all var(--transition-base); border: 1px solid var(--color-border); }
        .resource-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: transparent; }
        .resource-card img { aspect-ratio: 16/9; object-fit: cover; width: 100%; }
        .resource-body { padding: 1.75rem; display: flex; flex-direction: column; height: 100%; }
        .resource-meta { display: flex; gap: 1rem; font-size: 0.8rem; color: var(--color-text-light); margin-bottom: 0.75rem; flex-wrap: wrap; }
        .resource-meta span { display: flex; align-items: center; gap: 0.35rem; }
        .resource-body h3 { margin-bottom: 0.75rem; transition: color var(--transition-base); }
        .resource-card:hover h3 { color: var(--color-primary); }
        .resource-body p { flex-grow: 1; font-size: 0.95rem; margin-bottom: 1.5rem; }
        .read-more { font-weight: 600; font-size: 0.9rem; display: inline-flex; align-items: center; gap: 0.4rem; color: var(--color-primary); }
        .read-more svg { transition: transform 0.2s ease; }
        .resource-card:hover .read-more svg { transform: translateX(4px); }

        /* --- Testimonials --- */
        .testimonials { background: var(--color-card-bg); }
        .testimonials-track { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; }
        .testimonial-card { background: var(--color-bg); border: 1px solid var(--color-border); padding: 2.5rem; border-radius: var(--radius-lg); transition: var(--transition-base); }
        .testimonial-card:hover { border-color: var(--color-accent); box-shadow: var(--shadow-md); }
        .stars { color: var(--color-accent); letter-spacing: 2px; margin-bottom: 1rem; font-size: 1.2rem; }
        .testimonial-card blockquote { font-style: italic; color: var(--color-text); margin-bottom: 1.5rem; font-size: 1.05rem; line-height: 1.8; }
        .testimonial-author { display: flex; align-items: center; gap: 1rem; }
        .testimonial-author img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; border: 3px solid var(--color-bg); box-shadow: var(--shadow-sm); }
        .author-info strong { display: block; color: var(--color-text); }
        .author-info span { font-size: 0.85rem; color: var(--color-text-light); }

        /* --- FAQ Accordion --- */
        .faq { background: var(--color-bg); }
        .faq-list { max-width: 800px; margin: 0 auto; }
        .faq-item { border-bottom: 1px solid var(--color-border); }
        .faq-item:first-child { border-top: 1px solid var(--color-border); }
        .faq-question { width: 100%; text-align: left; padding: 1.5rem 0; background: none; border: none; font-family: var(--font-heading); font-size: 1.15rem; font-weight: 500; color: var(--color-text); cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
        .faq-question::after { content: '+'; font-size: 1.5rem; font-weight: 300; color: var(--color-primary); transition: transform 0.3s ease; flex-shrink: 0; }
        .faq-item.active .faq-question::after { transform: rotate(45deg); }
        .faq-answer { max-height: 0; overflow: hidden; transition: max-height 0.4s ease, padding-bottom 0.4s ease; }
        .faq-answer .inner { padding-bottom: 1.5rem; color: var(--color-text-light); line-height: 1.8; }
        .faq-answer p { margin-bottom: 0.75rem; }
        .faq-answer p:last-child { margin-bottom: 0; }

        /* --- Newsletter / CTA Banner --- */
        .newsletter-banner { background: linear-gradient(135deg, var(--color-primary) 0%, #124244 100%); color: #fff; padding: 5rem 0; text-align: center; position: relative; overflow: hidden; }
        .newsletter-banner::before { content: ''; position: absolute; top: -50%; right: -10%; width: 60%; height: 200%; background: radial-gradient(circle, var(--color-accent) 0%, transparent 70%); opacity: 0.08; transform: rotate(15deg); }
        .newsletter-content { position: relative; z-index: 1; max-width: 600px; margin: 0 auto; }
        .newsletter-content h2 { color: #fff; margin-bottom: 1rem; }
        .newsletter-content p { color: rgba(255,255,255,0.8); margin-bottom: 2rem; }
        .newsletter-form { display: flex; gap: 0.75rem; max-width: 480px; margin: 0 auto; flex-wrap: wrap; justify-content: center; }
        .newsletter-form input { flex-grow: 1; min-width: 250px; padding: 1rem 1.25rem; border-radius: var(--radius-md); border: 1px solid rgba(255,255,255,0.3); background: rgba(255,255,255,0.1); color: #fff; font-family: var(--font-body); font-size: 1rem; outline: none; }
        .newsletter-form input::placeholder { color: rgba(255,255,255,0.6); }
        .newsletter-form input:focus { border-color: var(--color-accent); background: rgba(255,255,255,0.15); }
        .newsletter-form .btn { padding: 1rem 2rem; white-space: nowrap; }

        /* --- Footer --- */
        .site-footer { background: #1a1a1a; color: #fff; padding: 5rem 0 2rem; }
        .footer-grid { display: grid; grid-template-columns: 2fr repeat(3, 1fr); gap: 3rem; margin-bottom: 4rem; }
        .footer-brand p { color: rgba(255,255,255,0.6); margin-bottom: 1.5rem; font-size: 0.95rem; }
        .footer-logo { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; }
        .footer-logo img { width: 36px; height: 36px; border-radius: 50%; border: 2px solid var(--color-accent); }
        .footer-logo span { font-family: var(--font-heading); font-size: 1.35rem; font-weight: 600; color: #fff; }
        .social-links { display: flex; gap: 1rem; }
        .social-links a { width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,0.08); display: flex; align-items: center; justify-content: center; color: #fff; transition: var(--transition-base); border: 1px solid rgba(255,255,255,0.1); }
        .social-links a:hover { background: var(--color-accent); color: #1a1a1a; border-color: var(--color-accent); transform: translateY(-2px); }
        .footer-col h4 { color: #fff; font-family: var(--font-body); font-weight: 600; font-size: 0.95rem; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 1.5rem; }
        .footer-col ul li { margin-bottom: 0.75rem; }
        .footer-col a { color: rgba(255,255,255,0.6); font-size: 0.95rem; }
        .footer-col a:hover { color: var(--color-accent); padding-left: 4px; }
        .footer-bottom { border-top: 1px solid rgba(255,255,255,0.1); padding-top: 2rem; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem; font-size: 0.85rem; color: rgba(255,255,255,0.4); }
        .footer-legal { display: flex; gap: 2rem; }
        .footer-legal a { color: inherit; }
        .footer-legal a:hover { color: var(--color-accent); }

        /* --- Responsive --- */
        @media (min-width: 768px) {
            .main-nav { display: flex; }
            .mobile-menu-btn { display: none; }
            .mobile-nav-overlay { display: none; }
            .dest-grid { grid-template-columns: 1fr; } /* Keep stacked but allow reverse via CSS order if needed, or better: 2 col */
            .dest-item { grid-template-columns: 1fr 1fr; }
            .dest-item.reverse .dest-media { order: 2; }
            .dest-item.reverse .dest-content { order: 1; }
            .hero .container { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 4rem; }
            .hero-content { text-align: left; }
            .hero .lead { margin-left: 0; }
            .hero-cta-group { justify-content: flex-start; }
            .trip-planner-widget { margin-top: 0; }
        }
        @media (max-width: 767px) {
            .section { padding: 4rem 0; }
            .footer-grid { grid-template-columns: 1fr 1fr; }
            .footer-col:first-child { grid-column: 1 / -1; }
        }
        @media (max-width: 480px) {
            .footer-grid { grid-template-columns: 1fr; }
            .newsletter-form { flex-direction: column; }
            .newsletter-form .btn { width: 100%; }
        }
    </style>
</head>
<body>

<header class="site-header" id="siteHeader" role="banner">
    <div class="container header-inner">
        <a href="#" class="logo" aria-label="Horizon & Compass Home">
            <img src="https://placehold.co/80x80/1a5c5e/ffffff?text=H%26C&font=playfair+display" alt="Horizon & Compass Logo" width="40" height="40">
            <span class="logo-text">Horizon & Compass</span>
        </a>
        <nav class="main-nav" id="mainNav" role="navigation" aria-label="Main Navigation">
            <a href="#destinations" class="active">Destinations</a>
            <a href="#trip-planner">Trip Planner</a>
            <a href="#flights">Flights</a>
            <a href="#experiences">Experiences</a>
            <a href="#guides">Travel Guides</a>
            <a href="#contact">Contact</a>
        </nav>
        <div class="header-actions">
            <a href="#trip-planner" class="btn btn-primary btn-sm d-none d-md-inline-flex">Plan a Trip</a>
            <button class="mobile-menu-btn" id="mobileMenuBtn" aria-label="Toggle Menu" aria-expanded="false" aria-controls="mobileNav">
                <span></span><span></span><span></span>
            </button>
        </div>
    </div>
    <!-- Mobile Overlay -->
    <div class="mobile-nav-overlay" id="mobileNav" role="dialog" aria-modal="true" aria-label="Mobile Menu">
        <nav class="main-nav">
            <a href="#destinations">Destinations</a>
            <a href="#trip-planner">Trip Planner</a>
            <a href="#flights">Flights</a>
            <a href="#experiences">Experiences</a>
            <a href="#guides">Travel Guides</a>
            <a href="#contact">Contact</a>
            <a href="#trip-planner" class="btn btn-primary" style="width: 80%; margin-top: 1rem;">Plan a Trip</a>
        </nav>
    </div>
</header>

<main id="mainContent">
    <!-- Hero Section -->
    <section class="hero" aria-labelledby="hero-title">
        <div class="hero-bg">
            <img src="https://picsum.photos/seed/horizon-hero/1920/1080" alt="Sunrise over a mountain range with clouds in the valley">
        </div>
        <div class="container hero-content">
            <span class="tagline">Curated Journeys for the Intentional Traveler</span>
            <h1 id="hero-title">Discover the World Beyond the Guidebook</h1>
            <p class="lead">We blend local expertise with seamless logistics to design itineraries that resonate. From visa requirements to hidden excursion gems, we handle the details so you can embrace the journey.</p>
            <div class="hero-cta-group">
                <a href="#destinations" class="btn btn-primary">Explore Destinations</a>
                <a href="#guides" class="btn btn-secondary" style="background: rgba(255,255,255,0.1); border-color: #fff; color: #fff;">Read Latest Guides</a>
            </div>
            
            <!-- Interactive Element: Smart Trip Planner -->
            <div class="trip-planner-widget" id="trip-planner" role="region" aria-label="Trip Planner Tool">
                <div class="widget-header">
                    <h3>Smart Trip Planner</h3>
                    <span style="font-size: 0.75rem; color: var(--color-accent); font-weight: 500;">Beta</span>
                </div>
                <form class="widget-form" id="tripForm" novalidate>
                    <div class="form-group">
                        <label for="tripVibe">Travel Style</label>
                        <select id="tripVibe" name="vibe" required>
                            <option value="">Select Style</option>
                            <option value="adventure">Adventure & Trekking</option>
                            <option value="luxury">Luxury & Wellness</option>
                            <option value="family">Family Friendly</option>
                            <option value="culture">Culture & History</option>
                            <option value="solo">Solo & Budget</option>
                        </select>
                    </div>
                    <div class="form-group">
                        <label for="tripBudget">Budget Tier</label>
                        <select id="tripBudget" name="budget" required>
                            <option value="">Select Budget</option>
                            <option value="budget">$ - Budget Conscious</option>
                            <option value="mid">$$ - Comfortable</option>
                            <option value="luxury">$$$ - Premium</option>
                        </select>
                    </div>
                    <div class="form-group">
                        <label for="tripDuration">Duration (Days)</label>
                        <input type="number" id="tripDuration" name="duration" min="3" max="30" value="7" placeholder="e.g. 10" required>
                    </div>
                    <div class="form-group" style="grid-column: 1 / -1;">
                        <button type="submit" class="btn btn-accent" style="width: 100%;">Find My Matches</button>
                    </div>
                </form>
                <div class="widget-results" id="widgetResults" aria-live="polite"></div>
            </div>
        </div>
    </section>

    <!-- Travel Styles Section -->
    <section class="travel-styles section" aria-labelledby="styles-title">
        <div class="container">
            <header class="section-header">
                <span class="tagline">Travel Styles</span>
                <h2 id="styles-title">Ways to Experience the World</h2>
                <p>Whether you seek adrenaline-pumping adventure or serene luxury escapes, our categorized collections help you identify the perfect trip archetype for your next departure.</p>
            </header>
            <div class="styles-grid">
                <!-- Card 1: Adventure -->
                <article class="style-card">
                    <img src="https://picsum.photos/seed/adventure-travel/600/450" alt="Hiker standing on a ridge overlooking a vast canyon">
                    <div class="style-card-content">
                        <h3>Adventure & Trekking</h3>
                        <p>Summit peaks, navigate whitewater, and trek remote trails. We vet local operators for safety standards and sustainable practices.</p>
                        <a href="#experiences" class="btn btn-primary btn-sm">View Expeditions</a>
                    </div>
                </article>
                <!-- Card 2: Luxury -->
                <article class="style-card">
                    <img src="https://picsum.photos/seed/luxury-escape/600/450" alt="Infinity pool overlooking a turquoise ocean at a luxury resort">
                    <div class="style-card-content">
                        <h3>Luxury Escapes</h3>
                        <p>Private villas, Michelin dining, and bespoke concierge services. Experience destinations with exclusive access and absolute privacy.</p>
                        <a href="#destinations" class="btn btn-accent btn-sm">Browse Resorts</a>
                    </div>
                </article>
                <!-- Card 3: Family -->
                <article class="style-card">
                    <img src="https://picsum.photos/seed/family-vacation/600/450" alt="Family building sandcastles on a pristine beach at sunset">
                    <div class="style-card-content">
                        <h3>Family Vacations</h3>
                        <p>Multi-generational itineraries with kid-approved activities, flexible pacing, and vetted childcare options for parental downtime.</p>
                        <a href="#guides" class="btn btn-secondary btn-sm">Read Family Guides</a>
                    </div>
                </article>
                <!-- Card 4: Culture -->
                <article class="style-card">
                    <img src="https://picsum.photos/seed/cultural-immersion/600/450" alt="Traveler participating in a traditional tea ceremony in Kyoto">
                    <div class="style-card-content">
                        <h3>Cultural Immersion</h3>
                        <p>Go beyond sightseeing. Live with locals, learn crafts, and understand history through private guides and community-based tourism.</p>
                        <a href="#experiences" class="btn btn-ghost btn-sm" style="color: #fff; border-color: #fff;">Join a Journey</a>
                    </div>
                </article>
            </div>
        </div>
    </section>

    <!-- Destination Spotlight Section -->
    <section class="destinations section" id="destinations" aria-labelledby="dest-title">
        <div class="container">
            <header class="section-header">
                <span class="tagline">Featured Destinations</span>
                <h2 id="dest-title">Where We're Heading Now</h2>
                <p>Deep dives into trending and timeless locations, complete with logistical insights, seasonal advice, and curated itinerary frameworks.</p>
            </header>
            <div class="dest-grid">
                <!-- Destination 1: Japan -->
                <article class="dest-item">
                    <div class="dest-media">
                        <img src="https://picsum.photos/seed/japan-kyoto/1200/750" alt="Traditional wooden architecture in Kyoto during cherry blossom season">
                        <span class="dest-badge">Trending: Spring 2025</span>
                    </div>
                    <div class="dest-content">
                        <h2>Kyoto, Japan: The Cultural Heartbeat</h2>
                        <p class="lead">Kyoto remains the gold standard for cultural immersion in East Asia. With over 1,600 Buddhist temples and 400 Shinto shrines, the city demands a strategic itinerary to avoid visitor fatigue.</p>
                        <p>We recommend a minimum of four nights to properly experience the Gion district at dawn, a private tea ceremony in Uji, and a day trip to the bamboo groves of Arashiyama. Navigating the bus system can be daunting; our guides include pre-loaded IC card instructions and restaurant reservations requiring Japanese phone numbers.</p>
                        <div class="dest-highlights">
                            <span class="highlight-tag">Visa-Free (90 Days)</span>
                            <span class="highlight-tag">JR Pass Eligible</span>
                            <span class="highlight-tag">Cherry Blossom Season</span>
                            <span class="highlight-tag">Vegetarian Friendly</span>
                        </div>
                        <div class="dest-meta">
                            <div><strong>Best Months:</strong> Apr, Oct, Nov</div>
                            <div><strong>Avg. Daily Cost:</strong> $$ Mid-Range</div>
                            <div><strong>Flight Time (LAX):</strong> ~11h 30m</div>
                        </div>
                        <a href="#guides" class="btn btn-primary mt-2" style="margin-top: 1rem;">View Kyoto Itinerary</a>
                    </div>
                </article>

                <!-- Destination 2: Patagonia -->
                <article class="dest-item reverse">
                    <div class="dest-media">
                        <img src="https://picsum.photos/seed/patagonia-torres/1200/750" alt="Torres del Paine towers reflecting in a glacial lake">
                        <span class="dest-badge">Adventure Tier 5</span>
                    </div>
                    <div class="dest-content">
                        <h2>Patagonia, Chile/Argentina: The Wild South</h2>
                        <p class="lead">Spanning the Andes across two nations, Patagonia is defined by dramatic volatility—fierce winds, rapidly shifting weather, and landscapes that feel prehistoric. This is not a destination for rigid schedules.</p>
                        <p>The "W Trek" in Torres del Paine requires booking refugios (mountain huts) 6–12 months in advance. We coordinate the complex logistics: bus transfers from Punta Arenas or El Calafate, park entry permits, and contingency plans for high-wind closures. For non-hikers, we curate lodge-based explorations with 4x4 excursions to the Perito Moreno Glacier.</p>
                        <div class="dest-highlights">
                            <span class="highlight-tag">Trekking Permits Required</span>
                            <span class="highlight-tag">Shoulder Season Value</span>
                            <span class="highlight-tag">Multi-Currency Zone</span>
                            <span class="highlight-tag">Gear Rental Available</span>
                        </div>
                        <div class="dest-meta">
                            <div><strong>Best Months:</strong> Dec - Feb (Summer)</div>
                            <div><strong>Avg. Daily Cost:</strong> $$$ High (Logistics)</div>
                            <div><strong>Flight Time (NYC):</strong> ~16h + Connections</div>
                        </div>
                        <a href="#experiences" class="btn btn-primary mt-2" style="margin-top: 1rem;">Book Patagonia Trek</a>
                    </div>
                </article>

                <!-- Destination 3: Amalfi -->
                <article class="dest-item">
                    <div class="dest-media">
                        <img src="https://picsum.photos/seed/amalfi-coast/1200/750" alt="Cliffside village of Positano with colorful buildings cascading to the sea">
                        <span class="dest-badge">Luxury & Romance</span>
                    </div>
                    <div class="dest-content">
                        <h2>Amalfi Coast, Italy: La Dolce Vita</h2>
                        <p class="lead">The Amalfi Coast is a masterpiece of vertical urbanism, where lemon groves cling to cliffs above the Tyrrhenian Sea. However, overtourism has strained infrastructure; strategic planning is essential for an authentic experience.</p>
                        <p>We bypass the day-tripper crowds in Positano by basing clients in Ravello or the quieter village of Atrani. Private boat transfers are non-negotiable for efficient hopping between Capri, Amalfi town, and hidden coves like Fiordo di Furore. We also arrange cooking classes in organic agriturismos and private access to the gardens of Villa Cimbrone.</p>
                        <div class="dest-highlights">
                            <span class="highlight-tag">ZTL Traffic Zones Active</span>
                            <span class="highlight-tag">Ferry Schedules Seasonal</span>
                            <span class="highlight-tag">Michelin Density High</span>
                            <span class="highlight-tag">Honeymoon Specialist</span>
                        </div>
                        <div class="dest-meta">
                            <div><strong>Best Months:</strong> May, Jun, Sep</div>
                            <div><strong>Avg. Daily Cost:</strong> $$$ Luxury</div>
                            <div><strong>Flight Time (JFK):</strong> ~8h 30m (NAP)</div>
                        </div>
                        <a href="#destinations" class="btn btn-primary mt-2" style="margin-top: 1rem;">Plan Amalfi Getaway</a>
                    </div>
                </article>
            </div>
        </div>
    </section>

    <!-- Resources / Guides Section -->
    <section class="resources section" id="guides" aria-labelledby="guides-title">
        <div class="container">
            <header class="section-header">
                <span class="tagline">Expert Resources</span>
                <h2 id="guides-title">Travel Guides & Insights</h2>
                <p>Our editorial team publishes deep-dive articles on visa policy changes, packing strategies, airline loyalty hacks, and destination-specific cultural etiquette.</p>
            </header>
            <div class="resources-grid">
                <article class="resource-card">
                    <img src="https://picsum.photos/seed/visa-guide/600/340" alt="Passport with stamps and visa documents on a map">
                    <div class="resource-body">
                        <div class="resource-meta">
                            <span>📄 Visas & Logistics</span>
                            <span>12 min read</span>
                            <span>Updated Oct 2023</span>
                        </div>
                        <h3>Navigating Schengen Visa Changes for 2024/2025</h3>
                        <p>The upcoming ETIAS authorization and EES biometric entry system fundamentally alter entry requirements for US, UK, and Canadian passport holders. We break down the application timeline, fee structures, and exemptions.</p>
                        <a href="#" class="read-more">Read Guide <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></a>
                    </div>
                </article>
                <article class="resource-card">
                    <img src="https://picsum.photos/seed/packing-light/600/340" alt="Open minimalist backpack with organized packing cubes">
                    <div class="resource-body">
                        <div class="resource-meta">
                            <span>🎒 Packing & Gear</span>
                            <span>8 min read</span>
                            <span>Updated Sep 2023</span>
                        </div>
                        <h3>The One-Bag Strategy: 3 Weeks in a Carry-On</h3>
                        <p>Mastering the capsule wardrobe for variable climates. We review the latest merino wool blends, technical pants, and compression packing cubes tested on a 21-day multi-climate itinerary from Reykjavik to Rome.</p>
                        <a href="#" class="read-more">Read Guide <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></a>
                    </div>
                </article>
                <article class="resource-card">
                    <img src="https://picsum.photos/seed/points-miles/600/340" alt="Credit cards fanned out next to a boarding pass and laptop">
                    <div class="resource-body">
                        <div class="resource-meta">
                            <span>✈️ Points & Miles</span>
                            <span>15 min read</span>
                            <span>Updated Nov 2023</span>
                        </div>
                        <h3>Maximizing Airline Alliances: Star Alliance vs Oneworld</h3>
                        <p>A comparative analysis of status matching, round-the-world ticket routing rules, and sweet-spot redemptions for long-haul premium cabin travel. Includes a calculator for requalification thresholds.</p>
                        <a href="#" class="read-more">Read Guide <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></a>
                    </div>
                </article>
                <article class="resource-card">
                    <img src="https://picsum.photos/seed/solo-safety/600/340" alt="Solo traveler reading a map in a busy foreign market">
                    <div class="resource-body">
                        <div class="resource-meta">
                            <span>🛡️ Safety & Solo</span>
                            <span>10 min read</span>
                            <span>Updated Aug 2023</span>
                        </div>
                        <h3>Solo Female Travel: Risk Assessment Frameworks</h3>
                        <p>Moving beyond anecdotal advice. We apply a standardized risk matrix evaluating political stability, medical infrastructure, cultural attitudes, and digital connectivity across 50 popular solo destinations.</p>
                        <a href="#" class="read-more">Read Guide <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></a>
                    </div>
                </article>
            </div>
            <div style="text-align: center; margin-top: 3rem;">
                <a href="#" class="btn btn-secondary">View All Guides & Resources</a>
            </div>
        </div>
    </section>

    <!-- Testimonials Section -->
    <section class="testimonials section" aria-labelledby="test-title">
        <div class="container">
            <header class="section-header">
                <span class="tagline">Traveler Voices</span>
                <h2 id="test-title">Journeys That Changed Perspectives</h2>
                <p>Verified reviews from clients who trusted us with their most precious asset: their time off.</p>
            </header>
            <div class="testimonials-track">
                <article class="testimonial-card">
                    <div class="stars" aria-label="5 out of 5 stars">★★★★★</div>
                    <blockquote>"The Kyoto itinerary was flawless. Having a private guide for the Fushimi Inari hike at 6 AM before the crowds changed everything. They even handled our dietary restriction cards translated for every restaurant reservation."</blockquote>
                    <div class="testimonial-author">
                        <img src="https://i.pravatar.cc/150?u=sarahjenkins" alt="Sarah Jenkins" loading="lazy">
                        <div class="author-info">
                            <strong>Sarah Jenkins</strong>
                            <span>Kyoto Cultural Immersion • April 2023</span>
                        </div>
                    </div>
                </article>
                <article class="testimonial-card">
                    <div class="stars" aria-label="5 out of 5 stars">★★★★★</div>
                    <blockquote>"Planning the Patagonia W Trek logistics remotely felt impossible—refugio bookings, bus connections, weather windows. Horizon & Compass secured every hut, provided a Garmin InReach for safety, and had a Plan B ready when 80km/h winds closed the passes."</blockquote>
                    <div class="testimonial-author">
                        <img src="https://i.pravatar.cc/150?u=marcusten" alt="Marcus Ten" loading="lazy">
                        <div class="author-info">
                            <strong>Marcus Ten</strong>
                            <span>Patagonia Trek • January 2024</span>
                        </div>
                    </div>
                </article>
                <article class="testimonial-card">
                    <div class="stars" aria-label="5 out of 5 stars">★★★★★</div>
                    <blockquote>"Our multi-generational Amalfi trip (ages 7 to 75) could have been a disaster. They arranged a private boat for the grandparents, a cooking class for the teens, and a luxury villa with elevator access. Zero friction, pure memory making."</blockquote>
                    <div class="testimonial-author">
                        <img src="https://i.pravatar.cc/150?u=elenarossi" alt="Elena Rossi" loading="lazy">
                        <div class="author-info">
                            <strong>Elena Rossi</strong>
                            <span>Amalfi Family Reunion • June 2023</span>
                        </div>
                    </div>
                </article>
            </div>
        </div>
    </section>

    <!-- FAQ Accordion Section -->
    <section class="faq section" aria-labelledby="faq-title">
        <div class="container">
            <header class="section-header">
                <span class="tagline">Common Questions</span>
                <h2 id="faq-title">Planning Essentials</h2>
                <p>Answers to the logistical questions we hear most often during initial consultations.</p>
            </header>
            <div class="faq-list">
                <div class="faq-item">
                    <button class="faq-question" aria-expanded="false" aria-controls="faq1">How far in advance should I book international trips?</button>
                    <div class="faq-answer" id="faq1" role="region" aria-hidden="true">
                        <div class="inner">
                            <p>For peak season (European summer, Japanese cherry blossom, Patagonia summer), we recommend 9–12 months for flights and accommodation, especially if you require specific room categories or adjoining suites.</p>
                            <p>Shoulder seasons (April/May, September/October) offer more flexibility—3 to 6 months is usually sufficient. However, visa processing times (where applicable) should be factored in immediately upon booking.</p>
                        </div>
                    </div>
                </div>
                <div class="faq-item">
                    <button class="faq-question" aria-expanded="false" aria-controls="faq2">What is included in your planning fee structure?</button>
                    <div class="faq-answer" id="faq2" role="region" aria-hidden="true">
                        <div class="inner">
                            <p>Our planning fees are flat-rate per trip segment (not commission-based), ensuring unbiased recommendations. The fee covers: initial consultation, iterative itinerary design, all booking management (flights, hotels, transfers, excursions), 24/7 emergency support during travel, and a digital trip dossier with offline maps and confirmation vouchers.</p>
                            <p>We do not mark up supplier rates; you pay the same price as booking direct, often less due to our consortia partnerships (Virtuoso, Signature Travel Network).</p>
                        </div>
                    </div>
                </div>
                <div class="faq-item">
                    <button class="faq-question" aria-expanded="false" aria-controls="faq3">Do you handle complex visa applications and documentation?</button>
                    <div class="faq-answer" id="faq3" role="region" aria-hidden="true">
                        <div class="inner">
                            <p>Yes. We partner with a specialized visa concierge service for complex jurisdictions (China, India, Russia, Nigeria, Schengen long-stay). We provide document checklists, invitation letter templates, appointment scheduling, and embassy liaison services.</p>
                            <p>Note: Government fees and concierge service fees are billed separately. We cannot guarantee visa issuance, but our rejection rate is under 2% due to rigorous pre-screening.</p>
                        </div>
                    </div>
                </div>
                <div class="faq-item">
                    <button class="faq-question" aria-expanded="false" aria-controls="faq4">How do you handle trip disruptions (weather, strikes, illness)?</button>
                    <div class="faq-answer" id="faq4" role="region" aria-hidden="true">
                        <div class="inner">
                            <p>Every client receives a dedicated "Trip Guardian" contact active 24/7 during travel dates. We monitor flight status, weather alerts, and local news feeds proactively. In the event of disruption, we rebook flights, negotiate hotel extensions (often at complimentary or reduced rates via partner relationships), and reroute ground transportation.</p>
                            <p>We strongly recommend comprehensive travel insurance (CFAR - Cancel For Any Reason) which we can facilitate through our preferred providers.</p>
                        </div>
                    </div>
                </div>
                <div class="faq-item">
                    <button class="faq-question" aria-expanded="false" aria-controls="faq5">Can you book flights using my frequent flyer miles?</button>
                    <div class="faq-answer" id="faq5" role="region" aria-hidden="true">
                        <div class="inner">
                            <p>Absolutely. Our "Points Concierge" service searches award availability across alliances (Star Alliance, Oneworld, SkyTeam) for your specific loyalty accounts. We handle the booking engine quirks (married segment logic, phantom availability) and manage the hold/confirm process.</p>
                            <p>This is a complimentary add-on for full planning clients. For flight-only requests, a separate research fee applies.</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Newsletter / CTA Banner -->
    <section class="newsletter-banner" aria-labelledby="nl-title">
        <div class="container newsletter-content">
            <h2 id="nl-title">Ready to Depart?</h2>
            <p>Join 45,000+ travelers receiving our monthly "Compass Rose" digest: destination deep-dives, flash sales on luxury inventory, and visa policy alerts.</p>
            <form class="newsletter-form" id="newsletterForm" novalidate>
                <input type="email" name="email" id="email" placeholder="Enter your email address" required aria-label="Email Address">
                <button type="submit" class="btn btn-accent">Subscribe</button>
            </form>
            <p style="margin-top: 1rem; font-size: 0.8rem; color: rgba(255,255,255,0.5);">No spam. Unsubscribe anytime. <a href="#privacy" style="color: var(--color-accent);">Privacy Policy</a>.</p>
        </div>
    </section>
</main>

<footer class="site-footer" id="contact" role="contentinfo">
    <div class="container">
        <div class="footer-grid">
            <div class="footer-col footer-brand">
                <div class="footer-logo">
                    <img src="https://placehold.co/80x80/1a5c5e/ffffff?text=H%26C&font=playfair+display" alt="Horizon & Compass Logo" width="36" height="36">
                    <span>Horizon & Compass</span>
                </div>
                <p>Charting journeys beyond the ordinary since 2018. We design transformative travel experiences through meticulous planning, local expertise, and unwavering support.</p>
                <div class="social-links" role="list" aria-label="Social Media Links">
                    <a href="#" aria-label="Instagram" role="listitem"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="20" x="2" y="2" rx="5" ry="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" x2="17.51" y1="6.5" y2="6.5"/></svg></a>
                    <a href="#" aria-label="Twitter" role="listitem"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"/></svg></a>
                    <a href="#" aria-label="YouTube" role="listitem"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.44 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.44 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17"/><polygon points="10 15 15 12 10 9"/></svg></a>
                    <a href="#" aria-label="LinkedIn" role="listitem"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg></a>
                </div>
            </div>
            <div class="footer-col">
                <h4>Plan Your Trip</h4>
                <ul>
                    <li><a href="#destinations">Destinations</a></li>
                    <li><a href="#trip-planner">Trip Planner Tool</a></li>
                    <li><a href="#flights">Flight Booking</a></li>
                    <li><a href="#experiences">Experiences & Tours</a></li>
                    <li><a href="#">Travel Insurance</a></li>
                    <li><a href="#">Visa Assistance</a></li>
                </ul>
            </div>
            <div class="footer-col">
                <h4>Resources</h4>
                <ul>
                    <li><a href="#guides">Travel Guides</a></li>
                    <li><a href="#">Packing Lists</a></li>
                    <li><a href="#">Health & Safety</a></li>
                    <li><a href="#">Points & Miles</a></li>
                    <li><a href="#">Solo Travel Tips</a></li>
                    <li><a href="#">Family Travel</a></li>
                </ul>
            </div>
            <div class="footer-col">
                <h4>Company</h4>
                <ul>
                    <li><a href="#">About Us</a></li>
                    <li><a href="#">Our Advisors</a></li>
                    <li><a href="#">Careers</a></li>
                    <li><a href="#">Press & Media</a></li>
                    <li><a href="#">Sustainability</a></li>
                    <li><a href="#">Partnerships</a></li>
                </ul>
            </div>
        </div>
        <div class="footer-bottom">
            <p>&copy; 2024 Horizon & Compass. All rights reserved.</p>
            <div class="footer-legal">
                <a href="#privacy">Privacy Policy</a>
                <a href="#terms">Terms of Service</a>
                <a href="#cookies">Cookie Settings</a>
                <a href="#accessibility">Accessibility</a>
            </div>
        </div>
    </div>
</footer>

<script>
    // --- Global Utilities ---
    const $ = (sel, ctx = document) => ctx.querySelector(sel);
    const $$ = (sel, ctx = document) => Array.from(ctx.querySelectorAll(sel));

    // --- Header Scroll Effect ---
    const header = $('#siteHeader');
    const handleScroll = () => {
        if (window.scrollY > 50) header.classList.add('scrolled');
        else header.classList.remove('scrolled');
    };
    window.addEventListener('scroll', handleScroll, { passive: true });

    // --- Mobile Navigation ---
    const mobileBtn = $('#mobileMenuBtn');
    const mobileNav = $('#mobileNav');
    mobileBtn?.addEventListener('click', () => {
        const isOpen = mobileNav.classList.toggle('active');
        mobileBtn.classList.toggle('active');
        mobileBtn.setAttribute('aria-expanded', isOpen);
        document.body.style.overflow = isOpen ? 'hidden' : '';
    });
    // Close mobile nav on link click
    $$('.mobile-nav-overlay a').forEach(link => {
        link.addEventListener('click', () => {
            mobileNav.classList.remove('active');
            mobileBtn.classList.remove('active');
            mobileBtn.setAttribute('aria-expanded', 'false');
            document.body.style.overflow = '';
        });
    });

    // --- Interactive Trip Planner Widget ---
    const tripForm = $('#tripForm');
    const resultsContainer = $('#widgetResults');
    
    // Mock Destination Data
    const destinationsData = [
        { id: 'kyoto', vibe: 'culture', budget: 'mid', minDays: 5, name: 'Kyoto, Japan', desc: 'Temples, gardens & kaiseki dining.', img: 'https://picsum.photos/seed/kyoto-thumb/160/160', price: '$$', duration: '7-10 Days' },
        { id: 'patagonia', vibe: 'adventure', budget: 'luxury', minDays: 10, name: 'Patagonia, Chile', desc: 'Glaciers, trekking & wild landscapes.', img: 'https://picsum.photos/seed/patagonia-thumb/160/160', price: '$$$', duration: '10-14 Days' },
        { id: 'amalfi', vibe: 'luxury', budget: 'luxury', minDays: 5, name: 'Amalfi Coast, Italy', desc: 'Cliffside villages & private boat tours.', img: 'https://picsum.photos/seed/amalfi-thumb/160/160', price: '$$$', duration: '5-7 Days' },
        { id: 'vietnam', vibe: 'adventure', budget: 'budget', minDays: 10, name: 'Northern Vietnam', desc: 'Motorbike loops & homestays.', img: 'https://picsum.photos/seed/vietnam-thumb/160/160', price: '$', duration: '14-21 Days' },
        { id: 'iceland', vibe: 'adventure', budget: 'mid', minDays: 7, name: 'Iceland Ring Road', desc: 'Waterfalls, volcanoes & aurora.', img: 'https://picsum.photos/seed/iceland-thumb/160/160', price: '$$', duration: '7-10 Days' },
        { id: 'bali', vibe: 'family', budget: 'mid', minDays: 7, name: 'Bali, Indonesia', desc: 'Rice terraces, culture & beaches.', img: 'https://picsum.photos/seed/bali-thumb/160/160', price: '$$', duration: '7-14 Days' },
    ];

    tripForm?.addEventListener('submit', (e) => {
        e.preventDefault();
        const vibe = $('#tripVibe').value;
        const budget = $('#tripBudget').value;
        const duration = parseInt($('#tripDuration').value, 10);

        // Filter logic
        const matches = destinationsData.filter(d => 
            (vibe === '' || d.vibe === vibe) &&
            (budget === '' || d.budget === budget) &&
            d.minDays <= duration
        ).slice(0, 3); // Limit to 3 results

        renderResults(matches);
    });

    function renderResults(matches) {
        if (matches.length === 0) {
            resultsContainer.innerHTML = `<p style="color: rgba(255,255,255,0.7); text-align: center; padding: 1rem;">No exact matches found. Try broadening your budget or duration.</p>`;
            resultsContainer.classList.add('visible');
            return;
        }
        resultsContainer.innerHTML = matches.map(d => `
            <div class="result-card">
                <img src="${d.img}" alt="${d.name}" loading="lazy">
                <div class="result-info">
                    <h4>${d.name}</h4>
                    <p>${d.desc}</p>
                    <div class="meta">
                        <span>${d.price}</span>
                        <span>${d.duration}</span>
                    </div>
                </div>
            </div>
        `).join('');
        resultsContainer.classList.add('visible');
    }

    // --- FAQ Accordion ---
    $$('.faq-question').forEach(btn => {
        btn.addEventListener('click', () => {
            const item = btn.closest('.faq-item');
            const answer = $('#' + btn.getAttribute('aria-controls'));
            const isOpen = item.classList.toggle('active');
            
            btn.setAttribute('aria-expanded', isOpen);
            answer.setAttribute('aria-hidden', !isOpen);
            
            // Calculate height for smooth animation
            if (isOpen) {
                answer.style.maxHeight = answer.scrollHeight + 'px';
            } else {
                answer.style.maxHeight = '0px';
            }
        });
    });

    // --- Newsletter Form (Mock) ---
    $('#newsletterForm')?.addEventListener('submit', (e) => {
        e.preventDefault();
        const btn = e.target.querySelector('button');
        const originalText = btn.innerHTML;
        btn.innerHTML = 'Subscribing...';
        btn.disabled = true;
        setTimeout(() => {
            btn.innerHTML = 'Subscribed!';
            btn.style.background = '#2e7d32';
            btn.style.borderColor = '#2e7d32';
            setTimeout(() => {
                btn.innerHTML = originalText;
                btn.disabled = false;
                btn.style.background = '';
                btn.style.borderColor = '';
                e.target.reset();
            }, 2000);
        }, 1000);
    });

    // --- Intersection Observer for Animations (Optional Polish) ---
    const observerOptions = { rootMargin: '0px 0px -50px 0px', threshold: 0.1 };
    const observer = new IntersectionObserver((entries) => {
        entries.forEach(entry => {
            if (entry.isIntersecting) {
                entry.target.style.opacity = '1';
                entry.target.style.transform = 'translateY(0)';
                observer.unobserve(entry.target);
            }
        });
    }, observerOptions);

    // Apply initial state and observe sections
    $$('section.section > .container > *:not(.section-header)').forEach(el => {
        if (el.classList.contains('styles-grid') || el.classList.contains('dest-grid') || el.classList.contains('resources-grid') || el.classList.contains('testimonials-track') || el.classList.contains('faq-list')) {
            el.style.opacity = '0';
            el.style.transform = 'translateY(20px)';
            el.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
            observer.observe(el);
        }
    });
    // Observe section headers separately
    $$('.section-header').forEach(el => {
        el.style.opacity = '0';
        el.style.transform = 'translateY(20px)';
        el.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
        observer.observe(el);
    });

</script>
</body>
</html>
View Axe Report (JSON)
{
  "testEngine": {
    "name": "axe-core",
    "version": "4.10.2"
  },
  "testRunner": {
    "name": "axe"
  },
  "testEnvironment": {
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
    "windowWidth": 1280,
    "windowHeight": 720,
    "orientationAngle": 0,
    "orientationType": "landscape-primary"
  },
  "timestamp": "2026-11-12T09:42:36.921Z",
  "url": "https://benchmark.aimac.invalid/84ce6152c80172fb75d25713d629bcd7ffa9ab948d19c02047dba8f9cd130c81.html",
  "toolOptions": {
    "runOnly": {
      "type": "tag",
      "values": [
        "wcag2a",
        "wcag2aa",
        "wcag21a",
        "wcag21aa",
        "wcag22a",
        "wcag22aa"
      ]
    },
    "resultTypes": [
      "violations"
    ],
    "reporter": "v1"
  },
  "inapplicable": [
    {
      "id": "area-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure <area> elements of image maps have alternative text",
      "help": "Active <area> elements must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-braille-equivalent",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
      "help": "aria-braille attributes must have a non-braille equivalent",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-command-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA button, link and menuitem has an accessible name",
      "help": "ARIA commands must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-input-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA input field has an accessible name",
      "help": "ARIA input fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-meter-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag111",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure every ARIA meter node has an accessible name",
      "help": "ARIA meter nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-progressbar-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag111",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure every ARIA progressbar node has an accessible name",
      "help": "ARIA progressbar nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-toggle-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA toggle field has an accessible name",
      "help": "ARIA toggle fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-tooltip-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every ARIA tooltip node has an accessible name",
      "help": "ARIA tooltip nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "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": "frame-focusable-content",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag211",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
      "help": "Frames with focusable content must not have tabindex=-1",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-title-unique",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT12.d",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
      "help": "Frames must have a unique title attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.i",
        "TTv5",
        "TT12.d",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure <iframe> and <frame> elements have an accessible name",
      "help": "Frames must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
      "nodes": []
    },
    {
      "id": "html-xml-lang-mismatch",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
      "help": "HTML elements with lang and xml:lang must have the same base language",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
      "nodes": []
    },
    {
      "id": "input-button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure input buttons have discernible text",
      "help": "Input buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "input-image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure <input type=\"image\"> elements have alternative text",
      "help": "Image buttons must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "marquee",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag222",
        "TTv5",
        "TT2.b",
        "EN-301-549",
        "EN-9.2.2.2"
      ],
      "description": "Ensure <marquee> elements are not used",
      "help": "<marquee> elements are deprecated and must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
      "nodes": []
    },
    {
      "id": "meta-refresh",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag221",
        "TTv5",
        "TT8.a",
        "EN-301-549",
        "EN-9.2.2.1"
      ],
      "description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
      "help": "Delayed refresh under 20 hours must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
      "nodes": []
    },
    {
      "id": "object-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure <object> elements have alternative text",
      "help": "<object> elements must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "role-img-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure [role=\"img\"] elements have alternative text",
      "help": "[role=\"img\"] elements must have an alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "scrollable-region-focusable",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag211",
        "wcag213",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1",
        "EN-9.2.1.3"
      ],
      "description": "Ensure elements that have scrollable content are accessible by keyboard",
      "help": "Scrollable region must have keyboard access",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
      "nodes": []
    },
    {
      "id": "server-side-image-map",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag211",
        "section508",
        "section508.22.f",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure that server-side image maps are not used",
      "help": "Server-side image maps must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
      "nodes": []
    },
    {
      "id": "summary-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure summary elements have discernible text",
      "help": "Summary elements must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "svg-img-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
      "help": "<svg> elements with an img role must have an alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "td-headers-attr",
      "impact": null,
      "tags": [
        "cat.tables",
        "wcag2a",
        "wcag131",
        "section508",
        "section508.22.g",
        "TTv5",
        "TT14.b",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
      "help": "Table cells that use the headers attribute must only refer to cells in the same table",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
      "nodes": []
    },
    {
      "id": "th-has-data-cells",
      "impact": null,
      "tags": [
        "cat.tables",
        "wcag2a",
        "wcag131",
        "section508",
        "section508.22.g",
        "TTv5",
        "TT14.b",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
      "help": "Table headers in a data table must refer to data cells",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
      "nodes": []
    },
    {
      "id": "valid-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2aa",
        "wcag312",
        "TTv5",
        "TT11.b",
        "EN-301-549",
        "EN-9.3.1.2",
        "ACT"
      ],
      "description": "Ensure lang attributes have valid values",
      "help": "lang attribute must have a valid value",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
      "nodes": []
    },
    {
      "id": "video-caption",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag122",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT17.a",
        "EN-301-549",
        "EN-9.1.2.2"
      ],
      "description": "Ensure <video> elements have captions",
      "help": "<video> elements must have captions",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
      "nodes": []
    },
    {
      "id": "no-autoplay-audio",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag142",
        "TTv5",
        "TT2.a",
        "EN-301-549",
        "EN-9.1.4.2",
        "ACT"
      ],
      "description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
      "help": "<video> or <audio> elements must not play automatically",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
      "nodes": []
    }
  ],
  "passes": [
    {
      "id": "aria-allowed-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure an element's role supports its ARIA attributes",
      "help": "Elements must only use supported ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-allowed-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attributes are used correctly for the defined role"
            }
          ],
          "none": [
            {
              "id": "aria-unsupported-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute is supported"
            }
          ],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Horizon &amp; Compass Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "id": "aria-conditional-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are used as described in the specification of the element's role",
      "help": "ARIA attributes must be used as specified for the element's role",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-conditional-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Horizon &amp; Compass Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "id": "aria-deprecated-role",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements do not use deprecated roles",
      "help": "Deprecated ARIA roles must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "deprecatedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "minor",
              "message": "ARIA role is not deprecated"
            }
          ],
          "impact": null,
          "html": "<header class=\"site-header\" id=\"siteHeader\" role=\"banner\">",
          "target": [
            "#siteHeader"
          ]
        }
      ]
    },
    {
      "id": "aria-hidden-body",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "wcag412",
        "EN-301-549",
        "EN-9.1.3.1",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-hidden=\"true\" is not present on the document body.",
      "help": "aria-hidden=\"true\" must not be present on the document body",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-hidden-body",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "No aria-hidden attribute is present on document body"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<body>",
          "target": [
            "body"
          ]
        }
      ]
    },
    {
      "id": "aria-hidden-focus",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
      "help": "ARIA hidden element must not be focusable or contain focusable elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "focusable-modal-open",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements while a modal is open"
            },
            {
              "id": "focusable-disabled",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            },
            {
              "id": "focusable-not-tabbable",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<div class=\"faq-answer\" id=\"faq1\" role=\"region\" aria-hidden=\"true\">",
          "target": [
            "#faq1"
          ]
        }
      ]
    },
    {
      "id": "aria-prohibited-attr",
      "impact": "serious",
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are not prohibited for an element's role",
      "help": "Elements must only use permitted ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "aria-prohibited-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Horizon &amp; Compass Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "id": "aria-required-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements with ARIA roles have all required ARIA attributes",
      "help": "Required ARIA attributes must be provided",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-required-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "All required ARIA attributes are present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<header class=\"site-header\" id=\"siteHeader\" role=\"banner\">",
          "target": [
            "#siteHeader"
          ]
        }
      ]
    },
    {
      "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": [
        {
          "any": [
            {
              "id": "aria-required-children",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Required ARIA children are present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"social-links\" role=\"list\" aria-label=\"Social Media Links\">",
          "target": [
            ".social-links"
          ]
        }
      ]
    },
    {
      "id": "aria-required-parent",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure elements with an ARIA role that require parent roles are contained by them",
      "help": "Certain ARIA roles must be contained by particular parents",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-required-parent",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Required ARIA parent role present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" aria-label=\"Instagram\" role=\"listitem\">",
          "target": [
            "a[aria-label=\"Instagram\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-roles",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all elements with a role attribute use a valid value",
      "help": "ARIA roles used must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "invalidrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is valid"
            },
            {
              "id": "abstractrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Abstract roles are not used"
            },
            {
              "id": "unsupportedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is supported"
            }
          ],
          "impact": null,
          "html": "<header class=\"site-header\" id=\"siteHeader\" role=\"banner\">",
          "target": [
            "#siteHeader"
          ]
        }
      ]
    },
    {
      "id": "aria-valid-attr-value",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all ARIA attributes have valid values",
      "help": "ARIA attributes must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-valid-attr-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute values are valid"
            },
            {
              "id": "aria-errormessage",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
            },
            {
              "id": "aria-level",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-level values are valid"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Horizon &amp; Compass Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "id": "aria-valid-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure attributes that begin with aria- are valid ARIA attributes",
      "help": "ARIA attributes must conform to valid names",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-valid-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute name is valid"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Horizon &amp; Compass Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "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=\"#guides\" class=\"btn btn-secondary\" style=\"background: rgba(255,255,255,0.1); border-color: #fff; color: #fff;\">Read Latest Guides</a>",
          "target": [
            ".hero-cta-group > .btn-secondary.btn[href$=\"#guides\"]"
          ]
        }
      ]
    },
    {
      "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 type=\"submit\" class=\"btn btn-accent\" style=\"width: 100%;\">Find My Matches</button>",
          "target": [
            ".form-group:nth-child(4) > .btn-accent[type=\"submit\"]"
          ]
        }
      ]
    },
    {
      "id": "bypass",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag241",
        "section508",
        "section508.22.o",
        "TTv5",
        "TT9.a",
        "EN-301-549",
        "EN-9.2.4.1"
      ],
      "description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
      "help": "Page must have means to bypass repeated blocks",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "internal-link-present",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Valid skip link found"
            },
            {
              "id": "header-present",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<h1 id=\"hero-title\">Discover the World Beyond the Guidebook</h1>",
                  "target": [
                    "#hero-title"
                  ]
                },
                {
                  "html": "<h3>Smart Trip Planner</h3>",
                  "target": [
                    ".widget-header > h3"
                  ]
                },
                {
                  "html": "<h2 id=\"styles-title\">Ways to Experience the World</h2>",
                  "target": [
                    "#styles-title"
                  ]
                },
                {
                  "html": "<h3>Adventure &amp; Trekking</h3>",
                  "target": [
                    ".style-card:nth-child(1) > .style-card-content > h3"
                  ]
                },
                {
                  "html": "<h3>Luxury Escapes</h3>",
                  "target": [
                    ".style-card:nth-child(2) > .style-card-content > h3"
                  ]
                },
                {
                  "html": "<h3>Family Vacations</h3>",
                  "target": [
                    ".style-card:nth-child(3) > .style-card-content > h3"
                  ]
                },
                {
                  "html": "<h3>Cultural Immersion</h3>",
                  "target": [
                    ".style-card:nth-child(4) > .style-card-content > h3"
                  ]
                },
                {
                  "html": "<h2 id=\"dest-title\">Where We're Heading Now</h2>",
                  "target": [
                    "#dest-title"
                  ]
                },
                {
                  "html": "<h2>Kyoto, Japan: The Cultural Heartbeat</h2>",
                  "target": [
                    ".dest-item:nth-child(1) > .dest-content > h2"
                  ]
                },
                {
                  "html": "<h2>Patagonia, Chile/Argentina: The Wild South</h2>",
                  "target": [
                    ".reverse > .dest-content > h2"
                  ]
                },
                {
                  "html": "<h2>Amalfi Coast, Italy: La Dolce Vita</h2>",
                  "target": [
                    ".dest-item:nth-child(3) > .dest-content > h2"
                  ]
                },
                {
                  "html": "<h2 id=\"guides-title\">Travel Guides &amp; Insights</h2>",
                  "target": [
                    "#guides-title"
                  ]
                },
                {
                  "html": "<h3>Navigating Schengen Visa Changes for 2024/2025</h3>",
                  "target": [
                    ".resource-card:nth-child(1) > .resource-body > h3"
                  ]
                },
                {
                  "html": "<h3>The One-Bag Strategy: 3 Weeks in a Carry-On</h3>",
                  "target": [
                    ".resource-card:nth-child(2) > .resource-body > h3"
                  ]
                },
                {
                  "html": "<h3>Maximizing Airline Alliances: Star Alliance vs Oneworld</h3>",
                  "target": [
                    ".resource-card:nth-child(3) > .resource-body > h3"
                  ]
                },
                {
                  "html": "<h3>Solo Female Travel: Risk Assessment Frameworks</h3>",
                  "target": [
                    ".resource-card:nth-child(4) > .resource-body > h3"
                  ]
                },
                {
                  "html": "<h2 id=\"test-title\">Journeys That Changed Perspectives</h2>",
                  "target": [
                    "#test-title"
                  ]
                },
                {
                  "html": "<h2 id=\"faq-title\">Planning Essentials</h2>",
                  "target": [
                    "#faq-title"
                  ]
                },
                {
                  "html": "<h2 id=\"nl-title\">Ready to Depart?</h2>",
                  "target": [
                    "#nl-title"
                  ]
                },
                {
                  "html": "<h4>Plan Your Trip</h4>",
                  "target": [
                    ".footer-col:nth-child(2) > h4"
                  ]
                },
                {
                  "html": "<h4>Resources</h4>",
                  "target": [
                    ".footer-col:nth-child(3) > h4"
                  ]
                },
                {
                  "html": "<h4>Company</h4>",
                  "target": [
                    ".footer-col:nth-child(4) > h4"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a heading"
            },
            {
              "id": "landmark",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<main id=\"mainContent\">",
                  "target": [
                    "#mainContent"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a landmark region"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#1a5c5e",
                "contrastRatio": 7.67,
                "fontSize": "10.5pt (14px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has sufficient color contrast of 7.67"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"#trip-planner\" class=\"btn btn-primary btn-sm d-none d-md-inline-flex\">Plan a Trip</a>",
          "target": [
            ".d-none"
          ]
        }
      ]
    },
    {
      "id": "document-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag242",
        "TTv5",
        "TT12.a",
        "EN-301-549",
        "EN-9.2.4.2",
        "ACT"
      ],
      "description": "Ensure each HTML document contains a non-empty <title> element",
      "help": "Documents must have <title> element to aid in navigation",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "doc-has-title",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Document has a non-empty <title> element"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "duplicate-id-aria",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every id attribute value used in ARIA and in labels is unique",
      "help": "IDs used in ARIA and labels must be unique",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "duplicate-id-aria",
              "data": "mobileNav",
              "relatedNodes": [],
              "impact": "critical",
              "message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"mobile-nav-overlay\" id=\"mobileNav\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Mobile Menu\">",
          "target": [
            "#mobileNav"
          ]
        }
      ]
    },
    {
      "id": "form-field-multiple-labels",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag332",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.3.3.2"
      ],
      "description": "Ensure form field does not have multiple label elements",
      "help": "Form field must not have multiple label elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "multiple-label",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<label for=\"tripVibe\">Travel Style</label>",
                  "target": [
                    "label[for=\"tripVibe\"]"
                  ]
                }
              ],
              "impact": "moderate",
              "message": "Form field does not have multiple label elements"
            }
          ],
          "impact": null,
          "html": "<select id=\"tripVibe\" name=\"vibe\" required=\"\">",
          "target": [
            "#tripVibe"
          ]
        }
      ]
    },
    {
      "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/80x80/1a5c5e/ffffff?text=H%26C&amp;font=playfair+display\" alt=\"Horizon &amp; Compass Logo\" width=\"40\" height=\"40\">",
          "target": [
            "img[width=\"40\"]"
          ]
        }
      ]
    },
    {
      "id": "label",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every form element has a label",
      "help": "Form elements must have labels",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "explicit-label",
              "data": {
                "explicitLabel": "Duration (Days)"
              },
              "relatedNodes": [
                {
                  "html": "<label for=\"tripDuration\">Duration (Days)</label>",
                  "target": [
                    "label[for=\"tripDuration\"]"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has an explicit <label>"
            },
            {
              "id": "non-empty-placeholder",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has a placeholder attribute"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "hidden-explicit-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Form element has a visible explicit <label>"
            }
          ],
          "impact": null,
          "html": "<input type=\"number\" id=\"tripDuration\" name=\"duration\" min=\"3\" max=\"30\" value=\"7\" placeholder=\"e.g. 10\" required=\"\">",
          "target": [
            "#tripDuration"
          ]
        }
      ]
    },
    {
      "id": "link-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure links have discernible text",
      "help": "Links must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has text that is visible to screen readers"
            },
            {
              "id": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "aria-label attribute exists and is not empty"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "focusable-no-name",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element is not in tab order or has accessible text"
            }
          ],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Horizon &amp; Compass Home\">",
          "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>",
          "target": [
            ".footer-col: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=\"#destinations\">Destinations</a></li>",
          "target": [
            ".footer-col: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/80x80/1a5c5e/ffffff?text=H%26C&amp;font=playfair+display\" alt=\"Horizon &amp; Compass Logo\" width=\"40\" height=\"40\">",
          "target": [
            "img[width=\"40\"]"
          ]
        }
      ]
    },
    {
      "id": "select-name",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure select element has an accessible name",
      "help": "Select element must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "explicit-label",
              "data": {
                "explicitLabel": "Travel Style"
              },
              "relatedNodes": [
                {
                  "html": "<label for=\"tripVibe\">Travel Style</label>",
                  "target": [
                    "label[for=\"tripVibe\"]"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has an explicit <label>"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "hidden-explicit-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Form element has a visible explicit <label>"
            }
          ],
          "impact": null,
          "html": "<select id=\"tripVibe\" name=\"vibe\" required=\"\">",
          "target": [
            "#tripVibe"
          ]
        }
      ]
    },
    {
      "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": 274.4,
                "height": 40.8
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Control has sufficient size (274.4px by 40.8px, should be at least 24px by 24px)"
            },
            {
              "id": "target-offset",
              "data": {
                "closestOffset": 24,
                "minOffset": 24
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"Horizon &amp; Compass Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    }
  ],
  "incomplete": [
    {
      "id": "aria-prohibited-attr",
      "impact": "serious",
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are not prohibited for an element's role",
      "help": "Elements must only use permitted ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "aria-prohibited-attr",
              "data": {
                "role": null,
                "nodeName": "div",
                "messageKey": "noRoleSingular",
                "prohibited": [
                  "aria-label"
                ]
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "aria-label attribute is not well supported on a div with no valid role attribute."
            }
          ],
          "impact": "serious",
          "html": "<div class=\"stars\" aria-label=\"5 out of 5 stars\">\u2605\u2605\u2605\u2605\u2605</div>",
          "target": [
            ".testimonial-card:nth-child(1) > .stars[aria-label=\"5 out of 5 stars\"]"
          ],
          "failureSummary": "Fix all of the following:\n  aria-label attribute is not well supported on a div with no valid role attribute."
        }
      ]
    },
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": null,
                "bgColor": null,
                "contrastRatio": 0,
                "fontSize": "18.0pt (24px)",
                "fontWeight": "normal",
                "messageKey": "imgNode",
                "expectedContrastRatio": "3:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header class=\"site-header\" id=\"siteHeader\" role=\"banner\">",
                  "target": [
                    "#siteHeader"
                  ]
                },
                {
                  "html": "<img src=\"https://picsum.photos/seed/horizon-hero/1920/1080\" alt=\"Sunrise over a mountain range with clouds in the valley\">",
                  "target": [
                    ".hero-bg > img"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element's background color could not be determined because element contains an image node"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"logo-text\">Horizon &amp; Compass</span>",
          "target": [
            ".logo-text"
          ],
          "failureSummary": "Fix any of the following:\n  Element's background color could not be determined because element contains an image node"
        }
      ]
    },
    {
      "id": "link-in-text-block",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2a",
        "wcag141",
        "TTv5",
        "TT13.a",
        "EN-301-549",
        "EN-9.1.4.1"
      ],
      "description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
      "help": "Links must be distinguishable without relying on color",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "link-in-text-block",
              "data": {
                "messageKey": "bgGradient"
              },
              "relatedNodes": [
                {
                  "html": "<p style=\"margin-top: 1rem; font-size: 0.8rem; color: rgba(255,255,255,0.5);\">No spam. Unsubscribe anytime. <a href=\"#privacy\" style=\"color: var(--color-accent);\">Privacy Policy</a>.</p>",
                  "target": [
                    "p:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element's contrast ratio could not be determined due to a background gradient"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#privacy\" style=\"color: var(--color-accent);\">Privacy Policy</a>",
          "target": [
            "p:nth-child(4) > a[href$=\"#privacy\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element's contrast ratio 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": "#5a5a5a",
                "bgColor": "#1a1a1a",
                "contrastRatio": 2.52,
                "fontSize": "12.6pt (16.8px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"site-footer\" id=\"contact\" role=\"contentinfo\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.52 (foreground color: #5a5a5a, background color: #1a1a1a, font size: 12.6pt (16.8px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>\u00a9 2024 Horizon &amp; Compass. All rights reserved.</p>",
          "target": [
            ".footer-bottom > p"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.52 (foreground color: #5a5a5a, background color: #1a1a1a, font size: 12.6pt (16.8px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#767676",
                "bgColor": "#1a1a1a",
                "contrastRatio": 3.83,
                "fontSize": "10.2pt (13.6px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"site-footer\" id=\"contact\" role=\"contentinfo\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.83 (foreground color: #767676, background color: #1a1a1a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#privacy\">Privacy Policy</a>",
          "target": [
            ".footer-legal > a[href$=\"#privacy\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.83 (foreground color: #767676, background color: #1a1a1a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#767676",
                "bgColor": "#1a1a1a",
                "contrastRatio": 3.83,
                "fontSize": "10.2pt (13.6px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"site-footer\" id=\"contact\" role=\"contentinfo\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.83 (foreground color: #767676, background color: #1a1a1a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#terms\">Terms of Service</a>",
          "target": [
            "a[href$=\"#terms\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.83 (foreground color: #767676, background color: #1a1a1a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#767676",
                "bgColor": "#1a1a1a",
                "contrastRatio": 3.83,
                "fontSize": "10.2pt (13.6px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"site-footer\" id=\"contact\" role=\"contentinfo\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.83 (foreground color: #767676, background color: #1a1a1a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#cookies\">Cookie Settings</a>",
          "target": [
            "a[href$=\"#cookies\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.83 (foreground color: #767676, background color: #1a1a1a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#767676",
                "bgColor": "#1a1a1a",
                "contrastRatio": 3.83,
                "fontSize": "10.2pt (13.6px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"site-footer\" id=\"contact\" role=\"contentinfo\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.83 (foreground color: #767676, background color: #1a1a1a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#accessibility\">Accessibility</a>",
          "target": [
            "a[href$=\"#accessibility\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.83 (foreground color: #767676, background color: #1a1a1a, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#d4a843",
                "bgColor": "#fdfcf8",
                "contrastRatio": 2.15,
                "fontSize": "15.0pt (20px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"travel-styles section\" aria-labelledby=\"styles-title\">",
                  "target": [
                    ".travel-styles"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.15 (foreground color: #d4a843, background color: #fdfcf8, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"tagline\">Travel Styles</span>",
          "target": [
            ".travel-styles > .container > .section-header > .tagline"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.15 (foreground color: #d4a843, background color: #fdfcf8, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#d4a843",
                "bgColor": "#ffffff",
                "contrastRatio": 2.21,
                "fontSize": "15.0pt (20px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"destinations section\" id=\"destinations\" aria-labelledby=\"dest-title\">",
                  "target": [
                    "#destinations"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.21 (foreground color: #d4a843, background color: #ffffff, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"tagline\">Featured Destinations</span>",
          "target": [
            "#destinations > .container > .section-header > .tagline"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.21 (foreground color: #d4a843, background color: #ffffff, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#d4a843",
                "bgColor": "#fdfcf8",
                "contrastRatio": 2.15,
                "fontSize": "15.0pt (20px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"resources section\" id=\"guides\" aria-labelledby=\"guides-title\">",
                  "target": [
                    "#guides"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.15 (foreground color: #d4a843, background color: #fdfcf8, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"tagline\">Expert Resources</span>",
          "target": [
            "#guides > .container > .section-header > .tagline"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.15 (foreground color: #d4a843, background color: #fdfcf8, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#d4a843",
                "bgColor": "#ffffff",
                "contrastRatio": 2.21,
                "fontSize": "15.0pt (20px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"testimonials section\" aria-labelledby=\"test-title\">",
                  "target": [
                    ".testimonials"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.21 (foreground color: #d4a843, background color: #ffffff, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"tagline\">Traveler Voices</span>",
          "target": [
            ".testimonials > .container > .section-header > .tagline"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.21 (foreground color: #d4a843, background color: #ffffff, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#d4a843",
                "bgColor": "#fdfcf8",
                "contrastRatio": 2.15,
                "fontSize": "15.0pt (20px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"faq section\" aria-labelledby=\"faq-title\">",
                  "target": [
                    ".faq"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.15 (foreground color: #d4a843, background color: #fdfcf8, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"tagline\">Common Questions</span>",
          "target": [
            ".faq > .container > .section-header > .tagline"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.15 (foreground color: #d4a843, background color: #fdfcf8, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1"
        }
      ]
    }
  ],
  "coverage": {
    "contract": "main-document-vertical-scroll",
    "complete": true,
    "positions": [
      {
        "y": 0,
        "height": 9212
      },
      {
        "y": 576,
        "height": 9212
      },
      {
        "y": 1152,
        "height": 9212
      },
      {
        "y": 1728,
        "height": 9212
      },
      {
        "y": 2304,
        "height": 9212
      },
      {
        "y": 2880,
        "height": 9212
      },
      {
        "y": 3456,
        "height": 9212
      },
      {
        "y": 4032,
        "height": 9212
      },
      {
        "y": 4608,
        "height": 9212
      },
      {
        "y": 5184,
        "height": 9212
      },
      {
        "y": 5760,
        "height": 9212
      },
      {
        "y": 6336,
        "height": 9212
      },
      {
        "y": 6912,
        "height": 9212
      },
      {
        "y": 7488,
        "height": 9212
      },
      {
        "y": 8064,
        "height": 9212
      },
      {
        "y": 8492,
        "height": 9212
      }
    ],
    "scans": 17,
    "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 "Travel" 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: "Travel"
- Description: Travel guides, destinations, booking resources, and tourism tips.

**Your Creative Task:**
1.  **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Travel" 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: "Trip Planner", "Flights", "Experiences".
-   **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
    -   Address key topics relevant to the "Travel" category. Consider themes similar to: "Family Vacations", "Adventure Travel", "Luxury Escapes".
    -   **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "visa requirements", "excursion", "itinerary".
    -   **Visuals:** Integrate relevant placeholder images logically within the content sections.
    -   **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Start Planning", "Book Adventure", "Subscribe".
-   **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Travel" sector. Ideas similar but not limited to: "flight tracker".
-   **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "travel hacks", "traveler reviews", "trending destinations".
-   **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.