MiniMax MiniMax M3 – Society
via CoreWeave · Generated
- AIMAC Debt 16.48
- Cost $0.03
- Total Violations 44
- HTML Size 53 KB
- Em Dashes 16
Screenshot
View Live Page
Accessibility Issues Found
3 Critical 41 Serious
-
color-contrast serious 41 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<a href="#" class="active">Home</a> -
select-name critical 3 instances
Select element must have an accessible name
Example HTML
<select id="filter-issue">
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Solstice Collective — Illuminating Paths. Uniting Communities. Forging Justice.</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=Playfair+Display:wght@500;600;700;800&family=Source+Sans+3:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'Source Sans 3',-apple-system,BlinkMacSystemFont,sans-serif;color:#2a2a2a;background:#faf6f1;line-height:1.6;font-size:16px;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
h1,h2,h3,h4{font-family:'Playfair Display',Georgia,serif;font-weight:700;line-height:1.15;color:#1a2b4a;letter-spacing:-0.01em}
h1{font-size:clamp(2.5rem,5vw,4.25rem)}
h2{font-size:clamp(1.9rem,3.5vw,2.85rem)}
h3{font-size:1.5rem}
h4{font-size:1.2rem}
.eyebrow{display:inline-block;font-size:0.82rem;font-weight:600;text-transform:uppercase;letter-spacing:0.16em;color:#e07856;margin-bottom:1rem}
.eyebrow.light{color:#f5a582}
.container{max-width:1280px;margin:0 auto;padding:0 1.5rem}
.section{padding:6rem 0}
.section-tight{padding:4rem 0}
/* Top utility bar */
.topbar{background:#1a2b4a;color:#faf6f1;font-size:0.85rem;padding:0.6rem 0}
.topbar-inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}
.topbar a{opacity:0.85;transition:opacity .2s}
.topbar a:hover{opacity:1}
.topbar-links{display:flex;gap:1.5rem;align-items:center}
/* Header */
.site-header{background:#faf6f1;border-bottom:1px solid rgba(26,43,74,0.08);position:sticky;top:0;z-index:100;backdrop-filter:saturate(180%) blur(8px);background-color:rgba(250,246,241,0.95)}
.header-inner{display:flex;justify-content:space-between;align-items:center;padding:1.1rem 0;gap:2rem}
.logo{display:flex;align-items:center;gap:0.75rem;font-family:'Playfair Display',serif;font-weight:800;font-size:1.45rem;color:#1a2b4a}
.logo-icon{width:44px;height:44px;background:linear-gradient(135deg,#e07856 0%,#c45a3c 100%);border-radius:12px;display:grid;place-items:center;color:#faf6f1;font-weight:800;font-size:1.15rem;box-shadow:0 4px 12px rgba(224,120,86,0.3)}
nav.primary-nav ul{display:flex;list-style:none;gap:0.25rem;align-items:center}
nav.primary-nav a{display:block;padding:0.6rem 0.95rem;font-weight:500;font-size:0.95rem;color:#2a2a2a;border-radius:6px;transition:all .2s}
nav.primary-nav a:hover{background:rgba(26,43,74,0.06);color:#1a2b4a}
nav.primary-nav a.active{color:#e07856;font-weight:600}
.btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.85rem 1.5rem;border-radius:8px;font-weight:600;font-size:0.95rem;cursor:pointer;border:none;transition:all .2s;text-align:center}
.btn-primary{background:#e07856;color:#faf6f1}
.btn-primary:hover{background:#c45a3c;transform:translateY(-1px);box-shadow:0 8px 20px rgba(224,120,86,0.35)}
.btn-secondary{background:#1a2b4a;color:#faf6f1}
.btn-secondary:hover{background:#0d1a33;transform:translateY(-1px);box-shadow:0 8px 20px rgba(26,43,74,0.3)}
.btn-ghost{background:transparent;color:#1a2b4a;border:1.5px solid #1a2b4a}
.btn-ghost:hover{background:#1a2b4a;color:#faf6f1}
.btn-large{padding:1.05rem 2rem;font-size:1rem}
/* Hero */
.hero{position:relative;overflow:hidden;padding:5rem 0 6rem;background:linear-gradient(180deg,#faf6f1 0%,#f3ebde 100%)}
.hero-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:4rem;align-items:center}
.hero h1{margin-bottom:1.5rem}
.hero h1 .highlight{position:relative;display:inline-block;color:#e07856;font-style:italic}
.hero h1 .highlight::after{content:"";position:absolute;left:0;right:0;bottom:0.05em;height:0.4em;background:rgba(224,120,86,0.18);z-index:-1;border-radius:4px}
.hero-lead{font-size:1.18rem;color:#4a4a4a;margin-bottom:2rem;max-width:560px;line-height:1.65}
.hero-ctas{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:3rem}
.hero-meta{display:flex;gap:2.5rem;flex-wrap:wrap;padding-top:2rem;border-top:1px solid rgba(26,43,74,0.12)}
.hero-meta-item .num{font-family:'Playfair Display',serif;font-size:2.25rem;font-weight:700;color:#1a2b4a;line-height:1}
.hero-meta-item .label{font-size:0.82rem;color:#6b6b6b;text-transform:uppercase;letter-spacing:0.08em;margin-top:0.25rem}
.hero-image{position:relative;border-radius:20px;overflow:hidden;box-shadow:0 30px 60px rgba(26,43,74,0.2);aspect-ratio:4/5}
.hero-image img{width:100%;height:100%;object-fit:cover}
.hero-badge{position:absolute;bottom:1.5rem;left:1.5rem;background:rgba(250,246,241,0.97);backdrop-filter:blur(10px);padding:1rem 1.25rem;border-radius:12px;display:flex;align-items:center;gap:0.75rem;font-size:0.9rem;font-weight:500;box-shadow:0 10px 30px rgba(0,0,0,0.15);max-width:280px}
.hero-badge strong{color:#1a2b4a}
.hero-badge .dot{width:10px;height:10px;border-radius:50%;background:#7a9b76;flex-shrink:0;animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:0.5;transform:scale(1.4)}}
/* Stats */
.stats{background:#1a2b4a;color:#faf6f1;padding:3rem 0}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}
.stat-item{text-align:center;padding:0 1rem;border-right:1px solid rgba(250,246,241,0.12)}
.stat-item:last-child{border-right:none}
.stat-num{font-family:'Playfair Display',serif;font-size:3rem;font-weight:700;color:#e07856;line-height:1;margin-bottom:0.5rem}
.stat-label{font-size:0.9rem;opacity:0.85}
/* Section header */
.section-header{text-align:center;max-width:720px;margin:0 auto 4rem}
.section-header p{font-size:1.1rem;color:#4a4a4a;margin-top:1rem;line-height:1.65}
/* Campaigns */
.campaigns-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}
.campaign-card{background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 4px 20px rgba(26,43,74,0.06);transition:transform .3s,box-shadow .3s;display:flex;flex-direction:column}
.campaign-card:hover{transform:translateY(-6px);box-shadow:0 20px 40px rgba(26,43,74,0.15)}
.campaign-image{aspect-ratio:16/10;overflow:hidden;position:relative}
.campaign-image img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.campaign-card:hover .campaign-image img{transform:scale(1.06)}
.campaign-tag{position:absolute;top:1rem;left:1rem;background:rgba(250,246,241,0.95);padding:0.4rem 0.85rem;border-radius:100px;font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;color:#1a2b4a}
.campaign-tag.urgent{background:#c45a3c;color:#faf6f1}
.campaign-content{padding:1.75rem;flex:1;display:flex;flex-direction:column}
.campaign-content h3{margin-bottom:0.75rem;font-size:1.35rem}
.campaign-content p{color:#4a4a4a;margin-bottom:1.5rem;flex:1;font-size:0.97rem;line-height:1.6}
.campaign-progress{margin-bottom:1rem}
.progress-bar{height:8px;background:rgba(26,43,74,0.08);border-radius:100px;overflow:hidden}
.progress-fill{height:100%;background:linear-gradient(90deg,#e07856,#c45a3c);border-radius:100px}
.progress-meta{display:flex;justify-content:space-between;font-size:0.85rem;margin-top:0.5rem;color:#6b6b6b}
.progress-meta strong{color:#1a2b4a}
.campaign-cta{display:inline-flex;align-items:center;gap:0.5rem;color:#e07856;font-weight:600;font-size:0.92rem;margin-top:auto}
.campaign-cta::after{content:"→";transition:transform .2s}
.campaign-cta:hover::after{transform:translateX(4px)}
/* Mission */
.mission{background:#fff}
.mission-grid{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}
.mission-image-wrap{position:relative}
.mission-image{border-radius:20px;overflow:hidden;box-shadow:0 20px 50px rgba(26,43,74,0.15);aspect-ratio:4/5}
.mission-image img{width:100%;height:100%;object-fit:cover}
.mission-floating{position:absolute;bottom:-2rem;right:-2rem;background:#e07856;color:#faf6f1;padding:1.5rem 1.75rem;border-radius:16px;max-width:260px;box-shadow:0 15px 35px rgba(224,120,86,0.4)}
.mission-floating .num{font-family:'Playfair Display',serif;font-size:2.5rem;font-weight:700;line-height:1}
.mission-floating .text{font-size:0.9rem;margin-top:0.5rem;opacity:0.95;line-height:1.5}
.mission-text h2{margin-bottom:1.5rem}
.mission-text p{margin-bottom:1.2rem;color:#4a4a4a;font-size:1.04rem;line-height:1.7}
.mission-pillars{margin-top:2.25rem;display:grid;gap:1.25rem}
.pillar{display:flex;gap:1rem;align-items:flex-start}
.pillar-icon{width:44px;height:44px;border-radius:10px;background:rgba(224,120,86,0.12);color:#e07856;display:grid;place-items:center;font-size:1.2rem;flex-shrink:0}
.pillar h4{font-family:'Source Sans 3',sans-serif;font-weight:700;color:#1a2b4a;margin-bottom:0.3rem;font-size:1.05rem}
.pillar p{font-size:0.93rem;color:#6b6b6b;margin:0;line-height:1.55}
/* Event finder */
.events{background:linear-gradient(180deg,#faf6f1 0%,#f0e6d4 100%)}
.event-finder{background:#fff;border-radius:20px;padding:2.5rem;box-shadow:0 20px 50px rgba(26,43,74,0.08)}
.event-filters{display:grid;grid-template-columns:repeat(4,1fr) auto;gap:1rem;margin-bottom:2.25rem;align-items:end}
.filter-group label{display:block;font-size:0.78rem;font-weight:700;color:#1a2b4a;margin-bottom:0.5rem;text-transform:uppercase;letter-spacing:0.06em}
.filter-group select,.filter-group input{width:100%;padding:0.75rem 1rem;border:1.5px solid rgba(26,43,74,0.15);border-radius:8px;font-family:inherit;font-size:0.95rem;background:#fff;color:#2a2a2a}
.filter-group select:focus,.filter-group input:focus{outline:none;border-color:#e07856}
.event-list{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.event-card{border:1.5px solid rgba(26,43,74,0.08);border-radius:14px;padding:1.5rem;transition:all .25s;background:#faf6f1}
.event-card:hover{border-color:#e07856;transform:translateY(-3px);box-shadow:0 10px 25px rgba(26,43,74,0.1)}
.event-date{display:flex;align-items:center;gap:0.75rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px dashed rgba(26,43,74,0.12)}
.event-date-box{background:#1a2b4a;color:#faf6f1;padding:0.5rem 0.85rem;border-radius:8px;text-align:center;min-width:62px}
.event-date-box .month{font-size:0.7rem;text-transform:uppercase;letter-spacing:0.1em;display:block;color:#e07856;font-weight:700}
.event-date-box .day{font-family:'Playfair Display',serif;font-size:1.5rem;font-weight:700;line-height:1}
.event-meta{font-size:0.85rem;color:#6b6b6b;line-height:1.45}
.event-meta strong{color:#1a2b4a}
.event-card h3{font-size:1.18rem;margin-bottom:0.5rem;font-family:'Playfair Display',serif}
.event-card p{font-size:0.9rem;color:#4a4a4a;margin-bottom:1rem;line-height:1.55}
.event-tags{display:flex;gap:0.5rem;flex-wrap:wrap;margin-bottom:1rem}
.event-tag{font-size:0.72rem;padding:0.28rem 0.65rem;background:rgba(122,155,118,0.15);color:#5a7d56;border-radius:100px;font-weight:600}
.event-link{font-size:0.88rem;color:#e07856;font-weight:600}
/* Volunteer */
.volunteer{background:#1a2b4a;color:#faf6f1}
.volunteer h2{color:#faf6f1}
.volunteer .section-header p{color:rgba(250,246,241,0.85)}
.opp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.opp-card{background:rgba(250,246,241,0.05);border:1px solid rgba(250,246,241,0.12);border-radius:14px;padding:2rem;transition:all .25s}
.opp-card:hover{background:rgba(250,246,241,0.09);border-color:#e07856;transform:translateY(-3px)}
.opp-icon{width:56px;height:56px;background:linear-gradient(135deg,#e07856,#c45a3c);border-radius:14px;display:grid;place-items:center;font-size:1.5rem;margin-bottom:1.25rem}
.opp-card h3{color:#faf6f1;margin-bottom:0.75rem;font-size:1.22rem}
.opp-card p{color:rgba(250,246,241,0.78);font-size:0.95rem;margin-bottom:1.25rem;line-height:1.6}
.opp-meta{display:flex;justify-content:space-between;align-items:center;padding-top:1.25rem;border-top:1px solid rgba(250,246,241,0.1);font-size:0.85rem;color:rgba(250,246,241,0.7)}
.opp-meta strong{color:#e07856;font-weight:600}
.opp-cta{display:inline-block;margin-top:1rem;color:#e07856;font-weight:600;font-size:0.9rem}
/* Resources */
.resource-tabs{display:flex;gap:0.5rem;flex-wrap:wrap;justify-content:center;margin-bottom:3rem}
.resource-tab{padding:0.6rem 1.3rem;border-radius:100px;background:rgba(26,43,74,0.06);color:#1a2b4a;font-weight:500;font-size:0.9rem;cursor:pointer;transition:all .2s;border:none}
.resource-tab:hover{background:rgba(26,43,74,0.12)}
.resource-tab.active{background:#1a2b4a;color:#faf6f1}
.resource-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem}
.resource-card{background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 4px 15px rgba(26,43,74,0.06);transition:transform .3s,box-shadow .3s;display:flex;flex-direction:column}
.resource-card:hover{transform:translateY(-4px);box-shadow:0 12px 30px rgba(26,43,74,0.12)}
.resource-thumb{aspect-ratio:16/10;overflow:hidden;background:#eee}
.resource-thumb img{width:100%;height:100%;object-fit:cover}
.resource-content{padding:1.5rem;flex:1;display:flex;flex-direction:column}
.resource-type{font-size:0.72rem;text-transform:uppercase;letter-spacing:0.1em;color:#e07856;font-weight:700;margin-bottom:0.5rem}
.resource-content h3{font-size:1.12rem;margin-bottom:0.5rem;font-family:'Playfair Display',serif;line-height:1.3}
.resource-content p{font-size:0.88rem;color:#4a4a4a;margin-bottom:1rem;flex:1;line-height:1.55}
.resource-meta{display:flex;gap:1rem;font-size:0.78rem;color:#6b6b6b;padding-top:0.75rem;border-top:1px solid rgba(26,43,74,0.08)}
/* Testimonials */
.testimonials{background:linear-gradient(180deg,#fff 0%,#faf6f1 100%)}
.testimonial-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}
.testimonial-card{background:#fff;border-radius:16px;padding:2rem;box-shadow:0 8px 25px rgba(26,43,74,0.08);position:relative;border:1px solid rgba(26,43,74,0.05)}
.testimonial-card::before{content:"\201C";position:absolute;top:-15px;left:1.5rem;font-family:'Playfair Display',serif;font-size:5.5rem;color:#e07856;line-height:1;opacity:0.3}
.testimonial-text{font-style:italic;color:#2a2a2a;margin-bottom:1.5rem;position:relative;z-index:1;line-height:1.7;font-size:0.98rem}
.testimonial-author{display:flex;align-items:center;gap:1rem;padding-top:1.25rem;border-top:1px solid rgba(26,43,74,0.08)}
.testimonial-avatar{width:48px;height:48px;border-radius:50%;overflow:hidden;background:#eee}
.testimonial-avatar img{width:100%;height:100%;object-fit:cover}
.testimonial-info .name{font-weight:700;color:#1a2b4a;font-size:0.95rem}
.testimonial-info .role{font-size:0.85rem;color:#6b6b6b}
/* FAQ */
.faq-list{max-width:820px;margin:0 auto}
.faq-item{background:#fff;border-radius:12px;margin-bottom:1rem;box-shadow:0 2px 10px rgba(26,43,74,0.05);overflow:hidden;border:1px solid rgba(26,43,74,0.04)}
.faq-question{width:100%;padding:1.25rem 1.5rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;background:transparent;border:none;font-size:1.05rem;font-weight:600;color:#1a2b4a;text-align:left;cursor:pointer;line-height:1.4}
.faq-icon{width:32px;height:32px;border-radius:50%;background:rgba(224,120,86,0.12);color:#e07856;display:grid;place-items:center;font-size:1.4rem;flex-shrink:0;transition:transform .3s;font-weight:300}
.faq-item.open .faq-icon{transform:rotate(45deg)}
.faq-answer{max-height:0;overflow:hidden;transition:max-height .35s ease}
.faq-answer-inner{padding:0 1.5rem 1.5rem;color:#4a4a4a;line-height:1.7}
.faq-answer p{margin-bottom:0.75rem}
.faq-answer p:last-child{margin-bottom:0}
/* CTA */
.cta-section{background:linear-gradient(135deg,#e07856 0%,#c45a3c 100%);color:#faf6f1;text-align:center;position:relative;overflow:hidden}
.cta-section::before{content:"";position:absolute;top:-50%;right:-20%;width:600px;height:600px;background:radial-gradient(circle,rgba(250,246,241,0.15) 0%,transparent 70%);border-radius:50%}
.cta-section::after{content:"";position:absolute;bottom:-30%;left:-10%;width:400px;height:400px;background:radial-gradient(circle,rgba(26,43,74,0.2) 0%,transparent 70%);border-radius:50%}
.cta-inner{position:relative;z-index:1;max-width:720px;margin:0 auto}
.cta-section h2{color:#faf6f1;margin-bottom:1rem}
.cta-section .lead{font-size:1.15rem;margin-bottom:2rem;opacity:0.95;line-height:1.6}
.newsletter-form{display:flex;gap:0.75rem;max-width:480px;margin:0 auto;flex-wrap:wrap}
.newsletter-form input{flex:1;min-width:200px;padding:1rem 1.25rem;border:none;border-radius:8px;font-family:inherit;font-size:1rem;background:rgba(250,246,241,0.97)}
.newsletter-form input:focus{outline:none;box-shadow:0 0 0 3px rgba(26,43,74,0.3)}
.newsletter-form button{background:#1a2b4a;color:#faf6f1;padding:1rem 1.75rem;border:none;border-radius:8px;font-weight:600;font-size:1rem;cursor:pointer;transition:background .2s}
.newsletter-form button:hover{background:#0d1a33}
.cta-fineprint{font-size:0.85rem;opacity:0.85;margin-top:1.25rem}
/* Footer */
.site-footer{background:#0d1a33;color:rgba(250,246,241,0.75);padding:5rem 0 2rem}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:3rem;margin-bottom:3rem}
.footer-brand{display:flex;align-items:center;gap:0.75rem;font-family:'Playfair Display',serif;font-weight:800;font-size:1.45rem;color:#faf6f1;margin-bottom:1.25rem}
.footer-about p{font-size:0.95rem;margin-bottom:1.5rem;line-height:1.7}
.footer-social{display:flex;gap:0.6rem}
.social-link{width:40px;height:40px;border-radius:10px;background:rgba(250,246,241,0.08);display:grid;place-items:center;color:#faf6f1;transition:background .2s;font-size:0.95rem;font-weight:700}
.social-link:hover{background:#e07856}
.footer-col h4{color:#faf6f1;font-family:'Source Sans 3',sans-serif;font-weight:700;font-size:0.95rem;margin-bottom:1.25rem;text-transform:uppercase;letter-spacing:0.07em}
.footer-col ul{list-style:none}
.footer-col li{margin-bottom:0.7rem;font-size:0.95rem;line-height:1.5}
.footer-col a{transition:color .2s}
.footer-col a:hover{color:#e07856}
.footer-bottom{padding-top:2rem;border-top:1px solid rgba(250,246,241,0.1);display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;font-size:0.88rem}
.footer-bottom-links{display:flex;gap:1.5rem;flex-wrap:wrap}
/* Responsive */
@media (max-width:1024px){
.hero-grid,.mission-grid{grid-template-columns:1fr;gap:3rem}
.hero-image{aspect-ratio:16/10;order:-1}
.mission-floating{right:1rem;bottom:-1rem}
.stats-grid{grid-template-columns:repeat(2,1fr);gap:1.5rem}
.stat-item:nth-child(2){border-right:none}
.campaigns-grid,.testimonial-grid{grid-template-columns:repeat(2,1fr)}
.opp-grid{grid-template-columns:repeat(2,1fr)}
.event-list{grid-template-columns:repeat(2,1fr)}
.event-filters{grid-template-columns:repeat(2,1fr)}
.resource-grid{grid-template-columns:repeat(3,1fr)}
.footer-grid{grid-template-columns:1fr 1fr;gap:2.5rem}
}
@media (max-width:720px){
.section{padding:4rem 0}
.topbar-links{display:none}
nav.primary-nav{display:none}
.header-inner{gap:1rem}
.hero{padding:3rem 0 4rem}
.campaigns-grid,.testimonial-grid,.opp-grid,.event-list,.resource-grid{grid-template-columns:1fr}
.stats-grid{grid-template-columns:1fr 1fr}
.event-finder{padding:1.5rem}
.footer-grid{grid-template-columns:1fr}
.footer-bottom{flex-direction:column;align-items:flex-start}
.hero-meta{gap:1.5rem}
.hero-meta-item .num{font-size:1.75rem}
}
</style>
</head>
<body>
<div class="topbar">
<div class="container topbar-inner">
<div class="topbar-contact">
<a href="mailto:connect@solsticecollective.org">✉ connect@solsticecollective.org</a>
<span style="opacity:0.4;margin:0 0.75rem">|</span>
<a href="tel:+18005552987">☎ +1 (800) 555-2987</a>
</div>
<div class="topbar-links">
<a href="#">Member Sign In</a>
<a href="#">Donate</a>
<a href="#">Español</a>
</div>
</div>
</div>
<header class="site-header">
<div class="container header-inner">
<a href="#" class="logo">
<div class="logo-icon">SC</div>
<span>Solstice Collective</span>
</a>
<nav class="primary-nav">
<ul>
<li><a href="#" class="active">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#campaigns">Campaigns</a></li>
<li><a href="#issues">Issues</a></li>
<li><a href="#events">Events</a></li>
<li><a href="#resources">Resources</a></li>
<li><a href="#join">Join</a></li>
</ul>
</nav>
<a href="#join" class="btn btn-primary">Take Action</a>
</div>
</header>
<section class="hero">
<div class="container">
<div class="hero-grid">
<div class="hero-text">
<span class="eyebrow">A Movement for Collective Liberation</span>
<h1>Illuminating Paths. <span class="highlight">Uniting Communities.</span> Forging Justice.</h1>
<p class="hero-lead">For over two decades, Solstice Collective has been at the forefront of community organizing, building coalitions across neighborhoods, sectors, and identities to advance equity, dignity, and transformative change from the ground up.</p>
<div class="hero-ctas">
<a href="#join" class="btn btn-primary btn-large">Join the Movement</a>
<a href="#campaigns" class="btn btn-ghost btn-large">Explore Campaigns</a>
</div>
<div class="hero-meta">
<div class="hero-meta-item">
<div class="num">127K</div>
<div class="label">Active Members</div>
</div>
<div class="hero-meta-item">
<div class="num">42</div>
<div class="label">Active Campaigns</div>
</div>
<div class="hero-meta-item">
<div class="num">19</div>
<div class="label">Regional Chapters</div>
</div>
</div>
</div>
<div class="hero-image">
<img src="https://picsum.photos/seed/solstice-community-march/900/1125" alt="Community members marching together for justice">
<div class="hero-badge">
<span class="dot"></span>
<span><strong>Live:</strong> 3 actions happening in your area today</span>
</div>
</div>
</div>
</div>
</section>
<section class="stats">
<div class="container">
<div class="stats-grid">
<div class="stat-item">
<div class="stat-num">2.4M+</div>
<div class="stat-label">Lives Impacted</div>
</div>
<div class="stat-item">
<div class="stat-num">186</div>
<div class="stat-label">Policy Victories</div>
</div>
<div class="stat-item">
<div class="stat-num">$8.7M</div>
<div class="stat-label">Raised for Justice</div>
</div>
<div class="stat-item">
<div class="stat-num">4,300+</div>
<div class="stat-label">Trained Organizers</div>
</div>
</div>
</div>
</section>
<section class="section" id="campaigns">
<div class="container">
<div class="section-header">
<span class="eyebrow">Active Campaigns</span>
<h2>Where We're Making Change Right Now</h2>
<p>From local ballot measures to federal advocacy, our campaigns tackle the systems that shape everyday life. Every campaign is member-led and rooted in the lived experience of the communities most affected.</p>
</div>
<div class="campaigns-grid">
<article class="campaign-card">
<div class="campaign-image">
<img src="https://picsum.photos/seed/housing-justice-rally/700/450" alt="Housing justice rally">
<span class="campaign-tag">Featured</span>
</div>
<div class="campaign-content">
<h3>Housing for All: A Decade-Long Demand</h3>
<p>Pushing for tenant protections, public housing investment, and ending exclusionary zoning across 14 metro regions. We're coalition-building with renters, unhoused neighbors, and labor unions to make housing a human right, not a market commodity.</p>
<div class="campaign-progress">
<div class="progress-bar"><div class="progress-fill" style="width:74%"></div></div>
<div class="progress-meta"><span><strong>$487K</strong> raised</span><span><strong>74%</strong> of goal</span></div>
</div>
<a href="#" class="campaign-cta">Spread Awareness</a>
</div>
</article>
<article class="campaign-card">
<div class="campaign-image">
<img src="https://picsum.photos/seed/climate-justice-march/700/450" alt="Climate justice demonstration">
<span class="campaign-tag urgent">Urgent</span>
</div>
<div class="campaign-content">
<h3>Climate Justice Isn't Optional</h3>
<p>Centering frontline communities in climate policy—pushing for just transition funds, environmental equity, and corporate accountability across extractive industries. The communities that caused the crisis shouldn't write the solutions.</p>
<div class="campaign-progress">
<div class="progress-bar"><div class="progress-fill" style="width:62%"></div></div>
<div class="progress-meta"><span><strong>$312K</strong> raised</span><span><strong>62%</strong> of goal</span></div>
</div>
<a href="#" class="campaign-cta">Spread Awareness</a>
</div>
</article>
<article class="campaign-card">
<div class="campaign-image">
<img src="https://picsum.photos/seed/voting-rights-canvass/700/450" alt="Voter canvassing team">
<span class="campaign-tag">Grassroots</span>
</div>
<div class="campaign-content">
<h3>Our Voices, Our Vote</h3>
<p>A nonpartisan voter engagement initiative defending ballot access, expanding early voting, and protecting election workers from intimidation in 38 counties. Democracy works when everyone shows up.</p>
<div class="campaign-progress">
<div class="progress-bar"><div class="progress-fill" style="width:88%"></div></div>
<div class="progress-meta"><span><strong>$264K</strong> raised</span><span><strong>88%</strong> of goal</span></div>
</div>
<a href="#" class="campaign-cta">Spread Awareness</a>
</div>
</article>
</div>
</div>
</section>
<section class="section mission" id="about">
<div class="container">
<div class="mission-grid">
<div class="mission-image-wrap">
<div class="mission-image">
<img src="https://picsum.photos/seed/organizers-meeting-circle/800/1000" alt="Community organizers meeting in a circle">
</div>
<div class="mission-floating">
<div class="num">21</div>
<div class="text">Years of building power, side by side with communities most affected.</div>
</div>
</div>
<div class="mission-text">
<span class="eyebrow">Our Story & Approach</span>
<h2>We Don't Just Advocate. We Organize.</h2>
<p>Solstice Collective was founded in 2003 by a coalition of community organizers, faith leaders, and former public defenders who believed that lasting social change doesn't come from the top down—it emerges when ordinary people build extraordinary power together.</p>
<p>Today, we are a 127,000-member organization with chapters in 19 regions, coordinating across issue silos because the problems we face—housing insecurity, climate collapse, criminalization, economic precarity—share the same root causes. Our theory of change is simple: <strong>organized people, with clear demands, supported by deep relationships, win concrete victories that transform conditions and shift culture.</strong></p>
<p>We train, resource, and coordinate with frontline organizers who already know what their communities need. We bring research, legal strategy, communications infrastructure, and coalition muscle. They bring the legitimacy, the lived expertise, and the relationships that no amount of money can buy.</p>
<div class="mission-pillars">
<div class="pillar">
<div class="pillar-icon">⚖</div>
<div>
<h4>Movement Lawyering</h4>
<p>Strategic legal support for organizers facing retaliation, plus impact litigation on systemic issues affecting our members.</p>
</div>
</div>
<div class="pillar">
<div class="pillar-icon">✊</div>
<div>
<h4>Grassroots Power-Building</h4>
<p>Door-knocking, deep canvassing, and member-led organizing in neighborhoods across the country.</p>
</div>
</div>
<div class="pillar">
<div class="pillar-icon">🌱</div>
<div>
<h4>Leadership Development</h4>
<p>A 14-week fellowship that has graduated over 4,300 community leaders into long-term organizing careers.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="section events" id="events">
<div class="container">
<div class="section-header">
<span class="eyebrow">Find Your Local Action</span>
<h2>Events, Trainings & Direct Actions Near You</h2>
<p>Whether you've got two hours or twenty, there's a way to plug in. Filter by issue area, format, or location to find what's happening this month in your community.</p>
</div>
<div class="event-finder">
<div class="event-filters">
<div class="filter-group">
<label>Issue Area</label>
<select id="filter-issue">
<option value="">All Issues</option>
<option>Housing</option>
<option>Climate</option>
<option>Criminal Justice</option>
<option>Economic Justice</option>
<option>Immigrant Rights</option>
<option>Voting Rights</option>
</select>
</div>
<div class="filter-group">
<label>Format</label>
<select id="filter-format">
<option value="">All Formats</option>
<option>In-Person</option>
<option>Virtual</option>
<option>Hybrid</option>
</select>
</div>
<div class="filter-group">
<label>Location</label>
<input type="text" placeholder="City or ZIP" id="filter-location">
</div>
<div class="filter-group">
<label>Commitment</label>
<select id="filter-time">
<option value="">Any Time</option>
<option>Under 2 hours</option>
<option>One-time event</option>
<option>Ongoing role</option>
</select>
</div>
<button class="btn btn-secondary" onclick="filterEvents()">Search</button>
</div>
<div class="event-list" id="event-list">
<article class="event-card">
<div class="event-date">
<div class="event-date-box">
<span class="month">Oct</span>
<span class="day">12</span>
</div>
<div class="event-meta">
<strong>Saturday, 10:00 AM</strong><br>
Westlake Community Center
</div>
</div>
<h3>Know Your Rights Training</h3>
<p>A 90-minute workshop on tenant rights, immigrant protections, and what to do if approached by federal agents.</p>
<div class="event-tags">
<span class="event-tag">Housing</span>
<span class="event-tag">Immigrant Rights</span>
</div>
<a href="#" class="event-link">Register Now →</a>
</article>
<article class="event-card">
<div class="event-date">
<div class="event-date-box">
<span class="month">Oct</span>
<span class="day">15</span>
</div>
<div class="event-meta">
<strong>Tuesday, 6:30 PM</strong><br>
Virtual · Zoom
</div>
</div>
<h3>Climate Justice Town Hall</h3>
<p>Frontline community members share what's at stake in the upcoming environmental policy hearings. Q&A with organizers.</p>
<div class="event-tags">
<span class="event-tag">Climate</span>
<span class="event-tag">Virtual</span>
</div>
<a href="#" class="event-link">Register Now →</a>
</article>
<article class="event-card">
<div class="event-date">
<div class="event-date-box">
<span class="month">Oct</span>
<span class="day">19</span>
</div>
<div class="event-meta">
<strong>Saturday, 9:00 AM</strong><br>
City Hall Steps · Downtown
</div>
</div>
<h3>Renters' Rights March & Rally</h3>
<p>A family-friendly march demanding an end to no-cause evictions and the passage of the Tenant Protection Act.</p>
<div class="event-tags">
<span class="event-tag">Housing</span>
<span class="event-tag">Rally</span>
</div>
<a href="#" class="event-link">Register Now →</a>
</article>
<article class="event-card">
<div class="event-date">
<div class="event-date-box">
<span class="month">Nov</span>
<span class="day">02</span>
</div>
<div class="event-meta">
<strong>Sunday, 2:00 PM</strong><br>
Lincoln Park Pavilion
</div>
</div>
<h3>Volunteer Canvass Kickoff</h3>
<p>Join hundreds of volunteers knocking doors across the district to talk with neighbors about ballot measures 4 & 7.</p>
<div class="event-tags">
<span class="event-tag">Voting Rights</span>
<span class="event-tag">Canvassing</span>
</div>
<a href="#" class="event-link">Register Now →</a>
</article>
<article class="event-card">
<div class="event-date">
<div class="event-date-box">
<span class="month">Nov</span>
<span class="day">08</span>
</div>
<div class="event-meta">
<strong>Saturday, All Day</strong><br>
Regional Convention Center
</div>
</div>
<h3>Organizer's Convergence 2024</h3>
<p>Our annual gathering of 1,200+ organizers, lawyers, and strategists. Three days of training, planning, and rest.</p>
<div class="event-tags">
<span class="event-tag">Training</span>
<span class="event-tag">Multi-Day</span>
</div>
<a href="#" class="event-link">Register Now →</a>
</article>
<article class="event-card">
<div class="event-date">
<div class="event-date-box">
<span class="month">Nov</span>
<span class="day">14</span>
</div>
<div class="event-meta">
<strong>Thursday, 7:00 PM</strong><br>
Virtual · Zoom
</div>
</div>
<h3>Criminal Justice Reform Briefing</h3>
<p>A panel discussion with directly-impacted leaders on the statewide ballot initiative to end cash bail.</p>
<div class="event-tags">
<span class="event-tag">Criminal Justice</span>
<span class="event-tag">Virtual</span>
</div>
<a href="#" class="event-link">Register Now →</a>
</article>
</div>
</div>
</div>
</section>
<section class="section volunteer" id="join">
<div class="container">
<div class="section-header">
<span class="eyebrow light">Volunteer & Member Roles</span>
<h2>Show Up In The Way That Works For You</h2>
<p>Movements are made of people. Whether you can give a Saturday or a career, your time and skills are the lifeblood of collective action. Choose a role that fits your life right now.</p>
</div>
<div class="opp-grid">
<div class="opp-card">
<div class="opp-icon">📞</div>
<h3>Phone Bank Volunteer</h3>
<p>Call neighbors to talk about local ballot measures and upcoming actions. We provide the script, training, and snacks. Two-hour shifts available evenings and weekends.</p>
<div class="opp-meta">
<span>~2 hrs / week</span>
<strong>Apply →</strong>
</div>
</div>
<div class="opp-card">
<div class="opp-icon">🚪</div>
<h3>Door-to-Door Canvasser</h3>
<p>Walk a route in your own neighborhood, listening to concerns and inviting people into the conversation. Always in pairs, never alone.</p>
<div class="opp-meta">
<span>~4 hrs / week</span>
<strong>Apply →</strong>
</div>
</div>
<div class="opp-card">
<div class="opp-icon">🎨</div>
<h3>Design & Creative Team</h3>
<p>Make the work visible. Help design flyers, social media graphics, signs, and merch for campaigns. Remote-friendly, project-based work.</p>
<div class="opp-meta">
<span>Flexible</span>
<strong>Apply →</strong>
</div>
</div>
<div class="opp-card">
<div class="opp-icon">🗣</div>
<h3>Storytelling Circle Host</h3>
<p>Facilitate small gatherings where members share their experiences with injustice and imagine solutions together. Full training provided.</p>
<div class="opp-meta">
<span>Monthly</span>
<strong>Apply →</strong>
</div>
</div>
<div class="opp-card">
<div class="opp-icon">⚖</div>
<h3>Pro Bono Legal Support</h3>
<p>Attorneys, paralegals, and law students supporting organizers facing SLAPP suits, defending arrested protesters, and impact litigation.</p>
<div class="opp-meta">
<span>As needed</span>
<strong>Apply →</strong>
</div>
</div>
<div class="opp-card">
<div class="opp-icon">🌐</div>
<h3>Translation & Interpretation</h3>
<p>Help our materials and events reach every neighbor. Especially seeking Spanish, Vietnamese, Mandarin, ASL, and Arabic speakers.</p>
<div class="opp-meta">
<span>Project-based</span>
<strong>Apply →</strong>
</div>
</div>
</div>
</div>
</section>
<section class="section" id="resources">
<div class="container">
<div class="section-header">
<span class="eyebrow">Resource Center</span>
<h2>Tools, Research & Skill-Building</h2>
<p>Knowledge is a collective resource. Browse our library of toolkits, policy briefs, organizing manuals, and training videos—free to use, adapt, and share under an open license.</p>
</div>
<div class="resource-tabs">
<button class="resource-tab active">All Resources</button>
<button class="resource-tab">Toolkits</button>
<button class="resource-tab">Research</button>
<button class="resource-tab">Training</button>
<button class="resource-tab">Legal</button>
<button class="resource-tab">Stories</button>
</div>
<div class="resource-grid">
<article class="resource-card">
<div class="resource-thumb">
<img src="https://picsum.photos/seed/organizing-handbook/500/320" alt="Organizing handbook">
</div>
<div class="resource-content">
<span class="resource-type">Toolkit · 64 pages</span>
<h3>The Door-Knocking Handbook</h3>
<p>A field-tested guide to relational canvassing, with sample scripts, safety protocols, and tips for tough conversations.</p>
<div class="resource-meta">
<span>📄 PDF</span>
<span>⬇ 12.4K downloads</span>
</div>
</div>
</article>
<article class="resource-card">
<div class="resource-thumb">
<img src="https://picsum.photos/seed/research-brief/500/320" alt="Research report">
</div>
<div class="resource-content">
<span class="resource-type">Research Brief</span>
<h3>Displacement in the Sun Belt</h3>
<p>A five-state analysis of post-pandemic displacement patterns, with policy recommendations grounded in resident testimony.</p>
<div class="resource-meta">
<span>📄 PDF</span>
<span>⬇ 8.1K downloads</span>
</div>
</div>
</article>
<article class="resource-card">
<div class="resource-thumb">
<img src="https://picsum.photos/seed/training-workshop/500/320" alt="Training workshop">
</div>
<div class="resource-content">
<span class="resource-type">Training · 8 videos</span>
<h3>De-Escalation & Direct Action Safety</h3>
<p>Eight modules covering protest safety, legal observer roles, peer support, and bystander intervention frameworks.</p>
<div class="resource-meta">
<span>🎬 Video series</span>
<span>⬇ 23K views</span>
</div>
</div>
</article>
<article class="resource-card">
<div class="resource-thumb">
<img src="https://picsum.photos/seed/legal-reference/500/320" alt="Legal reference">
</div>
<div class="resource-content">
<span class="resource-type">Legal Guide</span>
<h3>Protest Law Across 50 States</h3>
<p>An interactive map and reference guide to protest rights, permitting requirements, and key case law in every jurisdiction.</p>
<div class="resource-meta">
<span>🌐 Interactive</span>
<span>Updated monthly</span>
</div>
</div>
</article>
</div>
</div>
</section>
<section class="section testimonials" id="success-stories">
<div class="container">
<div class="section-header">
<span class="eyebrow">Voices From The Movement</span>
<h2>Stories From Members & Organizers</h2>
<p>Behind every campaign is a person who decided their conditions weren't inevitable. These are some of them.</p>
</div>
<div class="testimonial-grid">
<div class="testimonial-card">
<p class="testimonial-text">I came to Solstice after my family was evicted. Two years later, I'm on the board of our tenant union and we just won just-cause protections for the entire city. I found my purpose here—and a community that refuses to accept injustice as inevitable.</p>
<div class="testimonial-author">
<div class="testimonial-avatar"><img src="https://i.pravatar.cc/120?u=marcella-reyes" alt="Marcella Reyes"></div>
<div class="testimonial-info">
<div class="name">Marcella Reyes</div>
<div class="role">Tenant Union Organizer · Phoenix</div>
</div>
</div>
</div>
<div class="testimonial-card">
<p class="testimonial-text">The leadership fellowship changed the trajectory of my career. I came in wanting to volunteer on weekends; I left with a job offer as a regional director. Now I run training cohorts for new members across the Southeast.</p>
<div class="testimonial-author">
<div class="testimonial-avatar"><img src="https://i.pravatar.cc/120?u=james-okonkwo" alt="James Okonkwo"></div>
<div class="testimonial-info">
<div class="name">James Okonkwo</div>
<div class="role">Regional Director · Atlanta</div>
</div>
</div>
</div>
<div class="testimonial-card">
<p class="testimonial-text">As an immigration attorney, I'd spent years defending individuals one case at a time. Solstice taught me how to use my training to defend systems—to challenge the laws themselves, not just navigate them. That's the work I was always meant to do.</p>
<div class="testimonial-author">
<div class="testimonial-avatar"><img src="https://i.pravatar.cc/120?u=priya-anand" alt="Priya Anand"></div>
<div class="testimonial-info">
<div class="name">Priya Anand</div>
<div class="role">Movement Lawyer · Houston</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="section" id="faq">
<div class="container">
<div class="section-header">
<span class="eyebrow">Common Questions</span>
<h2>Frequently Asked</h2>
<p>If you have questions about membership, campaigns, or how your contribution is used, you're in the right place. Don't see your question? Reach out—we read every message.</p>
</div>
<div class="faq-list">
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
<span>How is Solstice Collective different from a traditional nonprofit or advocacy group?</span>
<span class="faq-icon">+</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
<p>We're structured as a 501(c)(4) social welfare organization, which means we can engage in political activity—but that's not what makes us different. What makes us different is that we are member-led, not staff-led.</p>
<p>Our staff exists to resource the strategies and demands developed by our chapters. We don't pick the issues and ask people to support them—we listen to what communities are already organizing around and bring organizational muscle to those fights. The people most affected set the agenda.</p>
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
<span>Do I need experience to get involved as a volunteer?</span>
<span class="faq-icon">+</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
<p>Absolutely not. Most of our most effective volunteers started with no organizing background. We provide training for every role—door-knocking, phone banking, event facilitation, legal observation, communications, translation, and more.</p>
<p>The only prerequisites are a willingness to listen, respect for the leadership of directly-impacted communities, and a commitment to show up when you say you will. We meet you where you are.</p>
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
<span>Where does my donation actually go?</span>
<span class="faq-icon">+</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
<p>Every dollar is published in our annual financial transparency report, broken down by program, chapter, and campaign. In our most recent fiscal year, 87 cents of every dollar went directly to organizing, training, legal support, and direct member services.</p>
<p>We cap administrative overhead at 13%, which covers fundraising, accounting, and the bare minimum of operations needed to keep an organization of 130,000 members running. Our full audited financials are available on our Financial Transparency page.</p>
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
<span>I'm an organizer in a different group. Can we partner?</span>
<span class="faq-icon">+</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
<p>Yes—and we actively seek coalition with aligned organizations. We've built powerful coalitions with tenants' unions, worker centers, immigrant defense networks, climate justice groups, mutual aid collectives, and faith communities across the country.</p>
<p>Reach out to our coalition team at partners@solsticecollective.org with a brief description of your organization and what you're working on. We'll set up a discovery call to explore alignment and figure out how our strategies can reinforce each other.</p>
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question" onclick="toggleFaq(this)">
<span>What happens if I sign up for membership and it doesn't feel right?</span>
<span class="faq-icon">+</span>
</button>
<div class="faq-answer">
<div class="faq-answer-inner">
<p>That's totally fine. Membership is free, and there are no obligations. We send a weekly newsletter and occasional action alerts—you can unsubscribe anytime with one click.</p>
<p>If something about our approach doesn't sit right with you, we'd genuinely love to hear why. Member feedback shapes how we evolve as an organization. The only way we get better is by listening to people who tell us when we're missing the mark.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="section cta-section">
<div class="container">
<div class="cta-inner">
<h2>Add Your Voice to the Chorus</h2>
<p class="lead">Movements are made of people who decided their silence was not an option. Get our weekly organizing briefing in your inbox—the strategies, the wins, the asks, the analysis.</p>
<form class="newsletter-form" onsubmit="event.preventDefault();this.querySelector('button').textContent='Welcome! ✓';this.querySelector('input').value='';">
<input type="email" placeholder="Your email address" required>
<button type="submit">Subscribe</button>
</form>
<p class="cta-fineprint">No spam. Unsubscribe anytime. We never sell your data.</p>
</div>
</div>
</section>
<footer class="site-footer">
<div class="container">
<div class="footer-grid">
<div>
<div class="footer-brand">
<div class="logo-icon">SC</div>
<span>Solstice Collective</span>
</div>
<p class="footer-about">A member-led organization building collective power for housing justice, climate action, immigrant rights, criminal legal reform, and economic dignity since 2003.</p>
<div class="footer-social">
<a href="#" class="social-link" aria-label="Instagram">📷</a>
<a href="#" class="social-link" aria-label="Twitter / X">𝕏</a>
<a href="#" class="social-link" aria-label="Facebook">f</a>
<a href="#" class="social-link" aria-label="YouTube">▶</a>
<a href="#" class="social-link" aria-label="LinkedIn">in</a>
</div>
</div>
<div class="footer-col">
<h4>Get Involved</h4>
<ul>
<li><a href="#">Become a Member</a></li>
<li><a href="#">Volunteer Roles</a></li>
<li><a href="#">Start a Chapter</a></li>
<li><a href="#">Leadership Fellowship</a></li>
<li><a href="#">Donate</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Our Work</h4>
<ul>
<li><a href="#">Active Campaigns</a></li>
<li><a href="#">Issue Areas</a></li>
<li><a href="#">Policy Wins</a></li>
<li><a href="#">Annual Report</a></li>
<li><a href="#">Press & Media</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Connect</h4>
<ul>
<li><a href="mailto:connect@solsticecollective.org">connect@solsticecollective.org</a></li>
<li><a href="tel:+18005552987">+1 (800) 555-2987</a></li>
<li>1842 Magnolia Avenue<br>Suite 300<br>Oakland, CA 94612</li>
</ul>
</div>
</div>
<div class="footer-bottom">
<div>© 2024 Solstice Collective. A 501(c)(4) social welfare organization. EIN 87-1932847.</div>
<div class="footer-bottom-links">
<a href="#">Privacy Policy</a>
<a href="#">Terms of Use</a>
<a href="#">Financial Transparency</a>
<a href="#">Accessibility</a>
</div>
</div>
</div>
</footer>
<script>
function toggleFaq(btn){
const item = btn.parentElement;
const answer = item.querySelector('.faq-answer');
const allItems = document.querySelectorAll('.faq-item');
allItems.forEach(i=>{
if(i!==item){
i.classList.remove('open');
i.querySelector('.faq-answer').style.maxHeight = null;
}
});
item.classList.toggle('open');
if(item.classList.contains('open')){
answer.style.maxHeight = answer.scrollHeight + 'px';
} else {
answer.style.maxHeight = null;
}
}
function filterEvents(){
const issue = document.getElementById('filter-issue').value.toLowerCase();
const format = document.getElementById('filter-format').value;
const location = document.getElementById('filter-location').value.toLowerCase();
const cards = document.querySelectorAll('.event-card');
let visible = 0;
cards.forEach(card=>{
const tags = Array.from(card.querySelectorAll('.event-tag')).map(t=>t.textContent.toLowerCase());
const text = card.textContent.toLowerCase();
let show = true;
if(issue && !tags.some(t=>t.includes(issue))) show = false;
if(format==='Virtual' && !text.includes('virtual')) show = false;
if(format==='In-Person' && text.includes('virtual')) show = false;
if(location && !text.includes(location)) show = false;
card.style.display = show ? 'block' : 'none';
if(show) visible++;
});
if(visible===0){
const btn = document.querySelector('.event-filters button');
const orig = btn.textContent;
btn.textContent = 'No matches — broaden search';
setTimeout(()=>{btn.textContent=orig}, 2500);
}
}
document.querySelectorAll('.resource-tab').forEach(tab=>{
tab.addEventListener('click', ()=>{
document.querySelectorAll('.resource-tab').forEach(t=>t.classList.remove('active'));
tab.classList.add('active');
});
});
</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:08.699Z",
"url": "https://benchmark.aimac.invalid/4d696fdc0be698ddb82c0ff9eac0a89fad314d917cb041b7b6df95a4e0d209e4.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "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=\"social-link\" aria-label=\"Instagram\">\ud83d\udcf7</a>",
"target": [
"a[aria-label=\"Instagram\"]"
]
}
]
},
{
"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=\"social-link\" aria-label=\"Instagram\">\ud83d\udcf7</a>",
"target": [
"a[aria-label=\"Instagram\"]"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<a href=\"#\" class=\"social-link\" aria-label=\"Instagram\">\ud83d\udcf7</a>",
"target": [
"a[aria-label=\"Instagram\"]"
]
}
]
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-valid-attr-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute values are valid"
},
{
"id": "aria-errormessage",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
},
{
"id": "aria-level",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-level values are valid"
}
],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"social-link\" aria-label=\"Instagram\">\ud83d\udcf7</a>",
"target": [
"a[aria-label=\"Instagram\"]"
]
}
]
},
{
"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=\"social-link\" aria-label=\"Instagram\">\ud83d\udcf7</a>",
"target": [
"a[aria-label=\"Instagram\"]"
]
}
]
},
{
"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=\"opacity:0.4;margin:0 0.75rem\">|</span>",
"target": [
".topbar-contact > 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=\"btn btn-secondary\" onclick=\"filterEvents()\">Search</button>",
"target": [
".btn-secondary"
]
}
]
},
{
"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>Illuminating Paths. <span class=\"highlight\">Uniting Communities.</span> Forging Justice.</h1>",
"target": [
"h1"
]
},
{
"html": "<h2>Where We're Making Change Right Now</h2>",
"target": [
"#campaigns > .container > .section-header > h2"
]
},
{
"html": "<h3>Housing for All: A Decade-Long Demand</h3>",
"target": [
".campaign-card:nth-child(1) > .campaign-content > h3"
]
},
{
"html": "<h3>Climate Justice Isn't Optional</h3>",
"target": [
".campaign-card:nth-child(2) > .campaign-content > h3"
]
},
{
"html": "<h3>Our Voices, Our Vote</h3>",
"target": [
".campaign-card:nth-child(3) > .campaign-content > h3"
]
},
{
"html": "<h2>We Don't Just Advocate. We Organize.</h2>",
"target": [
".mission-text > h2"
]
},
{
"html": "<h4>Movement Lawyering</h4>",
"target": [
".pillar:nth-child(1) > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Grassroots Power-Building</h4>",
"target": [
".pillar:nth-child(2) > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Leadership Development</h4>",
"target": [
".pillar:nth-child(3) > div:nth-child(2) > h4"
]
},
{
"html": "<h2>Events, Trainings & Direct Actions Near You</h2>",
"target": [
"#events > .container > .section-header > h2"
]
},
{
"html": "<h3>Know Your Rights Training</h3>",
"target": [
".event-card:nth-child(1) > h3"
]
},
{
"html": "<h3>Climate Justice Town Hall</h3>",
"target": [
".event-card:nth-child(2) > h3"
]
},
{
"html": "<h3>Renters' Rights March & Rally</h3>",
"target": [
".event-card:nth-child(3) > h3"
]
},
{
"html": "<h3>Volunteer Canvass Kickoff</h3>",
"target": [
".event-card:nth-child(4) > h3"
]
},
{
"html": "<h3>Organizer's Convergence 2024</h3>",
"target": [
".event-card:nth-child(5) > h3"
]
},
{
"html": "<h3>Criminal Justice Reform Briefing</h3>",
"target": [
".event-card:nth-child(6) > h3"
]
},
{
"html": "<h2>Show Up In The Way That Works For You</h2>",
"target": [
"#join > .container > .section-header > h2"
]
},
{
"html": "<h3>Phone Bank Volunteer</h3>",
"target": [
".opp-card:nth-child(1) > h3"
]
},
{
"html": "<h3>Door-to-Door Canvasser</h3>",
"target": [
".opp-card:nth-child(2) > h3"
]
},
{
"html": "<h3>Design & Creative Team</h3>",
"target": [
".opp-card:nth-child(3) > h3"
]
},
{
"html": "<h3>Storytelling Circle Host</h3>",
"target": [
".opp-card:nth-child(4) > h3"
]
},
{
"html": "<h3>Pro Bono Legal Support</h3>",
"target": [
".opp-card:nth-child(5) > h3"
]
},
{
"html": "<h3>Translation & Interpretation</h3>",
"target": [
".opp-card:nth-child(6) > h3"
]
},
{
"html": "<h2>Tools, Research & Skill-Building</h2>",
"target": [
"#resources > .container > .section-header > h2"
]
},
{
"html": "<h3>The Door-Knocking Handbook</h3>",
"target": [
".resource-card:nth-child(1) > .resource-content > h3"
]
},
{
"html": "<h3>Displacement in the Sun Belt</h3>",
"target": [
".resource-card:nth-child(2) > .resource-content > h3"
]
},
{
"html": "<h3>De-Escalation & Direct Action Safety</h3>",
"target": [
".resource-card:nth-child(3) > .resource-content > h3"
]
},
{
"html": "<h3>Protest Law Across 50 States</h3>",
"target": [
".resource-card:nth-child(4) > .resource-content > h3"
]
},
{
"html": "<h2>Stories From Members & Organizers</h2>",
"target": [
"#success-stories > .container > .section-header > h2"
]
},
{
"html": "<h2>Frequently Asked</h2>",
"target": [
"#faq > .container > .section-header > h2"
]
},
{
"html": "<h2>Add Your Voice to the Chorus</h2>",
"target": [
".cta-inner > h2"
]
},
{
"html": "<h4>Get Involved</h4>",
"target": [
".footer-col:nth-child(2) > h4"
]
},
{
"html": "<h4>Our Work</h4>",
"target": [
".footer-col:nth-child(3) > h4"
]
},
{
"html": "<h4>Connect</h4>",
"target": [
".footer-col:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
}
],
"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": "#d8d8d8",
"bgColor": "#1a2b4a",
"contrastRatio": 9.89,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 9.89"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"mailto:connect@solsticecollective.org\">\u2709 connect@solsticecollective.org</a>",
"target": [
".topbar-contact > a:nth-child(1)"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<select id=\"filter-issue\">",
"target": [
"#filter-issue"
]
}
]
},
{
"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/solstice-community-march/900/1125\" alt=\"Community members marching together for justice\">",
"target": [
".hero-image > img"
]
}
]
},
{
"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": "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\" placeholder=\"City or ZIP\" id=\"filter-location\">",
"target": [
"#filter-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": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"event-link\">Register Now \u2192</a>",
"target": [
".event-card:nth-child(1) > .event-link[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"
}
],
"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=\"mailto:connect@solsticecollective.org\">\u2709 connect@solsticecollective.org</a>",
"target": [
".topbar-contact > a:nth-child(1)"
]
}
]
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "only-listitems",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List element only has direct children that are allowed inside <li> elements"
}
],
"impact": null,
"html": "<ul>",
"target": [
"nav > ul"
]
}
]
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "listitem",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "List item has a <ul>, <ol> or role=\"list\" parent element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<li><a href=\"#\" class=\"active\">Home</a></li>",
"target": [
"nav > ul > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://picsum.photos/seed/solstice-community-march/900/1125\" alt=\"Community members marching together for justice\">",
"target": [
".hero-image > img"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\">Member Sign In</a>",
"target": [
".topbar-links > a[href=\"#\"]:nth-child(1)"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "13.8pt (18.4px)",
"fontWeight": "bold",
"messageKey": "bgGradient",
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"logo-icon\">SC</div>",
"target": [
".logo > .logo-icon"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"logo-icon\">SC</div>",
"target": [
".logo > .logo-icon"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a background gradient"
}
]
}
],
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#faf6f1",
"contrastRatio": 2.79,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-header\">",
"target": [
"header"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"active\">Home</a>",
"target": [
".active[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#faf6f1",
"bgColor": "#e07856",
"contrastRatio": 2.79,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#join\" class=\"btn btn-primary\">Take Action</a>",
"target": [
".header-inner > .btn-primary.btn[href$=\"#join\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #faf6f1, background color: #e07856, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#join\" class=\"btn btn-primary\">Take Action</a>",
"target": [
".header-inner > .btn-primary.btn[href$=\"#join\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #faf6f1, background color: #e07856, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#faf6f1",
"bgColor": "#e07856",
"contrastRatio": 2.79,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#join\" class=\"btn btn-primary btn-large\">Join the Movement</a>",
"target": [
".btn-primary.btn-large[href$=\"#join\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #faf6f1, background color: #e07856, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#join\" class=\"btn btn-primary btn-large\">Join the Movement</a>",
"target": [
".btn-primary.btn-large[href$=\"#join\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #faf6f1, background color: #e07856, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#faf6f1",
"contrastRatio": 2.79,
"fontSize": "9.8pt (13.12px)",
"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.79 (foreground color: #e07856, background color: #faf6f1, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Active Campaigns</span>",
"target": [
"#campaigns > .container > .section-header > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#ffffff",
"contrastRatio": 3,
"fontSize": "11.0pt (14.72px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"campaign-card\">",
"target": [
".campaign-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 11.0pt (14.72px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"campaign-cta\">Spread Awareness</a>",
"target": [
".campaign-card:nth-child(1) > .campaign-content > .campaign-cta[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 11.0pt (14.72px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#faf6f1",
"bgColor": "#c45a3c",
"contrastRatio": 4,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"campaign-tag urgent\">Urgent</span>",
"target": [
".urgent"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4 (foreground color: #faf6f1, background color: #c45a3c, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"campaign-tag urgent\">Urgent</span>",
"target": [
".urgent"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4 (foreground color: #faf6f1, background color: #c45a3c, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#ffffff",
"contrastRatio": 3,
"fontSize": "11.0pt (14.72px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"campaign-card\">",
"target": [
".campaign-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 11.0pt (14.72px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"campaign-cta\">Spread Awareness</a>",
"target": [
".campaign-card:nth-child(2) > .campaign-content > .campaign-cta[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 11.0pt (14.72px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#ffffff",
"contrastRatio": 3,
"fontSize": "11.0pt (14.72px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"campaign-card\">",
"target": [
".campaign-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 11.0pt (14.72px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"campaign-cta\">Spread Awareness</a>",
"target": [
".campaign-card:nth-child(3) > .campaign-content > .campaign-cta[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 11.0pt (14.72px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#faf6f1",
"bgColor": "#e07856",
"contrastRatio": 2.79,
"fontSize": "30.0pt (40px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"mission-floating\">\n <div class=\"num\">21</div>\n <div class=\"text\">Years of building power, side by side with communities most affected.</div>\n </div>",
"target": [
".mission-floating"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #faf6f1, background color: #e07856, font size: 30.0pt (40px), font weight: bold). Expected contrast ratio of 3:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"num\">21</div>",
"target": [
".mission-floating > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #faf6f1, background color: #e07856, font size: 30.0pt (40px), font weight: bold). Expected contrast ratio of 3:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#f9f0e9",
"bgColor": "#e07856",
"contrastRatio": 2.67,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"mission-floating\">\n <div class=\"num\">21</div>\n <div class=\"text\">Years of building power, side by side with communities most affected.</div>\n </div>",
"target": [
".mission-floating"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.67 (foreground color: #f9f0e9, background color: #e07856, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"text\">Years of building power, side by side with communities most affected.</div>",
"target": [
".text"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.67 (foreground color: #f9f0e9, background color: #e07856, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#ffffff",
"contrastRatio": 3,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"section mission\" id=\"about\">",
"target": [
"#about"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Our Story & Approach</span>",
"target": [
".mission-text > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Housing</span>",
"target": [
".event-card:nth-child(1) > .event-tags > .event-tag:nth-child(1)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Housing</span>",
"target": [
".event-card:nth-child(1) > .event-tags > .event-tag:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Immigrant Rights</span>",
"target": [
".event-card:nth-child(1) > .event-tags > .event-tag:nth-child(2)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Immigrant Rights</span>",
"target": [
".event-card:nth-child(1) > .event-tags > .event-tag:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#faf6f1",
"contrastRatio": 2.79,
"fontSize": "10.6pt (14.08px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"event-link\">Register Now \u2192</a>",
"target": [
".event-card:nth-child(1) > .event-link[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Climate</span>",
"target": [
".event-card:nth-child(2) > .event-tags > .event-tag:nth-child(1)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Climate</span>",
"target": [
".event-card:nth-child(2) > .event-tags > .event-tag:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Virtual</span>",
"target": [
".event-card:nth-child(2) > .event-tags > .event-tag:nth-child(2)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Virtual</span>",
"target": [
".event-card:nth-child(2) > .event-tags > .event-tag:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#faf6f1",
"contrastRatio": 2.79,
"fontSize": "10.6pt (14.08px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"event-link\">Register Now \u2192</a>",
"target": [
".event-card:nth-child(2) > .event-link[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Housing</span>",
"target": [
".event-card:nth-child(3) > .event-tags > .event-tag:nth-child(1)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Housing</span>",
"target": [
".event-card:nth-child(3) > .event-tags > .event-tag:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Rally</span>",
"target": [
".event-card:nth-child(3) > .event-tags > .event-tag:nth-child(2)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Rally</span>",
"target": [
".event-card:nth-child(3) > .event-tags > .event-tag:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#faf6f1",
"contrastRatio": 2.79,
"fontSize": "10.6pt (14.08px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"event-link\">Register Now \u2192</a>",
"target": [
".event-card:nth-child(3) > .event-link[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Voting Rights</span>",
"target": [
".event-card:nth-child(4) > .event-tags > .event-tag:nth-child(1)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Voting Rights</span>",
"target": [
".event-card:nth-child(4) > .event-tags > .event-tag:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Canvassing</span>",
"target": [
".event-card:nth-child(4) > .event-tags > .event-tag:nth-child(2)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Canvassing</span>",
"target": [
".event-card:nth-child(4) > .event-tags > .event-tag:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#faf6f1",
"contrastRatio": 2.79,
"fontSize": "10.6pt (14.08px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"event-link\">Register Now \u2192</a>",
"target": [
".event-card:nth-child(4) > .event-link[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Training</span>",
"target": [
".event-card:nth-child(5) > .event-tags > .event-tag:nth-child(1)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), 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(5) > .event-tags > .event-tag:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Multi-Day</span>",
"target": [
".event-card:nth-child(5) > .event-tags > .event-tag:nth-child(2)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Multi-Day</span>",
"target": [
".event-card:nth-child(5) > .event-tags > .event-tag:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#faf6f1",
"contrastRatio": 2.79,
"fontSize": "10.6pt (14.08px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(5)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"event-link\">Register Now \u2192</a>",
"target": [
".event-card:nth-child(5) > .event-link[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Criminal Justice</span>",
"target": [
".event-card:nth-child(6) > .event-tags > .event-tag:nth-child(1)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(6)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Criminal Justice</span>",
"target": [
".event-card:nth-child(6) > .event-tags > .event-tag:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#5a7d56",
"bgColor": "#e7e8df",
"contrastRatio": 3.77,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"event-tag\">Virtual</span>",
"target": [
".event-card:nth-child(6) > .event-tags > .event-tag:nth-child(2)"
]
},
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(6)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"event-tag\">Virtual</span>",
"target": [
".event-card:nth-child(6) > .event-tags > .event-tag:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.77 (foreground color: #5a7d56, background color: #e7e8df, font size: 8.6pt (11.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#faf6f1",
"contrastRatio": 2.79,
"fontSize": "10.6pt (14.08px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"event-card\">",
"target": [
".event-card:nth-child(6)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#\" class=\"event-link\">Register Now \u2192</a>",
"target": [
".event-card:nth-child(6) > .event-link[href=\"#\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 10.6pt (14.08px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#253552",
"contrastRatio": 4.08,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"opp-card\">",
"target": [
".opp-card:nth-child(1)"
]
},
{
"html": "<section class=\"section volunteer\" id=\"join\">",
"target": [
"#join"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>Apply \u2192</strong>",
"target": [
".opp-card:nth-child(1) > .opp-meta > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#253552",
"contrastRatio": 4.08,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"opp-card\">",
"target": [
".opp-card:nth-child(2)"
]
},
{
"html": "<section class=\"section volunteer\" id=\"join\">",
"target": [
"#join"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>Apply \u2192</strong>",
"target": [
".opp-card:nth-child(2) > .opp-meta > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#253552",
"contrastRatio": 4.08,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"opp-card\">",
"target": [
".opp-card:nth-child(3)"
]
},
{
"html": "<section class=\"section volunteer\" id=\"join\">",
"target": [
"#join"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>Apply \u2192</strong>",
"target": [
".opp-card:nth-child(3) > .opp-meta > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#253552",
"contrastRatio": 4.08,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"opp-card\">",
"target": [
".opp-card:nth-child(4)"
]
},
{
"html": "<section class=\"section volunteer\" id=\"join\">",
"target": [
"#join"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>Apply \u2192</strong>",
"target": [
".opp-card:nth-child(4) > .opp-meta > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#253552",
"contrastRatio": 4.08,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"opp-card\">",
"target": [
".opp-card:nth-child(5)"
]
},
{
"html": "<section class=\"section volunteer\" id=\"join\">",
"target": [
"#join"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>Apply \u2192</strong>",
"target": [
".opp-card:nth-child(5) > .opp-meta > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#253552",
"contrastRatio": 4.08,
"fontSize": "10.2pt (13.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"opp-card\">",
"target": [
".opp-card:nth-child(6)"
]
},
{
"html": "<section class=\"section volunteer\" id=\"join\">",
"target": [
"#join"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<strong>Apply \u2192</strong>",
"target": [
".opp-card:nth-child(6) > .opp-meta > strong"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.08 (foreground color: #e07856, background color: #253552, font size: 10.2pt (13.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#faf6f1",
"contrastRatio": 2.79,
"fontSize": "9.8pt (13.12px)",
"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.79 (foreground color: #e07856, background color: #faf6f1, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Resource Center</span>",
"target": [
"#resources > .container > .section-header > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#ffffff",
"contrastRatio": 3,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"resource-card\">",
"target": [
".resource-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"resource-type\">Toolkit \u00b7 64 pages</span>",
"target": [
".resource-card:nth-child(1) > .resource-content > .resource-type"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#ffffff",
"contrastRatio": 3,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"resource-card\">",
"target": [
".resource-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"resource-type\">Research Brief</span>",
"target": [
".resource-card:nth-child(2) > .resource-content > .resource-type"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#ffffff",
"contrastRatio": 3,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"resource-card\">",
"target": [
".resource-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"resource-type\">Training \u00b7 8 videos</span>",
"target": [
".resource-card:nth-child(3) > .resource-content > .resource-type"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#ffffff",
"contrastRatio": 3,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"resource-card\">",
"target": [
".resource-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"resource-type\">Legal Guide</span>",
"target": [
".resource-card:nth-child(4) > .resource-content > .resource-type"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3 (foreground color: #e07856, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#e07856",
"bgColor": "#faf6f1",
"contrastRatio": 2.79,
"fontSize": "9.8pt (13.12px)",
"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.79 (foreground color: #e07856, background color: #faf6f1, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">Common Questions</span>",
"target": [
"#faq > .container > .section-header > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.79 (foreground color: #e07856, background color: #faf6f1, font size: 9.8pt (13.12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
},
{
"id": "select-name",
"impact": "critical",
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<select id=\"filter-issue\">",
"target": [
"#filter-issue"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<select id=\"filter-format\">\n <option value=\"\">All Formats</option>\n <option>In-Person</option>\n <option>Virtual</option>\n <option>Hybrid</option>\n </select>",
"target": [
"#filter-format"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<select id=\"filter-time\">\n <option value=\"\">Any Time</option>\n <option>Under 2 hours</option>\n <option>One-time event</option>\n <option>Ongoing role</option>\n </select>",
"target": [
"#filter-time"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 9375
},
{
"y": 576,
"height": 9375
},
{
"y": 1152,
"height": 9375
},
{
"y": 1728,
"height": 9375
},
{
"y": 2304,
"height": 9375
},
{
"y": 2880,
"height": 9375
},
{
"y": 3456,
"height": 9375
},
{
"y": 4032,
"height": 9375
},
{
"y": 4608,
"height": 9375
},
{
"y": 5184,
"height": 9375
},
{
"y": 5760,
"height": 9375
},
{
"y": 6336,
"height": 9375
},
{
"y": 6912,
"height": 9375
},
{
"y": 7488,
"height": 9375
},
{
"y": 8064,
"height": 9375
},
{
"y": 8640,
"height": 9375
},
{
"y": 8655,
"height": 9375
}
],
"scans": 18,
"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: "Join", "Campaigns", "Issues".
- **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: "Campaign Updates", "Volunteer Opportunities", "Resource Center".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "community organizing", "collective action", "empowerment".
- **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", "Register", "Join Movement".
- **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: "event finder".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "event calendar", "success stories", "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.