Reflection Beam 1.0 501B A23B – Society
via Nebius · Generated
- AIMAC Debt 4.28
- Cost $0.015
- Total Violations 11
- HTML Size 44 KB
- Em Dashes 6
Screenshot
View Live Page
Accessibility Issues Found
11 Serious
-
color-contrast serious 11 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<a href="#join" class="cta">Stand With Us</a>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Confluence Collective — Collective Action for Equitable Communities</title>
<meta name="description" content="Confluence Collective advances equity, advocacy, and community initiatives through collective action, volunteerism, and shared resources.">
<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,400;9..144,600;9..144,700&family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
:root{
--navy:#1e3a5f;
--navy-dark:#12263f;
--navy-light:#2d5a8f;
--accent:#e07a3f;
--accent-dark:#c4632a;
--cream:#f7f3ee;
--cream-dark:#efe7dc;
--ink:#1a1f2e;
--muted:#5a6473;
--line:#e3ddd2;
--white:#ffffff;
--radius:14px;
--shadow:0 10px 40px rgba(30,58,95,.08);
--shadow-lg:0 20px 60px rgba(30,58,95,.15);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'Inter',sans-serif;color:var(--ink);background:var(--white);line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none}
h1,h2,h3,h4{font-family:'Fraunces',serif;font-weight:600;line-height:1.15;letter-spacing:-.01em}
.container{max-width:1240px;margin:0 auto;padding:0 24px}
.narrow{max-width:820px;margin:0 auto;padding:0 24px}
/* HEADER */
.site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.header-inner{display:flex;align-items:center;justify-content:space-between;padding:14px 0;gap:24px}
.brand{display:flex;align-items:center;gap:12px}
.brand-logo{width:46px;height:46px;border-radius:10px;object-fit:cover}
.brand-text .name{font-family:'Fraunces',serif;font-size:1.25rem;font-weight:700;color:var(--navy);line-height:1}
.brand-text .tag{font-size:.72rem;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-top:3px}
.nav{display:flex;align-items:center;gap:6px}
.nav a{padding:8px 14px;font-size:.92rem;font-weight:500;color:var(--ink);border-radius:8px;transition:.2s}
.nav a:hover{background:var(--cream);color:var(--navy)}
.nav .cta{background:var(--accent);color:#fff;margin-left:6px}
.nav .cta:hover{background:var(--accent-dark);color:#fff}
.menu-toggle{display:none;width:40px;height:40px;border-radius:8px;align-items:center;justify-content:center}
.menu-toggle span{display:block;width:20px;height:2px;background:var(--ink);position:relative}
.menu-toggle span::before,.menu-toggle span::after{content:'';position:absolute;left:0;width:20px;height:2px;background:var(--ink)}
.menu-toggle span::before{top:-6px}
.menu-toggle span::after{top:6px}
/* HERO */
.hero{position:relative;overflow:hidden;background:var(--navy-dark);color:#fff}
.hero-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:center;padding:80px 0 70px}
.hero h1{font-size:clamp(2.4rem,5vw,4rem);color:#fff;margin-bottom:20px}
.hero h1 em{font-style:italic;color:#f4c9a8}
.hero p{font-size:1.15rem;color:rgba(255,255,255,.82);max-width:560px;margin-bottom:32px}
.hero-img{border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-lg);position:relative}
.hero-img img{width:100%;height:460px;object-fit:cover}
.hero-img::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(30,58,95,.15),transparent)}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:8px;padding:14px 26px;border-radius:10px;font-weight:600;font-size:.95rem;transition:.25s}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{background:var(--accent-dark);transform:translateY(-2px)}
.btn-ghost{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.25)}
.btn-ghost:hover{background:rgba(255,255,255,.2)}
.hero-stats{display:flex;gap:40px;margin-top:40px;padding-top:30px;border-top:1px solid rgba(255,255,255,.15)}
.stat .num{font-family:'Fraunces',serif;font-size:2rem;font-weight:700;color:#f4c9a8}
.stat .lbl{font-size:.8rem;color:rgba(255,255,255,.7);text-transform:uppercase;letter-spacing:.08em;margin-top:2px}
/* SECTIONS */
.section{padding:90px 0}
.section-alt{background:var(--cream)}
.section-dark{background:var(--navy);color:#fff}
.section-head{text-align:center;max-width:720px;margin:0 auto 56px}
.section-head .eyebrow{display:inline-block;font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:12px}
.section-dark .section-head .eyebrow{color:#f4c9a8}
.section-head h2{font-size:clamp(2rem,3.5vw,2.8rem);margin-bottom:16px}
.section-head p{color:var(--muted);font-size:1.05rem}
.section-dark .section-head p{color:rgba(255,255,255,.75)}
/* PILLARS */
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.pillar{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:34px 28px;transition:.3s}
.pillar:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.pillar-icon{width:52px;height:52px;border-radius:12px;background:var(--cream);display:flex;align-items:center;justify-content:center;margin-bottom:20px;color:var(--navy)}
.pillar h3{font-size:1.35rem;margin-bottom:10px}
.pillar p{color:var(--muted);font-size:.95rem}
/* LAYOUT WITH SIDEBAR */
.content-layout{display:grid;grid-template-columns:1fr 340px;gap:48px;align-items:start}
.main-col{min-width:0}
/* SUCCESS STORIES */
.story-card{display:grid;grid-template-columns:260px 1fr;gap:28px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:28px;transition:.3s}
.story-card:hover{box-shadow:var(--shadow)}
.story-card img{width:100%;height:100%;object-fit:cover;min-height:220px}
.story-body{padding:28px 28px 28px 0}
.story-body .tag{display:inline-block;font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.story-body h3{font-size:1.4rem;margin-bottom:10px}
.story-body p{color:var(--muted);font-size:.95rem;margin-bottom:14px}
.story-meta{display:flex;align-items:center;gap:10px;font-size:.85rem;color:var(--muted)}
.story-meta img{width:32px;height:32px;border-radius:50%}
.story-meta strong{color:var(--ink)}
/* VOLUNTEER */
.vol-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.vol-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.3s;display:flex;flex-direction:column}
.vol-card:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.vol-card img{width:100%;height:200px;object-fit:cover}
.vol-body{padding:22px;flex:1;display:flex;flex-direction:column}
.vol-body .meta{font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}
.vol-body h3{font-size:1.2rem;margin-bottom:8px}
.vol-body p{color:var(--muted);font-size:.9rem;margin-bottom:16px;flex:1}
.vol-body .btn{padding:10px 18px;font-size:.85rem;align-self:flex-start;background:var(--navy);color:#fff}
.vol-body .btn:hover{background:var(--navy-dark)}
/* RESOURCE CENTER */
.resource-list{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.resource-item{display:flex;gap:16px;padding:22px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);transition:.3s}
.resource-item:hover{border-color:var(--navy);box-shadow:var(--shadow)}
.resource-icon{width:44px;height:44px;border-radius:10px;background:var(--cream);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--navy)}
.resource-item h4{font-size:1.05rem;margin-bottom:4px}
.resource-item p{color:var(--muted);font-size:.88rem}
/* IMPACT CALC */
.impact{background:linear-gradient(135deg,var(--navy) 0%,var(--navy-light) 100%);color:#fff;border-radius:20px;padding:48px;position:relative;overflow:hidden}
.impact::before{content:'';position:absolute;top:-60px;right:-60px;width:260px;height:260px;border-radius:50%;background:rgba(244,201,168,.12)}
.impact-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
.impact h2{font-size:2rem;color:#fff;margin-bottom:12px}
.impact p{color:rgba(255,255,255,.8);margin-bottom:24px}
.calc-form{display:grid;gap:16px}
.calc-field label{display:block;font-size:.85rem;color:rgba(255,255,255,.85);margin-bottom:6px;font-weight:500}
.calc-field input{width:100%;padding:12px 14px;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.1);color:#fff;font-size:1rem}
.calc-field input:focus{outline:none;border-color:#f4c9a8;background:rgba(255,255,255,.15)}
.calc-results{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);border-radius:14px;padding:28px}
.calc-results h3{font-size:1.1rem;color:#f4c9a8;margin-bottom:18px}
.result-row{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.12)}
.result-row:last-child{border-bottom:none}
.result-row .rlabel{color:rgba(255,255,255,.75);font-size:.9rem}
.result-row .rval{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:700;color:#fff}
.calc-note{font-size:.78rem;color:rgba(255,255,255,.6);margin-top:14px}
/* TESTIMONIALS */
.testimonials{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.tcard{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:28px;position:relative}
.tcard::before{content:'\201C';font-family:'Fraunces',serif;font-size:4rem;color:var(--accent);position:absolute;top:10px;left:20px;line-height:1;opacity:.4}
.tcard p{color:var(--ink);font-size:.95rem;margin-bottom:20px;position:relative;z-index:1}
.tcard .who{display:flex;align-items:center;gap:12px}
.tcard .who img{width:44px;height:44px;border-radius:50%}
.tcard .who strong{display:block;font-size:.92rem}
.tcard .who span{font-size:.8rem;color:var(--muted)}
/* SIDEBAR */
.sidebar{position:sticky;top:90px}
.side-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px;margin-bottom:24px}
.side-card h3{font-size:1.15rem;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.event-list{display:grid;gap:14px}
.event{display:flex;gap:14px}
.event-date{background:var(--cream);border-radius:10px;padding:8px 10px;text-align:center;min-width:52px}
.event-date .d{font-family:'Fraunces',serif;font-size:1.3rem;font-weight:700;color:var(--navy);line-height:1}
.event-date .m{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.event-info h4{font-size:.92rem;margin-bottom:2px}
.event-info p{font-size:.8rem;color:var(--muted)}
.partner-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.partner-grid img{width:100%;height:60px;object-fit:contain;background:var(--cream);border-radius:8px;padding:8px}
.donate-box{background:linear-gradient(135deg,var(--accent),var(--accent-dark));color:#fff;border-radius:var(--radius);padding:24px;text-align:center}
.donate-box h3{color:#fff;margin-bottom:8px}
.donate-box p{font-size:.88rem;opacity:.9;margin-bottom:16px}
.donate-box .btn{background:#fff;color:var(--accent-dark);width:100%;justify-content:center}
/* FAQ */
.faq{max-width:820px;margin:0 auto}
.faq-item{border:1px solid var(--line);border-radius:12px;margin-bottom:12px;overflow:hidden;background:#fff}
.faq-q{width:100%;text-align:left;padding:20px 24px;font-weight:600;font-size:1rem;display:flex;justify-content:space-between;align-items:center;gap:16px}
.faq-q .plus{width:26px;height:26px;border-radius:50%;background:var(--cream);display:flex;align-items:center;justify-content:center;color:var(--navy);font-size:1.2rem;flex-shrink:0;transition:.3s}
.faq-item.open .plus{transform:rotate(45deg);background:var(--navy);color:#fff}
.faq-a{max-height:0;overflow:hidden;transition:max-height .35s ease}
.faq-a p{padding:0 24px 20px;color:var(--muted);font-size:.95rem}
.faq-item.open .faq-a{max-height:400px}
/* CTA BANNER */
.cta-banner{background:var(--navy-dark);color:#fff;border-radius:20px;padding:56px 48px;text-align:center;position:relative;overflow:hidden}
.cta-banner h2{color:#fff;font-size:2.2rem;margin-bottom:12px}
.cta-banner p{color:rgba(255,255,255,.8);max-width:600px;margin:0 auto 28px}
.cta-banner .btn-primary{background:#fff;color:var(--navy)}
/* FOOTER */
.site-footer{background:var(--ink);color:rgba(255,255,255,.75);padding:60px 0 30px;margin-top:0}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;margin-bottom:40px}
.footer-grid h4{color:#fff;font-size:1rem;margin-bottom:16px;font-family:'Inter',sans-serif;font-weight:600}
.footer-grid p{font-size:.9rem;line-height:1.7}
.footer-grid a{display:block;font-size:.9rem;margin-bottom:8px;color:rgba(255,255,255,.7);transition:.2s}
.footer-grid a:hover{color:#fff}
.footer-brand .name{font-family:'Fraunces',serif;font-size:1.4rem;color:#fff;margin-bottom:6px}
.footer-brand .tag{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:16px}
.contact-line{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:.9rem}
.socials{display:flex;gap:10px;margin-top:16px}
.socials a{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;margin:0;transition:.2s}
.socials a:hover{background:var(--accent)}
.footer-bottom{border-top:1px solid rgba(255,255,255,.1);padding-top:24px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:.85rem}
/* RESPONSIVE */
@media(max-width:980px){
.hero-grid{grid-template-columns:1fr;padding:60px 0 50px}
.hero-img img{height:320px}
.pillars{grid-template-columns:1fr}
.content-layout{grid-template-columns:1fr}
.sidebar{position:static}
.story-card{grid-template-columns:1fr}
.story-card img{min-height:200px;height:220px}
.story-body{padding:22px}
.vol-grid{grid-template-columns:1fr 1fr}
.resource-list{grid-template-columns:1fr}
.impact-grid{grid-template-columns:1fr}
.testimonials{grid-template-columns:1fr}
.footer-grid{grid-template-columns:1fr 1fr}
.nav{display:none}
.menu-toggle{display:flex}
.nav.open{display:flex;flex-direction:column;position:absolute;top:74px;left:0;right:0;background:#fff;padding:16px;border-bottom:1px solid var(--line);box-shadow:var(--shadow)}
}
@media(max-width:600px){
.vol-grid{grid-template-columns:1fr}
.footer-grid{grid-template-columns:1fr}
.hero-stats{flex-direction:column;gap:20px}
.cta-banner{padding:40px 24px}
}
</style>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a href="#" class="brand">
<img class="brand-logo" src="https://placehold.co/92x92/1e3a5f/f4c9a8?text=CC&font=montserrat" alt="Confluence Collective logo">
<div class="brand-text">
<div class="name">Confluence Collective</div>
<div class="tag">Collective Action for Equitable Communities</div>
</div>
</a>
<nav class="nav" id="nav">
<a href="#home">Home</a>
<a href="#community">Community</a>
<a href="#programs">Programs</a>
<a href="#volunteer">Volunteer</a>
<a href="#action">Action</a>
<a href="#resources">Resources</a>
<a href="#about">About</a>
<a href="#join" class="cta">Stand With Us</a>
</nav>
<button class="menu-toggle" id="menuToggle" aria-label="Toggle menu"><span></span></button>
</div>
</header>
<main id="home">
<!-- HERO -->
<section class="hero">
<div class="container hero-grid">
<div>
<span class="eyebrow" style="color:#f4c9a8;font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;display:inline-block;margin-bottom:14px">Society · Advocacy · Community</span>
<h1>When we act <em>together</em>, communities don't just survive — they thrive.</h1>
<p>Confluence Collective is a community-driven movement advancing equity initiatives, amplifying grassroots advocacy, and connecting neighbors with the resources, training, and collective power needed to build lasting change.</p>
<div class="hero-actions">
<a href="#join" class="btn btn-primary">Stand With Us</a>
<a href="#action" class="btn btn-ghost">Spread Awareness</a>
</div>
<div class="hero-stats">
<div class="stat"><div class="num">12,400+</div><div class="lbl">Active Members</div></div>
<div class="stat"><div class="num">340</div><div class="lbl">Partner Orgs</div></div>
<div class="stat"><div class="num">1.2M</div><div class="lbl">Hours Given</div></div>
</div>
</div>
<div class="hero-img">
<img src="https://picsum.photos/seed/confluence-hero/900/700" alt="Diverse community members gathered together in solidarity">
</div>
</div>
</section>
<!-- PILLARS -->
<section class="section" id="about">
<div class="container">
<div class="section-head">
<span class="eyebrow">Our Approach</span>
<h2>Three pillars of collective action</h2>
<p>We believe lasting social change is built at the intersection of equity, advocacy, and community power. Our programs are designed to strengthen all three.</p>
</div>
<div class="pillars">
<div class="pillar">
<div class="pillar-icon">
<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2l3 7h7l-5.5 4 2 7L12 16l-6.5 4 2-7L2 9h7z"/></svg>
</div>
<h3>Equity Initiatives</h3>
<p>From housing justice to educational access, we run targeted equity initiatives that remove systemic barriers and redistribute opportunity. Every program is co-designed with the communities it serves, ensuring solutions reflect lived experience rather than assumptions.</p>
</div>
<div class="pillar">
<div class="pillar-icon">
<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 12h4l3-9 4 18 3-9h4"/></svg>
</div>
<h3>Grassroots Advocacy</h3>
<p>We train advocates, organize campaigns, and engage policymakers to advance legislation that protects vulnerable populations. Our advocacy arm combines data-driven research with the moral authority of community voices to shift public narrative and policy.</p>
</div>
<div class="pillar">
<div class="pillar-icon">
<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="9" cy="7" r="3"/><circle cx="17" cy="7" r="3"/><path d="M2 21v-2a4 4 0 014-4h6a4 4 0 014 4v2"/><path d="M16 11a4 4 0 014 4v2"/></svg>
</div>
<h3>Community Building</h3>
<p>Strong movements are built on strong relationships. We host neighborhood assemblies, mutual-aid networks, and cultural gatherings that weave trust across lines of difference, creating the social fabric that sustains long-term organizing.</p>
</div>
</div>
</div>
</section>
<!-- CONTENT LAYOUT: MAIN + SIDEBAR -->
<section class="section section-alt" id="community">
<div class="container">
<div class="section-head">
<span class="eyebrow">Community</span>
<h2>Stories, opportunities, and resources</h2>
<p>Explore the people and programs shaping our movement. Every story below is a neighbor, a volunteer, or a partner who chose collective action over quiet resignation.</p>
</div>
<div class="content-layout">
<div class="main-col">
<!-- SUCCESS STORIES -->
<div id="stories">
<h3 style="font-size:1.6rem;margin-bottom:20px">Success Stories</h3>
<div class="story-card">
<img src="https://picsum.photos/seed/story-housing/520/400" alt="Community members celebrating a housing victory">
<div class="story-body">
<span class="tag">Housing Justice</span>
<h3>The Riverside Tenants Union wins permanent affordability</h3>
<p>After eighteen months of organizing, 240 families in the Riverside district secured a landmark agreement capping rent increases and funding $4.2 million in building repairs. The victory began with a single tenant meeting in a church basement.</p>
<p>Our organizers provided legal training, media strategy, and a multilingual outreach campaign that reached over 1,800 residents. The model is now being replicated in four neighboring wards.</p>
<div class="story-meta">
<img src="https://i.pravatar.cc/64?u=maria-tenants" alt="Maria Delgado">
<div><strong>Maria Delgado</strong> · Lead Organizer, Riverside</div>
</div>
</div>
</div>
<div class="story-card">
<img src="https://picsum.photos/seed/story-youth/520/400" alt="Youth advocates speaking at a community forum">
<div class="story-body">
<span class="tag">Youth Advocacy</span>
<h3>Student-led campaign secures $1.8M for school counselors</h3>
<p>A coalition of 600 high school students, trained through our Youth Advocate Fellowship, presented research to the school board showing the counselor-to-student ratio was 1:890. Their testimony moved the board to fund 14 new positions.</p>
<p>The fellowship now runs in 11 schools and has graduated 340 young organizers who continue to lead campaigns on mental health, climate, and curriculum equity.</p>
<div class="story-meta">
<img src="https://i.pravatar.cc/64?u=jordan-youth" alt="Jordan Okonkwo">
<div><strong>Jordan Okonkwo</strong> · Youth Advocate Fellow</div>
</div>
</div>
</div>
<div class="story-card">
<img src="https://picsum.photos/seed/story-food/520/400" alt="Neighbors sharing a community meal">
<div class="story-body">
<span class="tag">Mutual Aid</span>
<h3>Neighborhood mutual-aid network feeds 3,000 families weekly</h3>
<p>What started as a single community fridge has grown into a citywide mutual-aid network coordinating 14 fridges, 6 pantries, and a volunteer driver corps. Last year the network distributed 410,000 pounds of food with zero means-testing.</p>
<p>Our role was to provide the digital coordination tools, volunteer training, and fiscal sponsorship that let neighbors focus on feeding neighbors.</p>
<div class="story-meta">
<img src="https://i.pravatar.cc/64?u=priya-food" alt="Priya Shah">
<div><strong>Priya Shah</strong> · Mutual Aid Coordinator</div>
</div>
</div>
</div>
</div>
<!-- VOLUNTEER OPPORTUNITIES -->
<div id="volunteer" style="margin-top:56px">
<h3 style="font-size:1.6rem;margin-bottom:20px">Volunteer Opportunities</h3>
<div class="vol-grid">
<div class="vol-card">
<img src="https://picsum.photos/seed/vol-canvass/600/400" alt="Volunteers canvassing a neighborhood">
<div class="vol-body">
<div class="meta">Canvassing · Weekends</div>
<h3>Neighborhood Canvass Team</h3>
<p>Knock doors, listen to neighbors, and connect residents with housing and benefits resources. Training provided; no experience required.</p>
<a href="#join" class="btn">Learn More</a>
</div>
</div>
<div class="vol-card">
<img src="https://picsum.photos/seed/vol-tutor/600/400" alt="Volunteer tutoring a student">
<div class="vol-body">
<div class="meta">Education · 4 hrs/week</div>
<h3>Literacy & Tutoring Corps</h3>
<p>Support K–8 students in reading and math through our after-school program. Curriculum and mentoring support included.</p>
<a href="#join" class="btn">Learn More</a>
</div>
</div>
<div class="vol-card">
<img src="https://picsum.photos/seed/vol-legal/600/400" alt="Volunteer legal clinic">
<div class="vol-body">
<div class="meta">Legal Aid · Monthly</div>
<h3>Community Legal Clinic</h3>
<p>Attorneys and paralegals provide free consultations on housing, immigration, and benefits. Non-attorneys welcome as intake staff.</p>
<a href="#join" class="btn">Learn More</a>
</div>
</div>
<div class="vol-card">
<img src="https://picsum.photos/seed/vol-digital/600/400" alt="Volunteer working on digital content">
<div class="vol-body">
<div class="meta">Remote · Flexible</div>
<h3>Digital & Comms Volunteers</h3>
<p>Write, design, translate, and manage social media to amplify our advocacy and reach new communities.</p>
<a href="#join" class="btn">Learn More</a>
</div>
</div>
<div class="vol-card">
<img src="https://picsum.photos/seed/vol-food/600/400" alt="Volunteers sorting food donations">
<div class="vol-body">
<div class="meta">Mutual Aid · Weekly</div>
<h3>Food Distribution Crew</h3>
<p>Sort, pack, and deliver groceries across our mutual-aid network. Shifts available mornings and evenings.</p>
<a href="#join" class="btn">Learn More</a>
</div>
</div>
<div class="vol-card">
<img src="https://picsum.photos/seed/vol-research/600/400" alt="Volunteer researcher analyzing data">
<div class="vol-body">
<div class="meta">Research · Project-based</div>
<h3>Policy Research Fellows</h3>
<p>Analyze housing, labor, and health data to power our advocacy campaigns. Ideal for students and data professionals.</p>
<a href="#join" class="btn">Learn More</a>
</div>
</div>
</div>
</div>
<!-- RESOURCE CENTER -->
<div id="resources" style="margin-top:56px">
<h3 style="font-size:1.6rem;margin-bottom:20px">Resource Center</h3>
<div class="resource-list">
<a class="resource-item" href="#">
<div class="resource-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><path d="M14 2v6h6M16 13H8M16 17H8M10 9H8"/></svg></div>
<div><h4>Tenant Rights Guide</h4><p>Know-your-rights handbook covering eviction defense, rent stabilization, and repair requests.</p></div>
</a>
<a class="resource-item" href="#">
<div class="resource-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg></div>
<div><h4>Advocacy Toolkit</h4><p>Step-by-step guide to organizing campaigns, lobbying, and media engagement.</p></div>
</a>
<a class="resource-item" href="#">
<div class="resource-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2a10 10 0 100 20 10 10 0 000-20zM2 12h20M12 2a15 15 0 010 20M12 2a15 15 0 000 20"/></svg></div>
<div><h4>Mutual Aid Playbook</h4><p>How to start and sustain a neighborhood mutual-aid network from scratch.</p></div>
</a>
<a class="resource-item" href="#">
<div class="resource-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/></svg></div>
<div><h4>Know Your Rights Cards</h4><p>Printable wallet cards in 14 languages for immigration and police encounters.</p></div>
</a>
<a class="resource-item" href="#">
<div class="resource-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 19.5A2.5 2.5 0 016.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z"/></svg></div>
<div><h4>Community Organizer Handbook</h4><p>Comprehensive manual on building power, running meetings, and sustaining movements.</p></div>
</a>
<a class="resource-item" href="#">
<div class="resource-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h11"/></svg></div>
<div><h4>Benefits Enrollment Guide</h4><p>Step-by-step help applying for housing, food, healthcare, and income support.</p></div>
</a>
</div>
</div>
</div>
<!-- SIDEBAR -->
<aside class="sidebar">
<div class="side-card">
<h3>Upcoming Events</h3>
<div class="event-list">
<div class="event">
<div class="event-date"><div class="d">14</div><div class="m">Jun</div></div>
<div class="event-info"><h4>Citywide Housing Assembly</h4><p>6:00 PM · Community Center</p></div>
</div>
<div class="event">
<div class="event-date"><div class="d">18</div><div class="m">Jun</div></div>
<div class="event-info"><h4>Volunteer Orientation</h4><p>5:30 PM · Online</p></div>
</div>
<div class="event">
<div class="event-date"><div class="d">22</div><div class="m">Jun</div></div>
<div class="event-info"><h4>Know Your Rights Workshop</h4><p>10:00 AM · Library Branch</p></div>
</div>
<div class="event">
<div class="event-date"><div class="d">29</div><div class="m">Jun</div></div>
<div class="event-info"><h4>Mutual Aid Food Drive</h4><p>9:00 AM · Riverside Park</p></div>
</div>
<div class="event">
<div class="event-date"><div class="d">05</div><div class="m">Jul</div></div>
<div class="event-info"><h4>Advocacy Training Bootcamp</h4><p>Full day · HQ Auditorium</p></div>
</div>
</div>
</div>
<div class="donate-box">
<h3>Stand With Us</h3>
<p>Your contribution funds organizers, legal clinics, and mutual-aid networks on the ground.</p>
<a href="#join" class="btn">Donate Today</a>
</div>
<div class="side-card">
<h3>Partner Organizations</h3>
<div class="partner-grid">
<img src="https://placehold.co/160x80/f7f3ee/1e3a5f?text=Partner+1&font=montserrat" alt="Partner organization logo">
<img src="https://placehold.co/160x80/f7f3ee/1e3a5f?text=Partner+2&font=montserrat" alt="Partner organization logo">
<img src="https://placehold.co/160x80/f7f3ee/1e3a5f?text=Partner+3&font=montserrat" alt="Partner organization logo">
<img src="https://placehold.co/160x80/f7f3ee/1e3a5f?text=Partner+4&font=montserrat" alt="Partner organization logo">
<img src="https://placehold.co/160x80/f7f3ee/1e3a5f?text=Partner+5&font=montserrat" alt="Partner organization logo">
<img src="https://placehold.co/160x80/f7f3ee/1e3a5f?text=Partner+6&font=montserrat" alt="Partner organization logo">
</div>
</div>
<div class="side-card">
<h3>Featured Story</h3>
<img src="https://picsum.photos/seed/sidebar-story/400/240" alt="Community members at a rally" style="border-radius:10px;margin-bottom:12px">
<p style="font-size:.9rem;color:var(--muted);margin-bottom:10px">How a single block club grew into a citywide tenants movement — and what it teaches us about patience and power.</p>
<a href="#" style="color:var(--navy);font-weight:600;font-size:.9rem">Read the story →</a>
</div>
</aside>
</div>
</div>
</section>
<!-- IMPACT CALCULATOR -->
<section class="section" id="action">
<div class="container">
<div class="impact">
<div class="impact-grid">
<div>
<span class="eyebrow" style="color:#f4c9a8">Impact Calculator</span>
<h2>Measure your collective impact</h2>
<p>Volunteer hours are more than time — they are resources, relationships, and relief. Use our impact calculator to see what your commitment translates into for the community.</p>
<div class="calc-form">
<div class="calc-field">
<label for="volunteers">Number of volunteers</label>
<input type="number" id="volunteers" value="25" min="1">
</div>
<div class="calc-field">
<label for="hours">Hours per volunteer per month</label>
<input type="number" id="hours" value="8" min="1">
</div>
<div class="calc-field">
<label for="months">Months of commitment</label>
<input type="number" id="months" value="6" min="1">
</div>
<button class="btn btn-primary" id="calcBtn" style="background:#fff;color:var(--navy)">Calculate Impact</button>
</div>
</div>
<div class="calc-results">
<h3>Your projected impact</h3>
<div class="result-row"><span class="rlabel">Total volunteer hours</span><span class="rval" id="r-hours">1,200</span></div>
<div class="result-row"><span class="rlabel">Estimated people served</span><span class="rval" id="r-people">2,400</span></div>
<div class="result-row"><span class="rlabel">Economic value of service</span><span class="rval" id="r-value">$33,600</span></div>
<div class="result-row"><span class="rlabel">Meals / resources distributed</span><span class="rval" id="r-meals">6,000</span></div>
<p class="calc-note">Estimates based on Independent Sector's value of volunteer time ($28/hr) and our network's average service ratio. Results are illustrative.</p>
</div>
</div>
</div>
</div>
</section>
<!-- TESTIMONIALS -->
<section class="section section-alt">
<div class="container">
<div class="section-head">
<span class="eyebrow">Voices</span>
<h2>What our community says</h2>
<p>Real words from members, volunteers, and partners who chose to act.</p>
</div>
<div class="testimonials">
<div class="tcard">
<p>Before Confluence, I felt powerless against my landlord. The tenant union training gave me the language and the backing to fight — and win. My building is safer because neighbors stood together.</p>
<div class="who">
<img src="https://i.pravatar.cc/88?u=ana-test" alt="Ana Reyes">
<div><strong>Ana Reyes</strong><span>Tenant, Eastside District</span></div>
</div>
</div>
<div class="tcard">
<p>I've volunteered with three organizations, but this is the first where I felt my skills actually moved policy. The research fellowship let me turn data into testimony that changed a budget vote.</p>
<div class="who">
<img src="https://i.pravatar.cc/88?u=david-test" alt="David Chen">
<div><strong>David Chen</strong><span>Policy Research Fellow</span></div>
</div>
</div>
<div class="tcard">
<p>As a small nonprofit, partnering with Confluence gave us fiscal sponsorship, training, and a network we couldn't have built alone. Our impact doubled in one year.</p>
<div class="who">
<img src="https://i.pravatar.cc/88?u=fatima-test" alt="Fatima Al-Hassan">
<div><strong>Fatima Al-Hassan</strong><span>Executive Director, HopeWorks</span></div>
</div>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section class="section">
<div class="container">
<div class="section-head">
<span class="eyebrow">Questions</span>
<h2>Frequently asked</h2>
<p>Everything you need to know before getting involved.</p>
</div>
<div class="faq">
<div class="faq-item">
<button class="faq-q">How do I become a member? <span class="plus">+</span></button>
<div class="faq-a"><p>Membership is free and open to anyone who shares our values. Sign up online or attend any community assembly. Members receive a welcome kit, access to training, and a vote in our annual priorities.</p></div>
</div>
<div class="faq-item">
<button class="faq-q">Do I need experience to volunteer? <span class="plus">+</span></button>
<div class="faq-a"><p>No. We provide orientation and role-specific training for every position. Whether you can give two hours a month or twenty, there is a place for you in the movement.</p></div>
</div>
<div class="faq-item">
<button class="faq-q">How are donations used? <span class="plus">+</span></button>
<div class="faq-a"><p>87 cents of every dollar goes directly to programs: organizer stipends, legal clinics, mutual-aid distribution, and training. The remainder covers essential operations. Full financials are published annually.</p></div>
</div>
<div class="faq-item">
<button class="faq-q">Can organizations partner with you? <span class="plus">+</span></button>
<div class="faq-a"><p>Yes. We offer fiscal sponsorship, training, shared resources, and coalition membership to aligned nonprofits and grassroots groups. Reach out through our partner inquiry form.</p></div>
</div>
<div class="faq-item">
<button class="faq-q">Is my data safe if I sign up? <span class="plus">+</span></button>
<div class="faq-a"><p>We never sell or share member data. We collect only what is needed to connect you with opportunities, and you can request deletion at any time.</p></div>
</div>
</div>
</div>
</section>
<!-- CTA BANNER -->
<section class="section">
<div class="container">
<div class="cta-banner" id="join">
<h2>Ready to be part of the change?</h2>
<p>Join 12,400 neighbors, volunteers, and advocates building equitable communities through collective action. Your voice, your time, your skills — all are needed.</p>
<div style="display:flex;gap:14px;justify-content:center;flex-wrap:wrap">
<a href="#" class="btn btn-primary">Stand With Us</a>
<a href="#" class="btn btn-ghost">Spread Awareness</a>
</div>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container">
<div class="footer-grid">
<div class="footer-brand">
<div class="name">Confluence Collective</div>
<div class="tag">Collective Action for Equitable Communities</div>
<p>A community-driven movement advancing equity, advocacy, and mutual aid. Founded on the belief that no one is free until everyone is free.</p>
<div class="socials">
<a href="#" aria-label="Facebook"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M22 12a10 10 0 10-11.6 9.9v-7h-2.5V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.4h-1.2c-1.2 0-1.6.8-1.6 1.5V12h2.7l-.4 2.9h-2.3v7A10 10 0 0022 12z"/></svg></a>
<a href="#" aria-label="Twitter"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M18.2 2h3.4l-7.4 8.5L23 22h-6.8l-5.3-7-6 7H1.5l7.9-9.1L1 2h7l4.8 6.4L18.2 2zm-1.2 18h1.9L7.1 3.9H5.1L17 20z"/></svg></a>
<a href="#" aria-label="Instagram"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="20" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r="1"/></svg></a>
<a href="#" aria-label="LinkedIn"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M4.98 3.5a2.5 2.5 0 110 5 2.5 2.5 0 010-5zM3 9h4v12H3zM9 9h3.8v1.6h.05c.53-1 1.83-2.1 3.78-2.1 4.04 0 4.79 2.66 4.79 6.12V21h-4v-5.6c0-1.34-.02-3.07-1.87-3.07-1.87 0-2.16 1.46-2.16 2.97V21H9z"/></svg></a>
<a href="#" aria-label="YouTube"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.5 6.2a3 3 0 00-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 00.5 6.2 31.5 31.5 0 000 12a31.5 31.5 0 00.5 5.8 3 3 0 002.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 002.1-2.1A31.5 31.5 0 0024 12a31.5 31.5 0 00-.5-5.8zM9.6 15.5V8.5l6.3 3.5-6.3 3.5z"/></svg></a>
</div>
</div>
<div>
<h4>Programs</h4>
<a href="#community">Community</a>
<a href="#volunteer">Volunteer</a>
<a href="#action">Action</a>
<a href="#resources">Resources</a>
<a href="#">Partner With Us</a>
</div>
<div>
<h4>Resources</h4>
<a href="#">Tenant Rights Guide</a>
<a href="#">Advocacy Toolkit</a>
<a href="#">Mutual Aid Playbook</a>
<a href="#">Know Your Rights Cards</a>
<a href="#">Organizer Handbook</a>
</div>
<div>
<h4>Contact</h4>
<div class="contact-line"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 1420 Meridian Ave, Suite 300, Metro City</div>
<div class="contact-line"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 16.9v3a2 2 0 01-2.2 2 19.8 19.8 0 01-8.6-3.1 19.5 19.5 0 01-6-6 19.8 19.8 0 01-3.1-8.7A2 2 0 014.1 2h3a2 2 0 012 1.7 12.8 12.8 0 00.7 2.8 2 2 0 01-.45 2.1L8.1 9.9a16 16 0 006 6l1.3-1.25a2 2 0 012.1-.45 12.8 12.8 0 002.8.7A2 2 0 0122 16.9z"/></svg> (555) 014-2288</div>
<div class="contact-line"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><path d="M22 6l-10 7L2 6"/></svg> hello@confluencecollective.org</div>
<div class="contact-line"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg> Mon–Fri, 9am–6pm</div>
</div>
</div>
<div class="footer-bottom">
<div>© 2025 Confluence Collective. All rights reserved.</div>
<div style="display:flex;gap:20px">
<a href="#" style="color:rgba(255,255,255,.6)">Privacy Policy</a>
<a href="#" style="color:rgba(255,255,255,.6)">Terms of Service</a>
<a href="#" style="color:rgba(255,255,255,.6)">Accessibility</a>
</div>
</div>
</div>
</footer>
<script>
// Mobile menu
const toggle = document.getElementById('menuToggle');
const nav = document.getElementById('nav');
toggle.addEventListener('click', () => nav.classList.toggle('open'));
// FAQ accordion
document.querySelectorAll('.faq-q').forEach(btn => {
btn.addEventListener('click', () => {
const item = btn.parentElement;
const isOpen = item.classList.contains('open');
document.querySelectorAll('.faq-item').forEach(i => i.classList.remove('open'));
if (!isOpen) item.classList.add('open');
});
});
// Impact calculator
function fmt(n){ return n.toLocaleString(); }
function calc() {
const v = parseFloat(document.getElementById('volunteers').value) || 0;
const h = parseFloat(document.getElementById('hours').value) || 0;
const m = parseFloat(document.getElementById('months').value) || 0;
const totalHours = v * h * m;
const people = Math.round(totalHours * 2);
const value = Math.round(totalHours * 28);
const meals = Math.round(totalHours * 5);
document.getElementById('r-hours').textContent = fmt(totalHours);
document.getElementById('r-people').textContent = fmt(people);
document.getElementById('r-value').textContent = '$' + fmt(value);
document.getElementById('r-meals').textContent = fmt(meals);
}
document.getElementById('calcBtn').addEventListener('click', calc);
['volunteers','hours','months'].forEach(id => {
document.getElementById(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-12T10:14:12.818Z",
"url": "https://benchmark.aimac.invalid/0ed1674e9f190c84c8fc9d18ea28dee75e261851342b9d01a247637ff13feeea.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": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": []
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "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": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-allowed-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attributes are used correctly for the defined role"
}
],
"none": [
{
"id": "aria-unsupported-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute is supported"
}
],
"impact": null,
"html": "<a href=\"#\" aria-label=\"Facebook\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M22 12a10 10 0 10-11.6 9.9v-7h-2.5V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.4h-1.2c-1.2 0-1.6.8-1.6 1.5V12h2.7l-.4 2.9h-2.3v7A10 10 0 0022 12z\"></path></svg></a>",
"target": [
"a[aria-label=\"Facebook\"]"
]
}
]
},
{
"id": "aria-conditional-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are used as described in the specification of the element's role",
"help": "ARIA attributes must be used as specified for the element's role",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-conditional-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"none": [],
"impact": null,
"html": "<a href=\"#\" aria-label=\"Facebook\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M22 12a10 10 0 10-11.6 9.9v-7h-2.5V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.4h-1.2c-1.2 0-1.6.8-1.6 1.5V12h2.7l-.4 2.9h-2.3v7A10 10 0 0022 12z\"></path></svg></a>",
"target": [
"a[aria-label=\"Facebook\"]"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<a href=\"#\" aria-label=\"Facebook\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M22 12a10 10 0 10-11.6 9.9v-7h-2.5V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.4h-1.2c-1.2 0-1.6.8-1.6 1.5V12h2.7l-.4 2.9h-2.3v7A10 10 0 0022 12z\"></path></svg></a>",
"target": [
"a[aria-label=\"Facebook\"]"
]
}
]
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-valid-attr-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute values are valid"
},
{
"id": "aria-errormessage",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
},
{
"id": "aria-level",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-level values are valid"
}
],
"none": [],
"impact": null,
"html": "<a href=\"#\" aria-label=\"Facebook\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M22 12a10 10 0 10-11.6 9.9v-7h-2.5V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.4h-1.2c-1.2 0-1.6.8-1.6 1.5V12h2.7l-.4 2.9h-2.3v7A10 10 0 0022 12z\"></path></svg></a>",
"target": [
"a[aria-label=\"Facebook\"]"
]
}
]
},
{
"id": "aria-valid-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure attributes that begin with aria- are valid ARIA attributes",
"help": "ARIA attributes must conform to valid names",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-valid-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute name is valid"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" aria-label=\"Facebook\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M22 12a10 10 0 10-11.6 9.9v-7h-2.5V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.4h-1.2c-1.2 0-1.6.8-1.6 1.5V12h2.7l-.4 2.9h-2.3v7A10 10 0 0022 12z\"></path></svg></a>",
"target": [
"a[aria-label=\"Facebook\"]"
]
}
]
},
{
"id": "avoid-inline-spacing",
"impact": null,
"tags": [
"cat.structure",
"wcag21aa",
"wcag1412",
"EN-301-549",
"EN-9.1.4.12",
"ACT"
],
"description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
"help": "Inline text spacing must be adjustable with custom stylesheets",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "important-letter-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-word-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-line-height",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "line-height in the style attribute is not set to !important, or meets the minimum"
}
],
"none": [],
"impact": null,
"html": "<span class=\"eyebrow\" style=\"color:#f4c9a8;font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;display:inline-block;margin-bottom:14px\">Society \u00b7 Advocacy \u00b7 Community</span>",
"target": [
".hero-grid > div:nth-child(1) > .eyebrow"
]
}
]
},
{
"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\" id=\"calcBtn\" style=\"background:#fff;color:var(--navy)\">Calculate Impact</button>",
"target": [
"#calcBtn"
]
}
]
},
{
"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>When we act <em>together</em>, communities don't just survive \u2014 they thrive.</h1>",
"target": [
"h1"
]
},
{
"html": "<h2>Three pillars of collective action</h2>",
"target": [
"#about > .container > .section-head > h2"
]
},
{
"html": "<h3>Equity Initiatives</h3>",
"target": [
".pillar:nth-child(1) > h3"
]
},
{
"html": "<h3>Grassroots Advocacy</h3>",
"target": [
".pillar:nth-child(2) > h3"
]
},
{
"html": "<h3>Community Building</h3>",
"target": [
".pillar:nth-child(3) > h3"
]
},
{
"html": "<h2>Stories, opportunities, and resources</h2>",
"target": [
"#community > .container > .section-head > h2"
]
},
{
"html": "<h3 style=\"font-size:1.6rem;margin-bottom:20px\">Success Stories</h3>",
"target": [
"#stories > h3"
]
},
{
"html": "<h3>The Riverside Tenants Union wins permanent affordability</h3>",
"target": [
".story-card:nth-child(2) > .story-body > h3"
]
},
{
"html": "<h3>Student-led campaign secures $1.8M for school counselors</h3>",
"target": [
".story-card:nth-child(3) > .story-body > h3"
]
},
{
"html": "<h3>Neighborhood mutual-aid network feeds 3,000 families weekly</h3>",
"target": [
".story-card:nth-child(4) > .story-body > h3"
]
},
{
"html": "<h3 style=\"font-size:1.6rem;margin-bottom:20px\">Volunteer Opportunities</h3>",
"target": [
"#volunteer > h3"
]
},
{
"html": "<h3>Neighborhood Canvass Team</h3>",
"target": [
".vol-card:nth-child(1) > .vol-body > h3"
]
},
{
"html": "<h3>Literacy & Tutoring Corps</h3>",
"target": [
".vol-card:nth-child(2) > .vol-body > h3"
]
},
{
"html": "<h3>Community Legal Clinic</h3>",
"target": [
".vol-card:nth-child(3) > .vol-body > h3"
]
},
{
"html": "<h3>Digital & Comms Volunteers</h3>",
"target": [
".vol-card:nth-child(4) > .vol-body > h3"
]
},
{
"html": "<h3>Food Distribution Crew</h3>",
"target": [
".vol-card:nth-child(5) > .vol-body > h3"
]
},
{
"html": "<h3>Policy Research Fellows</h3>",
"target": [
".vol-card:nth-child(6) > .vol-body > h3"
]
},
{
"html": "<h3 style=\"font-size:1.6rem;margin-bottom:20px\">Resource Center</h3>",
"target": [
"#resources > h3"
]
},
{
"html": "<h4>Tenant Rights Guide</h4>",
"target": [
".resource-item[href=\"#\"]:nth-child(1) > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Advocacy Toolkit</h4>",
"target": [
".resource-item[href=\"#\"]:nth-child(2) > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Mutual Aid Playbook</h4>",
"target": [
".resource-item[href=\"#\"]:nth-child(3) > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Know Your Rights Cards</h4>",
"target": [
".resource-item[href=\"#\"]:nth-child(4) > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Community Organizer Handbook</h4>",
"target": [
".resource-item[href=\"#\"]:nth-child(5) > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Benefits Enrollment Guide</h4>",
"target": [
".resource-item[href=\"#\"]:nth-child(6) > div:nth-child(2) > h4"
]
},
{
"html": "<h3>Upcoming Events</h3>",
"target": [
".side-card:nth-child(1) > h3"
]
},
{
"html": "<h4>Citywide Housing Assembly</h4>",
"target": [
".event:nth-child(1) > .event-info > h4"
]
},
{
"html": "<h4>Volunteer Orientation</h4>",
"target": [
".event:nth-child(2) > .event-info > h4"
]
},
{
"html": "<h4>Know Your Rights Workshop</h4>",
"target": [
".event:nth-child(3) > .event-info > h4"
]
},
{
"html": "<h4>Mutual Aid Food Drive</h4>",
"target": [
".event:nth-child(4) > .event-info > h4"
]
},
{
"html": "<h4>Advocacy Training Bootcamp</h4>",
"target": [
".event:nth-child(5) > .event-info > h4"
]
},
{
"html": "<h3>Stand With Us</h3>",
"target": [
".donate-box > h3"
]
},
{
"html": "<h3>Partner Organizations</h3>",
"target": [
".side-card:nth-child(3) > h3"
]
},
{
"html": "<h3>Featured Story</h3>",
"target": [
".side-card:nth-child(4) > h3"
]
},
{
"html": "<h2>Measure your collective impact</h2>",
"target": [
".impact-grid > div:nth-child(1) > h2"
]
},
{
"html": "<h3>Your projected impact</h3>",
"target": [
".calc-results > h3"
]
},
{
"html": "<h2>What our community says</h2>",
"target": [
".section-alt.section:nth-child(5) > .container > .section-head > h2"
]
},
{
"html": "<h2>Frequently asked</h2>",
"target": [
".section:nth-child(6) > .container > .section-head > h2"
]
},
{
"html": "<h2>Ready to be part of the change?</h2>",
"target": [
"#join > h2"
]
},
{
"html": "<h4>Programs</h4>",
"target": [
".footer-grid > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Resources</h4>",
"target": [
"div:nth-child(3) > h4"
]
},
{
"html": "<h4>Contact</h4>",
"target": [
"div:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main id=\"home\">",
"target": [
"#home"
]
}
],
"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": "#1e3a5f",
"bgColor": "#ffffff",
"contrastRatio": 11.5,
"fontSize": "15.0pt (20px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 11.5"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"name\">Confluence Collective</div>",
"target": [
".brand-text > .name"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "duplicate-id-aria",
"data": "volunteers",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<input type=\"number\" id=\"volunteers\" value=\"25\" min=\"1\">",
"target": [
"#volunteers"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [
{
"html": "<label for=\"volunteers\">Number of volunteers</label>",
"target": [
"label[for=\"volunteers\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input type=\"number\" id=\"volunteers\" value=\"25\" min=\"1\">",
"target": [
"#volunteers"
]
}
]
},
{
"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 class=\"brand-logo\" src=\"https://placehold.co/92x92/1e3a5f/f4c9a8?text=CC&font=montserrat\" alt=\"Confluence Collective logo\">",
"target": [
".brand-logo"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "explicit-label",
"data": {
"explicitLabel": "Number of volunteers"
},
"relatedNodes": [
{
"html": "<label for=\"volunteers\">Number of volunteers</label>",
"target": [
"label[for=\"volunteers\"]"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"number\" id=\"volunteers\" value=\"25\" min=\"1\">",
"target": [
"#volunteers"
]
}
]
},
{
"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=\"donate-box\">\n <h3>Stand With Us</h3>\n <p>Your contribution funds organizers, legal clinics, and mutual-aid networks on the ground.</p>\n <a href=\"#join\" class=\"btn\">Donate Today</a>\n </div>",
"target": [
".donate-box"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#join\" class=\"btn\">Donate Today</a>",
"target": [
".donate-box > .btn[href$=\"#join\"]"
]
}
]
},
{
"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=\"#\" class=\"brand\">",
"target": [
".brand"
]
}
]
},
{
"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 class=\"brand-logo\" src=\"https://placehold.co/92x92/1e3a5f/f4c9a8?text=CC&font=montserrat\" alt=\"Confluence Collective logo\">",
"target": [
".brand-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": 394.6,
"height": 46
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (394.6px by 46px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"brand\">",
"target": [
".brand"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "14.0pt (18.72px)",
"fontWeight": "normal",
"messageKey": "bgGradient",
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"donate-box\">\n <h3>Stand With Us</h3>\n <p>Your contribution funds organizers, legal clinics, and mutual-aid networks on the ground.</p>\n <a href=\"#join\" class=\"btn\">Donate Today</a>\n </div>",
"target": [
".donate-box"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h3>Stand With Us</h3>",
"target": [
".donate-box > h3"
],
"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": "#e07a3f",
"contrastRatio": 2.98,
"fontSize": "11.0pt (14.72px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#join\" class=\"cta\">Stand With Us</a>",
"target": [
".cta"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.98 (foreground color: #ffffff, background color: #e07a3f, font size: 11.0pt (14.72px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#join\" class=\"cta\">Stand With Us</a>",
"target": [
".cta"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.98 (foreground color: #ffffff, background color: #e07a3f, font size: 11.0pt (14.72px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#e07a3f",
"contrastRatio": 2.98,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#join\" class=\"btn btn-primary\">Stand With Us</a>",
"target": [
".btn-primary.btn[href$=\"#join\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.98 (foreground color: #ffffff, background color: #e07a3f, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#join\" class=\"btn btn-primary\">Stand With Us</a>",
"target": [
".btn-primary.btn[href$=\"#join\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.98 (foreground color: #ffffff, background color: #e07a3f, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07a3f",
"bgColor": "#ffffff",
"contrastRatio": 2.98,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.98 (foreground color: #e07a3f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Our Approach</span>",
"target": [
"#about > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.98 (foreground color: #e07a3f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07a3f",
"bgColor": "#f7f3ee",
"contrastRatio": 2.7,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"section section-alt\" id=\"community\">",
"target": [
"#community"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.7 (foreground color: #e07a3f, background color: #f7f3ee, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Community</span>",
"target": [
"#community > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.7 (foreground color: #e07a3f, background color: #f7f3ee, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07a3f",
"bgColor": "#ffffff",
"contrastRatio": 2.98,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"story-card\">",
"target": [
".story-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.98 (foreground color: #e07a3f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Housing Justice</span>",
"target": [
".story-card:nth-child(2) > .story-body > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.98 (foreground color: #e07a3f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07a3f",
"bgColor": "#ffffff",
"contrastRatio": 2.98,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"story-card\">",
"target": [
".story-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.98 (foreground color: #e07a3f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Youth Advocacy</span>",
"target": [
".story-card:nth-child(3) > .story-body > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.98 (foreground color: #e07a3f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07a3f",
"bgColor": "#ffffff",
"contrastRatio": 2.98,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"story-card\">",
"target": [
".story-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.98 (foreground color: #e07a3f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Mutual Aid</span>",
"target": [
".story-card:nth-child(4) > .story-body > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.98 (foreground color: #e07a3f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#fefefd",
"bgColor": "#f7f3ee",
"contrastRatio": 1.09,
"fontSize": "10.6pt (14.08px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"section section-alt\" id=\"community\">",
"target": [
"#community"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.09 (foreground color: #fefefd, background color: #f7f3ee, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Your contribution funds organizers, legal clinics, and mutual-aid networks on the ground.</p>",
"target": [
".donate-box > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.09 (foreground color: #fefefd, background color: #f7f3ee, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#c4632a",
"bgColor": "#ffffff",
"contrastRatio": 4.06,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#join\" class=\"btn\">Donate Today</a>",
"target": [
".donate-box > .btn[href$=\"#join\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.06 (foreground color: #c4632a, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#join\" class=\"btn\">Donate Today</a>",
"target": [
".donate-box > .btn[href$=\"#join\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.06 (foreground color: #c4632a, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07a3f",
"bgColor": "#f7f3ee",
"contrastRatio": 2.7,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"section section-alt\">",
"target": [
".section-alt.section:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.7 (foreground color: #e07a3f, background color: #f7f3ee, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Voices</span>",
"target": [
".section-alt.section:nth-child(5) > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.7 (foreground color: #e07a3f, background color: #f7f3ee, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07a3f",
"bgColor": "#ffffff",
"contrastRatio": 2.98,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.98 (foreground color: #e07a3f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Questions</span>",
"target": [
".section:nth-child(6) > .container > .section-head > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.98 (foreground color: #e07a3f, background color: #ffffff, font size: 9.4pt (12.48px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 8788
},
{
"y": 576,
"height": 8788
},
{
"y": 1152,
"height": 8788
},
{
"y": 1728,
"height": 8788
},
{
"y": 2304,
"height": 8788
},
{
"y": 2880,
"height": 8788
},
{
"y": 3456,
"height": 8788
},
{
"y": 4032,
"height": 8788
},
{
"y": 4608,
"height": 8788
},
{
"y": 5184,
"height": 8788
},
{
"y": 5760,
"height": 8788
},
{
"y": 6336,
"height": 8788
},
{
"y": 6912,
"height": 8788
},
{
"y": 7488,
"height": 8788
},
{
"y": 8064,
"height": 8788
},
{
"y": 8068,
"height": 8788
}
],
"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 "Society" 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: "Society"
- Description: Social issues, advocacy, cultural organizations, and community initiatives.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Society" 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: "Community", "Volunteer", "Action".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Society" category. Consider themes similar to: "Success Stories", "Volunteer Opportunities", "Resource Center".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "collective action", "equity initiatives", "advocacy".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Stand With Us", "Learn More", "Spread Awareness".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Society" sector. Ideas similar but not limited to: "impact calculator".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "success stories", "event calendar", "partner organizations".
- **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.