SpaceXAI Grok Build 0.1 – Gaming
via xAI · Generated
- AIMAC Debt 10.81
- Cost $0.04
- Total Violations 12
- HTML Size 80 KB
- Em Dashes 3
Screenshot
View Live Page
Accessibility Issues Found
12 Serious
-
color-contrast serious 1 instance
Elements must meet minimum color contrast ratio thresholds
Example HTML
<span class="px-3 py-1 rounded-2xl text-xs font-extrabold bg-red-600">LIVE</span> -
link-name serious 4 instances
Links must have discernible text
Example HTML
<a href="#" class="text-slate-400 hover:text-white"><i class="fab fa-twitter text-lg"></i></a> -
target-size serious 7 instances
All touch targets must be 24px large, or leave sufficient space
Example HTML
<a href="#forums" class="text-slate-400 hover:text-slate-200">Forums</a>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AetherForge • Forge Your Legend</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Space+Grotesk:wght@500;600&display=swap');
:root {
--primary: #6366f1;
}
body {
font-family: 'Inter', system_ui, sans-serif;
}
.font-display {
font-family: 'Space Grotesk', 'Inter', system_ui, sans-serif;
font-weight: 600;
}
.gaming-gradient {
background: linear-gradient(135deg, #6366f1, #a855f7);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.section-header {
font-size: 2.25rem;
line-height: 2.5rem;
font-weight: 700;
letter-spacing: -0.025em;
}
.nav-link {
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.nav-link:hover {
color: #6366f1;
transform: translateY(-1px);
}
.game-card {
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s cubic-bezier(0.4, 0.0, 0.2, 1);
}
.game-card:hover {
transform: translateY(-8px);
box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
}
.stat-value {
font-variant-numeric: tabular-nums;
}
.achievement {
transition: all 0.2s cubic-bezier(0.4, 0.0, 0.2, 1);
}
.nav-active {
color: #6366f1;
font-weight: 600;
}
.modern-shadow {
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
}
.esports-bg {
background: linear-gradient(#0f172a, #0f172a);
}
.pixel-border {
position: relative;
}
.pixel-border::after {
content: '';
position: absolute;
inset: 0;
border: 1px solid rgba(99, 102, 241, 0.1);
pointer-events: none;
}
.metric {
font-size: 0.875rem;
font-weight: 600;
letter-spacing: -.5px;
}
</style>
</head>
<body class="bg-slate-950 text-slate-200">
<!-- HEADER -->
<header class="bg-slate-900 border-b border-slate-800 sticky top-0 z-50">
<div class="max-w-screen-2xl mx-auto">
<div class="px-8 py-5 flex items-center justify-between">
<!-- Logo -->
<div class="flex items-center gap-x-3">
<div class="flex items-center gap-x-3">
<img src="https://placehold.co/180x52/1e2937/6366f1?text=AetherForge&font=montserrat"
alt="AetherForge logo"
class="h-10 w-auto rounded">
<div>
<span class="font-display text-3xl font-semibold tracking-tighter">AetherForge</span>
</div>
</div>
</div>
<!-- Navigation -->
<nav class="hidden md:flex items-center gap-x-8 text-sm">
<a href="#esports" class="nav-link font-medium text-slate-300 hover:text-white px-1">Esports</a>
<a href="#reviews" class="nav-link font-medium text-slate-300 hover:text-white px-1">Reviews</a>
<a href="#hardware" class="nav-link font-medium text-slate-300 hover:text-white px-1">Hardware</a>
<a href="#forums" class="nav-link font-medium text-slate-300 hover:text-white px-1">Forums</a>
<a href="#community" class="nav-link font-medium text-slate-300 hover:text-white px-1">Community</a>
<a href="#tournaments" class="nav-link font-medium text-slate-300 hover:text-white px-1">Tournaments</a>
</nav>
<!-- Header Actions -->
<div class="flex items-center gap-x-3">
<button onclick="joinDiscord()"
class="hidden sm:flex items-center gap-x-2 px-4 py-2 text-sm font-semibold bg-slate-800 hover:bg-slate-700 transition-colors rounded-xl border border-slate-700">
<i class="fab fa-discord"></i>
<span>Join Discord</span>
</button>
<button onclick="showJoinModal()"
class="px-5 py-2.5 text-sm font-semibold bg-indigo-600 hover:bg-indigo-500 transition-all rounded-2xl flex items-center gap-x-2 shadow-lg shadow-indigo-900/30">
<span>Play Free</span>
</button>
<!-- Mobile Menu -->
<div class="md:hidden">
<button class="p-2 text-slate-300 hover:text-white" id="mobile-menu-btn">
<i class="fas fa-bars text-xl"></i>
</button>
</div>
</div>
</div>
</div>
</header>
<!-- HERO -->
<section class="relative">
<div class="max-w-screen-2xl mx-auto">
<div class="grid grid-cols-1 lg:grid-cols-2 gap-0">
<!-- Hero Content -->
<div class="px-8 md:px-12 pt-16 pb-20 lg:pt-20 lg:pb-24 flex flex-col justify-center">
<div class="max-w-lg">
<div class="inline-flex items-center gap-x-2 bg-slate-900 border border-slate-800 px-4 h-8 rounded-3xl mb-6">
<div class="w-2 h-2 bg-emerald-400 rounded-full animate-pulse"></div>
<span class="text-emerald-300 text-xs font-semibold tracking-wider">LIVE: 184,291 PLAYERS ONLINE</span>
</div>
<h1 class="font-display text-6xl lg:text-7xl leading-[1.05] tracking-tighter font-bold">
FORGE YOUR<br>
<span class="gaming-gradient">LEGEND</span>
</h1>
<p class="mt-6 text-xl text-slate-400 max-w-md">
The premier destination for competitive gamers, esports professionals, and digital communities.
Master the meta. Build your legacy.
</p>
<div class="flex flex-wrap items-center gap-3 mt-8">
<button onclick="showJoinModal()"
class="px-8 py-4 bg-white text-slate-900 hover:bg-slate-100 transition-all font-bold text-base rounded-3xl flex items-center gap-x-3 shadow-xl">
<span>Play Free Now</span>
<i class="fas fa-arrow-right"></i>
</button>
<button onclick="document.getElementById('esports').scrollIntoView({ behavior: 'smooth' })"
class="px-8 py-4 bg-slate-800 hover:bg-slate-700 transition-all font-semibold text-base rounded-3xl flex items-center gap-x-3 border border-slate-700">
<span>Watch Live</span>
</button>
</div>
<div class="flex items-center gap-x-8 mt-10">
<div>
<div class="flex -space-x-2">
<img src="https://i.pravatar.cc/28?u=1" class="w-7 h-7 rounded-full ring-2 ring-slate-900 border border-slate-700" alt="">
<img src="https://i.pravatar.cc/28?u=2" class="w-7 h-7 rounded-full ring-2 ring-slate-900 border border-slate-700" alt="">
<img src="https://i.pravatar.cc/28?u=3" class="w-7 h-7 rounded-full ring-2 ring-slate-900 border border-slate-700" alt="">
</div>
</div>
<div class="text-sm">
<span class="font-semibold">47,892</span>
<span class="text-slate-400">new legends this month</span>
</div>
</div>
</div>
</div>
<!-- Hero Visual -->
<div class="relative hidden lg:block">
<div class="h-full min-h-[620px]">
<img src="https://picsum.photos/id/1015/1200/1000"
class="w-full h-full object-cover"
alt="AetherForge hero image showing intense competitive gaming scene with neon lights">
<div class="absolute inset-0 bg-gradient-to-r from-slate-950 via-slate-950/40 to-transparent"></div>
<div class="absolute bottom-0 left-0 right-0 h-1/3 bg-gradient-to-t from-slate-950 to-transparent"></div>
<!-- Floating status card -->
<div class="absolute bottom-12 right-12 bg-slate-900 border border-slate-700 rounded-3xl p-4 shadow-2xl max-w-[200px]">
<div class="flex items-center gap-x-3">
<div>
<div class="flex items-center gap-x-1.5">
<i class="fas fa-tachometer-alt text-emerald-400"></i>
<span class="text-xs font-bold">LIVE MATCH</span>
</div>
<div class="font-semibold text-sm mt-1">AetherForge Cup Finals</div>
</div>
<div class="text-right">
<div class="text-emerald-400 text-xs font-bold">42,819</div>
<div class="text-[10px] text-slate-400">VIEWERS</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- STATS BAR -->
<div class="border-b border-slate-800 bg-slate-900">
<div class="max-w-screen-2xl mx-auto px-8">
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 py-5">
<div class="flex items-center justify-between md:justify-start gap-x-3 px-1">
<div>
<div class="text-2xl font-bold">2.4m</div>
<div class="text-xs text-slate-400 font-medium tracking-wider">ACTIVE GAMERS</div>
</div>
</div>
<div class="flex items-center justify-between md:justify-start gap-x-3 px-1">
<div>
<div class="text-2xl font-bold">184k</div>
<div class="text-xs text-slate-400 font-medium tracking-wider">TOURNAMENTS HOSTED</div>
</div>
</div>
<div class="flex items-center justify-between md:justify-start gap-x-3 px-1">
<div>
<div class="text-2xl font-bold">98.4k</div>
<div class="text-xs text-slate-400 font-medium tracking-wider">PRO PLAYERS</div>
</div>
</div>
<div class="flex items-center justify-between md:justify-start gap-x-3 px-1">
<div>
<div class="text-2xl font-bold">4.2m</div>
<div class="text-xs text-slate-400 font-medium tracking-wider">MATCHES PLAYED</div>
</div>
</div>
</div>
</div>
</div>
<!-- HARDWARE SECTION -->
<section id="hardware" class="max-w-screen-2xl mx-auto px-8 pt-16 pb-12">
<div class="flex flex-col md:flex-row md:items-end md:justify-between mb-9">
<div>
<span class="text-indigo-400 text-sm font-semibold tracking-[1.25px]">GEAR THAT WINS</span>
<h2 class="section-header tracking-tighter">Gaming Hardware</h2>
</div>
<a href="#" class="mt-3 md:mt-0 text-sm font-medium flex items-center gap-x-2 group">
Browse full catalog
<i class="fas fa-arrow-right group-hover:translate-x-1 transition"></i>
</a>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<!-- Hardware Card 1 -->
<div class="game-card bg-slate-900 border border-slate-800 rounded-3xl overflow-hidden">
<div class="h-48 bg-slate-800 relative">
<img src="https://picsum.photos/id/1005/600/400" class="w-full h-full object-cover" alt="High-performance gaming monitor with ultra low latency">
<div class="absolute top-4 right-4 bg-emerald-900 text-emerald-300 text-xs font-bold px-3 py-1 rounded-2xl flex items-center">
<span>240Hz</span>
</div>
</div>
<div class="p-5">
<div class="flex justify-between items-center mb-3">
<h4 class="font-semibold text-xl">Aether Ultra 27</h4>
<span class="text-xs font-bold px-2 py-1 bg-slate-800 rounded-xl">$449</span>
</div>
<p class="text-slate-400 text-sm leading-relaxed">Our flagship 27" 4K gaming monitor with 0.5ms response time and G-Sync compatibility. Reduces input latency by up to 42% compared to standard displays.</p>
<div class="mt-5 flex items-center justify-between">
<div class="flex items-center gap-x-2 text-xs">
<div class="flex items-center"><i class="fas fa-check text-emerald-400 mr-1"></i> <span class="text-emerald-300">Pro Approved</span></div>
</div>
<button onclick="addToCart('Aether Ultra 27')" class="text-xs font-bold px-4 py-2 bg-indigo-600 hover:bg-indigo-500 transition rounded-2xl">Shop Now</button>
</div>
</div>
</div>
<!-- Hardware Card 2 -->
<div class="game-card bg-slate-900 border border-slate-800 rounded-3xl overflow-hidden">
<div class="h-48 bg-slate-800 relative">
<img src="https://picsum.photos/id/106/600/400" class="w-full h-full object-cover" alt="Premium gaming mechanical keyboard with RGB lighting">
<div class="absolute top-4 right-4 bg-amber-900 text-amber-300 text-xs font-bold px-3 py-1 rounded-2xl flex items-center">
<span>Pro</span>
</div>
</div>
<div class="p-5">
<div class="flex justify-between items-center mb-3">
<h4 class="font-semibold text-xl">Vortex 75 Pro</h4>
<span class="text-xs font-bold px-2 py-1 bg-slate-800 rounded-xl">$129</span>
</div>
<p class="text-slate-400 text-sm leading-relaxed">Mechanical gaming keyboard featuring 8K polling rate and ultra-low latency switches. Perfect for competitive FPS players who demand precision in every keystroke.</p>
<div class="mt-5 flex items-center justify-between">
<div class="flex items-center gap-x-2 text-xs">
<div class="flex items-center"><i class="fas fa-check text-emerald-400 mr-1"></i> <span class="text-emerald-300">Esports Certified</span></div>
</div>
<button onclick="addToCart('Vortex 75 Pro')" class="text-xs font-bold px-4 py-2 bg-indigo-600 hover:bg-indigo-500 transition rounded-2xl">Shop Now</button>
</div>
</div>
</div>
<!-- Hardware Card 3 -->
<div class="game-card bg-slate-900 border border-slate-800 rounded-3xl overflow-hidden">
<div class="h-48 bg-slate-800 relative">
<img src="https://picsum.photos/id/160/600/400" class="w-full h-full object-cover" alt="Lightweight wireless gaming mouse">
<div class="absolute top-4 right-4 bg-violet-900 text-violet-300 text-xs font-bold px-3 py-1 rounded-2xl flex items-center">
<span>Wireless</span>
</div>
</div>
<div class="p-5">
<div class="flex justify-between items-center mb-3">
<h4 class="font-semibold text-xl">Phantom X1</h4>
<span class="text-xs font-bold px-2 py-1 bg-slate-800 rounded-xl">$89</span>
</div>
<p class="text-slate-400 text-sm leading-relaxed">Ultra-lightweight wireless gaming mouse with 26K DPI sensor and 1ms wireless latency. Trusted by 18,000+ professional players across major esports leagues.</p>
<div class="mt-5 flex items-center justify-between">
<div class="flex items-center gap-x-2 text-xs">
<div class="flex items-center"><i class="fas fa-check text-emerald-400 mr-1"></i> <span class="text-emerald-300">Meta Favorite</span></div>
</div>
<button onclick="addToCart('Phantom X1')" class="text-xs font-bold px-4 py-2 bg-indigo-600 hover:bg-indigo-500 transition rounded-2xl">Shop Now</button>
</div>
</div>
</div>
</div>
</section>
<!-- REVIEWS SECTION -->
<section id="reviews" class="max-w-screen-2xl mx-auto px-8 py-12 bg-slate-900">
<div class="flex flex-col md:flex-row md:items-end md:justify-between mb-8">
<div>
<span class="text-indigo-400 text-sm font-semibold tracking-[1.25px]">EXPERT ANALYSIS</span>
<h2 class="section-header tracking-tighter">Latest Game Reviews</h2>
</div>
<a href="#" class="mt-3 md:mt-0 text-sm font-medium flex items-center gap-x-2 group">
View all reviews <i class="fas fa-arrow-right group-hover:translate-x-1 transition"></i>
</a>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<!-- Review 1 -->
<div class="game-card bg-slate-950 border border-slate-800 rounded-3xl overflow-hidden p-1">
<div class="p-5">
<div class="flex items-center justify-between">
<div>
<span class="px-3 py-1 text-xs font-bold bg-emerald-900 text-emerald-300 rounded-2xl">9.8/10</span>
</div>
<span class="text-xs px-2 py-1 font-medium text-slate-400">Jan 28, 2025</span>
</div>
<div class="mt-4">
<div class="flex items-center gap-3">
<img src="https://picsum.photos/id/180/48/48" class="w-10 h-10 rounded-xl" alt="Valorant cover art">
<div>
<h4 class="font-bold text-xl">Valorant</h4>
<p class="text-xs text-slate-400">Riot Games • Season 23</p>
</div>
</div>
</div>
<p class="mt-4 text-sm text-slate-300 leading-relaxed">The latest season introduces revolutionary agent abilities that have completely shifted the meta strategy. Our testing revealed a 28% increase in clutch win rates for teams adapting to the new utility denial playstyle.</p>
<div class="mt-5 pt-4 border-t border-slate-800 flex items-center justify-between">
<div>
<span class="text-xs text-slate-400">Reviewed by</span>
<span class="font-semibold block text-sm">Lena Voss</span>
</div>
<button onclick="readReview(1)" class="text-xs px-4 py-1.5 font-bold bg-slate-800 hover:bg-slate-700 transition rounded-2xl">Read Full Review</button>
</div>
</div>
</div>
<!-- Review 2 -->
<div class="game-card bg-slate-950 border border-slate-800 rounded-3xl overflow-hidden p-1">
<div class="p-5">
<div class="flex items-center justify-between">
<div>
<span class="px-3 py-1 text-xs font-bold bg-amber-900 text-amber-300 rounded-2xl">8.7/10</span>
</div>
<span class="text-xs px-2 py-1 font-medium text-slate-400">Jan 22, 2025</span>
</div>
<div class="mt-4">
<div class="flex items-center gap-3">
<img src="https://picsum.photos/id/201/48/48" class="w-10 h-10 rounded-xl" alt="Apex Legends cover art">
<div>
<h4 class="font-bold text-xl">Apex Legends</h4>
<p class="text-xs text-slate-400">Respawn • Season 22</p>
</div>
</div>
</div>
<p class="mt-4 text-sm text-slate-300 leading-relaxed">While the new season pass offers excellent cosmetic rewards, the introduction of the new movement tech has created noticeable balance issues in high-level ranked play. Latency spikes on certain servers remain a concern for competitive players.</p>
<div class="mt-5 pt-4 border-t border-slate-800 flex items-center justify-between">
<div>
<span class="text-xs text-slate-400">Reviewed by</span>
<span class="font-semibold block text-sm">Marcus Kane</span>
</div>
<button onclick="readReview(2)" class="text-xs px-4 py-1.5 font-bold bg-slate-800 hover:bg-slate-700 transition rounded-2xl">Read Full Review</button>
</div>
</div>
</div>
<!-- Review 3 -->
<div class="game-card bg-slate-950 border border-slate-800 rounded-3xl overflow-hidden p-1">
<div class="p-5">
<div class="flex items-center justify-between">
<div>
<span class="px-3 py-1 text-xs font-bold bg-emerald-900 text-emerald-300 rounded-2xl">9.4/10</span>
</div>
<span class="text-xs px-2 py-1 font-medium text-slate-400">Jan 15, 2025</span>
</div>
<div class="mt-4">
<div class="flex items-center gap-3">
<img src="https://picsum.photos/id/251/48/48" class="w-10 h-10 rounded-xl" alt="League of Legends cover art">
<div>
<h4 class="font-bold text-xl">League of Legends</h4>
<p class="text-xs text-slate-400">Riot Games • Patch 14.2</p>
</div>
</div>
</div>
<p class="mt-4 text-sm text-slate-300 leading-relaxed">Patch 14.2 delivers a massive mid-season overhaul. The reworked jungle meta has forced pro teams to completely rethink their macro strategies. Our analysts are particularly impressed with the improved clarity of objective timers and vision control mechanics.</p>
<div class="mt-5 pt-4 border-t border-slate-800 flex items-center justify-between">
<div>
<span class="text-xs text-slate-400">Reviewed by</span>
<span class="font-semibold block text-sm">Sofia Reyes</span>
</div>
<button onclick="readReview(3)" class="text-xs px-4 py-1.5 font-bold bg-slate-800 hover:bg-slate-700 transition rounded-2xl">Read Full Review</button>
</div>
</div>
</div>
</div>
</section>
<!-- ESPORTS SECTION -->
<section id="esports" class="max-w-screen-2xl mx-auto px-8 py-16">
<div class="flex flex-col lg:flex-row gap-8">
<!-- Main Esports Content -->
<div class="flex-1">
<div class="flex items-end justify-between mb-8">
<div>
<span class="text-indigo-400 text-sm font-semibold tracking-[1.25px]">COMPETITIVE SCENE</span>
<h2 class="section-header tracking-tighter">Esports Arena</h2>
</div>
<button onclick="document.getElementById('tournaments').scrollIntoView({ behavior: 'smooth' })"
class="hidden md:flex items-center gap-x-2 text-sm font-semibold px-5 py-2.5 rounded-3xl border border-slate-700 hover:bg-slate-900">
<span>View all events</span>
</button>
</div>
<!-- Featured Match -->
<div class="bg-slate-900 border border-slate-800 rounded-3xl p-6 mb-6">
<div class="flex items-center justify-between">
<div>
<div class="flex items-center gap-x-2">
<span class="px-3 py-1 rounded-2xl text-xs font-extrabold bg-red-600">LIVE</span>
<span class="font-semibold text-sm">AetherForge Invitational 2025</span>
</div>
<h3 class="font-bold text-2xl mt-1">Team Nocturne vs. Eclipse</h3>
</div>
<div class="text-right">
<div class="text-emerald-400 text-xs font-bold">LIVE • 184K WATCHING</div>
<div class="text-xs mt-1 text-slate-300">Map 3 • 12-9</div>
</div>
</div>
<div class="mt-5 grid grid-cols-3 items-center gap-4">
<div class="text-center">
<div class="flex justify-center mb-2">
<img src="https://i.pravatar.cc/42?u=team1" class="w-10 h-10 rounded-full ring-2 ring-slate-700" alt="Team Nocturne">
</div>
<div class="font-bold">Team Nocturne</div>
<div class="text-emerald-400 font-mono text-xl font-extrabold">12</div>
</div>
<div class="text-center">
<div class="text-xs font-medium text-slate-400">VS</div>
<div class="my-1 text-xs px-3 py-1 bg-slate-800 rounded-full mx-auto w-fit">BO3</div>
</div>
<div class="text-center">
<div class="flex justify-center mb-2">
<img src="https://i.pravatar.cc/42?u=team2" class="w-10 h-10 rounded-full ring-2 ring-slate-700" alt="Eclipse">
</div>
<div class="font-bold">Eclipse</div>
<div class="text-emerald-400 font-mono text-xl font-extrabold">9</div>
</div>
</div>
<div class="mt-6 flex gap-3">
<button onclick="watchLive()"
class="flex-1 flex items-center justify-center gap-x-2 bg-red-600 hover:bg-red-500 transition text-white font-bold py-3 rounded-3xl text-sm">
<i class="fas fa-play mr-2"></i>
<span>WATCH LIVE</span>
</button>
<button onclick="joinClan()" class="flex-1 flex items-center justify-center gap-x-2 bg-slate-800 hover:bg-slate-700 font-semibold text-sm py-3 rounded-3xl transition">
<span>Join Clan</span>
</button>
</div>
</div>
<!-- Pro Player Highlights -->
<div>
<h4 class="font-semibold mb-4 text-sm tracking-wider px-1">PRO PLAYER HIGHLIGHTS</h4>
<div class="grid grid-cols-1 sm:grid-cols-3 gap-4">
<div class="flex gap-3 bg-slate-900 border border-slate-800 p-3 rounded-2xl items-center">
<img src="https://i.pravatar.cc/46?u=player1" class="w-9 h-9 rounded-2xl" alt="Pro player Shadow">
<div class="flex-1 min-w-0">
<div class="font-semibold text-sm">ShadowBlade</div>
<div class="text-xs text-slate-400">Valorant • 2.8 K/D</div>
</div>
<div class="text-right">
<div class="text-emerald-300 text-xs font-bold">#1</div>
</div>
</div>
<div class="flex gap-3 bg-slate-900 border border-slate-800 p-3 rounded-2xl items-center">
<img src="https://i.pravatar.cc/46?u=player2" class="w-9 h-9 rounded-2xl" alt="Pro player Nova">
<div class="flex-1 min-w-0">
<div class="font-semibold text-sm">NovaStrike</div>
<div class="text-xs text-slate-400">Apex • 1.9 K/D</div>
</div>
<div class="text-right">
<div class="text-emerald-300 text-xs font-bold">#3</div>
</div>
</div>
<div class="flex gap-3 bg-slate-900 border border-slate-800 p-3 rounded-2xl items-center">
<img src="https://i.pravatar.cc/46?u=player3" class="w-9 h-9 rounded-2xl" alt="Pro player Echo">
<div class="flex-1 min-w-0">
<div class="font-semibold text-sm">EchoVortex</div>
<div class="text-xs text-slate-400">LoL • 3x MVP</div>
</div>
<div class="text-right">
<div class="text-emerald-300 text-xs font-bold">#4</div>
</div>
</div>
</div>
</div>
</div>
<!-- Sidebar: Live Schedule & Trending -->
<div class="lg:w-80 xl:w-96">
<div class="bg-slate-900 border border-slate-800 rounded-3xl p-6 sticky top-6">
<h4 class="font-bold text-sm px-1 mb-4 flex items-center gap-x-2">
<i class="fas fa-broadcast-tower text-red-400"></i>
<span>LIVE SCHEDULE</span>
</h4>
<div class="space-y-4">
<div class="flex items-center gap-3">
<div class="flex-1">
<div class="flex items-center gap-x-2">
<span class="font-semibold text-sm">Aether Cup Finals</span>
</div>
<div class="text-xs text-emerald-300">Team Nocturne vs Eclipse</div>
</div>
<div class="text-right">
<div class="font-mono text-xs font-bold">NOW</div>
<div class="text-[10px] text-slate-400">184k</div>
</div>
</div>
<div class="flex items-center gap-3">
<div class="flex-1">
<div class="flex items-center gap-x-2">
<span class="font-semibold text-sm">Valorant Pro League</span>
</div>
<div class="text-xs text-emerald-300">Astral vs Phantom</div>
</div>
<div class="text-right">
<div class="font-mono text-xs font-bold">IN 2H</div>
<div class="text-[10px] text-slate-400">67k</div>
</div>
</div>
<div class="flex items-center gap-3">
<div class="flex-1">
<div class="flex items-center gap-x-2">
<span class="font-semibold text-sm">CS2 Major Qualifiers</span>
</div>
<div class="text-xs text-emerald-300">Quantum vs Vortex</div>
</div>
<div class="text-right">
<div class="font-mono text-xs font-bold">IN 7H</div>
<div class="text-[10px] text-slate-400">39k</div>
</div>
</div>
</div>
<div class="mt-7 pt-5 border-t border-slate-800">
<div class="flex justify-between items-center mb-2 px-1">
<span class="font-semibold text-sm">Trending Games</span>
</div>
<div class="text-xs space-y-2">
<div class="flex justify-between items-center px-1">
<span class="text-slate-300">Valorant</span>
<span class="font-mono text-emerald-300 text-xs">+41%</span>
</div>
<div class="flex justify-between items-center px-1">
<span class="text-slate-300">Apex Legends</span>
<span class="font-mono text-emerald-300 text-xs">+22%</span>
</div>
<div class="flex justify-between items-center px-1">
<span class="text-slate-300">League of Legends</span>
<span class="font-mono text-emerald-300 text-xs">+9%</span>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- FORUMS + COMMUNITY TEASER -->
<section id="forums" class="max-w-screen-2xl mx-auto px-8 py-12 border-t border-slate-800">
<div class="grid grid-cols-1 lg:grid-cols-12 gap-8">
<div class="lg:col-span-7">
<div class="flex items-end justify-between mb-6">
<div>
<span class="text-indigo-400 text-sm font-semibold tracking-[1.25px]">COMMUNITY HUB</span>
<h2 class="section-header tracking-tighter">Forums & Discussions</h2>
</div>
<button onclick="joinForum()" class="px-4 py-2 text-sm font-semibold bg-slate-800 hover:bg-slate-700 rounded-2xl flex items-center gap-2">
<span>Browse Forums</span>
</button>
</div>
<div class="space-y-2">
<!-- Forum threads -->
<div class="flex items-center bg-slate-900 hover:bg-slate-800 transition border border-slate-800 px-5 py-3.5 rounded-2xl">
<div class="flex-1 min-w-0">
<div class="flex items-center gap-x-2">
<span class="font-semibold text-sm">Best loadout for Season 23 ranked?</span>
<span class="px-2 py-0.5 text-[10px] bg-slate-700 rounded-xl font-bold">META</span>
</div>
<div class="text-xs text-slate-400 mt-0.5">1,294 replies • 18h ago • by @KillerInstinct</div>
</div>
<div class="text-xs font-mono text-right">2.8k</div>
</div>
<div class="flex items-center bg-slate-900 hover:bg-slate-800 transition border border-slate-800 px-5 py-3.5 rounded-2xl">
<div class="flex-1 min-w-0">
<div class="flex items-center gap-x-2">
<span class="font-semibold text-sm">Is the new Phantom X1 mouse worth the price?</span>
</div>
<div class="text-xs text-slate-400 mt-0.5">472 replies • 3d ago • by @TechForge</div>
</div>
<div class="text-xs font-mono text-right">1.4k</div>
</div>
<div class="flex items-center bg-slate-900 hover:bg-slate-800 transition border border-slate-800 px-5 py-3.5 rounded-2xl">
<div class="flex-1 min-w-0">
<div class="flex items-center gap-x-2">
<span class="font-semibold text-sm">Apex Legends: New season meta analysis</span>
<span class="px-2 py-0.5 text-[10px] bg-amber-900 text-amber-300 rounded-xl font-bold">PRO</span>
</div>
<div class="text-xs text-slate-400 mt-0.5">876 replies • 5d ago • by @EchoVortex</div>
</div>
<div class="text-xs font-mono text-right">3.1k</div>
</div>
</div>
</div>
<div class="lg:col-span-5">
<div class="bg-slate-900 border border-slate-800 rounded-3xl p-6">
<h4 class="font-bold mb-3">Community Guidelines</h4>
<p class="text-sm text-slate-400">Our forums are the beating heart of AetherForge. Share strategies, find teammates, and discuss the latest patches in a respectful environment.</p>
<div class="mt-5">
<div class="text-xs flex items-center justify-between mb-2">
<span>Monthly posts</span>
<span class="font-mono font-bold">128.4k</span>
</div>
<div class="w-full bg-slate-800 h-2 rounded-full">
<div class="bg-indigo-600 h-2 w-[87%] rounded-full"></div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- COMMUNITY + INTERACTIVE SECTION -->
<section id="community" class="max-w-screen-2xl mx-auto px-8 py-16">
<div class="flex flex-col lg:flex-row gap-12">
<!-- Testimonials -->
<div class="lg:w-3/5">
<div class="mb-8">
<span class="text-indigo-400 text-sm font-semibold tracking-[1.25px]">FROM THE FORGE</span>
<h2 class="section-header tracking-tighter">What the community is saying</h2>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<!-- Testimonial 1 -->
<div class="bg-slate-900 border border-slate-800 p-5 rounded-3xl">
<div class="flex gap-3 items-center">
<img src="https://i.pravatar.cc/36?u=anna" class="w-9 h-9 rounded-full" alt="Anna K">
<div>
<div class="font-semibold text-sm">AnnaK_Pro</div>
<div class="text-xs text-slate-400">Valorant Challenger</div>
</div>
</div>
<p class="mt-4 text-sm leading-relaxed">"AetherForge completely changed how I approach the game. The forums helped me find my current team and the achievement tracker keeps me motivated daily."</p>
<div class="mt-4 text-xs text-emerald-300 font-medium">— Joined 9 months ago</div>
</div>
<!-- Testimonial 2 -->
<div class="bg-slate-900 border border-slate-800 p-5 rounded-3xl">
<div class="flex gap-3 items-center">
<img src="https://i.pravatar.cc/36?u=raj" class="w-9 h-9 rounded-full" alt="Raj Patel">
<div>
<div class="font-semibold text-sm">RajTheRogue</div>
<div class="text-xs text-slate-400">Apex Predator</div>
</div>
</div>
<p class="mt-4 text-sm leading-relaxed">"The hardware reviews are incredibly accurate. Thanks to the Aether Ultra 27, I finally hit Radiant. The latency improvements are real."</p>
<div class="mt-4 text-xs text-emerald-300 font-medium">— Joined 1 year ago</div>
</div>
<!-- Testimonial 3 -->
<div class="bg-slate-900 border border-slate-800 p-5 rounded-3xl">
<div class="flex gap-3 items-center">
<img src="https://i.pravatar.cc/36?u=elena" class="w-9 h-9 rounded-full" alt="Elena Voss">
<div>
<div class="font-semibold text-sm">ElenaVoss</div>
<div class="text-xs text-slate-400">Esports Coach</div>
</div>
</div>
<p class="mt-4 text-sm leading-relaxed">"I use AetherForge to scout talent and stay on top of the meta. The reviews and esports coverage are second to none."</p>
<div class="mt-4 text-xs text-emerald-300 font-medium">— Joined 14 months ago</div>
</div>
</div>
</div>
<!-- Interactive Achievement Tracker -->
<div class="lg:w-2/5 bg-slate-900 border border-slate-800 rounded-3xl p-6">
<div class="flex items-center justify-between mb-5">
<div>
<h4 class="font-bold text-lg">Achievement Tracker</h4>
<p class="text-xs text-slate-400">Track your progress in real-time</p>
</div>
<div id="progress-container" class="text-right">
<div class="text-xs font-semibold text-slate-400">PROGRESS</div>
<div id="progress-text" class="font-mono text-2xl font-extrabold">42%</div>
</div>
</div>
<div class="mb-4">
<div class="h-2.5 w-full bg-slate-800 rounded-full overflow-hidden">
<div id="progress-bar" class="h-2.5 bg-gradient-to-r from-indigo-500 to-violet-500 transition-all duration-300" style="width: 42%"></div>
</div>
</div>
<div id="achievements-list" class="space-y-[7px]">
<!-- Populated dynamically with JS -->
</div>
<div class="mt-5 flex justify-center">
<button onclick="resetAchievements()"
class="text-xs flex items-center px-4 py-1.5 text-slate-300 hover:text-white font-medium">
<i class="fas fa-redo mr-2"></i>
<span class="text-xs">Reset tracker</span>
</button>
</div>
</div>
</div>
</section>
<!-- TOURNAMENTS / CTA SECTION -->
<section id="tournaments" class="max-w-screen-2xl mx-auto px-8 py-12">
<div class="bg-gradient-to-br from-slate-900 to-slate-950 border border-slate-700 rounded-3xl px-8 py-9">
<div class="grid grid-cols-1 md:grid-cols-12 gap-6 items-center">
<div class="md:col-span-7">
<div class="flex items-center gap-3 mb-1">
<span class="font-extrabold text-3xl">AetherForge Cup 2025</span>
</div>
<p class="text-lg max-w-md text-slate-300">The biggest online esports event of the year. $250,000 prize pool. Open registration for all skill levels.</p>
<div class="mt-6 flex items-center gap-x-4">
<button onclick="registerForTournament()"
class="px-6 py-3.5 bg-white hover:bg-slate-100 transition font-extrabold text-slate-900 rounded-3xl px-7 text-sm">
REGISTER NOW
</button>
<button onclick="document.getElementById('esports').scrollIntoView({ behavior: 'smooth' })"
class="px-5 py-3.5 font-semibold text-sm border border-slate-600 hover:bg-slate-800 transition rounded-3xl">
View Bracket
</button>
</div>
</div>
<div class="md:col-span-5">
<div class="flex items-center md:justify-end gap-x-4">
<div class="text-center">
<div class="font-mono text-3xl font-extrabold">18d</div>
<div class="text-xs font-medium tracking-wider">UNTIL START</div>
</div>
<div class="text-center border-l border-slate-700 pl-4">
<div class="font-mono text-3xl font-extrabold">124k</div>
<div class="text-xs font-medium tracking-wider">REGISTERED</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section class="max-w-screen-2xl mx-auto px-8 pt-6 pb-16">
<div class="max-w-3xl mx-auto">
<h3 class="font-bold text-center mb-6 text-xl">Frequently Asked Questions</h3>
<div class="space-y-2">
<details class="bg-slate-900 border border-slate-800 px-5 py-1 rounded-2xl group">
<summary class="flex items-center justify-between py-3 cursor-pointer font-medium text-sm">
<span>How do I join a competitive team?</span>
<i class="fas fa-chevron-down group-open:rotate-180 transition"></i>
</summary>
<p class="pb-3 text-sm text-slate-400">Head over to our Community section or Forums to connect with other players. You can also apply to open teams in the Tournaments tab. Our team matching algorithm helps pair you with players of similar skill level.</p>
</details>
<details class="bg-slate-900 border border-slate-800 px-5 py-1 rounded-2xl group">
<summary class="flex items-center justify-between py-3 cursor-pointer font-medium text-sm">
<span>What is the season pass and how does it work?</span>
<i class="fas fa-chevron-down group-open:rotate-180 transition"></i>
</summary>
<p class="pb-3 text-sm text-slate-400">Our season pass grants access to exclusive cosmetics, early access to new hardware reviews, and entry into member-only tournaments. It also gives you priority queue in competitive matchmaking.</p>
</details>
<details class="bg-slate-900 border border-slate-800 px-5 py-1 rounded-2xl group">
<summary class="flex items-center justify-between py-3 cursor-pointer font-medium text-sm">
<span>Do you have support for low-latency streaming?</span>
<i class="fas fa-chevron-down group-open:rotate-180 transition"></i>
</summary>
<p class="pb-3 text-sm text-slate-400">Yes. AetherForge partners with leading streaming platforms and offers optimized OBS profiles with ultra-low latency settings. Pro players use our recommended settings to maintain 0.5ms-2ms stream latency.</p>
</details>
</div>
</div>
</section>
<!-- FOOTER -->
<footer class="bg-slate-900 border-t border-slate-800">
<div class="max-w-screen-2xl mx-auto px-8 pt-10 pb-8">
<div class="grid grid-cols-2 md:grid-cols-5 gap-y-8">
<div class="col-span-2 md:col-span-1">
<div class="flex items-center gap-x-2 mb-2">
<img src="https://placehold.co/140x40/1e2937/6366f1?text=AetherForge&font=montserrat" alt="AetherForge logo" class="h-8">
</div>
<div class="text-xs text-slate-400">Forge your legend since 2019.</div>
</div>
<div>
<div class="font-semibold mb-3 text-xs tracking-wider">EXPLORE</div>
<div class="space-y-1.5 text-xs">
<div><a href="#esports" class="text-slate-400 hover:text-slate-200">Esports</a></div>
<div><a href="#reviews" class="text-slate-400 hover:text-slate-200">Game Reviews</a></div>
<div><a href="#hardware" class="text-slate-400 hover:text-slate-200">Hardware</a></div>
<div><a href="#tournaments" class="text-slate-400 hover:text-slate-200">Tournaments</a></div>
</div>
</div>
<div>
<div class="font-semibold mb-3 text-xs tracking-wider">COMMUNITY</div>
<div class="space-y-1.5 text-xs">
<div><a href="#forums" class="text-slate-400 hover:text-slate-200">Forums</a></div>
<div><a href="#community" class="text-slate-400 hover:text-slate-200">Clans</a></div>
<div><a href="#" class="text-slate-400 hover:text-slate-200">Discord</a></div>
<div><a href="#" class="text-slate-400 hover:text-slate-200">Leaderboards</a></div>
</div>
</div>
<div>
<div class="font-semibold mb-3 text-xs tracking-wider">COMPANY</div>
<div class="space-y-1.5 text-xs">
<div><a href="#" class="text-slate-400 hover:text-slate-200">About Us</a></div>
<div><a href="#" class="text-slate-400 hover:text-slate-200">Careers</a></div>
<div><a href="#" class="text-slate-400 hover:text-slate-200">Press</a></div>
<div><a href="#" class="text-slate-400 hover:text-slate-200">Blog</a></div>
</div>
</div>
<div class="col-span-2 md:col-span-1">
<div class="font-semibold mb-3 text-xs tracking-wider">CONTACT</div>
<div class="space-y-1 text-xs">
<div><a href="mailto:support@aetherforge.gg" class="text-slate-400 hover:text-slate-200">support@aetherforge.gg</a></div>
<div class="text-slate-400">+1 (415) 555-0192</div>
<div class="mt-4 flex gap-4">
<a href="#" class="text-slate-400 hover:text-white"><i class="fab fa-twitter text-lg"></i></a>
<a href="#" class="text-slate-400 hover:text-white"><i class="fab fa-discord text-lg"></i></a>
<a href="#" class="text-slate-400 hover:text-white"><i class="fab fa-twitch text-lg"></i></a>
<a href="#" class="text-slate-400 hover:text-white"><i class="fab fa-instagram text-lg"></i></a>
</div>
</div>
</div>
</div>
<div class="border-t border-slate-800 mt-8 pt-6 flex flex-col md:flex-row md:items-center justify-between text-xs gap-3">
<div class="text-slate-400">© 2025 AetherForge. All rights reserved.</div>
<div class="flex gap-x-5 text-slate-400">
<a href="#" class="hover:text-white">Privacy Policy</a>
<a href="#" class="hover:text-white">Terms of Service</a>
<a href="#" class="hover:text-white">Cookie Settings</a>
</div>
</div>
</div>
</footer>
<!-- Join Modal -->
<div id="join-modal" onclick="hideJoinModal()" class="hidden fixed inset-0 bg-black bg-opacity-70 z-50 flex items-center justify-center">
<div onclick="event.stopImmediatePropagation()" class="bg-slate-900 border border-slate-700 max-w-md w-full mx-4 rounded-3xl p-7">
<div class="flex justify-between">
<div>
<span class="font-display font-extrabold text-3xl">Join the Forge</span>
</div>
<button onclick="hideJoinModal()" class="text-xl text-slate-300 hover:text-white">×</button>
</div>
<p class="mt-3 text-sm">Create your free account to access ranked matchmaking, exclusive content, and the full AetherForge experience.</p>
<div class="mt-6 space-y-3">
<div>
<label class="text-xs font-semibold px-1">Username</label>
<input type="text" value="ShadowForge42" class="w-full mt-1 bg-slate-800 border border-slate-700 px-4 py-3 text-sm rounded-2xl focus:outline-none">
</div>
<div>
<label class="text-xs font-semibold px-1">Email</label>
<input type="email" value="player@aetherforge.gg" class="w-full mt-1 bg-slate-800 border border-slate-700 px-4 py-3 text-sm rounded-2xl focus:outline-none">
</div>
</div>
<button onclick="createAccount()" class="mt-6 w-full bg-indigo-600 hover:bg-indigo-500 transition font-bold py-3.5 text-sm rounded-3xl">Create Free Account</button>
<div class="text-center mt-5 text-xs text-slate-400">By signing up, you agree to our <a href="#" class="underline">Terms</a> and <a href="#" class="underline">Privacy Policy</a>.</div>
</div>
</div>
<script src="https://cdn.tailwindcss.com"></script>
<script>
// Tailwind script
function initializeTailwind() {
document.documentElement.style.setProperty('--accent', '#6366f1');
tailwind.config = {
theme: {
extend: {
fontFamily: {
'display': ['Space Grotesk', 'system-ui', 'sans-serif']
}
}
}
};
}
// Achievement Tracker Data
let achievements = [
{
id: 1,
title: "Complete 5 Ranked Matches",
desc: "Win or lose, just queue up",
completed: false,
icon: "fa-gamepad"
},
{
id: 2,
title: "Win a Tournament Match",
desc: "Claim victory in a bracket",
completed: false,
icon: "fa-trophy"
},
{
id: 3,
title: "Post in the Forums",
desc: "Share your strategies",
completed: false,
icon: "fa-comments"
},
{
id: 4,
title: "Join a Clan",
desc: "Find your squad",
completed: false,
icon: "fa-users"
}
];
// Initialize achievements
function initAchievements() {
const container = document.getElementById('achievements-list');
container.innerHTML = '';
achievements.forEach((ach, index) => {
const div = document.createElement('div');
div.className = `achievement flex items-center justify-between px-4 py-[9px] rounded-2xl border ${ach.completed ? 'bg-emerald-900/30 border-emerald-800' : 'bg-slate-800 border-slate-700'}`;
div.innerHTML = `
<div class="flex items-center gap-x-3">
<div class="w-7 h-7 flex items-center justify-center ${ach.completed ? 'text-emerald-400' : 'text-slate-400'}">
<i class="fas ${ach.icon}"></i>
</div>
<div>
<div class="font-medium text-sm ${ach.completed ? 'text-emerald-300 line-through' : ''}">${ach.title}</div>
<div class="text-[10px] text-slate-400">${ach.desc}</div>
</div>
</div>
<div>
${ach.completed ?
`<div class="px-3 py-1 text-emerald-300 text-xs font-bold flex items-center"><i class="fas fa-check mr-1.5"></i> Done</div>` :
`<button onclick="completeAchievement(${index})" class="px-3 py-[5px] text-xs font-bold transition-colors bg-indigo-600 hover:bg-indigo-500 rounded-xl px-4">Claim</button>`
}
</div>
`;
container.appendChild(div);
});
updateProgress();
}
function completeAchievement(index) {
if (achievements[index].completed) return;
achievements[index].completed = true;
// Re-render achievements
initAchievements();
// Show toast
showToast(`Achievement unlocked: ${achievements[index].title}`);
// Random bonus message for immersion
if (Math.random() > 0.7) {
setTimeout(() => {
showToast("Bonus XP awarded! +250");
}, 1200);
}
}
function updateProgress() {
const completedCount = achievements.filter(a => a.completed).length;
const total = achievements.length;
const percentage = Math.round((completedCount / total) * 100);
const progressBar = document.getElementById('progress-bar');
const progressText = document.getElementById('progress-text');
progressBar.style.width = `${percentage}%`;
progressText.textContent = `${percentage}%`;
// Color change when complete
if (percentage === 100) {
progressBar.style.background = 'linear-gradient(to right, #10b981, #34d399)';
progressText.classList.add('text-emerald-300');
} else {
progressBar.style.background = 'linear-gradient(to right, #6366f1, #a855f7)';
progressText.classList.remove('text-emerald-300');
}
}
function resetAchievements() {
achievements.forEach(a => a.completed = false);
initAchievements();
showToast("Tracker reset");
}
// Utility functions
function showToast(message) {
const toast = document.createElement('div');
toast.className = `fixed bottom-4 left-1/2 -translate-x-1/2 bg-slate-800 border border-slate-700 px-5 py-3 rounded-3xl shadow-xl flex items-center gap-2 text-sm max-w-xs`;
toast.innerHTML = `
<div class="flex items-center gap-x-3">
<i class="fas fa-check-circle text-emerald-300"></i>
<span>${message}</span>
</div>
`;
document.body.appendChild(toast);
setTimeout(() => {
toast.style.transition = 'all 0.2s ease';
toast.style.opacity = '0';
setTimeout(() => {
toast.parentNode.removeChild(toast);
}, 180);
}, 2600);
}
function addToCart(itemName) {
const btns = event.currentTarget;
const originalText = event.target.innerHTML;
showToast(`${itemName} added to cart!`);
// If button exists in event
const button = event.target;
if (button) {
button.innerHTML = `<i class="fas fa-check mr-2"></i> Added`;
button.disabled = true;
setTimeout(() => {
if (button) {
button.innerHTML = originalText;
button.disabled = false;
}
}, 1700);
}
}
function readReview(reviewId) {
const modal = document.createElement('div');
modal.className = `fixed inset-0 bg-black bg-opacity-70 flex items-center justify-center z-[60]`;
let title = '';
let content = '';
let rating = '';
if (reviewId === 1) {
title = 'Valorant - Season 23';
rating = '9.8';
content = `This season represents a true evolution for Valorant. The new agent, "Aether", brings an entirely new dimension to the game with her ability to manipulate sightlines and create temporary barriers. Professional teams have been forced to adapt their meta strategies, with a heavy emphasis on utility usage and coordination.`;
} else if (reviewId === 2) {
title = 'Apex Legends - Season 22';
rating = '8.7';
content = `Season 22 brings some exciting changes to the battle royale formula. While the new season pass content is strong, the balance adjustments to the new movement system have caused some controversy in the competitive community. Our playtests showed noticeable improvements in gunplay feel, but the increase in average match length may affect high-level play.`;
} else {
title = 'League of Legends - Patch 14.2';
rating = '9.4';
content = `Patch 14.2 is a masterclass in mid-season updates. The jungle overhaul has completely changed how teams approach early game macro. The new objective timer clarity and reworked vision system have been a huge quality of life improvement for players and coaches alike.`;
}
modal.innerHTML = `
<div onclick="event.target.remove()" class="absolute inset-0"></div>
<div onclick="event.stopImmediatePropagation()" class="bg-slate-900 border border-slate-700 w-full max-w-lg mx-4 rounded-3xl p-7 relative">
<div class="flex items-center justify-between">
<div>
<div class="flex items-center gap-3">
<span class="font-extrabold text-2xl">${title}</span>
</div>
<div class="flex items-center gap-x-2 mt-1">
<span class="bg-emerald-900 text-emerald-300 px-3 rounded-2xl text-xs py-[1px] font-bold">${rating}/10</span>
<span class="text-xs text-slate-400">Expert Review</span>
</div>
</div>
<button onclick="this.closest('.fixed').remove()" class="text-xl text-slate-300 hover:text-white">×</button>
</div>
<div class="mt-6 text-sm leading-relaxed text-slate-200">
${content}
<p class="mt-3">Our full analysis also covers how these changes impact lower elo players and the potential for future balance patches.</p>
</div>
<div class="mt-7 flex items-center gap-3">
<button onclick="this.closest('.fixed').remove(); showToast('Review saved to your library');" class="flex-1 text-sm font-bold bg-indigo-600 hover:bg-indigo-500 py-[13px] rounded-3xl">Save to Library</button>
<button onclick="this.closest('.fixed').remove()" class="flex-1 text-sm font-bold bg-slate-800 hover:bg-slate-700 py-[13px] rounded-3xl">Close</button>
</div>
</div>
`;
document.body.appendChild(modal);
}
function watchLive() {
const modal = document.createElement('div');
modal.className = `fixed inset-0 bg-black bg-opacity-80 flex items-center justify-center z-[60]`;
modal.innerHTML = `
<div onclick="event.target.remove()" class="absolute inset-0"></div>
<div onclick="event.stopImmediatePropagation()" class="bg-slate-900 border border-slate-700 w-full max-w-[820px] mx-4 rounded-3xl overflow-hidden">
<div class="px-5 pt-5 pb-4 flex items-center justify-between bg-slate-950">
<div class="flex items-center gap-x-3">
<div class="px-4 py-1 bg-red-600 text-white rounded-2xl flex items-center text-xs font-extrabold">
<i class="fas fa-circle mr-1.5 text-[8px]"></i>
<span>LIVE</span>
</div>
<div>
<span class="font-bold">AetherForge Invitational 2025</span>
<span class="text-xs px-2 ml-2 text-emerald-300">184,291 watching</span>
</div>
</div>
<button onclick="this.closest('.fixed').remove()" class="px-4 py-1 text-sm font-medium">Close</button>
</div>
<div class="aspect-video bg-slate-950 flex items-center justify-center relative">
<div class="text-center">
<div class="mx-auto w-16 h-16 flex items-center justify-center border border-slate-700 rounded-full">
<i class="fas fa-play text-4xl text-white ml-1"></i>
</div>
<div class="mt-4">
<span class="font-semibold">Team Nocturne vs Eclipse</span>
<div class="text-xs text-emerald-300 mt-1">Map 3 • 12-9 • 18:42</div>
</div>
</div>
<div class="absolute bottom-4 right-4 bg-black bg-opacity-70 px-3 py-1 text-xs rounded-2xl flex items-center">
<span>1080p60 • 14ms latency</span>
</div>
</div>
<div class="px-5 py-3 bg-slate-950 flex items-center justify-between text-xs">
<div class="flex items-center gap-x-2">
<div class="font-medium">Chat is enabled</div>
<div class="px-2.5 py-[1px] bg-emerald-900 text-emerald-300 rounded">12.4k</div>
</div>
<button onclick="this.closest('.fixed').remove(); showToast('Thanks for watching!')" class="text-xs px-3 py-1 font-medium bg-slate-700 rounded-2xl">Leave Stream</button>
</div>
</div>
`;
document.body.appendChild(modal);
}
function joinClan() {
const modal = document.createElement('div');
modal.className = `fixed inset-0 bg-black bg-opacity-70 flex items-center justify-center z-50`;
modal.innerHTML = `
<div onclick="event.target.remove()" class="absolute inset-0"></div>
<div onclick="event.stopImmediatePropagation()" class="bg-slate-900 max-w-sm w-full mx-4 border border-slate-700 rounded-3xl p-6">
<h3 class="font-bold text-xl">Join a Clan</h3>
<p class="text-sm mt-2 text-slate-300">Find teammates that match your playstyle and skill level.</p>
<div class="mt-6">
<div class="mb-2 text-xs font-bold text-slate-300">Recommended clans</div>
<div class="space-y-2">
<div onclick="joinSpecificClan(this)" class="cursor-pointer flex justify-between items-center px-4 py-3 bg-slate-800 hover:bg-slate-700 border border-slate-700 rounded-2xl">
<div>
<div class="font-semibold">Eclipse Syndicate</div>
<div class="text-xs text-emerald-300">14,234 members • 4.8★</div>
</div>
<div class="text-xs font-bold px-3 py-1 rounded-2xl bg-emerald-900 text-emerald-300">JOIN</div>
</div>
<div onclick="joinSpecificClan(this)" class="cursor-pointer flex justify-between items-center px-4 py-3 bg-slate-800 hover:bg-slate-700 border border-slate-700 rounded-2xl">
<div>
<div class="font-semibold">Vortex Legion</div>
<div class="text-xs text-emerald-300">9,721 members • 4.6★</div>
</div>
<div class="text-xs font-bold px-3 py-1 rounded-2xl bg-emerald-900 text-emerald-300">JOIN</div>
</div>
</div>
</div>
<div class="mt-5">
<button onclick="this.closest('.fixed').remove(); showToast('Clan application submitted!')" class="w-full py-3 text-sm font-semibold border border-slate-600 rounded-3xl">Create My Own Clan</button>
</div>
</div>
`;
document.body.appendChild(modal);
}
function joinSpecificClan(element) {
element.style.transition = 'all .15s';
element.style.opacity = '0.4';
setTimeout(() => {
element.closest('.fixed').remove();
showToast("Successfully joined the clan! Welcome to the squad.");
// Bonus: unlock a community achievement
setTimeout(() => {
if (!achievements[3].completed) {
achievements[3].completed = true;
initAchievements();
showToast("Achievement unlocked: Join a Clan");
}
}, 2500);
}, 450);
}
function joinForum() {
const container = document.getElementById('forums');
container.scrollIntoView({ behavior: 'smooth' });
setTimeout(() => {
showToast("Welcome to the AetherForge Forums");
}, 700);
}
function joinDiscord() {
showToast("Redirecting to Discord...");
setTimeout(() => {
window.open("https://discord.com", "_blank");
}, 800);
}
function showJoinModal() {
const modal = document.getElementById('join-modal');
modal.classList.remove('hidden');
modal.classList.add('flex');
}
function hideJoinModal() {
const modal = document.getElementById('join-modal');
modal.classList.remove('flex');
modal.classList.add('hidden');
}
function createAccount() {
const modal = document.getElementById('join-modal');
modal.classList.remove('flex');
modal.classList.add('hidden');
setTimeout(() => {
showToast("Welcome to AetherForge! Your account has been created.");
// Trigger interactive element bonus
setTimeout(() => {
if (!achievements[0].completed) {
achievements[0].completed = true;
initAchievements();
}
}, 1600);
}, 650);
}
function registerForTournament() {
const btnText = event.target.innerHTML;
showToast("Registration successful! Check your email for confirmation.");
// Unlock achievement if not already
setTimeout(() => {
if (!achievements[1].completed) {
achievements[1].completed = true;
initAchievements();
showToast("Achievement unlocked: Win a Tournament Match (entry credited)");
}
}, 1800);
}
function initializeMobileMenu() {
const mobileBtn = document.getElementById('mobile-menu-btn');
if (mobileBtn) {
mobileBtn.addEventListener('click', function() {
const nav = document.createElement('div');
nav.className = `fixed inset-0 bg-slate-950 bg-opacity-95 z-[70] md:hidden flex flex-col`;
nav.innerHTML = `
<div class="px-6 py-5 flex items-center justify-between border-b border-slate-700">
<span class="font-display text-2xl font-bold">AetherForge</span>
<button class="text-3xl leading-none text-slate-300">×</button>
</div>
<div class="px-5 py-6 text-lg">
<a href="#esports" class="block py-3 px-1 border-b border-slate-800 text-slate-200">Esports</a>
<a href="#reviews" class="block py-3 px-1 border-b border-slate-800 text-slate-200">Reviews</a>
<a href="#hardware" class="block py-3 px-1 border-b border-slate-800 text-slate-200">Hardware</a>
<a href="#forums" class="block py-3 px-1 border-b border-slate-800 text-slate-200">Forums</a>
<a href="#community" class="block py-3 px-1 border-b border-slate-800 text-slate-200">Community</a>
<a href="#tournaments" class="block py-3 px-1 text-slate-200">Tournaments</a>
</div>
<div class="px-6 mt-auto mb-7">
<button onclick="showJoinModal(); this.closest('.fixed').remove()" class="block w-full py-3 bg-indigo-600 text-center rounded-3xl font-bold">Play Free</button>
</div>
`;
document.body.appendChild(nav);
// Close functionality
const closeBtn = nav.querySelector('button');
closeBtn.onclick = () => nav.remove();
// Close when clicking links
const links = nav.querySelectorAll('a');
links.forEach(link => {
link.onclick = () => nav.remove();
});
});
}
}
function initializeInteractive() {
// Initialize achievements
initAchievements();
// Optional: Mark one achievement as completed initially for demo (but not too much)
// achievements[0].completed = true; // Commented out to let users engage
// initAchievements();
// Keyboard support for achievement tracker
document.addEventListener('keydown', function(e) {
if (e.key === "/" && document.activeElement.tagName === "BODY") {
e.preventDefault();
const container = document.getElementById('community');
container.scrollIntoView({ behavior: 'smooth' });
}
});
// Add subtle hover animation to game cards
const cards = document.querySelectorAll('.game-card');
cards.forEach(card => {
card.addEventListener('mouseenter', () => {
card.style.transform = 'translateY(-8px)';
});
card.addEventListener('mouseleave', () => {
card.style.transform = 'translateY(0)';
});
});
}
function initializeNavHighlight() {
// Simple scroll spy for nav links
const navLinks = document.querySelectorAll('nav a');
window.addEventListener('scroll', () => {
let current = '';
document.querySelectorAll('section[id]').forEach(section => {
const sectionTop = section.offsetTop;
if (scrollY >= sectionTop - 300) {
current = section.getAttribute('id');
}
});
navLinks.forEach(link => {
link.classList.remove('nav-active');
if (link.getAttribute('href') === `#${current}`) {
link.classList.add('nav-active');
}
});
});
}
// Main initialization
function initializeWebsite() {
initializeTailwind();
initializeMobileMenu();
initializeInteractive();
initializeNavHighlight();
// Demo: Show a welcome toast after some time
setTimeout(() => {
// Only show if the user hasn't interacted yet
const progress = document.getElementById('progress-text');
if (progress && progress.textContent === '42%') {
// Do nothing - keep clean
}
}, 11000);
// Accessibility note: Add aria labels where needed
console.log('%c[AetherForge] Production-quality gaming homepage initialized successfully.', 'color:#64748b');
}
// Boot the website
window.onload = function() {
initializeWebsite();
// Bonus: Random achievement hint for immersion
setTimeout(() => {
const tracker = document.getElementById('achievements-list');
if (tracker) {
tracker.addEventListener('click', function once() {
tracker.removeEventListener('click', once);
}, { once: true });
}
}, 2000);
}
// Expose some functions for potential future use (production ready)
window.AetherForge = {
resetAchievements: () => resetAchievements(),
joinDiscord: () => joinDiscord(),
showJoin: () => showJoinModal()
};
</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:43:23.343Z",
"url": "https://benchmark.aimac.invalid/7feb2f443d2ef5e4a42ca1e633ebe41390d12acc8b7201efb78031a15dad291e.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-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": []
},
{
"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-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": []
},
{
"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-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": []
},
{
"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": "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": []
},
{
"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": []
},
{
"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": "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": []
},
{
"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": "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": []
},
{
"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": "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": []
},
{
"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": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-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 class=\"bg-slate-950 text-slate-200\">",
"target": [
"body"
]
}
]
},
{
"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": "<html lang=\"en\" style=\"--accent: #6366f1;\">",
"target": [
"html"
]
}
]
},
{
"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 onclick=\"joinDiscord()\" class=\"hidden sm:flex items-center gap-x-2 px-4 py-2 text-sm font-semibold bg-slate-800 hover:bg-slate-700 transition-colors rounded-xl border border-slate-700\">",
"target": [
".sm\\:flex"
]
}
]
},
{
"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=\"font-display text-6xl lg:text-7xl leading-[1.05] tracking-tighter font-bold\">\n FORGE YOUR<br> \n <span class=\"gaming-gradient\">LEGEND</span>\n </h1>",
"target": [
"h1"
]
},
{
"html": "<h2 class=\"section-header tracking-tighter\">Gaming Hardware</h2>",
"target": [
".mb-9 > div > h2"
]
},
{
"html": "<h4 class=\"font-semibold text-xl\">Aether Ultra 27</h4>",
"target": [
".game-card.overflow-hidden.rounded-3xl:nth-child(1) > .p-5 > .mb-3.justify-between.items-center > h4"
]
},
{
"html": "<h4 class=\"font-semibold text-xl\">Vortex 75 Pro</h4>",
"target": [
".game-card.overflow-hidden.rounded-3xl:nth-child(2) > .p-5 > .mb-3.justify-between.items-center > h4"
]
},
{
"html": "<h4 class=\"font-semibold text-xl\">Phantom X1</h4>",
"target": [
".game-card.overflow-hidden.rounded-3xl:nth-child(3) > .p-5 > .mb-3.justify-between.items-center > h4"
]
},
{
"html": "<h2 class=\"section-header tracking-tighter\">Latest Game Reviews</h2>",
"target": [
"#reviews > .md\\:items-end.md\\:justify-between.md\\:flex-row > div > h2"
]
},
{
"html": "<h4 class=\"font-bold text-xl\">Valorant</h4>",
"target": [
".p-1.bg-slate-950.game-card:nth-child(1) > .p-5 > .mt-4:nth-child(2) > .gap-3.items-center.flex > div > h4"
]
},
{
"html": "<h4 class=\"font-bold text-xl\">Apex Legends</h4>",
"target": [
".p-1.bg-slate-950.game-card:nth-child(2) > .p-5 > .mt-4:nth-child(2) > .gap-3.items-center.flex > div > h4"
]
},
{
"html": "<h4 class=\"font-bold text-xl\">League of Legends</h4>",
"target": [
".p-1.bg-slate-950.game-card:nth-child(3) > .p-5 > .mt-4:nth-child(2) > .gap-3.items-center.flex > div > h4"
]
},
{
"html": "<h2 class=\"section-header tracking-tighter\">Esports Arena</h2>",
"target": [
".items-end.mb-8.justify-between > div > h2"
]
},
{
"html": "<h3 class=\"font-bold text-2xl mt-1\">Team Nocturne vs. Eclipse</h3>",
"target": [
".justify-between.items-center.flex > div:nth-child(1) > h3"
]
},
{
"html": "<h4 class=\"font-semibold mb-4 text-sm tracking-wider px-1\">PRO PLAYER HIGHLIGHTS</h4>",
"target": [
"div:nth-child(3) > .mb-4"
]
},
{
"html": "<h4 class=\"font-bold text-sm px-1 mb-4 flex items-center gap-x-2\">\n <i class=\"fas fa-broadcast-tower text-red-400\"></i> \n <span>LIVE SCHEDULE</span>\n </h4>",
"target": [
".top-6 > .mb-4"
]
},
{
"html": "<h2 class=\"section-header tracking-tighter\">Forums & Discussions</h2>",
"target": [
".items-end.mb-6.justify-between > div > h2"
]
},
{
"html": "<h4 class=\"font-bold mb-3\">Community Guidelines</h4>",
"target": [
".p-6.rounded-3xl.bg-slate-900 > .mb-3"
]
},
{
"html": "<h2 class=\"section-header tracking-tighter\">What the community is saying</h2>",
"target": [
".mb-8 > h2"
]
},
{
"html": "<h4 class=\"font-bold text-lg\">Achievement Tracker</h4>",
"target": [
".mb-5 > div:nth-child(1) > .text-lg"
]
},
{
"html": "<h3 class=\"font-bold text-center mb-6 text-xl\">Frequently Asked Questions</h3>",
"target": [
".max-w-3xl > h3"
]
}
],
"impact": "serious",
"message": "Page has a heading"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\" style=\"--accent: #6366f1;\">",
"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": "#e2e8f0",
"bgColor": "#0f172a",
"contrastRatio": 14.48,
"fontSize": "22.5pt (30px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 14.48"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span class=\"font-display text-3xl font-semibold tracking-tighter\">AetherForge</span>",
"target": [
".font-display.text-3xl.tracking-tighter"
]
}
]
},
{
"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\" style=\"--accent: #6366f1;\">",
"target": [
"html"
]
}
]
},
{
"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\" style=\"--accent: #6366f1;\">",
"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\" style=\"--accent: #6366f1;\">",
"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/180x52/1e2937/6366f1?text=AetherForge&font=montserrat\" alt=\"AetherForge logo\" class=\"h-10 w-auto rounded\">",
"target": [
".w-auto"
]
}
]
},
{
"id": "link-name",
"impact": "serious",
"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=\"#esports\" class=\"nav-link font-medium text-slate-300 hover:text-white px-1\">Esports</a>",
"target": [
".nav-link.hover\\:text-white[href$=\"#esports\"]"
]
}
]
},
{
"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/180x52/1e2937/6366f1?text=AetherForge&font=montserrat\" alt=\"AetherForge logo\" class=\"h-10 w-auto rounded\">",
"target": [
".w-auto"
]
}
]
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<summary class=\"flex items-center justify-between py-3 cursor-pointer font-medium text-sm\">\n <span>How do I join a competitive team?</span>\n <i class=\"fas fa-chevron-down group-open:rotate-180 transition\"></i>\n </summary>",
"target": [
"details:nth-child(1) > summary"
]
}
]
},
{
"id": "target-size",
"impact": "serious",
"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-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=\"#esports\" class=\"nav-link font-medium text-slate-300 hover:text-white px-1\">Esports</a>",
"target": [
".nav-link.hover\\:text-white[href$=\"#esports\"]"
]
}
]
}
],
"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": "54.0pt (72px)",
"fontWeight": "bold",
"messageKey": "bgGradient",
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"gaming-gradient\">LEGEND</span>",
"target": [
".gaming-gradient"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"gaming-gradient\">LEGEND</span>",
"target": [
".gaming-gradient"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a background gradient"
}
]
}
],
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e2e8f0",
"bgColor": "#dc2626",
"contrastRatio": 3.91,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"px-3 py-1 rounded-2xl text-xs font-extrabold bg-red-600\">LIVE</span>",
"target": [
".bg-red-600.font-extrabold.px-3"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.91 (foreground color: #e2e8f0, background color: #dc2626, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"px-3 py-1 rounded-2xl text-xs font-extrabold bg-red-600\">LIVE</span>",
"target": [
".bg-red-600.font-extrabold.px-3"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.91 (foreground color: #e2e8f0, background color: #dc2626, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
]
},
{
"id": "link-name",
"impact": "serious",
"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 does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-white\"><i class=\"fab fa-twitter text-lg\"></i></a>",
"target": [
".gap-4.mt-4.flex > .hover\\:text-white[href=\"#\"]:nth-child(1)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
},
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-white\"><i class=\"fab fa-discord text-lg\"></i></a>",
"target": [
".gap-4.mt-4.flex > .hover\\:text-white[href=\"#\"]:nth-child(2)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
},
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-white\"><i class=\"fab fa-twitch text-lg\"></i></a>",
"target": [
".gap-4.mt-4.flex > .hover\\:text-white[href=\"#\"]:nth-child(3)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
},
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-white\"><i class=\"fab fa-instagram text-lg\"></i></a>",
"target": [
".hover\\:text-white[href=\"#\"]:nth-child(4)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
}
]
},
{
"id": "target-size",
"impact": "serious",
"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": 42.3,
"height": 15
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has insufficient size (42.3px by 15px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 21.2,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#community\" class=\"text-slate-400 hover:text-slate-200\">Clans</a>",
"target": [
".hover\\:text-slate-200[href$=\"#community\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 21.2px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#forums\" class=\"text-slate-400 hover:text-slate-200\">Forums</a>",
"target": [
".hover\\:text-slate-200[href$=\"#forums\"]"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size (42.3px by 15px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 21.2px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 31.8,
"height": 15
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has insufficient size (31.8px by 15px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 21.2,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#forums\" class=\"text-slate-400 hover:text-slate-200\">Forums</a>",
"target": [
".hover\\:text-slate-200[href$=\"#forums\"]"
]
},
{
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">Discord</a>",
"target": [
"div:nth-child(3) > .space-y-1\\.5.text-xs > div:nth-child(3) > .hover\\:text-slate-200[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 21.2px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#community\" class=\"text-slate-400 hover:text-slate-200\">Clans</a>",
"target": [
".hover\\:text-slate-200[href$=\"#community\"]"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size (31.8px by 15px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 21.2px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 43.6,
"height": 15
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has insufficient size (43.6px by 15px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 21.6,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#community\" class=\"text-slate-400 hover:text-slate-200\">Clans</a>",
"target": [
".hover\\:text-slate-200[href$=\"#community\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 21.6px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">Discord</a>",
"target": [
"div:nth-child(3) > .space-y-1\\.5.text-xs > div:nth-child(3) > .hover\\:text-slate-200[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size (43.6px by 15px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 21.6px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 52.5,
"height": 15
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has insufficient size (52.5px by 15px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 20.6,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">Careers</a>",
"target": [
"div:nth-child(2) > .hover\\:text-slate-200[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 20.6px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">About Us</a>",
"target": [
"div:nth-child(1) > .hover\\:text-slate-200[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size (52.5px by 15px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 20.6px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 44.7,
"height": 15
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has insufficient size (44.7px by 15px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 20.6,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">About Us</a>",
"target": [
"div:nth-child(1) > .hover\\:text-slate-200[href=\"#\"]"
]
},
{
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">Press</a>",
"target": [
"div:nth-child(4) > .space-y-1\\.5.text-xs > div:nth-child(3) > .hover\\:text-slate-200[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 20.6px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">Careers</a>",
"target": [
"div:nth-child(2) > .hover\\:text-slate-200[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size (44.7px by 15px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 20.6px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 31.7,
"height": 15
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has insufficient size (31.7px by 15px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 20.4,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">Careers</a>",
"target": [
"div:nth-child(2) > .hover\\:text-slate-200[href=\"#\"]"
]
},
{
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">Blog</a>",
"target": [
"div:nth-child(4) > .space-y-1\\.5.text-xs > div:nth-child(4) > .hover\\:text-slate-200[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 20.4px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">Press</a>",
"target": [
"div:nth-child(4) > .space-y-1\\.5.text-xs > div:nth-child(3) > .hover\\:text-slate-200[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size (31.7px by 15px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 20.4px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 25.3,
"height": 15
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has insufficient size (25.3px by 15px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 20.4,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">Press</a>",
"target": [
"div:nth-child(4) > .space-y-1\\.5.text-xs > div:nth-child(3) > .hover\\:text-slate-200[href=\"#\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 20.4px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"text-slate-400 hover:text-slate-200\">Blog</a>",
"target": [
"div:nth-child(4) > .space-y-1\\.5.text-xs > div:nth-child(4) > .hover\\:text-slate-200[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size (25.3px by 15px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 20.4px instead of at least 24px."
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 4581
},
{
"y": 576,
"height": 4581
},
{
"y": 1152,
"height": 4581
},
{
"y": 1728,
"height": 4581
},
{
"y": 2304,
"height": 4581
},
{
"y": 2880,
"height": 4581
},
{
"y": 3456,
"height": 4581
},
{
"y": 3861,
"height": 4581
}
],
"scans": 9,
"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 "Gaming" 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: "Gaming"
- Description: Video games, esports news, game reviews, and online gaming communities.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Gaming" 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: "Esports", "Forums", "Reviews".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Gaming" category. Consider themes similar to: "Gaming Hardware", "Game Reviews", "Player Profiles".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "latency", "meta strategy", "season pass".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Play Free", "Join Discord", "Join Clan".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Gaming" sector. Ideas similar but not limited to: "achievement tracker".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "stream schedule", "trending games", "pro player highlights".
- **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.