Meta Muse Spark 1.3 – Personal Finance
via Meta · Generated
- AIMAC Debt 23.61
- Cost $0.06
- Total Violations 27
- HTML Size 44 KB
- Em Dashes 26
Screenshot
View Live Page
Accessibility Issues Found
6 Critical 21 Serious
-
color-contrast serious 21 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<a href="#apply" class="btn btn-primary">Apply Now</a> -
label critical 5 instances
Form elements must have labels
Example HTML
<input type="range" id="inAge" min="18" max="65" value="32"> -
select-name critical 1 instance
Select element must have an accessible name
Example HTML
<select id="inRisk"><option>Conservative (80% bonds)</option><option selected="">Balanced (60/40 stocks/bonds)</option><option>Growth (90% stocks)<...
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>NorthPeak Wealth — Clarity for Every Dollar | Banking, Investing & Budgeting</title>
<meta name="description" content="NorthPeak Wealth helps you bank smarter, invest with confidence, crush debt and retire on time. Clarity for Every Dollar.">
<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=Fraunces:opsz,wght@9..144,600;9..144,700&family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<style>
:root{
--navy:#0A1E33; --navy2:#0F2B49; --ink:#1A2B3E; --muted:#5B6B80; --line:#E3EAF2;
--green:#0CA86B; --green-d:#08814F; --green-l:#E6F6EE; --gold:#E9A100; --gold-l:#FFF6DE;
--bg:#F7F9FB; --card:#FFFFFF; --radius:18px; --shadow:0 18px 45px rgba(10,30,51,.10); --shadow-s:0 8px 20px rgba(10,30,51,.08);
}
*{box-sizing:border-box} html{scroll-behavior:smooth}
body{margin:0;font-family:'Inter',system-ui,sans-serif;color:var(--ink);background:var(--bg);line-height:1.65;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:'Fraunces',serif;line-height:1.15;letter-spacing:-.02em;color:var(--navy);margin:0 0 .6rem}
p{margin:0 0 1rem} a{color:inherit} img{display:block;max-width:100%}
.container{max-width:1180px;margin:0 auto;padding:0 24px}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--green-d);background:var(--green-l);border:1px solid #C9E9D6;padding:7px 12px;border-radius:100px;margin-bottom:14px}
.eyebrow i{font-size:11px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:700;font-size:15px;padding:14px 22px;border-radius:12px;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:.2s}
.btn-primary{background:var(--green);color:#fff;box-shadow:0 10px 22px rgba(12,168,107,.35)}
.btn-primary:hover{background:var(--green-d);transform:translateY(-1px)}
.btn-dark{background:var(--navy);color:#fff} .btn-dark:hover{background:var(--navy2)}
.btn-outline{background:#fff;border-color:var(--line);color:var(--navy)} .btn-outline:hover{border-color:var(--navy)}
.btn-gold{background:var(--gold);color:var(--navy)} .btn-gold:hover{filter:brightness(1.05)}
/* topbar */
.topbar{background:var(--navy);color:#CBD8E6;font-size:13px}
.topbar .container{display:flex;justify-content:space-between;align-items:center;padding:8px 24px;gap:12px}
.topbar a{color:#fff;text-decoration:none;font-weight:600} .topbar span.dot{margin:0 8px;opacity:.4}
/* header */
header.site{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.header-inner{display:flex;align-items:center;gap:18px;padding:14px 0}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;min-width:260px}
.brand img{width:48px;height:48px;border-radius:12px}
.brand-name{font-family:'Fraunces',serif;font-weight:700;font-size:22px;color:var(--navy);line-height:1}
.brand-tag{font-size:12px;color:var(--muted);letter-spacing:.02em;font-weight:500}
nav.main-nav{display:flex;gap:4px;margin-left:auto;align-items:center}
nav.main-nav a{text-decoration:none;font-weight:600;font-size:14.5px;color:#2B3E55;padding:10px 13px;border-radius:10px}
nav.main-nav a:hover,nav.main-nav a.active{background:#EEF3F8;color:var(--navy)}
.header-cta{display:flex;gap:10px;align-items:center;margin-left:10px}
.header-cta .btn{padding:11px 18px;font-size:14px}
.hamburger{display:none;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px;font-size:18px}
/* hero */
.hero{background:radial-gradient(900px 420px at 85% -5%, #D7F0E2 0%, transparent 60%), radial-gradient(700px 400px at -10% 20%, #EAF0FF 0%, transparent 60%), linear-gradient(180deg,#fff 0%, #F2F7F3 100%);border-bottom:1px solid var(--line);overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;padding:56px 0 48px}
.hero h1{font-size:54px} .hero h1 em{font-style:normal;color:var(--green-d);position:relative}
.hero-sub{font-size:18px;color:#3E526B;max-width:560px}
.hero-points{display:flex;gap:18px;flex-wrap:wrap;margin:18px 0;color:#26405E;font-size:14px;font-weight:600}
.hero-points i{color:var(--green)}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0 14px}
.hero-proof{display:flex;align-items:center;gap:14px;margin-top:14px}
.avatars{display:flex} .avatars img{width:38px;height:38px;border-radius:50%;border:3px solid #fff;margin-left:-10px} .avatars img:first-child{margin-left:0}
.stars{color:#E9A100;font-size:14px;letter-spacing:2px}
.hero-visual{position:relative}
.dashboard{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);overflow:hidden}
.dashboard-top{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line)}
.networth{padding:20px}
.networth h4{margin:0;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.networth .amount{font-family:'Fraunces',serif;font-size:42px;color:var(--navy)}
.growth{font-size:13px;font-weight:700;color:var(--green-d);background:var(--green-l);padding:4px 10px;border-radius:100px}
.bar-row{display:flex;justify-content:space-between;font-size:13px;font-weight:600;margin:12px 0 6px}
.progress{height:10px;background:#EAF0E8;border-radius:100px;overflow:hidden} .progress span{display:block;height:100%;background:linear-gradient(90deg,var(--green),#38D39A)}
.hero-visual img.cover{height:220px;width:100%;object-fit:cover}
.float-card{position:absolute;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-s);padding:12px 14px;font-size:13px;font-weight:700}
.float-1{top:18px;right:-10px} .float-2{bottom:120px;left:-18px}
.tick{display:flex;gap:10px;overflow:auto;padding:12px 0 0;font-size:13px;color:var(--muted);font-weight:600}
.tick span{background:#fff;border:1px solid var(--line);padding:6px 12px;border-radius:100px;white-space:nowrap} .tick b{color:var(--green-d)}
.logos{border-bottom:1px solid var(--line);background:#fff} .logos .container{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:14px 24px;flex-wrap:wrap;font-size:13px;color:#7A8AA0;font-weight:700;letter-spacing:.06em}
/* sections */
section.block{padding:72px 0}
.section-head{max-width:760px;margin:0 auto 36px;text-align:center}
.section-head h2{font-size:40px} .section-head p{color:var(--muted);font-size:17px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.grid-6{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.feature{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px;transition:.2s}
.feature:hover{transform:translateY(-4px);box-shadow:var(--shadow-s);border-color:#CBDACF}
.feature .icon{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;font-size:20px;margin-bottom:14px}
.feature h3{font-size:20px;margin-bottom:8px} .feature p{font-size:14.5px;color:var(--muted)}
.feature a{font-weight:700;font-size:14px;color:var(--green-d);text-decoration:none}
.split{display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:22px;overflow:hidden;box-shadow:var(--shadow-s);margin-bottom:28px}
.split .text{padding:38px} .split .text h3{font-size:32px}
.split img{height:100%;min-height:380px;width:100%;object-fit:cover}
.check{list-style:none;padding:0;margin:16px 0} .check li{display:flex;gap:10px;margin-bottom:10px;font-size:15px} .check i{color:var(--green);margin-top:4px}
.kpi-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}
.kpi{background:#F2F7F4;border:1px solid #D9EADF;border-radius:12px;padding:12px;text-align:center} .kpi b{font-size:20px;color:var(--navy);display:block} .kpi span{font-size:12px;color:var(--muted);font-weight:600}
.table-wrap{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-top:18px}
table{width:100%;border-collapse:collapse;font-size:14px} th{background:var(--navy);color:#fff;text-align:left;padding:12px 14px} td{padding:12px 14px;border-top:1px solid var(--line)} tr:nth-child(even) td{background:#F8FAFB}
/* calculator */
.calc-section{background:linear-gradient(180deg,var(--navy) 0%, #12345A 100%);color:#EAF0F8;border-radius:26px;padding:0;overflow:hidden}
.calc-grid{display:grid;grid-template-columns:1fr 1fr}
.calc-left{padding:44px} .calc-left h2{color:#fff;font-size:38px} .calc-left p{color:#B9C9DD}
.calc-form{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:20px;margin-top:18px}
.field{margin-bottom:14px} .field label{display:flex;justify-content:space-between;font-size:13px;font-weight:700;letter-spacing:.02em;margin-bottom:6px;color:#D6E2F0}
.field label output{color:#fff;background:rgba(255,255,255,.14);padding:2px 10px;border-radius:100px}
input[type=range]{width:100%;accent-color:var(--green)} input[type=number],select{width:100%;padding:12px;border-radius:10px;border:1px solid rgba(255,255,255,.2);background:#fff;color:var(--navy);font-weight:700}
.calc-right{background:#F7F9FB;padding:44px;color:var(--ink)}
.result-hero{background:var(--navy);color:#fff;border-radius:16px;padding:22px;text-align:center}
.result-hero span{font-size:12px;letter-spacing:.12em;text-transform:uppercase;opacity:.7;font-weight:800}
.result-hero b{font-family:'Fraunces',serif;font-size:46px;display:block;line-height:1.1}
.result-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.result-cards div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px} .result-cards b{font-size:18px;color:var(--navy)} .result-cards small{color:var(--muted);font-weight:600}
.compound-note{font-size:13.5px;color:#40566F;background:#EAF6EF;border:1px solid #C8E6D2;border-radius:12px;padding:12px 14px;margin-top:14px}
/* learn + sidebar */
.learn-grid{display:grid;grid-template-columns:1.65fr .9fr;gap:26px;align-items:start}
.article-card{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;display:grid;grid-template-columns:200px 1fr;margin-bottom:16px}
.article-card img{height:100%;min-height:170px;object-fit:cover;width:100%}
.article-card div{padding:18px} .tag{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--green-d)}
.article-card h3{font-size:19px;margin:6px 0} .article-card p{font-size:14px;color:var(--muted)}
.sidebar{position:sticky;top:110px;display:flex;flex-direction:column;gap:16px}
.side-box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}
.side-box h4{margin:0 0 12px;font-size:16px;color:var(--navy);font-family:'Inter',sans-serif;font-weight:800}
.trend{list-style:none;margin:0;padding:0} .trend li{padding:10px 0;border-top:1px solid var(--line);font-size:14px} .trend li:first-child{border:0} .trend b{color:var(--gold);margin-right:8px}
.review{display:flex;gap:10px;align-items:center;margin-bottom:12px} .review img{width:44px;height:44px;border-radius:50%}
.news-form{display:flex;gap:8px} .news-form input{flex:1;padding:12px;border:1px solid var(--line);border-radius:10px}
/* testimonials */
.testi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.testi{background:#fff;border:1px solid var(--line);border-radius:18px;padding:24px;position:relative}
.testi q{font-size:15px;color:#30465E;quotes:"“" "”"} .testi .who{display:flex;gap:12px;align-items:center;margin-top:16px} .testi .who img{width:48px;height:48px;border-radius:50%}
/* faq */
.faq{max-width:800px;margin:0 auto} .faq-item{background:#fff;border:1px solid var(--line);border-radius:14px;margin-bottom:12px;overflow:hidden}
.faq-q{width:100%;background:#fff;border:0;padding:18px 20px;font-weight:700;font-size:16px;color:var(--navy);display:flex;justify-content:space-between;align-items:center;cursor:pointer;text-align:left}
.faq-a{max-height:0;overflow:hidden;transition:max-height .3s ease} .faq-a p{padding:0 20px 18px;color:var(--muted);font-size:15px}
.faq-item.open .faq-a{max-height:300px} .faq-item.open .faq-q i{transform:rotate(45deg)} .faq-q i{transition:.2s;background:var(--green-l);width:28px;height:28px;display:grid;place-items:center;border-radius:50%;color:var(--green-d)}
/* cta banner */
.cta-banner{background:linear-gradient(120deg,#0CA86B 0%, #0A7A52 60%, #0A1E33 130%);border-radius:22px;padding:44px;display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;color:#fff}
.cta-banner h2{color:#fff;font-size:36px} .cta-banner p{color:#D9EFE3}
/* footer */
footer{background:var(--navy);color:#B8C6D8;margin-top:72px}
.footer-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:28px;padding:56px 0 28px}
footer h5{color:#fff;margin:0 0 14px;font-size:14px;letter-spacing:.08em;text-transform:uppercase}
footer a{color:#B8C6D8;text-decoration:none;font-size:14px} footer a:hover{color:#fff}
footer ul{list-style:none;margin:0;padding:0} footer li{margin-bottom:9px}
.social{display:flex;gap:10px;margin-top:14px} .social a{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.1);display:grid;place-items:center;color:#fff}
.bottom{border-top:1px solid rgba(255,255,255,.12);padding:18px 0;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px}
@media(max-width:980px){
.hero-grid,.split,.calc-grid,.learn-grid,.cta-banner{grid-template-columns:1fr}
.grid-3,.grid-6,.testi-grid{grid-template-columns:1fr 1fr}
nav.main-nav{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;flex-direction:column;padding:12px;border-bottom:1px solid var(--line)} nav.main-nav.show{display:flex}
.hamburger{display:block} .header-cta .btn-outline{display:none} .split img{min-height:240px}
.footer-grid{grid-template-columns:1fr 1fr} .hero h1{font-size:42px} .float-1,.float-2{display:none}
}
@media(max-width:620px){.grid-3,.grid-6,.testi-grid{grid-template-columns:1fr} .footer-grid{grid-template-columns:1fr} .article-card{grid-template-columns:1fr} .hero h1{font-size:36px}}
</style>
</head>
<body>
<div class="topbar">
<div class="container">
<div><i class="fa-solid fa-shield-halved"></i> Member FDIC • 256-bit encryption <span class="dot">•</span> NMLS #1847392</div>
<div><a href="tel:+18005550194"><i class="fa-solid fa-phone"></i> (800) 555-0194</a> <span class="dot">•</span> <a href="#contact">Client Login →</a></div>
</div>
</div>
<header class="site">
<div class="container header-inner">
<a class="brand" href="#top">
<img src="https://placehold.co/96x96/0CA86B/FFFFFF?text=NP&font=poppins" alt="NorthPeak Wealth logo">
<span><span class="brand-name">NorthPeak Wealth</span><br><span class="brand-tag">Clarity for Every Dollar.</span></span>
</a>
<nav class="main-nav" id="mainNav" aria-label="Primary">
<a href="#banking">Banking</a>
<a href="#investing">Investing</a>
<a href="#budgeting">Budgeting</a>
<a href="#retirement" class="active">Retirement</a>
<a href="#resources">Resources</a>
<a href="#credit">Credit</a>
<a href="#contact">Contact</a>
</nav>
<div class="header-cta">
<a href="#credit" class="btn btn-outline">Check Credit</a>
<a href="#apply" class="btn btn-primary">Apply Now</a>
<button class="hamburger" id="menuBtn" aria-label="Menu"><i class="fa-solid fa-bars"></i></button>
</div>
</div>
</header>
<main id="top">
<!-- HERO -->
<div class="hero">
<div class="container hero-grid">
<div>
<span class="eyebrow"><i class="fa-solid fa-bolt"></i> New • 4.75% APY High-Yield Savings + $300 Bonus</span>
<h1>Bank, budget and invest like your <em>future depends on it.</em></h1>
<p class="hero-sub">NorthPeak Wealth unites everyday banking, automated budgeting, and low-cost investing in one dashboard — so you can grow savings, improve credit, and retire with confidence. Join 240,000+ members building real wealth.</p>
<div class="hero-points"><span><i class="fa-solid fa-circle-check"></i> No monthly fees</span><span><i class="fa-solid fa-circle-check"></i> FICO® updates weekly</span><span><i class="fa-solid fa-circle-check"></i> Human advisors on call</span></div>
<div class="hero-actions">
<a href="#apply" class="btn btn-primary">Apply Now <i class="fa-solid fa-arrow-right"></i></a>
<a href="#quote" class="btn btn-dark">Get Quote</a>
<a href="#credit" class="btn btn-outline">Check Credit — Free</a>
</div>
<div class="hero-proof">
<div class="avatars">
<img src="https://i.pravatar.cc/76?u=northpeak1" alt="member"><img src="https://i.pravatar.cc/76?u=northpeak2" alt="member"><img src="https://i.pravatar.cc/76?u=northpeak3" alt="member"><img src="https://i.pravatar.cc/76?u=northpeak4" alt="member">
</div>
<div><div class="stars">★★★★★</div><small><b>4.8/5</b> from 18,400 reviews • Trusted since 2012</small></div>
</div>
<div class="tick" aria-label="Market snapshot"><span>S&P 500 <b>+0.84%</b></span><span>Nasdaq <b>+1.12%</b></span><span>10-Yr Yield 4.21%</span><span>HYSA up to <b>4.75% APY</b></span><span>Avg. member saves <b>$412/mo</b></span></div>
</div>
<div class="hero-visual">
<div class="float-card float-1">💰 Round-up: <b>+$38.20</b> to Roth IRA this week</div>
<div class="float-card float-2">📈 Portfolio: <b style="color:#0CA86B">+11.4% YTD</b></div>
<div class="dashboard">
<div class="dashboard-top"><b>Welcome back, Maya 👋</b><span class="growth">▲ Net worth +$2,340</span></div>
<img class="cover" src="https://picsum.photos/seed/northpeak-hero/800/360" alt="Family reviewing finances at home">
<div class="networth">
<h4>Total Net Worth</h4>
<div class="amount">$128,450.22</div>
<div class="bar-row"><span>Emergency fund</span><span>92% of $15k goal</span></div>
<div class="progress"><span style="width:92%"></span></div>
<div class="bar-row"><span>Retirement • Age 67</span><span>On track ✓</span></div>
<div class="progress"><span style="width:74%"></span></div>
<div class="bar-row"><span>Credit Score 764</span><span>Excellent</span></div>
<div class="progress"><span style="width:86%"></span></div>
<p style="font-size:13px;color:var(--muted);margin-top:12px">Automated: $650/mo to HYSA • $500/mo to index funds • $220 extra to high-interest card.</p>
</div>
</div>
</div>
</div>
</div>
<div class="logos"><div class="container"><span>AS FEATURED IN</span><b>Forbes • NerdWallet • Kiplinger • Morningstar • CNBC Select</b><span>★ Bankrate Best Digital Bank 2025-2026</span></div></div>
<!-- PILLARS -->
<section class="block" id="banking">
<div class="container">
<div class="section-head"><span class="eyebrow"><i class="fa-solid fa-compass"></i> One app for all your money</span><h2>Six pillars for lifelong financial health</h2><p>Most people juggle five apps and a spreadsheet. NorthPeak brings banking, budgeting, and wealth-building together with fiduciary guidance at every step — from your first $1,000 emergency fund to your first $1M in invested assets.</p></div>
<div class="grid-6">
<div class="feature"><div class="icon" style="background:#E6F6EE">🏦</div><h3>Everyday Banking</h3><p>Fee-free checking with early direct deposit, 60,000+ ATMs, and a 4.75% APY high-yield vault. Separate bills, fun, and goals without mental math.</p><a href="#quote">Get Quote →</a></div>
<div class="feature" id="budgeting"><div class="icon" style="background:#FFF6DE">📊</div><h3>Smart Budgeting</h3><p>Auto-categorized spending, 50/30/20 and zero-based templates, bill negotiation, and gentle nudges when dining out creeps past your target.</p><a href="#resources">See budgeting guides →</a></div>
<div class="feature" id="investing"><div class="icon" style="background:#EAF0FF">📈</div><h3>Low-Cost Investing</h3><p>Diversified index portfolios with thoughtful asset allocation across U.S., international, and bonds. Automatic rebalancing, fractional shares from $5.</p><a href="#quote">Start investing →</a></div>
<div class="feature" id="credit"><div class="icon" style="background:#FEEAEA">💳</div><h3>Credit Improvement</h3><p>Free weekly FICO® score, utilization alerts, and a step-by-step builder that helped members gain +48 points on average in 6 months.</p><a href="#credit">Check Credit free →</a></div>
<div class="feature"><div class="icon" style="background:#EDE9FF">🧾</div><h3>Tax Planning</h3><p>Maximize Roth vs. pre-tax contributions, harvest capital gains wisely, and track deductible expenses year-round — not just in April.</p><a href="#tax">Explore tax strategies →</a></div>
<div class="feature"><div class="icon" style="background:#E6F7F5">⛓️💥</div><h3>Debt Management</h3><p>Avalanche vs. snowball payoff simulator, 0% balance-transfer matching, and consolidation loans from 7.49% APR for qualified borrowers.</p><a href="#debt">Build payoff plan →</a></div>
</div>
</div>
</section>
<!-- CREDIT + DEBT -->
<section class="block" id="debt" style="padding-top:0">
<div class="container">
<div class="split">
<img src="https://picsum.photos/seed/credit-home/700/600" alt="Couple checking credit on laptop">
<div class="text">
<span class="eyebrow">Credit Improvement • Debt Management</span>
<h3>From 640 to 760: a proven climb out of debt</h3>
<p>When Denise joined NorthPeak, she carried $18,400 across three cards at 24.9% APR and a 642 score that blocked her mortgage. Together we mapped every balance, interest rate, and due date — then automated the rest. By prioritizing high-interest balances first (the debt avalanche method) while keeping utilization below 30%, she saved $4,120 in interest and broke 750 in fourteen months.</p>
<p>Your plan starts with visibility. Link your accounts to see utilization by card, get alerts before you cross 10% thresholds, and simulate how paying an extra $150 per month shortens your debt-free date. Members using autopay + round-ups pay off revolving debt 2.3x faster on average.</p>
<ul class="check"><li><i class="fa-solid fa-circle-check"></i> <span><b>Free FICO® Score Simulator</b> — see impact before you close, open, or transfer.</span></li><li><i class="fa-solid fa-circle-check"></i> <span><b>Balance-transfer marketplace</b> — compare 0% offers side-by-side, no hard pull to preview.</span></li><li><i class="fa-solid fa-circle-check"></i> <span><b>Credit builder loan</b> — $500–$3,000 held in savings while payments build history.</span></li></ul>
<div class="kpi-row"><div class="kpi"><b>+48 pts</b><span>avg. 6-mo gain</span></div><div class="kpi"><b>7.49% APR</b><span>consolidation from</span></div><div class="kpi"><b>14 mo</b><span>median card payoff</span></div></div>
<div style="display:flex;gap:10px;flex-wrap:wrap"><a href="#credit" class="btn btn-primary">Check Credit</a><a href="#apply" class="btn btn-outline">Get Debt Payoff Plan</a></div>
</div>
</div>
<div class="split" id="tax" style="grid-template-columns:1fr 1fr">
<div class="text">
<span class="eyebrow">Tax Planning • Investing Strategy</span>
<h3>Keep more of what you earn: asset allocation meets tax smarts</h3>
<p>Investment returns are only half the story — what you keep after taxes matters more. Our advisors help you place assets tax-efficiently: bonds and REITs in pre-tax 401(k)s, high-growth equities in Roth IRAs where qualified withdrawals are tax-free, and broad-market ETFs in taxable accounts to manage capital gains.</p>
<p>Through annual tax-loss harvesting, strategic Roth conversions in low-income years, and HSA triple-tax advantages, NorthPeak members reduced taxable drag by an average of 0.68% per year. Thanks to compound interest, that small edge can mean $142,000 more over a 30-year horizon on a $500 monthly investment.</p>
<div class="table-wrap"><table><thead><tr><th>Account</th><th>Best for</th><th>2026 Limit*</th></tr></thead><tbody><tr><td><b>401(k) / 403(b)</b></td><td>Pre-tax + employer match</td><td>$23,500 (+$7,500 if 50+)</td></tr><tr><td><b>Roth IRA</b></td><td>Tax-free growth & withdrawals</td><td>$7,000 (+$1,000 if 50+)</td></tr><tr><td><b>HSA</b></td><td>Triple tax benefit</td><td>$4,150 single / $8,300 family</td></tr></tbody></table></div>
<p style="font-size:12px;color:var(--muted)">*IRS limits shown for illustration; consult a tax professional.</p>
<div style="display:flex;gap:10px;flex-wrap:wrap"><a href="#quote" id="quote" class="btn btn-dark">Get Quote</a><a href="#retirement" class="btn btn-outline">Run retirement math ↓</a></div>
</div>
<img src="https://picsum.photos/seed/tax-invest/700/650" alt="Advisor explaining investment charts">
</div>
</div>
</section>
<!-- CALCULATOR -->
<section class="block" id="retirement" style="padding-top:0">
<div class="container">
<div class="calc-section">
<div class="calc-grid">
<div class="calc-left">
<span class="eyebrow" style="background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.18)">Interactive • Retirement Calculator</span>
<h2>Will you retire on time — or work 5 extra years?</h2>
<p>Adjust the sliders to see the power of compound interest in real time. Small increases today — starting earlier, adding $100/month, or improving asset allocation by 1% — compound into six-figure differences by retirement.</p>
<div class="calc-form">
<div class="field"><label>Current age <output id="oAge">32</output></label><input type="range" id="inAge" min="18" max="65" value="32"></div>
<div class="field"><label>Retire at <output id="oRet">67</output></label><input type="range" id="inRet" min="55" max="75" value="67"></div>
<div class="field"><label>Current savings <output id="oCur">$25,000</output></label><input type="range" id="inCur" min="0" max="500000" step="5000" value="25000"></div>
<div class="field"><label>Monthly contribution <output id="oMon">$650</output></label><input type="range" id="inMon" min="0" max="3000" step="25" value="650"></div>
<div class="field"><label>Expected annual return <output id="oRate">7.0%</output></label><input type="range" id="inRate" min="2" max="10" step="0.1" value="7"></div>
<div class="field" style="display:grid;grid-template-columns:1fr 1fr;gap:10px"><div><label>Risk profile</label><select id="inRisk"><option>Conservative (80% bonds)</option><option selected>Balanced (60/40 stocks/bonds)</option><option>Growth (90% stocks)</option></select></div><div><label>Email for full report</label><input type="number" id="inInfl" placeholder="e.g. 3% inflation" style="display:none"><input type="text" id="inEmail" placeholder="you@email.com" style="background:#fff"></div></div>
</div>
<p style="font-size:12px;margin-top:12px">Hypothetical illustration with monthly compounding. Not a guarantee. Assumes returns net of 0.25% advisory fee.</p>
</div>
<div class="calc-right">
<div class="result-hero"><span>Projected nest egg at retirement</span><b id="resTotal">$1,142,380</b><small id="resSub" style="opacity:.8">Contributions $298,000 • Growth $844,380</small></div>
<div class="result-cards"><div><small>Monthly income (4% rule)</small><br><b id="resIncome">$3,808/mo</b></div><div><small>Income replacement</small><br><b id="resReplace">68%</b></div><div><small>Debt-free boost if +$200/mo</small><br><b id="resBoost">+$248k</b></div><div><small>Retirement readiness</small><br><b id="resScore" style="color:#08814F">● On Track</b></div></div>
<div style="margin-top:14px"><div class="bar-row"><span>Your progress to $1M</span><span id="resPct">100%+</span></div><div class="progress"><span id="resBar" style="width:100%"></span></div></div>
<div class="compound-note"><b>Why compound interest wins:</b> <span id="resNote">Starting at 32 vs. 42 gives your first $25k an extra decade to double — turning $650/mo into over $1.1M instead of ~$540k.</span></div>
<div style="display:flex;gap:10px;margin-top:14px;flex-wrap:wrap"><a href="#apply" class="btn btn-primary" style="flex:1">Apply Now — Open Roth IRA</a><a href="#contact" class="btn btn-outline">Talk to Advisor</a></div>
</div>
</div>
</div>
</div>
</section>
<!-- RESOURCES + SIDEBAR -->
<section class="block" id="resources" style="padding-top:0">
<div class="container">
<div class="section-head"><span class="eyebrow">Resources • Learn & Compare</span><h2>Real-world money guides, not jargon</h2><p>Written by CFP® professionals and reviewed quarterly. No sponsored rankings — just clear math on budgeting, banking fees, and building wealth on a middle-class salary.</p></div>
<div class="learn-grid">
<div>
<div class="article-card"><img src="https://picsum.photos/seed/budget-50/400/350" alt="Budget planning"><div><span class="tag">Budgeting • 8 min read</span><h3>The 50/30/20 budget that actually sticks (with free template)</h3><p>Learn how to automate needs, wants, and savings across two checking vaults, handle irregular income, and use a weekly 10-minute money date instead of daily guilt. Includes a downloadable zero-based worksheet and three real household examples from $52k to $145k.</p><a href="#resources" style="font-weight:800;color:#08814F;text-decoration:none">Read guide →</a></div></div>
<div class="article-card"><img src="https://picsum.photos/seed/roth-guide/400/350" alt="Retirement investing"><div><span class="tag">Retirement • 11 min read</span><h3>Roth vs. Traditional: which wins in your 30s, 40s, and 50s?</h3><p>We model three earners through job changes, home purchases, and early retirement to show when pre-tax deductions beat tax-free growth. Plus: backdoor Roth walkthrough, required minimum distributions explained, and how to avoid costly capital gains surprises when rebalancing.</p><a href="#retirement" style="font-weight:800;color:#08814F;text-decoration:none">Compare accounts →</a></div></div>
<div class="article-card"><img src="https://picsum.photos/seed/score-750/400/350" alt="Credit score"><div><span class="tag">Credit • 6 min read</span><h3>7 habits that quietly push you past 750 (without closing old cards)</h3><p>From keeping utilization under 9% to staggering autopay dates, these small tweaks improved scores faster than disputes alone. See how on-time rent reporting, secured-card graduation, and authorized-user strategy fit together — and what to ignore.</p><a href="#credit" style="font-weight:800;color:#08814F;text-decoration:none">Check Credit free →</a></div></div>
<div style="background:#0A1E33;color:#fff;border-radius:16px;padding:22px;display:flex;gap:16px;align-items:center;flex-wrap:wrap"><div style="flex:1;min-width:220px"><h3 style="color:#fff;margin:0 0 6px">Get your free 2026 Money Health Report</h3><p style="margin:0;color:#B9C9DD;font-size:14px">Credit, cash flow, and retirement readiness in 3 minutes. No hard inquiry.</p></div><a href="#apply" class="btn btn-gold">Get Quote</a></div>
</div>
<aside class="sidebar">
<div class="side-box"><h4>🔥 Trending Topics</h4><ul class="trend"><li><b>01</b> HYSA rates: where 4.75% APY still exists</li><li><b>02</b> IRS 2026 contribution limits explained</li><li><b>03</b> Avalanche vs. snowball: payoff calculator</li><li><b>04</b> Should you do a Roth conversion this year?</li><li><b>05</b> 5 bank fees to kill before January</li></ul></div>
<div class="side-box" style="background:linear-gradient(180deg,#FFF6DE,#fff);border-color:#E8D48A"><h4>💡 Expert Insight</h4><p style="font-size:14px;font-style:italic">“Asset allocation explains ~90% of portfolio variability. Pick the right mix of stocks and bonds first — fund selection comes second.”</p><div class="review"><img src="https://i.pravatar.cc/88?u=advisorNorth" alt="advisor"><div><b style="font-size:14px">Priya Nair, CFP®</b><br><small style="color:var(--muted)">Chief Planning Officer, 14 yrs</small></div></div><a href="#contact" class="btn btn-dark" style="width:100%;font-size:14px">Book Free 15-min Call</a></div>
<div class="side-box"><h4>⭐ Top Product Reviews</h4><div style="font-size:13px"><p><b>NorthPeak Checking ★★★★★</b><br><span style="color:var(--muted)">Early pay + no overdraft fees. “Switched in 11 minutes.”</span></p><p><b>Auto-Invest Portfolios ★★★★☆</b><br><span style="color:var(--muted)">0.25% fee, auto rebalance. Great for hands-off Roths.</span></p><p><b>Platinum Rewards Card ★★★★☆</b><br><span style="color:var(--muted)">2% flat cash back, 0% intro 15 mo. 670+ to qualify.</span></p></div></div>
<div class="side-box" style="background:var(--navy);color:#fff;border-color:var(--navy)"><h4 style="color:#fff">📬 The Sunday Ledger</h4><p style="font-size:13px;color:#B9C9DD">One actionable money tip weekly. 84,000 readers. No spam.</p><form class="news-form" onsubmit="event.preventDefault();alert('Thanks! Check your inbox to confirm.');"><input type="email" required placeholder="Email address"><button class="btn btn-primary" style="padding:12px 16px">Join</button></form></div>
</aside>
</div>
</div>
</section>
<!-- TESTIMONIALS -->
<section class="block" style="background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line)">
<div class="container">
<div class="section-head"><span class="eyebrow">Member Stories • 18,400 verified reviews</span><h2>Loved by nurses, teachers, founders — and new parents</h2><p>Real balances, real timelines. Names shared with permission; results vary but the habits are universal.</p></div>
<div class="testi-grid">
<div class="testi"><div class="stars">★★★★★</div><q>We paid off $31k in cards and boosted our scores 110 points combined. The payoff simulator made it a game — we could see our debt-free date move closer every extra payment.</q><div class="who"><img src="https://i.pravatar.cc/96?u=member-maya32" alt="Maya"><div><b>Marcus & Alina T.</b><br><small style="color:var(--muted)">Denver, CO • Debt-free in 19 months</small></div></div></div>
<div class="testi" style="border-color:#0CA86B;box-shadow:var(--shadow-s)"><div class="stars">★★★★★</div><q>My advisor re-did my asset allocation and moved bonds into my 401(k) for taxes. Same contributions, $92k more projected by 65 thanks to lower drag and true compound interest. Mind blown.</q><div class="who"><img src="https://i.pravatar.cc/96?u=member-jenna8" alt="Jenna"><div><b>Jenna R., RN</b><br><small style="color:var(--muted)">Austin, TX • Roth IRA + 401(k)</small></div></div></div>
<div class="testi"><div class="stars">★★★★★</div><q>As a freelancer, taxes used to terrify me. Quarterly estimates, SEP vs. Solo 401(k), quarterly capital gains reviews — NorthPeak handles it. I saved $3,800 last year and finally maxed my HSA.</q><div class="who"><img src="https://i.pravatar.cc/96?u=member-devon11" alt="Devon"><div><b>Devon K.</b><br><small style="color:var(--muted)">Brooklyn, NY • Self-employed</small></div></div></div>
</div>
</div>
</section>
<!-- FAQ -->
<section class="block" id="credit">
<div class="container">
<div class="section-head"><span class="eyebrow">FAQ • Straight answers</span><h2>Questions? Good. That means you’re paying attention.</h2><p>Can’t find it? Call <b>(800) 555-0194</b> Mon–Sat 7am–8pm CT or chat in the app — median wait 38 seconds.</p></div>
<div class="faq">
<div class="faq-item open"><button class="faq-q">Does checking my credit hurt my score? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>No. NorthPeak uses a soft inquiry to show your FICO® Score 8 weekly, which never impacts your score. Only when you formally apply for a loan or card do we run a hard inquiry — and we’ll always ask first and show the exact rate you’ll get.</p></div></div>
<div class="faq-item"><button class="faq-q">How is NorthPeak different from my big bank? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>We have no physical branches to fund, so we pass savings to you: 4.75% APY vs. 0.01% national average, zero overdraft or monthly fees, plus fiduciary investment advice included. You still get 60,000+ free ATMs, Zelle®, and FDIC insurance up to $2M through sweep networks.</p></div></div>
<div class="faq-item"><button class="faq-q">What fees do you charge for investing? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>Automated portfolios cost 0.25% annually with no trade commissions; underlying ETFs average 0.06%. Self-directed brokerage has $0 commissions. We never earn payment for order flow on equities and we disclose every dollar in plain English before you confirm.</p></div></div>
<div class="faq-item"><button class="faq-q">Can you help reduce my taxes on investments? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>Yes. We automate tax-loss harvesting in taxable accounts, coordinate asset location to minimize capital gains distributions, and model Roth conversions to fill low brackets. Last year, 73% of eligible members harvested at least $1,200 in losses to offset gains.</p></div></div>
<div class="faq-item"><button class="faq-q">How fast can I open an account and get funding? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>Most checking, savings, and Roth IRA accounts open in under 10 minutes with ID verification. Direct deposits typically arrive one day early, and external transfers settle in 1–3 business days. Consolidation loans fund as fast as next business day after approval.</p></div></div>
<div class="faq-item"><button class="faq-q">Is my money safe with an online bank? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>Deposits are FDIC-insured, investments carry SIPC protection up to $500,000, and accounts use biometric login, device binding, and real-time fraud monitoring. We’ve maintained a 99.99% uptime and zero data-sale policy since 2012.</p></div></div>
</div>
<div class="container" id="apply" style="margin-top:28px"><div class="cta-banner"><div><h2>Open your account in 10 minutes. Get $300 + 4.75% APY.</h2><p>Fee-free checking, high-yield savings vaults, free credit monitoring, and automated investing — with a CFP® check-in in your first 30 days. No minimum balance. Cancel anytime.</p><div style="display:flex;gap:10px;flex-wrap:wrap;margin-top:14px"><a href="#top" class="btn btn-gold">Apply Now <i class="fa-solid fa-arrow-right"></i></a><a href="#quote" class="btn" style="background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.3)">Get Quote</a></div><small style="opacity:.8">* $300 bonus with $2,500+ direct deposit in 90 days. APY variable.</small></div><div style="background:#fff;border-radius:16px;padding:22px;color:var(--navy)"><h3 style="margin-bottom:10px">What you’ll need:</h3><ul class="check"><li><i class="fa-solid fa-circle-check"></i> Photo ID + SSN/ITIN (secure upload)</li><li><i class="fa-solid fa-circle-check"></i> 5 mins for goals: emergency, home, retirement</li><li><i class="fa-solid fa-circle-check"></i> Link external bank via Plaid (256-bit)</li></ul><img src="https://placehold.co/520x120/0A1E33/FFFFFF?text=VISA+•+FDIC+•+SIPC+•+256-bit+Secure&font=inter" alt="security badges" style="border-radius:10px;margin-top:10px"></div></div></div>
</div>
</section>
</main>
<footer id="contact">
<div class="container footer-grid">
<div><a class="brand" href="#top" style="margin-bottom:12px"><img src="https://placehold.co/96x96/FFFFFF/0A1E33?text=NP&font=poppins" alt="logo"><span><span class="brand-name" style="color:#fff">NorthPeak Wealth</span><br><span class="brand-tag" style="color:#8EA0B5">Clarity for Every Dollar.</span></span></a><p style="font-size:14px;max-width:320px">Fiduciary banking + investing for everyday wealth builders. Member FDIC. Advisory by NorthPeak Advisors LLC, SEC-registered.</p><p style="font-size:14px"><i class="fa-solid fa-location-dot"></i> 123 Market Street, Suite 2400, Denver, CO 80202<br><i class="fa-solid fa-phone"></i> (800) 555-0194<br><i class="fa-solid fa-envelope"></i> hello@northpeakwealth.com</p><div class="social"><a href="#" aria-label="X"><i class="fa-brands fa-x-twitter"></i></a><a href="#" aria-label="Instagram"><i class="fa-brands fa-instagram"></i></a><a href="#" aria-label="LinkedIn"><i class="fa-brands fa-linkedin"></i></a><a href="#" aria-label="YouTube"><i class="fa-brands fa-youtube"></i></a><a href="#" aria-label="TikTok"><i class="fa-brands fa-tiktok"></i></a></div></div>
<div><h5>Products</h5><ul><li><a href="#banking">High-Yield Savings 4.75%</a></li><li><a href="#banking">Fee-Free Checking</a></li><li><a href="#investing">Auto-Invest Portfolios</a></li><li><a href="#credit">Credit Builder & Cards</a></li><li><a href="#debt">Debt Consolidation Loans</a></li><li><a href="#retirement">Roth & Traditional IRA</a></li></ul></div>
<div><h5>Resources</h5><ul><li><a href="#resources">Budgeting Templates</a></li><li><a href="#retirement">Retirement Calculator</a></li><li><a href="#tax">Tax Planning Center</a></li><li><a href="#credit">Free Credit Score Guide</a></li><li><a href="#resources">Help Center</a></li><li><a href="#contact">Contact Us</a></li></ul></div>
<div><h5>Company</h5><ul><li><a href="#">About Us</a></li><li><a href="#">Careers — We’re hiring</a></li><li><a href="#">Press & Reviews</a></li><li><a href="#">Security & Fraud Prevention</a></li><li><a href="#">Accessibility</a></li><li><a href="#">Disclosures & Form ADV</a></li></ul></div>
</div>
<div class="container bottom"><span>© 2026 NorthPeak Wealth Financial Corp. All rights reserved. Banking services by NorthPeak Bank, Member FDIC. Investing involves risk including loss of principal.</span><span><a href="#">Privacy Policy</a> • <a href="#">Terms of Service</a> • <a href="#">Cookies</a> • <a href="#">Do Not Sell My Info</a></span></div>
</footer>
<script>
const menuBtn=document.getElementById('mainNav');
document.getElementById('menuBtn').addEventListener('click',()=>menuBtn.classList.toggle('show'));
document.querySelectorAll('.faq-q').forEach(b=>b.addEventListener('click',()=>{
const item=b.parentElement; const wasOpen=item.classList.contains('open');
document.querySelectorAll('.faq-item').forEach(i=>i.classList.remove('open'));
if(!wasOpen) item.classList.add('open');
}));
const fmt$=n=>'$'+Math.round(n).toLocaleString('en-US');
const $=id=>document.getElementById(id);
function calc(){
const age=+$('inAge').value, ret=+$('inRet').value, cur=+$('inCur').value, mon=+$('inMon').value, annual=+$('inRate').value/100;
$('oAge').textContent=age; $('oRet').textContent=ret; $('oCur').textContent=fmt$(cur); $('oMon').textContent=fmt$(mon); $('oRate').textContent=(annual*100).toFixed(1)+'%';
let years=Math.max(0,ret-age); let months=years*12; let r=annual/12;
let fv=cur*Math.pow(1+r,months);
if(r>0) fv+= mon*((Math.pow(1+r,months)-1)/r);
else fv+= mon*months;
const contrib=cur+mon*months; const growth=Math.max(0,fv-contrib);
$('resTotal').textContent=fmt$(fv);
$('resSub').textContent=`Contributions ${fmt$(contrib)} • Growth ${fmt$(growth)}`;
const monthlyIncome=fv*0.04/12;
$('resIncome').textContent=fmt$(monthlyIncome)+'/mo';
const pct=Math.min(140,Math.round(fv/1000000*100));
$('resBar').style.width=Math.min(100,pct)+'%';
$('resPct').textContent=(fv>=1000000?'100%+ • Millionaire trajectory!':pct+'% of $1M');
$('resReplace').textContent=Math.min(150,Math.round(monthlyIncome/5600*100))+'%';
let extra = r>0 ? 200*((Math.pow(1+r,months)-1)/r) : 200*months;
$('resBoost').textContent='+'+fmt$(extra).slice(0);
$('resScore').textContent= fv>=800000 ? '● On Track' : fv>=400000 ? '● Almost There' : '● Needs Boost';
$('resScore').style.color= fv>=800000 ? '#08814F' : fv>=400000 ? '#B77900' : '#C0392B';
const ifLate = (()=>{let m2=Math.max(0,ret-(age+10))*12; let f2=cur*Math.pow(1+r,m2); if(r>0)f2+=mon*((Math.pow(1+r,m2)-1)/r); return f2;})();
$('resNote').textContent=`Starting at ${age} vs. ${age+10} keeps $${Math.round((fv-ifLate)/1000)}k+ extra working for you — that's compound interest: growth earning its own growth every month for ${years} years.`;
}
['inAge','inRet','inCur','inMon','inRate'].forEach(id=>$(id).addEventListener('input',calc));
calc();
</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:55:10.747Z",
"url": "https://benchmark.aimac.invalid/b01a1b65e498ce27162bc441fc5e4a817524c28f70540014e635ea1650a28cd4.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "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": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-allowed-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attributes are used correctly for the defined role"
}
],
"none": [
{
"id": "aria-unsupported-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute is supported"
}
],
"impact": null,
"html": "<nav class=\"main-nav\" id=\"mainNav\" aria-label=\"Primary\">",
"target": [
"#mainNav"
]
}
]
},
{
"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 class=\"main-nav\" id=\"mainNav\" aria-label=\"Primary\">",
"target": [
"#mainNav"
]
}
]
},
{
"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": "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": "<nav class=\"main-nav\" id=\"mainNav\" aria-label=\"Primary\">",
"target": [
"#mainNav"
]
}
]
},
{
"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 class=\"main-nav\" id=\"mainNav\" aria-label=\"Primary\">",
"target": [
"#mainNav"
]
}
]
},
{
"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 class=\"main-nav\" id=\"mainNav\" aria-label=\"Primary\">",
"target": [
"#mainNav"
]
}
]
},
{
"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": "<b style=\"color:#0CA86B\">+11.4% YTD</b>",
"target": [
".float-2 > b"
]
}
]
},
{
"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-primary\" style=\"padding:12px 16px\">Join</button>",
"target": [
"form > .btn-primary"
]
}
]
},
{
"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>Bank, budget and invest like your <em>future depends on it.</em></h1>",
"target": [
"h1"
]
},
{
"html": "<h4>Total Net Worth</h4>",
"target": [
".networth > h4"
]
},
{
"html": "<h2>Six pillars for lifelong financial health</h2>",
"target": [
"#banking > .container > .section-head > h2"
]
},
{
"html": "<h3>Everyday Banking</h3>",
"target": [
".feature:nth-child(1) > h3"
]
},
{
"html": "<h3>Smart Budgeting</h3>",
"target": [
"#budgeting > h3"
]
},
{
"html": "<h3>Low-Cost Investing</h3>",
"target": [
"#investing > h3"
]
},
{
"html": "<h3>Credit Improvement</h3>",
"target": [
".feature:nth-child(4) > h3"
]
},
{
"html": "<h3>Tax Planning</h3>",
"target": [
".feature:nth-child(5) > h3"
]
},
{
"html": "<h3>Debt Management</h3>",
"target": [
".feature:nth-child(6) > h3"
]
},
{
"html": "<h3>From 640 to 760: a proven climb out of debt</h3>",
"target": [
".split:nth-child(1) > .text > h3"
]
},
{
"html": "<h3>Keep more of what you earn: asset allocation meets tax smarts</h3>",
"target": [
"#tax > .text > h3"
]
},
{
"html": "<h2>Will you retire on time \u2014 or work 5 extra years?</h2>",
"target": [
".calc-left > h2"
]
},
{
"html": "<h2>Real-world money guides, not jargon</h2>",
"target": [
"#resources > .container > .section-head > h2"
]
},
{
"html": "<h3>The 50/30/20 budget that actually sticks (with free template)</h3>",
"target": [
".article-card:nth-child(1) > div > h3"
]
},
{
"html": "<h3>Roth vs. Traditional: which wins in your 30s, 40s, and 50s?</h3>",
"target": [
".article-card:nth-child(2) > div > h3"
]
},
{
"html": "<h3>7 habits that quietly push you past 750 (without closing old cards)</h3>",
"target": [
".article-card:nth-child(3) > div > h3"
]
},
{
"html": "<h3 style=\"color:#fff;margin:0 0 6px\">Get your free 2026 Money Health Report</h3>",
"target": [
"div:nth-child(4) > div > h3"
]
},
{
"html": "<h4>\ud83d\udd25 Trending Topics</h4>",
"target": [
".side-box:nth-child(1) > h4"
]
},
{
"html": "<h4>\ud83d\udca1 Expert Insight</h4>",
"target": [
".side-box:nth-child(2) > h4"
]
},
{
"html": "<h4>\u2b50 Top Product Reviews</h4>",
"target": [
".side-box:nth-child(3) > h4"
]
},
{
"html": "<h4 style=\"color:#fff\">\ud83d\udcec The Sunday Ledger</h4>",
"target": [
".side-box:nth-child(4) > h4"
]
},
{
"html": "<h2>Loved by nurses, teachers, founders \u2014 and new parents</h2>",
"target": [
"section:nth-child(7) > .container > .section-head > h2"
]
},
{
"html": "<h2>Questions? Good. That means you\u2019re paying attention.</h2>",
"target": [
"section:nth-child(8) > .container > .section-head > h2"
]
},
{
"html": "<h2>Open your account in 10 minutes. Get $300 + 4.75% APY.</h2>",
"target": [
".cta-banner > div:nth-child(1) > h2"
]
},
{
"html": "<h3 style=\"margin-bottom:10px\">What you\u2019ll need:</h3>",
"target": [
".cta-banner > div:nth-child(2) > h3"
]
},
{
"html": "<h5>Products</h5>",
"target": [
"div:nth-child(2) > h5"
]
},
{
"html": "<h5>Resources</h5>",
"target": [
"div:nth-child(3) > h5"
]
},
{
"html": "<h5>Company</h5>",
"target": [
"div:nth-child(4) > h5"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main id=\"top\">",
"target": [
"#top"
]
}
],
"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": "#cbd8e6",
"bgColor": "#0a1e33",
"contrastRatio": 11.63,
"fontSize": "9.8pt (13px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 11.63"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div><i class=\"fa-solid fa-shield-halved\"></i> Member FDIC \u2022 256-bit encryption <span class=\"dot\">\u2022</span> NMLS #1847392</div>",
"target": [
".topbar > .container > div:nth-child(1)"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input type=\"range\" id=\"inAge\" min=\"18\" max=\"65\" value=\"32\">",
"target": [
"#inAge"
]
}
]
},
{
"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/96x96/0CA86B/FFFFFF?text=NP&font=poppins\" alt=\"NorthPeak Wealth logo\">",
"target": [
"img[alt=\"NorthPeak Wealth logo\"]"
]
}
]
},
{
"id": "label",
"impact": "critical",
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"text\" id=\"inEmail\" placeholder=\"you@email.com\" style=\"background:#fff\">",
"target": [
"#inEmail"
]
}
]
},
{
"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=\"feature\"><div class=\"icon\" style=\"background:#E6F6EE\">\ud83c\udfe6</div><h3>Everyday Banking</h3><p>Fee-free checking with early direct deposit, 60,000+ ATMs, and a 4.75% APY high-yield vault. Separate bills, fun, and goals without mental math.</p><a href=\"#quote\">Get Quote \u2192</a></div>",
"target": [
".feature:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#quote\">Get Quote \u2192</a>",
"target": [
".feature:nth-child(1) > a[href$=\"#quote\"]"
]
}
]
},
{
"id": "link-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a href=\"tel:+18005550194\"><i class=\"fa-solid fa-phone\"></i> (800) 555-0194</a>",
"target": [
"a[href=\"tel:+18005550194\"]"
]
}
]
},
{
"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=\"check\">",
"target": [
".text > .check"
]
}
]
},
{
"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><i class=\"fa-solid fa-circle-check\"></i> <span><b>Free FICO\u00ae Score Simulator</b> \u2014 see impact before you close, open, or transfer.</span></li>",
"target": [
".text > .check > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/96x96/0CA86B/FFFFFF?text=NP&font=poppins\" alt=\"NorthPeak Wealth logo\">",
"target": [
"img[alt=\"NorthPeak Wealth logo\"]"
]
}
]
},
{
"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": 260,
"height": 79.2
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (260px by 79.2px, 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=\"brand\" href=\"#top\">\n <img src=\"https://placehold.co/96x96/0CA86B/FFFFFF?text=NP&font=poppins\" alt=\"NorthPeak Wealth logo\">\n <span><span class=\"brand-name\">NorthPeak Wealth</span><br><span class=\"brand-tag\">Clarity for Every Dollar.</span></span>\n </a>",
"target": [
".header-inner > .brand[href$=\"#top\"]"
]
}
]
},
{
"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>",
"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>",
"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=\"tick\" aria-label=\"Market snapshot\"><span>S&P 500 <b>+0.84%</b></span><span>Nasdaq <b>+1.12%</b></span><span>10-Yr Yield 4.21%</span><span>HYSA up to <b>4.75% APY</b></span><span>Avg. member saves <b>$412/mo</b></span></div>",
"target": [
".tick"
],
"failureSummary": "Fix all of the following:\n aria-label attribute is not well supported on a div with no valid role attribute."
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "40.5pt (54px)",
"fontWeight": "bold",
"messageKey": "bgGradient",
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"hero\">",
"target": [
".hero"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h1>Bank, budget and invest like your <em>future depends on it.</em></h1>",
"target": [
"h1"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a background gradient"
}
]
}
],
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#0ca86b",
"contrastRatio": 3.07,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#apply\" class=\"btn btn-primary\">Apply Now</a>",
"target": [
".header-cta > .btn-primary.btn[href$=\"#apply\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.07 (foreground color: #ffffff, background color: #0ca86b, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#apply\" class=\"btn btn-primary\">Apply Now</a>",
"target": [
".header-cta > .btn-primary.btn[href$=\"#apply\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.07 (foreground color: #ffffff, background color: #0ca86b, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#08814f",
"bgColor": "#e6f6ee",
"contrastRatio": 4.4,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"eyebrow\"><i class=\"fa-solid fa-bolt\"></i> New \u2022 4.75% APY High-Yield Savings + $300 Bonus</span>",
"target": [
".hero-grid > div:nth-child(1) > .eyebrow"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\"><i class=\"fa-solid fa-bolt\"></i> New \u2022 4.75% APY High-Yield Savings + $300 Bonus</span>",
"target": [
".hero-grid > div:nth-child(1) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#0ca86b",
"contrastRatio": 3.07,
"fontSize": "11.3pt (15px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#apply\" class=\"btn btn-primary\">Apply Now <i class=\"fa-solid fa-arrow-right\"></i></a>",
"target": [
".hero-actions > .btn-primary.btn[href$=\"#apply\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.07 (foreground color: #ffffff, background color: #0ca86b, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#apply\" class=\"btn btn-primary\">Apply Now <i class=\"fa-solid fa-arrow-right\"></i></a>",
"target": [
".hero-actions > .btn-primary.btn[href$=\"#apply\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.07 (foreground color: #ffffff, background color: #0ca86b, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#0ca86b",
"bgColor": "#ffffff",
"contrastRatio": 3.07,
"fontSize": "9.8pt (13px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"float-card float-2\">\ud83d\udcc8 Portfolio: <b style=\"color:#0CA86B\">+11.4% YTD</b></div>",
"target": [
".float-2"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.07 (foreground color: #0ca86b, background color: #ffffff, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<b style=\"color:#0CA86B\">+11.4% YTD</b>",
"target": [
".float-2 > b"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.07 (foreground color: #0ca86b, background color: #ffffff, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7a8aa0",
"bgColor": "#ffffff",
"contrastRatio": 3.51,
"fontSize": "9.8pt (13px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"logos\"><div class=\"container\"><span>AS FEATURED IN</span><b>Forbes \u2022 NerdWallet \u2022 Kiplinger \u2022 Morningstar \u2022 CNBC Select</b><span>\u2605 Bankrate Best Digital Bank 2025-2026</span></div></div>",
"target": [
".logos"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.51 (foreground color: #7a8aa0, background color: #ffffff, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>AS FEATURED IN</span>",
"target": [
".logos > .container > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.51 (foreground color: #7a8aa0, background color: #ffffff, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7a8aa0",
"bgColor": "#ffffff",
"contrastRatio": 3.51,
"fontSize": "9.8pt (13px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"logos\"><div class=\"container\"><span>AS FEATURED IN</span><b>Forbes \u2022 NerdWallet \u2022 Kiplinger \u2022 Morningstar \u2022 CNBC Select</b><span>\u2605 Bankrate Best Digital Bank 2025-2026</span></div></div>",
"target": [
".logos"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.51 (foreground color: #7a8aa0, background color: #ffffff, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<b>Forbes \u2022 NerdWallet \u2022 Kiplinger \u2022 Morningstar \u2022 CNBC Select</b>",
"target": [
".container > b"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.51 (foreground color: #7a8aa0, background color: #ffffff, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7a8aa0",
"bgColor": "#ffffff",
"contrastRatio": 3.51,
"fontSize": "9.8pt (13px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"logos\"><div class=\"container\"><span>AS FEATURED IN</span><b>Forbes \u2022 NerdWallet \u2022 Kiplinger \u2022 Morningstar \u2022 CNBC Select</b><span>\u2605 Bankrate Best Digital Bank 2025-2026</span></div></div>",
"target": [
".logos"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.51 (foreground color: #7a8aa0, background color: #ffffff, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>\u2605 Bankrate Best Digital Bank 2025-2026</span>",
"target": [
".container > span:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.51 (foreground color: #7a8aa0, background color: #ffffff, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#08814f",
"bgColor": "#e6f6ee",
"contrastRatio": 4.4,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"eyebrow\"><i class=\"fa-solid fa-compass\"></i> One app for all your money</span>",
"target": [
"#banking > .container > .section-head > .eyebrow"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\"><i class=\"fa-solid fa-compass\"></i> One app for all your money</span>",
"target": [
"#banking > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#08814f",
"bgColor": "#e6f6ee",
"contrastRatio": 4.4,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"eyebrow\">Credit Improvement \u2022 Debt Management</span>",
"target": [
".split:nth-child(1) > .text > .eyebrow"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Credit Improvement \u2022 Debt Management</span>",
"target": [
".split:nth-child(1) > .text > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#0ca86b",
"contrastRatio": 3.07,
"fontSize": "11.3pt (15px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#credit\" class=\"btn btn-primary\">Check Credit</a>",
"target": [
".btn-primary.btn[href$=\"#credit\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.07 (foreground color: #ffffff, background color: #0ca86b, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#credit\" class=\"btn btn-primary\">Check Credit</a>",
"target": [
".btn-primary.btn[href$=\"#credit\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.07 (foreground color: #ffffff, background color: #0ca86b, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#08814f",
"bgColor": "#e6f6ee",
"contrastRatio": 4.4,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"eyebrow\">Tax Planning \u2022 Investing Strategy</span>",
"target": [
"#tax > .text > .eyebrow"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Tax Planning \u2022 Investing Strategy</span>",
"target": [
"#tax > .text > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#0ca86b",
"contrastRatio": 3.07,
"fontSize": "11.3pt (15px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#apply\" class=\"btn btn-primary\" style=\"flex:1\">Apply Now \u2014 Open Roth IRA</a>",
"target": [
".calc-right > div:nth-child(5) > .btn-primary.btn[href$=\"#apply\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.07 (foreground color: #ffffff, background color: #0ca86b, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#apply\" class=\"btn btn-primary\" style=\"flex:1\">Apply Now \u2014 Open Roth IRA</a>",
"target": [
".calc-right > div:nth-child(5) > .btn-primary.btn[href$=\"#apply\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.07 (foreground color: #ffffff, background color: #0ca86b, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#08814f",
"bgColor": "#e6f6ee",
"contrastRatio": 4.4,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"eyebrow\">Resources \u2022 Learn & Compare</span>",
"target": [
"#resources > .container > .section-head > .eyebrow"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Resources \u2022 Learn & Compare</span>",
"target": [
"#resources > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e9a100",
"bgColor": "#ffffff",
"contrastRatio": 2.19,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-box\">",
"target": [
".side-box:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.19 (foreground color: #e9a100, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<b>01</b>",
"target": [
"li:nth-child(1) > b"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.19 (foreground color: #e9a100, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e9a100",
"bgColor": "#ffffff",
"contrastRatio": 2.19,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-box\">",
"target": [
".side-box:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.19 (foreground color: #e9a100, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<b>02</b>",
"target": [
"li:nth-child(2) > b"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.19 (foreground color: #e9a100, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e9a100",
"bgColor": "#ffffff",
"contrastRatio": 2.19,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-box\">",
"target": [
".side-box:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.19 (foreground color: #e9a100, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<b>03</b>",
"target": [
"li:nth-child(3) > b"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.19 (foreground color: #e9a100, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e9a100",
"bgColor": "#ffffff",
"contrastRatio": 2.19,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-box\">",
"target": [
".side-box:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.19 (foreground color: #e9a100, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<b>04</b>",
"target": [
"li:nth-child(4) > b"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.19 (foreground color: #e9a100, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e9a100",
"bgColor": "#ffffff",
"contrastRatio": 2.19,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"side-box\">",
"target": [
".side-box:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.19 (foreground color: #e9a100, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<b>05</b>",
"target": [
"li:nth-child(5) > b"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.19 (foreground color: #e9a100, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#0ca86b",
"contrastRatio": 3.07,
"fontSize": "11.3pt (15px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn btn-primary\" style=\"padding:12px 16px\">Join</button>",
"target": [
"form > .btn-primary"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.07 (foreground color: #ffffff, background color: #0ca86b, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn btn-primary\" style=\"padding:12px 16px\">Join</button>",
"target": [
"form > .btn-primary"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.07 (foreground color: #ffffff, background color: #0ca86b, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#08814f",
"bgColor": "#e6f6ee",
"contrastRatio": 4.4,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"eyebrow\">Member Stories \u2022 18,400 verified reviews</span>",
"target": [
"section:nth-child(7) > .container > .section-head > .eyebrow"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Member Stories \u2022 18,400 verified reviews</span>",
"target": [
"section:nth-child(7) > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#08814f",
"bgColor": "#e6f6ee",
"contrastRatio": 4.4,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"eyebrow\">FAQ \u2022 Straight answers</span>",
"target": [
"section:nth-child(8) > .container > .section-head > .eyebrow"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">FAQ \u2022 Straight answers</span>",
"target": [
"section:nth-child(8) > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.4 (foreground color: #08814f, background color: #e6f6ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
]
},
{
"id": "label",
"impact": "critical",
"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": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "non-empty-placeholder",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no placeholder attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<input type=\"range\" id=\"inAge\" min=\"18\" max=\"65\" value=\"32\">",
"target": [
"#inAge"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element has no placeholder attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "non-empty-placeholder",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no placeholder attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<input type=\"range\" id=\"inRet\" min=\"55\" max=\"75\" value=\"67\">",
"target": [
"#inRet"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element has no placeholder attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "non-empty-placeholder",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no placeholder attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<input type=\"range\" id=\"inCur\" min=\"0\" max=\"500000\" step=\"5000\" value=\"25000\">",
"target": [
"#inCur"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element has no placeholder attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "non-empty-placeholder",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no placeholder attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<input type=\"range\" id=\"inMon\" min=\"0\" max=\"3000\" step=\"25\" value=\"650\">",
"target": [
"#inMon"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element has no placeholder attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "non-empty-placeholder",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no placeholder attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<input type=\"range\" id=\"inRate\" min=\"2\" max=\"10\" step=\"0.1\" value=\"7\">",
"target": [
"#inRate"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element has no placeholder attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
]
},
{
"id": "select-name",
"impact": "critical",
"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": [
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<select id=\"inRisk\"><option>Conservative (80% bonds)</option><option selected=\"\">Balanced (60/40 stocks/bonds)</option><option>Growth (90% stocks)</option></select>",
"target": [
"#inRisk"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 8808
},
{
"y": 576,
"height": 8808
},
{
"y": 1152,
"height": 8808
},
{
"y": 1728,
"height": 8808
},
{
"y": 2304,
"height": 8808
},
{
"y": 2880,
"height": 8808
},
{
"y": 3456,
"height": 8808
},
{
"y": 4032,
"height": 8808
},
{
"y": 4608,
"height": 8808
},
{
"y": 5184,
"height": 8808
},
{
"y": 5760,
"height": 8808
},
{
"y": 6336,
"height": 8808
},
{
"y": 6912,
"height": 8808
},
{
"y": 7488,
"height": 8808
},
{
"y": 8064,
"height": 8808
},
{
"y": 8088,
"height": 8808
}
],
"scans": 17,
"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 "Personal Finance" 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: "Personal Finance"
- Description: Banking, investing, budgeting, savings, credit, and personal money management resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Personal Finance" 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: "Contact", "Resources", "Retirement".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Personal Finance" category. Consider themes similar to: "Credit Improvement", "Tax Planning", "Debt Management".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "asset allocation", "compound interest", "capital gains".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Check Credit", "Get Quote", "Apply Now".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Personal Finance" sector. Ideas similar but not limited to: "retirement calculator".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "trending topics", "expert insights", "product reviews".
- **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.