NVIDIA Nemotron 3 Ultra – Society
via BaseTen · Generated
- AIMAC Debt 11.05
- Cost $0.05
- Total Violations 71
- HTML Size 66 KB
- Em Dashes 1
Screenshot
View Live Page
Accessibility Issues Found
1 Critical 70 Serious
-
aria-required-children critical 1 instance
Certain ARIA roles must contain particular children
Example HTML
<div class="social-links" role="list" aria-label="Social Media Links"> -
color-contrast serious 70 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<a href="#join" class="cta-nav">Join Us</a>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Common Ground Collective: Building bridges across divides through grassroots advocacy, community storytelling, and collective action. Join the movement.">
<title>Common Ground Collective | Advocacy, Community, Action</title>
<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@300;400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,600;1,400&display=swap" rel="stylesheet">
<style>
/* --- CSS Variables & Reset --- */
:root {
--color-primary: #2c3e50; /* Deep Slate */
--color-secondary: #e67e22; /* Terracotta/Orange */
--color-accent: #27ae60; /* Emerald Green */
--color-bg: #fdfbf7; /* Warm White */
--color-surface: #ffffff;
--color-text: #34495e;
--color-text-light: #7f8c8d;
--color-border: #ecf0f1;
--font-heading: 'Playfair Display', Georgia, serif;
--font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
--max-width: 1200px;
--header-height: 72px;
--transition-base: 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
--shadow-sm: 0 2px 8px rgba(0,0,0,0.04);
--shadow-md: 0 8px 24px rgba(0,0,0,0.06);
--shadow-lg: 0 16px 48px rgba(0,0,0,0.08);
--radius-sm: 6px;
--radius-md: 12px;
--radius-lg: 24px;
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; scroll-padding-top: var(--header-height); }
body { font-family: var(--font-body); background-color: var(--color-bg); color: var(--color-text); line-height: 1.7; font-size: 16px; -webkit-font-smoothing: antialiased; }
img { max-width: 100%; height: auto; display: block; border-radius: var(--radius-md); }
a { color: var(--color-primary); text-decoration: none; transition: color var(--transition-base); }
a:hover { color: var(--color-secondary); }
ul { list-style: none; }
h1, h2, h3, h4 { font-family: var(--font-heading); font-weight: 600; line-height: 1.3; color: var(--color-primary); }
h1 { font-size: clamp(2.5rem, 5vw, 4rem); }
h2 { font-size: clamp(1.8rem, 3.5vw, 2.5rem); margin-bottom: 1rem; }
h3 { font-size: 1.25rem; margin-bottom: 0.5rem; }
p { margin-bottom: 1rem; color: var(--color-text); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
/* --- Layout Containers --- */
.container { width: 100%; max-width: var(--max-width); margin: 0 auto; padding: 0 1.5rem; }
.page-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; padding: 4rem 0; }
@media (min-width: 992px) { .page-grid { grid-template-columns: minmax(0, 1fr) 320px; } }
/* --- Header & Navigation --- */
.site-header { position: fixed; top: 0; left: 0; right: 0; height: var(--header-height); background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(12px); border-bottom: 1px solid var(--color-border); z-index: 1000; transition: box-shadow var(--transition-base); }
.site-header.scrolled { box-shadow: var(--shadow-md); }
.header-inner { display: flex; align-items: center; justify-content: space-between; height: 100%; }
.logo { display: flex; align-items: center; gap: 0.75rem; font-family: var(--font-heading); font-size: 1.25rem; font-weight: 600; color: var(--color-primary); text-decoration: none; }
.logo:hover { color: var(--color-primary); }
.logo-img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; border: 2px solid var(--color-secondary); }
.main-nav { display: none; gap: 0.5rem; }
.main-nav a { padding: 0.5rem 1rem; border-radius: var(--radius-sm); font-weight: 500; font-size: 0.9rem; color: var(--color-text); transition: all var(--transition-base); }
.main-nav a:hover, .main-nav a.active { background: var(--color-primary); color: var(--color-surface); }
.main-nav a.cta-nav { background: var(--color-secondary); color: white; }
.main-nav a.cta-nav:hover { background: #d35400; color: white; }
.mobile-menu-btn { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; background: none; border: none; cursor: pointer; padding: 0; }
.mobile-menu-btn span { display: block; width: 24px; height: 2px; background: var(--color-primary); position: relative; transition: background var(--transition-base); }
.mobile-menu-btn span::before, .mobile-menu-btn span::after { content: ''; position: absolute; left: 0; width: 100%; height: 2px; background: var(--color-primary); transition: transform var(--transition-base); }
.mobile-menu-btn span::before { top: -7px; }
.mobile-menu-btn span::after { bottom: -7px; }
.mobile-menu-btn[aria-expanded="true"] span { background: transparent; }
.mobile-menu-btn[aria-expanded="true"] span::before { transform: rotate(45deg) translate(5px, 5px); }
.mobile-menu-btn[aria-expanded="true"] span::after { transform: rotate(-45deg) translate(5px, -5px); }
@media (min-width: 768px) { .main-nav { display: flex; } .mobile-menu-btn { display: none; } }
/* --- Hero Section --- */
.hero { position: relative; min-height: 100vh; display: flex; align-items: center; justify-content: center; text-align: center; padding: calc(var(--header-height) + 2rem) 1.5rem 4rem; overflow: hidden; background: linear-gradient(180deg, var(--color-bg) 0%, #f4f1eb 100%); }
.hero-bg { position: absolute; inset: 0; z-index: -1; opacity: 0.15; background-image: url('https://picsum.photos/seed/community-hero/1920/1080'); background-size: cover; background-position: center; }
.hero-content { max-width: 800px; position: relative; z-index: 1; }
.hero-tag { display: inline-block; background: var(--color-primary); color: white; padding: 0.5rem 1.25rem; border-radius: 100px; font-size: 0.85rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; margin-bottom: 1.5rem; animation: fadeUp 0.8s ease-out; }
.hero h1 { margin-bottom: 1.5rem; animation: fadeUp 0.8s ease-out 0.1s both; }
.hero .lead { font-size: clamp(1.1rem, 2vw, 1.35rem); color: var(--color-text-light); margin-bottom: 2.5rem; max-width: 60ch; margin-left: auto; margin-right: auto; animation: fadeUp 0.8s ease-out 0.2s both; }
.hero-ctas { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; animation: fadeUp 0.8s ease-out 0.3s both; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.875rem 2rem; border-radius: var(--radius-md); font-weight: 600; font-size: 0.95rem; border: 2px solid transparent; cursor: pointer; transition: all var(--transition-base); text-decoration: none; }
.btn-primary { background: var(--color-primary); color: white; border-color: var(--color-primary); }
.btn-primary:hover { background: #1a252f; border-color: #1a252f; transform: translateY(-2px); box-shadow: var(--shadow-md); color: white; }
.btn-secondary { background: transparent; color: var(--color-primary); border-color: var(--color-primary); }
.btn-secondary:hover { background: var(--color-primary); color: white; transform: translateY(-2px); }
.btn-accent { background: var(--color-accent); color: white; border-color: var(--color-accent); }
.btn-accent:hover { background: #219653; border-color: #219653; color: white; }
.btn-lg { padding: 1rem 2.5rem; font-size: 1rem; }
@keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
/* --- Section Styling --- */
.section { padding: 5rem 0; }
.section-header { text-align: center; max-width: 700px; margin: 0 auto 3rem; }
.section-header .subhead { display: inline-block; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-secondary); margin-bottom: 0.75rem; }
.section-header p { color: var(--color-text-light); font-size: 1.1rem; }
/* --- Feature Grid (Campaigns) --- */
.feature-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 640px) { .feature-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 992px) { .feature-grid { grid-template-columns: repeat(3, 1fr); } }
.feature-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); overflow: hidden; transition: transform var(--transition-base), box-shadow var(--transition-base); display: flex; flex-direction: column; }
.feature-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }
.feature-card img { aspect-ratio: 16/10; object-fit: cover; border-radius: 0; }
.feature-card-body { padding: 1.5rem; display: flex; flex-direction: column; flex-grow: 1; }
.feature-tag { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--color-accent); background: rgba(39, 174, 96, 0.1); padding: 0.25rem 0.75rem; border-radius: 100px; width: fit-content; margin-bottom: 0.75rem; }
.feature-card h3 { font-size: 1.15rem; margin-bottom: 0.5rem; }
.feature-card p { font-size: 0.95rem; color: var(--color-text-light); flex-grow: 1; margin-bottom: 1rem; }
.feature-link { font-weight: 600; font-size: 0.9rem; display: inline-flex; align-items: center; gap: 0.35rem; color: var(--color-primary); }
.feature-link svg { transition: transform var(--transition-base); }
.feature-link:hover svg { transform: translateX(4px); }
/* --- Testimonials / Community Voices --- */
.testimonial-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .testimonial-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .testimonial-grid { grid-template-columns: repeat(3, 1fr); } }
.testimonial-card { background: var(--color-surface); padding: 2rem; border-radius: var(--radius-lg); border: 1px solid var(--color-border); position: relative; }
.testimonial-card::before { content: '“'; font-family: var(--font-heading); font-size: 5rem; color: var(--color-secondary); opacity: 0.15; position: absolute; top: 1rem; left: 1.5rem; line-height: 1; z-index: 0; }
.testimonial-content { position: relative; z-index: 1; margin-bottom: 1.5rem; }
.testimonial-content p { font-style: italic; color: var(--color-text); margin-bottom: 0; font-size: 1rem; line-height: 1.8; }
.testimonial-author { display: flex; align-items: center; gap: 1rem; }
.testimonial-author img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; border: 3px solid var(--color-bg); box-shadow: var(--shadow-sm); }
.author-info strong { display: block; font-family: var(--font-body); font-weight: 600; color: var(--color-primary); }
.author-info span { font-size: 0.85rem; color: var(--color-text-light); }
/* --- Resource Hub / Accordion --- */
.accordion { max-width: 800px; margin: 0 auto; }
.accordion-item { border: 1px solid var(--color-border); border-radius: var(--radius-md); margin-bottom: 0.75rem; background: var(--color-surface); overflow: hidden; }
.accordion-header { width: 100%; display: flex; justify-content: space-between; align-items: center; padding: 1.25rem 1.5rem; background: none; border: none; text-align: left; font-family: var(--font-heading); font-size: 1.1rem; font-weight: 600; color: var(--color-primary); cursor: pointer; transition: background var(--transition-base); }
.accordion-header:hover { background: var(--color-bg); }
.accordion-header[aria-expanded="true"] { background: var(--color-primary); color: white; }
.accordion-header[aria-expanded="true"] .icon { transform: rotate(180deg); }
.accordion-header .icon { transition: transform var(--transition-base); flex-shrink: 0; margin-left: 1rem; }
.accordion-panel { max-height: 0; overflow: hidden; transition: max-height 0.4s ease, padding 0.4s ease; }
.accordion-panel.open { max-height: 500px; padding: 0 1.5rem 1.5rem; }
.accordion-panel .prose { color: var(--color-text-light); font-size: 0.95rem; line-height: 1.8; }
.accordion-panel .prose strong { color: var(--color-primary); }
.accordion-panel ul { margin: 1rem 0 1rem 1.5rem; list-style: disc; color: var(--color-text-light); }
.accordion-panel li { margin-bottom: 0.5rem; }
/* --- Interactive: Volunteer Matcher --- */
.matcher-section { background: var(--color-primary); color: white; border-radius: var(--radius-lg); padding: 3rem 1.5rem; text-align: center; position: relative; overflow: hidden; }
.matcher-section::before { content: ''; position: absolute; inset: 0; background: url('https://picsum.photos/seed/volunteer-bg/1200/800') center/cover; opacity: 0.08; }
.matcher-section .section-header { position: relative; z-index: 1; }
.matcher-section .subhead { color: var(--color-secondary); }
.matcher-section h2 { color: white; }
.matcher-section .section-header p { color: rgba(255,255,255,0.7); }
.matcher-form { max-width: 600px; margin: 2rem auto 0; display: flex; flex-direction: column; gap: 1rem; text-align: left; position: relative; z-index: 1; }
.form-row { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 600px) { .form-row { grid-template-columns: 1fr 1fr; } }
.form-group { display: flex; flex-direction: column; gap: 0.35rem; }
.form-group label { font-weight: 500; font-size: 0.9rem; color: rgba(255,255,255,0.9); }
.form-group select, .form-group input { padding: 0.875rem 1rem; border-radius: var(--radius-sm); border: 1px solid rgba(255,255,255,0.2); background: rgba(255,255,255,0.05); color: white; font-family: inherit; font-size: 1rem; transition: border-color var(--transition-base), box-shadow var(--transition-base); }
.form-group select:focus, .form-group input:focus { outline: none; border-color: var(--color-secondary); box-shadow: 0 0 0 3px rgba(230, 126, 34, 0.3); }
.form-group select option { background: var(--color-primary); color: var(--color-text); }
.matcher-results { display: none; margin-top: 2rem; padding-top: 2rem; border-top: 1px solid rgba(255,255,255,0.1); text-align: left; }
.matcher-results.visible { display: block; animation: fadeUp 0.5s ease; }
.result-card { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); padding: 1.5rem; border-radius: var(--radius-md); margin-bottom: 1rem; }
.result-card h4 { color: var(--color-secondary); margin-bottom: 0.5rem; font-size: 1.1rem; }
.result-card p { color: rgba(255,255,255,0.8); font-size: 0.9rem; margin-bottom: 1rem; }
.result-meta { display: flex; flex-wrap: wrap; gap: 0.5rem; font-size: 0.75rem; margin-bottom: 1rem; }
.badge { background: rgba(255,255,255,0.1); padding: 0.25rem 0.6rem; border-radius: 100px; color: rgba(255,255,255,0.9); }
/* --- Events Section --- */
.events-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .events-grid { grid-template-columns: repeat(2, 1fr); } }
.event-card { display: grid; grid-template-columns: 1fr; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); overflow: hidden; transition: box-shadow var(--transition-base); }
.event-card:hover { box-shadow: var(--shadow-md); }
@media (min-width: 560px) { .event-card { grid-template-columns: 180px 1fr; } }
.event-date { background: var(--color-primary); color: white; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 1.5rem; text-align: center; min-width: 180px; }
.event-date .day { font-size: 3rem; font-weight: 700; line-height: 1; font-family: var(--font-body); }
.event-date .month { font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.1em; opacity: 0.8; }
.event-details { padding: 1.5rem; display: flex; flex-direction: column; justify-content: center; }
.event-details .event-tag { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; color: var(--color-accent); background: rgba(39, 174, 96, 0.1); padding: 0.2rem 0.6rem; border-radius: 100px; width: fit-content; margin-bottom: 0.5rem; }
.event-details h3 { font-size: 1.2rem; margin-bottom: 0.5rem; }
.event-details p { font-size: 0.9rem; color: var(--color-text-light); margin-bottom: 1rem; flex-grow: 1; }
.event-meta { display: flex; flex-wrap: wrap; gap: 1rem; font-size: 0.8rem; color: var(--color-text-light); margin-bottom: 1rem; }
.event-meta span { display: flex; align-items: center; gap: 0.35rem; }
.event-meta svg { width: 16px; height: 16px; opacity: 0.6; }
/* --- Sidebar --- */
.sidebar { display: flex; flex-direction: column; gap: 2rem; position: sticky; top: calc(var(--header-height) + 2rem); max-height: calc(100vh - var(--header-height) - 4rem); overflow-y: auto; padding-right: 0.5rem; }
.sidebar-widget { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 1.5rem; }
.sidebar-widget h4 { font-size: 1rem; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--color-border); display: flex; align-items: center; gap: 0.5rem; }
.sidebar-widget h4 svg { color: var(--color-secondary); }
.action-list { display: flex; flex-direction: column; gap: 0.75rem; }
.action-item { display: flex; align-items: flex-start; gap: 0.75rem; padding: 0.75rem; background: var(--color-bg); border-radius: var(--radius-md); transition: background var(--transition-base); border: 1px solid transparent; }
.action-item:hover { background: #f4f1eb; border-color: var(--color-border); }
.action-icon { width: 36px; height: 36px; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: var(--color-primary); color: white; }
.action-icon.orange { background: var(--color-secondary); }
.action-icon.green { background: var(--color-accent); }
.action-text strong { display: block; font-size: 0.85rem; font-family: var(--font-body); color: var(--color-primary); margin-bottom: 0.15rem; }
.action-text span { font-size: 0.75rem; color: var(--color-text-light); }
.news-item { padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--color-border); }
.news-item:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.news-item time { font-size: 0.75rem; color: var(--color-text-light); display: block; margin-bottom: 0.25rem; }
.news-item a { font-weight: 500; font-size: 0.85rem; line-height: 1.5; }
.spotlight-card { text-align: center; }
.spotlight-card img { width: 80px; height: 80px; border-radius: 50%; margin: 0 auto 1rem; border: 3px solid var(--color-secondary); }
.spotlight-card strong { display: block; font-family: var(--font-body); color: var(--color-primary); }
.spotlight-card span { font-size: 0.8rem; color: var(--color-text-light); display: block; margin-bottom: 1rem; }
.spotlight-card .btn { width: 100%; padding: 0.6rem 1rem; font-size: 0.85rem; }
/* --- Footer --- */
.site-footer { background: var(--color-primary); color: rgba(255,255,255,0.7); padding: 4rem 1.5rem 2rem; margin-top: 4rem; }
.footer-grid { display: grid; grid-template-columns: 1fr; gap: 2.5rem; max-width: var(--max-width); margin: 0 auto 3rem; }
@media (min-width: 640px) { .footer-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 992px) { .footer-grid { grid-template-columns: 2fr repeat(3, 1fr); } }
.footer-brand .logo { color: white; margin-bottom: 1rem; display: inline-flex; }
.footer-brand .logo-img { border-color: var(--color-secondary); }
.footer-brand p { font-size: 0.95rem; line-height: 1.8; margin-bottom: 1.5rem; }
.social-links { display: flex; gap: 1rem; }
.social-links a { width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,0.1); display: flex; align-items: center; justify-content: center; color: white; transition: all var(--transition-base); }
.social-links a:hover { background: var(--color-secondary); transform: translateY(-2px); color: white; }
.footer-col h5 { color: white; font-family: var(--font-body); font-weight: 600; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 1.25rem; }
.footer-col ul { display: flex; flex-direction: column; gap: 0.6rem; }
.footer-col a { color: rgba(255,255,255,0.7); font-size: 0.9rem; }
.footer-col a:hover { color: var(--color-secondary); padding-left: 4px; }
.footer-bottom { border-top: 1px solid rgba(255,255,255,0.1); padding-top: 2rem; text-align: center; font-size: 0.85rem; max-width: var(--max-width); margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 1rem; }
@media (min-width: 640px) { .footer-bottom { flex-direction: row; justify-content: space-between; } }
.footer-legal a { margin-left: 1.5rem; }
.footer-legal a:first-child { margin-left: 0; }
/* --- Utilities --- */
.visually-hidden { position: absolute !important; height: 1px; width: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }
.text-center { text-align: center; }
.mt-2 { margin-top: 2rem; }
/* Scroll Reveal */
.reveal { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease, transform 0.6s ease; }
.reveal.visible { opacity: 1; transform: translateY(0); }
</style>
</head>
<body>
<header class="site-header" role="banner">
<div class="container header-inner">
<a href="#" class="logo" aria-label="Common Ground Collective Home">
<img src="https://placehold.co/80x80/2c3e50/ffffff?text=CG&font=playfair+display" alt="" class="logo-img" aria-hidden="true">
<span>Common Ground Collective</span>
</a>
<nav class="main-nav" role="navigation" aria-label="Main Navigation">
<a href="#home" class="active" aria-current="page">Home</a>
<a href="#issues">Issues</a>
<a href="#campaigns">Campaigns</a>
<a href="#events">Events</a>
<a href="#resources">Resources</a>
<a href="#about">About</a>
<a href="#join" class="cta-nav">Join Us</a>
</nav>
<button class="mobile-menu-btn" aria-expanded="false" aria-controls="mobile-menu" aria-label="Toggle navigation menu">
<span></span>
</button>
</div>
<!-- Mobile Menu Overlay -->
<div id="mobile-menu" class="mobile-menu-overlay" role="dialog" aria-modal="true" aria-label="Navigation Menu" hidden>
<nav class="mobile-nav">
<a href="#home">Home</a>
<a href="#issues">Issues</a>
<a href="#campaigns">Campaigns</a>
<a href="#events">Events</a>
<a href="#resources">Resources</a>
<a href="#about">About Us</a>
<a href="#join" class="btn btn-primary" style="margin-top: 1rem; text-align: center;">Join Us</a>
</nav>
</div>
</header>
<main id="main-content" role="main">
<!-- Hero Section -->
<section id="home" class="hero" aria-labelledby="hero-title">
<div class="hero-bg" aria-hidden="true"></div>
<div class="hero-content container">
<span class="hero-tag">Est. 2018 · 50+ Communities Served</span>
<h1 id="hero-title">Where Divides Become Bridges</h1>
<p class="lead">We mobilize grassroots coalitions to tackle systemic inequity through collective action, radical listening, and sustainable community investment. Your voice shapes the future.</p>
<div class="hero-ctas">
<a href="#matcher" class="btn btn-primary btn-lg">Find Your Role</a>
<a href="#campaigns" class="btn btn-secondary btn-lg">Active Campaigns</a>
</div>
</div>
</section>
<!-- Active Campaigns Section -->
<section id="campaigns" class="section reveal" aria-labelledby="campaigns-title">
<div class="container">
<header class="section-header">
<span class="subhead">Current Focus</span>
<h2 id="campaigns-title">Campaigns Driving Systemic Change</h2>
<p>We don't just advocate; we organize. Each campaign below represents a coalition of local leaders, policy experts, and everyday citizens pushing for legislative wins and cultural shifts.</p>
</header>
<div class="feature-grid">
<!-- Campaign 1 -->
<article class="feature-card reveal">
<img src="https://picsum.photos/seed/housing-justice/600/375" alt="Community members at a town hall meeting discussing housing policy" loading="lazy">
<div class="feature-card-body">
<span class="feature-tag">Housing Justice</span>
<h3>Right to Roof Coalition</h3>
<p>Fighting speculative displacement in 12 major metros. We're pushing for community land trusts, rent stabilization ordinances, and eviction defense funds backed by municipal budgets.</p>
<a href="#" class="feature-link">Join Coalition <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
</div>
</article>
<!-- Campaign 2 -->
<article class="feature-card reveal">
<img src="https://picsum.photos/seed/climate-action/600/375" alt="Urban garden volunteers planting seedlings in a reclaimed lot" loading="lazy">
<div class="feature-card-body">
<span class="feature-tag">Climate Resilience</span>
<h3>Green Corridors Initiative</h3>
<p>Transforming vacant lots into biodiversity corridors and food sovereignty hubs. This initiative connects environmental justice with workforce development in frontline communities.</p>
<a href="#" class="feature-link">Volunteer Locally <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
</div>
</article>
<!-- Campaign 3 -->
<article class="feature-card reveal">
<img src="https://picsum.photos/seed/civic-engagement/600/375" alt="Diverse group of young people registering voters at a community festival" loading="lazy">
<div class="feature-card-body">
<span class="feature-tag">Civic Participation</span>
<h3>Democracy Defense Fund</h3>
<p>Combating voter suppression through legal advocacy, multilingual voter education drives, and redistricting oversight. We empower historically marginalized electorates to claim power.</p>
<a href="#" class="feature-link">Donate to Legal Fund <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
</div>
</article>
<!-- Campaign 4 -->
<article class="feature-card reveal">
<img src="https://picsum.photos/seed/mental-health/600/375" alt="Peer support circle meeting in a bright community center room" loading="lazy">
<div class="feature-card-body">
<span class="feature-tag">Public Health</span>
<h3>Healing Together Network</h3>
<p>Decolonizing mental health access via peer-led support circles, trauma-informed practitioner training, and advocacy for Medicaid reimbursement of community health workers.</p>
<a href="#" class="feature-link">Start a Circle <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
</div>
</article>
<!-- Campaign 5 -->
<article class="feature-card reveal">
<img src="https://picsum.photos/seed/labor-rights/600/375" alt="Workers solidarity march with banners in multiple languages" loading="lazy">
<div class="feature-card-body">
<span class="feature-tag">Labor Rights</span>
<h3>Dignity at Work Campaign</h3>
<p>Supporting gig economy and domestic worker organizing for portable benefits, algorithmic transparency, and sectoral bargaining rights. Building power across the informal economy.</p>
<a href="#" class="feature-link">Sign Solidarity Pledge <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
</div>
</article>
<!-- Campaign 6 -->
<article class="feature-card reveal">
<img src="https://picsum.photos/seed/digital-rights/600/375" alt="Community workshop on digital literacy and data privacy" loading="lazy">
<div class="feature-card-body">
<span class="feature-tag">Digital Equity</span>
<h3>Open Access Futures</h3>
<p>Municipal broadband advocacy, algorithmic accountability legislation, and digital literacy curricula for seniors and rural populations. Ensuring the internet remains a public utility.</p>
<a href="#" class="feature-link">Map Your Access <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
</div>
</article>
</div>
</div>
</section>
<!-- Community Voices / Testimonials -->
<section id="voices" class="section reveal" style="background: var(--color-surface);" aria-labelledby="voices-title">
<div class="container">
<header class="section-header">
<span class="subhead">Community Voices</span>
<h2 id="voices-title">Stories from the Frontlines</h2>
<p>Real people. Real impact. These narratives illustrate the power of coalition building and the humanity at the center of every policy fight.</p>
</header>
<div class="testimonial-grid">
<article class="testimonial-card reveal">
<div class="testimonial-content">
<p>"Before the Right to Roof coalition, I felt invisible facing a no-fault eviction. The legal clinic connected me with a tenant union. We didn't just save my apartment; we passed a citywide just-cause ordinance. That is collective power."</p>
</div>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/150?u=elena-rodriguez" alt="Elena Rodriguez" loading="lazy">
<div class="author-info">
<strong>Elena Rodriguez</strong>
<span>Tenant Organizer, Oakland, CA</span>
</div>
</div>
</article>
<article class="testimonial-card reveal">
<div class="testimonial-content">
<p>"The Green Corridors project turned the empty lot next to my son's school into an outdoor classroom. I got certified in urban agroecology through their workforce pipeline. Now I manage three sites. This is what just transition looks like."</p>
</div>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/150?u=jamal-washington" alt="Jamal Washington" loading="lazy">
<div class="author-info">
<strong>Jamal Washington</strong>
<span>Urban Farmer & Educator, Detroit, MI</span>
</div>
</div>
</article>
<article class="testimonial-card reveal">
<div class="testimonial-content">
<p>"As a first-time voter with a disability, the Democracy Defense Fund's accessible voting guide was a lifeline. I volunteered for their text-bank operation last cycle. We contacted 50,000 voters in three languages. Democracy is a verb."</p>
</div>
<div class="testimonial-author">
<img src="https://i.pravatar.cc/150?u=aisha-khan" alt="Aisha Khan" loading="lazy">
<div class="author-info">
<strong>Aisha Khan</strong>
<span>Civic Engagement Lead, Atlanta, GA</span>
</div>
</div>
</article>
</div>
<div class="text-center mt-2 reveal">
<a href="#stories" class="btn btn-secondary">Read More Stories</a>
</div>
</div>
</section>
<!-- Resource Hub / Accordion -->
<section id="resources" class="section reveal" aria-labelledby="resources-title">
<div class="container">
<header class="section-header">
<span class="subhead">Knowledge Base</span>
<h2 id="resources-title">Resource Hub for Organizers</h2>
<p>Curated toolkits, legal guides, and strategic frameworks developed by our policy team and partner organizations. Open-source infrastructure for the movement.</p>
</header>
<div class="accordion" role="region" aria-label="Resource Toolkits">
<div class="accordion-item">
<button class="accordion-header" aria-expanded="false" aria-controls="panel1">
<span>Coalition Building & Power Mapping Framework</span>
<svg class="icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div id="panel1" class="accordion-panel" role="region" aria-labelledby="panel1-label">
<div class="prose">
<p><strong>Overview:</strong> A step-by-step guide to identifying stakeholders, mapping power dynamics, and structuring multi-organization coalitions that withstand political pressure.</p>
<p><strong>Includes:</strong></p>
<ul>
<li>Spectrum of Allies mapping worksheet (PDF)</li>
<li>Memorandum of Understanding (MOU) templates</li>
<li>Conflict resolution protocols for coalition governance</li>
<li>Case study: The 2023 Regional Transit Victory</li>
</ul>
<p><a href="#" style="color: var(--color-secondary); font-weight: 600;">Download Toolkit (Zip, 12MB) →</a></p>
</div>
</div>
</div>
<div class="accordion-item">
<button class="accordion-header" aria-expanded="false" aria-controls="panel2">
<span>Grassroots Fundraising & Sustainable Resourcing</span>
<svg class="icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div id="panel2" class="accordion-panel" role="region">
<div class="prose">
<p><strong>Overview:</strong> Moving beyond grant dependency. Strategies for building a resilient small-donor program, membership models, and social enterprise revenue streams aligned with mission.</p>
<p><strong>Key Modules:</strong></p>
<ul>
<li>Recurring donor acquisition funnels (Email + SMS)</li>
<li>House party fundraising playbook</li>
<li>Merchandise & ethical product guidelines</li>
<li>Compliance checklist for 501(c)(3) vs (c)(4) activities</li>
</ul>
</div>
</div>
</div>
<div class="accordion-item">
<button class="accordion-header" aria-expanded="false" aria-controls="panel3">
<span>Narrative Strategy & Strategic Communications</span>
<svg class="icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div id="panel3" class="accordion-panel" role="region">
<div class="prose">
<p><strong>Overview:</strong> Winning the battle of ideas. Frameworks for message discipline, rapid response protocols, and deep canvassing scripts that shift underlying values, not just opinions.</p>
<p><strong>Assets Included:</strong></p>
<ul>
<li>Message Box template (Values, Problem, Solution, Action)</li>
<li>Opposition research tracking spreadsheet</li>
<li>Social media crisis response flowchart</li>
<li>Deep canvass script library (Housing, Climate, Democracy)</li>
</ul>
</div>
</div>
</div>
<div class="accordion-item">
<button class="accordion-header" aria-expanded="false" aria-controls="panel4">
<span>Legal Observer & Protest Safety Protocols</span>
<svg class="icon" width="20" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div id="panel4" class="accordion-panel" role="region">
<div class="prose">
<p><strong>Overview:</strong> Know-your-rights training materials co-created with the NLG (National Lawyers Guild). Essential for any direct action or mass mobilization.</p>
<p><strong>Contents:</strong></p>
<ul>
<li>Legal Observer training manual & certification quiz</li>
<li>Arrest support & jail solidarity logistics plan</li>
<li>Digital security hygiene for organizers (Signal, VPN, metadata)</li>
<li>Printable "Know Your Rights" cards (12 Languages)</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Interactive Volunteer Matcher -->
<section id="matcher" class="section reveal" aria-labelledby="matcher-title">
<div class="container">
<div class="matcher-section">
<header class="section-header">
<span class="subhead">Get Involved</span>
<h2 id="matcher-title">Find Your Place in the Movement</h2>
<p>Answer three questions. We'll match you with hyper-local opportunities matching your skills, capacity, and passions. No spam. Just solidarity.</p>
</header>
<form class="matcher-form" id="volunteer-matcher" aria-label="Volunteer Interest Matcher">
<div class="form-row">
<div class="form-group">
<label for="interest">Primary Issue Area</label>
<select id="interest" name="interest" required>
<option value="">Select a focus...</option>
<option value="housing">Housing Justice & Tenant Rights</option>
<option value="climate">Climate Resilience & Food Sovereignty</option>
<option value="democracy">Voting Rights & Civic Engagement</option>
<option value="health">Community Health & Mutual Aid</option>
<option value="labor">Labor Rights & Worker Organizing</option>
<option value="digital">Digital Equity & Internet Freedom</option>
</select>
</div>
<div class="form-group">
<label for="capacity">Weekly Time Commitment</label>
<select id="capacity" name="capacity" required>
<option value="">Select availability...</option>
<option value="low">1-2 Hours (Micro-volunteering)</option>
<option value="medium">3-5 Hours (Core Team Member)</option>
<option value="high">5-10 Hours (Leadership Role)</option>
<option value="variable">Flexible / Event-Based</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="skills">Skill Set / Superpower</label>
<select id="skills" name="skills" required>
<option value="">Select skills...</option>
<option value="outreach">Community Outreach & Canvassing</option>
<option value="research">Policy Research & Writing</option>
<option value="tech">Tech, Data & Digital Security</option>
<option value="design">Design, Video & Storytelling</option>
<option value="legal">Legal Support & Paralegal</option>
<option value="logistics">Logistics, Events & Operations</option>
<option value="fundraising">Fundraising & Grant Writing</option>
</select>
</div>
<div class="form-group">
<label for="location">Zip Code (for Local Matches)</label>
<input type="text" id="location" name="location" placeholder="e.g., 94110" pattern="\d{5}" maxlength="5" inputmode="numeric" required>
</div>
</div>
<button type="submit" class="btn btn-accent btn-lg" style="margin-top: 0.5rem; width: 100%; max-width: 300px; align-self: center;">Find My Matches</button>
</form>
<div class="matcher-results" id="matcher-results" aria-live="polite"></div>
</div>
</div>
</section>
<!-- Events Section -->
<section id="events" class="section reveal" aria-labelledby="events-title">
<div class="container">
<header class="section-header">
<span class="subhead">Mobilize</span>
<h2 id="events-title">Upcoming Actions & Gatherings</h2>
<p>Movement building happens in rooms, on streets, and on screens. Join a training, a rally, or a strategy session near you.</p>
</header>
<div class="events-grid">
<article class="event-card reveal">
<div class="event-date"><span class="day">14</span><span class="month">Oct</span></div>
<div class="event-details">
<span class="event-tag">Training</span>
<h3>Deep Canvassing Intensive (Virtual)</h3>
<p>Master the art of values-based conversations that shift perspectives on polarizing issues. 3-session certificate course led by People's Action trainers.</p>
<div class="event-meta">
<span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg> 6:00 PM - 8:30 PM ET</span>
<span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/></svg> Zoom (Link upon RSVP)</span>
</div>
<a href="#" class="btn btn-primary" style="width: fit-content; padding: 0.6rem 1.25rem; font-size: 0.85rem;">RSVP Now</a>
</div>
</article>
<article class="event-card reveal">
<div class="event-date"><span class="day">19</span><span class="month">Oct</span></div>
<div class="event-details">
<span class="event-tag">Direct Action</span>
<h3>Rally for Rent Control: City Hall Steps</h3>
<p>Mass mobilization demanding the City Council vote on the Just Cause Eviction Ordinance. Bring signs, water, and comfortable shoes. Legal observers present.</p>
<div class="event-meta">
<span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg> 11:00 AM - 1:00 PM Local</span>
<span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> 123 Main St, Downtown</span>
</div>
<a href="#" class="btn btn-primary" style="width: fit-content; padding: 0.6rem 1.25rem; font-size: 0.85rem;">I'll Be There</a>
</div>
</article>
<article class="event-card reveal">
<div class="event-date"><span class="day">26</span><span class="month">Oct</span></div>
<div class="event-details">
<span class="event-tag">Community Build</span>
<h3>Green Corridors: Lot Transformation Day</h3>
<p>Hands-on ecological restoration. Sheet mulching, native planting, and rainwater catchment installation. Family friendly. Tools and lunch provided.</p>
<div class="event-meta">
<span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg> 9:00 AM - 2:00 PM</span>
<span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> Vacant Lot, 45th & Elm</span>
</div>
<a href="#" class="btn btn-primary" style="width: fit-content; padding: 0.6rem 1.25rem; font-size: 0.85rem;">Volunteer</a>
</div>
</article>
<article class="event-card reveal">
<div class="event-date"><span class="day">02</span><span class="month">Nov</span></div>
<div class="event-details">
<span class="event-tag">Strategy</span>
<h3>Annual Movement Assembly (Hybrid)</h3>
<p>Our yearly convergence for strategy alignment, skill shares, and relationship building across all issue areas. Childcare & interpretation provided.</p>
<div class="event-meta">
<span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg> 10:00 AM - 5:00 PM</span>
<span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> Community Arts Center / Livestream</span>
</div>
<a href="#" class="btn btn-primary" style="width: fit-content; padding: 0.6rem 1.25rem; font-size: 0.85rem;">Register</a>
</div>
</article>
</div>
<div class="text-center mt-2 reveal">
<a href="#calendar" class="btn btn-secondary">View Full Calendar</a>
</div>
</div>
</section>
</main>
<!-- Sidebar (Desktop Only) -->
<aside class="sidebar" role="complementary" aria-label="Take Action & Updates">
<div class="sidebar-widget reveal">
<h4><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x2="12" y2="4" x1="12" y1="20"/><line x1="6" y1="20" x2="6" y2="16"/></svg> Immediate Actions</h4>
<div class="action-list">
<div class="action-item">
<div class="action-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg></div>
<div class="action-text">
<strong>Submit Public Comment</strong>
<span>Deadline Oct 15: EPA Rule on Water Protections. 2 mins.</span>
</div>
</div>
<div class="action-item">
<div class="action-icon orange" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"/><path d="M8 14s1.5 2 4 2 4-2 4-2"/><line x1="9" y1="9" x2="9.01" y2="9"/><line x1="15" y1="9" x2="15.01" y2="9"/></svg></div>
<div class="action-text">
<strong>Call Your Rep</strong>
<span>Script provided: Support the PRO Act. Takes 90 seconds.</span>
</div>
</div>
<div class="action-item">
<div class="action-icon green" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div>
<div class="action-text">
<strong>Donate Monthly</strong>
<span>Sustain our legal defense fund. $15/mo = 1 eviction defense.</span>
</div>
</div>
</div>
</div>
<div class="sidebar-widget reveal">
<h4><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg> Movement Pulse</h4>
<div class="news-item">
<time datetime="2024-10-10">Oct 10, 2024</time>
<a href="#">Victory: City Council passes Tenant Opportunity to Purchase Act (TOPA) unanimously.</a>
</div>
<div class="news-item">
<time datetime="2024-10-08">Oct 8, 2024</time>
<a href="#">New Report: "Algorithmic Bias in Gig Work" released by our Tech Equity Lab.</a>
</div>
<div class="news-item">
<time datetime="2024-10-05">Oct 5, 2024</time>
<a href="#">Coalition Alert: Federal funding freeze threatens 200+ community health centers.</a>
</div>
<div class="news-item">
<time datetime="2024-10-01">Oct 1, 2024</time>
<a href="#">Op-Ed: "Why Mutual Aid Isn't Charity" by Executive Director M. Chen.</a>
</div>
</div>
<div class="sidebar-widget reveal">
<h4><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> Supporter Spotlight</h4>
<div class="spotlight-card">
<img src="https://i.pravatar.cc/150?u=marcus-johnson" alt="Marcus Johnson" loading="lazy">
<strong>Marcus Johnson</strong>
<span>Monthly Sustainer since 2020</span>
<p style="font-size: 0.85rem; color: var(--color-text-light); margin-bottom: 1rem;">"I give because this org doesn't just talk about power—it builds it from the block up. Transparent, accountable, effective."</p>
<a href="#" class="btn btn-secondary" style="font-size: 0.8rem; padding: 0.5rem;">Become a Sustainer</a>
</div>
</div>
</aside>
<footer class="site-footer" role="contentinfo">
<div class="footer-grid">
<div class="footer-brand">
<a href="#" class="logo" aria-label="Common Ground Collective Home">
<img src="https://placehold.co/80x80/2c3e50/ffffff?text=CG&font=playfair+display" alt="" class="logo-img" aria-hidden="true">
<span style="color: white;">Common Ground Collective</span>
</a>
<p>Building people power for a just, equitable, and sustainable future. We are a 501(c)(3) nonprofit organization (EIN: 12-3456789).</p>
<div class="social-links" role="list" aria-label="Social Media Links">
<a href="#" aria-label="Follow us on Twitter/X"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 9.729h-3.304l-7.15-8.256-7.176 8.256h-3.312l7.234-8.254-8.512-9.73h3.308l7.155 8.255 7.154-8.255Z"/></svg></a>
<a href="#" aria-label="Follow us on Instagram"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="20" rx="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/></svg></a>
<a href="#" aria-label="Follow us on LinkedIn"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a>
<a href="#" aria-label="Follow us on YouTube"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg></a>
</div>
</div>
<nav class="footer-col" aria-label="Organize">
<h5>Organize</h5>
<ul>
<li><a href="#campaigns">Active Campaigns</a></li>
<li><a href="#events">Events Calendar</a></li>
<li><a href="#matcher">Volunteer Matcher</a></li>
<li><a href="#">Start a Local Chapter</a></li>
<li><a href="#">Organizing Toolkits</a></li>
</ul>
</nav>
<nav class="footer-col" aria-label="Learn">
<h5>Learn</h5>
<ul>
<li><a href="#resources">Resource Hub</a></li>
<li><a href="#">Research & Reports</a></li>
<li><a href="#">Blog & Analysis</a></li>
<li><a href="#">Webinar Archive</a></li>
<li><a href="#">FAQ</a></li>
</ul>
</nav>
<nav class="footer-col" aria-label="Support">
<h5>Support</h5>
<ul>
<li><a href="#">Donate</a></li>
<li><a href="#">Monthly Sustainers</a></li>
<li><a href="#">Planned Giving</a></li>
<li><a href="#">Merchandise Store</a></li>
<li><a href="#">Corporate Partnerships</a></li>
</ul>
</nav>
</div>
<div class="footer-bottom">
<p>© 2024 Common Ground Collective. All rights reserved.</p>
<nav class="footer-legal" aria-label="Legal Links">
<a href="#">Privacy Policy</a>
<a href="#">Terms of Service</a>
<a href="#">Accessibility Statement</a>
<a href="#">Whistleblower Policy</a>
</nav>
</div>
</footer>
<script>
// --- Global Variables ---
const header = document.querySelector('.site-header');
const mobileMenuBtn = document.querySelector('.mobile-menu-btn');
const mobileMenu = document.getElementById('mobile-menu');
const mobileNavLinks = mobileMenu.querySelectorAll('a');
const accordionHeaders = document.querySelectorAll('.accordion-header');
const volunteerForm = document.getElementById('volunteer-matcher');
const matcherResults = document.getElementById('matcher-results');
const revealElements = document.querySelectorAll('.reveal');
// --- Mobile Navigation ---
mobileMenuBtn.addEventListener('click', () => {
const isExpanded = mobileMenuBtn.getAttribute('aria-expanded') === 'true';
mobileMenuBtn.setAttribute('aria-expanded', !isExpanded);
mobileMenu.hidden = isExpanded;
document.body.style.overflow = isExpanded ? '' : 'hidden';
});
mobileNavLinks.forEach(link => {
link.addEventListener('click', () => {
mobileMenuBtn.setAttribute('aria-expanded', 'false');
mobileMenu.hidden = true;
document.body.style.overflow = '';
});
});
// --- Header Scroll Effect ---
let lastScroll = 0;
window.addEventListener('scroll', () => {
const currentScroll = window.pageYOffset;
if (currentScroll > 50) {
header.classList.add('scrolled');
} else {
header.classList.remove('scrolled');
}
lastScroll = currentScroll;
}, { passive: true });
// --- Accordion Functionality ---
accordionHeaders.forEach(header => {
header.addEventListener('click', () => {
const isExpanded = header.getAttribute('aria-expanded') === 'true';
const panel = document.getElementById(header.getAttribute('aria-controls'));
// Close all others (optional: allows multiple open)
accordionHeaders.forEach(h => {
if (h !== header) {
h.setAttribute('aria-expanded', 'false');
document.getElementById(h.getAttribute('aria-controls')).classList.remove('open');
}
});
// Toggle current
header.setAttribute('aria-expanded', !isExpanded);
panel.classList.toggle('open', !isExpanded);
});
});
// --- Intersection Observer for Scroll Reveal ---
const observerOptions = {
root: null,
rootMargin: '0px 0px -50px 0px',
threshold: 0.1
};
const revealObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
revealObserver.unobserve(entry.target);
}
});
}, observerOptions);
revealElements.forEach(el => revealObserver.observe(el));
// --- Volunteer Matcher Logic ---
const opportunityData = {
housing: {
low: { outreach: { title: "Tenant Rights Flyering", desc: "Distribute multilingual 'Know Your Rights' door hangers in target neighborhoods.", meta: ["2 hrs/week", "Weekends", "Walking Required"] }, research: { title: "Eviction Court Watcher", desc: "Attend virtual hearings, log outcomes for data dashboard.", meta: ["2 hrs/week", "Remote", "Training Provided"] } },
medium: { outreach: { title: "Block Captain Coordinator", desc: "Recruit and support 5-10 block captains for building-level organizing.", meta: ["4 hrs/week", "Hybrid", "Leadership Role"] }, legal: { title: "Paralegal Support Clinic", desc: "Assist attorneys with intake for eviction defense cases.", meta: ["4 hrs/week", "In-Person", "Legal Exp Preferred"] } },
high: { logistics: { title: "Campaign Field Director", desc: "Lead local field operation for Right to Roof ballot initiative.", meta: ["15 hrs/week", "Hybrid", "Exp Required"] } }
},
climate: {
low: { outreach: { title: "Community Garden Steward", desc: "Water, weed, harvest at Green Corridor sites.", meta: ["2 hrs/week", "Outdoors", "Family Friendly"] }, tech: { title: "Air Quality Sensor Host", desc: "Host a PurpleAir sensor on your balcony/window.", meta: ["One-time setup", "Passive", "Data Sharing"] } },
medium: { design: { title: "Climate Visual Storyteller", desc: "Create infographics & reels for Green Corridors impact reports.", meta: ["4 hrs/week", "Remote", "Portfolio Required"] }, logistics: { title: "Tool Library Manager", desc: "Maintain inventory for community build days.", meta: ["3 hrs/week", "In-Person", "Organized"] } }
},
democracy: {
low: { outreach: { title: "Text Bank Volunteer", desc: "Send voter registration reminders via Spoke/HubDialer.", meta: ["1 hr/week", "Remote", "Flexible Hours"] } },
medium: { outreach: { title: "Poll Monitor Captain", desc: "Recruit & train team for Election Day protection.", meta: ["5 hrs/week (Seasonal)", "Hybrid", "Training Req"] }, legal: { title: "Voter Protection Hotline", desc: "Answer caller questions on voting rights.", meta: ["4 hrs/week", "Remote", "Legal Training"] } }
},
default: { outreach: { title: "General Support Volunteer", desc: "Help with data entry, mailings, and event setup as needed.", meta: ["Flexible", "Remote/In-Person", "All Skills Welcome"] } }
};
volunteerForm.addEventListener('submit', (e) => {
e.preventDefault();
const interest = document.getElementById('interest').value;
const capacity = document.getElementById('capacity').value;
const skills = document.getElementById('skills').value;
// const location = document.getElementById('location').value; // Could be used for API call
// Simple matching logic
const category = opportunityData[interest] || opportunityData.default;
const level = category[capacity] || category.low || category.medium || category.high;
const match = level[skills] || Object.values(level)[0] || opportunityData.default.outreach;
// Render Results
matcherResults.innerHTML = `
<h3 style="color: white; margin-bottom: 1rem; font-family: var(--font-heading);">Your Personalized Matches</h3>
<div class="result-card">
<h4>${match.title}</h4>
<p>${match.desc}</p>
<div class="result-meta">
${match.meta.map(m => `<span class="badge">${m}</span>`).join('')}
</div>
<a href="#join" class="btn btn-accent" style="font-size: 0.85rem; padding: 0.6rem 1.25rem;">Sign Up for This Role</a>
</div>
<div class="result-card" style="background: transparent; border: 1px dashed rgba(255,255,255,0.2);">
<h4>Want more options?</h4>
<p>Browse all <strong>${interest === 'default' ? 'available' : interest}</strong> opportunities or adjust your filters above.</p>
<a href="#campaigns" class="btn btn-secondary" style="font-size: 0.85rem; padding: 0.6rem 1.25rem; margin-top: 0.5rem;">View All Campaigns</a>
</div>
`;
matcherResults.classList.add('visible');
matcherResults.scrollIntoView({ behavior: 'smooth', block: 'start' });
});
// --- Smooth Scroll for Anchor Links (Fallback for older browsers) ---
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
const targetId = this.getAttribute('href');
if (targetId === '#') return;
const target = document.querySelector(targetId);
if (target) {
e.preventDefault();
const headerOffset = 80;
const elementPosition = target.getBoundingClientRect().top;
const offsetPosition = elementPosition + window.pageYOffset - headerOffset;
window.scrollTo({ top: offsetPosition, behavior: 'smooth' });
target.focus({ preventScroll: true });
}
});
});
</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:42:52.145Z",
"url": "https://benchmark.aimac.invalid/31126222a457e271a6dcd72ae5070e43456fe22d3b0b28e80f82bf7451e46099.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-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-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-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": "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=\"#\" class=\"logo\" aria-label=\"Common Ground Collective Home\">\n <img src=\"https://placehold.co/80x80/2c3e50/ffffff?text=CG&font=playfair+display\" alt=\"\" class=\"logo-img\" aria-hidden=\"true\">\n <span>Common Ground Collective</span>\n </a>",
"target": [
".header-inner > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"]"
]
}
]
},
{
"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=\"#\" class=\"logo\" aria-label=\"Common Ground Collective Home\">\n <img src=\"https://placehold.co/80x80/2c3e50/ffffff?text=CG&font=playfair+display\" alt=\"\" class=\"logo-img\" aria-hidden=\"true\">\n <span>Common Ground Collective</span>\n </a>",
"target": [
".header-inner > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"]"
]
}
]
},
{
"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": [
{
"any": [],
"all": [],
"none": [
{
"id": "deprecatedrole",
"data": null,
"relatedNodes": [],
"impact": "minor",
"message": "ARIA role is not deprecated"
}
],
"impact": null,
"html": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
}
]
},
{
"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-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": [
{
"any": [],
"all": [
{
"id": "focusable-modal-open",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements while a modal is open"
},
{
"id": "focusable-disabled",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements contained within element"
},
{
"id": "focusable-not-tabbable",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements contained within element"
}
],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/80x80/2c3e50/ffffff?text=CG&font=playfair+display\" alt=\"\" class=\"logo-img\" aria-hidden=\"true\">",
"target": [
".header-inner > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"] > .logo-img[alt=\"\"][aria-hidden=\"true\"]"
]
}
]
},
{
"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=\"#\" class=\"logo\" aria-label=\"Common Ground Collective Home\">\n <img src=\"https://placehold.co/80x80/2c3e50/ffffff?text=CG&font=playfair+display\" alt=\"\" class=\"logo-img\" aria-hidden=\"true\">\n <span>Common Ground Collective</span>\n </a>",
"target": [
".header-inner > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"]"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "aria-required-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "All required ARIA attributes are present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
}
]
},
{
"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": [
{
"any": [],
"all": [],
"none": [
{
"id": "invalidrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA role is valid"
},
{
"id": "abstractrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Abstract roles are not used"
},
{
"id": "unsupportedrole",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA role is supported"
}
],
"impact": null,
"html": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
}
]
},
{
"id": "aria-valid-attr-value",
"impact": "critical",
"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=\"#\" class=\"logo\" aria-label=\"Common Ground Collective Home\">\n <img src=\"https://placehold.co/80x80/2c3e50/ffffff?text=CG&font=playfair+display\" alt=\"\" class=\"logo-img\" aria-hidden=\"true\">\n <span>Common Ground Collective</span>\n </a>",
"target": [
".header-inner > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"]"
]
}
]
},
{
"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=\"#\" class=\"logo\" aria-label=\"Common Ground Collective Home\">\n <img src=\"https://placehold.co/80x80/2c3e50/ffffff?text=CG&font=playfair+display\" alt=\"\" class=\"logo-img\" aria-hidden=\"true\">\n <span>Common Ground Collective</span>\n </a>",
"target": [
".header-inner > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"]"
]
}
]
},
{
"id": "avoid-inline-spacing",
"impact": null,
"tags": [
"cat.structure",
"wcag21aa",
"wcag1412",
"EN-301-549",
"EN-9.1.4.12",
"ACT"
],
"description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
"help": "Inline text spacing must be adjustable with custom stylesheets",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "important-letter-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-word-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-line-height",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "line-height in the style attribute is not set to !important, or meets the minimum"
}
],
"none": [],
"impact": null,
"html": "<span style=\"color: white;\">Common Ground Collective</span>",
"target": [
".footer-brand > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"] > span"
]
}
]
},
{
"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=\"accordion-header\" aria-expanded=\"false\" aria-controls=\"panel1\">",
"target": [
"button[aria-controls=\"panel1\"]"
]
}
]
},
{
"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 id=\"hero-title\">Where Divides Become Bridges</h1>",
"target": [
"#hero-title"
]
},
{
"html": "<h2 id=\"campaigns-title\">Campaigns Driving Systemic Change</h2>",
"target": [
"#campaigns-title"
]
},
{
"html": "<h3>Right to Roof Coalition</h3>",
"target": [
".feature-card:nth-child(1) > .feature-card-body > h3"
]
},
{
"html": "<h3>Green Corridors Initiative</h3>",
"target": [
".feature-card:nth-child(2) > .feature-card-body > h3"
]
},
{
"html": "<h3>Democracy Defense Fund</h3>",
"target": [
".feature-card:nth-child(3) > .feature-card-body > h3"
]
},
{
"html": "<h3>Healing Together Network</h3>",
"target": [
".feature-card:nth-child(4) > .feature-card-body > h3"
]
},
{
"html": "<h3>Dignity at Work Campaign</h3>",
"target": [
".feature-card:nth-child(5) > .feature-card-body > h3"
]
},
{
"html": "<h3>Open Access Futures</h3>",
"target": [
".feature-card:nth-child(6) > .feature-card-body > h3"
]
},
{
"html": "<h2 id=\"voices-title\">Stories from the Frontlines</h2>",
"target": [
"#voices-title"
]
},
{
"html": "<h2 id=\"resources-title\">Resource Hub for Organizers</h2>",
"target": [
"#resources-title"
]
},
{
"html": "<h2 id=\"matcher-title\">Find Your Place in the Movement</h2>",
"target": [
"#matcher-title"
]
},
{
"html": "<h2 id=\"events-title\">Upcoming Actions & Gatherings</h2>",
"target": [
"#events-title"
]
},
{
"html": "<h3>Deep Canvassing Intensive (Virtual)</h3>",
"target": [
".event-card:nth-child(1) > .event-details > h3"
]
},
{
"html": "<h3>Rally for Rent Control: City Hall Steps</h3>",
"target": [
".event-card:nth-child(2) > .event-details > h3"
]
},
{
"html": "<h3>Green Corridors: Lot Transformation Day</h3>",
"target": [
".event-card:nth-child(3) > .event-details > h3"
]
},
{
"html": "<h3>Annual Movement Assembly (Hybrid)</h3>",
"target": [
".event-card:nth-child(4) > .event-details > h3"
]
},
{
"html": "<h4>",
"target": [
".sidebar-widget.reveal:nth-child(1) > h4"
]
},
{
"html": "<h4>",
"target": [
".sidebar-widget.reveal:nth-child(2) > h4"
]
},
{
"html": "<h4><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"></path><circle cx=\"12\" cy=\"7\" r=\"4\"></circle></svg> Supporter Spotlight</h4>",
"target": [
".sidebar-widget.reveal:nth-child(3) > h4"
]
},
{
"html": "<h5>Organize</h5>",
"target": [
"nav[aria-label=\"Organize\"] > h5"
]
},
{
"html": "<h5>Learn</h5>",
"target": [
"nav[aria-label=\"Learn\"] > h5"
]
},
{
"html": "<h5>Support</h5>",
"target": [
"nav[aria-label=\"Support\"] > h5"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main id=\"main-content\" role=\"main\">",
"target": [
"#main-content"
]
}
],
"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": "#2c3e50",
"contrastRatio": 10.98,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 10.98"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#home\" class=\"active\" aria-current=\"page\">Home</a>",
"target": [
".active"
]
}
]
},
{
"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": "mobile-menu",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div id=\"mobile-menu\" class=\"mobile-menu-overlay\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Navigation Menu\" hidden=\"\">",
"target": [
"#mobile-menu"
]
}
]
},
{
"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=\"interest\">Primary Issue Area</label>",
"target": [
"label[for=\"interest\"]"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<select id=\"interest\" name=\"interest\" required=\"\">",
"target": [
"#interest"
]
}
]
},
{
"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://picsum.photos/seed/housing-justice/600/375\" alt=\"Community members at a town hall meeting discussing housing policy\" loading=\"lazy\">",
"target": [
".feature-card:nth-child(1) > img[loading=\"lazy\"]"
]
}
]
},
{
"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": null,
"relatedNodes": [
{
"html": "<label for=\"location\">Zip Code (for Local Matches)</label>",
"target": [
"label[for=\"location\"]"
]
}
],
"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=\"location\" name=\"location\" placeholder=\"e.g., 94110\" pattern=\"\\d{5}\" maxlength=\"5\" inputmode=\"numeric\" required=\"\">",
"target": [
"#location"
]
}
]
},
{
"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=\"footer-brand\">",
"target": [
".footer-brand"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"logo\" aria-label=\"Common Ground Collective Home\">",
"target": [
".footer-brand > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"]"
]
}
]
},
{
"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"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute exists and is not empty"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a href=\"#\" class=\"logo\" aria-label=\"Common Ground Collective Home\">\n <img src=\"https://placehold.co/80x80/2c3e50/ffffff?text=CG&font=playfair+display\" alt=\"\" class=\"logo-img\" aria-hidden=\"true\">\n <span>Common Ground Collective</span>\n </a>",
"target": [
".header-inner > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"]"
]
}
]
},
{
"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": [
"#panel1 > .prose > 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>Spectrum of Allies mapping worksheet (PDF)</li>",
"target": [
"#panel1 > .prose > 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://picsum.photos/seed/housing-justice/600/375\" alt=\"Community members at a town hall meeting discussing housing policy\" loading=\"lazy\">",
"target": [
".feature-card:nth-child(1) > img[loading=\"lazy\"]"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element contains focusable elements"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<aside class=\"sidebar\" role=\"complementary\" aria-label=\"Take Action & Updates\">",
"target": [
"aside"
]
}
]
},
{
"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": null,
"relatedNodes": [
{
"html": "<label for=\"interest\">Primary Issue Area</label>",
"target": [
"label[for=\"interest\"]"
]
}
],
"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=\"interest\" name=\"interest\" required=\"\">",
"target": [
"#interest"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 306.5,
"height": 40
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (306.5px by 40px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"logo\" aria-label=\"Common Ground Collective Home\">\n <img src=\"https://placehold.co/80x80/2c3e50/ffffff?text=CG&font=playfair+display\" alt=\"\" class=\"logo-img\" aria-hidden=\"true\">\n <span>Common Ground Collective</span>\n </a>",
"target": [
".header-inner > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"]"
]
}
]
}
],
"incomplete": [
{
"id": "aria-valid-attr-value",
"impact": "critical",
"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": {
"messageKey": "noId",
"needsReview": "aria-labelledby=\"panel1-label\""
},
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute element ID does not exist on the page: aria-labelledby=\"panel1-label\""
}
],
"none": [],
"impact": "critical",
"html": "<div id=\"panel1\" class=\"accordion-panel\" role=\"region\" aria-labelledby=\"panel1-label\">",
"target": [
"#panel1"
],
"failureSummary": "Fix all of the following:\n ARIA attribute element ID does not exist on the page: aria-labelledby=\"panel1-label\""
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "15.0pt (20px)",
"fontWeight": "normal",
"messageKey": "bgGradient",
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-header\" role=\"banner\">",
"target": [
".site-header"
]
},
{
"html": "<section id=\"home\" class=\"hero\" aria-labelledby=\"hero-title\">",
"target": [
"#home"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Common Ground Collective</span>",
"target": [
".header-inner > .logo[aria-label=\"Common Ground Collective Home\"][href=\"#\"] > span"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a background gradient"
}
]
}
],
"violations": [
{
"id": "aria-required-children",
"impact": "critical",
"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": [
{
"any": [
{
"id": "aria-required-children",
"data": {
"messageKey": "unallowed",
"values": "a[aria-label]"
},
"relatedNodes": [
{
"html": "<a href=\"#\" aria-label=\"Follow us on Twitter/X\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 9.729h-3.304l-7.15-8.256-7.176 8.256h-3.312l7.234-8.254-8.512-9.73h3.308l7.155 8.255 7.154-8.255Z\"></path></svg></a>",
"target": [
"a[aria-label=\"Follow us on Twitter/X\"]"
]
},
{
"html": "<a href=\"#\" aria-label=\"Follow us on Instagram\">",
"target": [
"a[aria-label=\"Follow us on Instagram\"]"
]
},
{
"html": "<a href=\"#\" aria-label=\"Follow us on LinkedIn\">",
"target": [
"a[aria-label=\"Follow us on LinkedIn\"]"
]
},
{
"html": "<a href=\"#\" aria-label=\"Follow us on YouTube\">",
"target": [
"a[aria-label=\"Follow us on YouTube\"]"
]
}
],
"impact": "critical",
"message": "Element has children which are not allowed: a[aria-label]"
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<div class=\"social-links\" role=\"list\" aria-label=\"Social Media Links\">",
"target": [
".social-links"
],
"failureSummary": "Fix any of the following:\n Element has children which are not allowed: a[aria-label]"
}
]
},
{
"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": "#e67e22",
"contrastRatio": 2.84,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#join\" class=\"cta-nav\">Join Us</a>",
"target": [
".cta-nav"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.84 (foreground color: #ffffff, background color: #e67e22, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#join\" class=\"cta-nav\">Join Us</a>",
"target": [
".cta-nav"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.84 (foreground color: #ffffff, background color: #e67e22, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#34495e",
"bgColor": "#2c3e50",
"contrastRatio": 1.18,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"site-footer\" role=\"contentinfo\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.18 (foreground color: #34495e, background color: #2c3e50, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Building people power for a just, equitable, and sustainable future. We are a 501(c)(3) nonprofit organization (EIN: 12-3456789).</p>",
"target": [
".footer-brand > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.18 (foreground color: #34495e, background color: #2c3e50, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#34495e",
"bgColor": "#2c3e50",
"contrastRatio": 1.18,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<footer class=\"site-footer\" role=\"contentinfo\">",
"target": [
"footer"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 1.18 (foreground color: #34495e, background color: #2c3e50, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>\u00a9 2024 Common Ground Collective. All rights reserved.</p>",
"target": [
".footer-bottom > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 1.18 (foreground color: #34495e, background color: #2c3e50, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e67e22",
"bgColor": "#fdfbf7",
"contrastRatio": 2.75,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.75 (foreground color: #e67e22, background color: #fdfbf7, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"subhead\">Current Focus</span>",
"target": [
"#campaigns > .container > .section-header > .subhead"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.75 (foreground color: #e67e22, background color: #fdfbf7, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#fdfbf7",
"contrastRatio": 3.36,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>We don't just advocate; we organize. Each campaign below represents a coalition of local leaders, policy experts, and everyday citizens pushing for legislative wins and cultural shifts.</p>",
"target": [
"#campaigns > .container > .section-header > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Housing Justice</span>",
"target": [
".visible.feature-card:nth-child(1) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".visible.feature-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Housing Justice</span>",
"target": [
".visible.feature-card:nth-child(1) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".visible.feature-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Fighting speculative displacement in 12 major metros. We're pushing for community land trusts, rent stabilization ordinances, and eviction defense funds backed by municipal budgets.</p>",
"target": [
".visible.feature-card:nth-child(1) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Climate Resilience</span>",
"target": [
".visible.feature-card:nth-child(2) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".visible.feature-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Climate Resilience</span>",
"target": [
".visible.feature-card:nth-child(2) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".visible.feature-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Transforming vacant lots into biodiversity corridors and food sovereignty hubs. This initiative connects environmental justice with workforce development in frontline communities.</p>",
"target": [
".visible.feature-card:nth-child(2) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Civic Participation</span>",
"target": [
".visible.feature-card:nth-child(3) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".visible.feature-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Civic Participation</span>",
"target": [
".visible.feature-card:nth-child(3) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".visible.feature-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Combating voter suppression through legal advocacy, multilingual voter education drives, and redistricting oversight. We empower historically marginalized electorates to claim power.</p>",
"target": [
".visible.feature-card:nth-child(3) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Housing Justice</span>",
"target": [
".feature-card.visible:nth-child(1) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Housing Justice</span>",
"target": [
".feature-card.visible:nth-child(1) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Fighting speculative displacement in 12 major metros. We're pushing for community land trusts, rent stabilization ordinances, and eviction defense funds backed by municipal budgets.</p>",
"target": [
".feature-card.visible:nth-child(1) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Climate Resilience</span>",
"target": [
".feature-card.visible:nth-child(2) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Climate Resilience</span>",
"target": [
".feature-card.visible:nth-child(2) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Transforming vacant lots into biodiversity corridors and food sovereignty hubs. This initiative connects environmental justice with workforce development in frontline communities.</p>",
"target": [
".feature-card.visible:nth-child(2) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Civic Participation</span>",
"target": [
".feature-card.visible:nth-child(3) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Civic Participation</span>",
"target": [
".feature-card.visible:nth-child(3) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Combating voter suppression through legal advocacy, multilingual voter education drives, and redistricting oversight. We empower historically marginalized electorates to claim power.</p>",
"target": [
".feature-card.visible:nth-child(3) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Public Health</span>",
"target": [
".feature-card.visible:nth-child(4) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Public Health</span>",
"target": [
".feature-card.visible:nth-child(4) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Decolonizing mental health access via peer-led support circles, trauma-informed practitioner training, and advocacy for Medicaid reimbursement of community health workers.</p>",
"target": [
".feature-card.visible:nth-child(4) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Labor Rights</span>",
"target": [
".feature-card.visible:nth-child(5) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Labor Rights</span>",
"target": [
".feature-card.visible:nth-child(5) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Supporting gig economy and domestic worker organizing for portable benefits, algorithmic transparency, and sectoral bargaining rights. Building power across the informal economy.</p>",
"target": [
".feature-card.visible:nth-child(5) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Digital Equity</span>",
"target": [
".feature-card.visible:nth-child(6) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(6)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Digital Equity</span>",
"target": [
".feature-card.visible:nth-child(6) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card.visible:nth-child(6)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Municipal broadband advocacy, algorithmic accountability legislation, and digital literacy curricula for seniors and rural populations. Ensuring the internet remains a public utility.</p>",
"target": [
".feature-card.visible:nth-child(6) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e67e22",
"bgColor": "#ffffff",
"contrastRatio": 2.84,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"voices\" class=\"section reveal visible\" style=\"background: var(--color-surface);\" aria-labelledby=\"voices-title\">",
"target": [
"#voices"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.84 (foreground color: #e67e22, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"subhead\">Community Voices</span>",
"target": [
"#voices > .container > .section-header > .subhead"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.84 (foreground color: #e67e22, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section id=\"voices\" class=\"section reveal visible\" style=\"background: var(--color-surface);\" aria-labelledby=\"voices-title\">",
"target": [
"#voices"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Real people. Real impact. These narratives illustrate the power of coalition building and the humanity at the center of every policy fight.</p>",
"target": [
"#voices > .container > .section-header > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testimonial-card reveal visible\">",
"target": [
".testimonial-card.visible:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Tenant Organizer, Oakland, CA</span>",
"target": [
".testimonial-card.visible:nth-child(1) > .testimonial-author > .author-info > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testimonial-card reveal visible\">",
"target": [
".testimonial-card.visible:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Urban Farmer & Educator, Detroit, MI</span>",
"target": [
".testimonial-card.visible:nth-child(2) > .testimonial-author > .author-info > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testimonial-card reveal visible\">",
"target": [
".testimonial-card.visible:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Civic Engagement Lead, Atlanta, GA</span>",
"target": [
".testimonial-card.visible:nth-child(3) > .testimonial-author > .author-info > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Housing Justice</span>",
"target": [
".feature-card:nth-child(1) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Housing Justice</span>",
"target": [
".feature-card:nth-child(1) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Fighting speculative displacement in 12 major metros. We're pushing for community land trusts, rent stabilization ordinances, and eviction defense funds backed by municipal budgets.</p>",
"target": [
".feature-card:nth-child(1) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Climate Resilience</span>",
"target": [
".feature-card:nth-child(2) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Climate Resilience</span>",
"target": [
".feature-card:nth-child(2) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Transforming vacant lots into biodiversity corridors and food sovereignty hubs. This initiative connects environmental justice with workforce development in frontline communities.</p>",
"target": [
".feature-card:nth-child(2) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Civic Participation</span>",
"target": [
".feature-card:nth-child(3) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Civic Participation</span>",
"target": [
".feature-card:nth-child(3) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Combating voter suppression through legal advocacy, multilingual voter education drives, and redistricting oversight. We empower historically marginalized electorates to claim power.</p>",
"target": [
".feature-card:nth-child(3) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Public Health</span>",
"target": [
".feature-card:nth-child(4) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Public Health</span>",
"target": [
".feature-card:nth-child(4) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Decolonizing mental health access via peer-led support circles, trauma-informed practitioner training, and advocacy for Medicaid reimbursement of community health workers.</p>",
"target": [
".feature-card:nth-child(4) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Labor Rights</span>",
"target": [
".feature-card:nth-child(5) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Labor Rights</span>",
"target": [
".feature-card:nth-child(5) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Supporting gig economy and domestic worker organizing for portable benefits, algorithmic transparency, and sectoral bargaining rights. Building power across the informal economy.</p>",
"target": [
".feature-card:nth-child(5) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"feature-tag\">Digital Equity</span>",
"target": [
".feature-card:nth-child(6) > .feature-card-body > .feature-tag"
]
},
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(6)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"feature-tag\">Digital Equity</span>",
"target": [
".feature-card:nth-child(6) > .feature-card-body > .feature-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"feature-card reveal visible\">",
"target": [
".feature-card:nth-child(6)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Municipal broadband advocacy, algorithmic accountability legislation, and digital literacy curricula for seniors and rural populations. Ensuring the internet remains a public utility.</p>",
"target": [
".feature-card:nth-child(6) > .feature-card-body > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testimonial-card reveal visible\">",
"target": [
".testimonial-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Tenant Organizer, Oakland, CA</span>",
"target": [
".testimonial-card:nth-child(1) > .testimonial-author > .author-info > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testimonial-card reveal visible\">",
"target": [
".testimonial-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Urban Farmer & Educator, Detroit, MI</span>",
"target": [
".testimonial-card:nth-child(2) > .testimonial-author > .author-info > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testimonial-card reveal visible\">",
"target": [
".testimonial-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Civic Engagement Lead, Atlanta, GA</span>",
"target": [
".testimonial-card:nth-child(3) > .testimonial-author > .author-info > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e67e22",
"bgColor": "#fdfbf7",
"contrastRatio": 2.75,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.75 (foreground color: #e67e22, background color: #fdfbf7, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"subhead\">Knowledge Base</span>",
"target": [
"#resources > .container > .section-header > .subhead"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.75 (foreground color: #e67e22, background color: #fdfbf7, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#fdfbf7",
"contrastRatio": 3.36,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Curated toolkits, legal guides, and strategic frameworks developed by our policy team and partner organizations. Open-source infrastructure for the movement.</p>",
"target": [
"#resources > .container > .section-header > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e67e22",
"bgColor": "#fdfbf7",
"contrastRatio": 2.75,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.75 (foreground color: #e67e22, background color: #fdfbf7, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"subhead\">Mobilize</span>",
"target": [
"#events > .container > .section-header > .subhead"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.75 (foreground color: #e67e22, background color: #fdfbf7, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#fdfbf7",
"contrastRatio": 3.36,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Movement building happens in rooms, on streets, and on screens. Join a training, a rally, or a strategy session near you.</p>",
"target": [
"#events > .container > .section-header > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Training</span>",
"target": [
".event-card:nth-child(1) > .event-details > .event-tag"
]
},
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Training</span>",
"target": [
".event-card:nth-child(1) > .event-details > .event-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Master the art of values-based conversations that shift perspectives on polarizing issues. 3-session certificate course led by People's Action trainers.</p>",
"target": [
".event-card:nth-child(1) > .event-details > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline></svg> 6:00 PM - 8:30 PM ET</span>",
"target": [
".event-card:nth-child(1) > .event-details > .event-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"></rect><path d=\"M8 21h8M12 17v4\"></path></svg> Zoom (Link upon RSVP)</span>",
"target": [
".event-card:nth-child(1) > .event-details > .event-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Direct Action</span>",
"target": [
".event-card:nth-child(2) > .event-details > .event-tag"
]
},
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Direct Action</span>",
"target": [
".event-card:nth-child(2) > .event-details > .event-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Mass mobilization demanding the City Council vote on the Just Cause Eviction Ordinance. Bring signs, water, and comfortable shoes. Legal observers present.</p>",
"target": [
".event-card:nth-child(2) > .event-details > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline></svg> 11:00 AM - 1:00 PM Local</span>",
"target": [
".event-card:nth-child(2) > .event-details > .event-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path><circle cx=\"12\" cy=\"10\" r=\"3\"></circle></svg> 123 Main St, Downtown</span>",
"target": [
".event-card:nth-child(2) > .event-details > .event-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Community Build</span>",
"target": [
".event-card:nth-child(3) > .event-details > .event-tag"
]
},
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Community Build</span>",
"target": [
".event-card:nth-child(3) > .event-details > .event-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Hands-on ecological restoration. Sheet mulching, native planting, and rainwater catchment installation. Family friendly. Tools and lunch provided.</p>",
"target": [
".event-card:nth-child(3) > .event-details > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline></svg> 9:00 AM - 2:00 PM</span>",
"target": [
".event-card:nth-child(3) > .event-details > .event-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path><circle cx=\"12\" cy=\"10\" r=\"3\"></circle></svg> Vacant Lot, 45th & Elm</span>",
"target": [
".event-card:nth-child(3) > .event-details > .event-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#27ae60",
"bgColor": "#e9f7ef",
"contrastRatio": 2.6,
"fontSize": "8.4pt (11.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Strategy</span>",
"target": [
".event-card:nth-child(4) > .event-details > .event-tag"
]
},
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Strategy</span>",
"target": [
".event-card:nth-child(4) > .event-details > .event-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.6 (foreground color: #27ae60, background color: #e9f7ef, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Our yearly convergence for strategy alignment, skill shares, and relationship building across all issue areas. Childcare & interpretation provided.</p>",
"target": [
".event-card:nth-child(4) > .event-details > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline></svg> 10:00 AM - 5:00 PM</span>",
"target": [
".event-card:nth-child(4) > .event-details > .event-meta > span:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card reveal visible\">",
"target": [
".event-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path><circle cx=\"12\" cy=\"10\" r=\"3\"></circle></svg> Community Arts Center / Livestream</span>",
"target": [
".event-card:nth-child(4) > .event-details > .event-meta > span:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#fdfbf7",
"contrastRatio": 3.36,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"action-item\">",
"target": [
".action-item:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Deadline Oct 15: EPA Rule on Water Protections. 2 mins.</span>",
"target": [
".action-item:nth-child(1) > .action-text > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#fdfbf7",
"contrastRatio": 3.36,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"action-item\">",
"target": [
".action-item:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Script provided: Support the PRO Act. Takes 90 seconds.</span>",
"target": [
".action-item:nth-child(2) > .action-text > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#fdfbf7",
"contrastRatio": 3.36,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"action-item\">",
"target": [
".action-item:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Sustain our legal defense fund. $15/mo = 1 eviction defense.</span>",
"target": [
".action-item:nth-child(3) > .action-text > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.36 (foreground color: #7f8c8d, background color: #fdfbf7, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget reveal visible\">",
"target": [
".sidebar-widget.visible.reveal:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<time datetime=\"2024-10-10\">Oct 10, 2024</time>",
"target": [
"time[datetime=\"2024-10-10\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget reveal visible\">",
"target": [
".sidebar-widget.visible.reveal:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<time datetime=\"2024-10-08\">Oct 8, 2024</time>",
"target": [
"time[datetime=\"2024-10-08\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget reveal visible\">",
"target": [
".sidebar-widget.visible.reveal:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<time datetime=\"2024-10-05\">Oct 5, 2024</time>",
"target": [
"time[datetime=\"2024-10-05\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#7f8c8d",
"bgColor": "#ffffff",
"contrastRatio": 3.47,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-widget reveal visible\">",
"target": [
".sidebar-widget.visible.reveal:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<time datetime=\"2024-10-01\">Oct 1, 2024</time>",
"target": [
"time[datetime=\"2024-10-01\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.47 (foreground color: #7f8c8d, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 6695
},
{
"y": 576,
"height": 6695
},
{
"y": 1152,
"height": 6695
},
{
"y": 1728,
"height": 6695
},
{
"y": 2304,
"height": 6695
},
{
"y": 2880,
"height": 6695
},
{
"y": 3456,
"height": 6695
},
{
"y": 4032,
"height": 6695
},
{
"y": 4608,
"height": 6695
},
{
"y": 5184,
"height": 6695
},
{
"y": 5760,
"height": 6695
},
{
"y": 5975,
"height": 6695
}
],
"scans": 13,
"max_states": 512,
"settle_ms": 5000,
"page_timeout_seconds": 150,
"layout_stability": "consecutive 100ms size samples within one CSS pixel",
"animation_settling": "finite animations present when scroll resources are ready finish or are cancelled",
"interactive_states": "not exercised",
"horizontal_scroll": "not exercised"
}
}
System Prompt
You are a lead web developer at a top digital agency, tasked with creating a one-page website for a new client based on the given specifications, delivered as an HTML file. First non-whitespace char '<', last non-whitespace char '>'. Use the following services to generate placeholder images where needed:
- placehold.co (text): https://placehold.co/[{w}x{h}|{size}][/{bg-color}/{text-color}]?text={text}&font=[lato|lora|montserrat|noto sans|open sans|oswald|playfair display|poppins|pt sans|raleway|roboto|source sans|source sans pro]
- picsum.photos (photos): https://picsum.photos/[{w}/{h}|{size}]?[grayscale][&blur={1-10}]
- pravatar.cc (avatars): https://i.pravatar.cc/{size}?u={identifier}
Choose sizes appropriate to layout.
User Prompt
Create a **complete, polished, production-quality** primary web page for a new client in the "Society" sector.
Your goal is to generate the full HTML code for a page that is not just functional but also visually compelling, content-rich, and feels like a finished product ready for launch.
**Client & Category:**
- Industry: "Society"
- Description: Social issues, advocacy, cultural organizations, and community initiatives.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Society" category.
2. **Define Page:** Determine the most effective primary page type (e.g., homepage, service landing page, category portal) to showcase this fictional entity.
3. **Design:** Develop an opinionated, modern, and professional layout. Make distinct choices about structure and flow.
**Content & Structure Requirements (Deliver a COMPLETE page):**
- **Overall:** The final page must feel substantial and complete, with realistic amounts of text (multiple paragraphs per section where appropriate, avoid single sentences), well-integrated placeholder images, and logical flow. It should look like a real website a business would proudly use.
- **HEADER:** Include the invented site name, tagline, a logo placeholder image, and a primary navigation bar. Ensure the navigation has **at least 5-7 clearly defined, relevant links** including: "Events", "Issues", "About".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Society" category. Consider themes similar to: "Community Stories", "Resource Center", "Advocacy Actions".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "coalition building", "collective action", "grassroots".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Spread Awareness", "Join Movement", "Share Story".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Society" sector. Ideas similar but not limited to: "volunteer matcher".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "activist spotlights", "event calendar", "movement updates".
- **FOOTER:** Include a professional footer with invented contact details, copyright (current year), social media links, and standard links (Privacy, Terms).
- **MODERN WEB PATTERNS:** Include modern web patterns like testimonial cards, feature grids, or FAQ accordions where appropriate.