NVIDIA Nemotron 3.5 Lightning – Travel
via DeepInfra · Generated
- AIMAC Debt 4.51
- Cost $0.0023
- Total Violations 14
- HTML Size 40 KB
- Em Dashes 3
Screenshot
View Live Page
Accessibility Issues Found
14 Serious
-
color-contrast serious 14 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<p class="text-gray-500 text-sm">2024 Wanderlust & Co. 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">
<title>Wanderlust & Co. | Curated Travel Guides & Booking Resources</title>
<script src="https://cdn.tailwindcss.com"></script>
<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=Playfair+Display:wght@400;700&family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
:root {
--bg: #0a0e17;
--bg-subtle: #111827;
--fg: #f0f4f8;
--muted: #6b7c93;
--accent: #e8c55a;
--accent-dark: #b89945;
--card: #1a2232;
--border: #2a3a52;
--success: #22c55e;
--warning: #f6ad55;
}
* {
box-sizing: border-box;
}
body {
font-family: 'Inter', sans-serif;
background-color: var(--bg);
color: var(--fg);
line-height: 1.6;
overflow-x: hidden;
}
.playfair {
font-family: 'Playfair Display', serif;
}
/* Background atmosphere */
.bg-atmosphere {
position: fixed;
inset: 0;
background:
radial-gradient(ellipse 80% 50% at 50% -20%, rgba(232, 197, 90, 0.08), transparent),
radial-gradient(ellipse 60% 40% at 100% 100%, rgba(232, 197, 90, 0.05), transparent);
pointer-events: none;
z-index: 0;
}
/* Noise texture overlay */
.noise-overlay {
position: fixed;
inset: 0;
pointer-events: none;
z-index: 1;
opacity: 0.03;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter name='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: var(--bg-subtle);
}
::-webkit-scrollbar-thumb {
background: var(--border);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--muted);
}
/* Header */
header {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 100;
background: rgba(10, 14, 23, 0.8);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--border);
transition: transform 0.3s ease;
}
header.scrolled {
transform: translateY(-100%);
}
.logo-img {
width: 40px;
height: 40px;
object-fit: contain;
}
/* Hero Section */
.hero {
min-height: 100vh;
display: flex;
align-items: center;
position: relative;
padding-top: 80px;
}
.hero-bg {
position: absolute;
inset: 0;
background: linear-gradient(180deg, var(--bg) 0%, var(--bg-subtle) 100%);
}
.hero-bg::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
radial-gradient(ellipse 80% 60% at 20% 30%, rgba(232, 197, 90, 0.06), transparent),
radial-gradient(ellipse 60% 40% at 80% 70%, rgba(232, 197, 90, 0.04), transparent);
}
.glow-accent {
position: absolute;
width: 400px;
height: 400px;
border-radius: 50%;
background: radial-gradient(circle, var(--accent) 0%, transparent 70%);
opacity: 0.4;
filter: blur(80px);
pointer-events: none;
}
.glow-accent-1 {
top: -100px;
left: -100px;
}
.glow-accent-2 {
bottom: -100px;
right: -100px;
}
/* Section styling */
.section {
padding: 100px 20px;
max-width: 1200px;
margin: 0 auto;
}
.section-header {
text-align: center;
margin-bottom: 60px;
}
.section-header h2 {
font-size: 3rem;
font-weight: 700;
line-height: 1.1;
margin-bottom: 16px;
}
.section-header p {
color: var(--muted);
font-size: 1.15rem;
max-width: 600px;
margin: 0 auto;
}
/* Cards */
.card {
background: var(--card);
border: 1px solid var(--border);
border-radius: 12px;
padding: 32px;
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.card:hover {
transform: translateY(-4px);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
}
.card-icon {
width: 48px;
height: 48px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 20px;
flex-shrink: 0;
}
/* Testimonials */
.testimonial {
font-size: 1.1rem;
line-height: 1.7;
color: var(--muted);
max-width: 700px;
}
.testimonial cite {
display: block;
margin-top: 16px;
font-family: 'Playfair Display', serif;
color: var(--fg);
}
.testimonial cite::before {
content: '\2014 \00A0';
}
/* CTA */
.cta {
background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%);
border-radius: 8px;
padding: 40px;
text-align: center;
color: var(--bg);
position: relative;
overflow: hidden;
}
.cta::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.4'%3E%3Cpath d='M36 34l-24-24'/%3E%3Cpath d='M36 26l24-24'/%3E%3C/g%3E%3C/svg%3E");
opacity: 0.3;
}
.btn {
display: inline-block;
padding: 12px 24px;
border-radius: 4px;
font-weight: 500;
text-decoration: none;
transition: opacity 0.2s;
font-family: 'Inter', sans-serif;
}
.btn-primary {
background: var(--fg);
color: var(--bg);
}
.btn-primary:hover {
opacity: 0.9;
}
.btn-accent {
background: var(--bg);
color: var(--accent);
}
.btn-accent:hover {
background: var(--accent-dark);
}
/* Nav links */
.nav-link {
color: var(--muted);
text-decoration: none;
font-weight: 500;
transition: color 0.2s;
position: relative;
}
.nav-link:hover,
.nav-link.active {
color: var(--fg);
}
.nav-link::after {
content: '';
position: absolute;
bottom: -4px;
left: 0;
width: 0;
height: 2px;
background: var(--accent);
transition: width 0.2s;
}
.nav-link:hover::after,
.nav-link.active::after {
width: 100%;
}
/* Stats */
.stat-number {
font-size: 2.5rem;
font-weight: 700;
background: linear-gradient(135deg, var(--fg), var(--muted));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* Form elements */
input, select, textarea {
width: 100%;
padding: 12px 16px;
background: var(--bg-subtle);
border: 1px solid var(--border);
border-radius: 6px;
color: var(--fg);
font-family: 'Inter', sans-serif;
font-size: 1rem;
transition: border-color 0.2s, box-shadow 0.2s;
}
input:focus, select:focus, textarea:focus {
outline: none;
border-color: var(--accent);
box-shadow: 0 0 0 3px rgba(232, 197, 90, 0.15);
}
/* Focus visible */
*:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
* {
transition: none !important;
animation: none !important;
}
}
/* Mobile menu */
.mobile-nav {
position: fixed;
top: 0;
right: -100%;
width: 280px;
height: 100vh;
background: var(--bg);
padding: 80px 24px;
transition: right 0.3s ease;
z-index: 99;
}
.mobile-nav.open {
right: 0;
}
.mobile-nav a {
display: block;
padding: 12px 0;
color: var(--fg);
text-decoration: none;
font-size: 1.1rem;
border-bottom: 1px solid var(--border);
}
/* Responsive */
@media (max-width: 768px) {
.section-header h2 {
font-size: 2rem;
}
.nav-links {
display: none;
}
.cta {
padding: 30px 20px;
}
}
</style>
</head>
<body>
<!-- Background atmosphere -->
<div class="bg-atmosphere"></div>
<div class="noise-overlay"></div>
<!-- Header -->
<header id="main-header" class="fixed top-0 left-0 right-0 z-50">
<div class="max-w-7xl mx-auto px-6 py-4 flex items-center justify-between">
<!-- Logo -->
<a href="#" class="flex items-center gap-2">
<img src="https://placehold.co/40x40/1a2232/ffffff?text=WC" alt="Wanderlust & Co. Logo" class="logo-img">
<span class="text-xl font-bold playfair">Wanderlust & Co.</span>
</a>
<!-- Nav links -->
<nav class="hidden md:flex items-center gap-8">
<a href="#destinations" class="nav-link">Destinations</a>
<a href="#hotels" class="nav-link">Hotels</a>
<a href="#reviews" class="nav-link">Reviews</a>
<a href="#blog" class="nav-link">Blog</a>
<a href="#contact" class="nav-link">Contact</a>
</nav>
<!-- CTA Button (Mobile) -->
<button id="mobile-menu-btn" class="md:hidden text-white py-2 px-4 border border-white rounded-full text-sm font-medium" aria-label="Open menu">
☰
</button>
</div>
</header>
<!-- Mobile Menu -->
<div id="mobile-menu" class="mobile-nav">
<a href="#destinations">Destinations</a>
<a href="#hotels">Hotels</a>
<a href="#reviews">Reviews</a>
<a href="#blog">Blog</a>
<a href="#contact">Contact</a>
<button id="close-mobile-menu" class="mt-8 text-right text-gray-400 hover:text-white" aria-label="Close menu">✕</button>
</div>
<!-- Hero Section -->
<section class="hero">
<div class="max-w-7xl mx-auto px-6 relative z-10">
<div class="text-center max-w-3xl mx-auto">
<p class="text-accent text-sm uppercase tracking-wider mb-6">Curated Travel Excellence</p>
<h1 class="text-5xl md:text-6xl font-bold leading-tight tracking-tight playfair mb-6">
Discover Your Next Adventure
</h1>
<p class="text-lg md:text-xl text-gray-400 max-w-2xl mx-auto mb-8">
We craft immersive travel experiences across the globe. From luxury escapes to budget-friendly discoveries, find your perfect journey with our expert guides and curated recommendations.
</p>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<a href="#destinations" class="btn btn-primary px-8 py-3 text-lg font-medium">Explore Destinations</a>
<a href="#hotels" class="btn btn-accent px-8 py-3 text-lg font-medium">Find Hotels</a>
</div>
</div>
<!-- Floating elements -->
<div class="glow-accent glow-accent-1"></div>
<div class="glow-accent glow-accent-2"></div>
</div>
</section>
<!-- Main Content -->
<main class="relative z-10">
<!-- Destinations Section -->
<section id="destinations" class="section">
<div class="section-header">
<h2 class="text-3xl md:text-4xl font-bold">World-Class Destinations</h2>
<p>Explore hand-picked travel destinations that showcase the beauty, culture, and adventure our planet has to offer. Each guide is crafted by experienced travelers who’ve walked the paths you’re planning.</p>
</div>
<div>
<!-- Card 1 -->
<article class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- Card -->
<div>
<div class="card-icon" style="background: linear-gradient(135deg, #1e3a5f, #2d5aa0);">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2L2 7l10 5 10-5-10-5z"></path>
<path d="M2 17l10 5 10-5"></path>
<path d="M2 12l10 5 10-5"></path>
</svg>
</div>
<h3 class="text-xl font-medium mb-3">Bali, Indonesia</h3>
<p>Experience the Island of the Gods with our comprehensive Bali guide. From the rice terraces of Tegallalang to the spiritual heart of Ubud, discover hidden waterfalls, pristine beaches, and cultural ceremonies that define Balinese heritage. Our guide includes practical tips on transportation, accommodation, and authentic local experiences.</p>
</div>
<!-- Card -->
<div>
<div class="card-icon" style="background: linear-gradient(135deg, #7c3aed, #a855f7);">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2L2 7l10 5 10-5-10-5z"></path>
<path d="M2 17l10 5 10-5"></path>
<path d="M2 12l10 5 10-5"></path>
</svg>
</div>
<h3 class="text-xl font-medium mb-3">Santorini, Greece</h3>
<p>Whitewashed villages cascading down volcanic cliffs, azure domes sparkling against the Aegean Sea—Santorini embodies Mediterranean romance. Our guide navigates you beyond the postcard views to authentic tavernas, sunset hiking trails, and the island's volcanic history. Learn about the best caldera views, local wine tours, and tips for avoiding the summer crowds.</p>
</div>
<!-- Card -->
<div>
<div class="card-icon" style="background: linear-gradient(135deg, #0f766e, #1ca999);">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2L2 7l10 5 10-5-10-5z"></path>
<path d="M2 17l10 5 10-5"></path>
<path d="M2 12l10 5 10-5"></path>
</svg>
</div>
<h3 class="text-xl font-medium mb-3">Queenstown, New Zealand</h3>
<p>The adventure capital of the world awaits. From bungee jumping off Kawarau Bridge to skiing in the Remarkables mountain range, Queenstown thrills every type of traveler. Our guide covers the best thrill-seeking activities, scenic day trips to Milford Sound, and practical advice for navigating the South Island's ever-changing weather.</p>
</div>
</div>
<!-- Destination highlights -->
<div class="mt-8 pt-8 border-t border-gray-700">
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<div>
<div class="stat-number">342</div>
<p class="text-sm text-gray-400 mt-1">Countries Covered</p>
</div>
<div>
<div class="stat-number">2,847</div>
<p class="text-sm text-gray-400 mt-1">City Guides</p>
</div>
<div>
<div class="stat-number">12</div>
<p class="text-sm text-gray-400 mt-1">Continents</p>
</div>
<div>
<div class="stat-number">87</div>
<p class="text-sm text-gray-400 mt-1">Trails Mapped</p>
</div>
</div>
</div>
</div>
</section>
<!-- Luxury Escapes Section -->
<section id="hotels" class="section bg-gray-950">
<div class="section-header">
<h2 class="text-3xl md:text-4xl font-bold">Luxury Escapes & All-Inclusive Resorts</h2>
<p>Indulge in the finer things travel has to offer. We've curated a selection of the world's most exquisite resorts, overwater bungalows, and all-inclusive experiences designed for relaxation, romance, and rejuvenation.</p>
</div>
<div class="mt-12 grid grid-cols-1 lg:grid-cols-3 gap-6">
<!-- Card 1 -->
<div class="card p-6">
<div class="card-icon" style="background: linear-gradient(135deg, #1e4d2b, #2d6a3e);">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="4" width="20" height="20" rx="2" ry="2"></rect>
<line x1="16" y1="2" x2="16" y2="6"></line>
<line x1="8" y1="2" x2="8" y2="6"></line>
<line x1="3" y1="10" x2="21" y2="10"></line>
<line x1="7" y1="15" x2="17" y2="15"></line>
<line x1="11" y1="9" x2="11" y2="13"></line>
<line x1="17" y1="9" x2="17" y2="13"></line>
</svg>
</function>
</div>
<h3 class="text-xl font-medium mb-3">Overwater Bungalows, Maldives</h3>
<p>Awake to crystal-clear lagoons and direct ocean access from your private deck. Our Maldives luxury guides showcase the most exclusive overwater residences, complete with glass floors, personal butlers, and sunset dinner experiences on the sand. All-inclusive packages available with premium spirits and gourmet dining.</p>
<a href="#" class="mt-4 inline-block text-accent hover:text-accent-dark font-medium text-sm">View Resorts →</a>
</div>
<!-- Card 2 -->
<div class="card p-6">
<div class="card-icon" style="background: linear-gradient(135deg, #7c2d12, #a8451e);">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="4" width="20" height="20" rx="2" ry="2"></rect>
<line x1="16" y1="2" x2="16" y2="6"></line>
<line x1="8" y1="2" x2="8" y2="6"></line>
<line x1="3" y1="10" x2="21" y2="10"></line>
<line x1="7" y1="15" x2="17" y2="15"></line>
<line x1="11" y1="9" x2="11" y2="13"></line>
<line x1="17" y1="9" x2="17" y2="13"></line>
</svg>
</div>
<h3 class="text-xl font-medium mb-3">Riviera Maya, Mexico</h3>
<p>From pristine white-sand beaches to ancient Mayan ruins, the Riviera Maya offers a blend of relaxation and cultural immersion. Discover all-inclusive resorts with world-class spas, gourmet à la carte dining, and unlimited access to water sports. Our guide includes insider tips on excursions, cenote swimming, and the best times to visit for optimal weather.</p>
<a href="#" class="mt-4 inline-block text-accent hover:text-accent-dark font-medium text-sm">View Resorts →</a>
</div>
<!-- Card 3 -->
<div class="card p-6">
<div class="card-icon" style="background: linear-gradient(135deg, #0f52ba, #1e70bf);">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="4" width="20" height="20" rx="2" ry="2"></rect>
<line x1="16" y1="2" x2="16" y2="6"></line>
<line x1="8" y1="2" x2="8" y2="6"></line>
<line x1="3" y1="10" x2="21" y2="10"></line>
<line x1="7" y1="15" x2="17" y2="15"></line>
<line x1="11" y1="9" x2="11" y2="13"></line>
<line x1="17" y1="9" x2="17" y2="13"></line>
</svg>
</div>
<h3 class="text-xl font-medium mb-3">Boutique Hotels, Paris</h3>
<p>Experience Paris like a local in our hand-selected boutique hotels. From historic Haussmannian buildings in the 7th arrondissement to artistic quarters in Le Marais, discover intimate properties with personalized service, curated art collections, and proximity to the city's finest cafés and galleries.</p>
<a href="#" class="mt-4 inline-block text-accent hover:text-accent-dark font-medium text-sm">View Properties →</a>
</div>
</div>
</section>
<!-- Reviews Section -->
<section id="reviews" class="section">
<div class="section-header">
<h2 class="text-3xl md:text-4xl font-bold">Traveler Reviews</h2>
<p>Real experiences from fellow travelers. Read authentic reviews, ratings, and photos from people who've visited the destinations and stayed at the properties we recommend.</p>
</div>
<div class="mt-12 space-y-6">
<!-- Testimonial 1 -->
<div class="card p-6">
<blockquote class="testimonial">
"<p>Bali exceeded every expectation. The rice terrace walks at sunrise were magical, and our villa in Canggu had the most incredible ocean view. The local food scene is unmatched—warungs on every corner serving the most authentic Nasi Goreng.</p>"
</blockquote>
<cite>Sarah J.</cite>
<p class="text-sm text-gray-500">Verified traveler • Bali, Indonesia • ⭐️⭐️⭐️⭐️⭐️</p>
</div>
<!-- Testimonial 2 -->
<div class="card p-6">
<blockquote class="testimonial">
"<p>Santorini was absolutely breathtaking. Watching the sunset from Oia was worth every penny. The guide's recommendation for the hidden beach access point was a highlight of our trip. Highly recommended for romantic getaways.</p>"
</blockquote>
<cite>Michael T.</cite>
<p class="text-sm text-gray-500">Verified traveler • Santorini, Greece • ⭐️⭐️⭐️⭐️⭐️</p>
</div>
<!-- Testimonial 3 -->
<div class="card p-6">
<blockquote class="testimonial">
"<p>New Zealand's South Island is a paradise for adventure seekers. The glacier hike was challenging but our guide was exceptional. The food scene in Queenstown surprised us—world-class wine and fresh seafood. Can't wait to return!</p>"
</blockquote>
<cite>Emily R.</cite>
<p class="text-sm text-gray-500">Verified traveler • Queenstown, NZ • ⭐️⭐️⭐️⭐️⭐️</p>
</div>
</div>
</section>
<!-- Blog Section -->
<section id="blog" class="section bg-gray-950">
<div class="section-header">
<h2 class="text-3xl md:text-4xl font-bold">Travel Insights & Tips</h2>
<p>Stay informed with the latest travel news, destination updates, and practical advice for your next journey. Our blog covers everything from packing hacks to emerging eco-tourism trends.</p>
</div>
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mt-12">
<!-- Blog Card 1 -->
<article class="card p-6 hover:shadow-xl transition-shadow">
<div class="card-icon" style="background: linear-gradient(135deg, #dc2626, #ef4444);">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-3z"></path>
<line x1="14" y1="8" x2="14" y2="13"></line>
<path d="M15 3v4h3"></path>
</svg>
</div>
<h3 class="text-xl font-medium mb-2">10 Essential Packing Hacks for Carry-On Travel</h3>
<p class="text-gray-400 text-sm mb-3">Master the art of packing light. From versatile clothing choices to space-saving techniques, discover how to fit everything you need into a carry-on for trips of any duration.</p>
<a href="#" class="text-accent hover:text-accent-dark font-medium text-sm">Read full article →</a>
</article>
<!-- Blog Card 2 -->
<article class="card p-6 hover:shadow-xl transition-shadow">
<div class="card-icon" style="background: linear-gradient(135deg, #7c3aed, #a855f7);">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2L2 7l10 5 10-5-10-5z"></path>
<path d="M2 17l10 5 10-5"></path>
<path d="M2 12l10 5 10-5"></path>
</svg>
</div>
<h3 class="text-xl font-medium mb-2">The Rise of Eco-Tourism: Traveling Responsibly in 2024</h3>
<p class="text-gray-400 text-sm mb-3">Explore how travelers are minimizing their environmental impact while supporting local communities. From carbon-offset flights to community-based initiatives, discover the future of sustainable travel.</p>
<a href="#" class="text-accent hover:text-accent-dark font-medium text-sm">Read full article →</a>
</article>
<!-- Blog Card 3 -->
<article class="card p-6 hover:shadow-xl transition-shadow">
<div class="card-icon" style="background: linear-gradient(135deg, #0f766e, #1ca999);">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2L2 7l10 5 10-5-10-5z"></path>
<path d="M2 17l10 5 10-5"></path>
<path d="M2 12l10 5 10-5"></path>
</svg>
</div>
<h3 class="text-xl font-medium mb-2">Budget Travel: How to See the World Without Breaking the Bank</h3>
<p class="text-gray-400 text-sm mb-3">Adventure doesn't have to be expensive. Learn our best strategies for affordable accommodation, cheap flights, and free activities in some of the world's most desirable destinations.</p>
<a href="#" class="text-accent hover:text-accent-dark font-medium text-sm">Read full article →</a>
</article>
</div>
</section>
<!-- CTA Section -->
<section class="section pt-0">
<div class="cta py-16 md:py-24">
<div class="max-w-2xl mx-auto text-center">
<p class="text-accent text-sm uppercase tracking-wider mb-4">Start Planning Your Journey</p>
<h2 class="text-3xl md:text-4xl font-bold playfair mb-6">Let's Create Something Amazing Together</h2>
<p class="text-gray-400 text-lg mb-8 max-w-2xl mx-auto">
Ready to embark on your next adventure? Our travel experts are here to help you craft the perfect itinerary. Whether you're dreaming of a luxury escape or a budget backpacking trip, we've got you covered.
</p>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<a href="#contact" class="btn btn-primary px-8 py-3 text-lg font-medium">Get Free Quote</a>
<a href="#blog" class="btn btn-accent px-8 py-3 text-lg font-medium">View Blog</a>
</div>
</div>
</div>
</section>
<!-- Sidebar / Newsletter Section -->
<aside id="contact" class="section bg-gray-950">
<div class="max-w-4xl mx-auto px-6 py-12">
<div class="grid lg:grid-cols-2 gap-8 items-center">
<div>
<h3 class="text-2xl font-bold mb-4">Newsletter</h3>
<p class="text-gray-400 text-sm mb-6">Subscribe to receive weekly travel inspiration, exclusive deals, and insider tips directly to your inbox.</p>
<form action="#" method="post" class="space-y-4">
<input type="email" placeholder="Enter your email address" required>
<button type="submit" class="btn btn-primary w-full py-3 text-lg font-medium">Subscribe</button>
</form>
</div>
<div>
<h3 class="text-2xl font-bold mb-4">Quick Links</h3>
<ul class="space-y-3 text-gray-400">
<li><a href="#destinations" class="hover:text-white transition-colors">Destinations</a></li>
<li><a href="#hotels" class="hover:text-white transition-colors">Hotels & Resorts</a></li>
<li><a href="#reviews" class="hover:text-white transition-colors">Reviews</a></li>
<li><a href="#blog" class="hover:text-white transition-colors">Blog</a></li>
</ul>
</div>
</div>
</div>
</aside>
</main>
<!-- Footer -->
<footer class="bg-gray-900 border-t border-gray-700">
<div class="max-w-7xl mx-auto px-6 py-12">
<div class="grid grid-cols-1 lg:grid-cols-4 gap-8 mb-8">
<!-- Logo & About -->
<div class="lg:col-span-2">
<a href="#" class="flex items-center gap-2 mb-4">
<img src="https://placehold.co/40x40/1a2232/ffffff?text=WC" alt="Wanderlust & Co. Logo" class="logo-img">
<span class="text-xl font-bold playfair">Wanderlust & Co.</span>
</a>
<p class="text-gray-400 text-sm">Your trusted guide to the world's most extraordinary destinations. We blend expert knowledge with personal experience to help you travel better.</p>
<!-- Social Media -->
<div class="mt-6 flex gap-3">
<a href="#" class="w-8 h-8 rounded-full bg-gray-800 flex items-center justify-center text-gray-400 hover:text-white transition-colors" aria-label="Instagram">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<rect x="2" y="2" width="20" height="20" rx="6" ry="6"></rect>
<path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path>
<line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line>
</svg>
</a>
<a href="#" class="w-8 h-8 rounded-full bg-gray-800 flex items-center justify-center text-gray-400 hover:text-white transition-colors" aria-label="Twitter">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.4 4.4 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 2c.95.08 1.83.1 2.7.1 1.95 0 3.73-.91 4.5-2.09a10.66 10.66 0 0 1 6.37-2c.96 0 1.83.1 2.7.1a4.4 4.4 0 0 0 7.86-3V4a10.9 10.9 0 0 1-3.14-1.53c-.76-1.95-2.06-3.73-4.5-4.5a10.66 10.66 0 0 1-2.09-6.37z"></path>
</svg>
</a>
<a href="#" class="w-8 h-8 rounded-full bg-gray-800 flex items-center justify-center text-gray-400 hover:text-white transition-colors" aria-label="Facebook">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path>
</svg>
</a>
</div>
</div>
<!-- Links -->
<div>
<h4 class="font-bold text-white mb-4">Company</h4>
<ul class="space-y-2 text-gray-400">
<li><a href="#destinations" class="hover:text-gray-300 transition-colors">Destinations</a></li>
<li><a href="#hotels" class="hover:text-gray-300 transition-colors">Hotels</a></li>
<li><a href="#reviews" class="hover:text-gray-300 transition-colors">Reviews</a></li>
<li><a href="#blog" class="hover:text-gray-300 transition-colors">Blog</a></li>
</ul>
</div>
<!-- Links -->
<div>
<h4 class="font-bold text-white mb-4">Resources</h4>
<ul class="space-y-2 text-gray-400">
<li><a href="#" class="hover:text-gray-300 transition-colors">Travel Tips</a></li>
<li><a href="#" class="hover:text-gray-300 transition-colors">Destination Guides</a></li>
<li><a href="#" class="hover:text-gray-300 transition-colors">Visa Information</a></li>
<li><a href="#" class="hover:text-gray-300 transition-colors">Travel Insurance</a></li>
</ul>
</div>
<!-- Contact -->
<div>
<h4 class="font-bold text-white mb-4">Contact</h4>
<address class="text-gray-400 text-sm">
<p>123 Traveler's Way</p>
<p>New York, NY 10001</p>
<p>hello@wanderlustandco.com</p>
</address>
</div>
</div>
<!-- Bottom -->
<div class="pt-8 border-t border-gray-800 flex flex-col lg:flex-row justify-between items-center gap-4">
<p class="text-gray-500 text-sm">2024 Wanderlust & Co. All rights reserved.</p>
<div class="flex gap-6 text-gray-500 text-sm">
<a href="#" class="hover:text-white transition-colors">Privacy Policy</a>
<a href="#" class="hover:text-white transition-colors">Terms of Service</a>
<a href="#" class="hover:text-white transition-colors">Cookies</a>
</div>
</div>
</div>
</footer>
<script>
// Mobile menu functionality
const mobileMenuBtn = document.getElementById('mobile-menu-btn');
const closeMobileMenu = document.getElementById('close-mobile-menu');
const mobileNav = document.getElementById('mobile-menu');
const mainHeader = document.getElementById('main-header');
mobileMenuBtn.addEventListener('click', () => {
mobileNav.classList.add('open');
document.body.style.overflow = 'hidden';
});
closeMobileMenu.addEventListener('click', () => {
mobileNav.classList.remove('open');
document.body.style.overflow = '';
});
// Close mobile menu when clicking a link
mobileNav.querySelectorAll('a').forEach(link => {
link.addEventListener('click', () => {
mobileNav.classList.remove('open');
document.body.style.overflow = '';
});
});
// Header scrolled effect
window.addEventListener('scroll', () => {
if (window.scrollY > 100) {
mainHeader.classList.add('scrolled');
} else {
mainHeader.classList.remove('scrolled');
}
});
// Smooth scrolling for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
// Intersection Observer for fade-in animations
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, observerOptions);
// Observe all sections
document.querySelectorAll('section').forEach(section => {
section.style.opacity = '0';
section.style.transform = 'translateY(20px)';
section.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
observer.observe(section);
});
</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:46:49.430Z",
"url": "https://benchmark.aimac.invalid/dae3decf3f044b10c47c8f1907759150b662234787f1623205eafdd996288a5b.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-allowed-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attributes are used correctly for the defined role"
}
],
"none": [
{
"id": "aria-unsupported-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute is supported"
}
],
"impact": null,
"html": "<button id=\"close-mobile-menu\" class=\"mt-8 text-right text-gray-400 hover:text-white\" aria-label=\"Close menu\">\u2715</button>",
"target": [
"#close-mobile-menu"
]
}
]
},
{
"id": "aria-conditional-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are used as described in the specification of the element's role",
"help": "ARIA attributes must be used as specified for the element's role",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-conditional-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"none": [],
"impact": null,
"html": "<button id=\"close-mobile-menu\" class=\"mt-8 text-right text-gray-400 hover:text-white\" aria-label=\"Close menu\">\u2715</button>",
"target": [
"#close-mobile-menu"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<button id=\"close-mobile-menu\" class=\"mt-8 text-right text-gray-400 hover:text-white\" aria-label=\"Close menu\">\u2715</button>",
"target": [
"#close-mobile-menu"
]
}
]
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-valid-attr-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute values are valid"
},
{
"id": "aria-errormessage",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
},
{
"id": "aria-level",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-level values are valid"
}
],
"none": [],
"impact": null,
"html": "<button id=\"close-mobile-menu\" class=\"mt-8 text-right text-gray-400 hover:text-white\" aria-label=\"Close menu\">\u2715</button>",
"target": [
"#close-mobile-menu"
]
}
]
},
{
"id": "aria-valid-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure attributes that begin with aria- are valid ARIA attributes",
"help": "ARIA attributes must conform to valid names",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-valid-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute name is valid"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button id=\"close-mobile-menu\" class=\"mt-8 text-right text-gray-400 hover:text-white\" aria-label=\"Close menu\">\u2715</button>",
"target": [
"#close-mobile-menu"
]
}
]
},
{
"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": "<section class=\"hero\" style=\"opacity: 1; transform: translateY(0px); transition: opacity 0.6s, transform 0.6s;\">",
"target": [
".hero"
]
}
]
},
{
"id": "button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure buttons have discernible text",
"help": "Buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has inner text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute exists and is not empty"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button id=\"close-mobile-menu\" class=\"mt-8 text-right text-gray-400 hover:text-white\" aria-label=\"Close menu\">\u2715</button>",
"target": [
"#close-mobile-menu"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "internal-link-present",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Valid skip link found"
},
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1 class=\"text-5xl md:text-6xl font-bold leading-tight tracking-tight playfair mb-6\">\n Discover Your Next Adventure\n </h1>",
"target": [
"h1"
]
},
{
"html": "<h2 class=\"text-3xl md:text-4xl font-bold\">World-Class Destinations</h2>",
"target": [
"#destinations > .section-header > h2"
]
},
{
"html": "<h3 class=\"text-xl font-medium mb-3\">Bali, Indonesia</h3>",
"target": [
".sm\\:grid-cols-2 > div:nth-child(1) > .mb-3"
]
},
{
"html": "<h3 class=\"text-xl font-medium mb-3\">Santorini, Greece</h3>",
"target": [
".sm\\:grid-cols-2 > div:nth-child(2) > .mb-3"
]
},
{
"html": "<h3 class=\"text-xl font-medium mb-3\">Queenstown, New Zealand</h3>",
"target": [
".sm\\:grid-cols-2 > div:nth-child(3) > .mb-3"
]
},
{
"html": "<h2 class=\"text-3xl md:text-4xl font-bold\">Luxury Escapes & All-Inclusive Resorts</h2>",
"target": [
"#hotels > .section-header > h2"
]
},
{
"html": "<h3 class=\"text-xl font-medium mb-3\">Overwater Bungalows, Maldives</h3>",
"target": [
"#hotels > .mt-12.lg\\:grid-cols-3.grid-cols-1 > .card.p-6:nth-child(1) > .mb-3"
]
},
{
"html": "<h3 class=\"text-xl font-medium mb-3\">Riviera Maya, Mexico</h3>",
"target": [
"#hotels > .mt-12.lg\\:grid-cols-3.grid-cols-1 > .card.p-6:nth-child(2) > .mb-3"
]
},
{
"html": "<h3 class=\"text-xl font-medium mb-3\">Boutique Hotels, Paris</h3>",
"target": [
"#hotels > .mt-12.lg\\:grid-cols-3.grid-cols-1 > .card.p-6:nth-child(3) > .mb-3"
]
},
{
"html": "<h2 class=\"text-3xl md:text-4xl font-bold\">Traveler Reviews</h2>",
"target": [
"#reviews > .section-header > h2"
]
},
{
"html": "<h2 class=\"text-3xl md:text-4xl font-bold\">Travel Insights & Tips</h2>",
"target": [
"#blog > .section-header > h2"
]
},
{
"html": "<h3 class=\"text-xl font-medium mb-2\">10 Essential Packing Hacks for Carry-On Travel</h3>",
"target": [
".hover\\:shadow-xl.transition-shadow:nth-child(1) > .mb-2"
]
},
{
"html": "<h3 class=\"text-xl font-medium mb-2\">The Rise of Eco-Tourism: Traveling Responsibly in 2024</h3>",
"target": [
".hover\\:shadow-xl.transition-shadow:nth-child(2) > .mb-2"
]
},
{
"html": "<h3 class=\"text-xl font-medium mb-2\">Budget Travel: How to See the World Without Breaking the Bank</h3>",
"target": [
".hover\\:shadow-xl.transition-shadow:nth-child(3) > .mb-2"
]
},
{
"html": "<h2 class=\"text-3xl md:text-4xl font-bold playfair mb-6\">Let's Create Something Amazing Together</h2>",
"target": [
".text-center.max-w-2xl.mx-auto > .playfair.mb-6"
]
},
{
"html": "<h3 class=\"text-2xl font-bold mb-4\">Newsletter</h3>",
"target": [
"div:nth-child(1) > .text-2xl.mb-4"
]
},
{
"html": "<h3 class=\"text-2xl font-bold mb-4\">Quick Links</h3>",
"target": [
"div:nth-child(2) > .text-2xl.mb-4"
]
},
{
"html": "<h4 class=\"font-bold text-white mb-4\">Company</h4>",
"target": [
"div:nth-child(2) > h4"
]
},
{
"html": "<h4 class=\"font-bold text-white mb-4\">Resources</h4>",
"target": [
"div:nth-child(3) > h4"
]
},
{
"html": "<h4 class=\"font-bold text-white mb-4\">Contact</h4>",
"target": [
"div:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main class=\"relative z-10\">",
"target": [
"main"
]
}
],
"impact": "serious",
"message": "Page has a landmark region"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#f0f4f8",
"bgColor": "#0a0e17",
"contrastRatio": 17.46,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 17.46"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#destinations\">Destinations</a>",
"target": [
"#mobile-menu > a[href$=\"#destinations\"]"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input type=\"email\" placeholder=\"Enter your email address\" required=\"\">",
"target": [
"input"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/40x40/1a2232/ffffff?text=WC\" alt=\"Wanderlust & Co. Logo\" class=\"logo-img\">",
"target": [
".py-4 > .gap-2.items-center.flex > img"
]
}
]
},
{
"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": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"email\" placeholder=\"Enter your email address\" required=\"\">",
"target": [
"input"
]
}
]
},
{
"id": "link-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a href=\"#\" class=\"flex items-center gap-2\">\n <img src=\"https://placehold.co/40x40/1a2232/ffffff?text=WC\" alt=\"Wanderlust & Co. Logo\" class=\"logo-img\">\n <span class=\"text-xl font-bold playfair\">Wanderlust & Co.</span>\n </a>",
"target": [
".py-4 > .gap-2.items-center.flex"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul class=\"space-y-3 text-gray-400\">",
"target": [
".space-y-3"
]
}
]
},
{
"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\" class=\"hover:text-white transition-colors\">Destinations</a></li>",
"target": [
".space-y-3 > 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/40x40/1a2232/ffffff?text=WC\" alt=\"Wanderlust & Co. Logo\" class=\"logo-img\">",
"target": [
".py-4 > .gap-2.items-center.flex > img"
]
}
]
},
{
"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": 211.9,
"height": 40
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (211.9px by 40px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"flex items-center gap-2\">\n <img src=\"https://placehold.co/40x40/1a2232/ffffff?text=WC\" alt=\"Wanderlust & Co. Logo\" class=\"logo-img\">\n <span class=\"text-xl font-bold playfair\">Wanderlust & Co.</span>\n </a>",
"target": [
".py-4 > .gap-2.items-center.flex"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "15.0pt (20px)",
"fontWeight": "bold",
"messageKey": "bgImage",
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header id=\"main-header\" class=\"fixed top-0 left-0 right-0 z-50\">",
"target": [
"#main-header"
]
},
{
"html": "<div class=\"noise-overlay\"></div>",
"target": [
".noise-overlay"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background image"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"text-xl font-bold playfair\">Wanderlust & Co.</span>",
"target": [
".py-4 > .gap-2.items-center.flex > span"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a background image"
}
]
}
],
"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": "#6b7280",
"bgColor": "#111827",
"contrastRatio": 3.66,
"fontSize": "10.5pt (14px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"bg-gray-900 border-t border-gray-700\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.66 (foreground color: #6b7280, background color: #111827, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"text-gray-500 text-sm\">2024 Wanderlust & Co. All rights reserved.</p>",
"target": [
".text-gray-500.text-sm:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.66 (foreground color: #6b7280, background color: #111827, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7280",
"bgColor": "#111827",
"contrastRatio": 3.66,
"fontSize": "10.5pt (14px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"bg-gray-900 border-t border-gray-700\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.66 (foreground color: #6b7280, background color: #111827, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"hover:text-white transition-colors\">Privacy Policy</a>",
"target": [
".gap-6.text-gray-500.flex > .hover\\:text-white.transition-colors[href=\"#\"]:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.66 (foreground color: #6b7280, background color: #111827, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7280",
"bgColor": "#111827",
"contrastRatio": 3.66,
"fontSize": "10.5pt (14px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"bg-gray-900 border-t border-gray-700\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.66 (foreground color: #6b7280, background color: #111827, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"hover:text-white transition-colors\">Terms of Service</a>",
"target": [
".gap-6.text-gray-500.flex > .hover\\:text-white.transition-colors[href=\"#\"]:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.66 (foreground color: #6b7280, background color: #111827, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7280",
"bgColor": "#111827",
"contrastRatio": 3.66,
"fontSize": "10.5pt (14px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"bg-gray-900 border-t border-gray-700\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.66 (foreground color: #6b7280, background color: #111827, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"hover:text-white transition-colors\">Cookies</a>",
"target": [
".gap-6.text-gray-500.flex > .hover\\:text-white.transition-colors[href=\"#\"]:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.66 (foreground color: #6b7280, background color: #111827, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7c93",
"bgColor": "#0d121c",
"contrastRatio": 4.39,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header id=\"main-header\" class=\"fixed top-0 left-0 right-0 z-50 scrolled\">",
"target": [
"#main-header"
]
},
{
"html": "<div class=\"card p-6\">",
"target": [
"#hotels > .mt-12.lg\\:grid-cols-3.grid-cols-1 > .card.p-6:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.39 (foreground color: #6b7c93, background color: #0d121c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#hotels\" class=\"nav-link\">Hotels</a>",
"target": [
".nav-link[href$=\"#hotels\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.39 (foreground color: #6b7c93, background color: #0d121c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7c93",
"bgColor": "#0d121c",
"contrastRatio": 4.39,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header id=\"main-header\" class=\"fixed top-0 left-0 right-0 z-50 scrolled\">",
"target": [
"#main-header"
]
},
{
"html": "<div class=\"card p-6\">",
"target": [
"#hotels > .mt-12.lg\\:grid-cols-3.grid-cols-1 > .card.p-6:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.39 (foreground color: #6b7c93, background color: #0d121c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#reviews\" class=\"nav-link\">Reviews</a>",
"target": [
".nav-link[href$=\"#reviews\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.39 (foreground color: #6b7c93, background color: #0d121c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7c93",
"bgColor": "#0d121c",
"contrastRatio": 4.39,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header id=\"main-header\" class=\"fixed top-0 left-0 right-0 z-50 scrolled\">",
"target": [
"#main-header"
]
},
{
"html": "<div class=\"card p-6\">",
"target": [
"#hotels > .mt-12.lg\\:grid-cols-3.grid-cols-1 > .card.p-6:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.39 (foreground color: #6b7c93, background color: #0d121c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#blog\" class=\"nav-link\">Blog</a>",
"target": [
".nav-link[href$=\"#blog\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.39 (foreground color: #6b7c93, background color: #0d121c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7c93",
"bgColor": "#1a2232",
"contrastRatio": 3.73,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"card p-6\">",
"target": [
".space-y-6 > .card.p-6:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.73 (foreground color: #6b7c93, background color: #1a2232, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Bali exceeded every expectation. The rice terrace walks at sunrise were magical, and our villa in Canggu had the most incredible ocean view. The local food scene is unmatched\u2014warungs on every corner serving the most authentic Nasi Goreng.</p>",
"target": [
".card.p-6:nth-child(1) > blockquote > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.73 (foreground color: #6b7c93, background color: #1a2232, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7280",
"bgColor": "#1a2232",
"contrastRatio": 3.29,
"fontSize": "10.5pt (14px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"card p-6\">",
"target": [
".space-y-6 > .card.p-6:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.29 (foreground color: #6b7280, background color: #1a2232, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"text-sm text-gray-500\">Verified traveler \u2022 Bali, Indonesia \u2022 \u2b50\ufe0f\u2b50\ufe0f\u2b50\ufe0f\u2b50\ufe0f\u2b50\ufe0f</p>",
"target": [
".card.p-6:nth-child(1) > .text-gray-500.text-sm"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.29 (foreground color: #6b7280, background color: #1a2232, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7c93",
"bgColor": "#1a2232",
"contrastRatio": 3.73,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"card p-6\">",
"target": [
".space-y-6 > .card.p-6:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.73 (foreground color: #6b7c93, background color: #1a2232, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Santorini was absolutely breathtaking. Watching the sunset from Oia was worth every penny. The guide's recommendation for the hidden beach access point was a highlight of our trip. Highly recommended for romantic getaways.</p>",
"target": [
".card.p-6:nth-child(2) > blockquote > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.73 (foreground color: #6b7c93, background color: #1a2232, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7280",
"bgColor": "#1a2232",
"contrastRatio": 3.29,
"fontSize": "10.5pt (14px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"card p-6\">",
"target": [
".space-y-6 > .card.p-6:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.29 (foreground color: #6b7280, background color: #1a2232, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"text-sm text-gray-500\">Verified traveler \u2022 Santorini, Greece \u2022 \u2b50\ufe0f\u2b50\ufe0f\u2b50\ufe0f\u2b50\ufe0f\u2b50\ufe0f</p>",
"target": [
".card.p-6:nth-child(2) > .text-gray-500.text-sm"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.29 (foreground color: #6b7280, background color: #1a2232, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7c93",
"bgColor": "#1a2232",
"contrastRatio": 3.73,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"card p-6\">",
"target": [
".space-y-6 > .card.p-6:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.73 (foreground color: #6b7c93, background color: #1a2232, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>New Zealand's South Island is a paradise for adventure seekers. The glacier hike was challenging but our guide was exceptional. The food scene in Queenstown surprised us\u2014world-class wine and fresh seafood. Can't wait to return!</p>",
"target": [
".card.p-6:nth-child(3) > blockquote > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.73 (foreground color: #6b7c93, background color: #1a2232, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7280",
"bgColor": "#1a2232",
"contrastRatio": 3.29,
"fontSize": "10.5pt (14px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"card p-6\">",
"target": [
".space-y-6 > .card.p-6:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.29 (foreground color: #6b7280, background color: #1a2232, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"text-sm text-gray-500\">Verified traveler \u2022 Queenstown, NZ \u2022 \u2b50\ufe0f\u2b50\ufe0f\u2b50\ufe0f\u2b50\ufe0f\u2b50\ufe0f</p>",
"target": [
".card.p-6:nth-child(3) > .text-gray-500.text-sm"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.29 (foreground color: #6b7280, background color: #1a2232, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7c93",
"bgColor": "#0d121c",
"contrastRatio": 4.39,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header id=\"main-header\" class=\"fixed top-0 left-0 right-0 z-50 scrolled\">",
"target": [
"#main-header"
]
},
{
"html": "<div class=\"card p-6\">",
"target": [
".space-y-6 > .card.p-6:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.39 (foreground color: #6b7c93, background color: #0d121c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#destinations\" class=\"nav-link\">Destinations</a>",
"target": [
".nav-link[href$=\"#destinations\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.39 (foreground color: #6b7c93, background color: #0d121c, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 5927
},
{
"y": 576,
"height": 5927
},
{
"y": 1152,
"height": 5927
},
{
"y": 1728,
"height": 5927
},
{
"y": 2304,
"height": 5927
},
{
"y": 2880,
"height": 5927
},
{
"y": 3456,
"height": 5927
},
{
"y": 4032,
"height": 5927
},
{
"y": 4608,
"height": 5927
},
{
"y": 5184,
"height": 5927
},
{
"y": 5207,
"height": 5927
}
],
"scans": 12,
"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: "Reviews", "Contact", "Blog".
- **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: "Hotel Reviews", "Luxury Escapes", "Destination Guides".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "excursion", "eco-tourism", "all-inclusive".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Book Now", "Get Quote", "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: "visa info", "deal alerts", "weather forecasts".
- **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.