IBM Granite 4.2 8B – Law Government and Politics
via CoreWeave · Generated
- AIMAC Debt 4.75
- Cost $0.0022
- Total Violations 18
- HTML Size 19 KB
- Em Dashes 9
Screenshot
View Live Page
Accessibility Issues Found
18 Serious
-
color-contrast serious 18 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<button class="cta-btn">Request a Policy Brief</button>
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>Veritas Civic - Informed Citizens. Stronger Democracy</title>
<style>
:root {
--primary: #348090;
--secondary: #3498db;
--text: #333;
--bg: #fff;
--card-bg: #f8f9fa;
--muted: #666;
}
body {
font-family: 'Lato', sans-serif;
line-height: 1.6;
color: var(--text);
margin: 0;
padding: 0;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 15px;
}
header {
background: var(--primary);
color: white;
padding: 1rem 0;
}
.header-container {
display: flex;
align-items: center;
justify-content: space-between;
}
.logo {
height: 50px;
vertical-align: middle;
}
.main-nav a {
color: white;
text-decoration: none;
margin-right: 1.5rem;
font-weight: 500;
font-size: 0.95rem;
}
.main-nav a:hover {
text-decoration: underline;
}
main {
padding: 2rem 0;
}
.section {
padding: 2rem 0;
}
.section h2 {
margin-bottom: 1rem;
font-size: 1.8rem;
color: var(--primary);
letter-spacing: -0.5px;
}
.cta-btn {
display: inline-block;
background: var(--secondary);
color: white;
border: none;
padding: 0.75rem 1.5rem;
margin-top: 1rem;
text-decoration: none;
font-weight: 600;
border-radius: 4px;
cursor: pointer;
transition: background 0.2s ease;
}
.cta-btn:hover {
background: #2980b9;
}
.feature-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 1.5rem;
margin-top: 1.5rem;
}
.feature-card {
background: var(--card-bg);
border-left: 4px solid var(--secondary);
padding: 1.25rem;
text-align: center;
border-radius: 8px 4px 4px 8px;
}
.feature-card h3 {
margin: 0 0 0.5rem 0;
font-size: 1.1rem;
color: var(--primary);
}
.feature-card p {
margin: 0 0 1rem 0;
color: var(--muted);
}
.sidebar {
background: #f0f4f8;
border-left: 4px solid var(--secondary);
padding: 1.5rem;
margin-top: 2rem;
}
.resource-card {
margin-bottom: 1rem;
}
.resource-card h4 {
margin: 0 0 0.5rem 0;
font-size: 1.1rem;
color: var(--primary);
}
.interactive-element {
margin: 2rem 0;
padding: 1.5rem;
border: 1px solid #ddd;
border-radius: 8px;
background: #fff;
text-align: left;
}
.comp-selector {
margin-bottom: 1rem;
}
.comp-btn {
background: #ecf0f1;
color: var(--text);
border: none;
padding: 0.5rem 1rem;
margin: 0 0.25rem;
cursor: pointer;
border-radius: 4px;
font-size: 0.9rem;
text-align: left;
}
.comp-btn.active {
background: var(--secondary);
color: white;
}
.comp-btn.active:hover {
background: #2980b9;
}
.comp-result {
margin-top: 1rem;
padding: 1rem;
background: #eef2f5;
font-size: 0.95rem;
}
footer {
background: var(--primary);
color: white;
text-align: center;
padding: 2rem 0;
}
.footer-container {
max-width: 1200px;
margin: 0 auto;
}
.contact-avatar {
height: 40px;
width: 40px;
border-radius: 50%;
margin-bottom: 0.5rem;
}
.social-links a {
margin: 0 0.5rem;
text-decoration: none;
color: #ddd;
font-size: 0.9rem;
}
.social-links a:hover {
color: var(--secondary);
}
.footer-nav a {
text-decoration: none;
color: #bbb;
margin: 0 0.75rem;
font-size: 0.9rem;
}
.footer-nav a:hover {
text-decoration: underline;
}
@media (max-width: 768px) {
.main-nav {
flex-direction: column;
text-align: center;
}
.main-nav a {
margin-right: 0;
margin-bottom: 0.75rem;
}
.feature-grid {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body>
<header>
<div class="container header-container">
<img src="https://placehold.co/150x150/348090/ffffff?text=VC&font=lato" alt="Veritas Civic Logo" class="logo">
<nav class="main-nav">
<a href="#research">Research</a>
<a href="#policy-briefs">Policy Briefs</a>
<a href="#legal-aid">Legal Aid</a>
<a href="#voter-guide">Voter Guide</a>
<a href="#advocacy">Advocacy Hub</a>
<a href="#about">About</a>
<a href="#donate">Donate</a>
</nav>
</div>
</header>
<main class="container">
<section id="policy-briefs" class="section">
<h2>Policy Analysis & Briefs</h2>
<p>Our team produces concise, evidence-based policy briefs that translate complex legislative proposals into actionable recommendations for policymakers. Each brief synthesizes current case law precedent, empirical data, and stakeholder input to avoid jargon and focus on practical outcomes. We prioritize clarity for elected officials and legislative staff, ensuring briefs are typically under two pages while remaining rigorously sourced.</p>
<p>We follow a standardized workflow: initial scoping with legal review, data verification against official agency records, stakeholder consultation (including brief 15-minute interviews with affected community representatives), plain-language draft writing, and final peer review by two independent counsel reviewers. This ensures accuracy, relevance, and readability without overstatement. Every brief includes three clearly labeled sections—<em>Key Recommendation</em> (one sentence), <em>Supporting Evidence</em> (two to three data points or case precedents), and <em>Implementation Considerations</em> (specific, realistic steps and timeline notes). We never use terms like “should” or “must” without grounding in statutory language; instead we state what the law currently requires and what a proposed change would entail.</p>
<img src="https://placehold.co/400x200/2c3e50/ffffff?text=Policy+Brief&font=lato" alt="Example Policy Brief layout showing concise sections">
<button class="cta-btn">Request a Policy Brief</button>
</section>
<section id="civil-liberties" class="section">
<h2>Civil Liberties & Due Process</h2>
<p>Understanding constitutional safeguards for individual rights is essential for navigating government actions that may affect citizens. Our resources clarify due process requirements under both statutory and constitutional frameworks, explaining when notice, opportunity to be heard, and neutral decision-making apply. We provide plain-language guides on topics like lawful search and seizure, free speech boundaries in public spaces, and the standards for restricting expressive conduct—always referencing the exact constitutional clause (e.g., Fourteenth Amendment’s Due Process Clause) and relevant Supreme Court case citations.</p>
<p>When litigation is necessary, we help individuals assess standing requirements (e.g., “Did the government action directly and substantially affect you?”), identify the most relevant precedent (using our searchable brief database), and understand potential procedural hurdles (e.g., filing deadlines, administrative exhaustion rules). Our brief guidance for affected parties emphasizes factual accuracy, avoids speculative language (“could,” “might”), and outlines realistic next steps—such as filing a motion to dismiss under Rule 12(b)(6) or pursuing administrative review within statutory timelines. We do not offer legal representation but provide a clear, step-by-step checklist and a one-page “What to Say” template for interactions with officials. All guides are updated quarterly based on new court rulings and agency guidance.</p>
<img src="https://placehold.co/400x200/3498db/ffffff?text=Due+Process&font=lato" alt="Due Process guide showing checklist and template">
<button class="cta-btn">Get Your Rights Guide</button>
</section>
<section id="voter-guide" class="section">
<h2>Voter Information Hub</h2>
<p>Navigating elections can be confusing. Our Voter Guide offers clear, jargon-free answers to common questions about eligibility, ballot types (in-person, absentee, mail-in), registration deadlines, polling place locations, and ballot tracking. All information is verified against official state and local election authority sources (e.g., Secretary of State websites, county clerk offices) and updated regularly for the current cycle. We avoid political language and focus solely on factual, process-oriented guidance. For example: “If you moved within 30 days of the registration deadline, you can register online or by mail using your new address.”</p>
<p>We also provide a simple, printable five-step checklist: “1. Confirm your registration status using the official online portal (link provided). 2. Choose your ballot type (in-person, absentee, or mail-in) based on your residence and schedule. 3. Mark your ballot carefully—use only the official pen provided at polling places or follow the mail-in guide. 4. Submit by the deadline: online registration closes 30 days before Election Day; mail-in ballots must be postmarked by Election Day; absentee ballots must be returned by the deadline specified by your county (usually 7 days before Election Day). 5. Track your ballot if your county offers it (link to official tracker). No sign-ups, personal data collection, or third-party links appear in the guide. All FAQs include a short ‘Why this matters’ sentence (e.g., “Knowing your polling place location avoids travel delays on Election Day”).</p>
<img src="https://picsum.photos/400/300?grayscale" alt="Voter Guide layout showing checklist and clear visuals">
<button class="cta-btn">Check My Voter Status</button>
</section>
<section id="get-involved" class="section">
<h2>Get Involved</h2>
<p>Strong democracy depends on active, informed citizens. Choose how you engage: sign petitions for specific policy changes, join our Advocacy Hub to receive briefing emails and action alerts, or request free legal aid for civil liberties concerns. Our advocacy team helps craft effective, respectful messages for elected officials and provides talking points for community conversations—all written in plain language without legalese.</p>
<div class="feature-grid">
<div class="feature-card">
<h3>Sign a Petition</h3>
<p>Petitions trigger official review for policy changes. We provide the correct form, exact deadline info (e.g., “Petition must be filed 60 days before the legislative session begins”), and signature guidelines (e.g., “One signature per voter, no duplicates”). Sign in <strong>3 minutes</strong> online or print the PDF. We verify all signatures electronically through our partner platform to ensure compliance.</p>
<button class="cta-btn">Sign Petition</button>
</div>
<div class="feature-card">
<h3>Join Advocacy Hub</h3>
<p>Receive a concise, one-page monthly briefing on upcoming votes (e.g., “State Senate Bill 204 on school choice funding—what it does, key stakeholders, one action step”), simple action steps (e.g., “Send a 2-sentence email to your representative using our template”), and a ready-to-use social media post. No commitment—unsubscribe anytime via a single click in the email footer. All briefings are available in English and Spanish.</p>
<button class="cta-btn">Join Advocacy</button>
</div>
<div class="feature-card">
<h3>Request Legal Aid</h3>
<p>If you face a government action affecting your rights (e.g., license suspension notice, restriction of public assembly, or denial of a permit), our free resource guide helps you understand your options. We connect you with qualified pro bono attorneys through our vetted network when eligible (based on income thresholds and legal issue type). The process takes <strong>under 48 hours</strong> for initial intake, and all communication uses plain language. No fees, no hidden costs.</p>
<button class="cta-btn">Request Legal Aid</button>
</div>
</div>
</section>
<div id="policy-comparator" class="interactive-element">
<h3>Policy Snapshot Comparator</h3>
<p>See how two policy options compare on key factors: impact (on voter access/community safety), feasibility (budget and implementation timeline), and civil liberty implications. The tool shows a balanced, non-partisan summary—no advocacy language—based on current case law and agency guidance. Select an option to view the comparison.</p>
<div class="comp-selector">
<label>Option A: Community Safety Initiative</label>
<button class="comp-btn">View vs Option B</button>
<label>Option B: Expanded Voting Access</label>
<button class="comp-btn">View vs Option A</button>
</div>
<div id="comparison-result" class="comp-result"></div>
</div>
</main>
<aside class="sidebar container">
<h3>Quick Resources</h3>
<div class="resource-card">
<h4>Recent Advocacy Wins</h4>
<p>Successfully petitioned City Council to adopt clear, consistent signage standards for ballot drop boxes (2024); drop-box locations now marked with universally recognized symbols and operating hours displayed. Policy brief on school choice funding transparency led to a committee hearing and adoption of a plain-language reporting template for all district budgets.</p>
</div>
<div class="resource-card">
<h4>Free Legal Resources</h4>
<p>Downloadable, plain-language guides: <em>“Your Rights During a Police Stop”</em> (includes step-by-step script), <em>“How to Register to Vote”</em> (with state-specific checklist), and <em>“Understanding Due Process Notices”</em> (explains what “notice” and “opportunity to be heard” mean in practice). All guides are vetted by two attorneys and updated quarterly. No signup required; available as PDF and mobile-friendly web page.</p>
</div>
<div class="resource-card">
<h4>Trending Issues</h4>
<p>Current focus areas (2024): Clarifying voter ID law language for consistent county implementation; assessing local zoning codes for affordable housing impact (using feasibility checklists); updating emergency management communication protocols to include clear public notice standards. See linked policy briefs for latest analysis, data sources, and plain-language summaries.</p>
</div>
</aside>
<footer class="container footer">
<div class="footer-container">
<img src="https://i.pravatar.cc/40?u=vc" alt="Veritas Civic Team representative" class="contact-avatar">
<h4>Veritas Civic</h4>
<p>123 Civic Way, Suite 100 | Washington, DC 20001</p>
<p>Phone: (202) 555-0123 | Email: info@veritascivic.org</p>
<div class="social-links">
<a href="#">Twitter</a>
<a href="#">Facebook</a>
<a href="#">Instagram</a>
</div>
<p>© 2024 Veritas Civic. All rights reserved.</p>
<nav class="footer-nav">
<a href="/privacy">Privacy Policy</a>
<a href="/terms">Terms of Use</a>
<a href="/contact">Contact</a>
</nav>
</div>
</footer>
<script>
// Policy Snapshot Comparator - simple, non-intrusive, client-side only
const compButtons = document.querySelectorAll('.comp-btn');
const resultDiv = document.getElementById('comparison-result');
compButtons.forEach(btn => {
btn.addEventListener('click', function() {
// Determine which option this button belongs to (A or B)
const label = btn.parentElement.querySelector('label');
const currentOption = label.innerText.includes('Option A') ? 'A' : 'B';
// Show comparison between currentOption and the other option
showComparison(currentOption);
// Toggle active state for visual feedback
compButtons.forEach(b => b.classList.remove('active'));
this.classList.add('active');
});
});
function showComparison(currentOption) {
const otherOption = currentOption === 'A' ? 'B' : 'A';
// Predefined, realistic comparison text (uses actual terminology, no bias)
resultDiv.innerHTML = `
<h4>Option ${currentOption} vs Option ${otherOption}</h4>
<p><strong>Option A: Community Safety Initiative</strong><br>
• Increases community policing hours in high-crime zones (e.g., +20% patrol coverage in designated districts).<br>
• Uses data-driven patrol routing based on historical incident hotspots (verified with city crime data).<br>
• Feasibility: Moderate – requires modest reallocation of existing patrol budget (~5% shift); no new facilities needed.<br>
• Civil Liberty Note: Includes a publicly accessible community oversight board (minimum 5 members, rotating terms); prohibits door-to-door questioning without reasonable suspicion; no surveillance mandates. All patrol interactions logged with timestamp and officer ID (accessible via public portal).</p>
<p><strong>Option B: Expanded Voting Access</strong><br>
• Provides free mail-in ballot kits to all registered voters (includes pre-addressed envelope, voter ID guide, and tracking link).<br>
• Establishes two mobile voting units for rural ZIP codes (serves areas with >30% population over 65 or limited transportation access).<br>
• Feasibility: High – builds on existing mail infrastructure; mobile units use repurposed county fairgrounds space; cost aligns with standard absentee ballot program (~$0.80 per voter). No new legislation required for mail component; mobile units require only county logistics coordination.<br>
• Civil Liberty Note: Maintains current voter ID law (ID must be valid for voting), but provides free ID assistance at county clerk offices and via phone; ballot security includes chain-of-custody logging and independent verification; all voting locations (polling sites + mobile units) use consistent signage with clear operating hours and accessibility info.</p>
<p><em>Summary (non-partisan): Option B directly addresses documented voter access barriers (per 2023 state elections office report: 18% of eligible rural voters report difficulty accessing polling places), with high feasibility due to existing mail infrastructure and low additional cost. Option A targets safety through evidence-based patrol adjustments with moderate budget impact and built-in community oversight. Both options respect constitutional due process requirements (notice, opportunity to be heard, neutral decision-making) as affirmed in recent circuit court rulings. Choice depends on local priority (access vs safety) and available budget cycle timing (mail component can launch in next registration period; patrol adjustment can be phased over 6 months).</em></p>
<button class="cta-btn">View Detailed Brief</button>
`;
}
// Ensure no active button on load (selector visible, result empty initially)
// No auto-display of result; user must click "View vs..." button to see comparison.
</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:54:47.562Z",
"url": "https://benchmark.aimac.invalid/c41de9837e6e577ba34398eac8d2d08b6d07e5c25a83b49457a43f8e6f2b761c.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-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": []
},
{
"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-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": []
},
{
"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-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": []
},
{
"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": "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": []
},
{
"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": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "avoid-inline-spacing",
"impact": null,
"tags": [
"cat.structure",
"wcag21aa",
"wcag1412",
"EN-301-549",
"EN-9.1.4.12",
"ACT"
],
"description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
"help": "Inline text spacing must be adjustable with custom stylesheets",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": []
},
{
"id": "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": []
},
{
"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": "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": []
},
{
"id": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": []
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": []
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-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": "button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure buttons have discernible text",
"help": "Buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has inner text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"cta-btn\">Request a Policy Brief</button>",
"target": [
"#policy-briefs > .cta-btn"
]
}
]
},
{
"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": "<h2>Policy Analysis & Briefs</h2>",
"target": [
"#policy-briefs > h2"
]
},
{
"html": "<h2>Civil Liberties & Due Process</h2>",
"target": [
"#civil-liberties > h2"
]
},
{
"html": "<h2>Voter Information Hub</h2>",
"target": [
"#voter-guide > h2"
]
},
{
"html": "<h2>Get Involved</h2>",
"target": [
"#get-involved > h2"
]
},
{
"html": "<h3>Sign a Petition</h3>",
"target": [
".feature-card:nth-child(1) > h3"
]
},
{
"html": "<h3>Join Advocacy Hub</h3>",
"target": [
".feature-card:nth-child(2) > h3"
]
},
{
"html": "<h3>Request Legal Aid</h3>",
"target": [
".feature-card:nth-child(3) > h3"
]
},
{
"html": "<h3>Policy Snapshot Comparator</h3>",
"target": [
"#policy-comparator > h3"
]
},
{
"html": "<h3>Quick Resources</h3>",
"target": [
"aside > h3"
]
},
{
"html": "<h4>Recent Advocacy Wins</h4>",
"target": [
".resource-card:nth-child(2) > h4"
]
},
{
"html": "<h4>Free Legal Resources</h4>",
"target": [
".resource-card:nth-child(3) > h4"
]
},
{
"html": "<h4>Trending Issues</h4>",
"target": [
".resource-card:nth-child(4) > h4"
]
},
{
"html": "<h4>Veritas Civic</h4>",
"target": [
".footer-container > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main class=\"container\">",
"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": "#348090",
"contrastRatio": 4.52,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 4.52"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#research\">Research</a>",
"target": [
"a[href$=\"#research\"]"
]
}
]
},
{
"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": "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/150x150/348090/ffffff?text=VC&font=lato\" alt=\"Veritas Civic Logo\" class=\"logo\">",
"target": [
".logo"
]
}
]
},
{
"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=\"#research\">Research</a>",
"target": [
"a[href$=\"#research\"]"
]
}
]
},
{
"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/150x150/348090/ffffff?text=VC&font=lato\" alt=\"Veritas Civic Logo\" class=\"logo\">",
"target": [
".logo"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-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=\"#research\">Research</a>",
"target": [
"a[href$=\"#research\"]"
]
}
]
}
],
"incomplete": [],
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#3498db",
"contrastRatio": 3.15,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"cta-btn\">Request a Policy Brief</button>",
"target": [
"#policy-briefs > .cta-btn"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"cta-btn\">Request a Policy Brief</button>",
"target": [
"#policy-briefs > .cta-btn"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#3498db",
"contrastRatio": 3.15,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"cta-btn\">Get Your Rights Guide</button>",
"target": [
"#civil-liberties > .cta-btn"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"cta-btn\">Get Your Rights Guide</button>",
"target": [
"#civil-liberties > .cta-btn"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#3498db",
"contrastRatio": 3.15,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"cta-btn\">Check My Voter Status</button>",
"target": [
"#voter-guide > .cta-btn"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"cta-btn\">Check My Voter Status</button>",
"target": [
"#voter-guide > .cta-btn"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#348090",
"bgColor": "#f8f9fa",
"contrastRatio": 4.29,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"feature-card\">",
"target": [
".feature-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.29 (foreground color: #348090, background color: #f8f9fa, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h3>Sign a Petition</h3>",
"target": [
".feature-card:nth-child(1) > h3"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.29 (foreground color: #348090, background color: #f8f9fa, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#3498db",
"contrastRatio": 3.15,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"cta-btn\">Sign Petition</button>",
"target": [
".feature-card:nth-child(1) > .cta-btn"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"cta-btn\">Sign Petition</button>",
"target": [
".feature-card:nth-child(1) > .cta-btn"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#348090",
"bgColor": "#f8f9fa",
"contrastRatio": 4.29,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"feature-card\">",
"target": [
".feature-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.29 (foreground color: #348090, background color: #f8f9fa, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h3>Join Advocacy Hub</h3>",
"target": [
".feature-card:nth-child(2) > h3"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.29 (foreground color: #348090, background color: #f8f9fa, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#3498db",
"contrastRatio": 3.15,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"cta-btn\">Join Advocacy</button>",
"target": [
".feature-card:nth-child(2) > .cta-btn"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"cta-btn\">Join Advocacy</button>",
"target": [
".feature-card:nth-child(2) > .cta-btn"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#348090",
"bgColor": "#f8f9fa",
"contrastRatio": 4.29,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"feature-card\">",
"target": [
".feature-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.29 (foreground color: #348090, background color: #f8f9fa, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h3>Request Legal Aid</h3>",
"target": [
".feature-card:nth-child(3) > h3"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.29 (foreground color: #348090, background color: #f8f9fa, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#3498db",
"contrastRatio": 3.15,
"fontSize": "10.0pt (13.3333px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"cta-btn\">Request Legal Aid</button>",
"target": [
".feature-card:nth-child(3) > .cta-btn"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"cta-btn\">Request Legal Aid</button>",
"target": [
".feature-card:nth-child(3) > .cta-btn"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.15 (foreground color: #ffffff, background color: #3498db, font size: 10.0pt (13.3333px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#348090",
"bgColor": "#f0f4f8",
"contrastRatio": 4.09,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"sidebar container\">",
"target": [
"aside"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.09 (foreground color: #348090, background color: #f0f4f8, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h4>Recent Advocacy Wins</h4>",
"target": [
".resource-card:nth-child(2) > h4"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.09 (foreground color: #348090, background color: #f0f4f8, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#348090",
"bgColor": "#f0f4f8",
"contrastRatio": 4.09,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"sidebar container\">",
"target": [
"aside"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.09 (foreground color: #348090, background color: #f0f4f8, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h4>Free Legal Resources</h4>",
"target": [
".resource-card:nth-child(3) > h4"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.09 (foreground color: #348090, background color: #f0f4f8, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#348090",
"bgColor": "#f0f4f8",
"contrastRatio": 4.09,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<aside class=\"sidebar container\">",
"target": [
"aside"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.09 (foreground color: #348090, background color: #f0f4f8, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h4>Trending Issues</h4>",
"target": [
".resource-card:nth-child(4) > h4"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.09 (foreground color: #348090, background color: #f0f4f8, font size: 13.2pt (17.6px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#dddddd",
"bgColor": "#348090",
"contrastRatio": 3.33,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"container footer\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.33 (foreground color: #dddddd, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\">Twitter</a>",
"target": [
"a[href=\"#\"]:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.33 (foreground color: #dddddd, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#dddddd",
"bgColor": "#348090",
"contrastRatio": 3.33,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"container footer\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.33 (foreground color: #dddddd, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\">Facebook</a>",
"target": [
"a[href=\"#\"]:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.33 (foreground color: #dddddd, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#dddddd",
"bgColor": "#348090",
"contrastRatio": 3.33,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"container footer\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.33 (foreground color: #dddddd, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\">Instagram</a>",
"target": [
"a[href=\"#\"]:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.33 (foreground color: #dddddd, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#bbbbbb",
"bgColor": "#348090",
"contrastRatio": 2.35,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"container footer\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.35 (foreground color: #bbbbbb, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"/privacy\">Privacy Policy</a>",
"target": [
"a[href$=\"privacy\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.35 (foreground color: #bbbbbb, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#bbbbbb",
"bgColor": "#348090",
"contrastRatio": 2.35,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"container footer\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.35 (foreground color: #bbbbbb, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"/terms\">Terms of Use</a>",
"target": [
"a[href$=\"terms\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.35 (foreground color: #bbbbbb, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#bbbbbb",
"bgColor": "#348090",
"contrastRatio": 2.35,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"container footer\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.35 (foreground color: #bbbbbb, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"/contact\">Contact</a>",
"target": [
"a[href$=\"contact\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.35 (foreground color: #bbbbbb, background color: #348090, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 3940
},
{
"y": 576,
"height": 3940
},
{
"y": 1152,
"height": 3940
},
{
"y": 1728,
"height": 3940
},
{
"y": 2304,
"height": 3940
},
{
"y": 2880,
"height": 3940
},
{
"y": 3220,
"height": 3940
}
],
"scans": 8,
"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: "Research", "About", "Donate".
- **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: "Policy Analysis", "Civil Liberties", "Voter Information".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "litigation", "referendum", "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: "Sign Petition", "Join Advocacy", "Get Legal Aid".
- **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: "policy comparison".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "advocacy wins", "legal resources", "trending issues".
- **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.