NVIDIA Nemotron 3 Ultra – Sports
via BaseTen · Generated
- AIMAC Debt 4.37
- Cost $0.05
- Total Violations 12
- HTML Size 68 KB
- Em Dashes 3
Screenshot
View Live Page
Accessibility Issues Found
12 Serious
-
color-contrast serious 12 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<a href="#" aria-current="page">Home</a>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apex Sports Network: Your premier destination for breaking sports news, live scores, deep-dive analytics, and exclusive team insights. Where every play matters.">
<title>Apex Sports Network | Where Every Play Matters</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;600;700&family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet">
<style>
/* --- CSS Variables & Reset --- */
:root {
--color-bg: #0d1117;
--color-surface: #161b22;
--color-surface-hover: #1f242b;
--color-border: #30363d;
--color-text-primary: #e6edf3;
--color-text-secondary: #8b949e;
--color-accent: #00d4ff; /* Electric Cyan */
--color-accent-dim: rgba(0, 212, 255, 0.15);
--color-accent-hover: #00b8dc;
--color-warning: #ff6b35; /* Vibrant Orange */
--color-success: #3fb950;
--font-heading: 'Oswald', sans-serif;
--font-body: 'Roboto', sans-serif;
--spacing-xs: 0.5rem;
--spacing-sm: 1rem;
--spacing-md: 1.5rem;
--spacing-lg: 3rem;
--spacing-xl: 5rem;
--container-max: 1280px;
--header-height: 72px;
--transition-fast: 150ms ease;
--transition-normal: 250ms ease;
--shadow-card: 0 4px 24px rgba(0,0,0,0.3);
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 12px;
}
@media (prefers-color-scheme: light) {
:root {
--color-bg: #f0f2f5;
--color-surface: #ffffff;
--color-surface-hover: #f6f8fa;
--color-border: #d0d7de;
--color-text-primary: #1f2328;
--color-text-secondary: #57606a;
--color-accent: #0969da;
--color-accent-dim: rgba(9, 105, 218, 0.1);
--color-accent-hover: #0860ca;
--shadow-card: 0 4px 24px rgba(0,0,0,0.08);
}
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; font-size: 16px; }
body { font-family: var(--font-body); background-color: var(--color-bg); color: var(--color-text-primary); line-height: 1.65; -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading); font-weight: 600; line-height: 1.2; color: var(--color-text-primary); text-transform: uppercase; letter-spacing: 0.04em; }
a { color: var(--color-accent); text-decoration: none; transition: color var(--transition-fast); }
a:hover { color: var(--color-accent-hover); text-decoration: underline; }
img { max-width: 100%; height: auto; display: block; border-radius: var(--radius-md); }
ul { list-style: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; color: inherit; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.container { width: 100%; max-width: var(--container-max); margin: 0 auto; padding: 0 var(--spacing-md); }
.section { padding: var(--spacing-xl) 0; }
.section-header { text-align: center; margin-bottom: var(--spacing-lg); }
.section-header .tag { display: inline-block; font-size: 0.875rem; font-weight: 700; color: var(--color-accent); background: var(--color-accent-dim); padding: 0.25rem 0.75rem; border-radius: 100px; margin-bottom: var(--spacing-xs); letter-spacing: 0.1em; }
.section-header h2 { font-size: clamp(2rem, 5vw, 3rem); }
.btn { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.875rem 1.75rem; border-radius: var(--radius-md); font-weight: 600; font-size: 0.95rem; letter-spacing: 0.02em; transition: all var(--transition-fast); text-transform: uppercase; }
.btn-primary { background: var(--color-accent); color: var(--color-bg); border: 2px solid var(--color-accent); }
.btn-primary:hover { background: var(--color-accent-hover); border-color: var(--color-accent-hover); color: var(--color-bg); text-decoration: none; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 212, 255, 0.3); }
.btn-secondary { background: transparent; color: var(--color-text-primary); border: 2px solid var(--color-border); }
.btn-secondary:hover { border-color: var(--color-accent); color: var(--color-accent); text-decoration: none; }
.btn-warning { background: var(--color-warning); color: #fff; border: 2px solid var(--color-warning); }
.btn-warning:hover { background: #e85d2e; border-color: #e85d2e; text-decoration: none; }
/* --- Header & Navigation --- */
.site-header { position: sticky; top: 0; z-index: 1000; height: var(--header-height); background: rgba(13, 17, 23, 0.95); backdrop-filter: blur(12px); border-bottom: 1px solid var(--color-border); }
@media (prefers-color-scheme: light) { .site-header { background: rgba(255, 255, 255, 0.95); } }
.header-inner { display: flex; justify-content: space-between; align-items: center; height: 100%; gap: var(--spacing-md); }
.logo { display: flex; align-items: center; gap: 0.75rem; text-decoration: none; color: var(--color-text-primary); flex-shrink: 0; }
.logo:hover { text-decoration: none; }
.logo-img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; border: 2px solid var(--color-accent); }
.logo-text { display: flex; flex-direction: column; line-height: 1.1; }
.logo-name { font-family: var(--font-heading); font-size: 1.35rem; font-weight: 700; letter-spacing: 0.02em; }
.logo-tagline { font-size: 0.65rem; font-weight: 500; color: var(--color-accent); text-transform: uppercase; letter-spacing: 0.15em; }
.main-nav { display: none; gap: 0.5rem; }
.main-nav a { display: block; padding: 0.6rem 1rem; font-family: var(--font-heading); font-size: 0.9rem; font-weight: 500; color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.05em; border-radius: var(--radius-sm); transition: all var(--transition-fast); white-space: nowrap; }
.main-nav a:hover, .main-nav a[aria-current="page"] { color: var(--color-accent); background: var(--color-accent-dim); text-decoration: none; }
.header-actions { display: flex; align-items: center; gap: var(--spacing-sm); flex-shrink: 0; }
.search-toggle, .menu-toggle { padding: 0.5rem; color: var(--color-text-secondary); border-radius: var(--radius-sm); transition: color var(--transition-fast); }
.search-toggle:hover, .menu-toggle:hover { color: var(--color-text-primary); background: var(--color-surface-hover); }
.search-toggle svg, .menu-toggle svg { width: 24px; height: 24px; }
/* Mobile Menu Overlay */
.mobile-menu-overlay { position: fixed; inset: 0; background: var(--color-bg); z-index: 2000; display: flex; flex-direction: column; padding: var(--spacing-lg); opacity: 0; visibility: hidden; transform: translateX(100%); transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); }
.mobile-menu-overlay.is-open { opacity: 1; visibility: visible; transform: translateX(0); }
.mobile-menu-header { display: flex; justify-content: flex-end; margin-bottom: var(--spacing-lg); }
.mobile-menu-close { padding: 0.5rem; color: var(--color-text-secondary); }
.mobile-menu-close:hover { color: var(--color-text-primary); }
.mobile-nav { display: flex; flex-direction: column; gap: 0.5rem; flex-grow: 1; }
.mobile-nav a { padding: 1rem 1.5rem; font-size: 1.25rem; font-weight: 500; border-radius: var(--radius-md); background: var(--color-surface); border: 1px solid var(--color-border); text-align: center; }
.mobile-nav a:hover { background: var(--color-accent-dim); border-color: var(--color-accent); color: var(--color-accent); }
@media (min-width: 992px) {
.main-nav { display: flex; }
.menu-toggle { display: none; }
.mobile-menu-overlay { display: none; }
}
/* --- Hero Section --- */
.hero { position: relative; padding: calc(var(--spacing-xl) + var(--header-height)) 0 var(--spacing-xl); overflow: hidden; }
.hero::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse 80% 50% at 50% 0%, rgba(0, 212, 255, 0.08), transparent 70%), url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E"); opacity: 0.03; pointer-events: none; z-index: 0; }
.hero-grid { display: grid; grid-template-columns: 1fr; gap: var(--spacing-lg); align-items: start; position: relative; z-index: 1; }
@media (min-width: 992px) { .hero-grid { grid-template-columns: 1.5fr 1fr; } }
.hero-content { padding-top: var(--spacing-md); }
.hero-badge { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.8rem; font-weight: 700; color: var(--color-warning); background: rgba(255, 107, 53, 0.15); padding: 0.35rem 0.75rem; border-radius: 100px; margin-bottom: var(--spacing-md); text-transform: uppercase; letter-spacing: 0.1em; animation: pulse 2s infinite; }
@keyframes pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(255, 107, 53, 0.4); } 50% { box-shadow: 0 0 0 8px rgba(255, 107, 53, 0); } }
.hero h1 { font-size: clamp(2.5rem, 6vw, 4.5rem); line-height: 1.05; margin-bottom: var(--spacing-md); max-width: 14ch; }
.hero h1 span { color: var(--color-accent); }
.hero-lead { font-size: 1.125rem; color: var(--color-text-secondary); max-width: 55ch; margin-bottom: var(--spacing-lg); line-height: 1.7; }
.hero-cta-group { display: flex; flex-wrap: wrap; gap: var(--spacing-sm); margin-bottom: var(--spacing-xl); }
.hero-stats { display: flex; flex-wrap: wrap; gap: var(--spacing-lg); padding-top: var(--spacing-md); border-top: 1px solid var(--color-border); }
.stat-item { display: flex; flex-direction: column; }
.stat-value { font-family: var(--font-heading); font-size: 2rem; font-weight: 700; color: var(--color-accent); line-height: 1; }
.stat-label { font-size: 0.8rem; color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.05em; }
/* Live Match Tracker (Interactive Widget) */
.live-tracker { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--spacing-md); box-shadow: var(--shadow-card); position: sticky; top: calc(var(--header-height) + var(--spacing-md)); }
.tracker-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-md); padding-bottom: var(--spacing-sm); border-bottom: 1px solid var(--color-border); }
.tracker-header h3 { font-size: 1rem; text-transform: uppercase; letter-spacing: 0.05em; }
.live-indicator { display: flex; align-items: center; gap: 0.4rem; font-size: 0.75rem; font-weight: 700; color: var(--color-warning); }
.live-indicator::before { content: ''; width: 8px; height: 8px; background: var(--color-warning); border-radius: 50%; animation: blink 1s infinite; }
@keyframes blink { 50% { opacity: 0.3; } }
.match-card { background: var(--color-bg); border-radius: var(--radius-md); padding: var(--spacing-md); margin-bottom: var(--spacing-sm); transition: transform var(--transition-fast); }
.match-card:last-child { margin-bottom: 0; }
.match-card:hover { transform: translateX(4px); }
.match-meta { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-sm); font-size: 0.8rem; color: var(--color-text-secondary); }
.match-league { background: var(--color-accent-dim); color: var(--color-accent); padding: 0.15rem 0.5rem; border-radius: var(--radius-sm); font-weight: 600; }
.match-teams { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-sm); }
.team { display: flex; align-items: center; gap: 0.75rem; flex: 1; min-width: 0; }
.team-logo { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; flex-shrink: 0; border: 2px solid var(--color-border); background: var(--color-surface); }
.team-info { display: flex; flex-direction: column; min-width: 0; }
.team-name { font-weight: 600; font-size: 0.95rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.team-record { font-size: 0.75rem; color: var(--color-text-secondary); }
.team.score-leader .team-name { color: var(--color-accent); }
.match-score { display: flex; align-items: center; gap: 0.5rem; font-family: var(--font-heading); font-size: 1.5rem; font-weight: 700; color: var(--color-text-primary); flex-shrink: 0; }
.match-status { font-size: 0.75rem; color: var(--color-text-secondary); text-align: right; margin-top: 0.25rem; }
.match-status.live { color: var(--color-warning); font-weight: 600; }
/* --- Content Sections --- */
.content-grid { display: grid; grid-template-columns: 1fr; gap: var(--spacing-lg); }
@media (min-width: 768px) { .content-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1200px) { .content-grid { grid-template-columns: repeat(3, 1fr); } }
.article-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); overflow: hidden; display: flex; flex-direction: column; transition: all var(--transition-normal); }
.article-card:hover { border-color: var(--color-accent); box-shadow: var(--shadow-card); transform: translateY(-4px); }
.article-thumb { aspect-ratio: 16 / 9; overflow: hidden; background: var(--color-border); }
.article-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s ease; }
.article-card:hover .article-thumb img { transform: scale(1.05); }
.article-body { padding: var(--spacing-md); display: flex; flex-direction: column; flex-grow: 1; }
.article-meta { display: flex; gap: var(--spacing-sm); font-size: 0.75rem; color: var(--color-text-secondary); margin-bottom: 0.5rem; flex-wrap: wrap; }
.article-category { color: var(--color-accent); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; }
.article-time { display: flex; align-items: center; gap: 0.25rem; }
.article-body h3 { font-size: 1.2rem; margin-bottom: 0.5rem; line-height: 1.3; text-transform: none; letter-spacing: normal; font-weight: 600; }
.article-body h3 a { color: inherit; }
.article-body h3 a:hover { color: var(--color-accent); text-decoration: none; }
.article-excerpt { font-size: 0.95rem; color: var(--color-text-secondary); line-height: 1.6; flex-grow: 1; margin-bottom: var(--spacing-sm); }
.article-footer { display: flex; justify-content: space-between; align-items: center; padding-top: var(--spacing-sm); border-top: 1px solid var(--color-border); }
.author { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8rem; color: var(--color-text-secondary); }
.author-avatar { width: 28px; height: 28px; border-radius: 50%; object-fit: cover; }
/* Sidebar / Aside */
.page-layout { display: grid; grid-template-columns: 1fr; gap: var(--spacing-lg); }
@media (min-width: 992px) { .page-layout { grid-template-columns: 1fr 320px; } }
.sidebar-widget { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--spacing-md); margin-bottom: var(--spacing-md); }
.sidebar-widget h4 { font-size: 0.95rem; margin-bottom: var(--spacing-md); padding-bottom: var(--spacing-sm); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; gap: 0.5rem; }
.sidebar-widget h4::before { content: ''; width: 6px; height: 6px; background: var(--color-accent); border-radius: 50%; }
.standings-table { width: 100%; font-size: 0.85rem; }
.standings-table thead { color: var(--color-text-secondary); font-weight: 500; text-transform: uppercase; letter-spacing: 0.05em; font-size: 0.7rem; }
.standings-table th, .standings-table td { padding: 0.6rem 0.5rem; text-align: left; border-bottom: 1px solid var(--color-border); }
.standings-table tbody tr:last-child td { border-bottom: none; }
.standings-table tbody tr:hover { background: var(--color-accent-dim); }
.standing-rank { font-family: var(--font-heading); font-weight: 600; color: var(--color-accent); width: 30px; }
.standing-team { display: flex; align-items: center; gap: 0.5rem; font-weight: 500; }
.standing-logo { width: 24px; height: 24px; border-radius: 50%; }
.standing-stats { color: var(--color-text-secondary); text-align: right; font-variant-numeric: tabular-nums; }
.video-item { display: flex; gap: var(--spacing-sm); margin-bottom: var(--spacing-sm); }
.video-item:last-child { margin-bottom: 0; }
.video-thumb { width: 120px; height: 68px; border-radius: var(--radius-sm); object-fit: cover; flex-shrink: 0; position: relative; }
.video-thumb::after { content: '\25B6'; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,0.5); color: white; font-size: 1.5rem; border-radius: var(--radius-sm); pointer-events: none; }
.video-info { flex: 1; min-width: 0; }
.video-title { font-size: 0.85rem; font-weight: 500; line-height: 1.4; margin-bottom: 0.25rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.video-meta { font-size: 0.7rem; color: var(--color-text-secondary); }
/* Newsletter Section */
.newsletter { background: linear-gradient(135deg, var(--color-surface) 0%, var(--color-bg) 100%); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--spacing-xl); text-align: center; position: relative; overflow: hidden; }
.newsletter::before { content: ''; position: absolute; top: -50%; right: -50%; width: 100%; height: 200%; background: radial-gradient(circle, var(--color-accent-dim) 0%, transparent 70%); pointer-events: none; }
.newsletter .section-header { position: relative; z-index: 1; }
.newsletter h2 { max-width: 600px; margin: 0 auto var(--spacing-sm); }
.newsletter p { color: var(--color-text-secondary); max-width: 500px; margin: 0 auto var(--spacing-lg); }
.newsletter-form { display: flex; flex-direction: column; gap: var(--spacing-sm); max-width: 480px; margin: 0 auto; position: relative; z-index: 1; }
@media (min-width: 600px) { .newsletter-form { flex-direction: row; } }
.newsletter-form input { flex: 1; padding: 1rem 1.25rem; border: 1px solid var(--color-border); background: var(--color-bg); color: var(--color-text-primary); border-radius: var(--radius-md); font-size: 1rem; transition: border-color var(--transition-fast), box-shadow var(--transition-fast); }
.newsletter-form input:focus { outline: none; border-color: var(--color-accent); box-shadow: 0 0 0 3px var(--color-accent-dim); }
.newsletter-form button { white-space: nowrap; padding: 1rem 2rem; }
.newsletter-trust { font-size: 0.75rem; color: var(--color-text-secondary); margin-top: var(--spacing-sm); display: block; }
/* Testimonials */
.testimonial-grid { display: grid; grid-template-columns: 1fr; gap: var(--spacing-md); }
@media (min-width: 768px) { .testimonial-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .testimonial-grid { grid-template-columns: repeat(3, 1fr); } }
.testimonial-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--spacing-lg); display: flex; flex-direction: column; }
.testimonial-quote { font-size: 1.05rem; line-height: 1.7; color: var(--color-text-primary); margin-bottom: var(--spacing-md); flex-grow: 1; position: relative; padding-left: var(--spacing-md); border-left: 3px solid var(--color-accent); }
.testimonial-author { display: flex; align-items: center; gap: 0.75rem; }
.testimonial-avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; border: 2px solid var(--color-border); }
.testimonial-name { font-weight: 600; font-size: 0.95rem; }
.testimonial-role { font-size: 0.8rem; color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.05em; }
/* Footer */
.site-footer { background: var(--color-surface); border-top: 1px solid var(--color-border); padding: var(--spacing-xl) 0 var(--spacing-lg); margin-top: var(--spacing-xl); }
.footer-grid { display: grid; grid-template-columns: 1fr; gap: var(--spacing-lg); text-align: center; }
@media (min-width: 600px) { .footer-grid { grid-template-columns: repeat(2, 1fr); text-align: left; } }
@media (min-width: 992px) { .footer-grid { grid-template-columns: 2fr repeat(3, 1fr); } }
.footer-brand .logo { justify-content: center; margin-bottom: var(--spacing-sm); }
@media (min-width: 600px) { .footer-brand .logo { justify-content: flex-start; } }
.footer-brand p { color: var(--color-text-secondary); font-size: 0.9rem; max-width: 300px; margin: 0 auto; }
@media (min-width: 600px) { .footer-brand p { margin: 0; } }
.footer-nav h5 { font-size: 0.85rem; font-weight: 600; color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: var(--spacing-sm); }
.footer-nav ul { display: flex; flex-direction: column; gap: 0.5rem; }
.footer-nav a { color: var(--color-text-secondary); font-size: 0.9rem; transition: color var(--transition-fast); }
.footer-nav a:hover { color: var(--color-accent); text-decoration: none; }
.footer-social { display: flex; gap: var(--spacing-sm); margin-top: var(--spacing-md); }
.footer-social a { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--color-border); display: flex; align-items: center; justify-content: center; color: var(--color-text-secondary); transition: all var(--transition-fast); }
.footer-social a:hover { border-color: var(--color-accent); color: var(--color-accent); background: var(--color-accent-dim); text-decoration: none; }
.footer-bottom { margin-top: var(--spacing-xl); padding-top: var(--spacing-lg); border-top: 1px solid var(--color-border); display: flex; flex-direction: column; align-items: center; gap: var(--spacing-sm); font-size: 0.8rem; color: var(--color-text-secondary); text-align: center; }
@media (min-width: 600px) { .footer-bottom { flex-direction: row; justify-content: space-between; } }
.footer-legal { display: flex; gap: var(--spacing-md); }
.footer-legal a { color: inherit; }
/* Utility */
.divider { height: 1px; background: linear-gradient(90deg, transparent, var(--color-border), transparent); margin: var(--spacing-xl) 0; }
</style>
</head>
<body>
<!-- Header -->
<header class="site-header" role="banner">
<div class="container header-inner">
<a href="#" class="logo" aria-label="Apex Sports Network Home">
<img src="https://placehold.co/80x80/0d1117/00d4ff?text=ASN&font=oswald" alt="" class="logo-img" aria-hidden="true">
<div class="logo-text">
<span class="logo-name">Apex Sports</span>
<span class="logo-tagline">Where Every Play Matters</span>
</div>
</a>
<nav class="main-nav" role="navigation" aria-label="Main navigation">
<a href="#" aria-current="page">Home</a>
<a href="#">Teams</a>
<a href="#">Stats</a>
<a href="#">News</a>
<a href="#">Schedule</a>
<a href="#">Fantasy</a>
<a href="#">Shop</a>
</nav>
<div class="header-actions">
<button class="search-toggle" aria-label="Open search" aria-expanded="false">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg>
</button>
<button class="menu-toggle" aria-label="Open menu" aria-expanded="false" aria-controls="mobile-menu">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg>
</button>
</div>
</div>
</header>
<!-- Mobile Menu Overlay -->
<div class="mobile-menu-overlay" id="mobile-menu" role="dialog" aria-modal="true" aria-label="Main menu">
<div class="mobile-menu-header">
<button class="mobile-menu-close" aria-label="Close menu">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
</button>
</div>
<nav class="mobile-nav" role="navigation">
<a href="#" aria-current="page">Home</a>
<a href="#">Teams</a>
<a href="#">Stats</a>
<a href="#">News</a>
<a href="#">Schedule</a>
<a href="#">Fantasy</a>
<a href="#">Shop</a>
</nav>
</div>
<main id="main-content" role="main">
<!-- Hero Section -->
<section class="hero" aria-labelledby="hero-title">
<div class="container">
<div class="hero-grid">
<div class="hero-content">
<span class="hero-badge" aria-live="polite">Live Now • Conference Finals Game 6</span>
<h1 id="hero-title">Titans <span>Clinch Series</span> in Overtime Thriller</h1>
<p class="hero-lead">Marcus Henderson dropped 42 points including the game-winning buzzer-beater as the Metro Titans overturned a 14-point deficit to eliminate the defending champions. Read the full breakdown of the tactical adjustments that shifted the momentum.</p>
<div class="hero-cta-group">
<a href="#" class="btn btn-primary">Read Full Recap</a>
<a href="#" class="btn btn-secondary">Watch Highlights</a>
</div>
<div class="hero-stats" role="list" aria-label="Key game statistics">
<div class="stat-item" role="listitem">
<span class="stat-value">42</span>
<span class="stat-label">Points (Henderson)</span>
</div>
<div class="stat-item" role="listitem">
<span class="stat-value">14</span>
<span class="stat-label">Point Comeback</span>
</div>
<div class="stat-item" role="listitem">
<span class="stat-value">3.2s</span>
<span class="stat-label">Time Remaining</span>
</div>
<div class="stat-item" role="listitem">
<span class="stat-value">118-115</span>
<span class="stat-label">Final Score</span>
</div>
</div>
</div>
<!-- Interactive Live Tracker Widget -->
<aside class="live-tracker" aria-label="Live match tracker">
<div class="tracker-header">
<h3>Live Scoreboard</h3>
<span class="live-indicator" aria-live="polite">Live</span>
</div>
<div id="match-tracker-container">
<!-- Matches injected by JS -->
</div>
<div style="text-align: center; margin-top: var(--spacing-md);">
<a href="#" class="btn btn-secondary" style="width: 100%; justify-content: center;">View All Scores</a>
</div>
</aside>
</div>
</div>
</section>
<!-- Main Content Layout -->
<div class="container page-layout">
<div class="main-content">
<!-- Featured Analysis Section -->
<section class="section" aria-labelledby="analysis-heading">
<header class="section-header">
<span class="tag">Deep Dive Analysis</span>
<h2 id="analysis-heading">Expert Breakdowns & Strategy</h2>
</header>
<div class="content-grid">
<!-- Article 1 -->
<article class="article-card">
<div class="article-thumb">
<img src="https://picsum.photos/seed/tactical-analysis/600/338" alt="Coach drawing plays on a digital whiteboard" loading="lazy">
</div>
<div class="article-body">
<div class="article-meta">
<span class="article-category">Tactics</span>
<time class="article-time" datetime="2024-05-20T14:30:00Z">2 hours ago</time>
</div>
<h3><a href="#">The Pick-and-Roll Evolution: How Metro Exploited Drop Coverage</a></h3>
<p class="article-excerpt">Senior analyst Jordan Webb dissects the specific schematic wrinkles Coach Miller implemented at halftime. By shifting the ball-screen angle to the "Spain" action, the Titans forced the defense into 2-on-1 rotations that collapsed the paint, opening kick-out lanes for perimeter shooters who finished 14-of-22 from deep in the second half.</p>
<div class="article-footer">
<div class="author">
<img src="https://i.pravatar.cc/56?u=jordanwebb" alt="" class="author-avatar" aria-hidden="true">
<span>Jordan Webb</span>
</div>
<span>8 min read</span>
</div>
</div>
</article>
<!-- Article 2 -->
<article class="article-card">
<div class="article-thumb">
<img src="https://picsum.photos/seed/player-stats/600/338" alt="Player statistics dashboard on tablet" loading="lazy">
</div>
<div class="article-body">
<div class="article-meta">
<span class="article-category">Analytics</span>
<time class="article-time" datetime="2024-05-20T10:15:00Z">6 hours ago</time>
</div>
<h3><a href="#">Beyond the Box Score: Henderson's Gravity Metric Off Charts</a></h3>
<p class="article-excerpt">Traditional stats tell only half the story. Our proprietary "Off-Ball Gravity Index" shows Henderson commanded 2.3 defenders per possession off-ball — the highest mark recorded in the playoffs this decade. This defensive attention created a cascading effect, generating high-percentage looks for role players who capitalized on closeout situations.</p>
<div class="article-footer">
<div class="author">
<img src="https://i.pravatar.cc/56?u=sarahchen" alt="" class="author-avatar" aria-hidden="true">
<span>Sarah Chen</span>
</div>
<span>12 min read</span>
</div>
</div>
</article>
<!-- Article 3 -->
<article class="article-card">
<div class="article-thumb">
<img src="https://picsum.photos/seed/contract-talk/600/338" alt="Agent and player shaking hands over contract" loading="lazy">
</div>
<div class="article-body">
<div class="article-meta">
<span class="article-category">Business</span>
<time class="article-time" datetime="2024-05-19T18:00:00Z">Yesterday</time>
</div>
<h3><a href="#">Contract Extension Looms: Franchise Tag vs. Supermax Implications</a></h3>
<p class="article-excerpt">With the July 1st deadline approaching, the Titans' front office faces a $215M decision. We break down the salary cap ramifications of a Designated Veteran Player Extension versus the risk of letting Henderson reach unrestricted free agency. Includes projected luxury tax penalties and roster construction scenarios for the next three seasons.</p>
<div class="article-footer">
<div class="author">
<img src="https://i.pravatar.cc/56?u=marcusfinance" alt="" class="author-avatar" aria-hidden="true">
<span>Marcus Thorne</span>
</div>
<span>15 min read</span>
</div>
</div>
</article>
</div>
</section>
<hr class="divider" aria-hidden="true">
<!-- Team Hub / Standings Section -->
<section class="section" aria-labelledby="teams-heading">
<header class="section-header">
<span class="tag">League Pulse</span>
<h2 id="teams-heading">Standings & Team Updates</h2>
</header>
<div class="content-grid" style="grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));">
<!-- Eastern Conference -->
<div class="sidebar-widget" style="margin-bottom: 0; height: 100%;">
<h4>Eastern Conference Finals</h4>
<table class="standings-table" role="table" aria-label="Eastern Conference Standings">
<thead>
<tr><th scope="col">#</th><th scope="col">Team</th><th scope="col" class="standing-stats">W-L</th><th scope="col" class="standing-stats">GB</th><th scope="col" class="standing-stats">STRK</th></tr>
</thead>
<tbody>
<tr><td class="standing-rank">1</td><td class="standing-team"><img src="https://placehold.co/24x24/002B5C/FFFFFF?text=MT&font=oswald" alt="" class="standing-logo"> Metro Titans <span style="font-size:0.7rem;color:var(--color-success);font-weight:600;">★</span></td><td class="standing-stats">58-24</td><td class="standing-stats">—</td><td class="standing-stats" style="color:var(--color-success)">W4</td></tr>
<tr><td class="standing-rank">2</td><td class="standing-team"><img src="https://placehold.co/24x24/006BB6/FFFFFF?text=BC&font=oswald" alt="" class="standing-logo"> Boston Celtics</td><td class="standing-stats">55-27</td><td class="standing-stats">3.0</td><td class="standing-stats" style="color:var(--color-warning)">L1</td></tr>
<tr><td class="standing-rank">3</td><td class="standing-team"><img src="https://placehold.co/24x24/002D62/FFB81C?text=MIA&font=oswald" alt="" class="standing-logo"> Miami Heat</td><td class="standing-stats">51-31</td><td class="standing-stats">7.0</td><td class="standing-stats" style="color:var(--color-success)">W2</td></tr>
<tr><td class="standing-rank">4</td><td class="standing-team"><img src="https://placehold.co/24x24/0F586C/E03A3E?text=PHI&font=oswald" alt="" class="standing-logo"> Philadelphia 76ers</td><td class="standing-stats">49-33</td><td class="standing-stats">9.0</td><td class="standing-stats">L2</td></tr>
<tr><td class="standing-rank">5</td><td class="standing-team"><img src="https://placehold.co/24x24/007A33/F04D23?text=NYK&font=oswald" alt="" class="standing-logo"> New York Knicks</td><td class="standing-stats">47-35</td><td class="standing-stats">11.0</td><td class="standing-stats" style="color:var(--color-success)">W1</td></tr>
</tbody>
</table>
</div>
<!-- Western Conference -->
<div class="sidebar-widget" style="margin-bottom: 0; height: 100%;">
<h4>Western Conference Finals</h4>
<table class="standings-table" role="table" aria-label="Western Conference Standings">
<thead>
<tr><th scope="col">#</th><th scope="col">Team</th><th scope="col" class="standing-stats">W-L</th><th scope="col" class="standing-stats">GB</th><th scope="col" class="standing-stats">STRK</th></tr>
</thead>
<tbody>
<tr><td class="standing-rank">1</td><td class="standing-team"><img src="https://placehold.co/24x24/552583/FDB927?text=LAL&font=oswald" alt="" class="standing-logo"> LA Lakers</td><td class="standing-stats">56-26</td><td class="standing-stats">—</td><td class="standing-stats" style="color:var(--color-success)">W3</td></tr>
<tr><td class="standing-rank">2</td><td class="standing-team"><img src="https://placehold.co/24x24/002B5C/FEFEFC?text=DEN&font=oswald" alt="" class="standing-logo"> Denver Nuggets <span style="font-size:0.7rem;color:var(--color-warning);font-weight:600;">★</span></td><td class="standing-stats">53-29</td><td class="standing-stats">3.0</td><td class="standing-stats" style="color:var(--color-warning)">L2</td></tr>
<tr><td class="standing-rank">3</td><td class="standing-team"><img src="https://placehold.co/24x24/00471B/FDB927?text=MIN&font=oswald" alt="" class="standing-logo"> Minnesota Timberwolves</td><td class="standing-stats">52-30</td><td class="standing-stats">4.0</td><td class="standing-stats" style="color:var(--color-success)">W5</td></tr>
<tr><td class="standing-rank">4</td><td class="standing-team"><img src="https://placehold.co/24x24/002B5C/FFFFFF?text=OKC&font=oswald" alt="" class="standing-logo"> OKC Thunder</td><td class="standing-stats">50-32</td><td class="standing-stats">6.0</td><td class="standing-stats">L1</td></tr>
<tr><td class="standing-rank">5</td><td class="standing-team"><img src="https://placehold.co/24x24/002D5C/FFFFFF?text=DAL&font=oswald" alt="" class="standing-logo"> Dallas Mavericks</td><td class="standing-stats">48-34</td><td class="standing-stats">8.0</td><td class="standing-stats" style="color:var(--color-success)">W2</td></tr>
</tbody>
</table>
</div>
</div>
</section>
<hr class="divider" aria-hidden="true">
<!-- Video Highlights Section -->
<section class="section" aria-labelledby="video-heading">
<div style="display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: var(--spacing-lg); flex-wrap: wrap; gap: var(--spacing-sm);">
<header class="section-header" style="text-align: left; margin-bottom: 0;">
<span class="tag">Video Hub</span>
<h2 id="video-heading">Game Highlights & Shows</h2>
</header>
<a href="#" class="btn btn-secondary">All Videos</a>
</div>
<div class="content-grid" style="grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
<article class="article-card" style="flex-direction: row; max-width: none;">
<div class="article-thumb" style="width: 320px; min-width: 320px; aspect-ratio: 16/9; flex-shrink: 0; border-radius: 0; border-top-left-radius: var(--radius-lg); border-bottom-left-radius: var(--radius-lg); position: relative;">
<img src="https://picsum.photos/seed/highlight-1/640/360" alt="Henderson game winner replay" loading="lazy">
<div style="position:absolute; bottom:10px; right:10px; background:rgba(0,0,0,0.8); color:white; padding:0.2rem 0.5rem; border-radius:var(--radius-sm); font-size:0.75rem; font-family:var(--font-heading);">2:14</div>
</div>
<div class="article-body" style="justify-content: center;">
<div class="article-meta"><span class="article-category">Highlights</span><time class="article-time" datetime="2024-05-20T22:00:00Z">Just Now</time></div>
<h3 style="font-size: 1.3rem;"><a href="#">Henderson's Buzzer-Beater Sends Titans to Finals</a></h3>
<p class="article-excerpt">Watch every angle of the series-clinching shot, including the bench reaction and the defensive breakdown that left Henderson open at the elbow.</p>
</div>
</article>
<article class="article-card" style="flex-direction: row; max-width: none;">
<div class="article-thumb" style="width: 320px; min-width: 320px; aspect-ratio: 16/9; flex-shrink: 0; border-radius: 0; border-top-left-radius: var(--radius-lg); border-bottom-left-radius: var(--radius-lg); position: relative;">
<img src="https://picsum.photos/seed/highlight-2/640/360" alt="Post game press conference" loading="lazy">
<div style="position:absolute; bottom:10px; right:10px; background:rgba(0,0,0,0.8); color:white; padding:0.2rem 0.5rem; border-radius:var(--radius-sm); font-size:0.75rem; font-family:var(--font-heading);">14:32</div>
</div>
<div class="article-body" style="justify-content: center;">
<div class="article-meta"><span class="article-category">Press Conference</span><time class="article-time" datetime="2024-05-20T23:15:00Z">1 hour ago</time></div>
<h3 style="font-size: 1.3rem;"><a href="#">Coach Miller: "We Trust Our Process"</a></h3>
<p class="article-excerpt">Full post-game availability. Miller discusses the halftime adjustment to "Ice" the pick-and-roll and the resilience of the locker room after trailing by double digits.</p>
</div>
</article>
</div>
</section>
</div>
<!-- Sidebar / Aside -->
<aside class="sidebar" aria-label="Sidebar widgets">
<!-- Trending Now -->
<div class="sidebar-widget">
<h4>Trending Now</h4>
<div style="display: flex; flex-direction: column; gap: var(--spacing-sm);">
<a href="#" style="display: flex; gap: var(--spacing-sm); padding: var(--spacing-xs) 0; border-bottom: 1px solid var(--color-border); text-decoration: none; color: var(--color-text-primary); transition: color var(--transition-fast);">
<span style="font-family: var(--font-heading); font-size: 1.5rem; font-weight: 700; color: var(--color-accent); line-height: 1; flex-shrink: 0; width: 30px; text-align: center;">1</span>
<div style="min-width: 0;">
<span style="font-weight: 500; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">Henderson Signs Historic Supermax Extension</span>
<span style="font-size: 0.8rem; color: var(--color-text-secondary);">Breaking News • 15m ago</span>
</div>
</a>
<a href="#" style="display: flex; gap: var(--spacing-sm); padding: var(--spacing-xs) 0; border-bottom: 1px solid var(--color-border); text-decoration: none; color: var(--color-text-primary);">
<span style="font-family: var(--font-heading); font-size: 1.5rem; font-weight: 700; color: var(--color-accent); line-height: 1; flex-shrink: 0; width: 30px; text-align: center;">2</span>
<div style="min-width: 0;">
<span style="font-weight: 500; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">Fantasy Playoff Waiver Wire Targets: Week 3</span>
<span style="font-size: 0.8rem; color: var(--color-text-secondary);">Fantasy • 1h ago</span>
</div>
</a>
<a href="#" style="display: flex; gap: var(--spacing-sm); padding: var(--spacing-xs) 0; border-bottom: 1px solid var(--color-border); text-decoration: none; color: var(--color-text-primary);">
<span style="font-family: var(--font-heading); font-size: 1.5rem; font-weight: 700; color: var(--color-accent); line-height: 1; flex-shrink: 0; width: 30px; text-align: center;">3</span>
<div style="min-width: 0;">
<span style="font-weight: 500; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">Draft Combine: Top 10 Prospect Measurements</span>
<span style="font-size: 0.8rem; color: var(--color-text-secondary);">Draft • 3h ago</span>
</div>
</a>
<a href="#" style="display: flex; gap: var(--spacing-sm); padding: var(--spacing-xs) 0; text-decoration: none; color: var(--color-text-primary);">
<span style="font-family: var(--font-heading); font-size: 1.5rem; font-weight: 700; color: var(--color-accent); line-height: 1; flex-shrink: 0; width: 30px; text-align: center;">4</span>
<div style="min-width: 0;">
<span style="font-weight: 500; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">Injury Report: Star PG Questionable for Game 1</span>
<span style="font-size: 0.8rem; color: var(--color-text-secondary);">Injuries • 5h ago</span>
</div>
</a>
</div>
</div>
<!-- Video Highlights Sidebar -->
<div class="sidebar-widget">
<h4>Latest Video Highlights</h4>
<div class="video-item">
<img src="https://picsum.photos/seed/sidebar-vid-1/240/135" alt="Top 10 Plays" class="video-thumb" aria-hidden="true">
<div class="video-info">
<h5 class="video-title"><a href="#" style="color: inherit;">Top 10 Plays: Conference Finals Edition</a></h5>
<div class="video-meta">Apex Daily • 45 min ago • 2.1M views</div>
</div>
</div>
<div class="video-item">
<img src="https://picsum.photos/seed/sidebar-vid-2/240/135" alt="Film Room" class="video-thumb" aria-hidden="true">
<div class="video-info">
<h5 class="video-title"><a href="#" style="color: inherit;">Film Room: The "Ghost" Screen Action</a></h5>
<div class="video-meta">X's & O's • 2 hours ago • 340K views</div>
</div>
</div>
<div class="video-item">
<img src="https://picsum.photos/seed/sidebar-vid-3/240/135" alt="Player Interview" class="video-thumb" aria-hidden="true">
<div class="video-info">
<h5 class="video-title"><a href="#" style="color: inherit;">One-on-One: Rookie Sensation J. Alvarez</a></h5>
<div class="video-meta">The Locker Room • 5 hours ago • 180K views</div>
</div>
</div>
</div>
<!-- Newsletter Sidebar CTA -->
<div class="sidebar-widget" style="background: linear-gradient(135deg, var(--color-accent-dim), transparent); border-color: var(--color-accent); text-align: center;">
<h4 style="border-color: var(--color-accent);">Daily Newsletter</h4>
<p style="font-size: 0.9rem; color: var(--color-text-secondary); margin-bottom: var(--spacing-md);">Get the morning box scores, injury reports, and trade rumors delivered to your inbox by 7 AM ET.</p>
<form class="newsletter-form" style="max-width: 100%; flex-direction: column;" action="#" method="POST">
<input type="email" placeholder="Enter email address" required aria-label="Email address for newsletter">
<button type="submit" class="btn btn-primary" style="width: 100%; justify-content: center;">Subscribe Free</button>
</form>
<p class="newsletter-trust">No spam. Unsubscribe anytime. <a href="#" style="color: var(--color-accent);">Privacy Policy</a></p>
</div>
</aside>
</div>
<!-- Testimonials / Community Section -->
<section class="section" style="background: var(--color-surface); border-top: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border);" aria-labelledby="testimonial-heading">
<div class="container">
<header class="section-header">
<span class="tag">Trusted by Pros</span>
<h2 id="testimonial-heading">What the Insiders Say</h2>
</header>
<div class="testimonial-grid">
<blockquote class="testimonial-card">
<p class="testimonial-quote">"Apex is the only platform that merges real-time sports analytics with journalistic integrity. Their gravity metrics have changed how our scouting department evaluates perimeter defenders."</p>
<footer class="testimonial-author">
<img src="https://i.pravatar.cc/96?u=gm_director" alt="" class="testimonial-avatar" aria-hidden="true">
<div>
<div class="testimonial-name">Elena Rodriguez</div>
<div class="testimonial-role">Director of Scouting, Metro Titans</div>
</div>
</footer>
</blockquote>
<blockquote class="testimonial-card">
<p class="testimonial-quote">"The contract projection models are uncannily accurate. I've used Apex data in three separate arbitration hearings and won favorable rulings based on their comparable player analysis."</p>
<footer class="testimonial-author">
<img src="https://i.pravatar.cc/96?u=agent_smith" alt="" class="testimonial-avatar" aria-hidden="true">
<div>
<div class="testimonial-name">David "Dave" Miller</div>
<div class="testimonial-role">Certified NBA Player Agent</div>
</div>
</footer>
</blockquote>
<blockquote class="testimonial-card">
<p class="testimonial-quote">"As a beat reporter, the live tracker is indispensable. The play-by-play latency is sub-second, and the advanced stat overlays (EPV, P&R frequency) give me context instantly for live tweets."</p>
<footer class="testimonial-author">
<img src="https://i.pravatar.cc/96?u=reporter_jane" alt="" class="testimonial-avatar" aria-hidden="true">
<div>
<div class="testimonial-name">Jane Doe</div>
<div class="testimonial-role">Senior NBA Writer, The Athletic</div>
</div>
</footer>
</blockquote>
</div>
</div>
</section>
<!-- Newsletter Main CTA -->
<section class="section" aria-labelledby="newsletter-heading">
<div class="container">
<div class="newsletter" aria-labelledby="newsletter-heading">
<header class="section-header">
<span class="tag">Join the Club</span>
<h2 id="newsletter-heading">Don't Miss a Play</h2>
<p>Join 2.4M+ subscribers getting the sharpest analysis, breaking trade alerts, and fantasy advice delivered daily.</p>
</header>
<form class="newsletter-form" action="#" method="POST">
<input type="email" placeholder="your@email.com" required aria-label="Email address for daily newsletter">
<button type="submit" class="btn btn-primary">Subscribe Now</button>
</form>
<span class="newsletter-trust">We respect your inbox. Zero spam. <a href="#">Privacy Policy</a> · <a href="#">Terms of Service</a></span>
</div>
</div>
</section>
</main>
<!-- Footer -->
<footer class="site-footer" role="contentinfo">
<div class="container">
<div class="footer-grid">
<div class="footer-brand">
<a href="#" class="logo" aria-label="Apex Sports Network Home">
<img src="https://placehold.co/80x80/0d1117/00d4ff?text=ASN&font=oswald" alt="" class="logo-img" aria-hidden="true">
<div class="logo-text">
<span class="logo-name">Apex Sports</span>
<span class="logo-tagline">Where Every Play Matters</span>
</div>
</a>
<p>Premier sports journalism, advanced analytics, and real-time coverage for the modern fan. Independent. Unbiased. Obsessed with the game.</p>
<div class="footer-social" style="justify-content: center; margin-top: var(--spacing-md);">
<a href="#" aria-label="Twitter/X"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg></a>
<a href="#" aria-label="Instagram"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line></svg></a>
<a href="#" aria-label="YouTube"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg></a>
<a href="#" aria-label="Discord"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.675 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.083.083 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 4.748.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.007-.128 10.07 10.07 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.774 1.364 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-4.748.077.077 0 0 0 .032-.054c.388-4.098-.588-8.652-3.548-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/></svg></a>
</div>
</div>
<nav class="footer-nav" aria-label="Footer navigation - Content">
<h5>Content</h5>
<ul>
<li><a href="#">News</a></li>
<li><a href="#">Analysis</a></li>
<li><a href="#">Video</a></li>
<li><a href="#">Podcasts</a></li>
<li><a href="#">Features</a></li>
</ul>
</nav>
<nav class="footer-nav" aria-label="Footer navigation - Data">
<h5>Data & Tools</h5>
<ul>
<li><a href="#">Live Scores</a></li>
<li><a href="#">Player Stats</a></li>
<li><a href="#">Team Standings</a></li>
<li><a href="#">Trade Machine</a></li>
<li><a href="#">Fantasy Tools</a></li>
</ul>
</nav>
<nav class="footer-nav" aria-label="Footer navigation - Company">
<h5>Company</h5>
<ul>
<li><a href="#">About Us</a></li>
<li><a href="#">Careers</a></li>
<li><a href="#">Press</a></li>
<li><a href="#">Advertise</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</div>
<div class="footer-bottom">
<p>© 2024 Apex Sports Network. All rights reserved.</p>
<div class="footer-legal">
<a href="#">Privacy Policy</a>
<a href="#">Terms of Service</a>
<a href="#">Cookie Settings</a>
<a href="#">Accessibility</a>
</div>
</div>
</div>
</footer>
<script>
// --- Global State & Utilities ---
const state = {
matches: [
{ id: 1, league: 'NBA FINALS', home: { name: 'Metro Titans', logo: 'https://placehold.co/40x40/002B5C/FFFFFF?text=MT&font=oswald', score: 118, record: '58-24', leader: true }, away: { name: 'Boston Celtics', logo: 'https://placehold.co/40x40/006BB6/FFFFFF?text=BC&font=oswald', score: 115, record: '55-27', leader: false }, status: 'Final/OT', time: 'Final', live: false },
{ id: 2, league: 'WNBA', home: { name: 'Las Vegas Aces', logo: 'https://placehold.co/40x40/000000/FFFFFF?text=LV&font=oswald', score: 89, record: '12-2', leader: true }, away: { name: 'NY Liberty', logo: 'https://placehold.co/40x40/00529B/FFFFFF?text=NYL&font=oswald', score: 82, record: '11-3', leader: false }, status: 'Live', time: '4th Q 3:14', live: true },
{ id: 3, league: 'MLB', home: { name: 'LA Dodgers', logo: 'https://placehold.co/40x40/005A9C/FFFFFF?text=LAD&font=oswald', score: 5, record: '38-22', leader: true }, away: { name: 'SF Giants', logo: 'https://placehold.co/40x40/FD5A1E/FFFFFF?text=SF&font=oswald', score: 3, record: '30-30', leader: false }, status: 'Live', time: 'Bot 7th', live: true },
{ id: 4, league: 'NHL', home: { name: 'Edmonton Oilers', logo: 'https://placehold.co/40x40/041E42/FFB81C?text=EDM&font=oswald', score: 3, record: '49-27', leader: true }, away: { name: 'Florida Panthers', logo: 'https://placehold.co/40x40/041E42/C8102E?text=FLA&font=oswald', score: 2, record: '47-29', leader: false }, status: 'Final', time: 'Final', live: false },
],
trackerContainer: document.getElementById('match-tracker-container'),
updateInterval: null
};
// --- Render Live Tracker ---
function renderTracker() {
if (!state.trackerContainer) return;
state.trackerContainer.innerHTML = state.matches.map(match => `
<article class="match-card" data-match-id="${match.id}">
<div class="match-meta">
<span class="match-league">${match.league}</span>
<span class="match-status ${match.live ? 'live' : ''}" aria-live="${match.live ? 'polite' : 'off'}">${match.time}</span>
</div>
<div class="match-teams">
<div class="team ${match.home.leader ? 'score-leader' : ''}">
<img src="${match.home.logo}" alt="" class="team-logo" aria-hidden="true">
<div class="team-info">
<span class="team-name">${match.home.name}</span>
<span class="team-record">${match.home.record}</span>
</div>
</div>
<div class="match-score" aria-label="Score ${match.home.score} to ${match.away.score}">
<span>${match.home.score}</span>
<span style="color: var(--color-text-secondary);">-</span>
<span>${match.away.score}</span>
</div>
<div class="team ${match.away.leader ? 'score-leader' : ''}" style="flex-direction: row-reverse; text-align: right;">
<div class="team-info">
<span class="team-name">${match.away.name}</span>
<span class="team-record">${match.away.record}</span>
</div>
<img src="${match.away.logo}" alt="" class="team-logo" aria-hidden="true">
</div>
</div>
</article>
`).join('');
}
// --- Simulate Live Updates ---
function simulateLiveUpdates() {
// Update scores randomly for live games every 5-10 seconds
state.updateInterval = setInterval(() => {
let changed = false;
state.matches.forEach(match => {
if (match.live && Math.random() > 0.7) {
// Randomly increment score for one team
if (Math.random() > 0.5) match.home.score++;
else match.away.score++;
// Update leader class
match.home.leader = match.home.score >= match.away.score;
match.away.leader = match.away.score > match.home.score;
changed = true;
}
// Occasionally flip live status
if (Math.random() > 0.99) {
match.live = !match.live;
match.status = match.live ? 'Live' : 'Final';
match.time = match.live ? '4th Q 2:00' : 'Final';
changed = true;
}
});
if (changed) renderTracker();
}, 7000);
}
// --- Mobile Menu Toggle ---
const menuToggle = document.querySelector('.menu-toggle');
const mobileMenu = document.getElementById('mobile-menu');
const mobileClose = document.querySelector('.mobile-menu-close');
function openMenu() {
mobileMenu.classList.add('is-open');
menuToggle.setAttribute('aria-expanded', 'true');
document.body.style.overflow = 'hidden';
mobileClose.focus();
}
function closeMenu() {
mobileMenu.classList.remove('is-open');
menuToggle.setAttribute('aria-expanded', 'false');
document.body.style.overflow = '';
menuToggle.focus();
}
menuToggle.addEventListener('click', openMenu);
mobileClose.addEventListener('click', closeMenu);
mobileMenu.querySelectorAll('a').forEach(link => link.addEventListener('click', closeMenu));
// Close on Escape
document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && mobileMenu.classList.contains('is-open')) closeMenu(); });
// Close on overlay click
mobileMenu.addEventListener('click', (e) => { if (e.target === mobileMenu) closeMenu(); });
// --- Search Toggle (Placeholder) ---
document.querySelector('.search-toggle').addEventListener('click', () => {
alert('Search modal would open here. Implementation depends on search provider (Algolia, Meilisearch, etc).');
});
// --- Newsletter Form Handling (Demo) ---
document.querySelectorAll('.newsletter-form').forEach(form => {
form.addEventListener('submit', (e) => {
e.preventDefault();
const input = form.querySelector('input[type="email"]');
if (input.value && input.checkValidity()) {
const btn = form.querySelector('button[type="submit"]');
const originalText = btn.innerHTML;
btn.innerHTML = 'Subscribed! <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>';
btn.style.background = 'var(--color-success)';
btn.style.borderColor = 'var(--color-success)';
input.value = '';
setTimeout(() => {
btn.innerHTML = originalText;
btn.style.background = '';
btn.style.borderColor = '';
}, 3000);
}
});
});
// --- Intersection Observer for Scroll Animations ---
const animatedElements = document.querySelectorAll('.article-card, .testimonial-card, .sidebar-widget, .hero-content > *:not(.hero-stats)');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
observer.unobserve(entry.target);
}
});
}, { threshold: 0.1, rootMargin: '0px 0px -50px 0px' });
// Initialize animation styles
animatedElements.forEach(el => {
el.style.opacity = '0';
el.style.transform = 'translateY(20px)';
el.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
observer.observe(el);
});
// Hero content immediate
document.querySelectorAll('.hero-content > *').forEach((el, i) => {
el.style.opacity = '0';
el.style.transform = 'translateY(20px)';
el.style.transition = `opacity 0.8s ease ${i * 100}ms, transform 0.8s ease ${i * 100}ms`;
// Force reflow then animate
requestAnimationFrame(() => {
el.style.opacity = '1';
el.style.transform = 'translateY(0)';
});
});
// --- Initialization ---
document.addEventListener('DOMContentLoaded', () => {
renderTracker();
simulateLiveUpdates();
// Cleanup on unload
window.addEventListener('beforeunload', () => {
clearInterval(state.updateInterval);
});
});
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T09:42:51.142Z",
"url": "https://benchmark.aimac.invalid/7c9ace95b5872486a190cb4368a1806aec566736246d1ac19363ddf909e86d63.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-allowed-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attributes are used correctly for the defined role"
}
],
"none": [
{
"id": "aria-unsupported-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute is supported"
}
],
"impact": null,
"html": "<a href=\"#\" class=\"logo\" aria-label=\"Apex Sports Network Home\">",
"target": [
".header-inner > .logo[aria-label=\"Apex Sports Network Home\"]"
]
}
]
},
{
"id": "aria-conditional-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are used as described in the specification of the element's role",
"help": "ARIA attributes must be used as specified for the element's role",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-conditional-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"logo\" aria-label=\"Apex Sports Network Home\">",
"target": [
".header-inner > .logo[aria-label=\"Apex Sports Network Home\"]"
]
}
]
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "deprecatedrole",
"data": null,
"relatedNodes": [],
"impact": "minor",
"message": "ARIA role is not deprecated"
}
],
"impact": null,
"html": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "focusable-modal-open",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements while a modal is open"
},
{
"id": "focusable-disabled",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements contained within element"
},
{
"id": "focusable-not-tabbable",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements contained within element"
}
],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/80x80/0d1117/00d4ff?text=ASN&font=oswald\" alt=\"\" class=\"logo-img\" aria-hidden=\"true\">",
"target": [
".header-inner > .logo[aria-label=\"Apex Sports Network Home\"] > .logo-img[aria-hidden=\"true\"][alt=\"\"]"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": "serious",
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<a href=\"#\" class=\"logo\" aria-label=\"Apex Sports Network Home\">",
"target": [
".header-inner > .logo[aria-label=\"Apex Sports Network Home\"]"
]
}
]
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-required-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "All required ARIA attributes are present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
}
]
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-required-children",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Required ARIA children are present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"hero-stats\" role=\"list\" aria-label=\"Key game statistics\" style=\"opacity: 1; transform: translateY(0px); transition: opacity 0.8s 400ms, transform 0.8s 400ms;\">",
"target": [
".hero-stats"
]
}
]
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-required-parent",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Required ARIA parent role present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"stat-item\" role=\"listitem\">\n <span class=\"stat-value\">42</span>\n <span class=\"stat-label\">Points (Henderson)</span>\n </div>",
"target": [
".stat-item[role=\"listitem\"]:nth-child(1)"
]
}
]
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "invalidrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA role is valid"
},
{
"id": "abstractrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Abstract roles are not used"
},
{
"id": "unsupportedrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA role is supported"
}
],
"impact": null,
"html": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
}
]
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-valid-attr-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute values are valid"
},
{
"id": "aria-errormessage",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
},
{
"id": "aria-level",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-level values are valid"
}
],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"logo\" aria-label=\"Apex Sports Network Home\">",
"target": [
".header-inner > .logo[aria-label=\"Apex Sports Network Home\"]"
]
}
]
},
{
"id": "aria-valid-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure attributes that begin with aria- are valid ARIA attributes",
"help": "ARIA attributes must conform to valid names",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-valid-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute name is valid"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"logo\" aria-label=\"Apex Sports Network Home\">",
"target": [
".header-inner > .logo[aria-label=\"Apex Sports Network Home\"]"
]
}
]
},
{
"id": "avoid-inline-spacing",
"impact": null,
"tags": [
"cat.structure",
"wcag21aa",
"wcag1412",
"EN-301-549",
"EN-9.1.4.12",
"ACT"
],
"description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
"help": "Inline text spacing must be adjustable with custom stylesheets",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "important-letter-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-word-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-line-height",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "line-height in the style attribute is not set to !important, or meets the minimum"
}
],
"none": [],
"impact": null,
"html": "<span class=\"hero-badge\" aria-live=\"polite\" style=\"opacity: 1; transform: translateY(0px); transition: opacity 0.8s, transform 0.8s;\">Live Now \u2022 Conference Finals Game 6</span>",
"target": [
".hero-badge"
]
}
]
},
{
"id": "button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure buttons have discernible text",
"help": "Buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute exists and is not empty"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"search-toggle\" aria-label=\"Open search\" aria-expanded=\"false\">",
"target": [
".search-toggle"
]
}
]
},
{
"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": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1 id=\"hero-title\" style=\"opacity: 1; transform: translateY(0px); transition: opacity 0.8s 100ms, transform 0.8s 100ms;\">Titans <span>Clinch Series</span> in Overtime Thriller</h1>",
"target": [
"#hero-title"
]
},
{
"html": "<h3>Live Scoreboard</h3>",
"target": [
".tracker-header > h3"
]
},
{
"html": "<h2 id=\"analysis-heading\">Expert Breakdowns & Strategy</h2>",
"target": [
"#analysis-heading"
]
},
{
"html": "<h3><a href=\"#\">The Pick-and-Roll Evolution: How Metro Exploited Drop Coverage</a></h3>",
"target": [
"section[aria-labelledby=\"analysis-heading\"] > .content-grid > .article-card:nth-child(1) > .article-body > h3"
]
},
{
"html": "<h3><a href=\"#\">Beyond the Box Score: Henderson's Gravity Metric Off Charts</a></h3>",
"target": [
"section[aria-labelledby=\"analysis-heading\"] > .content-grid > .article-card:nth-child(2) > .article-body > h3"
]
},
{
"html": "<h3><a href=\"#\">Contract Extension Looms: Franchise Tag vs. Supermax Implications</a></h3>",
"target": [
".article-card:nth-child(3) > .article-body > h3"
]
},
{
"html": "<h2 id=\"teams-heading\">Standings & Team Updates</h2>",
"target": [
"#teams-heading"
]
},
{
"html": "<h4>Eastern Conference Finals</h4>",
"target": [
".content-grid > .sidebar-widget:nth-child(1) > h4"
]
},
{
"html": "<h4>Western Conference Finals</h4>",
"target": [
".content-grid > .sidebar-widget:nth-child(2) > h4"
]
},
{
"html": "<h2 id=\"video-heading\">Game Highlights & Shows</h2>",
"target": [
"#video-heading"
]
},
{
"html": "<h3 style=\"font-size: 1.3rem;\"><a href=\"#\">Henderson's Buzzer-Beater Sends Titans to Finals</a></h3>",
"target": [
"section[aria-labelledby=\"video-heading\"] > .content-grid > .article-card:nth-child(1) > .article-body > h3"
]
},
{
"html": "<h3 style=\"font-size: 1.3rem;\"><a href=\"#\">Coach Miller: \"We Trust Our Process\"</a></h3>",
"target": [
"section[aria-labelledby=\"video-heading\"] > .content-grid > .article-card:nth-child(2) > .article-body > h3"
]
},
{
"html": "<h4>Trending Now</h4>",
"target": [
".sidebar > .sidebar-widget:nth-child(1) > h4"
]
},
{
"html": "<h4>Latest Video Highlights</h4>",
"target": [
".sidebar > .sidebar-widget:nth-child(2) > h4"
]
},
{
"html": "<h5 class=\"video-title\"><a href=\"#\" style=\"color: inherit;\">Top 10 Plays: Conference Finals Edition</a></h5>",
"target": [
".video-item:nth-child(2) > .video-info > .video-title"
]
},
{
"html": "<h5 class=\"video-title\"><a href=\"#\" style=\"color: inherit;\">Film Room: The \"Ghost\" Screen Action</a></h5>",
"target": [
".video-item:nth-child(3) > .video-info > .video-title"
]
},
{
"html": "<h5 class=\"video-title\"><a href=\"#\" style=\"color: inherit;\">One-on-One: Rookie Sensation J. Alvarez</a></h5>",
"target": [
".video-item:nth-child(4) > .video-info > .video-title"
]
},
{
"html": "<h4 style=\"border-color: var(--color-accent);\">Daily Newsletter</h4>",
"target": [
".sidebar-widget:nth-child(3) > h4"
]
},
{
"html": "<h2 id=\"testimonial-heading\">What the Insiders Say</h2>",
"target": [
"#testimonial-heading"
]
},
{
"html": "<h2 id=\"newsletter-heading\">Don't Miss a Play</h2>",
"target": [
"#newsletter-heading"
]
},
{
"html": "<h5>Content</h5>",
"target": [
"nav[aria-label=\"Footer navigation - Content\"] > h5"
]
},
{
"html": "<h5>Data & Tools</h5>",
"target": [
"nav[aria-label=\"Footer navigation - Data\"] > h5"
]
},
{
"html": "<h5>Company</h5>",
"target": [
"nav[aria-label=\"Footer navigation - Company\"] > h5"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main id=\"main-content\" role=\"main\">",
"target": [
"#main-content"
]
}
],
"impact": "serious",
"message": "Page has a landmark region"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#1f2328",
"bgColor": "#fefeff",
"contrastRatio": 15.67,
"fontSize": "16.2pt (21.6px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 15.67"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span class=\"logo-name\">Apex Sports</span>",
"target": [
".header-inner > .logo[aria-label=\"Apex Sports Network Home\"] > .logo-text > .logo-name"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "duplicate-id-aria",
"data": "mobile-menu",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"mobile-menu-overlay\" id=\"mobile-menu\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Main menu\">",
"target": [
"#mobile-menu"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input type=\"email\" placeholder=\"Enter email address\" required=\"\" aria-label=\"Email address for newsletter\">",
"target": [
"input[placeholder=\"Enter email address\"]"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://picsum.photos/seed/tactical-analysis/600/338\" alt=\"Coach drawing plays on a digital whiteboard\" loading=\"lazy\">",
"target": [
"section[aria-labelledby=\"analysis-heading\"] > .content-grid > .article-card:nth-child(1) > .article-thumb > img[loading=\"lazy\"]"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute exists and is not empty"
},
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"email\" placeholder=\"Enter email address\" required=\"\" aria-label=\"Email address for newsletter\">",
"target": [
"input[placeholder=\"Enter email address\"]"
]
}
]
},
{
"id": "link-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute exists and is not empty"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a href=\"#\" class=\"logo\" aria-label=\"Apex Sports Network Home\">",
"target": [
".header-inner > .logo[aria-label=\"Apex Sports Network Home\"]"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul>\n <li><a href=\"#\">News</a></li>\n <li><a href=\"#\">Analysis</a></li>\n <li><a href=\"#\">Video</a></li>\n <li><a href=\"#\">Podcasts</a></li>\n <li><a href=\"#\">Features</a></li>\n </ul>",
"target": [
"nav[aria-label=\"Footer navigation - Content\"] > ul"
]
}
]
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "listitem",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List item has a <ul>, <ol> or role=\"list\" parent element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<li><a href=\"#\">News</a></li>",
"target": [
"nav[aria-label=\"Footer navigation - Content\"] > ul > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"search-toggle\" aria-label=\"Open search\" aria-expanded=\"false\">",
"target": [
".search-toggle"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 235.1,
"height": 40
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (235.1px by 40px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"logo\" aria-label=\"Apex Sports Network Home\">",
"target": [
".header-inner > .logo[aria-label=\"Apex Sports Network Home\"]"
]
}
]
},
{
"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": [
{
"any": [],
"all": [
{
"id": "td-headers-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The headers attribute is exclusively used to refer to other cells in the table"
}
],
"none": [],
"impact": null,
"html": "<table class=\"standings-table\" role=\"table\" aria-label=\"Eastern Conference Standings\">",
"target": [
"table[aria-label=\"Eastern Conference Standings\"]"
]
}
]
},
{
"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": [
{
"any": [],
"all": [
{
"id": "th-has-data-cells",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "All table header cells refer to data cells"
}
],
"none": [],
"impact": null,
"html": "<table class=\"standings-table\" role=\"table\" aria-label=\"Eastern Conference Standings\">",
"target": [
"table[aria-label=\"Eastern Conference Standings\"]"
]
}
]
}
],
"incomplete": [
{
"id": "aria-prohibited-attr",
"impact": "serious",
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": {
"role": null,
"nodeName": "div",
"messageKey": "noRoleSingular",
"prohibited": [
"aria-label"
]
},
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute is not well supported on a div with no valid role attribute."
}
],
"impact": "serious",
"html": "<div class=\"match-score\" aria-label=\"Score 118 to 115\">\n <span>118</span>\n <span style=\"color: var(--color-text-secondary);\">-</span>\n <span>115</span>\n </div>",
"target": [
"div[aria-label=\"Score 118 to 115\"]"
],
"failureSummary": "Fix all of the following:\n aria-label attribute is not well supported on a div with no valid role attribute."
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fontSize": "9.6pt (12.8px)",
"fontWeight": "bold",
"messageKey": "pseudoContent",
"expectedContrastRatio": "4.5:1"
},
"relatedNodes": [
{
"html": "<section class=\"hero\" aria-labelledby=\"hero-title\">",
"target": [
".hero"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a pseudo element"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"hero-badge\" aria-live=\"polite\" style=\"opacity: 1; transform: translateY(0px); transition: opacity 0.8s, transform 0.8s;\">Live Now \u2022 Conference Finals Game 6</span>",
"target": [
".hero-badge"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a pseudo element"
}
]
},
{
"id": "link-in-text-block",
"impact": "serious",
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "link-in-text-block",
"data": {
"messageKey": "bgGradient"
},
"relatedNodes": [
{
"html": "<span class=\"newsletter-trust\">We respect your inbox. Zero spam. <a href=\"#\">Privacy Policy</a> \u00b7 <a href=\"#\">Terms of Service</a></span>",
"target": [
".newsletter > .newsletter-trust"
]
}
],
"impact": "serious",
"message": "Element's contrast ratio could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\">Privacy Policy</a>",
"target": [
".newsletter > .newsletter-trust > a:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element's contrast ratio could not be determined due to a background gradient"
}
]
}
],
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#0969da",
"bgColor": "#e5effb",
"contrastRatio": 4.46,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#\" aria-current=\"page\">Home</a>",
"target": [
".main-nav > a[aria-current=\"page\"]"
]
},
{
"html": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.46 (foreground color: #0969da, background color: #e5effb, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" aria-current=\"page\">Home</a>",
"target": [
".main-nav > a[aria-current=\"page\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.46 (foreground color: #0969da, background color: #e5effb, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#0969da",
"bgColor": "#d9e4f2",
"contrastRatio": 4.03,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"tag\">Deep Dive Analysis</span>",
"target": [
"section[aria-labelledby=\"analysis-heading\"] > .section-header > .tag"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.03 (foreground color: #0969da, background color: #d9e4f2, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Deep Dive Analysis</span>",
"target": [
"section[aria-labelledby=\"analysis-heading\"] > .section-header > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.03 (foreground color: #0969da, background color: #d9e4f2, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#0969da",
"bgColor": "#d9e4f2",
"contrastRatio": 4.03,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"tag\">League Pulse</span>",
"target": [
"section[aria-labelledby=\"teams-heading\"] > .section-header > .tag"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.03 (foreground color: #0969da, background color: #d9e4f2, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">League Pulse</span>",
"target": [
"section[aria-labelledby=\"teams-heading\"] > .section-header > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.03 (foreground color: #0969da, background color: #d9e4f2, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#0969da",
"bgColor": "#d9e4f2",
"contrastRatio": 4.03,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"tag\">Video Hub</span>",
"target": [
"section[aria-labelledby=\"video-heading\"] > div:nth-child(1) > .section-header > .tag"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.03 (foreground color: #0969da, background color: #d9e4f2, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Video Hub</span>",
"target": [
"section[aria-labelledby=\"video-heading\"] > div:nth-child(1) > .section-header > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.03 (foreground color: #0969da, background color: #d9e4f2, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#3fb950",
"bgColor": "#ffffff",
"contrastRatio": 2.54,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget\" style=\"margin-bottom: 0px; height: 100%; opacity: 1; transform: translateY(0px); transition: opacity 0.6s, transform 0.6s;\">",
"target": [
".content-grid > .sidebar-widget:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td class=\"standing-stats\" style=\"color:var(--color-success)\">W4</td>",
"target": [
"table[aria-label=\"Eastern Conference Standings\"] > tbody > tr:nth-child(1) > .standing-stats:nth-child(5)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ff6b35",
"bgColor": "#ffffff",
"contrastRatio": 2.83,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget\" style=\"margin-bottom: 0px; height: 100%; opacity: 1; transform: translateY(0px); transition: opacity 0.6s, transform 0.6s;\">",
"target": [
".content-grid > .sidebar-widget:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.83 (foreground color: #ff6b35, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td class=\"standing-stats\" style=\"color:var(--color-warning)\">L1</td>",
"target": [
"table[aria-label=\"Eastern Conference Standings\"] > tbody > tr:nth-child(2) > .standing-stats:nth-child(5)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.83 (foreground color: #ff6b35, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#3fb950",
"bgColor": "#ffffff",
"contrastRatio": 2.54,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget\" style=\"margin-bottom: 0px; height: 100%; opacity: 1; transform: translateY(0px); transition: opacity 0.6s, transform 0.6s;\">",
"target": [
".content-grid > .sidebar-widget:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td class=\"standing-stats\" style=\"color:var(--color-success)\">W2</td>",
"target": [
"table[aria-label=\"Eastern Conference Standings\"] > tbody > tr:nth-child(3) > .standing-stats:nth-child(5)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#3fb950",
"bgColor": "#ffffff",
"contrastRatio": 2.54,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget\" style=\"margin-bottom: 0px; height: 100%; opacity: 1; transform: translateY(0px); transition: opacity 0.6s, transform 0.6s;\">",
"target": [
".content-grid > .sidebar-widget:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td class=\"standing-stats\" style=\"color:var(--color-success)\">W1</td>",
"target": [
"table[aria-label=\"Eastern Conference Standings\"] > tbody > tr:nth-child(5) > .standing-stats:nth-child(5)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#3fb950",
"bgColor": "#ffffff",
"contrastRatio": 2.54,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget\" style=\"margin-bottom: 0px; height: 100%; opacity: 1; transform: translateY(0px); transition: opacity 0.6s, transform 0.6s;\">",
"target": [
".content-grid > .sidebar-widget:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td class=\"standing-stats\" style=\"color:var(--color-success)\">W3</td>",
"target": [
"table[aria-label=\"Western Conference Standings\"] > tbody > tr:nth-child(1) > .standing-stats:nth-child(5)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ff6b35",
"bgColor": "#ffffff",
"contrastRatio": 2.83,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget\" style=\"margin-bottom: 0px; height: 100%; opacity: 1; transform: translateY(0px); transition: opacity 0.6s, transform 0.6s;\">",
"target": [
".content-grid > .sidebar-widget:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.83 (foreground color: #ff6b35, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td class=\"standing-stats\" style=\"color:var(--color-warning)\">L2</td>",
"target": [
"table[aria-label=\"Western Conference Standings\"] > tbody > tr:nth-child(2) > .standing-stats:nth-child(5)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.83 (foreground color: #ff6b35, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#3fb950",
"bgColor": "#ffffff",
"contrastRatio": 2.54,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget\" style=\"margin-bottom: 0px; height: 100%; opacity: 1; transform: translateY(0px); transition: opacity 0.6s, transform 0.6s;\">",
"target": [
".content-grid > .sidebar-widget:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td class=\"standing-stats\" style=\"color:var(--color-success)\">W5</td>",
"target": [
"table[aria-label=\"Western Conference Standings\"] > tbody > tr:nth-child(3) > .standing-stats:nth-child(5)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#3fb950",
"bgColor": "#ffffff",
"contrastRatio": 2.54,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget\" style=\"margin-bottom: 0px; height: 100%; opacity: 1; transform: translateY(0px); transition: opacity 0.6s, transform 0.6s;\">",
"target": [
".content-grid > .sidebar-widget:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td class=\"standing-stats\" style=\"color:var(--color-success)\">W2</td>",
"target": [
"table[aria-label=\"Western Conference Standings\"] > tbody > tr:nth-child(5) > .standing-stats:nth-child(5)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.54 (foreground color: #3fb950, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 6074
},
{
"y": 576,
"height": 6074
},
{
"y": 1152,
"height": 6074
},
{
"y": 1728,
"height": 6074
},
{
"y": 2304,
"height": 6074
},
{
"y": 2880,
"height": 6074
},
{
"y": 3456,
"height": 6074
},
{
"y": 4032,
"height": 6074
},
{
"y": 4608,
"height": 6074
},
{
"y": 5184,
"height": 6074
},
{
"y": 5354,
"height": 6074
}
],
"scans": 12,
"max_states": 512,
"settle_ms": 5000,
"page_timeout_seconds": 150,
"layout_stability": "consecutive 100ms size samples within one CSS pixel",
"animation_settling": "finite animations present when scroll resources are ready finish or are cancelled",
"interactive_states": "not exercised",
"horizontal_scroll": "not exercised"
}
}
System Prompt
You are a lead web developer at a top digital agency, tasked with creating a one-page website for a new client based on the given specifications, delivered as an HTML file. First non-whitespace char '<', last non-whitespace char '>'. Use the following services to generate placeholder images where needed:
- placehold.co (text): https://placehold.co/[{w}x{h}|{size}][/{bg-color}/{text-color}]?text={text}&font=[lato|lora|montserrat|noto sans|open sans|oswald|playfair display|poppins|pt sans|raleway|roboto|source sans|source sans pro]
- picsum.photos (photos): https://picsum.photos/[{w}/{h}|{size}]?[grayscale][&blur={1-10}]
- pravatar.cc (avatars): https://i.pravatar.cc/{size}?u={identifier}
Choose sizes appropriate to layout.
User Prompt
Create a **complete, polished, production-quality** primary web page for a new client in the "Sports" 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: "Sports"
- Description: Sports news, team updates, scores, events, and athletic resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Sports" 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: "Teams", "Stats", "News".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Sports" category. Consider themes similar to: "Highlights", "Live Scores", "Team News".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "contract extension", "sports analytics", "player statistics".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Shop Gear", "Join Fan Club", "Watch Game".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Sports" sector. Ideas similar but not limited to: "ticket finder".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "league standings", "game highlights", "photo galleries".
- **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.