MoonshotAI Kimi K2.7 Code – Law Government and Politics
via Moonshot AI · Generated
- AIMAC Debt 4.51
- Cost $0.10
- Total Violations 14
- HTML Size 55 KB
- Em Dashes 4
Screenshot
View Live Page
Accessibility Issues Found
14 Serious
-
color-contrast serious 14 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<span class="eyebrow">Our Mission</span>
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>Civitas Nexus — Law, Policy & Civic Engagement</title>
<meta name="description" content="Civitas Nexus connects citizens with legal aid, legislative updates, advocacy tools, and government affairs 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=Inter:wght@400;500;600;700&family=Merriweather:wght@400;700;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
:root {
--navy: #0a1f44;
--navy-light: #16325b;
--gold: #c9a227;
--gold-dark: #a6831f;
--cream: #f8f6f1;
--white: #ffffff;
--gray: #5a6578;
--gray-light: #e4e7ec;
--text: #1f2937;
--success: #15803d;
--shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
--shadow-md: 0 8px 24px rgba(10,31,68,0.10);
--shadow-lg: 0 16px 40px rgba(10,31,68,0.14);
--radius: 8px;
--radius-lg: 16px;
--max-width: 1200px;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
color: var(--text);
line-height: 1.65;
background-color: var(--white);
}
h1, h2, h3, h4 {
font-family: 'Merriweather', Georgia, serif;
font-weight: 700;
line-height: 1.25;
color: var(--navy);
}
a {
color: var(--navy-light);
text-decoration: none;
transition: color 0.2s ease;
}
a:hover {
color: var(--gold-dark);
}
img {
max-width: 100%;
height: auto;
display: block;
}
.container {
width: 92%;
max-width: var(--max-width);
margin: 0 auto;
}
/* Buttons */
.btn {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.85rem 1.75rem;
border-radius: var(--radius);
font-weight: 600;
font-size: 0.95rem;
border: none;
cursor: pointer;
transition: all 0.2s ease;
}
.btn-primary {
background-color: var(--gold);
color: var(--navy);
}
.btn-primary:hover {
background-color: var(--gold-dark);
color: var(--white);
}
.btn-secondary {
background-color: var(--navy);
color: var(--white);
}
.btn-secondary:hover {
background-color: var(--navy-light);
}
.btn-outline {
background-color: transparent;
color: var(--navy);
border: 2px solid var(--navy);
}
.btn-outline:hover {
background-color: var(--navy);
color: var(--white);
}
.btn-block {
width: 100%;
justify-content: center;
}
/* Header */
.top-bar {
background-color: var(--navy);
color: var(--white);
font-size: 0.85rem;
padding: 0.5rem 0;
}
.top-bar .container {
display: flex;
justify-content: space-between;
align-items: center;
}
.top-bar a {
color: var(--gold);
}
header {
background-color: var(--white);
border-bottom: 1px solid var(--gray-light);
position: sticky;
top: 0;
z-index: 100;
}
.header-inner {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1rem 0;
}
.brand {
display: flex;
align-items: center;
gap: 1rem;
}
.brand img {
width: 56px;
height: 56px;
border-radius: 50%;
object-fit: cover;
}
.brand-text h1 {
font-size: 1.5rem;
margin-bottom: 0.15rem;
color: var(--navy);
}
.brand-text span {
font-size: 0.8rem;
color: var(--gray);
text-transform: uppercase;
letter-spacing: 0.08em;
font-weight: 600;
}
nav ul {
display: flex;
list-style: none;
gap: 2rem;
}
nav a {
font-weight: 600;
font-size: 0.92rem;
color: var(--navy);
position: relative;
}
nav a::after {
content: '';
position: absolute;
bottom: -4px;
left: 0;
width: 0;
height: 2px;
background-color: var(--gold);
transition: width 0.2s ease;
}
nav a:hover::after {
width: 100%;
}
.header-actions {
display: flex;
gap: 0.75rem;
}
.mobile-menu-toggle {
display: none;
background: none;
border: none;
font-size: 1.5rem;
color: var(--navy);
cursor: pointer;
}
/* Hero */
.hero {
background: linear-gradient(135deg, var(--navy) 0%, var(--navy-light) 100%);
color: var(--white);
padding: 5.5rem 0;
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: -50%;
right: -10%;
width: 600px;
height: 600px;
background: rgba(201, 162, 39, 0.08);
border-radius: 50%;
pointer-events: none;
}
.hero-grid {
display: grid;
grid-template-columns: 1.1fr 0.9fr;
gap: 4rem;
align-items: center;
position: relative;
z-index: 1;
}
.hero h2 {
font-size: 3.25rem;
color: var(--white);
margin-bottom: 1.25rem;
}
.hero h2 span {
color: var(--gold);
}
.hero p {
font-size: 1.15rem;
color: rgba(255,255,255,0.85);
margin-bottom: 2rem;
max-width: 540px;
}
.hero-buttons {
display: flex;
gap: 1rem;
flex-wrap: wrap;
}
.hero-image {
border-radius: var(--radius-lg);
overflow: hidden;
box-shadow: var(--shadow-lg);
}
.hero-image img {
width: 100%;
height: 420px;
object-fit: cover;
}
/* Section defaults */
section {
padding: 5rem 0;
}
.section-header {
text-align: center;
max-width: 720px;
margin: 0 auto 3.5rem;
}
.section-header h2 {
font-size: 2.25rem;
margin-bottom: 1rem;
}
.section-header p {
color: var(--gray);
font-size: 1.05rem;
}
.eyebrow {
display: inline-block;
color: var(--gold-dark);
font-weight: 700;
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 0.12em;
margin-bottom: 0.75rem;
}
/* Mission */
.mission {
background-color: var(--cream);
}
.mission-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
}
.mission-image img {
border-radius: var(--radius-lg);
box-shadow: var(--shadow-md);
}
.mission-content h2 {
font-size: 2.25rem;
margin-bottom: 1.25rem;
}
.mission-content p {
margin-bottom: 1.25rem;
color: var(--text);
}
.stats {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
margin-top: 2.5rem;
}
.stat-item {
text-align: center;
}
.stat-item strong {
display: block;
font-family: 'Merriweather', serif;
font-size: 2rem;
color: var(--gold-dark);
}
.stat-item span {
font-size: 0.85rem;
color: var(--gray);
font-weight: 600;
}
/* Services */
.services-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
.service-card {
background-color: var(--white);
border: 1px solid var(--gray-light);
border-radius: var(--radius-lg);
padding: 2.25rem;
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.service-card:hover {
transform: translateY(-6px);
box-shadow: var(--shadow-md);
}
.service-card .icon {
width: 56px;
height: 56px;
background-color: rgba(201, 162, 39, 0.12);
color: var(--gold-dark);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
margin-bottom: 1.25rem;
}
.service-card h3 {
font-size: 1.25rem;
margin-bottom: 0.75rem;
}
.service-card p {
color: var(--gray);
font-size: 0.95rem;
margin-bottom: 1.25rem;
}
.service-card a {
font-weight: 700;
font-size: 0.9rem;
}
/* Engagement Hub */
.engagement {
background-color: var(--navy);
color: var(--white);
}
.engagement .section-header h2,
.engagement .section-header p {
color: var(--white);
}
.engagement-grid {
display: grid;
grid-template-columns: 1.4fr 0.6fr;
gap: 3rem;
align-items: start;
}
.lookup-card {
background-color: var(--white);
color: var(--text);
border-radius: var(--radius-lg);
padding: 2.5rem;
box-shadow: var(--shadow-lg);
}
.lookup-card h3 {
font-size: 1.35rem;
margin-bottom: 0.5rem;
}
.lookup-card > p {
color: var(--gray);
margin-bottom: 1.5rem;
}
.form-group {
margin-bottom: 1.25rem;
}
.form-group label {
display: block;
font-weight: 600;
font-size: 0.9rem;
margin-bottom: 0.5rem;
color: var(--navy);
}
.form-group input,
.form-group select {
width: 100%;
padding: 0.85rem 1rem;
border: 1px solid var(--gray-light);
border-radius: var(--radius);
font-size: 1rem;
font-family: inherit;
}
.form-group input:focus,
.form-group select:focus {
outline: none;
border-color: var(--gold);
box-shadow: 0 0 0 3px rgba(201, 162, 39, 0.15);
}
.lookup-result {
margin-top: 1.5rem;
padding: 1.5rem;
background-color: var(--cream);
border-radius: var(--radius);
border-left: 4px solid var(--gold);
display: none;
}
.lookup-result.active {
display: block;
}
.lookup-result h4 {
font-size: 1.1rem;
margin-bottom: 0.75rem;
color: var(--navy);
}
.rep-list {
list-style: none;
}
.rep-list li {
padding: 0.75rem 0;
border-bottom: 1px solid var(--gray-light);
display: flex;
justify-content: space-between;
align-items: center;
}
.rep-list li:last-child {
border-bottom: none;
}
.rep-list strong {
color: var(--navy);
}
.rep-list span {
font-size: 0.85rem;
color: var(--gray);
}
.sidebar {
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.sidebar-card {
background-color: var(--white);
color: var(--text);
border-radius: var(--radius-lg);
padding: 1.75rem;
box-shadow: var(--shadow-md);
}
.sidebar-card h4 {
font-size: 1.1rem;
margin-bottom: 1rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.sidebar-card ul {
list-style: none;
}
.sidebar-card li {
padding: 0.6rem 0;
border-bottom: 1px solid var(--gray-light);
font-size: 0.92rem;
}
.sidebar-card li:last-child {
border-bottom: none;
}
.sidebar-card .date {
display: block;
font-size: 0.75rem;
color: var(--gold-dark);
font-weight: 700;
text-transform: uppercase;
margin-bottom: 0.15rem;
}
.resource-link {
display: flex;
align-items: center;
gap: 0.5rem;
color: var(--navy);
font-weight: 600;
}
.resource-link i {
color: var(--gold-dark);
}
/* Policy Analysis */
.policy {
background-color: var(--cream);
}
.policy-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
.policy-card {
background-color: var(--white);
border-radius: var(--radius-lg);
overflow: hidden;
box-shadow: var(--shadow-sm);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.policy-card:hover {
transform: translateY(-4px);
box-shadow: var(--shadow-md);
}
.policy-card img {
width: 100%;
height: 190px;
object-fit: cover;
}
.policy-card-content {
padding: 1.75rem;
}
.policy-card .tag {
display: inline-block;
background-color: rgba(201, 162, 39, 0.12);
color: var(--gold-dark);
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 0.35rem 0.75rem;
border-radius: 20px;
margin-bottom: 0.75rem;
}
.policy-card h3 {
font-size: 1.15rem;
margin-bottom: 0.75rem;
}
.policy-card p {
color: var(--gray);
font-size: 0.92rem;
margin-bottom: 1.25rem;
}
.policy-card a {
font-weight: 700;
font-size: 0.9rem;
}
/* Testimonials */
.testimonial-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
.testimonial-card {
background-color: var(--white);
border: 1px solid var(--gray-light);
border-radius: var(--radius-lg);
padding: 2rem;
position: relative;
}
.testimonial-card::before {
content: '\201C';
position: absolute;
top: 1rem;
right: 1.5rem;
font-family: Georgia, serif;
font-size: 4rem;
color: var(--gold);
opacity: 0.25;
line-height: 1;
}
.testimonial-card p {
color: var(--text);
margin-bottom: 1.5rem;
font-style: italic;
}
.testimonial-author {
display: flex;
align-items: center;
gap: 1rem;
}
.testimonial-author img {
width: 52px;
height: 52px;
border-radius: 50%;
object-fit: cover;
}
.testimonial-author strong {
display: block;
color: var(--navy);
font-size: 0.95rem;
}
.testimonial-author span {
font-size: 0.8rem;
color: var(--gray);
}
/* FAQ Accordion */
.faq {
background-color: var(--cream);
}
.faq-list {
max-width: 800px;
margin: 0 auto;
}
.faq-item {
background-color: var(--white);
border: 1px solid var(--gray-light);
border-radius: var(--radius);
margin-bottom: 1rem;
overflow: hidden;
}
.faq-question {
width: 100%;
padding: 1.25rem 1.5rem;
background: none;
border: none;
text-align: left;
font-family: 'Merriweather', serif;
font-size: 1.05rem;
font-weight: 700;
color: var(--navy);
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
}
.faq-question i {
transition: transform 0.2s ease;
color: var(--gold-dark);
}
.faq-item.active .faq-question i {
transform: rotate(180deg);
}
.faq-answer {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease;
}
.faq-answer-inner {
padding: 0 1.5rem 1.5rem;
color: var(--gray);
}
/* CTA Section */
.cta-section {
background: linear-gradient(135deg, var(--gold) 0%, var(--gold-dark) 100%);
color: var(--navy);
text-align: center;
}
.cta-section h2 {
color: var(--navy);
font-size: 2.25rem;
margin-bottom: 1rem;
}
.cta-section p {
max-width: 600px;
margin: 0 auto 2rem;
font-size: 1.05rem;
}
.cta-buttons {
display: flex;
gap: 1rem;
justify-content: center;
flex-wrap: wrap;
}
.cta-section .btn-primary {
background-color: var(--navy);
color: var(--white);
}
.cta-section .btn-primary:hover {
background-color: var(--navy-light);
}
.cta-section .btn-outline {
border-color: var(--navy);
color: var(--navy);
}
.cta-section .btn-outline:hover {
background-color: var(--navy);
color: var(--white);
}
/* Footer */
footer {
background-color: var(--navy);
color: rgba(255,255,255,0.75);
padding: 4rem 0 1.5rem;
}
.footer-grid {
display: grid;
grid-template-columns: 1.5fr 1fr 1fr 1fr;
gap: 3rem;
margin-bottom: 3rem;
}
.footer-brand img {
width: 64px;
height: 64px;
border-radius: 50%;
margin-bottom: 1.25rem;
}
.footer-brand h3 {
color: var(--white);
font-size: 1.35rem;
margin-bottom: 0.5rem;
}
.footer-brand p {
font-size: 0.9rem;
line-height: 1.7;
margin-bottom: 1.25rem;
}
.social-links {
display: flex;
gap: 0.75rem;
}
.social-links a {
width: 38px;
height: 38px;
border-radius: 50%;
background-color: rgba(255,255,255,0.1);
color: var(--white);
display: flex;
align-items: center;
justify-content: center;
transition: background-color 0.2s ease;
}
.social-links a:hover {
background-color: var(--gold);
color: var(--navy);
}
.footer-column h4 {
color: var(--white);
font-size: 1rem;
margin-bottom: 1.25rem;
}
.footer-column ul {
list-style: none;
}
.footer-column li {
margin-bottom: 0.6rem;
}
.footer-column a {
color: rgba(255,255,255,0.75);
font-size: 0.9rem;
}
.footer-column a:hover {
color: var(--gold);
}
.footer-bottom {
border-top: 1px solid rgba(255,255,255,0.1);
padding-top: 1.5rem;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 0.85rem;
}
.footer-bottom a {
color: rgba(255,255,255,0.75);
margin-left: 1.25rem;
}
.footer-bottom a:hover {
color: var(--gold);
}
/* Responsive */
@media (max-width: 1024px) {
.hero-grid,
.mission-grid,
.engagement-grid {
grid-template-columns: 1fr;
gap: 2.5rem;
}
.hero-image img {
height: 320px;
}
.services-grid,
.policy-grid,
.testimonial-grid {
grid-template-columns: repeat(2, 1fr);
}
.footer-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 768px) {
nav {
display: none;
position: absolute;
top: 100%;
left: 0;
width: 100%;
background-color: var(--white);
border-bottom: 1px solid var(--gray-light);
padding: 1rem 0;
}
nav.active {
display: block;
}
nav ul {
flex-direction: column;
gap: 0;
padding: 0 4%;
}
nav a {
display: block;
padding: 0.85rem 0;
border-bottom: 1px solid var(--gray-light);
}
.mobile-menu-toggle {
display: block;
}
.header-actions .btn-outline {
display: none;
}
.hero h2 {
font-size: 2.25rem;
}
.services-grid,
.policy-grid,
.testimonial-grid,
.stats {
grid-template-columns: 1fr;
}
.footer-grid {
grid-template-columns: 1fr;
gap: 2rem;
}
.footer-bottom {
flex-direction: column;
gap: 1rem;
text-align: center;
}
}
</style>
</head>
<body>
<div class="top-bar">
<div class="container">
<span><i class="fas fa-bullhorn"></i> New: 2024 Civic Engagement Report now available.</span>
<a href="#advocacy">Join the movement <i class="fas fa-arrow-right"></i></a>
</div>
</div>
<header>
<div class="container header-inner">
<a href="#" class="brand">
<img src="https://placehold.co/120x120/0a1f44/c9a227?text=CN&font=merriweather" alt="Civitas Nexus logo">
<div class="brand-text">
<h1>Civitas Nexus</h1>
<span>Law, Policy & Civic Engagement</span>
</div>
</a>
<button class="mobile-menu-toggle" aria-label="Toggle navigation">
<i class="fas fa-bars"></i>
</button>
<nav>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#legal-aid">Legal Aid</a></li>
<li><a href="#legislative">Legislative Updates</a></li>
<li><a href="#advocacy">Advocacy</a></li>
<li><a href="#policy">Policy Analysis</a></li>
<li><a href="#resources">Resources</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>
<div class="header-actions">
<a href="#contact" class="btn btn-outline">Donate</a>
<a href="#lookup" class="btn btn-primary">Take Action</a>
</div>
</div>
</header>
<main>
<section class="hero" id="home">
<div class="container hero-grid">
<div class="hero-content">
<h2>Where Law, Policy, and <span>Civic Action</span> Converge</h2>
<p>Civitas Nexus empowers citizens, organizations, and public officials with the legal information, advocacy tools, and policy analysis needed to participate meaningfully in democratic life. From navigating due process to tracking landmark legislation, we are your trusted partner in government affairs.</p>
<div class="hero-buttons">
<a href="#legal-aid" class="btn btn-primary">Find Legal Aid</a>
<a href="#advocacy" class="btn btn-secondary">Volunteer With Us</a>
</div>
</div>
<div class="hero-image">
<img src="https://picsum.photos/800/600?grayscale" alt="Government building columns representing law and civic institutions">
</div>
</div>
</section>
<section class="mission" id="legal-aid">
<div class="container mission-grid">
<div class="mission-image">
<img src="https://picsum.photos/700/500" alt="Legal professionals reviewing case files">
</div>
<div class="mission-content">
<span class="eyebrow">Our Mission</span>
<h2>Democratizing Access to Justice & Government</h2>
<p>For too many Americans, the legal system and legislative process feel inaccessible, opaque, and intimidating. Civitas Nexus was founded on a simple but powerful premise: every person deserves clarity about their rights, a voice in policymaking, and access to trustworthy civic resources.</p>
<p>We bridge the gap between complex legal doctrine and everyday civic life. Our team of attorneys, policy analysts, and community organizers translate precedent, statutory text, and regulatory guidance into plain-language resources. Whether you are facing a housing dispute, seeking to understand a new voting law, or preparing to lobby your local council, we provide the scaffolding for informed, effective participation.</p>
<p>We believe that due process is not an abstract ideal but a practical commitment, and that democracy is strongest when citizens understand not only their rights but also the levers of power available to protect them.</p>
<div class="stats">
<div class="stat-item">
<strong>12,500+</strong>
<span>Legal Aid Requests Filled</span>
</div>
<div class="stat-item">
<strong>340+</strong>
<span>Legislative Bills Tracked</span>
</div>
<div class="stat-item">
<strong>89</strong>
<span>Partner Organizations</span>
</div>
</div>
</div>
</div>
</section>
<section class="services" id="resources">
<div class="container">
<div class="section-header">
<span class="eyebrow">What We Do</span>
<h2>Resources for Every Stage of Civic Engagement</h2>
<p>From individual legal support to organizational lobbying strategy, our programs are designed to meet people where they are and move them toward meaningful action.</p>
</div>
<div class="services-grid">
<div class="service-card">
<div class="icon"><i class="fas fa-gavel"></i></div>
<h3>Legal Aid & Rights Center</h3>
<p>Connect with pro bono attorneys and self-advocacy guides covering housing, immigration, employment, civil rights, and family law. We help constituents understand due process, file administrative complaints, and prepare for hearings.</p>
<a href="#legal-aid">Access Legal Resources <i class="fas fa-arrow-right"></i></a>
</div>
<div class="service-card">
<div class="icon"><i class="fas fa-landmark"></i></div>
<h3>Legislative Tracking</h3>
<p>Stay ahead of committee markups, floor votes, and signed legislation with our nonpartisan bill tracker. Each update includes plain-language summaries, impact analysis, and opportunities for public comment.</p>
<a href="#legislative">View Current Bills <i class="fas fa-arrow-right"></i></a>
</div>
<div class="service-card">
<div class="icon"><i class="fas fa-balance-scale"></i></div>
<h3>Policy Analysis</h3>
<p>Our white papers and issue briefs examine regulatory frameworks, judicial precedent, and fiscal impacts. We publish research designed for advocates, journalists, and officials who need rigorous, accessible analysis.</p>
<a href="#policy">Read Our Analysis <i class="fas fa-arrow-right"></i></a>
</div>
<div class="service-card">
<div class="icon"><i class="fas fa-bullhorn"></i></div>
<h3>Advocacy Training</h3>
<p>Learn how to organize coalitions, draft effective testimony, meet with elected officials, and run issue campaigns. Our workshops cover lobbying ethics, grassroots mobilization, and digital advocacy best practices.</p>
<a href="#advocacy">Sign Up for Training <i class="fas fa-arrow-right"></i></a>
</div>
<div class="service-card">
<div class="icon"><i class="fas fa-vote-yea"></i></div>
<h3>Voter & Civic Engagement</h3>
<p>Verify your registration, find your polling place, and learn about candidates and ballot measures. We partner with election administrators to ensure accurate, nonpartisan voter information.</p>
<a href="#lookup">Check Your Status <i class="fas fa-arrow-right"></i></a>
</div>
<div class="service-card">
<div class="icon"><i class="fas fa-handshake"></i></div>
<h3>Government Affairs Consulting</h3>
<p>We help nonprofits, municipalities, and civic coalitions navigate public-sector procurement, grant compliance, intergovernmental agreements, and strategic communications with agency stakeholders.</p>
<a href="#contact">Request Consultation <i class="fas fa-arrow-right"></i></a>
</div>
</div>
</div>
</section>
<section class="engagement" id="lookup">
<div class="container">
<div class="section-header">
<span class="eyebrow">Civic Engagement Hub</span>
<h2>Find Your Elected Representatives</h2>
<p>Enter your ZIP code below to identify your federal, state, and local representatives, view committee assignments, and access contact information for constituent services.</p>
</div>
<div class="engagement-grid">
<div class="lookup-card">
<h3>Representative Lookup</h3>
<p>Knowing who represents you is the first step toward effective advocacy. This tool simulates a lookup using publicly available jurisdictional data.</p>
<form id="repLookupForm">
<div class="form-group">
<label for="zipCode">ZIP Code</label>
<input type="text" id="zipCode" name="zipCode" placeholder="e.g. 20001" maxlength="5" required>
</div>
<div class="form-group">
<label for="issueArea">Issue Area (Optional)</label>
<select id="issueArea" name="issueArea">
<option value="">Select an issue...</option>
<option value="housing">Housing & Tenant Rights</option>
<option value="healthcare">Healthcare Access</option>
<option value="education">Education Policy</option>
<option value="environment">Environmental Regulation</option>
<option value="voting">Voting Rights & Elections</option>
<option value="criminal">Criminal Justice Reform</option>
</select>
</div>
<button type="submit" class="btn btn-primary btn-block">Find My Representatives <i class="fas fa-search"></i></button>
</form>
<div class="lookup-result" id="lookupResult">
<h4>Representatives for ZIP Code <span id="resultZip"></span></h4>
<ul class="rep-list" id="repList">
<!-- Populated by JS -->
</ul>
<a href="#contact" class="btn btn-secondary btn-block" style="margin-top: 1rem;">Contact Representative</a>
</div>
</div>
<aside class="sidebar">
<div class="sidebar-card">
<h4><i class="fas fa-calendar-alt"></i> Election Calendar</h4>
<ul>
<li>
<span class="date">November 5, 2024</span>
General Election Day — federal, state, and local races
</li>
<li>
<span class="date">October 15, 2024</span>
Voter Registration Deadline (most states)
</li>
<li>
<span class="date">January 3, 2025</span>
119th U.S. Congress Convenes
</li>
<li>
<span class="date">March 4, 2025</span>
State of the Union Address
</li>
</ul>
</div>
<div class="sidebar-card">
<h4><i class="fas fa-file-alt"></i> Quick Legal Resources</h4>
<ul>
<li><a href="#" class="resource-link"><i class="fas fa-chevron-right"></i> Know Your Voting Rights</a></li>
<li><a href="#" class="resource-link"><i class="fas fa-chevron-right"></i> Tenant Eviction Defense Guide</a></li>
<li><a href="#" class="resource-link"><i class="fas fa-chevron-right"></i> FOI Request Template</a></li>
<li><a href="#" class="resource-link"><i class="fas fa-chevron-right"></i> Public Comment Toolkit</a></li>
<li><a href="#" class="resource-link"><i class="fas fa-chevron-right"></i> Amicus Brief Archive</a></li>
</ul>
</div>
<div class="sidebar-card">
<h4><i class="fas fa-trophy"></i> Recent Advocacy Wins</h4>
<ul>
<li>
<span class="date">Passed June 2024</span>
State-level right-to-counsel legislation for eviction proceedings
</li>
<li>
<span class="date">Settled May 2024</span>
Language-access settlement expanding ballot translation services
</li>
</ul>
</div>
</aside>
</div>
</div>
</section>
<section class="policy" id="policy">
<div class="container">
<div class="section-header">
<span class="eyebrow">Policy Analysis</span>
<h2>Legislative Updates & In-Depth Briefs</h2>
<p>Our analysis team monitors emerging statutes, regulatory rulemakings, and judicial opinions that shape civil society. Below are our latest briefs.</p>
</div>
<div class="policy-grid">
<article class="policy-card">
<img src="https://picsum.photos/600/400?random=1" alt="Legislative documents">
<div class="policy-card-content">
<span class="tag">Civil Rights</span>
<h3>Understanding the Latest Voting Rights Jurisprudence</h3>
<p>Recent circuit court decisions have reshaped the landscape for mail-in ballot access and redistricting challenges. This brief examines how new precedent affects Section 2 litigation and what advocates should watch in the upcoming term.</p>
<a href="#">Read the Brief <i class="fas fa-arrow-right"></i></a>
</div>
</article>
<article class="policy-card">
<img src="https://picsum.photos/600/400?random=2" alt="Policy meeting">
<div class="policy-card-content">
<span class="tag">Housing</span>
<h3>Tenant Protections and the Right to Counsel Movement</h3>
<p>As housing costs rise, more jurisdictions are considering guaranteed legal representation in eviction court. We analyze implementation models, fiscal impacts, and the due-process implications of these reforms.</p>
<a href="#">Read the Brief <i class="fas fa-arrow-right"></i></a>
</div>
</article>
<article class="policy-card">
<img src="https://picsum.photos/600/400?random=3" alt="Government data">
<div class="policy-card-content">
<span class="tag">Transparency</span>
<h3>FOIA Modernization and Open Government Data</h3>
<p>Proposed amendments to federal public records law aim to reduce request backlogs and standardize electronic production. We assess the legislation's lobbying trajectory and its practical impact for researchers and journalists.</p>
<a href="#">Read the Brief <i class="fas fa-arrow-right"></i></a>
</div>
</article>
</div>
</div>
</section>
<section class="testimonials" id="advocacy">
<div class="container">
<div class="section-header">
<span class="eyebrow">Voices From Our Community</span>
<h2>What Civic Leaders Say About Civitas Nexus</h2>
</div>
<div class="testimonial-grid">
<div class="testimonial-card">
<p>"Civitas Nexus transformed how our coalition engages with the state legislature. Their bill tracking and lobbying training gave us the structure we needed to move from reactive opposition to proactive policy development."</p>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/120?u=elena" alt="Elena Rodriguez">
<div>
<strong>Elena Rodriguez</strong>
<span>Policy Director, Housing Justice Coalition</span>
</div>
</div>
</div>
<div class="testimonial-card">
<p>"When my constituent services office could not resolve a benefits delay, Civitas Nexus connected me with a pro bono attorney who understood administrative law. Their legal aid network is a lifeline for working families."</p>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/120?u=marcus" alt="Marcus Chen">
<div>
<strong>Marcus Chen</strong>
<span>Community Organizer, Westside Alliance</span>
</div>
</div>
</div>
<div class="testimonial-card">
<p>"As a first-time candidate, I relied on Civitas Nexus for accurate voter registration data and issue briefs. Their nonpartisan approach and rigorous analysis helped me run a campaign grounded in facts rather than rhetoric."</p>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/120?u=sarah" alt="Sarah Okafor">
<div>
<strong>Sarah Okafor</strong>
<span>City Council Candidate</span>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="faq" id="legislative">
<div class="container">
<div class="section-header">
<span class="eyebrow">FAQ</span>
<h2>Frequently Asked Questions</h2>
</div>
<div class="faq-list">
<div class="faq-item active">
<button class="faq-question">
Is Civitas Nexus a partisan organization?
<i class="fas fa-chevron-down"></i>
</button>
<div class="faq-answer" style="max-height: 200px;">
<div class="faq-answer-inner">
No. Civitas Nexus is strictly nonpartisan. We do not endorse candidates or political parties. Our mission is to provide accurate legal information, transparent legislative analysis, and civic engagement resources that empower individuals regardless of their political affiliation.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question">
What types of legal aid do you provide?
<i class="fas fa-chevron-down"></i>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
We offer referrals to pro bono and low-cost attorneys, self-help legal guides, and rights education in areas such as housing, immigration, employment discrimination, consumer protection, family law, and voting access. We do not provide direct legal representation, but we can help you navigate available resources and understand your due-process rights.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question">
How can I get involved in advocacy?
<i class="fas fa-chevron-down"></i>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
You can sign up for our advocacy training workshops, volunteer with a local partner organization, join our legislative rapid-response network, or use our representative lookup tool to contact your elected officials. We also welcome help with voter registration drives, translation services, and community legal clinics.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question">
Where does your policy analysis come from?
<i class="fas fa-chevron-down"></i>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Our analysis is produced by a team of attorneys, public policy researchers, and former government staff. We rely on primary sources including bill text, committee reports, regulatory dockets, court opinions, and agency guidance. Every brief is reviewed for accuracy and is designed to be accessible to non-experts without sacrificing rigor.
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question">
Can my organization partner with Civitas Nexus?
<i class="fas fa-chevron-down"></i>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
Yes. We partner with legal aid societies, civic technology groups, academic institutions, and community-based organizations. Partnerships can include co-hosted trainings, data sharing, joint amicus briefs, and collaborative advocacy campaigns. Contact our Government Affairs team to discuss a potential collaboration.
</div>
</div>
</div>
</div>
</div>
</section>
<section class="cta-section" id="contact">
<div class="container">
<h2>Your Voice Belongs in the Process</h2>
<p>Whether you need legal guidance, want to track legislation, or are ready to advocate for change, Civitas Nexus is here to help you take the next step.</p>
<div class="cta-buttons">
<a href="#" class="btn btn-primary">Contact Representative</a>
<a href="#" class="btn btn-outline">Sign Petition</a>
<a href="#" class="btn btn-outline">Volunteer</a>
</div>
</div>
</section>
</main>
<footer>
<div class="container">
<div class="footer-grid">
<div class="footer-brand">
<img src="https://placehold.co/120x120/ffffff/0a1f44?text=CN&font=merriweather" alt="Civitas Nexus logo">
<h3>Civitas Nexus</h3>
<p>Connecting citizens with the legal knowledge, policy insights, and advocacy tools they need to participate fully in democratic life. Law, government affairs, and civic engagement—made accessible.</p>
<div class="social-links">
<a href="#" aria-label="Facebook"><i class="fab fa-facebook-f"></i></a>
<a href="#" aria-label="Twitter"><i class="fab fa-twitter"></i></a>
<a href="#" aria-label="LinkedIn"><i class="fab fa-linkedin-in"></i></a>
<a href="#" aria-label="Instagram"><i class="fab fa-instagram"></i></a>
<a href="#" aria-label="YouTube"><i class="fab fa-youtube"></i></a>
</div>
</div>
<div class="footer-column">
<h4>Programs</h4>
<ul>
<li><a href="#legal-aid">Legal Aid Center</a></li>
<li><a href="#legislative">Legislative Tracking</a></li>
<li><a href="#policy">Policy Analysis</a></li>
<li><a href="#advocacy">Advocacy Training</a></li>
<li><a href="#lookup">Voter Engagement</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Resources</h4>
<ul>
<li><a href="#">Know Your Rights</a></li>
<li><a href="#">Bill Tracker</a></li>
<li><a href="#">Amicus Brief Archive</a></li>
<li><a href="#">Public Comment Toolkit</a></li>
<li><a href="#">Research Library</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Contact</h4>
<ul>
<li><i class="fas fa-map-marker-alt"></i> 1200 Constitution Avenue NW, Suite 400, Washington, DC 20001</li>
<li><i class="fas fa-phone"></i> (202) 555-0147</li>
<li><i class="fas fa-envelope"></i> info@civitasnexus.org</li>
<li><i class="fas fa-clock"></i> Mon–Fri: 9:00 AM – 6:00 PM ET</li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>© 2024 Civitas Nexus. All rights reserved.</p>
<div>
<a href="#">Privacy Policy</a>
<a href="#">Terms of Service</a>
<a href="#">Accessibility</a>
<a href="#">Donor Transparency</a>
</div>
</div>
</div>
</footer>
<script>
// Mobile navigation toggle
const mobileMenuToggle = document.querySelector('.mobile-menu-toggle');
const nav = document.querySelector('nav');
mobileMenuToggle.addEventListener('click', () => {
nav.classList.toggle('active');
const icon = mobileMenuToggle.querySelector('i');
icon.classList.toggle('fa-bars');
icon.classList.toggle('fa-times');
});
// FAQ Accordion
const faqItems = document.querySelectorAll('.faq-item');
faqItems.forEach(item => {
const question = item.querySelector('.faq-question');
const answer = item.querySelector('.faq-answer');
question.addEventListener('click', () => {
const isActive = item.classList.contains('active');
// Close all
faqItems.forEach(i => {
i.classList.remove('active');
i.querySelector('.faq-answer').style.maxHeight = null;
});
// Open clicked if it wasn't active
if (!isActive) {
item.classList.add('active');
answer.style.maxHeight = answer.scrollHeight + 'px';
}
});
});
// Representative Lookup Simulation
const repLookupForm = document.getElementById('repLookupForm');
const lookupResult = document.getElementById('lookupResult');
const resultZip = document.getElementById('resultZip');
const repList = document.getElementById('repList');
const sampleReps = [
{ name: 'Sen. Margaret Alvarez', role: 'U.S. Senator', party: 'Democrat', contact: 'alavarez.senate.gov' },
{ name: 'Sen. James Whitfield', role: 'U.S. Senator', party: 'Republican', contact: 'whitfield.senate.gov' },
{ name: 'Rep. David Park', role: 'U.S. Representative', party: 'Democrat', contact: 'park.house.gov' },
{ name: 'Del. Rosa Hernandez', role: 'State Delegate', party: 'Democrat', contact: 'rhernandez.state.gov' }
];
repLookupForm.addEventListener('submit', function(e) {
e.preventDefault();
const zip = document.getElementById('zipCode').value.trim();
if (!/^\d{5}$/.test(zip)) {
alert('Please enter a valid 5-digit ZIP code.');
return;
}
// Simulate API delay
const submitBtn = repLookupForm.querySelector('button[type="submit"]');
const originalText = submitBtn.innerHTML;
submitBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Looking up...';
submitBtn.disabled = true;
setTimeout(() => {
resultZip.textContent = zip;
repList.innerHTML = sampleReps.map(rep => `
<li>
<div>
<strong>${rep.name}</strong>
<span>${rep.role} — ${rep.party}</span>
</div>
<a href="https://${rep.contact}" target="_blank" rel="noopener"><i class="fas fa-external-link-alt"></i></a>
</li>
`).join('');
lookupResult.classList.add('active');
submitBtn.innerHTML = originalText;
submitBtn.disabled = false;
// Scroll to result on mobile
if (window.innerWidth < 768) {
lookupResult.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}
}, 900);
});
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T09:43:56.346Z",
"url": "https://benchmark.aimac.invalid/c6d5ef549bfee411e6f690452bac602a922be6979bcf56c916cdb946e8a7bd6e.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": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "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\"><i class=\"fab fa-facebook-f\"></i></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\"><i class=\"fab fa-facebook-f\"></i></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\"><i class=\"fab fa-facebook-f\"></i></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\"><i class=\"fab fa-facebook-f\"></i></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\"><i class=\"fab fa-facebook-f\"></i></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": "<div class=\"faq-answer\" style=\"max-height: 200px;\">",
"target": [
".active > .faq-answer"
]
}
]
},
{
"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 type=\"submit\" class=\"btn btn-primary btn-block\">Find My Representatives <i class=\"fas fa-search\"></i></button>",
"target": [
"button[type=\"submit\"]"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "internal-link-present",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Valid skip link found"
},
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1>Civitas Nexus</h1>",
"target": [
"h1"
]
},
{
"html": "<h2>Where Law, Policy, and <span>Civic Action</span> Converge</h2>",
"target": [
".hero-content > h2"
]
},
{
"html": "<h2>Democratizing Access to Justice & Government</h2>",
"target": [
".mission-content > h2"
]
},
{
"html": "<h2>Resources for Every Stage of Civic Engagement</h2>",
"target": [
"#resources > .container > .section-header > h2"
]
},
{
"html": "<h3>Legal Aid & Rights Center</h3>",
"target": [
".service-card:nth-child(1) > h3"
]
},
{
"html": "<h3>Legislative Tracking</h3>",
"target": [
".service-card:nth-child(2) > h3"
]
},
{
"html": "<h3>Policy Analysis</h3>",
"target": [
".service-card:nth-child(3) > h3"
]
},
{
"html": "<h3>Advocacy Training</h3>",
"target": [
".service-card:nth-child(4) > h3"
]
},
{
"html": "<h3>Voter & Civic Engagement</h3>",
"target": [
".service-card:nth-child(5) > h3"
]
},
{
"html": "<h3>Government Affairs Consulting</h3>",
"target": [
".service-card:nth-child(6) > h3"
]
},
{
"html": "<h2>Find Your Elected Representatives</h2>",
"target": [
"#lookup > .container > .section-header > h2"
]
},
{
"html": "<h3>Representative Lookup</h3>",
"target": [
".lookup-card > h3"
]
},
{
"html": "<h4><i class=\"fas fa-calendar-alt\"></i> Election Calendar</h4>",
"target": [
".sidebar-card:nth-child(1) > h4"
]
},
{
"html": "<h4><i class=\"fas fa-file-alt\"></i> Quick Legal Resources</h4>",
"target": [
".sidebar-card:nth-child(2) > h4"
]
},
{
"html": "<h4><i class=\"fas fa-trophy\"></i> Recent Advocacy Wins</h4>",
"target": [
".sidebar-card:nth-child(3) > h4"
]
},
{
"html": "<h2>Legislative Updates & In-Depth Briefs</h2>",
"target": [
"#policy > .container > .section-header > h2"
]
},
{
"html": "<h3>Understanding the Latest Voting Rights Jurisprudence</h3>",
"target": [
"article:nth-child(1) > .policy-card-content > h3"
]
},
{
"html": "<h3>Tenant Protections and the Right to Counsel Movement</h3>",
"target": [
"article:nth-child(2) > .policy-card-content > h3"
]
},
{
"html": "<h3>FOIA Modernization and Open Government Data</h3>",
"target": [
"article:nth-child(3) > .policy-card-content > h3"
]
},
{
"html": "<h2>What Civic Leaders Say About Civitas Nexus</h2>",
"target": [
"#advocacy > .container > .section-header > h2"
]
},
{
"html": "<h2>Frequently Asked Questions</h2>",
"target": [
"#legislative > .container > .section-header > h2"
]
},
{
"html": "<h2>Your Voice Belongs in the Process</h2>",
"target": [
".container > h2"
]
},
{
"html": "<h3>Civitas Nexus</h3>",
"target": [
".footer-brand > h3"
]
},
{
"html": "<h4>Programs</h4>",
"target": [
".footer-column:nth-child(2) > h4"
]
},
{
"html": "<h4>Resources</h4>",
"target": [
".footer-column:nth-child(3) > h4"
]
},
{
"html": "<h4>Contact</h4>",
"target": [
".footer-column:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main>",
"target": [
"main"
]
}
],
"impact": "serious",
"message": "Page has a landmark region"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#0a1f44",
"contrastRatio": 16.24,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 16.24"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span><i class=\"fas fa-bullhorn\"></i> New: 2024 Civic Engagement Report now available.</span>",
"target": [
".container > span"
]
}
]
},
{
"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": "zipCode",
"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=\"text\" id=\"zipCode\" name=\"zipCode\" placeholder=\"e.g. 20001\" maxlength=\"5\" required=\"\">",
"target": [
"#zipCode"
]
}
]
},
{
"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=\"zipCode\">ZIP Code</label>",
"target": [
"label[for=\"zipCode\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input type=\"text\" id=\"zipCode\" name=\"zipCode\" placeholder=\"e.g. 20001\" maxlength=\"5\" required=\"\">",
"target": [
"#zipCode"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/120x120/0a1f44/c9a227?text=CN&font=merriweather\" alt=\"Civitas Nexus logo\">",
"target": [
".brand > img[alt=\"Civitas Nexus 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": "ZIP Code"
},
"relatedNodes": [
{
"html": "<label for=\"zipCode\">ZIP Code</label>",
"target": [
"label[for=\"zipCode\"]"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
},
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"text\" id=\"zipCode\" name=\"zipCode\" placeholder=\"e.g. 20001\" maxlength=\"5\" required=\"\">",
"target": [
"#zipCode"
]
}
]
},
{
"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=\"service-card\">",
"target": [
".service-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#legal-aid\">Access Legal Resources <i class=\"fas fa-arrow-right\"></i></a>",
"target": [
".service-card:nth-child(1) > a[href$=\"#legal-aid\"]"
]
}
]
},
{
"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=\"#advocacy\">Join the movement <i class=\"fas fa-arrow-right\"></i></a>",
"target": [
".container > a[href$=\"#advocacy\"]"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul>",
"target": [
"nav > ul"
]
}
]
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "listitem",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List item has a <ul>, <ol> or role=\"list\" parent element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<li><a href=\"#home\">Home</a></li>",
"target": [
"nav > ul > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/120x120/0a1f44/c9a227?text=CN&font=merriweather\" alt=\"Civitas Nexus logo\">",
"target": [
".brand > img[alt=\"Civitas Nexus logo\"]"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "explicit-label",
"data": {
"explicitLabel": "Issue Area (Optional)"
},
"relatedNodes": [
{
"html": "<label for=\"issueArea\">Issue Area (Optional)</label>",
"target": [
"label[for=\"issueArea\"]"
]
}
],
"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": "<select id=\"issueArea\" name=\"issueArea\">",
"target": [
"#issueArea"
]
}
]
},
{
"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-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=\"#advocacy\">Join the movement <i class=\"fas fa-arrow-right\"></i></a>",
"target": [
".container > a[href$=\"#advocacy\"]"
]
}
]
}
],
"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": {
"fontSize": "39.0pt (52px)",
"fontWeight": "bold",
"messageKey": "pseudoContent",
"expectedContrastRatio": "3:1"
},
"relatedNodes": [
{
"html": "<section class=\"hero\" id=\"home\">",
"target": [
"#home"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a pseudo element"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h2>Where Law, Policy, and <span>Civic Action</span> Converge</h2>",
"target": [
".hero-content > h2"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a pseudo element"
}
]
}
],
"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": "#a6831f",
"bgColor": "#f8f6f1",
"contrastRatio": 3.3,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"mission\" id=\"legal-aid\">",
"target": [
"#legal-aid"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.3 (foreground color: #a6831f, background color: #f8f6f1, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Our Mission</span>",
"target": [
".mission-content > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.3 (foreground color: #a6831f, background color: #f8f6f1, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#ffffff",
"contrastRatio": 3.56,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">What We Do</span>",
"target": [
"#resources > .container > .section-header > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#ffffff",
"contrastRatio": 3.56,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"date\">November 5, 2024</span>",
"target": [
".sidebar-card:nth-child(1) > ul > li:nth-child(1) > .date"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#ffffff",
"contrastRatio": 3.56,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"date\">October 15, 2024</span>",
"target": [
".sidebar-card:nth-child(1) > ul > li:nth-child(2) > .date"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#ffffff",
"contrastRatio": 3.56,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"date\">January 3, 2025</span>",
"target": [
"li:nth-child(3) > .date"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#ffffff",
"contrastRatio": 3.56,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"date\">March 4, 2025</span>",
"target": [
"li:nth-child(4) > .date"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#ffffff",
"contrastRatio": 3.56,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"date\">Passed June 2024</span>",
"target": [
".sidebar-card:nth-child(3) > ul > li:nth-child(1) > .date"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#ffffff",
"contrastRatio": 3.56,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"date\">Settled May 2024</span>",
"target": [
".sidebar-card:nth-child(3) > ul > li:nth-child(2) > .date"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#f8f6f1",
"contrastRatio": 3.3,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"policy\" id=\"policy\">",
"target": [
"#policy"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.3 (foreground color: #a6831f, background color: #f8f6f1, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Policy Analysis</span>",
"target": [
"#policy > .container > .section-header > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.3 (foreground color: #a6831f, background color: #f8f6f1, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#f9f4e5",
"contrastRatio": 3.24,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"tag\">Civil Rights</span>",
"target": [
"article:nth-child(1) > .policy-card-content > .tag"
]
},
{
"html": "<article class=\"policy-card\">",
"target": [
"article:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.24 (foreground color: #a6831f, background color: #f9f4e5, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Civil Rights</span>",
"target": [
"article:nth-child(1) > .policy-card-content > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.24 (foreground color: #a6831f, background color: #f9f4e5, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#f9f4e5",
"contrastRatio": 3.24,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"tag\">Housing</span>",
"target": [
"article:nth-child(2) > .policy-card-content > .tag"
]
},
{
"html": "<article class=\"policy-card\">",
"target": [
"article:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.24 (foreground color: #a6831f, background color: #f9f4e5, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Housing</span>",
"target": [
"article:nth-child(2) > .policy-card-content > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.24 (foreground color: #a6831f, background color: #f9f4e5, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#f9f4e5",
"contrastRatio": 3.24,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"tag\">Transparency</span>",
"target": [
"article:nth-child(3) > .policy-card-content > .tag"
]
},
{
"html": "<article class=\"policy-card\">",
"target": [
"article:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.24 (foreground color: #a6831f, background color: #f9f4e5, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"tag\">Transparency</span>",
"target": [
"article:nth-child(3) > .policy-card-content > .tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.24 (foreground color: #a6831f, background color: #f9f4e5, font size: 8.4pt (11.2px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#ffffff",
"contrastRatio": 3.56,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Voices From Our Community</span>",
"target": [
"#advocacy > .container > .section-header > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.56 (foreground color: #a6831f, background color: #ffffff, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a6831f",
"bgColor": "#f8f6f1",
"contrastRatio": 3.3,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"faq\" id=\"legislative\">",
"target": [
"#legislative"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.3 (foreground color: #a6831f, background color: #f8f6f1, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">FAQ</span>",
"target": [
"#legislative > .container > .section-header > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.3 (foreground color: #a6831f, background color: #f8f6f1, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 7521
},
{
"y": 576,
"height": 7521
},
{
"y": 1152,
"height": 7521
},
{
"y": 1728,
"height": 7521
},
{
"y": 2304,
"height": 7521
},
{
"y": 2880,
"height": 7521
},
{
"y": 3456,
"height": 7521
},
{
"y": 4032,
"height": 7521
},
{
"y": 4608,
"height": 7521
},
{
"y": 5184,
"height": 7521
},
{
"y": 5760,
"height": 7521
},
{
"y": 6336,
"height": 7521
},
{
"y": 6801,
"height": 7521
}
],
"scans": 14,
"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 "Law, Government, & Politics" 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: "Law, Government, & Politics"
- Description: Legal information, political organizations, government affairs, and civic engagement resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Law, Government, & Politics" 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: "Legal Aid", "Advocacy", "Contact".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Law, Government, & Politics" category. Consider themes similar to: "Legal Rights", "Legislative Updates", "Policy Analysis".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "lobbying", "precedent", "due process".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Contact Representative", "Volunteer", "Sign Petition".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Law, Government, & Politics" sector. Ideas similar but not limited to: "voter registration check".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "election calendar", "legal resources", "advocacy wins".
- **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.