Qwen Qwen3.8 2.4T A95B – Gaming
via Modal · Generated
- AIMAC Debt 6.51
- Cost $0.29
- Total Violations 114
- HTML Size 90 KB
- Em Dashes 72
Screenshot
View Live Page
Accessibility Issues Found
114 Serious
-
color-contrast serious 114 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<em>YOUR DAILY SPAWN POINT</em>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FRAGSOURCE — Your Daily Spawn Point | Esports News, Reviews & Community</title>
<meta name="description" content="FRAGSOURCE is an independent gaming publication covering esports, game reviews, patch intelligence, indie spotlights and online gaming communities.">
<link rel="icon" href="https://placehold.co/32x32/c8ff1f/080b0f?text=FS&font=montserrat">
<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=Unbounded:wght@500;700;900&family=Space+Grotesk:wght@400;500;700&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
<style>
:root{
--bg:#080b0f; --bg2:#0c1117; --panel:#10161e; --panel2:#141d28;
--line:#202b38; --line2:#2d3c4d;
--txt:#e7edf4; --mut:#8fa0b3; --dim:#5b6b7d;
--volt:#c8ff1f; --volt2:#9ecb0e; --mag:#ff4d6d; --cyan:#4fd8ff;
--disp:'Unbounded',sans-serif; --body:'Space Grotesk',sans-serif; --mono:'JetBrains Mono',monospace;
--clip:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--txt);font-family:var(--body);font-size:16px;line-height:1.65;overflow-x:hidden}
::selection{background:var(--volt);color:#080b0f}
::-webkit-scrollbar{width:10px}
::-webkit-scrollbar-track{background:var(--bg2)}
::-webkit-scrollbar-thumb{background:var(--line2);border:2px solid var(--bg2)}
::-webkit-scrollbar-thumb:hover{background:var(--volt)}
img{display:block;max-width:100%}
a{color:inherit}
button{font-family:inherit;cursor:pointer}
h1,h2,h3{font-family:var(--disp);line-height:1.12;letter-spacing:-.01em}
:focus-visible{outline:2px solid var(--volt);outline-offset:3px}
.mono{font-family:var(--mono)}
.container{max-width:1340px;margin-inline:auto;padding-inline:clamp(16px,4vw,34px)}
.skip{position:absolute;left:-999px;top:0;background:var(--volt);color:#080b0f;padding:10px 18px;z-index:300;font-family:var(--mono);font-size:12px}
.skip:focus{left:12px;top:12px}
/* ---------- grain overlay ---------- */
body::before{content:"";position:fixed;inset:0;z-index:250;pointer-events:none;opacity:.05;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E")}
/* ---------- reveals ---------- */
.js .rv{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s)}
.js .rv.on{opacity:1;transform:none}
.mask{overflow:hidden}
.js .mask .mask-in{display:block;transform:translateY(115%);transition:transform .9s cubic-bezier(.19,.8,.22,1);transition-delay:var(--d,0s)}
.js .mask.on .mask-in{transform:none}
/* ---------- ticker ---------- */
.ticker{background:#05070a;border-bottom:1px solid var(--line);overflow:hidden;height:38px;display:flex;align-items:center}
.ticker-track{display:flex;width:max-content;animation:tick 42s linear infinite}
.ticker-group{display:flex;align-items:center;gap:0}
.ticker span{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--mut);white-space:nowrap;padding:0 26px;text-transform:uppercase}
.ticker span b{color:var(--volt);font-weight:700}
.ticker span.hot b{color:var(--mag)}
.ticker span::after{content:"◆";color:var(--line2);margin-left:26px;font-size:8px}
@keyframes tick{to{transform:translateX(-50%)}}
/* ---------- header ---------- */
.site-head{position:sticky;top:0;z-index:200;background:rgba(8,11,15,.94);border-bottom:1px solid var(--line);backdrop-filter:blur(6px)}
.head-grid{display:flex;align-items:center;gap:28px;height:74px}
.brand{display:flex;align-items:center;gap:13px;text-decoration:none;flex-shrink:0}
.brand img{width:42px;height:42px;clip-path:polygon(0 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%)}
.brand-txt strong{display:block;font-family:var(--disp);font-weight:900;font-size:19px;letter-spacing:.02em}
.brand-txt strong i{font-style:normal;color:var(--volt)}
.brand-txt em{display:block;font-style:normal;font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:var(--dim);margin-top:2px}
.nav{display:flex;gap:4px;margin-left:auto}
.nav a{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:var(--mut);padding:10px 13px;position:relative;transition:color .25s}
.nav a::after{content:"";position:absolute;left:13px;right:13px;bottom:4px;height:2px;background:var(--volt);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.nav a:hover{color:var(--txt)}
.nav a:hover::after{transform:scaleX(1)}
.head-right{display:flex;align-items:center;gap:14px}
.burger{display:none;background:none;border:1px solid var(--line2);width:44px;height:44px;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.burger span{display:block;width:20px;height:2px;background:var(--txt);transition:.3s}
.nav-open .burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-open .burger span:nth-child(2){opacity:0}
.nav-open .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:10px;background:var(--volt);color:#0a0d10;font-family:var(--mono);font-weight:700;font-size:12px;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;padding:16px 24px;border:0;clip-path:var(--clip);transition:background .25s,transform .25s,box-shadow .25s}
.btn:hover{background:#fff;transform:translateY(-2px)}
.btn.small{padding:12px 18px;font-size:11px}
.btn.ghost{background:transparent;color:var(--volt);box-shadow:inset 0 0 0 1px var(--volt)}
.btn.ghost:hover{background:var(--volt);color:#0a0d10;box-shadow:inset 0 0 0 1px var(--volt)}
.btn.dark{background:#0a0d10;color:var(--volt)}
.btn.dark:hover{background:#1a2330}
/* ---------- chips / badges ---------- */
.chip{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:6px 11px;border:1px solid var(--line2);color:var(--mut);background:rgba(8,11,15,.7)}
.chip.volt{color:var(--volt);border-color:var(--volt)}
.chip.mag{color:var(--mag);border-color:var(--mag)}
.chip.cyan{color:var(--cyan);border-color:var(--cyan)}
.tag{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.12em;padding:4px 9px;text-transform:uppercase}
.tag.buff{background:rgba(200,255,31,.12);color:var(--volt);border:1px solid rgba(200,255,31,.4)}
.tag.nerf{background:rgba(255,77,109,.1);color:var(--mag);border:1px solid rgba(255,77,109,.4)}
.tag.fix{background:rgba(79,216,255,.1);color:var(--cyan);border:1px solid rgba(79,216,255,.4)}
.tag.map{background:rgba(231,237,244,.07);color:var(--txt);border:1px solid var(--line2)}
.tag.new{background:var(--volt);color:#0a0d10;border:1px solid var(--volt)}
.dot{width:8px;height:8px;background:var(--mag);border-radius:50%;flex-shrink:0;animation:pulse 1.6s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(255,77,109,.55)}70%{box-shadow:0 0 0 9px transparent}100%{box-shadow:0 0 0 0 transparent}}
/* ---------- section scaffolding ---------- */
.section{padding:clamp(56px,8vw,100px) 0;border-top:1px solid var(--line)}
.sec-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:clamp(28px,4vw,48px);padding-bottom:20px;border-bottom:1px solid var(--line)}
.kicker{font-family:var(--mono);font-size:11px;letter-spacing:.24em;color:var(--volt);text-transform:uppercase;display:block;margin-bottom:12px}
.sec-head h2{font-size:clamp(1.5rem,3.4vw,2.6rem);font-weight:900;text-transform:uppercase}
.sec-note{font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.1em;max-width:300px;text-align:right}
.sec-intro{max-width:640px;color:var(--mut);margin:-16px 0 38px;font-size:17px}
/* ---------- hero ---------- */
.hero{padding:clamp(40px,6vw,76px) 0 clamp(40px,6vw,70px)}
.hero-grid{display:grid;grid-template-columns:1.04fr .96fr;gap:clamp(30px,4vw,60px);align-items:center}
.hero h1{font-size:clamp(2.1rem,4.6vw,3.9rem);font-weight:900;text-transform:uppercase;margin:16px 0 22px;min-height:2.2em}
.hero h1 i{font-style:normal;color:var(--volt)}
.lede{color:var(--mut);font-size:clamp(16px,1.4vw,18px);max-width:56ch;margin-bottom:30px}
.lede b{color:var(--txt)}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:34px}
.hud-stats{list-style:none;display:flex;flex-wrap:wrap;gap:10px 26px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--dim);text-transform:uppercase}
.hud-stats b{color:var(--txt);font-weight:700}
.hud-stats .volt{color:var(--volt)}
.hero-media{position:relative;clip-path:var(--clip);border:1px solid var(--line2);background:var(--panel)}
.hero-media .imgwrap{overflow:hidden;position:relative}
.hero-media img{width:100%;height:clamp(340px,40vw,520px);object-fit:cover}
.kb img{animation:kb 18s ease-in-out infinite alternate}
@keyframes kb{from{transform:scale(1)}to{transform:scale(1.09) translate(1.6%,-1.4%)}}
.scanlines::after{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.22) 2px 3px)}
.hud-frame::before,.hud-frame::after{content:"";position:absolute;width:26px;height:26px;border:2px solid var(--volt);z-index:3}
.hud-frame::before{top:12px;left:12px;border-right:0;border-bottom:0}
.hud-frame::after{bottom:12px;right:12px;border-left:0;border-top:0}
.live-badge{position:absolute;top:18px;right:18px;z-index:3;display:flex;align-items:center;gap:9px;background:rgba(5,7,10,.85);border:1px solid var(--mag);padding:9px 14px;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.score-chip{position:absolute;left:18px;bottom:18px;z-index:3;background:rgba(5,7,10,.88);border:1px solid var(--line2);border-left:3px solid var(--volt);padding:12px 16px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.score-chip b{color:var(--volt);font-size:15px;padding:0 6px}
/* ---------- stat bar ---------- */
.statbar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg2)}
.statbar .container{display:grid;grid-template-columns:repeat(4,1fr)}
.stat{padding:26px 18px;border-left:1px solid var(--line);text-align:left}
.stat:first-child{border-left:0}
.stat b{display:block;font-family:var(--disp);font-weight:900;font-size:clamp(1.5rem,2.6vw,2.2rem);color:var(--volt)}
.stat span{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--dim);text-transform:uppercase}
/* ---------- news + sidebar ---------- */
.news-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:38px;align-items:start}
.news-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.news-card{background:var(--panel);border:1px solid var(--line);clip-path:var(--clip);display:flex;flex-direction:column;transition:transform .35s cubic-bezier(.2,.7,.2,1),border-color .35s,box-shadow .35s}
.news-card:hover{transform:translateY(-5px);border-color:var(--volt);box-shadow:0 18px 40px -18px rgba(200,255,31,.25)}
.news-card .imgwrap{overflow:hidden;position:relative}
.news-card img{width:100%;height:210px;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.news-card:hover img{transform:scale(1.06)}
.news-card .chip{position:absolute;top:14px;left:14px}
.news-body{padding:20px 22px 22px;display:flex;flex-direction:column;gap:10px;flex:1}
.news-body h3{font-size:15.5px;font-weight:700;line-height:1.35;letter-spacing:0;font-family:var(--body);transition:color .25s}
.news-card:hover h3{color:var(--volt)}
.news-card.wide{grid-column:span 2;flex-direction:row}
.news-card.wide .imgwrap{flex:0 0 52%}
.news-card.wide img{height:100%;min-height:280px}
.news-body p{color:var(--mut);font-size:14px;flex:1}
.news-meta{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--dim);text-transform:uppercase;display:flex;gap:14px;flex-wrap:wrap}
.news-meta b{color:var(--cyan);font-weight:700}
/* ---------- sidebar ---------- */
.sidebar{position:sticky;top:96px;display:flex;flex-direction:column;gap:20px}
.panel{background:var(--panel);border:1px solid var(--line);padding:20px 20px 22px}
.panel-h{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--volt);display:flex;align-items:center;gap:9px;padding-bottom:13px;margin-bottom:15px;border-bottom:1px solid var(--line)}
.stream-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line)}
.stream-row:last-child{border:0;padding-bottom:0}
.stream-row img{width:38px;height:38px;border:1px solid var(--line2)}
.stream-row .s-n{font-size:13.5px;font-weight:700;line-height:1.2}
.stream-row .s-g{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.06em}
.stream-row .s-v{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--mag);white-space:nowrap}
.sched-row{display:flex;gap:14px;padding:8px 0;font-size:13px;border-bottom:1px dashed var(--line);align-items:baseline}
.sched-row:last-child{border:0}
.sched-row time{font-family:var(--mono);font-size:10px;color:var(--volt);letter-spacing:.1em;flex:0 0 74px;text-transform:uppercase}
.sched-row span{color:var(--mut)}
.podium{list-style:none}
.podium li{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:13.5px;border-bottom:1px dashed var(--line)}
.podium li:last-child{border:0}
.podium .pl{font-family:var(--mono);font-size:10px;color:var(--dim);width:26px}
.podium .pr{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--volt)}
.podium b{font-weight:700}
.pick{display:block;text-decoration:none;padding:10px 0;border-bottom:1px dashed var(--line);font-size:13.5px;transition:color .2s}
.pick:last-child{border:0;padding-bottom:0}
.pick:hover{color:var(--volt)}
.pick em{display:block;font-style:normal;font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.1em;margin-top:3px;text-transform:uppercase}
.pick .score{color:var(--cyan);font-family:var(--mono);font-weight:700;margin-right:8px}
/* ---------- review (sticky two-column) ---------- */
.review-grid{display:grid;grid-template-columns:390px minmax(0,1fr);gap:clamp(28px,4vw,56px);align-items:start}
.score-card{position:sticky;top:96px;background:var(--panel);border:1px solid var(--line);clip-path:var(--clip);padding:30px 28px}
.ring-wrap{position:relative;width:168px;margin:6px auto 18px}
.ring{display:block;width:168px;height:168px}
.ring-bg{fill:none;stroke:var(--line);stroke-width:7}
.ring-fg{fill:none;stroke:var(--volt);stroke-width:7;stroke-dasharray:414.7;stroke-dashoffset:414.7;transform:rotate(-90deg);transform-origin:center;transition:stroke-dashoffset 1.7s cubic-bezier(.3,.7,.2,1) .3s;filter:drop-shadow(0 0 8px rgba(200,255,31,.45))}
.review.on .ring-fg{stroke-dashoffset:33.2}
.ring-num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ring-num b{font-family:var(--disp);font-weight:900;font-size:42px;color:var(--volt);line-height:1}
.ring-num span{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.2em;margin-top:5px}
.verdict-label{text-align:center;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.3em;color:var(--volt);text-transform:uppercase;margin-bottom:20px}
.score-meta{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:22px}
.score-meta td{padding:7px 0;border-bottom:1px dashed var(--line);color:var(--mut)}
.score-meta td:first-child{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--dim);text-transform:uppercase;width:44%}
.score-meta td:last-child{color:var(--txt);font-weight:500}
.pc-list{list-style:none;font-size:13px;color:var(--mut);margin-bottom:8px}
.pc-list li{padding:4px 0 4px 20px;position:relative}
.pc-list.pros li::before{content:"+";position:absolute;left:2px;color:var(--volt);font-family:var(--mono);font-weight:700}
.pc-list.cons li::before{content:"−";position:absolute;left:2px;color:var(--mag);font-family:var(--mono);font-weight:700}
.pc-h{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;margin:16px 0 6px}
.pc-h.p{color:var(--volt)}.pc-h.c{color:var(--mag)}
.score-card .btn{width:100%;justify-content:center;margin-top:16px}
.review-body h3{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:700;margin-bottom:6px;text-transform:uppercase}
.review-sub{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--dim);text-transform:uppercase;margin-bottom:26px}
.review-body p{color:var(--mut);margin-bottom:20px;max-width:68ch;font-size:16.5px}
.review-body p b{color:var(--txt)}
.pull{border-left:3px solid var(--volt);padding:6px 0 6px 24px;margin:30px 0;font-family:var(--disp);font-weight:700;font-size:clamp(1.05rem,1.8vw,1.35rem);line-height:1.4;color:var(--txt);max-width:34ch}
.shots{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:30px 0}
.shots figure{border:1px solid var(--line);background:var(--panel)}
.shots .imgwrap{overflow:hidden}
.shots img{width:100%;height:200px;object-fit:cover;transition:transform .8s ease}
.shots figure:hover img{transform:scale(1.05)}
.shots figcaption{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--dim);padding:11px 14px;text-transform:uppercase}
.review-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
/* ---------- patch intel + poll ---------- */
.patch-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:30px;align-items:start}
.tabs{display:flex;gap:8px;margin-bottom:0;flex-wrap:wrap}
.tab{background:var(--panel);border:1px solid var(--line);border-bottom:0;color:var(--mut);font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.1em;padding:13px 22px;transition:.25s;text-transform:uppercase}
.tab em{font-style:normal;color:var(--mag);font-size:9px;margin-left:6px}
.tab:hover{color:var(--txt)}
.tab.active{background:var(--panel2);color:var(--volt);border-color:var(--volt)}
.tab-panel{display:none;background:var(--panel2);border:1px solid var(--line);padding:8px 0}
.tab-panel.active{display:block;animation:fadein .4s ease}
@keyframes fadein{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.patch-row{display:flex;gap:16px;align-items:flex-start;padding:15px 24px;border-bottom:1px solid var(--line)}
.patch-row:last-child{border-bottom:0}
.patch-row .tag{flex:0 0 58px;text-align:center;margin-top:2px}
.patch-row p{font-size:14px;color:var(--mut)}
.patch-row p b{color:var(--txt)}
.patch-foot{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.12em;padding:14px 24px 8px;text-transform:uppercase}
.poll-box{background:var(--panel);border:1px solid var(--line);clip-path:var(--clip);padding:26px}
.poll-box h3{font-size:17px;font-weight:700;margin-bottom:4px}
.poll-sub{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--dim);text-transform:uppercase;margin-bottom:20px}
.poll-opt{position:relative;display:flex;align-items:center;width:100%;background:var(--bg2);border:1px solid var(--line);color:var(--txt);padding:15px 18px;margin-bottom:10px;overflow:hidden;text-align:left;transition:border-color .25s,transform .25s;font-family:var(--body)}
.poll-opt:hover{border-color:var(--volt);transform:translateX(4px)}
.poll-opt .bar{position:absolute;inset:0;width:0%;background:linear-gradient(90deg,rgba(200,255,31,.22),rgba(200,255,31,.08));border-left:3px solid var(--volt);transition:width 1.1s cubic-bezier(.2,.7,.2,1)}
.poll-opt .po-name{position:relative;font-size:14px;font-weight:700}
.poll-opt .po-name small{display:block;font-weight:400;font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.08em}
.poll-opt .po-pct{position:relative;margin-left:auto;font-family:var(--mono);font-weight:700;font-size:14px;color:var(--volt);opacity:0;transition:opacity .5s}
.poll.voted .po-pct{opacity:1}
.poll.voted .poll-opt{pointer-events:none}
.poll.voted .poll-opt.chosen{border-color:var(--volt)}
.poll.voted .poll-opt.chosen .po-name::after{content:" ✓ YOUR PICK";color:var(--volt);font-family:var(--mono);font-size:9px;letter-spacing:.14em;margin-left:8px}
.poll-note{font-family:var(--mono);font-size:10.5px;color:var(--dim);letter-spacing:.08em;margin-top:6px}
/* ---------- match center ---------- */
.esports-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:26px;align-items:start}
.live-match{background:var(--panel);border:1px solid var(--mag);position:relative;overflow:hidden}
.live-match::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--mag),var(--volt))}
.lm-head{display:flex;align-items:center;gap:12px;padding:18px 24px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--mut)}
.lm-body{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:30px 24px}
.team{text-align:center}
.team img{width:88px;height:88px;margin:0 auto 12px;border:1px solid var(--line2)}
.team b{display:block;font-family:var(--disp);font-weight:700;font-size:15px;letter-spacing:.04em}
.team span{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.12em}
.lm-score{text-align:center}
.lm-score .big{font-family:var(--disp);font-weight:900;font-size:clamp(2.2rem,4vw,3.4rem);line-height:1;color:var(--txt)}
.lm-score .big i{font-style:normal;color:var(--volt);padding:0 8px}
.lm-score .map{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--dim);text-transform:uppercase;margin-top:10px}
.lm-foot{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:18px 24px;border-top:1px solid var(--line)}
.lm-foot .viewers{font-family:var(--mono);font-size:11px;color:var(--mag);letter-spacing:.1em}
.lm-foot .btn{margin-left:auto}
.upcoming{background:var(--panel);border:1px solid var(--line)}
.up-row{display:flex;align-items:center;gap:16px;padding:16px 22px;border-bottom:1px solid var(--line)}
.up-row:last-child{border:0}
.up-row time{font-family:var(--mono);font-size:11px;color:var(--volt);letter-spacing:.1em;flex:0 0 86px;text-transform:uppercase}
.up-row .teams{font-size:14px;font-weight:700}
.up-row .teams small{display:block;font-family:var(--mono);font-weight:400;font-size:10px;color:var(--dim);letter-spacing:.1em;margin-top:3px;text-transform:uppercase}
.up-row .chip{margin-left:auto}
.ladder{background:var(--panel);border:1px solid var(--line);padding:0 0 8px}
.ladder .panel-h{margin:20px 20px 12px;border:0;padding:0}
.ladder ol{list-style:none}
.ladder li{display:flex;align-items:center;gap:12px;padding:10px 20px;font-size:13.5px;border-top:1px dashed var(--line)}
.ladder .rk{font-family:var(--mono);font-size:11px;color:var(--dim);width:24px}
.ladder li:first-child .rk,.ladder li:first-child b{color:var(--volt)}
.ladder .pts{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--mut)}
.ladder .mv{font-family:var(--mono);font-size:10px;width:30px;text-align:right}
.ladder .mv.up{color:var(--volt)}.ladder .mv.dn{color:var(--mag)}
.ladder-cta{padding:14px 20px 18px}
.ladder-cta .btn{width:100%;justify-content:center}
/* ---------- indie spotlight ---------- */
.indie-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;padding-top:14px}
.postcard{background:var(--panel);border:1px solid var(--line);padding:16px 16px 20px;transform:rotate(var(--r,0deg));position:relative;transition:transform .5s cubic-bezier(.2,.7,.2,1),border-color .4s,box-shadow .5s}
.postcard::before{content:"";position:absolute;top:-12px;left:50%;transform:translateX(-50%) rotate(-2deg);width:84px;height:22px;background:rgba(200,255,31,.85);opacity:.9}
.postcard:hover{transform:rotate(0deg) translateY(-10px);border-color:var(--volt);box-shadow:0 26px 50px -22px rgba(0,0,0,.7)}
.postcard .imgwrap{overflow:hidden;margin-bottom:16px}
.postcard img{width:100%;height:190px;object-fit:cover;transition:transform .8s ease}
.postcard:hover img{transform:scale(1.06)}
.postcard h3{font-size:16px;font-weight:700;margin-bottom:4px}
.postcard .genre{font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--cyan);text-transform:uppercase;display:block;margin-bottom:12px}
.postcard p{font-size:13.5px;color:var(--mut);margin-bottom:16px}
.postcard blockquote{border-left:2px solid var(--volt);padding:2px 0 2px 14px;margin-bottom:14px;font-size:13px;color:var(--txt);font-style:italic}
.postcard blockquote footer{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--dim);margin-top:7px;letter-spacing:.08em}
.postcard .pc-foot{display:flex;align-items:center;gap:10px;margin-top:14px}
.postcard .pc-foot .btn{margin-left:auto;padding:11px 15px;font-size:10px}
/* ---------- player card / achievements ---------- */
.player-grid{display:grid;grid-template-columns:340px minmax(0,1fr);gap:30px;align-items:start}
.pcard{background:var(--panel);border:1px solid var(--line);clip-path:var(--clip);padding:28px;position:sticky;top:96px}
.pcard-top{display:flex;gap:16px;align-items:center;margin-bottom:22px}
.pcard-top img{width:64px;height:64px;border:2px solid var(--volt);clip-path:var(--clip)}
.pcard-top b{display:block;font-family:var(--disp);font-size:15px;font-weight:700}
.pcard-top span{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.12em}
.lvl-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.lvl-row .lvl-name{font-family:var(--disp);font-weight:900;font-size:20px;color:var(--volt);text-transform:uppercase}
.lvl-row .lvl-num{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.16em}
.xp-track{height:12px;background:var(--bg2);border:1px solid var(--line);position:relative;overflow:hidden;margin-bottom:8px}
.xp-fill{position:absolute;inset:0;width:0%;background:linear-gradient(90deg,var(--volt2),var(--volt));transition:width .9s cubic-bezier(.2,.7,.2,1)}
.xp-fill::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(-45deg,transparent 0 6px,rgba(0,0,0,.18) 6px 12px)}
.xp-nums{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.1em;margin-bottom:20px}
.feed{display:flex;gap:8px;margin-top:6px}
.feed input{flex:1;background:var(--bg2);border:1px solid var(--line);color:var(--txt);padding:12px 14px;font-family:var(--mono);font-size:12px;min-width:0}
.feed input:focus{border-color:var(--volt);outline:none}
.feed button{background:var(--volt);border:0;color:#0a0d10;font-family:var(--mono);font-weight:700;font-size:11px;letter-spacing:.1em;padding:0 16px}
.feed button:hover{background:#fff}
.feed-list{list-style:none;margin-top:14px;font-size:12.5px;color:var(--mut)}
.feed-list li{padding:9px 0;border-top:1px dashed var(--line)}
.feed-list li b{color:var(--volt);font-family:var(--mono);font-size:10px}
.ach-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:10px;margin-bottom:20px}
.ach-head h3{font-size:18px;font-weight:700}
.ach-count{font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.16em}
.ach-count b{color:var(--volt)}
.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:14px}
.ach{background:var(--panel);border:1px solid var(--line);padding:18px;display:flex;flex-direction:column;gap:10px;transition:border-color .3s,transform .3s,opacity .3s;position:relative}
.ach .ach-ico{font-size:22px;color:var(--dim);font-family:var(--mono);transition:.3s}
.ach h4{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.ach p{font-size:12px;color:var(--dim);flex:1}
.ach .ach-xp{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.12em}
.ach.locked{opacity:.5;border-style:dashed}
.ach.unlocked{border-color:var(--volt);opacity:1}
.ach.unlocked .ach-ico{color:var(--volt);text-shadow:0 0 14px rgba(200,255,31,.6)}
.ach.unlocked .ach-xp{color:var(--volt)}
.ach.unlocked::after{content:"UNLOCKED";position:absolute;top:12px;right:12px;font-family:var(--mono);font-size:8px;letter-spacing:.2em;color:var(--volt)}
.ach.pop{animation:achpop .6s cubic-bezier(.2,.7,.2,1)}
@keyframes achpop{0%{transform:scale(.92)}55%{transform:scale(1.04);box-shadow:0 0 34px rgba(200,255,31,.35)}100%{transform:scale(1)}}
/* ---------- community ---------- */
.testi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-bottom:44px}
.testi{background:var(--panel);border:1px solid var(--line);padding:26px;display:flex;flex-direction:column;gap:16px;transition:transform .35s,border-color .35s}
.testi:hover{transform:translateY(-6px);border-color:var(--cyan)}
.testi .stars{color:var(--volt);letter-spacing:4px;font-size:13px}
.testi p{color:var(--mut);font-size:14.5px;flex:1}
.testi-foot{display:flex;align-items:center;gap:12px}
.testi-foot img{width:44px;height:44px;border:1px solid var(--line2)}
.testi-foot b{display:block;font-size:13.5px}
.testi-foot span{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.1em}
.discord-banner{background:var(--volt);color:#0a0d10;clip-path:var(--clip);padding:clamp(30px,5vw,56px);display:flex;flex-wrap:wrap;align-items:center;gap:28px;position:relative;overflow:hidden}
.discord-banner::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(-45deg,transparent 0 22px,rgba(0,0,0,.045) 22px 44px);pointer-events:none}
.discord-banner h3{font-size:clamp(1.4rem,3vw,2.3rem);font-weight:900;text-transform:uppercase;max-width:16ch}
.discord-banner h3 b{font-variant-numeric:tabular-nums}
.discord-banner p{max-width:46ch;font-size:15px;font-weight:500;position:relative}
.discord-banner .btn{margin-left:auto;position:relative}
/* ---------- FAQ ---------- */
.faq-wrap{max-width:860px}
.faq-item{border:1px solid var(--line);background:var(--panel);margin-bottom:12px;transition:border-color .3s}
.faq-item.open{border-color:var(--volt)}
.faq-q{width:100%;display:flex;align-items:center;gap:18px;background:none;border:0;color:var(--txt);text-align:left;padding:21px 24px;font-family:var(--body);font-size:16px;font-weight:700}
.faq-q .qn{font-family:var(--mono);font-size:11px;color:var(--volt);letter-spacing:.1em;flex:0 0 34px}
.faq-ico{margin-left:auto;font-family:var(--mono);font-size:20px;color:var(--volt);transition:transform .35s;flex-shrink:0}
.faq-item.open .faq-ico{transform:rotate(45deg)}
.faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.2,.7,.2,1)}
.faq-item.open .faq-a{grid-template-rows:1fr}
.faq-a-in{overflow:hidden}
.faq-a p{padding:0 24px 22px 76px;color:var(--mut);font-size:14.5px;max-width:75ch}
/* ---------- newsletter ---------- */
.loadout{background:var(--bg2);border:1px solid var(--line);clip-path:var(--clip);display:grid;grid-template-columns:1.1fr .9fr;gap:30px;padding:clamp(28px,4vw,52px);align-items:center}
.loadout h3{font-size:clamp(1.3rem,2.6vw,2rem);font-weight:900;text-transform:uppercase;margin-bottom:12px}
.loadout h3 i{font-style:normal;color:var(--volt)}
.loadout p{color:var(--mut);font-size:15px;max-width:52ch}
.loadout-form{display:flex;gap:10px;flex-wrap:wrap}
.loadout-form input{flex:1;min-width:220px;background:var(--bg);border:1px solid var(--line2);color:var(--txt);padding:16px 18px;font-family:var(--mono);font-size:13px}
.loadout-form input:focus{border-color:var(--volt);outline:none}
.loadout-done{font-family:var(--mono);font-size:13px;color:var(--volt);letter-spacing:.06em}
.loadout-note{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.12em;margin-top:12px;text-transform:uppercase}
/* ---------- footer ---------- */
footer{border-top:1px solid var(--line);background:#05070a;padding:clamp(48px,6vw,72px) 0 0;margin-top:40px}
.foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:36px;padding-bottom:48px}
.foot-brand p{color:var(--mut);font-size:14px;max-width:38ch;margin:16px 0 20px}
.foot-contact{font-family:var(--mono);font-size:11px;color:var(--dim);line-height:2;letter-spacing:.04em}
.foot-contact a{color:var(--mut);text-decoration:none}
.foot-contact a:hover{color:var(--volt)}
.foot-col h4{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.24em;color:var(--volt);text-transform:uppercase;margin-bottom:18px}
.foot-col a{display:block;color:var(--mut);text-decoration:none;font-size:14px;padding:5px 0;transition:color .2s,transform .2s}
.foot-col a:hover{color:var(--txt);transform:translateX(5px)}
.socials{display:flex;gap:10px;flex-wrap:wrap}
.socials a{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.14em;border:1px solid var(--line2);color:var(--mut);text-decoration:none;padding:9px 13px;transition:.25s}
.socials a:hover{border-color:var(--volt);color:var(--volt);transform:translateY(-3px)}
.foot-bottom{border-top:1px solid var(--line);padding:22px 0;display:flex;flex-wrap:wrap;gap:14px;align-items:center;font-family:var(--mono);font-size:10.5px;color:var(--dim);letter-spacing:.1em}
.foot-bottom a{color:var(--dim);text-decoration:none}
.foot-bottom a:hover{color:var(--volt)}
.foot-bottom .gg{margin-left:auto;color:var(--volt)}
/* ---------- toast ---------- */
.toast{position:fixed;right:22px;bottom:22px;z-index:260;background:#0c121a;border:1px solid var(--volt);border-left:4px solid var(--volt);color:var(--txt);font-family:var(--mono);font-size:12px;letter-spacing:.05em;padding:16px 20px;max-width:340px;transform:translateY(160%);opacity:0;transition:transform .45s cubic-bezier(.2,.7,.2,1),opacity .45s;box-shadow:0 16px 40px rgba(0,0,0,.6)}
.toast.show{transform:none;opacity:1}
.toast b{color:var(--volt);display:block;font-size:10px;letter-spacing:.24em;margin-bottom:5px}
/* konami glitch */
body.glitching{animation:glitch .55s steps(2) 2}
@keyframes glitch{0%{transform:translate(0)}25%{transform:translate(-7px,4px);filter:hue-rotate(40deg) saturate(2)}50%{transform:translate(5px,-5px)}75%{transform:translate(-3px,2px);filter:hue-rotate(-30deg)}100%{transform:none;filter:none}}
/* ---------- responsive ---------- */
@media (max-width:1180px){
.news-layout{grid-template-columns:1fr}
.sidebar{position:static;display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.review-grid{grid-template-columns:1fr}
.score-card{position:static}
.player-grid{grid-template-columns:1fr}
.pcard{position:static}
.esports-grid{grid-template-columns:1fr}
}
@media (max-width:980px){
.nav{position:fixed;top:74px;left:0;right:0;background:var(--bg2);border-bottom:1px solid var(--line);flex-direction:column;padding:18px 24px 26px;gap:2px;transform:translateY(-130%);transition:transform .45s cubic-bezier(.2,.7,.2,1);z-index:190}
.nav a{padding:13px 6px;border-bottom:1px dashed var(--line);font-size:13px}
.nav-open .nav{transform:none}
.burger{display:flex}
.hero-grid{grid-template-columns:1fr}
.patch-grid{grid-template-columns:1fr}
.indie-grid{grid-template-columns:1fr;max-width:480px;margin-inline:auto}
.testi-grid{grid-template-columns:1fr;max-width:560px}
.loadout{grid-template-columns:1fr}
.foot-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:680px){
.statbar .container{grid-template-columns:1fr 1fr}
.stat:nth-child(3){border-left:0}
.stat{border-top:1px solid var(--line)}
.stat:nth-child(-n+2){border-top:0}
.news-grid{grid-template-columns:1fr}
.news-card.wide{grid-column:span 1;flex-direction:column}
.news-card.wide .imgwrap{flex:auto}
.lm-body{grid-template-columns:1fr;gap:22px}
.sidebar{grid-template-columns:1fr}
.shots{grid-template-columns:1fr}
.discord-banner .btn{margin-left:0}
.faq-a p{padding-left:24px}
}
/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
html{scroll-behavior:auto}
*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
.ticker-track{animation:none;flex-wrap:wrap;width:auto}
.ticker{height:auto;padding:8px 0}
.kb img{animation:none}
.js .rv{opacity:1;transform:none}
.js .mask .mask-in{transform:none}
}
</style>
</head>
<body>
<a class="skip" href="#main">Skip to content</a>
<!-- ===================== TICKER ===================== -->
<div class="ticker" aria-label="Latest headlines ticker">
<div class="ticker-track" id="tickerTrack">
<div class="ticker-group">
<span class="hot"><b>LIVE</b> NOVA9 2–1 HEX ORDER · ASTRA INVITATIONAL GRAND FINAL · MAP 3</span>
<span><b>PATCH 2.4.1</b> LIVE ON VALDRA — 34 WEAPON TWEAKS, NETHERLINE REBUILT</span>
<span><b>HOLLOW CHOIR</b> SHIPS 1M COPIES IN 72 HOURS</span>
<span><b>TIDE OF GLASS</b> DLC SCORES 9.2 IN OUR REVIEW OF THE WEEK</span>
<span>STEAM CONCURRENT PEAK HITS <b>38.4M</b></span>
<span><b>CINDER SPIRE</b> ENTERS RANKED ROTATION TONIGHT 00:00 UTC</span>
<span>VOIDRUNNERS SIGN EX-IRON PACT IGL <b>"KESTREL"</b></span>
</div>
<div class="ticker-group" aria-hidden="true">
<span class="hot"><b>LIVE</b> NOVA9 2–1 HEX ORDER · ASTRA INVITATIONAL GRAND FINAL · MAP 3</span>
<span><b>PATCH 2.4.1</b> LIVE ON VALDRA — 34 WEAPON TWEAKS, NETHERLINE REBUILT</span>
<span><b>HOLLOW CHOIR</b> SHIPS 1M COPIES IN 72 HOURS</span>
<span><b>TIDE OF GLASS</b> DLC SCORES 9.2 IN OUR REVIEW OF THE WEEK</span>
<span>STEAM CONCURRENT PEAK HITS <b>38.4M</b></span>
<span><b>CINDER SPIRE</b> ENTERS RANKED ROTATION TONIGHT 00:00 UTC</span>
<span>VOIDRUNNERS SIGN EX-IRON PACT IGL <b>"KESTREL"</b></span>
</div>
</div>
</div>
<!-- ===================== HEADER ===================== -->
<header class="site-head" id="top">
<div class="container head-grid">
<a class="brand" href="#top" aria-label="FRAGSOURCE home">
<img src="https://placehold.co/72x72/c8ff1f/080b0f?text=FS&font=montserrat" alt="" width="42" height="42">
<span class="brand-txt"><strong>FRAG<i>SOURCE</i></strong><em>YOUR DAILY SPAWN POINT</em></span>
</a>
<nav class="nav" id="siteNav" aria-label="Primary navigation">
<a href="#review">Reviews</a>
<a href="#esports">Esports</a>
<a href="#patches">Patch Notes</a>
<a href="#indie">Indie Spotlight</a>
<a href="#streaming">Streaming</a>
<a href="#" class="js-wiki">Wiki</a>
<a href="#faq">Support</a>
</nav>
<div class="head-right">
<a href="#community" class="btn small js-discord">Join Discord</a>
<button class="burger" id="burger" aria-label="Toggle menu" aria-expanded="false" aria-controls="siteNav"><span></span><span></span><span></span></button>
</div>
</div>
</header>
<main id="main">
<!-- ===================== HERO / FRONTLINE ===================== -->
<section class="hero container" aria-labelledby="heroTitle">
<div class="hero-grid">
<div class="hero-copy">
<span class="kicker rv">// Featured — Season 09 · Valdria: Ashfall Protocol</span>
<h1 id="heroTitle" class="scramble" data-text="THE META JUST SHIFTED.">THE META JUST <i>SHIFTED.</i></h1>
<p class="lede rv" style="--d:.1s">Patch <b>2.4.1</b> hit the live servers at 03:00 UTC — thirty-four weapon tweaks, a rebuilt Netherline mid, and a soft rank reset that's already shuffling the top 500. Our analysts have been theory-crafting since the PTR notes dropped, so you can queue up informed instead of ambushed.</p>
<div class="hero-cta rv" style="--d:.2s">
<a class="btn" href="#review">Read the Review</a>
<a class="btn ghost" href="#esports">View Leaderboard</a>
</div>
<ul class="hud-stats rv" style="--d:.3s">
<li>SERVERS <b class="volt">ONLINE</b></li>
<li>OPERATIVES <b class="live" data-live="1248302">1,248,302</b></li>
<li>RANK RESET IN <b id="countdown">02:11:54</b></li>
</ul>
</div>
<figure class="hero-media hud-frame rv" style="--d:.15s">
<div class="imgwrap kb scanlines">
<img src="https://picsum.photos/seed/valdra-arena/1100/820" alt="Key art from Valdria: Ashfall Protocol's new Cinder Spire arena" width="1100" height="820">
</div>
<figcaption class="live-badge"><span class="dot" aria-hidden="true"></span> LIVE · ASTRA INVITATIONAL — GRAND FINAL</figcaption>
<div class="score-chip">NOVA9 <b>2 : 1</b> HEX ORDER · MAP 3 — CINDER SPIRE</div>
</figure>
</div>
</section>
<!-- ===================== STAT BAR ===================== -->
<div class="statbar rv" aria-label="FRAGSOURCE by the numbers">
<div class="container">
<div class="stat"><b><span class="count" data-count="2.4" data-dec="1" data-suf="M">0</span></b><span>Monthly readers</span></div>
<div class="stat"><b><span class="count" data-count="1842">0</span></b><span>Reviews published</span></div>
<div class="stat"><b><span class="count" data-count="326">0</span></b><span>Tournaments covered</span></div>
<div class="stat"><b><span class="count" data-count="58.4" data-dec="1" data-suf="K">0</span></b><span>Discord members</span></div>
</div>
</div>
<!-- ===================== 01 LATEST DROPS + SIDEBAR ===================== -->
<section class="section" id="news" aria-labelledby="newsTitle">
<div class="container">
<div class="sec-head">
<div>
<span class="kicker">[ 01 // Latest Drops ]</span>
<h2 id="newsTitle" class="mask"><span class="mask-in">Fresh From The Frontline</span></h2>
</div>
<p class="sec-note">Reported, played, and written by people with more hours logged than you.</p>
</div>
<div class="news-layout">
<div class="news-grid">
<!-- featured -->
<article class="news-card wide rv">
<div class="imgwrap"><a href="#news"><img src="https://picsum.photos/seed/frag-esports-final/1200/700" alt="NOVA9 players celebrating on stage at the Astra Invitational" width="1200" height="700"></a><span class="chip mag">Esports</span></div>
<div class="news-body">
<h3><a href="#news" style="text-decoration:none">NOVA9 survive match point twice, reverse-sweep HEX ORDER to reach the Astra Grand Final</a></h3>
<p>Down 0–2 and staring at elimination, NOVA9's in-game leader "Kestrel" switched the squad onto a double-flex comp nobody had scrimmed all season. What followed was three straight maps of suffocating mid control, a 1v4 clutch that broke the arena's sound meter, and a grand final berth secured at 1:47 AM local time. We break down every draft, every timeout, and the stat line nobody saw coming.</p>
<div class="news-meta"><span>By <b>Mara Voss</b></span><span>2 hrs ago</span><span>6 min read</span></div>
</div>
</article>
<article class="news-card rv" style="--d:.05s">
<div class="imgwrap"><a href="#review"><img src="https://picsum.photos/seed/starforge-dlc/800/520" alt="The crystalline Shattered Expanse from Starforge Odyssey's Tide of Glass expansion" width="800" height="520"></a><span class="chip cyan">Review</span></div>
<div class="news-body">
<h3><a href="#review" style="text-decoration:none">Tide of Glass is Starforge Odyssey's boldest expansion yet — and its riskiest</a></h3>
<p>Forty-one hours logged, two saves abandoned, one verdict: the best DLC of the year so far.</p>
<div class="news-meta"><span>By <b>Deon Okafor</b></span><span>5 hrs ago</span><span>12 min read</span></div>
</div>
</article>
<article class="news-card rv" style="--d:.1s">
<div class="imgwrap"><a href="#patches"><img src="https://picsum.photos/seed/valdra-patch/800/520" alt="Weapon rack screenshot from Valdria patch 2.4.1" width="800" height="520"></a><span class="chip volt">Patch Intel</span></div>
<div class="news-body">
<h3><a href="#patches" style="text-decoration:none">Every change in Valdria 2.4.1, ranked by how hard it will tilt you</a></h3>
<p>From the Aegis Wall nerf nobody asked for to the Lacerator buff everybody did — tier-listed and explained.</p>
<div class="news-meta"><span>By <b>Ilya Brandt</b></span><span>9 hrs ago</span><span>8 min read</span></div>
</div>
</article>
<article class="news-card rv" style="--d:.05s">
<div class="imgwrap"><a href="#indie"><img src="https://picsum.photos/seed/hollow-choir/800/520" alt="Hand-painted cathedral environment from Hollow Choir" width="800" height="520"></a><span class="chip">Industry</span></div>
<div class="news-body">
<h3><a href="#indie" style="text-decoration:none">Hollow Choir passes 1M copies — a postmortem with two-person studio Pale Signal</a></h3>
<p>They nearly shelved the game twice. Now it's the year's breakout metroidvania. Here's how it almost wasn't.</p>
<div class="news-meta"><span>By <b>Rita Chen</b></span><span>Yesterday</span><span>10 min read</span></div>
</div>
</article>
<article class="news-card rv" style="--d:.1s">
<div class="imgwrap"><a href="#news"><img src="https://picsum.photos/seed/ironvale-tactics/800/520" alt="Tactical map view from Ironvale Tactics" width="800" height="520"></a><span class="chip cyan">Guide</span></div>
<div class="news-body">
<h3><a href="#news" style="text-decoration:none">Ironvale Tactics: five opening builds that survive ranked week one</a></h3>
<p>The ladder resets tonight. These comp trees — tested to Master — will keep your placement matches honest.</p>
<div class="news-meta"><span>By <b>Sam Ferro</b></span><span>Yesterday</span><span>7 min read</span></div>
</div>
</article>
<article class="news-card rv" style="--d:.15s">
<div class="imgwrap"><a href="#news"><img src="https://picsum.photos/seed/neon-drift-gp/800/520" alt="Night race through a neon city circuit in Neon Drift GP" width="800" height="520"></a><span class="chip volt">Community</span></div>
<div class="news-body">
<h3><a href="#news" style="text-decoration:none">The Neon Drift GP time-trial scene just exploded — and it's all about 0.03 seconds</a></h3>
<p>A grassroots leaderboard, frame-perfect drift tech, and a rivalry fought across four continents.</p>
<div class="news-meta"><span>By <b>Mara Voss</b></span><span>2 days ago</span><span>5 min read</span></div>
</div>
</article>
</div>
<!-- ============ SIDEBAR ============ -->
<aside class="sidebar" id="streaming" aria-label="Streaming hub sidebar">
<div class="panel rv">
<h3 class="panel-h"><span class="dot" aria-hidden="true"></span> Live Now</h3>
<div class="stream-row">
<img src="https://i.pravatar.cc/76?u=kessa" alt="Kessa's avatar">
<div><div class="s-n">KessaPlays</div><div class="s-g">VALDRA · RANKED GRIND</div></div>
<div class="s-v"><span class="live" data-live="23111">23,111</span></div>
</div>
<div class="stream-row">
<img src="https://i.pravatar.cc/76?u=bricklaw" alt="Bricklaw's avatar">
<div><div class="s-n">Bricklaw</div><div class="s-g">IRONVALE TACTICS · MASTER LADDER</div></div>
<div class="s-v"><span class="live" data-live="9840">9,840</span></div>
</div>
<div class="stream-row">
<img src="https://i.pravatar.cc/76?u=emberly" alt="Emberly's avatar">
<div><div class="s-n">Emberly</div><div class="s-g">HOLLOW CHOIR · 100% RUN</div></div>
<div class="s-v"><span class="live" data-live="4221">4,221</span></div>
</div>
</div>
<div class="panel rv" style="--d:.08s">
<h3 class="panel-h">Stream Schedule</h3>
<div class="sched-row"><time>Mon 18:00</time><span>Patch Review Live: Valdria 2.4.1</span></div>
<div class="sched-row"><time>Tue 20:00</time><span>Ranked with Kessa — viewer lobbies</span></div>
<div class="sched-row"><time>Wed 17:00</time><span>Indie Hour: three demos, zero mercy</span></div>
<div class="sched-row"><time>Sat 14:00</time><span>Astra Invitational watch party</span></div>
</div>
<div class="panel rv" style="--d:.14s">
<h3 class="panel-h">Tournament Results</h3>
<ul class="podium">
<li><span class="pl">1st</span><b>NOVA9</b><span class="pr">$40,000</span></li>
<li><span class="pl">2nd</span><b>HEX ORDER</b><span class="pr">$20,000</span></li>
<li><span class="pl">3rd</span><b>VOIDRUNNERS</b><span class="pr">$10,000</span></li>
<li><span class="pl">4th</span><b>IRON PACT</b><span class="pr">$5,000</span></li>
</ul>
<p class="mono" style="font-size:10px;color:var(--dim);letter-spacing:.12em;margin-top:12px">ASTRA INVITATIONAL · FINALS WEEKEND · 12 TEAMS</p>
</div>
<div class="panel rv" style="--d:.2s">
<h3 class="panel-h">Editor's Picks</h3>
<a class="pick" href="#review"><span class="score">9.2</span>Tide of Glass — expansion review<em>Starforge Odyssey · DLC</em></a>
<a class="pick" href="#indie"><span class="score">9.0</span>Hollow Choir — a cathedral that sings back<em>Pale Signal · Metroidvania</em></a>
<a class="pick" href="#news"><span class="score">8.4</span>Neon Drift GP — season three re-review<em>Rustline Games · Racing</em></a>
</div>
</aside>
</div>
</div>
</section>
<!-- ===================== 02 REVIEW OF THE WEEK ===================== -->
<section class="section" id="review" aria-labelledby="reviewTitle">
<div class="container">
<div class="sec-head">
<div>
<span class="kicker">[ 02 // Review of the Week ]</span>
<h2 id="reviewTitle" class="mask"><span class="mask-in">Tide of Glass, Measured</span></h2>
</div>
<p class="sec-note">Scored across five axes. Review code supplied by publisher — disclosed, always.</p>
</div>
<div class="review-grid">
<!-- sticky score card -->
<aside class="score-card rv" aria-label="Review scorecard">
<div class="ring-wrap">
<svg class="ring" viewBox="0 0 160 160" role="img" aria-label="Score 9.2 out of 10">
<circle class="ring-bg" cx="80" cy="80" r="66"></circle>
<circle class="ring-fg" cx="80" cy="80" r="66"></circle>
</svg>
<div class="ring-num"><b><span class="count" data-count="9.2" data-dec="1">0</span></b><span>/ 10</span></div>
</div>
<p class="verdict-label">◆ Outstanding ◆</p>
<table class="score-meta">
<tr><td>Game</td><td>Starforge Odyssey: Tide of Glass</td></tr>
<tr><td>Developer</td><td>Astral Forge Studio</td></tr>
<tr><td>Platforms</td><td>PC · PS5 · XSX</td></tr>
<tr><td>Price</td><td>$24.99 DLC / 18 hr campaign</td></tr>
<tr><td>Time logged</td><td>41 hours, 2 saves</td></tr>
</table>
<p class="pc-h p">Pros</p>
<ul class="pc-list pros">
<li>The Shattered Expanse is hand-crafted verticality at its best</li>
<li>Gravity-anchor ship combat rewires every dogfight</li>
<li>Branching contracts that respect your faction history</li>
<li>Cartographer Venn is a performance of the year candidate</li>
</ul>
<p class="pc-h c">Cons</p>
<ul class="pc-list cons">
<li>Tier-9 salvage leans on a 3% drop-rate loop</li>
<li>Two boss kits recycle base-game raid patterns</li>
<li>Photo mode still crashes on ultrawide</li>
</ul>
<a class="btn" href="#news">Read Full Review</a>
</aside>
<!-- scrolling analysis -->
<div class="review-body">
<h3 class="rv">Starforge Odyssey: Tide of Glass</h3>
<p class="review-sub rv">Expansion review · tested on PC (RTX-class rig, 1440p/120 target) · achievements: 34/42</p>
<p class="rv">Tide of Glass opens twenty hours after the base campaign's final shot and immediately asks more of you than Starforge Odyssey ever has. The Shattered Expanse — a sea of suspended crystalline shards — replaces open starfields with tight, vertical navigation that turns every jump into a risk calculation. The new ship combat layers in <b>gravity anchors and glass storms</b>, forcing you to read the environment mid-fight rather than after it. It's disorienting for the first three hours. Then it's the best combat Astral Forge has ever shipped.</p>
<p class="rv" style="--d:.05s">The writers are at their sharpest here. Cartographer Venn carries the expansion with a performance that lands somewhere between dry humor and quiet grief, and the side contracts now branch based on faction reputation you didn't even know you were building. A second playthrough genuinely plays different — we re-ran the Glassfall arc on an opposing faction alignment and hit four quests we'd never seen. <b>That's rare DLC design</b>: content that re-contextualizes the base game instead of just extending it.</p>
<blockquote class="pull rv">"A DLC that re-argues what the base game was about — and wins the argument."</blockquote>
<p class="rv">The one crack in the glass is the endgame. Tier-9 salvage leans on a 3% drop loop that outstays its welcome by at least five hours, and two boss encounters borrow patterns from the base game's raids almost beat-for-beat. Neither flaw is enough to shatter the expansion, but together they keep a perfect score off the table. Everything else — the world-building, the combat, the achievements worth chasing — lands clean.</p>
<div class="shots">
<figure class="rv"><div class="imgwrap"><img src="https://picsum.photos/seed/starforge-glass/1000/560" alt="Ship navigating the crystalline Shattered Expanse" loading="lazy"></div><figcaption>FIG.01 — THE SHATTERED EXPANSE / CAPTURED IN-GAME, 1440P</figcaption></figure>
<figure class="rv" style="--d:.1s"><div class="imgwrap"><img src="https://picsum.photos/seed/starforge-battle/1000/560" alt="Gravity-anchor ship combat during a glass storm" loading="lazy"></div><figcaption>FIG.02 — GRAVITY-ANCHOR COMBAT DURING A GLASS STORM</figcaption></figure>
</div>
<div class="review-tags rv">
<span class="tag map">#RPG</span><span class="tag map">#SPACE-SIM</span><span class="tag map">#DLC</span><span class="tag map">#ACHIEVEMENT-HUNTER</span>
</div>
</div>
</div>
</div>
</section>
<!-- ===================== 03 PATCH INTEL + POLL ===================== -->
<section class="section" id="patches" aria-labelledby="patchTitle">
<div class="container">
<div class="sec-head">
<div>
<span class="kicker">[ 03 // Patch Intel ]</span>
<h2 id="patchTitle" class="mask"><span class="mask-in">Buffs, Nerfs & The Fine Print</span></h2>
</div>
<p class="sec-note">We read the full changelog so your rank doesn't have to suffer for it.</p>
</div>
<div class="patch-grid">
<div class="rv">
<div class="tabs" role="tablist" aria-label="Patch versions">
<button class="tab active" role="tab" aria-selected="true" data-tab="t1">v2.4.1 <em>HOT</em></button>
<button class="tab" role="tab" aria-selected="false" data-tab="t2">v2.4.0</button>
<button class="tab" role="tab" aria-selected="false" data-tab="t3">v2.3.5</button>
</div>
<div class="tab-panel active" id="t1" role="tabpanel">
<div class="patch-row"><span class="tag buff">BUFF</span><p><b>Lacerator SMG</b> — damage falloff range extended +12%; headshot multiplier 1.8 → 1.9. The spray-and-pray era is officially sanctioned.</p></div>
<div class="patch-row"><span class="tag nerf">NERF</span><p><b>Aegis Wall</b> — duration 6.0s → 4.5s; deploy cooldown +4s. Support mains, start learning a second ability.</p></div>
<div class="patch-row"><span class="tag nerf">NERF</span><p><b>Kaan "Gravlord"</b> — pull radius 9m → 7.5m; ultimate charge requirement +8%. Still S-tier. Just slightly less oppressive.</p></div>
<div class="patch-row"><span class="tag fix">FIX</span><p>Resolved the <b>Meridian vents clip exploit</b>. Ranked exploit queue disabled for 48h while the patch propagates.</p></div>
<div class="patch-row"><span class="tag map">MAP</span><p><b>Netherline</b> — mid cover rebuilt, B-site spawn geometry mirrored, glass panels are now bullet-penetrable. Old angles are dead; learn the new ones.</p></div>
<div class="patch-row"><span class="tag new">MODE</span><p><b>Escalation</b> playlist returns with the hard-fall modifier. One life, rising floor, no excuses.</p></div>
<p class="patch-foot">DEPLOYED 03:00 UTC · ~2.1 GB · FULL CHANGELOG ON THE WIKI</p>
</div>
<div class="tab-panel" id="t2" role="tabpanel">
<div class="patch-row"><span class="tag new">NEW</span><p><b>Operator Sable (Flex)</b> added to the roster — free with the Season 09 pass. Kit includes decoy swap and a short-dash reset.</p></div>
<div class="patch-row"><span class="tag buff">BUFF</span><p><b>Cinderline DMR</b> — ADS stability +15%. Long-range duels just got a new favorite.</p></div>
<div class="patch-row"><span class="tag nerf">NERF</span><p><b>Smoke grenades</b> — duration 12s → 10s. Site executes need to be two seconds faster now.</p></div>
<div class="patch-row"><span class="tag fix">FIX</span><p>Ranked decay no longer triggers during maintenance windows. Your MMR is safe from servers being down.</p></div>
<div class="patch-row"><span class="tag fix">AUDIO</span><p>Footstep attenuation re-tuned; crouch steps are <b>−30% volume</b>. Flank responsibly.</p></div>
<p class="patch-foot">DEPLOYED SEASON 09 LAUNCH · ~6.8 GB</p>
</div>
<div class="tab-panel" id="t3" role="tabpanel">
<div class="patch-row"><span class="tag buff">BUFF</span><p><b>All marksman-class weapons</b> — recoil recovery +10%. Tap-fire returns to viability.</p></div>
<div class="patch-row"><span class="tag fix">FIX</span><p>Spectator camera desync in tournament lobbies resolved. Casters, you're welcome.</p></div>
<div class="patch-row"><span class="tag map">MAP</span><p><b>Frostline</b> removed from the ranked rotation pending investigation of a lighting exploit near the A-site crane.</p></div>
<div class="patch-row"><span class="tag fix">QOL</span><p><b>Loadout presets</b> now sync across platforms. Your crosshair settings follow you to console.</p></div>
<p class="patch-foot">HOTFIX · ~900 MB</p>
</div>
</div>
<!-- community poll -->
<div class="poll-box rv" style="--d:.1s">
<span class="kicker" style="margin-bottom:8px">Community Vote // Week 34</span>
<h3>Who owns the ranked meta?</h3>
<p class="poll-sub">4,312 VOTES SO FAR · RESULTS LOCK SUNDAY 23:59 UTC</p>
<div class="poll" id="poll">
<button class="poll-opt" data-vote="vex" data-base="1243"><span class="bar"></span><span class="po-name">VEX — Duelist<small>"Aim check on every corner"</small></span><span class="po-pct"></span></button>
<button class="poll-opt" data-vote="sable" data-base="823"><span class="bar"></span><span class="po-name">SABLE — Flex<small>"New kit, new problems"</small></span><span class="po-pct"></span></button>
<button class="poll-opt" data-vote="mirelle" data-base="704"><span class="bar"></span><span class="po-name">MIRELLE — Support<small>"The heal tax remains unpaid"</small></span><span class="po-pct"></span></button>
<button class="poll-opt" data-vote="kaan" data-base="538"><span class="bar"></span><span class="po-name">KAAN — Gravlord<small>"Get over here. Again."</small></span><span class="po-pct"></span></button>
</div>
<p class="poll-note" id="pollNote">Tap an operator to cast your vote. Voting earns XP.</p>
</div>
</div>
</div>
</section>
<!-- ===================== 04 MATCH CENTER ===================== -->
<section class="section" id="esports" aria-labelledby="esportsTitle">
<div class="container">
<div class="sec-head">
<div>
<span class="kicker">[ 04 // Match Center ]</span>
<h2 id="esportsTitle" class="mask"><span class="mask-in">Esports, As It Happens</span></h2>
</div>
<p class="sec-note">Live scores, bracket tracking and ladder math — updated from tournament servers.</p>
</div>
<div class="esports-grid">
<div style="display:flex;flex-direction:column;gap:22px">
<article class="live-match rv" aria-label="Live match">
<div class="lm-head"><span class="dot"></span> LIVE · ASTRA INVITATIONAL — GRAND FINAL · BEST OF 5</div>
<div class="lm-body">
<div class="team">
<img src="https://placehold.co/176x176/10161e/c8ff1f?text=NOVA9&font=montserrat" alt="NOVA9 team logo" width="88" height="88">
<b>NOVA9</b><span>SEED #1 · 14–2 SEASON</span>
</div>
<div class="lm-score">
<div class="big">10<i>:</i>8</div>
<div class="map">MAP 3 — CINDER SPIRE · ROUND 19</div>
</div>
<div class="team">
<img src="https://placehold.co/176x176/10161e/ff4d6d?text=HEX&font=montserrat" alt="HEX ORDER team logo" width="88" height="88">
<b>HEX ORDER</b><span>SEED #3 · 11–5 SEASON</span>
</div>
</div>
<div class="lm-foot">
<span class="chip mag">Bo5</span>
<span class="viewers">◉ <span class="live" data-live="212483">212,483</span> WATCHING</span>
<a href="#streaming" class="btn small">Watch on Twitch</a>
</div>
</article>
<div class="upcoming rv" style="--d:.1s">
<h3 class="panel-h" style="margin:20px 22px 8px;border-bottom:1px solid var(--line);padding-bottom:14px">Upcoming Fixtures</h3>
<div class="up-row"><time>Thu 18:00</time><div class="teams">VOIDRUNNERS vs IRON PACT<small>Cinder Series · Group B</small></div><span class="chip">Bo3</span></div>
<div class="up-row"><time>Fri 20:00</time><div class="teams">ASHEN KINGS vs POLARIS<small>Open Qualifier · Losers Bracket</small></div><span class="chip">Bo1</span></div>
<div class="up-row"><time>Sat 14:00</time><div class="teams">HEX ORDER vs VOIDRUNNERS<small>Cinder Series · Elimination Match</small></div><span class="chip mag">Bo3</span></div>
</div>
</div>
<div class="ladder rv" style="--d:.15s">
<h3 class="panel-h">Season 09 Ladder — Top 5</h3>
<ol>
<li><span class="rk">01</span><b>NOVA9</b><span class="mv up">▲ —</span><span class="pts">2,140 pts</span></li>
<li><span class="rk">02</span><b>HEX ORDER</b><span class="mv up">▲2</span><span class="pts">2,085 pts</span></li>
<li><span class="rk">03</span><b>VOIDRUNNERS</b><span class="mv dn">▼1</span><span class="pts">1,992 pts</span></li>
<li><span class="rk">04</span><b>IRON PACT</b><span class="mv dn">▼1</span><span class="pts">1,877 pts</span></li>
<li><span class="rk">05</span><b>ASHEN KINGS</b><span class="mv up">▲1</span><span class="pts">1,755 pts</span></li>
</ol>
<div class="ladder-cta"><a class="btn ghost" href="#player">View Leaderboard</a></div>
</div>
</div>
</div>
</section>
<!-- ===================== 05 INDIE SPOTLIGHT ===================== -->
<section class="section" id="indie" aria-labelledby="indieTitle">
<div class="container">
<div class="sec-head">
<div>
<span class="kicker">[ 05 // Indie Spotlight ]</span>
<h2 id="indieTitle" class="mask"><span class="mask-in">Small Teams, Big Worlds</span></h2>
</div>
<p class="sec-note">Every Friday we pin three indies to the board. No ad buys. Ever.</p>
</div>
<p class="sec-intro rv">Triple-A has the marketing budget; indies have the ideas. Our editors play every submission cold — no trailer influence, no publisher calls — and the three that survive the week earn a pin on the board below. If one of these hits your wishlist, that's the whole point.</p>
<div class="indie-grid">
<article class="postcard rv" style="--r:-2.5deg">
<div class="imgwrap"><img src="https://picsum.photos/seed/hollow-choir-art/640/420" alt="Dark cathedral interior from Hollow Choir" loading="lazy" width="640" height="420"></div>
<h3>Hollow Choir</h3>
<span class="genre">Metroidvania · Pale Signal · Porto</span>
<p>A cathedral that sings back. Every ability you absorb changes the choir's harmony — and which doors it deigns to open. Boss fights are verses; the map is the score.</p>
<blockquote>"FRAGSOURCE's spotlight tripled our wishlists overnight. We framed the analytics."<footer>— RITA VASQUEZ, CO-FOUNDER, PALE SIGNAL</footer></blockquote>
<div class="pc-foot"><span class="chip volt">9.0 · 1M SOLD</span><a class="btn ghost" href="#news">View Review</a></div>
</article>
<article class="postcard rv" style="--r:1.8deg;--d:.1s">
<div class="imgwrap"><img src="https://picsum.photos/seed/tinheart-mech/640/420" alt="Cozy workshop with a salvaged mech from Tinheart Salvage" loading="lazy" width="640" height="420"></div>
<h3>Tinheart Salvage</h3>
<span class="genre">Cozy Mech Sim · Rustbelt Studio · Detroit</span>
<p>Strip derelict war machines, restore their cores, then decide which museums — or militaries — get them back. Every sale is a quiet moral choice with a wrench in hand.</p>
<blockquote>"The demo hit 40k downloads in a weekend. We still don't know what we did right."<footer>— OSMAN REYES, LEAD DESIGNER</footer></blockquote>
<div class="pc-foot"><span class="chip cyan">DEMO LIVE</span><a class="btn ghost" href="#indie">Wishlist on Steam</a></div>
</article>
<article class="postcard rv" style="--r:-1.2deg;--d:.2s">
<div class="imgwrap"><img src="https://picsum.photos/seed/pale-route-road/640/420" alt="Fog-covered night road from Pale Route" loading="lazy" width="640" height="420"></div>
<h3>Pale Route</h3>
<span class="genre">2P Co-op Horror · Fjord Interactive · Tromsø</span>
<p>One truck, one lantern, one road that rearranges itself when nobody's watching. Driver navigates; navigator reads the map. Neither of you will sleep well.</p>
<blockquote>"Playtesting devolved into screaming within a week. We count that as balance."<footer>— INGRID HOLM, CREATIVE DIRECTOR</footer></blockquote>
<div class="pc-foot"><span class="chip mag">WISHLIST OPEN</span><a class="btn ghost" href="#indie">Watch Trailer</a></div>
</article>
</div>
</div>
</section>
<!-- ===================== 06 PLAYER CARD / ACHIEVEMENTS ===================== -->
<section class="section" id="player" aria-labelledby="playerTitle">
<div class="container">
<div class="sec-head">
<div>
<span class="kicker">[ 06 // Player Card ]</span>
<h2 id="playerTitle" class="mask"><span class="mask-in">Your Achievement Tracker</span></h2>
</div>
<p class="sec-note">Reading the site is a game too. Earn XP, climb ranks, flex accordingly.</p>
</div>
<p class="sec-intro rv">Your FRAGSOURCE player card tracks everything you do around the site — votes cast, briefings enlisted, patches studied. Unlock all eight achievements to hit LEGEND rank. Yes, there's a hidden one. Yes, veterans know the code.</p>
<div class="player-grid">
<aside class="pcard rv" aria-label="Your player card">
<div class="pcard-top">
<img src="https://i.pravatar.cc/128?u=frag-recruit" alt="Player avatar">
<div><b>NOVA_RECRUIT<span style="color:var(--dim)">#7741</span></b><span>SEASON 09 · MEMBER SINCE TODAY</span></div>
</div>
<div class="lvl-row"><span class="lvl-name" id="levelName">ROOKIE</span><span class="lvl-num">LVL <b id="levelNum">01</b></span></div>
<div class="xp-track"><span class="xp-fill" id="xpFill"></span></div>
<div class="xp-nums"><span id="xpNow">0 XP</span><span id="xpNext">150 XP → GRINDER</span></div>
<p class="mono" style="font-size:10px;letter-spacing:.18em;color:var(--dim);text-transform:uppercase;margin-bottom:10px">Squad Feed</p>
<form class="feed" id="feedForm">
<input type="text" maxlength="120" placeholder="gg, just hit the site…" aria-label="Post to squad feed" required>
<button type="submit">Send</button>
</form>
<ul class="feed-list" id="feedList">
<li><b>KESSA</b> · 12m — grand final is everything we hoped. NOVA9 in four.</li>
<li><b>BRICKLAW</b> · 28m — that Aegis nerf is criminal, see you in the forums.</li>
</ul>
</aside>
<div class="rv" style="--d:.1s">
<div class="ach-head">
<h3>Site Achievements</h3>
<span class="ach-count"><b id="achCount">0</b>/8 UNLOCKED</span>
</div>
<div class="ach-grid" id="achGrid">
<article class="ach locked" data-ach="first"><div class="ach-ico">✚</div><h4 class="ach-name" data-n="FIRST BLOOD">FIRST BLOOD</h4><p class="ach-desc" data-d="Post your first message to the squad feed.">Post your first message to the squad feed.</p><span class="ach-xp">+50 XP</span></article>
<article class="ach locked" data-ach="clutch"><div class="ach-ico">⌖</div><h4 class="ach-name" data-n="CLUTCH CALL">CLUTCH CALL</h4><p class="ach-desc" data-d="Cast a vote in the weekly meta poll.">Cast a vote in the weekly meta poll.</p><span class="ach-xp">+100 XP</span></article>
<article class="ach locked" data-ach="lore"><div class="ach-ico">◈</div><h4 class="ach-name" data-n="LORE MASTER">LORE MASTER</h4><p class="ach-desc" data-d="Open the Wiki from the main navigation.">Open the Wiki from the main navigation.</p><span class="ach-xp">+75 XP</span></article>
<article class="ach locked" data-ach="patch"><div class="ach-ico">▤</div><h4 class="ach-name" data-n="PATCH ADDICT">PATCH ADDICT</h4><p class="ach-desc" data-d="Read every tab in Patch Intel.">Read every tab in Patch Intel.</p><span class="ach-xp">+100 XP</span></article>
<article class="ach locked" data-ach="squad"><div class="ach-ico">⚑</div><h4 class="ach-name" data-n="SQUAD UP">SQUAD UP</h4><p class="ach-desc" data-d="Answer the call to join the Discord.">Answer the call to join the Discord.</p><span class="ach-xp">+150 XP</span></article>
<article class="ach locked" data-ach="loadout"><div class="ach-ico">✉</div><h4 class="ach-name" data-n="QUARTERMASTER">QUARTERMASTER</h4><p class="ach-desc" data-d="Enlist in The Loadout weekly briefing.">Enlist in The Loadout weekly briefing.</p><span class="ach-xp">+120 XP</span></article>
<article class="ach locked" data-ach="oldschool" data-hidden="1"><div class="ach-ico">?</div><h4 class="ach-name" data-n="OLD SCHOOL">OLD SCHOOL</h4><p class="ach-desc" data-d="Enter the sacred sequence. Up, up, down, down…">A hidden achievement. Earn it to reveal it.</p><span class="ach-xp">+500 XP</span></article>
<article class="ach locked" data-ach="done"><div class="ach-ico">★</div><h4 class="ach-name" data-n="COMPLETIONIST">COMPLETIONIST</h4><p class="ach-desc" data-d="Unlock every other achievement on this card.">Unlock every other achievement on this card.</p><span class="ach-xp">+300 XP</span></article>
</div>
</div>
</div>
</div>
</section>
<!-- ===================== 07 COMMUNITY ===================== -->
<section class="section" id="community" aria-labelledby="communityTitle">
<div class="container">
<div class="sec-head">
<div>
<span class="kicker">[ 07 // The Community ]</span>
<h2 id="communityTitle" class="mask"><span class="mask-in">Players Vouch For Players</span></h2>
</div>
<p class="sec-note">Unedited, unpaid, occasionally unhinged. The good kind.</p>
</div>
<div class="testi-grid">
<article class="testi rv">
<span class="stars" aria-label="5 out of 5">★★★★★</span>
<p>"The patch-notes breakdowns alone are worth the bookmark. FRAGSOURCE reads like your most dialed-in duo partner — the one who actually read the changelog and tells you what matters before you queue."</p>
<div class="testi-foot">
<img src="https://i.pravatar.cc/88?u=pixelmarauder" alt="Avatar of pixelmarauder">
<div><b>@pixelmarauder</b><span>DISCORD MOD · DIAMOND II, VALDRA</span></div>
</div>
</article>
<article class="testi rv" style="--d:.08s">
<span class="stars" aria-label="5 out of 5">★★★★★</span>
<p>"I check Match Center before every scrim block. Their tier takes start arguments and finish them with receipts. When the ladder moves, it moved here first — usually by about six hours."</p>
<div class="testi-foot">
<img src="https://i.pravatar.cc/88?u=clutchfactor" alt="Avatar of clutchfactor">
<div><b>@clutchfactor</b><span>SEMI-PRO, CINDER SERIES</span></div>
</div>
</article>
<article class="testi rv" style="--d:.16s">
<span class="stars" aria-label="5 out of 5">★★★★★</span>
<p>"One Indie Spotlight feature and our wishlists tripled. These people actually play the games they cover — cold, start to finish — and it shows in every paragraph they write about us."</p>
<div class="testi-foot">
<img src="https://i.pravatar.cc/88?u=quietember" alt="Avatar of quietember">
<div><b>@quietember</b><span>INDIE DEV, PALE SIGNAL</span></div>
</div>
</article>
</div>
<div class="discord-banner rv">
<div>
<span class="mono" style="font-size:11px;letter-spacing:.24em;font-weight:700">THE BUNKER — OUR DISCORD</span>
<h3><b class="live" data-live="58412">58,412</b> players online right now.</h3>
</div>
<p>LFG channels, patch hot-takes within minutes of deploy, weekly viewer scrims with our casters, and a #clips channel that has launched three pro careers. Bring your rank. Bring your excuses.</p>
<a href="#" class="btn dark js-discord">Join Discord →</a>
</div>
</div>
</section>
<!-- ===================== 08 FAQ / SUPPORT ===================== -->
<section class="section" id="faq" aria-labelledby="faqTitle">
<div class="container">
<div class="sec-head">
<div>
<span class="kicker">[ 08 // Support ]</span>
<h2 id="faqTitle" class="mask"><span class="mask-in">Frequently Asked, Honestly Answered</span></h2>
</div>
<p class="sec-note">Still stuck? support@fragsource.gg — humans reply within 24h.</p>
</div>
<div class="faq-wrap">
<div class="faq-item rv">
<button class="faq-q" aria-expanded="false"><span class="qn">Q.01</span>How do your reviews get scored?<span class="faq-ico">+</span></button>
<div class="faq-a"><div class="faq-a-in"><p>Every game is scored across five axes — Design, Feel, Tech, World, and Replayability — by a reviewer who finished it. We never review pre-orders, we disclose every review code, and scores are locked in editorial before the PR team ever sees the piece. A 9 means we'd tell our own friends to spend money on it.</p></div></div>
</div>
<div class="faq-item rv" style="--d:.05s">
<button class="faq-q" aria-expanded="false"><span class="qn">Q.02</span>Can I submit my indie game for coverage?<span class="faq-ico">+</span></button>
<div class="faq-a"><div class="faq-a-in"><p>Yes — hit us through the pitch form with a build key, a short description, and what makes it weird. Our review queue runs six to eight weeks, Indie Spotlight slots open every Friday, and coverage is never paid for. If we cover it, it's because we couldn't stop playing it.</p></div></div>
</div>
<div class="faq-item rv" style="--d:.1s">
<button class="faq-q" aria-expanded="false"><span class="qn">Q.03</span>Do you only cover esports titles?<span class="faq-ico">+</span></button>
<div class="faq-a"><div class="faq-a-in"><p>Roughly 40% of coverage is competitive play — match centers, patch intel, tier lists. The rest is single-player deep-dives, MMO economy reports, and indie spotlights. Our wiki currently tracks over 1,200 games across every genre, including the cozy ones we pretend not to play at 2 AM.</p></div></div>
</div>
<div class="faq-item rv" style="--d:.15s">
<button class="faq-q" aria-expanded="false"><span class="qn">Q.04</span>How do I report a bug on the site or wiki?<span class="faq-ico">+</span></button>
<div class="faq-a"><div class="faq-a-in"><p>Open a support ticket or drop it in #bug-report on Discord with a screenshot if you can. Triage runs every 24 hours, wiki corrections usually ship same-day, and reporters of confirmed exploits get a permanent thank-you in the changelog. Yes, that's its own little leaderboard.</p></div></div>
</div>
<div class="faq-item rv" style="--d:.2s">
<button class="faq-q" aria-expanded="false"><span class="qn">Q.05</span>Do you accept sponsored content?<span class="faq-ico">+</span></button>
<div class="faq-a"><div class="faq-a-in"><p>We run clearly labeled [PAID] placements to keep the lights on, but sponsored content never touches reviews, scores, tier lists, or match coverage. The firewall between the business desk and the editorial desk is structural, boring, and non-negotiable. That's the whole policy.</p></div></div>
</div>
</div>
</div>
</section>
<!-- ===================== NEWSLETTER ===================== -->
<section class="section" id="loadout" aria-labelledby="loadoutTitle">
<div class="container">
<div class="loadout rv">
<div>
<span class="kicker" id="loadoutTitle">[ The Loadout // Weekly Briefing ]</span>
<h3>Five links. Zero fluff. <i>Every Friday, 09:00 UTC.</i></h3>
<p>One patch breakdown, one deep-dive feature, three indie picks, and the weekend's tournament schedule — read by <b style="color:var(--txt)">41,208 players</b>. No affiliate bait, no "you won't believe", no more than five things. It's in the name.</p>
</div>
<div>
<form class="loadout-form" id="loadoutForm" novalidate>
<input type="email" name="email" placeholder="you@battlestation.gg" aria-label="Email address" required>
<button class="btn" type="submit">Enlist</button>
</form>
<p class="loadout-note">UNSUBSCRIBE ANYTIME · WE NEVER SELL YOUR DATA · GG</p>
</div>
</div>
</div>
</section>
</main>
<!-- ===================== FOOTER ===================== -->
<footer>
<div class="container">
<div class="foot-grid">
<div class="foot-brand">
<a class="brand" href="#top">
<img src="https://placehold.co/72x72/c8ff1f/080b0f?text=FS&font=montserrat" alt="" width="42" height="42">
<span class="brand-txt"><strong>FRAG<i>SOURCE</i></strong><em>YOUR DAILY SPAWN POINT</em></span>
</a>
<p>FRAGSOURCE is an independent gaming publication covering esports, reviews, patch intelligence and the people who play. Founded 2019. 100% player-funded, permanently caffeinated.</p>
<address class="foot-contact">
128 Bit Avenue, Suite 42 · Austin, TX 78701<br>
<a href="mailto:press@fragsource.gg">press@fragsource.gg</a> · <a href="mailto:support@fragsource.gg">support@fragsource.gg</a><br>
+1 (512) 555-0142
</address>
</div>
<div class="foot-col">
<h4>Sections</h4>
<a href="#news">Latest Drops</a>
<a href="#review">Reviews</a>
<a href="#esports">Esports</a>
<a href="#patches">Patch Notes</a>
<a href="#indie">Indie Spotlight</a>
<a href="#streaming">Streaming</a>
</div>
<div class="foot-col">
<h4>Company</h4>
<a href="#top">About Us</a>
<a href="#top">Masthead</a>
<a href="#top">Careers — we're hiring 3</a>
<a href="#top">Press Kit</a>
<a href="#top">Advertise</a>
<a href="#faq">Contact</a>
</div>
<div class="foot-col">
<h4>Support</h4>
<a href="#faq">Help Center</a>
<a href="#faq">Report a Bug</a>
<a href="#faq">Community Rules</a>
<a href="#faq">Accessibility</a>
<a href="#" class="js-wiki">Game Wiki</a>
<a href="#loadout">Newsletter</a>
</div>
</div>
<div class="socials" style="padding-bottom:26px">
<a href="#" class="js-discord">DISCORD</a>
<a href="#streaming">TWITCH</a>
<a href="#community">YOUTUBE</a>
<a href="#community">X / TWITTER</a>
<a href="#loadout">RSS FEED</a>
</div>
<div class="foot-bottom">
<span>© <span id="year">2025</span> FRAGSOURCE MEDIA LTD. ALL RIGHTS RESERVED.</span>
<a href="#faq">PRIVACY</a><a href="#faq">TERMS</a><a href="#faq">COOKIES</a>
<span class="gg">GG — AND DRINK WATER.</span>
</div>
</div>
</footer>
<div class="toast" id="toast" role="status" aria-live="polite"></div>
<script>
(function(){
"use strict";
document.documentElement.classList.add('js');
var rm = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
function $(s,c){return (c||document).querySelector(s)}
function $$(s,c){return Array.prototype.slice.call((c||document).querySelectorAll(s))}
/* ---------- toast ---------- */
var toast=$('#toast'), toastT;
function showToast(label,msg){
toast.innerHTML='<b>'+label+'</b>'+msg;
toast.classList.add('show');
clearTimeout(toastT);
toastT=setTimeout(function(){toast.classList.remove('show')},3400);
}
/* ---------- mobile nav ---------- */
var burger=$('#burger');
burger.addEventListener('click',function(){
var open=document.body.classList.toggle('nav-open');
burger.setAttribute('aria-expanded',open);
});
$$('.nav a').forEach(function(a){a.addEventListener('click',function(){document.body.classList.remove('nav-open');burger.setAttribute('aria-expanded','false')})});
/* ---------- scramble decode ---------- */
var GLYPHS='!<>-_\\/[]{}=+*^?#01';
function scramble(el){
var txt=el.getAttribute('data-text')||el.textContent;
if(rm){el.textContent=txt;return}
var frame=0,total=txt.length;
var iv=setInterval(function(){
var out='';
for(var i=0;i<total;i++){
if(i<frame/2){out+=txt[i]}
else if(txt[i]===' '){out+=' '}
else{out+=GLYPHS[Math.floor(Math.random()*GLYPHS.length)]}
}
el.textContent=out;frame++;
if(frame/2>=total){el.textContent=txt;clearInterval(iv)}
},26);
}
/* ---------- count-up ---------- */
function fmt(v,dec,suf){return v.toLocaleString('en-US',{minimumFractionDigits:dec,maximumFractionDigits:dec})+suf}
function countUp(el){
var t=parseFloat(el.getAttribute('data-count')),dec=+(el.getAttribute('data-dec')||0),suf=el.getAttribute('data-suf')||'';
if(rm){el.textContent=fmt(t,dec,suf);return}
var st=null,dur=1500;
function step(n){if(!st)st=n;var p=Math.min(1,(n-st)/dur),e=1-Math.pow(1-p,3);
el.textContent=fmt(t*e,dec,suf);if(p<1)requestAnimationFrame(step)}
requestAnimationFrame(step);
}
/* ---------- intersection reveals ---------- */
var io=new IntersectionObserver(function(entries){
entries.forEach(function(en){
if(!en.isIntersecting)return;
var el=en.target;
el.classList.add('on');
if(el.classList.contains('scramble'))scramble(el);
$$('.count',el.parentNode===null?el:el).forEach(function(){});
if(el.classList.contains('count'))countUp(el);
io.unobserve(el);
});
},{threshold:.18});
$$('.rv,.mask,.count,.scramble,.review-grid').forEach(function(el){io.observe(el)});
/* ring triggers on the review section */
var revSec=$('#review');
if(revSec){new IntersectionObserver(function(es,ob){es.forEach(function(e){if(e.isIntersecting){revSec.classList.add('on');ob.disconnect()}})},{threshold:.15}).observe(revSec)}
/* ---------- live viewer drift ---------- */
function renderLive(el){el.textContent=(+el.getAttribute('data-live')).toLocaleString('en-US')}
$$('.live[data-live]').forEach(renderLive);
setInterval(function(){
$$('.live[data-live]').forEach(function(el){
var v=+el.getAttribute('data-live');
v=Math.max(800,v+Math.floor(Math.random()*23-10));
el.setAttribute('data-live',v);renderLive(el);
});
},4000);
/* ---------- rank reset countdown ---------- */
var target=Date.now()+(2*3600+11*60+54)*1000, cd=$('#countdown');
function pad(n){return (n<10?'0':'')+n}
setInterval(function(){
var s=Math.max(0,Math.floor((target-Date.now())/1000));
if(s===0)target=Date.now()+3*3600*1000;
cd.textContent=pad(Math.floor(s/3600))+':'+pad(Math.floor(s%3600/60))+':'+pad(s%60);
},1000);
/* ---------- patch tabs ---------- */
var tabsVisited={t1:true};
$$('.tab').forEach(function(tab){
tab.addEventListener('click',function(){
$$('.tab').forEach(function(t){t.classList.remove('active');t.setAttribute('aria-selected','false')});
tab.classList.add('active');tab.setAttribute('aria-selected','true');
$$('.tab-panel').forEach(function(p){p.classList.remove('active')});
var panel=$('#'+tab.getAttribute('data-tab'));
if(panel)panel.classList.add('active');
tabsVisited[tab.getAttribute('data-tab')]=true;
if(Object.keys(tabsVisited).length>=3)unlock('patch');
});
});
/* ---------- community poll ---------- */
var poll=$('#poll'),pollNote=$('#pollNote');
var savedVote=null;try{savedVote=localStorage.getItem('fs-poll')}catch(e){}
function renderPoll(chosen){
var opts=$$('.poll-opt',poll),total=0;
opts.forEach(function(o){total+= +o.getAttribute('data-base') + (o.getAttribute('data-vote')===chosen?1:0)});
opts.forEach(function(o){
var v=o.getAttribute('data-vote');
var c=+o.getAttribute('data-base')+(v===chosen?1:0);
var pct=Math.round(c/total*100);
$('.bar',o).style.width=pct+'%';
$('.po-pct',o).textContent=pct+'%';
o.classList.toggle('chosen',v===chosen);
});
poll.classList.add('voted');
}
function castVote(v){
try{localStorage.setItem('fs-poll',v)}catch(e){}
renderPoll(v);
pollNote.textContent='Vote logged — results lock Sunday 23:59 UTC. +100 XP CLUTCH CALL.';
unlock('clutch');
}
if(savedVote){renderPoll(savedVote);pollNote.textContent='Your vote from this device is locked in. Results lock Sunday 23:59 UTC.'}
$$('.poll-opt',poll).forEach(function(o){o.addEventListener('click',function(){if(!poll.classList.contains('voted'))castVote(o.getAttribute('data-vote'))})});
/* ---------- FAQ accordion ---------- */
$$('.faq-item').forEach(function(item){
var q=$('.faq-q',item);
q.addEventListener('click',function(){
var open=item.classList.contains('open');
$$('.faq-item.open').forEach(function(i){i.classList.remove('open');$('.faq-q',i).setAttribute('aria-expanded','false')});
if(!open){item.classList.add('open');q.setAttribute('aria-expanded','true')}
});
});
/* ---------- achievements / player card ---------- */
var META={first:50,clutch:100,lore:75,patch:100,squad:150,loadout:120,oldschool:500,done:300};
var LEVELS=[[0,'ROOKIE'],[150,'GRINDER'],[350,'VETERAN'],[600,'ELITE'],[900,'LEGEND']];
var state={u:[],xp:0};
try{var s=localStorage.getItem('fs-ach');if(s)state=JSON.parse(s)}catch(e){}
function save(){try{localStorage.setItem('fs-ach',JSON.stringify(state))}catch(e){}}
function renderPlayer(){
var lvl=0;for(var i=0;i<LEVELS.length;i++){if(state.xp>=LEVELS[i][0])lvl=i}
var cur=LEVELS[lvl],nxt=LEVELS[lvl+1];
$('#levelName').textContent=cur[1];
$('#levelNum').textContent=('0'+(lvl+1)).slice(-2);
var pct=nxt?Math.min(100,Math.round((state.xp-cur[0])/(nxt[0]-cur[0])*100)):100;
$('#xpFill').style.width=pct+'%';
$('#xpNow').textContent=state.xp+' XP';
$('#xpNext').textContent=nxt?nxt[0]+' XP → '+nxt[1]:'MAX RANK ACHIEVED';
$('#achCount').textContent=state.u.length;
$$('.ach').forEach(function(card){
var id=card.getAttribute('data-ach'),un=state.u.indexOf(id)>-1;
card.classList.toggle('unlocked',un);card.classList.toggle('locked',!un);
if(card.getAttribute('data-hidden')){
$('.ach-name',card).textContent=un?$('.ach-name',card).getAttribute('data-n'):'? ? ? ? ?';
$('.ach-desc',card).textContent=un?$('.ach-desc',card).getAttribute('data-d'):'A hidden achievement. Earn it to reveal it.';
$('.ach-ico',card).textContent=un?'▲':'?';
}
});
}
function unlock(id){
if(state.u.indexOf(id)>-1)return;
state.u.push(id);state.xp+=META[id];save();renderPlayer();
var card=$('.ach[data-ach="'+id+'"]');
if(card){card.classList.add('pop');setTimeout(function(){card.classList.remove('pop')},700)}
var name=card?$('.ach-name',card).getAttribute('data-n'):id.toUpperCase();
showToast('ACHIEVEMENT UNLOCKED',name+' · +'+META[id]+' XP');
if(id!=='done'&&state.u.length===Object.keys(META).length-1){setTimeout(function(){unlock('done')},900)}
}
renderPlayer();
/* squad feed → first blood */
$('#feedForm').addEventListener('submit',function(ev){
ev.preventDefault();
var inp=$('input',this),v=inp.value.trim();
if(!v)return;
var li=document.createElement('li');
li.innerHTML='<b>YOU</b> · just now — '+v.replace(/</g,'<');
$('#feedList').prepend(li);
inp.value='';
unlock('first');
});
/* wiki links → lore master */
$$('.js-wiki').forEach(function(a){a.addEventListener('click',function(ev){ev.preventDefault();
showToast('WIKI','The full wiki ships with the app — lore points granted anyway.');unlock('lore')})});
/* discord buttons → squad up */
$$('.js-discord').forEach(function(a){a.addEventListener('click',function(ev){
if(a.getAttribute('href')==='#')ev.preventDefault();
showToast('SQUAD UP','Invite sent — see you in The Bunker.');unlock('squad')})});
/* ---------- newsletter ---------- */
$('#loadoutForm').addEventListener('submit',function(ev){
ev.preventDefault();
var email=$('input',this).value.trim();
if(email.indexOf('@')<1){showToast('LOADOUT','That email looks like a misclick. Try again, recruit.');return}
this.outerHTML='<p class="loadout-done">✓ ENLISTED. First Loadout drops Friday 09:00 UTC.<br><span style="color:var(--dim);font-size:10px;letter-spacing:.14em">CONFIRMATION SENT TO '+email.replace(/</g,'<').toUpperCase()+'</span></p>';
unlock('loadout');
});
/* ---------- konami code ---------- */
var SEQ=['ArrowUp','ArrowUp','ArrowDown','ArrowDown','ArrowLeft','ArrowRight','ArrowLeft','ArrowRight','b','a'],buf=[];
document.addEventListener('keydown',function(ev){
buf.push(ev.key);if(buf.length>SEQ.length)buf.shift();
if(buf.join(',')===SEQ.join(',')){
document.body.classList.add('glitching');
setTimeout(function(){document.body.classList.remove('glitching')},1200);
showToast('SECRET FOUND','↑↑↓↓←→←→BA — you absolute veteran.');
unlock('oldschool');buf=[];
}
});
/* ---------- footer year ---------- */
$('#year').textContent=new Date().getFullYear();
})();
</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:47:20.927Z",
"url": "https://benchmark.aimac.invalid/2b8dab2b677ef331b1c14ac689f41004e434791a1bac931ccfa66a42f053a416.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": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "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": "<div class=\"ticker\" aria-label=\"Latest headlines ticker\">",
"target": [
".ticker"
]
}
]
},
{
"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": "<div class=\"ticker\" aria-label=\"Latest headlines ticker\">",
"target": [
".ticker"
]
}
]
},
{
"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": "<svg class=\"ring\" viewBox=\"0 0 160 160\" role=\"img\" aria-label=\"Score 9.2 out of 10\">\n <circle class=\"ring-bg\" cx=\"80\" cy=\"80\" r=\"66\"></circle>\n <circle class=\"ring-fg\" cx=\"80\" cy=\"80\" r=\"66\"></circle>\n </svg>",
"target": [
"svg"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "focusable-modal-open",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements while a modal is open"
},
{
"id": "focusable-disabled",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements contained within element"
},
{
"id": "focusable-not-tabbable",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements contained within element"
}
],
"none": [],
"impact": null,
"html": "<div class=\"ticker-group\" aria-hidden=\"true\">",
"target": [
".ticker-group[aria-hidden=\"true\"]"
]
}
]
},
{
"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 class=\"brand\" href=\"#top\" aria-label=\"FRAGSOURCE home\">\n <img src=\"https://placehold.co/72x72/c8ff1f/080b0f?text=FS&font=montserrat\" alt=\"\" width=\"42\" height=\"42\">\n <span class=\"brand-txt\"><strong>FRAG<i>SOURCE</i></strong><em>YOUR DAILY SPAWN POINT</em></span>\n </a>",
"target": [
"a[aria-label=\"FRAGSOURCE 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": "<svg class=\"ring\" viewBox=\"0 0 160 160\" role=\"img\" aria-label=\"Score 9.2 out of 10\">\n <circle class=\"ring-bg\" cx=\"80\" cy=\"80\" r=\"66\"></circle>\n <circle class=\"ring-fg\" cx=\"80\" cy=\"80\" r=\"66\"></circle>\n </svg>",
"target": [
"svg"
]
}
]
},
{
"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=\"tabs\" role=\"tablist\" aria-label=\"Patch versions\">",
"target": [
".tabs"
]
}
]
},
{
"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": "<button class=\"tab active\" role=\"tab\" aria-selected=\"true\" data-tab=\"t1\">v2.4.1 <em>HOT</em></button>",
"target": [
"button[data-tab=\"t1\"]"
]
}
]
},
{
"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": "<svg class=\"ring\" viewBox=\"0 0 160 160\" role=\"img\" aria-label=\"Score 9.2 out of 10\">\n <circle class=\"ring-bg\" cx=\"80\" cy=\"80\" r=\"66\"></circle>\n <circle class=\"ring-fg\" cx=\"80\" cy=\"80\" r=\"66\"></circle>\n </svg>",
"target": [
"svg"
]
}
]
},
{
"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": "<div class=\"ticker\" aria-label=\"Latest headlines ticker\">",
"target": [
".ticker"
]
}
]
},
{
"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": "<div class=\"ticker\" aria-label=\"Latest headlines ticker\">",
"target": [
".ticker"
]
}
]
},
{
"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": "<p class=\"lede rv on\" style=\"--d:.1s\">",
"target": [
".lede"
]
}
]
},
{
"id": "button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure buttons have discernible text",
"help": "Buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has inner text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"tab active\" role=\"tab\" aria-selected=\"true\" data-tab=\"t1\">v2.4.1 <em>HOT</em></button>",
"target": [
"button[data-tab=\"t1\"]"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "internal-link-present",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Valid skip link found"
},
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1 id=\"heroTitle\" class=\"scramble on\" data-text=\"THE META JUST SHIFTED.\">THE META JUST SHIFTED.</h1>",
"target": [
"#heroTitle"
]
},
{
"html": "<h2 id=\"newsTitle\" class=\"mask\"><span class=\"mask-in\">Fresh From The Frontline</span></h2>",
"target": [
"#newsTitle"
]
},
{
"html": "<h3><a href=\"#news\" style=\"text-decoration:none\">NOVA9 survive match point twice, reverse-sweep HEX ORDER to reach the Astra Grand Final</a></h3>",
"target": [
".wide > .news-body > h3"
]
},
{
"html": "<h3><a href=\"#review\" style=\"text-decoration:none\">Tide of Glass is Starforge Odyssey's boldest expansion yet \u2014 and its riskiest</a></h3>",
"target": [
".news-card:nth-child(2) > .news-body > h3"
]
},
{
"html": "<h3><a href=\"#patches\" style=\"text-decoration:none\">Every change in Valdria 2.4.1, ranked by how hard it will tilt you</a></h3>",
"target": [
".news-card:nth-child(3) > .news-body > h3"
]
},
{
"html": "<h3><a href=\"#indie\" style=\"text-decoration:none\">Hollow Choir passes 1M copies \u2014 a postmortem with two-person studio Pale Signal</a></h3>",
"target": [
".news-card:nth-child(4) > .news-body > h3"
]
},
{
"html": "<h3><a href=\"#news\" style=\"text-decoration:none\">Ironvale Tactics: five opening builds that survive ranked week one</a></h3>",
"target": [
".news-card:nth-child(5) > .news-body > h3"
]
},
{
"html": "<h3><a href=\"#news\" style=\"text-decoration:none\">The Neon Drift GP time-trial scene just exploded \u2014 and it's all about 0.03 seconds</a></h3>",
"target": [
".news-card:nth-child(6) > .news-body > h3"
]
},
{
"html": "<h3 class=\"panel-h\"><span class=\"dot\" aria-hidden=\"true\"></span> Live Now</h3>",
"target": [
".panel.rv:nth-child(1) > .panel-h"
]
},
{
"html": "<h3 class=\"panel-h\">Stream Schedule</h3>",
"target": [
".panel.rv:nth-child(2) > .panel-h"
]
},
{
"html": "<h3 class=\"panel-h\">Tournament Results</h3>",
"target": [
".panel.rv:nth-child(3) > .panel-h"
]
},
{
"html": "<h3 class=\"panel-h\">Editor's Picks</h3>",
"target": [
".panel.rv:nth-child(4) > .panel-h"
]
},
{
"html": "<h2 id=\"reviewTitle\" class=\"mask\"><span class=\"mask-in\">Tide of Glass, Measured</span></h2>",
"target": [
"#reviewTitle"
]
},
{
"html": "<h3 class=\"rv\">Starforge Odyssey: Tide of Glass</h3>",
"target": [
".review-body > h3"
]
},
{
"html": "<h2 id=\"patchTitle\" class=\"mask\"><span class=\"mask-in\">Buffs, Nerfs & The Fine Print</span></h2>",
"target": [
"#patchTitle"
]
},
{
"html": "<h3>Who owns the ranked meta?</h3>",
"target": [
".poll-box > h3"
]
},
{
"html": "<h2 id=\"esportsTitle\" class=\"mask\"><span class=\"mask-in\">Esports, As It Happens</span></h2>",
"target": [
"#esportsTitle"
]
},
{
"html": "<h3 class=\"panel-h\" style=\"margin:20px 22px 8px;border-bottom:1px solid var(--line);padding-bottom:14px\">Upcoming Fixtures</h3>",
"target": [
".upcoming > .panel-h"
]
},
{
"html": "<h3 class=\"panel-h\">Season 09 Ladder \u2014 Top 5</h3>",
"target": [
".ladder > .panel-h"
]
},
{
"html": "<h2 id=\"indieTitle\" class=\"mask\"><span class=\"mask-in\">Small Teams, Big Worlds</span></h2>",
"target": [
"#indieTitle"
]
},
{
"html": "<h3>Hollow Choir</h3>",
"target": [
".postcard:nth-child(1) > h3"
]
},
{
"html": "<h3>Tinheart Salvage</h3>",
"target": [
".postcard:nth-child(2) > h3"
]
},
{
"html": "<h3>Pale Route</h3>",
"target": [
".postcard:nth-child(3) > h3"
]
},
{
"html": "<h2 id=\"playerTitle\" class=\"mask\"><span class=\"mask-in\">Your Achievement Tracker</span></h2>",
"target": [
"#playerTitle"
]
},
{
"html": "<h3>Site Achievements</h3>",
"target": [
".ach-head > h3"
]
},
{
"html": "<h4 class=\"ach-name\" data-n=\"FIRST BLOOD\">FIRST BLOOD</h4>",
"target": [
"h4[data-n=\"FIRST BLOOD\"]"
]
},
{
"html": "<h4 class=\"ach-name\" data-n=\"CLUTCH CALL\">CLUTCH CALL</h4>",
"target": [
"h4[data-n=\"CLUTCH CALL\"]"
]
},
{
"html": "<h4 class=\"ach-name\" data-n=\"LORE MASTER\">LORE MASTER</h4>",
"target": [
"h4[data-n=\"LORE MASTER\"]"
]
},
{
"html": "<h4 class=\"ach-name\" data-n=\"PATCH ADDICT\">PATCH ADDICT</h4>",
"target": [
"h4[data-n=\"PATCH ADDICT\"]"
]
},
{
"html": "<h4 class=\"ach-name\" data-n=\"SQUAD UP\">SQUAD UP</h4>",
"target": [
"h4[data-n=\"SQUAD UP\"]"
]
},
{
"html": "<h4 class=\"ach-name\" data-n=\"QUARTERMASTER\">QUARTERMASTER</h4>",
"target": [
"h4[data-n=\"QUARTERMASTER\"]"
]
},
{
"html": "<h4 class=\"ach-name\" data-n=\"OLD SCHOOL\">? ? ? ? ?</h4>",
"target": [
"h4[data-n=\"OLD SCHOOL\"]"
]
},
{
"html": "<h4 class=\"ach-name\" data-n=\"COMPLETIONIST\">COMPLETIONIST</h4>",
"target": [
"h4[data-n=\"COMPLETIONIST\"]"
]
},
{
"html": "<h2 id=\"communityTitle\" class=\"mask\"><span class=\"mask-in\">Players Vouch For Players</span></h2>",
"target": [
"#communityTitle"
]
},
{
"html": "<h3><b class=\"live\" data-live=\"58412\">58,412</b> players online right now.</h3>",
"target": [
".discord-banner > div > h3"
]
},
{
"html": "<h2 id=\"faqTitle\" class=\"mask\"><span class=\"mask-in\">Frequently Asked, Honestly Answered</span></h2>",
"target": [
"#faqTitle"
]
},
{
"html": "<h3>Five links. Zero fluff. <i>Every Friday, 09:00 UTC.</i></h3>",
"target": [
".loadout > div:nth-child(1) > h3"
]
},
{
"html": "<h4>Sections</h4>",
"target": [
".foot-col:nth-child(2) > h4"
]
},
{
"html": "<h4>Company</h4>",
"target": [
".foot-col:nth-child(3) > h4"
]
},
{
"html": "<h4>Support</h4>",
"target": [
".foot-col:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main id=\"main\">",
"target": [
"#main"
]
}
],
"impact": "serious",
"message": "Page has a landmark region"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\" class=\"js\">",
"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": "#8fa0b3",
"bgColor": "#05070a",
"contrastRatio": 7.53,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 7.53"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span class=\"hot\"><b>LIVE</b> NOVA9 2\u20131 HEX ORDER \u00b7 ASTRA INVITATIONAL GRAND FINAL \u00b7 MAP 3</span>",
"target": [
".ticker-group:nth-child(1) > .hot"
]
}
]
},
{
"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\" class=\"js\">",
"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": "siteNav",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<nav class=\"nav\" id=\"siteNav\" aria-label=\"Primary navigation\">",
"target": [
"#siteNav"
]
}
]
},
{
"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=\"text\" maxlength=\"120\" placeholder=\"gg, just hit the site\u2026\" aria-label=\"Post to squad feed\" required=\"\">",
"target": [
"input[type=\"text\"]"
]
}
]
},
{
"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\" class=\"js\">",
"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\" class=\"js\">",
"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"
},
{
"id": "presentational-role",
"data": {
"role": "presentation"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were overridden with role=\"presentation\""
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/72x72/c8ff1f/080b0f?text=FS&font=montserrat\" alt=\"\" width=\"42\" height=\"42\">",
"target": [
"a[aria-label=\"FRAGSOURCE home\"] > img[alt=\"\"][width=\"42\"][height=\"42\"]"
]
}
]
},
{
"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=\"text\" maxlength=\"120\" placeholder=\"gg, just hit the site\u2026\" aria-label=\"Post to squad feed\" required=\"\">",
"target": [
"input[type=\"text\"]"
]
}
]
},
{
"id": "link-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a class=\"skip\" href=\"#main\">Skip to content</a>",
"target": [
".skip"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul class=\"hud-stats rv on\" style=\"--d:.3s\">\n <li>SERVERS <b class=\"volt\">ONLINE</b></li>\n <li>OPERATIVES <b class=\"live\" data-live=\"1248302\">1,248,302</b></li>\n <li>RANK RESET IN <b id=\"countdown\">02:11:51</b></li>\n </ul>",
"target": [
".hud-stats"
]
}
]
},
{
"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>SERVERS <b class=\"volt\">ONLINE</b></li>",
"target": [
".hud-stats > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://picsum.photos/seed/valdra-arena/1100/820\" alt=\"Key art from Valdria: Ashfall Protocol's new Cinder Spire arena\" width=\"1100\" height=\"820\">",
"target": [
"img[width=\"1100\"]"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute exists and is not empty"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<svg class=\"ring\" viewBox=\"0 0 160 160\" role=\"img\" aria-label=\"Score 9.2 out of 10\">\n <circle class=\"ring-bg\" cx=\"80\" cy=\"80\" r=\"66\"></circle>\n <circle class=\"ring-fg\" cx=\"80\" cy=\"80\" r=\"66\"></circle>\n </svg>",
"target": [
"svg"
]
}
]
},
{
"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": 144,
"height": 39.8
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (144px by 39.8px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a class=\"skip\" href=\"#main\">Skip to content</a>",
"target": [
".skip"
]
}
]
},
{
"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=\"score-meta\">",
"target": [
"table"
]
}
]
},
{
"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=\"score-meta\">",
"target": [
"table"
]
}
]
}
],
"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=\"ticker\" aria-label=\"Latest headlines ticker\">",
"target": [
".ticker"
],
"failureSummary": "Fix all of the following:\n aria-label attribute is not well supported on a div with no valid role attribute."
}
]
}
],
"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": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "6.8pt (9px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-head\" id=\"top\">",
"target": [
"#top"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 6.8pt (9px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<em>YOUR DAILY SPAWN POINT</em>",
"target": [
"a[aria-label=\"FRAGSOURCE home\"] > .brand-txt > em"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 6.8pt (9px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<li>SERVERS <b class=\"volt\">ONLINE</b></li>",
"target": [
".hud-stats > li:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<li>OPERATIVES <b class=\"live\" data-live=\"1248302\">1,248,302</b></li>",
"target": [
".hud-stats > li:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<li>RANK RESET IN <b id=\"countdown\">02:11:51</b></li>",
"target": [
".hud-stats > li:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"sec-note\">Reported, played, and written by people with more hours logged than you.</p>",
"target": [
"#news > .container > .sec-head > .sec-note"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"sec-note\">Scored across five axes. Review code supplied by publisher \u2014 disclosed, always.</p>",
"target": [
"#review > .container > .sec-head > .sec-note"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"sec-note\">We read the full changelog so your rank doesn't have to suffer for it.</p>",
"target": [
"#patches > .container > .sec-head > .sec-note"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"sec-note\">Live scores, bracket tracking and ladder math \u2014 updated from tournament servers.</p>",
"target": [
"#esports > .container > .sec-head > .sec-note"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"sec-note\">Every Friday we pin three indies to the board. No ad buys. Ever.</p>",
"target": [
"#indie > .container > .sec-head > .sec-note"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"sec-note\">Reading the site is a game too. Earn XP, climb ranks, flex accordingly.</p>",
"target": [
"#player > .container > .sec-head > .sec-note"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"sec-note\">Unedited, unpaid, occasionally unhinged. The good kind.</p>",
"target": [
"#community > .container > .sec-head > .sec-note"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"sec-note\">Still stuck? support@fragsource.gg \u2014 humans reply within 24h.</p>",
"target": [
"#faq > .container > .sec-head > .sec-note"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#05070a",
"contrastRatio": 3.69,
"fontSize": "6.8pt (9px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer>",
"target": [
"body > footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 6.8pt (9px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<em>YOUR DAILY SPAWN POINT</em>",
"target": [
".foot-brand > .brand[href$=\"#top\"] > .brand-txt > em"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 6.8pt (9px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#05070a",
"contrastRatio": 3.69,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer>",
"target": [
"body > footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<address class=\"foot-contact\">\n 128 Bit Avenue, Suite 42 \u00b7 Austin, TX 78701<br>\n <a href=\"mailto:press@fragsource.gg\">press@fragsource.gg</a> \u00b7 <a href=\"mailto:support@fragsource.gg\">support@fragsource.gg</a><br>\n +1 (512) 555-0142\n </address>",
"target": [
"address"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#05070a",
"contrastRatio": 3.69,
"fontSize": "7.9pt (10.5px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer>",
"target": [
"body > footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>\u00a9 <span id=\"year\">2026</span> FRAGSOURCE MEDIA LTD. ALL RIGHTS RESERVED.</span>",
"target": [
".foot-bottom > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#05070a",
"contrastRatio": 3.69,
"fontSize": "7.9pt (10.5px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer>",
"target": [
"body > footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span id=\"year\">2026</span>",
"target": [
"#year"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#05070a",
"contrastRatio": 3.69,
"fontSize": "7.9pt (10.5px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer>",
"target": [
"body > footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#faq\">PRIVACY</a>",
"target": [
".foot-bottom > a[href$=\"#faq\"]:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#05070a",
"contrastRatio": 3.69,
"fontSize": "7.9pt (10.5px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer>",
"target": [
"body > footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#faq\">TERMS</a>",
"target": [
".foot-bottom > a[href$=\"#faq\"]:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#05070a",
"contrastRatio": 3.69,
"fontSize": "7.9pt (10.5px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer>",
"target": [
"body > footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#faq\">COOKIES</a>",
"target": [
".foot-bottom > a[href$=\"#faq\"]:nth-child(4)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"statbar rv on\" aria-label=\"FRAGSOURCE by the numbers\">",
"target": [
".statbar"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"count on\" data-count=\"2.4\" data-dec=\"1\" data-suf=\"M\">2.3M</span>",
"target": [
"span[data-count=\"2.4\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"statbar rv on\" aria-label=\"FRAGSOURCE by the numbers\">",
"target": [
".statbar"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Monthly readers</span>",
"target": [
".stat:nth-child(1) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"statbar rv on\" aria-label=\"FRAGSOURCE by the numbers\">",
"target": [
".statbar"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"count on\" data-count=\"1842\">1,751</span>",
"target": [
"span[data-count=\"1842\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"statbar rv on\" aria-label=\"FRAGSOURCE by the numbers\">",
"target": [
".statbar"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Reviews published</span>",
"target": [
".stat:nth-child(2) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"statbar rv on\" aria-label=\"FRAGSOURCE by the numbers\">",
"target": [
".statbar"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"count on\" data-count=\"326\">310</span>",
"target": [
"span[data-count=\"326\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"statbar rv on\" aria-label=\"FRAGSOURCE by the numbers\">",
"target": [
".statbar"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Tournaments covered</span>",
"target": [
".stat:nth-child(3) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"statbar rv on\" aria-label=\"FRAGSOURCE by the numbers\">",
"target": [
".statbar"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"count on\" data-count=\"58.4\" data-dec=\"1\" data-suf=\"K\">55.5K</span>",
"target": [
"span[data-count=\"58.4\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"statbar rv on\" aria-label=\"FRAGSOURCE by the numbers\">",
"target": [
".statbar"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Discord members</span>",
"target": [
".stat:nth-child(4) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card wide rv on\">",
"target": [
".wide"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>By <b>Mara Voss</b></span>",
"target": [
".wide > .news-body > .news-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card wide rv on\">",
"target": [
".wide"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>2 hrs ago</span>",
"target": [
".wide > .news-body > .news-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card wide rv on\">",
"target": [
".wide"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>6 min read</span>",
"target": [
".wide > .news-body > .news-meta > span:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\">",
"target": [
".panel.on.rv"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"s-g\">VALDRA \u00b7 RANKED GRIND</div>",
"target": [
".stream-row:nth-child(2) > div:nth-child(2) > .s-g"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\">",
"target": [
".panel.on.rv"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"s-g\">IRONVALE TACTICS \u00b7 MASTER LADDER</div>",
"target": [
".stream-row:nth-child(3) > div:nth-child(2) > .s-g"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\">",
"target": [
".panel.on.rv"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"s-g\">HOLLOW CHOIR \u00b7 100% RUN</div>",
"target": [
".stream-row:nth-child(4) > div:nth-child(2) > .s-g"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.05s\">",
"target": [
".news-card.on:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>By <b>Deon Okafor</b></span>",
"target": [
".news-card.on:nth-child(2) > .news-body > .news-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.05s\">",
"target": [
".news-card.on:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>5 hrs ago</span>",
"target": [
".news-card.on:nth-child(2) > .news-body > .news-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.05s\">",
"target": [
".news-card.on:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>12 min read</span>",
"target": [
".news-card.on:nth-child(2) > .news-body > .news-meta > span:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.1s\">",
"target": [
".news-card.on:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>By <b>Ilya Brandt</b></span>",
"target": [
".news-card.on:nth-child(3) > .news-body > .news-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.1s\">",
"target": [
".news-card.on:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>9 hrs ago</span>",
"target": [
".news-card.on:nth-child(3) > .news-body > .news-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.1s\">",
"target": [
".news-card.on:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>8 min read</span>",
"target": [
".news-card.on:nth-child(3) > .news-body > .news-meta > span:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.05s\">",
"target": [
".news-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>By <b>Deon Okafor</b></span>",
"target": [
".news-card:nth-child(2) > .news-body > .news-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.05s\">",
"target": [
".news-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>5 hrs ago</span>",
"target": [
".news-card:nth-child(2) > .news-body > .news-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.05s\">",
"target": [
".news-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>12 min read</span>",
"target": [
".news-card:nth-child(2) > .news-body > .news-meta > span:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.1s\">",
"target": [
".news-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>By <b>Ilya Brandt</b></span>",
"target": [
".news-card:nth-child(3) > .news-body > .news-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.1s\">",
"target": [
".news-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>9 hrs ago</span>",
"target": [
".news-card:nth-child(3) > .news-body > .news-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.1s\">",
"target": [
".news-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>8 min read</span>",
"target": [
".news-card:nth-child(3) > .news-body > .news-meta > span:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.05s\">",
"target": [
".news-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>By <b>Rita Chen</b></span>",
"target": [
".news-card:nth-child(4) > .news-body > .news-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.05s\">",
"target": [
".news-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Yesterday</span>",
"target": [
".news-card:nth-child(4) > .news-body > .news-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.05s\">",
"target": [
".news-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>10 min read</span>",
"target": [
".news-card:nth-child(4) > .news-body > .news-meta > span:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.1s\">",
"target": [
".news-card:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>By <b>Sam Ferro</b></span>",
"target": [
".news-card:nth-child(5) > .news-body > .news-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.1s\">",
"target": [
".news-card:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Yesterday</span>",
"target": [
".news-card:nth-child(5) > .news-body > .news-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.1s\">",
"target": [
".news-card:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>7 min read</span>",
"target": [
".news-card:nth-child(5) > .news-body > .news-meta > span:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.15s\">",
"target": [
".news-card:nth-child(6)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>By <b>Mara Voss</b></span>",
"target": [
".news-card:nth-child(6) > .news-body > .news-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.15s\">",
"target": [
".news-card:nth-child(6)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>2 days ago</span>",
"target": [
".news-card:nth-child(6) > .news-body > .news-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"news-card rv on\" style=\"--d:.15s\">",
"target": [
".news-card:nth-child(6)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>5 min read</span>",
"target": [
".news-card:nth-child(6) > .news-body > .news-meta > span:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\" style=\"--d:.14s\">",
"target": [
".panel.on.rv:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pl\">1st</span>",
"target": [
"li:nth-child(1) > .pl"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\" style=\"--d:.14s\">",
"target": [
".panel.on.rv:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pl\">2nd</span>",
"target": [
"li:nth-child(2) > .pl"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\" style=\"--d:.14s\">",
"target": [
".panel.on.rv:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pl\">3rd</span>",
"target": [
"li:nth-child(3) > .pl"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\" style=\"--d:.14s\">",
"target": [
".panel.on.rv:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pl\">4th</span>",
"target": [
"li:nth-child(4) > .pl"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\" style=\"--d:.14s\">",
"target": [
".panel.on.rv:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"mono\" style=\"font-size:10px;color:var(--dim);letter-spacing:.12em;margin-top:12px\">ASTRA INVITATIONAL \u00b7 FINALS WEEKEND \u00b7 12 TEAMS</p>",
"target": [
".panel.on.rv:nth-child(3) > .mono"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\" style=\"--d:.2s\">",
"target": [
".panel.on.rv:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<em>Starforge Odyssey \u00b7 DLC</em>",
"target": [
".pick[href$=\"#review\"] > em"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\" style=\"--d:.2s\">",
"target": [
".panel.on.rv:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<em>Pale Signal \u00b7 Metroidvania</em>",
"target": [
".pick[href$=\"#indie\"] > em"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\" style=\"--d:.2s\">",
"target": [
".panel.on.rv:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<em>Rustline Games \u00b7 Racing</em>",
"target": [
".pick[href$=\"#news\"] > em"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"score-card rv on\" aria-label=\"Review scorecard\">",
"target": [
".score-card"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td>Game</td>",
"target": [
"tr:nth-child(1) > td:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"score-card rv on\" aria-label=\"Review scorecard\">",
"target": [
".score-card"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td>Developer</td>",
"target": [
"tr:nth-child(2) > td:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"score-card rv on\" aria-label=\"Review scorecard\">",
"target": [
".score-card"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td>Platforms</td>",
"target": [
"tr:nth-child(3) > td:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"score-card rv on\" aria-label=\"Review scorecard\">",
"target": [
".score-card"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td>Price</td>",
"target": [
"tr:nth-child(4) > td:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"score-card rv on\" aria-label=\"Review scorecard\">",
"target": [
".score-card"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<td>Time logged</td>",
"target": [
"tr:nth-child(5) > td:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<figure class=\"rv on\"><div class=\"imgwrap\"><img src=\"https://picsum.photos/seed/starforge-glass/1000/560\" alt=\"Ship navigating the crystalline Shattered Expanse\" loading=\"lazy\"></div><figcaption>FIG.01 \u2014 THE SHATTERED EXPANSE / CAPTURED IN-GAME, 1440P</figcaption></figure>",
"target": [
"figure:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>FIG.01 \u2014 THE SHATTERED EXPANSE / CAPTURED IN-GAME, 1440P</figcaption>",
"target": [
"figure:nth-child(1) > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<figure class=\"rv on\" style=\"--d:.1s\"><div class=\"imgwrap\"><img src=\"https://picsum.photos/seed/starforge-battle/1000/560\" alt=\"Gravity-anchor ship combat during a glass storm\" loading=\"lazy\"></div><figcaption>FIG.02 \u2014 GRAVITY-ANCHOR COMBAT DURING A GLASS STORM</figcaption></figure>",
"target": [
".shots > figure:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>FIG.02 \u2014 GRAVITY-ANCHOR COMBAT DURING A GLASS STORM</figcaption>",
"target": [
".shots > figure:nth-child(2) > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#141d28",
"contrastRatio": 3.1,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"tab-panel active\" id=\"t1\" role=\"tabpanel\">",
"target": [
"#t1"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.1 (foreground color: #5b6b7d, background color: #141d28, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"patch-foot\">DEPLOYED 03:00 UTC \u00b7 ~2.1 GB \u00b7 FULL CHANGELOG ON THE WIKI</p>",
"target": [
"#t1 > .patch-foot"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.1 (foreground color: #5b6b7d, background color: #141d28, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"poll-box rv on\" style=\"--d:.1s\">",
"target": [
".poll-box"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"poll-sub\">4,312 VOTES SO FAR \u00b7 RESULTS LOCK SUNDAY 23:59 UTC</p>",
"target": [
".poll-sub"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"poll-opt\" data-vote=\"vex\" data-base=\"1243\"><span class=\"bar\"></span><span class=\"po-name\">VEX \u2014 Duelist<small>\"Aim check on every corner\"</small></span><span class=\"po-pct\"></span></button>",
"target": [
"button[data-vote=\"vex\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>\"Aim check on every corner\"</small>",
"target": [
"button[data-vote=\"vex\"] > .po-name > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"poll-opt\" data-vote=\"sable\" data-base=\"823\"><span class=\"bar\"></span><span class=\"po-name\">SABLE \u2014 Flex<small>\"New kit, new problems\"</small></span><span class=\"po-pct\"></span></button>",
"target": [
"button[data-vote=\"sable\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>\"New kit, new problems\"</small>",
"target": [
"button[data-vote=\"sable\"] > .po-name > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"poll-opt\" data-vote=\"mirelle\" data-base=\"704\"><span class=\"bar\"></span><span class=\"po-name\">MIRELLE \u2014 Support<small>\"The heal tax remains unpaid\"</small></span><span class=\"po-pct\"></span></button>",
"target": [
"button[data-vote=\"mirelle\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>\"The heal tax remains unpaid\"</small>",
"target": [
"button[data-vote=\"mirelle\"] > .po-name > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#0c1117",
"contrastRatio": 3.46,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"poll-opt\" data-vote=\"kaan\" data-base=\"538\"><span class=\"bar\"></span><span class=\"po-name\">KAAN \u2014 Gravlord<small>\"Get over here. Again.\"</small></span><span class=\"po-pct\"></span></button>",
"target": [
"button[data-vote=\"kaan\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>\"Get over here. Again.\"</small>",
"target": [
"button[data-vote=\"kaan\"] > .po-name > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.46 (foreground color: #5b6b7d, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.9pt (10.5px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"poll-box rv on\" style=\"--d:.1s\">",
"target": [
".poll-box"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"poll-note\" id=\"pollNote\">Tap an operator to cast your vote. Voting earns XP.</p>",
"target": [
"#pollNote"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"upcoming rv on\" style=\"--d:.1s\">",
"target": [
".upcoming"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>Cinder Series \u00b7 Group B</small>",
"target": [
".up-row:nth-child(2) > .teams > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"upcoming rv on\" style=\"--d:.1s\">",
"target": [
".upcoming"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>Open Qualifier \u00b7 Losers Bracket</small>",
"target": [
".up-row:nth-child(3) > .teams > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"upcoming rv on\" style=\"--d:.1s\">",
"target": [
".upcoming"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>Cinder Series \u00b7 Elimination Match</small>",
"target": [
".up-row:nth-child(4) > .teams > small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"ladder rv on\" style=\"--d:.15s\">",
"target": [
".ladder"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"rk\">02</span>",
"target": [
"li:nth-child(2) > .rk"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"ladder rv on\" style=\"--d:.15s\">",
"target": [
".ladder"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"rk\">03</span>",
"target": [
"li:nth-child(3) > .rk"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"ladder rv on\" style=\"--d:.15s\">",
"target": [
".ladder"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"rk\">04</span>",
"target": [
"li:nth-child(4) > .rk"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"ladder rv on\" style=\"--d:.15s\">",
"target": [
".ladder"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"rk\">05</span>",
"target": [
"li:nth-child(5) > .rk"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"panel rv on\" style=\"--d:.14s\">",
"target": [
".panel.rv.on:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"mono\" style=\"font-size:10px;color:var(--dim);letter-spacing:.12em;margin-top:12px\">ASTRA INVITATIONAL \u00b7 FINALS WEEKEND \u00b7 12 TEAMS</p>",
"target": [
".panel.rv.on:nth-child(3) > .mono"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#05070a",
"contrastRatio": 3.69,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer>\u2014 RITA VASQUEZ, CO-FOUNDER, PALE SIGNAL</footer>",
"target": [
".postcard:nth-child(1) > blockquote > footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<footer>\u2014 RITA VASQUEZ, CO-FOUNDER, PALE SIGNAL</footer>",
"target": [
".postcard:nth-child(1) > blockquote > footer"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#05070a",
"contrastRatio": 3.69,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer>\u2014 OSMAN REYES, LEAD DESIGNER</footer>",
"target": [
".postcard:nth-child(2) > blockquote > footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<footer>\u2014 OSMAN REYES, LEAD DESIGNER</footer>",
"target": [
".postcard:nth-child(2) > blockquote > footer"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#05070a",
"contrastRatio": 3.69,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer>\u2014 INGRID HOLM, CREATIVE DIRECTOR</footer>",
"target": [
".postcard:nth-child(3) > blockquote > footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<footer>\u2014 INGRID HOLM, CREATIVE DIRECTOR</footer>",
"target": [
".postcard:nth-child(3) > blockquote > footer"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.69 (foreground color: #5b6b7d, background color: #05070a, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"pcard rv on\" aria-label=\"Your player card\">",
"target": [
".pcard"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span style=\"color:var(--dim)\">#7741</span>",
"target": [
".pcard-top > div > b > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"pcard rv on\" aria-label=\"Your player card\">",
"target": [
".pcard"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>SEASON 09 \u00b7 MEMBER SINCE TODAY</span>",
"target": [
".pcard-top > div > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"pcard rv on\" aria-label=\"Your player card\">",
"target": [
".pcard"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"lvl-num\">LVL <b id=\"levelNum\">01</b></span>",
"target": [
".lvl-num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"pcard rv on\" aria-label=\"Your player card\">",
"target": [
".pcard"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<b id=\"levelNum\">01</b>",
"target": [
"#levelNum"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"pcard rv on\" aria-label=\"Your player card\">",
"target": [
".pcard"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span id=\"xpNow\">0 XP</span>",
"target": [
"#xpNow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"pcard rv on\" aria-label=\"Your player card\">",
"target": [
".pcard"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span id=\"xpNext\">150 XP \u2192 GRINDER</span>",
"target": [
"#xpNext"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"pcard rv on\" aria-label=\"Your player card\">",
"target": [
".pcard"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"mono\" style=\"font-size:10px;letter-spacing:.18em;color:var(--dim);text-transform:uppercase;margin-bottom:10px\">Squad Feed</p>",
"target": [
".pcard > .mono"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#080b0f",
"contrastRatio": 3.6,
"fontSize": "8.3pt (11px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"ach-count\"><b id=\"achCount\">0</b>/8 UNLOCKED</span>",
"target": [
".ach-count"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.6 (foreground color: #5b6b7d, background color: #080b0f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"first\"><div class=\"ach-ico\">\u271a</div><h4 class=\"ach-name\" data-n=\"FIRST BLOOD\">FIRST BLOOD</h4><p class=\"ach-desc\" data-d=\"Post your first message to the squad feed.\">Post your first message to the squad feed.</p><span class=\"ach-xp\">+50 XP</span></article>",
"target": [
"article[data-ach=\"first\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"ach-desc\" data-d=\"Post your first message to the squad feed.\">Post your first message to the squad feed.</p>",
"target": [
"article[data-ach=\"first\"] > .ach-desc"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"first\"><div class=\"ach-ico\">\u271a</div><h4 class=\"ach-name\" data-n=\"FIRST BLOOD\">FIRST BLOOD</h4><p class=\"ach-desc\" data-d=\"Post your first message to the squad feed.\">Post your first message to the squad feed.</p><span class=\"ach-xp\">+50 XP</span></article>",
"target": [
"article[data-ach=\"first\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"ach-xp\">+50 XP</span>",
"target": [
"article[data-ach=\"first\"] > .ach-xp"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"clutch\"><div class=\"ach-ico\">\u2316</div><h4 class=\"ach-name\" data-n=\"CLUTCH CALL\">CLUTCH CALL</h4><p class=\"ach-desc\" data-d=\"Cast a vote in the weekly meta poll.\">Cast a vote in the weekly meta poll.</p><span class=\"ach-xp\">+100 XP</span></article>",
"target": [
"article[data-ach=\"clutch\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"ach-desc\" data-d=\"Cast a vote in the weekly meta poll.\">Cast a vote in the weekly meta poll.</p>",
"target": [
"article[data-ach=\"clutch\"] > .ach-desc"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"clutch\"><div class=\"ach-ico\">\u2316</div><h4 class=\"ach-name\" data-n=\"CLUTCH CALL\">CLUTCH CALL</h4><p class=\"ach-desc\" data-d=\"Cast a vote in the weekly meta poll.\">Cast a vote in the weekly meta poll.</p><span class=\"ach-xp\">+100 XP</span></article>",
"target": [
"article[data-ach=\"clutch\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"ach-xp\">+100 XP</span>",
"target": [
"article[data-ach=\"clutch\"] > .ach-xp"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"lore\"><div class=\"ach-ico\">\u25c8</div><h4 class=\"ach-name\" data-n=\"LORE MASTER\">LORE MASTER</h4><p class=\"ach-desc\" data-d=\"Open the Wiki from the main navigation.\">Open the Wiki from the main navigation.</p><span class=\"ach-xp\">+75 XP</span></article>",
"target": [
"article[data-ach=\"lore\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"ach-desc\" data-d=\"Open the Wiki from the main navigation.\">Open the Wiki from the main navigation.</p>",
"target": [
"article[data-ach=\"lore\"] > .ach-desc"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"lore\"><div class=\"ach-ico\">\u25c8</div><h4 class=\"ach-name\" data-n=\"LORE MASTER\">LORE MASTER</h4><p class=\"ach-desc\" data-d=\"Open the Wiki from the main navigation.\">Open the Wiki from the main navigation.</p><span class=\"ach-xp\">+75 XP</span></article>",
"target": [
"article[data-ach=\"lore\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"ach-xp\">+75 XP</span>",
"target": [
"article[data-ach=\"lore\"] > .ach-xp"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"patch\"><div class=\"ach-ico\">\u25a4</div><h4 class=\"ach-name\" data-n=\"PATCH ADDICT\">PATCH ADDICT</h4><p class=\"ach-desc\" data-d=\"Read every tab in Patch Intel.\">Read every tab in Patch Intel.</p><span class=\"ach-xp\">+100 XP</span></article>",
"target": [
"article[data-ach=\"patch\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"ach-desc\" data-d=\"Read every tab in Patch Intel.\">Read every tab in Patch Intel.</p>",
"target": [
"p[data-d=\"Read every tab in Patch Intel.\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"patch\"><div class=\"ach-ico\">\u25a4</div><h4 class=\"ach-name\" data-n=\"PATCH ADDICT\">PATCH ADDICT</h4><p class=\"ach-desc\" data-d=\"Read every tab in Patch Intel.\">Read every tab in Patch Intel.</p><span class=\"ach-xp\">+100 XP</span></article>",
"target": [
"article[data-ach=\"patch\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"ach-xp\">+100 XP</span>",
"target": [
"article[data-ach=\"patch\"] > .ach-xp"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"squad\"><div class=\"ach-ico\">\u2691</div><h4 class=\"ach-name\" data-n=\"SQUAD UP\">SQUAD UP</h4><p class=\"ach-desc\" data-d=\"Answer the call to join the Discord.\">Answer the call to join the Discord.</p><span class=\"ach-xp\">+150 XP</span></article>",
"target": [
"article[data-ach=\"squad\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"ach-desc\" data-d=\"Answer the call to join the Discord.\">Answer the call to join the Discord.</p>",
"target": [
"article[data-ach=\"squad\"] > .ach-desc"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"squad\"><div class=\"ach-ico\">\u2691</div><h4 class=\"ach-name\" data-n=\"SQUAD UP\">SQUAD UP</h4><p class=\"ach-desc\" data-d=\"Answer the call to join the Discord.\">Answer the call to join the Discord.</p><span class=\"ach-xp\">+150 XP</span></article>",
"target": [
"article[data-ach=\"squad\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"ach-xp\">+150 XP</span>",
"target": [
"article[data-ach=\"squad\"] > .ach-xp"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"loadout\"><div class=\"ach-ico\">\u2709</div><h4 class=\"ach-name\" data-n=\"QUARTERMASTER\">QUARTERMASTER</h4><p class=\"ach-desc\" data-d=\"Enlist in The Loadout weekly briefing.\">Enlist in The Loadout weekly briefing.</p><span class=\"ach-xp\">+120 XP</span></article>",
"target": [
"article[data-ach=\"loadout\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"ach-desc\" data-d=\"Enlist in The Loadout weekly briefing.\">Enlist in The Loadout weekly briefing.</p>",
"target": [
"article[data-ach=\"loadout\"] > .ach-desc"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"loadout\"><div class=\"ach-ico\">\u2709</div><h4 class=\"ach-name\" data-n=\"QUARTERMASTER\">QUARTERMASTER</h4><p class=\"ach-desc\" data-d=\"Enlist in The Loadout weekly briefing.\">Enlist in The Loadout weekly briefing.</p><span class=\"ach-xp\">+120 XP</span></article>",
"target": [
"article[data-ach=\"loadout\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"ach-xp\">+120 XP</span>",
"target": [
"article[data-ach=\"loadout\"] > .ach-xp"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"oldschool\" data-hidden=\"1\">",
"target": [
"article[data-ach=\"oldschool\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"ach-desc\" data-d=\"Enter the sacred sequence. Up, up, down, down\u2026\">A hidden achievement. Earn it to reveal it.</p>",
"target": [
"article[data-ach=\"oldschool\"] > .ach-desc"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"oldschool\" data-hidden=\"1\">",
"target": [
"article[data-ach=\"oldschool\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"ach-xp\">+500 XP</span>",
"target": [
"article[data-ach=\"oldschool\"] > .ach-xp"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"done\">",
"target": [
"article[data-ach=\"done\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"ach-desc\" data-d=\"Unlock every other achievement on this card.\">Unlock every other achievement on this card.</p>",
"target": [
"article[data-ach=\"done\"] > .ach-desc"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#323b46",
"bgColor": "#0c1117",
"contrastRatio": 1.66,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"ach locked\" data-ach=\"done\">",
"target": [
"article[data-ach=\"done\"]"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"ach-xp\">+300 XP</span>",
"target": [
"article[data-ach=\"done\"] > .ach-xp"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.66 (foreground color: #323b46, background color: #0c1117, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testi rv on\">",
"target": [
".testi:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>DISCORD MOD \u00b7 DIAMOND II, VALDRA</span>",
"target": [
".testi:nth-child(1) > .testi-foot > div > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testi rv on\" style=\"--d:.08s\">",
"target": [
".testi:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>SEMI-PRO, CINDER SERIES</span>",
"target": [
".testi:nth-child(2) > .testi-foot > div > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5b6b7d",
"bgColor": "#10161e",
"contrastRatio": 3.32,
"fontSize": "7.5pt (10px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testi rv on\" style=\"--d:.16s\">",
"target": [
".testi:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>INDIE DEV, PALE SIGNAL</span>",
"target": [
".testi:nth-child(3) > .testi-foot > div > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.32 (foreground color: #5b6b7d, background color: #10161e, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 11170
},
{
"y": 576,
"height": 11170
},
{
"y": 1152,
"height": 11170
},
{
"y": 1728,
"height": 11170
},
{
"y": 2304,
"height": 11170
},
{
"y": 2880,
"height": 11170
},
{
"y": 3456,
"height": 11170
},
{
"y": 4032,
"height": 11170
},
{
"y": 4608,
"height": 11170
},
{
"y": 5184,
"height": 11170
},
{
"y": 5760,
"height": 11170
},
{
"y": 6336,
"height": 11170
},
{
"y": 6912,
"height": 11170
},
{
"y": 7488,
"height": 11170
},
{
"y": 8064,
"height": 11170
},
{
"y": 8640,
"height": 11170
},
{
"y": 9216,
"height": 11170
},
{
"y": 9792,
"height": 11170
},
{
"y": 10368,
"height": 11170
},
{
"y": 10450,
"height": 11170
}
],
"scans": 21,
"max_states": 512,
"settle_ms": 5000,
"page_timeout_seconds": 150,
"layout_stability": "consecutive 100ms size samples within one CSS pixel",
"animation_settling": "finite animations present when scroll resources are ready finish or are cancelled",
"interactive_states": "not exercised",
"horizontal_scroll": "not exercised"
}
}
System Prompt
You are a lead web developer at a top digital agency, tasked with creating a one-page website for a new client based on the given specifications, delivered as an HTML file. First non-whitespace char '<', last non-whitespace char '>'. Use the following services to generate placeholder images where needed:
- placehold.co (text): https://placehold.co/[{w}x{h}|{size}][/{bg-color}/{text-color}]?text={text}&font=[lato|lora|montserrat|noto sans|open sans|oswald|playfair display|poppins|pt sans|raleway|roboto|source sans|source sans pro]
- picsum.photos (photos): https://picsum.photos/[{w}/{h}|{size}]?[grayscale][&blur={1-10}]
- pravatar.cc (avatars): https://i.pravatar.cc/{size}?u={identifier}
Choose sizes appropriate to layout.
User Prompt
Create a **complete, polished, production-quality** primary web page for a new client in the "Gaming" sector.
Your goal is to generate the full HTML code for a page that is not just functional but also visually compelling, content-rich, and feels like a finished product ready for launch.
**Client & Category:**
- Industry: "Gaming"
- Description: Video games, esports news, game reviews, and online gaming communities.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Gaming" category.
2. **Define Page:** Determine the most effective primary page type (e.g., homepage, service landing page, category portal) to showcase this fictional entity.
3. **Design:** Develop an opinionated, modern, and professional layout. Make distinct choices about structure and flow.
**Content & Structure Requirements (Deliver a COMPLETE page):**
- **Overall:** The final page must feel substantial and complete, with realistic amounts of text (multiple paragraphs per section where appropriate, avoid single sentences), well-integrated placeholder images, and logical flow. It should look like a real website a business would proudly use.
- **HEADER:** Include the invented site name, tagline, a logo placeholder image, and a primary navigation bar. Ensure the navigation has **at least 5-7 clearly defined, relevant links** including: "Streaming", "Wiki", "Support".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Gaming" category. Consider themes similar to: "Player Profiles", "Patch Notes", "Indie Spotlight".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "tier list", "DLC", "achievements".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Join Discord", "Play Free", "View Leaderboard".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Gaming" sector. Ideas similar but not limited to: "achievement tracker".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "tournament results", "editor picks", "stream schedule".
- **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.