SpaceXAI Grok 4.7 – Gambling Casinos
via xAI · Generated
- AIMAC Debt 0.00
- Cost $0.06
- Total Violations 0
- HTML Size 26 KB
- Em Dashes 14
Screenshot
View Live Page
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Feltwise — Clear odds. Smarter sessions. Responsible play.</title>
<meta name="description" content="Feltwise publishes gambling news, casino guides, betting tips, and table-game resources for adults who want clarity, bankroll discipline, and responsible play.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700&family=Source+Sans+3:wght@400;600;700&display=swap" rel="stylesheet">
<style>
:root {
--ink: #0b1220;
--panel: #141c2e;
--panel-2: #1c2740;
--line: rgba(232, 214, 163, 0.18);
--gold: #e0c36a;
--gold-deep: #b8922e;
--cream: #f6f1e6;
--muted: #b7c0d1;
--teal: #3dbebf;
--rose: #e07a6a;
--shadow: 0 18px 50px rgba(0, 0, 0, 0.28);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
margin: 0;
font-family: "Source Sans 3", "Segoe UI", sans-serif;
background: radial-gradient(1200px 600px at 90% -10%, rgba(224, 195, 106, 0.12), transparent 50%), var(--ink);
color: var(--cream);
line-height: 1.65;
}
img { max-width: 100%; display: block; }
a { color: var(--gold); text-decoration: none; }
a:hover { color: #fff6d8; }
.wrap { width: min(1180px, calc(100% - 32px)); margin: 0 auto; }
.skip {
position: absolute; left: -999px; top: 8px;
}
.skip:focus { left: 12px; background: #fff; color: #000; padding: 8px 12px; z-index: 20; }
header {
position: sticky; top: 0; z-index: 10;
background: rgba(11, 18, 32, 0.92);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--line);
}
.bar {
display: flex; align-items: center; justify-content: space-between; gap: 20px;
padding: 14px 0;
}
.brand { display: flex; align-items: center; gap: 12px; color: inherit; }
.brand img { width: 52px; height: 52px; border-radius: 10px; border: 1px solid var(--line); }
.brand strong { display: block; font-family: "Playfair Display", Georgia, serif; font-size: 1.35rem; letter-spacing: 0.02em; }
.brand span { display: block; color: var(--muted); font-size: 0.86rem; max-width: 280px; }
nav { display: flex; flex-wrap: wrap; gap: 8px 16px; justify-content: flex-end; }
nav a { color: var(--cream); font-weight: 600; font-size: 0.95rem; }
nav a:hover, nav a[aria-current="page"] { color: var(--gold); }
.hero {
display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 36px; align-items: center;
padding: 56px 0 28px;
}
.kicker {
display: inline-block; letter-spacing: 0.14em; text-transform: uppercase;
color: var(--gold); font-size: 0.78rem; font-weight: 700; margin-bottom: 10px;
}
h1, h2, h3 { font-family: "Playfair Display", Georgia, serif; line-height: 1.2; margin: 0 0 12px; }
h1 { font-size: clamp(2.2rem, 4vw, 3.6rem); }
h2 { font-size: clamp(1.7rem, 3vw, 2.3rem); }
h3 { font-size: 1.25rem; }
.lede { font-size: 1.12rem; color: var(--muted); }
.hero-visual { position: relative; }
.hero-visual img { width: 100%; height: 420px; object-fit: cover; border-radius: 18px; box-shadow: var(--shadow); }
.badge {
position: absolute; left: 16px; bottom: 16px;
background: rgba(11, 18, 32, 0.88); border: 1px solid var(--line);
padding: 12px 14px; border-radius: 12px; max-width: 240px;
}
.badge strong { display: block; color: var(--gold); }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.btn {
display: inline-flex; align-items: center; justify-content: center;
border: 0; cursor: pointer; border-radius: 999px; padding: 12px 18px;
font-weight: 700; font-family: inherit; font-size: 0.98rem;
}
.btn-gold { background: linear-gradient(180deg, #f0d78a, var(--gold-deep)); color: #1a1406; }
.btn-ghost { background: transparent; color: var(--cream); border: 1px solid var(--line); }
.btn-teal { background: var(--teal); color: #062022; }
.note { color: var(--muted); font-size: 0.86rem; }
.layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 28px; padding-bottom: 60px; }
.card, .panel, aside section, .quote, details {
background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.015));
border: 1px solid var(--line); border-radius: 16px;
}
.grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 18px 0 28px; }
.card { padding: 18px; }
.card img { height: 150px; width: 100%; object-fit: cover; border-radius: 12px; margin-bottom: 12px; }
.section { margin: 8px 0 28px; }
.section p { color: #e7e1d4; }
.split { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 18px; align-items: center; }
.split img { height: 280px; width: 100%; object-fit: cover; border-radius: 16px; }
.calc { padding: 20px; }
.fields { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
label { display: block; font-size: 0.86rem; color: var(--muted); font-weight: 700; margin-bottom: 6px; }
input {
width: 100%; padding: 11px 12px; border-radius: 10px; border: 1px solid var(--line);
background: #0e1628; color: var(--cream); font: inherit;
}
.results { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 16px; }
.metric { background: #0e1628; border-radius: 12px; padding: 12px; border: 1px solid var(--line); }
.metric span { display: block; color: var(--muted); font-size: 0.8rem; }
.metric strong { font-size: 1.15rem; }
aside { display: flex; flex-direction: column; gap: 16px; }
aside section { padding: 16px; }
.promo { border-left: 3px solid var(--gold); padding-left: 10px; margin: 12px 0; }
.quotes { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; }
.quote { padding: 16px; }
.quote header { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; background: none; border: 0; position: static; }
.quote img { width: 48px; height: 48px; border-radius: 50%; }
details { padding: 14px 16px; margin-bottom: 10px; }
summary { cursor: pointer; font-weight: 700; }
footer {
border-top: 1px solid var(--line); padding: 36px 0 24px; background: #090f1b; color: var(--muted);
}
.foot { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 20px; }
footer a { color: var(--cream); }
.legal { margin-top: 22px; font-size: 0.82rem; }
.warn { color: #f3d7a1; }
@media (max-width: 960px) {
.hero, .layout, .split, .quotes, .foot, .fields, .results, .grid { grid-template-columns: 1fr; }
.bar { flex-direction: column; align-items: flex-start; }
.hero-visual img { height: 260px; }
}
</style>
</head>
<body>
<a class="skip" href="#main">Skip to content</a>
<header>
<div class="wrap bar">
<a class="brand" href="#top">
<img src="https://placehold.co/64x64/0b1220/e0c36a?text=FW&font=playfair+display" alt="Feltwise logo">
<div>
<strong>Feltwise</strong>
<span>Clear odds. Smarter sessions. Responsible play.</span>
</div>
</a>
<nav aria-label="Primary">
<a href="#top" aria-current="page">Home</a>
<a href="#news">News</a>
<a href="#guides">Casino Guides</a>
<a href="#basics">Betting Tips</a>
<a href="#tables">Table Games</a>
<a href="#promotions">Promotions</a>
<a href="#responsible">Responsible Play</a>
</nav>
</div>
</header>
<main id="main">
<div class="wrap">
<section class="hero" id="top">
<div>
<span class="kicker">Gambling news · casino guides · betting desk</span>
<h1>Read the felt before you sit down.</h1>
<p class="lede">Feltwise is an independent editorial desk for adults who want gambling explained without carnival language. We cover casino rules, payout percentage, expected value, bankroll management, and the promotions that actually survive a close reading of the terms.</p>
<p>The house edge is not a rumor, and a hot streak is not a system. Our writers translate table rules, sportsbook markets, and bonus conditions into plain numbers so you can decide whether a session is entertainment you can afford—or a leak you should close.</p>
<div class="actions">
<a class="btn btn-gold" href="#promotions">Claim Bonus Notes</a>
<a class="btn btn-ghost" href="#calculator">Open Odds Desk</a>
<a class="btn btn-teal" href="#responsible">Set a Session Limit</a>
</div>
<p class="note">18+ only. Gambling involves risk of loss. Feltwise does not take wagers and does not guarantee outcomes.</p>
</div>
<div class="hero-visual">
<img src="https://picsum.photos/900/700?grayscale" alt="Dimly lit card table used as editorial photography">
<div class="badge"><strong>Desk note</strong>Payout percentage is a long-run figure, not a promise for tonight.</div>
</div>
</section>
<div class="layout">
<div>
<section class="section" id="basics">
<h2>Betting basics worth keeping</h2>
<p>Most costly mistakes are not exotic. They come from staking too much of a bankroll on a single price, confusing implied probability with a personal hunch, or treating a reload offer as found money. A disciplined bettor starts with the market price, converts it to a percentage, and only then asks whether their own estimate is better than the number already on the board.</p>
<p>Expected value is the average result if the same decision were repeated many times. If decimal odds are 2.10 and you believe the true chance is 50 percent, the price is slightly positive before you account for limits, void rules, and the cost of chasing a lost stake. If your estimate is wishful, the same ticket is a slow drain. Feltwise teaches the arithmetic so the romance of a pick does not outrun the math.</p>
<div class="grid">
<article class="card">
<img src="https://picsum.photos/640/360" alt="Notebook and coffee beside a quiet study desk">
<h3>Price before opinion</h3>
<p>Convert decimal, fractional, or American odds into implied probability before you write a stake. If the book has already priced an outcome at 62 percent, your edge has to be real, not merely confident.</p>
</article>
<article class="card">
<img src="https://picsum.photos/641/360" alt="Close view of playing cards on dark felt">
<h3>Bankroll management</h3>
<p>A practical unit is a small slice of money set aside for entertainment, often one to two percent of that dedicated bankroll. Session stop-losses matter more than any “system” sold in a forum thread.</p>
</article>
<article class="card">
<img src="https://picsum.photos/642/360" alt="Abstract city lights suggesting a night out">
<h3>Game rules first</h3>
<p>Blackjack side bets, roulette neighbors, and baccarat commissions change the payout percentage. Learn the rule card before you learn the folklore around a table.</p>
</article>
<article class="card">
<img src="https://picsum.photos/643/360" alt="Soft-focus casino chips in warm light">
<h3>Promotions with friction</h3>
<p>Wagering requirements, game weighting, max-bet clauses, and expiry windows decide whether an offer is usable. We read those lines so the headline bonus is not the whole story.</p>
</article>
</div>
</section>
<section class="section" id="guides">
<h2>Casino guides with the fine print attached</h2>
<div class="split">
<div>
<p>A useful casino guide is not a list of slogans. It names the games, the published return-to-player where the operator discloses it, the contribution of each title toward a bonus, and the withdrawal checks a new account should expect. Feltwise compares those details across fictional review dossiers so readers can see how two “98 percent” claims can still feel very different in practice.</p>
<p>Slots are the clearest example. A high payout percentage on a base game can sit beside a volatile math model that pays rarely and in clusters. Table games often publish a tighter house edge, but rule variants—blackjack paying 6:5 instead of 3:2, or a roulette wheel with a double zero—quietly widen that edge. We flag those switches in every guide rather than burying them under screenshots of a lobby.</p>
<p>Our editors also separate licensed information from rumor. If a cashier delay, identity check, or stake limit is part of normal compliance, we say so. If a term would make a casual session impractical, we say that too. The goal is a reader who can redeem an offer with eyes open, or walk away without feeling they missed a secret.</p>
<div class="actions">
<a class="btn btn-gold" href="#promotions">Redeem Offer Brief</a>
<a class="btn btn-ghost" href="#support">Contact Support Desk</a>
</div>
</div>
<img src="https://picsum.photos/800/640?blur=1" alt="Blurred interior lights suggesting a casino floor">
</div>
</section>
<section class="section" id="tables">
<h2>Table games, without the mythology</h2>
<p>Roulette, blackjack, baccarat, and poker-derived pit games reward different skills, and only one of them—poker against other players, under fair rules—can be approached as a game of relative decision quality. The rest are negative-expectation wagers against a fixed payout table. That does not make them unworthy of a night out. It means the correct frame is cost of entertainment, not income.</p>
<p>In European roulette, a single-zero wheel carries a lower house edge than an American double-zero layout on the same even-money bets. En prison or la partage rules can narrow it further. None of those rules create a pattern you can harvest by watching previous spins. Independence is the point of a well-maintained wheel, not a flaw in your memory.</p>
<p>Blackjack is more sensitive to procedure. A 3:2 blackjack, dealer standing on soft 17, and the option to double after a split are player-friendly compared with 6:5 tables that look identical from the aisle. Basic strategy reduces the house edge; it does not erase it. Card counting, where legal, is a separate discipline with variance, heat from the pit, and bankroll demands that casual guides often understate. Feltwise covers the rule differences first, because most readers lose more to a bad table layout than to imperfect strategy.</p>
</section>
<section class="section" id="calculator">
<h2>Session odds desk</h2>
<p>Use this calculator to translate a price into implied probability, potential return, and a simple expected-value sketch. It is an educational tool. It does not place bets, store accounts, or tell you that a wager is wise. Your probability estimate is an assumption—if it is optimistic, the expected value will be optimistic too.</p>
<form class="calc" id="odds-form">
<div class="fields">
<div>
<label for="stake">Stake (entertainment units)</label>
<input id="stake" name="stake" type="number" min="1" step="1" value="20">
</div>
<div>
<label for="odds">Decimal odds</label>
<input id="odds" name="odds" type="number" min="1.01" step="0.01" value="2.20">
</div>
<div>
<label for="prob">Your estimated win chance (%)</label>
<input id="prob" name="prob" type="number" min="0" max="100" step="0.1" value="42">
</div>
</div>
<div class="actions">
<button class="btn btn-gold" type="submit">Calculate Value</button>
<button class="btn btn-ghost" type="button" id="reset-calc">Reset Example</button>
</div>
<div class="results" aria-live="polite">
<div class="metric"><span>Implied probability</span><strong id="m-imp">—</strong></div>
<div class="metric"><span>Potential return</span><strong id="m-ret">—</strong></div>
<div class="metric"><span>Net if it wins</span><strong id="m-net">—</strong></div>
<div class="metric"><span>Expected value</span><strong id="m-ev">—</strong></div>
</div>
<p class="note" id="calc-readout">Enter a stake and a price. Expected value uses your own probability, not a prediction from Feltwise.</p>
</form>
</section>
<section class="section" id="news">
<h2>News from the desk</h2>
<p>This week’s briefing stays with regulation, product design, and player protection rather than tipping “locks.” Licensing desks in several markets continue to tighten how bonuses may be advertised, especially where wagering requirements were previously shown in smaller type than the match percentage. Operators that publish game-level payout percentage and contribution tables are easier to review; those that hide weighting until after opt-in remain on our caution list.</p>
<p>We also tracked a cluster of sportsbook rule updates around player props and postponements. Void language matters when a starter is scratched after you have taken a price. If the market is not graded on a clear settlement source, the ticket is not “value”—it is ambiguity. Our newsroom will keep a running log of those rule cards as fictional operator dossiers are updated.</p>
<article class="card">
<h3>How to read a payout percentage claim</h3>
<p>Return-to-player is calculated over a huge number of spins or hands, not over your session. A 96 percent slot can still consume a modest bankroll quickly if volatility is high and stake size is careless. Pair every RTP note with a stake cap and a time cap. That pairing is the closest thing this industry has to a responsible default.</p>
</article>
</section>
<section class="section">
<h2>Readers who wanted fewer surprises</h2>
<div class="quotes">
<figure class="quote">
<header>
<img src="https://i.pravatar.cc/96?u=feltwise-amira" alt="">
<div><strong>Amira Cole</strong><span class="note">Weekend blackjack reader</span></div>
</header>
<p>“The 6:5 versus 3:2 explainer saved me from a table I would have assumed was standard. I still play for fun, but I know what the layout costs.”</p>
</figure>
<figure class="quote">
<header>
<img src="https://i.pravatar.cc/96?u=feltwise-jonas" alt="">
<div><strong>Jonas Hale</strong><span class="note">Sports price follower</span></div>
</header>
<p>“I used the odds desk to check implied probability before a parlay habit got expensive. The expected value line was humbling in the best way.”</p>
</figure>
<figure class="quote">
<header>
<img src="https://i.pravatar.cc/96?u=feltwise-priya" alt="">
<div><strong>Priya Nand</strong><span class="note">Guide subscriber</span></div>
</header>
<p>“Promotions used to look free. Feltwise made wagering weight and expiry dates impossible to skim past. I redeem less, and I understand more.”</p>
</figure>
</div>
</section>
<section class="section" id="faq">
<h2>Questions the desk hears often</h2>
<details open>
<summary>Does a higher payout percentage mean I should play longer?</summary>
<p>No. A better long-run return still has a house edge on most casino games. Longer sessions usually mean more exposure to that edge. Decide a time and a loss limit before you start, then stop when either is reached.</p>
</details>
<details>
<summary>Can expected value guarantee a winning night?</summary>
<p>It cannot. Expected value describes an average across many repetitions. A single ticket, shoe, or spin can land anywhere inside a wide range. Variance is not a sign that the math failed.</p>
</details>
<details>
<summary>Are bonus offers always worth claiming?</summary>
<p>Not always. If game weighting excludes the titles you actually play, or if the max bet under the bonus is lower than your normal stake, the offer can restrict you more than it rewards you. Read the brief, then choose.</p>
</details>
<details>
<summary>Does Feltwise operate a casino or sportsbook?</summary>
<p>No. We publish guides, news, and tools. Buttons on this page explain fictional sample offers for layout demonstration. They do not open a real cashier.</p>
</details>
</section>
<section class="section" id="responsible">
<h2>Responsible play is part of the product</h2>
<p>Set a budget that would not change rent, food, or savings if it disappeared. Keep gambling separate from alcohol-fueled decisions and from money needed for bills. Never chase a loss by raising stakes to “get back to even”; that pattern is how a contained evening becomes a problem. If play stops being fun, pause. Self-exclusion, deposit limits, and reality checks exist for a reason—use them early, not as a last resort.</p>
<p class="warn">If gambling is causing harm, contact GamCare, the National Gambling Helpline, or BeGambleAware in the UK, or the National Council on Problem Gambling in the United States. Feltwise support can point you to those services; we are not a crisis clinic and we do not provide treatment.</p>
<div class="actions">
<a class="btn btn-teal" href="#support">Contact Support</a>
<a class="btn btn-ghost" href="#faq">Review Limits FAQ</a>
</div>
</section>
</div>
<aside>
<section id="promotions">
<h3>Sample promotions</h3>
<p class="note">Fictional offers for this demo page. 18+. Terms decide value, not the headline.</p>
<div class="promo">
<strong>Harborlight match, 50% up to 100 units</strong>
<p>20x wagering on slots only, 7-day expiry, max bet 5 units while active. Even-money table bets contribute 10%.</p>
<a class="btn btn-gold" href="#promotions">Claim Bonus</a>
</div>
<div class="promo">
<strong>Rivermark reload note</strong>
<p>A smaller Friday reload with a clearer weighting table. Better for short sessions than a large match you cannot clear.</p>
<a class="btn btn-ghost" href="#promotions">Redeem Offer</a>
</div>
</section>
<section>
<h3>Latest updates</h3>
<p><strong>Rule card:</strong> Solace Palace dossiers now list 3:2 and 6:5 tables separately.</p>
<p><strong>Markets:</strong> Postponement language added to the sportsbook glossary.</p>
<p><strong>Tools:</strong> Odds desk now shows expected value beside implied probability.</p>
</section>
<section id="support">
<h3>Editorial support</h3>
<p>Questions about a guide, a correction, or a responsible-play referral are welcome. We do not recover losses or place wagers for readers.</p>
<a class="btn btn-teal" href="mailto:desk@feltwise.example">Contact Support</a>
</section>
</aside>
</div>
</div>
</main>
<footer>
<div class="wrap foot">
<div>
<strong>Feltwise</strong>
<p>14 Mercer Arcade, Suite 400<br>London EC2A 4NE<br>desk@feltwise.example<br>+44 20 7946 0188</p>
</div>
<div>
<strong>Explore</strong>
<p><a href="#news">News</a><br><a href="#guides">Casino Guides</a><br><a href="#tables">Table Games</a><br><a href="#basics">Betting Tips</a></p>
</div>
<div>
<strong>House notes</strong>
<p><a href="#responsible">Responsible Play</a><br><a href="#promotions">Promotions</a><br><a href="#faq">FAQ</a><br><a href="#support">Support</a></p>
</div>
<div>
<strong>Policies</strong>
<p><a href="#responsible">Privacy</a><br><a href="#responsible">Terms</a><br><a href="#responsible">Editorial standards</a></p>
<p>
<a href="#top">Social: Journal</a><br>
<a href="#top">Social: Desk</a><br>
<a href="#top">Social: Notes</a>
</p>
</div>
</div>
<div class="wrap legal">
<p>© 2026 Feltwise Editorial Ltd. All rights reserved. Information only — not a gambling operator, not financial advice, and not an invitation to stake money you cannot afford to lose. 18+ where gambling is legal. Please play responsibly.</p>
</div>
</footer>
<script>
(function () {
var form = document.getElementById("odds-form");
var stake = document.getElementById("stake");
var odds = document.getElementById("odds");
var prob = document.getElementById("prob");
var readout = document.getElementById("calc-readout");
function money(n) { return n.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); }
function run(event) {
if (event) event.preventDefault();
var s = Number(stake.value);
var o = Number(odds.value);
var p = Number(prob.value) / 100;
if (!(s > 0) || !(o > 1) || !(p >= 0 && p <= 1)) {
readout.textContent = "Use a positive stake, decimal odds above 1.00, and a win chance between 0 and 100.";
return;
}
var implied = 1 / o;
var ret = s * o;
var net = ret - s;
var ev = (p * net) - ((1 - p) * s);
document.getElementById("m-imp").textContent = (implied * 100).toFixed(1) + "%";
document.getElementById("m-ret").textContent = money(ret);
document.getElementById("m-net").textContent = money(net);
document.getElementById("m-ev").textContent = (ev >= 0 ? "+" : "") + money(ev);
var gap = (p - implied) * 100;
readout.textContent = "The price implies " + (implied * 100).toFixed(1) + "% before margin. Your estimate differs by " + gap.toFixed(1) + " percentage points. A positive expected value only holds if that estimate is accurate. This is not a recommendation to bet.";
}
form.addEventListener("submit", run);
document.getElementById("reset-calc").addEventListener("click", function () {
stake.value = 20; odds.value = 2.2; prob.value = 42; run();
});
run();
})();
</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-12T10:04:08.520Z",
"url": "https://benchmark.aimac.invalid/30a996ebf09217d725a783c2b90939a36649d9e13e30819107cd9f994c378030.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "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": []
},
{
"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": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": []
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-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": "<nav aria-label=\"Primary\">",
"target": [
"nav"
]
}
]
},
{
"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": "<nav aria-label=\"Primary\">",
"target": [
"nav"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<nav aria-label=\"Primary\">",
"target": [
"nav"
]
}
]
},
{
"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": "<nav aria-label=\"Primary\">",
"target": [
"nav"
]
}
]
},
{
"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": "<nav aria-label=\"Primary\">",
"target": [
"nav"
]
}
]
},
{
"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=\"btn btn-gold\" type=\"submit\">Calculate Value</button>",
"target": [
"button[type=\"submit\"]"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "internal-link-present",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Valid skip link found"
},
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1>Read the felt before you sit down.</h1>",
"target": [
"h1"
]
},
{
"html": "<h2>Betting basics worth keeping</h2>",
"target": [
"#basics > h2"
]
},
{
"html": "<h3>Price before opinion</h3>",
"target": [
"article:nth-child(1) > h3"
]
},
{
"html": "<h3>Bankroll management</h3>",
"target": [
"article:nth-child(2) > h3"
]
},
{
"html": "<h3>Game rules first</h3>",
"target": [
"article:nth-child(3) > h3"
]
},
{
"html": "<h3>Promotions with friction</h3>",
"target": [
".grid > article:nth-child(4) > h3"
]
},
{
"html": "<h2>Casino guides with the fine print attached</h2>",
"target": [
"#guides > h2"
]
},
{
"html": "<h2>Table games, without the mythology</h2>",
"target": [
"#tables > h2"
]
},
{
"html": "<h2>Session odds desk</h2>",
"target": [
"#calculator > h2"
]
},
{
"html": "<h2>News from the desk</h2>",
"target": [
"#news > h2"
]
},
{
"html": "<h3>How to read a payout percentage claim</h3>",
"target": [
"#news > article > h3"
]
},
{
"html": "<h2>Readers who wanted fewer surprises</h2>",
"target": [
".section:nth-child(6) > h2"
]
},
{
"html": "<h2>Questions the desk hears often</h2>",
"target": [
"#faq > h2"
]
},
{
"html": "<h2>Responsible play is part of the product</h2>",
"target": [
"#responsible > h2"
]
},
{
"html": "<h3>Sample promotions</h3>",
"target": [
"#promotions > h3"
]
},
{
"html": "<h3>Latest updates</h3>",
"target": [
"section:nth-child(2) > h3"
]
},
{
"html": "<h3>Editorial support</h3>",
"target": [
"#support > h3"
]
}
],
"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\">",
"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": "#062022",
"bgColor": "#3dbebf",
"contrastRatio": 7.52,
"fontSize": "11.8pt (15.68px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 7.52"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a class=\"btn btn-teal\" href=\"#responsible\">Set a Session Limit</a>",
"target": [
".btn-teal.btn[href$=\"#responsible\"]"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "duplicate-id-aria",
"data": "stake",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<input id=\"stake\" name=\"stake\" type=\"number\" min=\"1\" step=\"1\" value=\"20\">",
"target": [
"#stake"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [
{
"html": "<label for=\"stake\">Stake (entertainment units)</label>",
"target": [
"label[for=\"stake\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input id=\"stake\" name=\"stake\" type=\"number\" min=\"1\" step=\"1\" value=\"20\">",
"target": [
"#stake"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/64x64/0b1220/e0c36a?text=FW&font=playfair+display\" alt=\"Feltwise logo\">",
"target": [
"img[alt=\"Feltwise logo\"]"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "explicit-label",
"data": {
"explicitLabel": "Stake (entertainment units)"
},
"relatedNodes": [
{
"html": "<label for=\"stake\">Stake (entertainment units)</label>",
"target": [
"label[for=\"stake\"]"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input id=\"stake\" name=\"stake\" type=\"number\" min=\"1\" step=\"1\" value=\"20\">",
"target": [
"#stake"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "link-in-text-block-style",
"data": null,
"relatedNodes": [
{
"html": "<div class=\"promo\">",
"target": [
".promo:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a class=\"btn btn-gold\" href=\"#promotions\">Claim Bonus</a>",
"target": [
".promo:nth-child(3) > .btn-gold.btn[href$=\"#promotions\"]"
]
}
]
},
{
"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": "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\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/64x64/0b1220/e0c36a?text=FW&font=playfair+display\" alt=\"Feltwise logo\">",
"target": [
"img[alt=\"Feltwise logo\"]"
]
}
]
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<summary>Does a higher payout percentage mean I should play longer?</summary>",
"target": [
"details[open=\"\"] > summary"
]
}
]
},
{
"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": 101.2,
"height": 26.4
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (101.2px by 26.4px, 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"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "16.2pt (21.6px)",
"fontWeight": "bold",
"messageKey": "bgGradient",
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header>",
"target": [
"body > header"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>Feltwise</strong>",
"target": [
".brand > div > strong"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a background gradient"
}
]
}
],
"violations": [],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 5593
},
{
"y": 576,
"height": 5593
},
{
"y": 1152,
"height": 5593
},
{
"y": 1728,
"height": 5593
},
{
"y": 2304,
"height": 5593
},
{
"y": 2880,
"height": 5593
},
{
"y": 3456,
"height": 5593
},
{
"y": 4032,
"height": 5593
},
{
"y": 4608,
"height": 5593
},
{
"y": 4873,
"height": 5593
}
],
"scans": 11,
"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 "Gambling/Casinos" 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: "Gambling/Casinos"
- Description: Gambling news, casino guides, betting tips, and gaming resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Gambling/Casinos" 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: "Responsible Play", "News", "Promotions".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Gambling/Casinos" category. Consider themes similar to: "Betting Basics", "Game Rules", "Table Games".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "expected value", "bankroll management", "payout percentage".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Claim Bonus", "Redeem Offer", "Contact Support".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Gambling/Casinos" sector. Ideas similar but not limited to: "odds calculator".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "bonus offers", "latest promotions", "news updates".
- **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.