Qwen Qwen3.7 Plus – Non Profit Charity
via Alibaba · Generated
- AIMAC Debt 4.37
- Cost $0.02
- Total Violations 12
- HTML Size 58 KB
- Em Dashes 3
Screenshot
View Live Page
Accessibility Issues Found
12 Serious
-
color-contrast serious 12 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<a href="#donate" class="donate-btn">Donate Now</a>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Beacon of Hope Foundation | Illuminating Paths to a Brighter Tomorrow</title>
<style>
:root {
--primary: #1a6b5a;
--primary-dark: #0f4a3e;
--primary-light: #e8f5f1;
--accent: #d4943a;
--accent-light: #fef3e2;
--text: #2d3436;
--text-light: #636e72;
--white: #ffffff;
--off-white: #f8f9fa;
--border: #e0e6e3;
--shadow: 0 4px 20px rgba(0,0,0,0.08);
--shadow-lg: 0 10px 40px rgba(0,0,0,0.12);
--radius: 12px;
--radius-sm: 8px;
--transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
font-family: 'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif;
color: var(--text);
line-height: 1.7;
overflow-x: hidden;
}
/* HEADER */
.header {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1000;
background: rgba(255,255,255,0.97);
backdrop-filter: blur(10px);
border-bottom: 1px solid var(--border);
transition: var(--transition);
}
.header-inner {
max-width: 1280px;
margin: 0 auto;
padding: 0 2rem;
display: flex;
align-items: center;
justify-content: space-between;
height: 80px;
}
.logo-area {
display: flex;
align-items: center;
gap: 12px;
}
.logo-area img {
width: 48px;
height: 48px;
border-radius: 50%;
}
.logo-text {
display: flex;
flex-direction: column;
}
.logo-text .name {
font-size: 1.2rem;
font-weight: 700;
color: var(--primary-dark);
line-height: 1.2;
}
.logo-text .tagline {
font-size: 0.7rem;
color: var(--text-light);
letter-spacing: 0.5px;
text-transform: uppercase;
}
.nav {
display: flex;
align-items: center;
gap: 2rem;
}
.nav a {
text-decoration: none;
color: var(--text);
font-size: 0.9rem;
font-weight: 500;
transition: var(--transition);
position: relative;
}
.nav a:hover {
color: var(--primary);
}
.nav a::after {
content: '';
position: absolute;
bottom: -4px;
left: 0;
width: 0;
height: 2px;
background: var(--primary);
transition: var(--transition);
}
.nav a:hover::after {
width: 100%;
}
.nav .donate-btn {
background: var(--accent);
color: var(--white);
padding: 10px 24px;
border-radius: 50px;
font-weight: 600;
}
.nav .donate-btn:hover {
background: #c0852f;
transform: translateY(-1px);
}
.nav .donate-btn::after {
display: none;
}
.mobile-toggle {
display: none;
flex-direction: column;
gap: 5px;
cursor: pointer;
padding: 5px;
}
.mobile-toggle span {
width: 25px;
height: 2px;
background: var(--text);
transition: var(--transition);
}
/* HERO */
.hero {
margin-top: 80px;
min-height: 85vh;
display: flex;
align-items: center;
position: relative;
overflow: hidden;
background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary) 50%, #2d8f7b 100%);
}
.hero::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('https://picsum.photos/1920/1080?blur=2') center/cover;
opacity: 0.15;
}
.hero-content {
max-width: 1280px;
margin: 0 auto;
padding: 4rem 2rem;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
position: relative;
z-index: 2;
}
.hero-text h1 {
font-size: 3.5rem;
font-weight: 800;
color: var(--white);
line-height: 1.15;
margin-bottom: 1.5rem;
}
.hero-text h1 span {
color: var(--accent);
}
.hero-text p {
font-size: 1.15rem;
color: rgba(255,255,255,0.9);
margin-bottom: 2.5rem;
max-width: 520px;
line-height: 1.8;
}
.hero-ctas {
display: flex;
gap: 1rem;
flex-wrap: wrap;
}
.btn {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 14px 32px;
border-radius: 50px;
font-size: 1rem;
font-weight: 600;
text-decoration: none;
transition: var(--transition);
cursor: pointer;
border: none;
}
.btn-primary {
background: var(--accent);
color: var(--white);
}
.btn-primary:hover {
background: #c0852f;
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(212,148,58,0.4);
}
.btn-secondary {
background: rgba(255,255,255,0.15);
color: var(--white);
border: 2px solid rgba(255,255,255,0.4);
}
.btn-secondary:hover {
background: rgba(255,255,255,0.25);
transform: translateY(-2px);
}
.btn-outline {
background: transparent;
color: var(--primary);
border: 2px solid var(--primary);
}
.btn-outline:hover {
background: var(--primary);
color: var(--white);
transform: translateY(-2px);
}
.hero-image {
position: relative;
}
.hero-image img {
width: 100%;
border-radius: var(--radius);
box-shadow: var(--shadow-lg);
}
.hero-badge {
position: absolute;
bottom: -20px;
left: -20px;
background: var(--white);
padding: 1.2rem 1.5rem;
border-radius: var(--radius);
box-shadow: var(--shadow-lg);
display: flex;
align-items: center;
gap: 12px;
}
.hero-badge .number {
font-size: 2rem;
font-weight: 800;
color: var(--primary);
}
.hero-badge .label {
font-size: 0.8rem;
color: var(--text-light);
line-height: 1.3;
}
/* STATS BAR */
.stats-bar {
background: var(--white);
padding: 3rem 2rem;
border-bottom: 1px solid var(--border);
}
.stats-grid {
max-width: 1280px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 2rem;
}
.stat-item {
text-align: center;
padding: 1.5rem;
}
.stat-number {
font-size: 2.8rem;
font-weight: 800;
color: var(--primary);
line-height: 1;
margin-bottom: 0.5rem;
}
.stat-label {
font-size: 0.95rem;
color: var(--text-light);
font-weight: 500;
}
/* SECTIONS COMMON */
.section {
padding: 6rem 2rem;
}
.section-inner {
max-width: 1280px;
margin: 0 auto;
}
.section-header {
text-align: center;
max-width: 700px;
margin: 0 auto 4rem;
}
.section-label {
display: inline-block;
background: var(--primary-light);
color: var(--primary);
padding: 6px 16px;
border-radius: 50px;
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: 1rem;
}
.section-header h2 {
font-size: 2.5rem;
font-weight: 700;
color: var(--text);
margin-bottom: 1rem;
line-height: 1.2;
}
.section-header p {
font-size: 1.1rem;
color: var(--text-light);
line-height: 1.8;
}
/* ABOUT SECTION */
.about {
background: var(--off-white);
}
.about-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
}
.about-image {
position: relative;
}
.about-image img {
width: 100%;
border-radius: var(--radius);
box-shadow: var(--shadow);
}
.about-image::before {
content: '';
position: absolute;
top: -15px;
left: -15px;
width: 100px;
height: 100px;
background: var(--accent);
border-radius: var(--radius);
opacity: 0.3;
z-index: -1;
}
.about-content h3 {
font-size: 1.8rem;
margin-bottom: 1.5rem;
color: var(--primary-dark);
}
.about-content p {
margin-bottom: 1.2rem;
color: var(--text-light);
font-size: 1.05rem;
}
.about-values {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-top: 2rem;
}
.value-item {
display: flex;
align-items: flex-start;
gap: 10px;
}
.value-icon {
width: 32px;
height: 32px;
background: var(--primary-light);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
font-size: 0.9rem;
}
.value-item span {
font-size: 0.9rem;
font-weight: 500;
color: var(--text);
}
/* PROGRAMS */
.programs-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
.program-card {
background: var(--white);
border-radius: var(--radius);
overflow: hidden;
box-shadow: var(--shadow);
transition: var(--transition);
border: 1px solid var(--border);
}
.program-card:hover {
transform: translateY(-8px);
box-shadow: var(--shadow-lg);
}
.program-card img {
width: 100%;
height: 220px;
object-fit: cover;
}
.program-card-body {
padding: 2rem;
}
.program-card-body h3 {
font-size: 1.3rem;
margin-bottom: 0.8rem;
color: var(--primary-dark);
}
.program-card-body p {
color: var(--text-light);
font-size: 0.95rem;
margin-bottom: 1.5rem;
line-height: 1.7;
}
.program-link {
color: var(--primary);
font-weight: 600;
text-decoration: none;
font-size: 0.9rem;
display: inline-flex;
align-items: center;
gap: 6px;
transition: var(--transition);
}
.program-link:hover {
gap: 10px;
}
/* IMPACT STORIES */
.stories {
background: var(--primary-dark);
color: var(--white);
}
.stories .section-label {
background: rgba(255,255,255,0.1);
color: var(--accent);
}
.stories .section-header h2 {
color: var(--white);
}
.stories .section-header p {
color: rgba(255,255,255,0.7);
}
.stories-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
.story-card {
background: rgba(255,255,255,0.05);
border: 1px solid rgba(255,255,255,0.1);
border-radius: var(--radius);
padding: 2rem;
transition: var(--transition);
}
.story-card:hover {
background: rgba(255,255,255,0.1);
transform: translateY(-4px);
}
.story-card img {
width: 56px;
height: 56px;
border-radius: 50%;
margin-bottom: 1.2rem;
border: 3px solid var(--accent);
}
.story-card .quote {
font-size: 1rem;
line-height: 1.8;
color: rgba(255,255,255,0.9);
margin-bottom: 1.5rem;
font-style: italic;
}
.story-card .author {
font-weight: 600;
color: var(--accent);
font-size: 0.95rem;
}
.story-card .role {
font-size: 0.8rem;
color: rgba(255,255,255,0.5);
margin-top: 2px;
}
/* DONATION CALCULATOR */
.donation-section {
background: linear-gradient(135deg, var(--accent-light) 0%, #fff 100%);
}
.donation-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
}
.donation-content h3 {
font-size: 1.8rem;
margin-bottom: 1rem;
color: var(--primary-dark);
}
.donation-content p {
color: var(--text-light);
margin-bottom: 1.5rem;
font-size: 1.05rem;
}
.calculator {
background: var(--white);
border-radius: var(--radius);
padding: 2.5rem;
box-shadow: var(--shadow-lg);
border: 1px solid var(--border);
}
.calculator h4 {
font-size: 1.3rem;
margin-bottom: 0.5rem;
color: var(--primary-dark);
}
.calculator > p {
font-size: 0.9rem;
color: var(--text-light);
margin-bottom: 2rem;
}
.calc-field {
margin-bottom: 1.5rem;
}
.calc-field label {
display: block;
font-size: 0.85rem;
font-weight: 600;
color: var(--text);
margin-bottom: 0.5rem;
}
.amount-buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 0.5rem;
margin-bottom: 1rem;
}
.amount-btn {
padding: 12px;
border: 2px solid var(--border);
border-radius: var(--radius-sm);
background: var(--white);
font-weight: 600;
font-size: 0.95rem;
cursor: pointer;
transition: var(--transition);
color: var(--text);
}
.amount-btn:hover,
.amount-btn.active {
border-color: var(--primary);
background: var(--primary-light);
color: var(--primary);
}
.frequency-toggle {
display: flex;
background: var(--off-white);
border-radius: var(--radius-sm);
padding: 4px;
gap: 4px;
}
.freq-btn {
flex: 1;
padding: 10px;
border: none;
border-radius: 6px;
background: transparent;
font-weight: 500;
font-size: 0.85rem;
cursor: pointer;
transition: var(--transition);
color: var(--text-light);
}
.freq-btn.active {
background: var(--white);
color: var(--primary);
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
.calc-result {
margin-top: 1.5rem;
padding: 1.5rem;
background: var(--primary-light);
border-radius: var(--radius-sm);
text-align: center;
}
.calc-result .impact-text {
font-size: 0.9rem;
color: var(--primary-dark);
line-height: 1.6;
}
.calc-result .impact-text strong {
display: block;
font-size: 1.3rem;
margin-top: 0.3rem;
}
.calc-submit {
width: 100%;
margin-top: 1.5rem;
padding: 16px;
background: var(--primary);
color: var(--white);
border: none;
border-radius: var(--radius-sm);
font-size: 1rem;
font-weight: 600;
cursor: pointer;
transition: var(--transition);
}
.calc-submit:hover {
background: var(--primary-dark);
transform: translateY(-2px);
}
/* RESOURCES */
.resources-grid {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 3rem;
}
.resource-main {
display: grid;
gap: 1.5rem;
}
.resource-card {
display: grid;
grid-template-columns: 120px 1fr;
gap: 1.5rem;
padding: 1.5rem;
background: var(--white);
border-radius: var(--radius);
border: 1px solid var(--border);
transition: var(--transition);
align-items: center;
}
.resource-card:hover {
box-shadow: var(--shadow);
border-color: var(--primary);
}
.resource-card img {
width: 120px;
height: 90px;
object-fit: cover;
border-radius: var(--radius-sm);
}
.resource-card h4 {
font-size: 1.05rem;
margin-bottom: 0.4rem;
color: var(--primary-dark);
}
.resource-card p {
font-size: 0.88rem;
color: var(--text-light);
line-height: 1.6;
}
.resource-card .meta {
font-size: 0.75rem;
color: var(--accent);
font-weight: 600;
margin-top: 0.5rem;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.sidebar {
display: flex;
flex-direction: column;
gap: 2rem;
}
.sidebar-card {
background: var(--white);
border-radius: var(--radius);
padding: 2rem;
border: 1px solid var(--border);
}
.sidebar-card h4 {
font-size: 1.1rem;
margin-bottom: 1rem;
color: var(--primary-dark);
}
.partner-list {
display: flex;
flex-direction: column;
gap: 1rem;
}
.partner-item {
display: flex;
align-items: center;
gap: 10px;
}
.partner-item img {
width: 40px;
height: 40px;
border-radius: 8px;
}
.partner-item span {
font-size: 0.85rem;
font-weight: 500;
}
.newsletter-form {
display: flex;
flex-direction: column;
gap: 0.8rem;
}
.newsletter-form input {
padding: 12px 16px;
border: 1px solid var(--border);
border-radius: var(--radius-sm);
font-size: 0.9rem;
outline: none;
transition: var(--transition);
}
.newsletter-form input:focus {
border-color: var(--primary);
}
.newsletter-form button {
padding: 12px;
background: var(--primary);
color: var(--white);
border: none;
border-radius: var(--radius-sm);
font-weight: 600;
cursor: pointer;
transition: var(--transition);
}
.newsletter-form button:hover {
background: var(--primary-dark);
}
/* FAQ */
.faq {
background: var(--off-white);
}
.faq-list {
max-width: 800px;
margin: 0 auto;
}
.faq-item {
background: var(--white);
border-radius: var(--radius);
margin-bottom: 1rem;
border: 1px solid var(--border);
overflow: hidden;
transition: var(--transition);
}
.faq-item.active {
box-shadow: var(--shadow);
border-color: var(--primary);
}
.faq-question {
padding: 1.5rem 2rem;
display: flex;
align-items: center;
justify-content: space-between;
cursor: pointer;
font-weight: 600;
font-size: 1.05rem;
color: var(--text);
transition: var(--transition);
}
.faq-question:hover {
color: var(--primary);
}
.faq-icon {
width: 28px;
height: 28px;
border-radius: 50%;
background: var(--primary-light);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.2rem;
color: var(--primary);
transition: var(--transition);
flex-shrink: 0;
}
.faq-item.active .faq-icon {
background: var(--primary);
color: var(--white);
transform: rotate(45deg);
}
.faq-answer {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s ease;
}
.faq-answer-inner {
padding: 0 2rem 1.5rem;
color: var(--text-light);
line-height: 1.8;
font-size: 0.95rem;
}
/* CTA BANNER */
.cta-banner {
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
padding: 5rem 2rem;
text-align: center;
position: relative;
overflow: hidden;
}
.cta-banner::before {
content: '';
position: absolute;
top: -50%;
right: -20%;
width: 500px;
height: 500px;
background: rgba(255,255,255,0.03);
border-radius: 50%;
}
.cta-banner h2 {
font-size: 2.5rem;
color: var(--white);
margin-bottom: 1rem;
position: relative;
}
.cta-banner p {
font-size: 1.15rem;
color: rgba(255,255,255,0.8);
max-width: 600px;
margin: 0 auto 2.5rem;
position: relative;
}
.cta-buttons {
display: flex;
justify-content: center;
gap: 1rem;
position: relative;
flex-wrap: wrap;
}
/* FOOTER */
.footer {
background: #1a1f25;
color: rgba(255,255,255,0.7);
padding: 5rem 2rem 2rem;
}
.footer-grid {
max-width: 1280px;
margin: 0 auto;
display: grid;
grid-template-columns: 2fr 1fr 1fr 1fr;
gap: 3rem;
margin-bottom: 4rem;
}
.footer-brand .name {
font-size: 1.3rem;
font-weight: 700;
color: var(--white);
margin-bottom: 0.5rem;
}
.footer-brand p {
font-size: 0.9rem;
line-height: 1.8;
margin-bottom: 1.5rem;
}
.social-links {
display: flex;
gap: 12px;
}
.social-links a {
width: 40px;
height: 40px;
border-radius: 50%;
background: rgba(255,255,255,0.08);
display: flex;
align-items: center;
justify-content: center;
color: rgba(255,255,255,0.7);
text-decoration: none;
font-size: 0.85rem;
font-weight: 600;
transition: var(--transition);
}
.social-links a:hover {
background: var(--primary);
color: var(--white);
}
.footer-col h4 {
color: var(--white);
font-size: 1rem;
margin-bottom: 1.2rem;
}
.footer-col ul {
list-style: none;
}
.footer-col ul li {
margin-bottom: 0.7rem;
}
.footer-col ul li a {
color: rgba(255,255,255,0.6);
text-decoration: none;
font-size: 0.9rem;
transition: var(--transition);
}
.footer-col ul li a:hover {
color: var(--accent);
}
.footer-bottom {
max-width: 1280px;
margin: 0 auto;
padding-top: 2rem;
border-top: 1px solid rgba(255,255,255,0.08);
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 1rem;
}
.footer-bottom p {
font-size: 0.85rem;
}
.footer-bottom-links {
display: flex;
gap: 2rem;
}
.footer-bottom-links a {
color: rgba(255,255,255,0.5);
text-decoration: none;
font-size: 0.85rem;
transition: var(--transition);
}
.footer-bottom-links a:hover {
color: var(--accent);
}
/* RESPONSIVE */
@media (max-width: 1024px) {
.hero-content {
grid-template-columns: 1fr;
text-align: center;
}
.hero-text p {
margin-left: auto;
margin-right: auto;
}
.hero-ctas {
justify-content: center;
}
.hero-image {
max-width: 500px;
margin: 0 auto;
}
.programs-grid {
grid-template-columns: repeat(2, 1fr);
}
.stories-grid {
grid-template-columns: repeat(2, 1fr);
}
.donation-grid {
grid-template-columns: 1fr;
}
.resources-grid {
grid-template-columns: 1fr;
}
.footer-grid {
grid-template-columns: 1fr 1fr;
}
}
@media (max-width: 768px) {
.nav {
display: none;
}
.mobile-toggle {
display: flex;
}
.hero-text h1 {
font-size: 2.5rem;
}
.stats-grid {
grid-template-columns: repeat(2, 1fr);
}
.about-grid {
grid-template-columns: 1fr;
}
.programs-grid {
grid-template-columns: 1fr;
}
.stories-grid {
grid-template-columns: 1fr;
}
.section-header h2 {
font-size: 2rem;
}
.resource-card {
grid-template-columns: 1fr;
}
.resource-card img {
width: 100%;
height: 160px;
}
.footer-grid {
grid-template-columns: 1fr;
}
.amount-buttons {
grid-template-columns: repeat(2, 1fr);
}
}
/* ANIMATIONS */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate {
animation: fadeInUp 0.6s ease forwards;
}
.delay-1 { animation-delay: 0.1s; }
.delay-2 { animation-delay: 0.2s; }
.delay-3 { animation-delay: 0.3s; }
.delay-4 { animation-delay: 0.4s; }
</style>
</head>
<body>
<!-- HEADER -->
<header class="header">
<div class="header-inner">
<div class="logo-area">
<img src="https://placehold.co/48x48/1a6b5a/ffffff?text=BoH&font=montserrat" alt="Beacon of Hope Logo">
<div class="logo-text">
<span class="name">Beacon of Hope</span>
<span class="tagline">Illuminating paths to a brighter tomorrow</span>
</div>
</div>
<nav class="nav">
<a href="#about">About</a>
<a href="#programs">Programs</a>
<a href="#impact">Impact</a>
<a href="#resources">Blog</a>
<a href="#help">Get Help</a>
<a href="#faq">FAQ</a>
<a href="#donate" class="donate-btn">Donate Now</a>
</nav>
<div class="mobile-toggle" onclick="this.classList.toggle('active')">
<span></span>
<span></span>
<span></span>
</div>
</div>
</header>
<!-- HERO -->
<section class="hero">
<div class="hero-content">
<div class="hero-text">
<h1>Every Act of <span>Kindness</span> Creates a Ripple of Hope</h1>
<p>For over 15 years, Beacon of Hope Foundation has been empowering underserved communities through education, food security, disaster relief, and sustainable development programs across 32 countries worldwide.</p>
<div class="hero-ctas">
<a href="#donate" class="btn btn-primary">Start Giving Today</a>
<a href="#programs" class="btn btn-secondary">Our Programs →</a>
</div>
</div>
<div class="hero-image">
<img src="https://picsum.photos/600/450" alt="Volunteers working together in community">
<div class="hero-badge">
<div class="number">2.4M+</div>
<div class="label">Lives<br>Impacted</div>
</div>
</div>
</div>
</section>
<!-- STATS BAR -->
<section class="stats-bar">
<div class="stats-grid">
<div class="stat-item">
<div class="stat-number">$48M</div>
<div class="stat-label">Funds Distributed Since 2009</div>
</div>
<div class="stat-item">
<div class="stat-number">32</div>
<div class="stat-label">Countries with Active Programs</div>
</div>
<div class="stat-item">
<div class="stat-number">15K+</div>
<div class="stat-label">Active Volunteers Worldwide</div>
</div>
<div class="stat-item">
<div class="stat-number">94%</div>
<div class="stat-label">Of Donations Go Directly to Programs</div>
</div>
</div>
</section>
<!-- ABOUT -->
<section class="section about" id="about">
<div class="section-inner">
<div class="about-grid">
<div class="about-image">
<img src="https://picsum.photos/600/500" alt="Community members at a Beacon of Hope event">
</div>
<div class="about-content">
<span class="section-label">Who We Are</span>
<h3>Building Stronger Communities Through Compassion and Action</h3>
<p>Beacon of Hope Foundation was established in 2009 with a singular vision: to create lasting, measurable change in communities facing systemic challenges. What began as a small grassroots initiative in rural Guatemala has grown into a global movement touching millions of lives each year.</p>
<p>Our approach to charitable giving is rooted in evidence-based impact measurement and deep community partnerships. We don't just provide aid — we invest in people, equipping communities with the tools, knowledge, and resources they need to build self-sustaining futures. Every program we run is designed with long-term outcomes in mind, ensuring that our impact endures well beyond our direct involvement.</p>
<p>We believe that transparency, accountability, and genuine partnership are the cornerstones of effective philanthropy. That's why we publish annual impact reports, maintain open financial disclosures, and actively involve community members in program design and governance.</p>
<div class="about-values">
<div class="value-item">
<div class="value-icon">🎯</div>
<span>Impact-Driven Approach</span>
</div>
<div class="value-item">
<div class="value-icon">🤝</div>
<span>Community Partnership</span>
</div>
<div class="value-item">
<div class="value-icon">📊</div>
<span>Full Transparency</span>
</div>
<div class="value-item">
<div class="value-icon">🌱</div>
<span>Sustainable Solutions</span>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- PROGRAMS -->
<section class="section" id="programs">
<div class="section-inner">
<div class="section-header">
<span class="section-label">Our Programs</span>
<h2>Advocacy Initiatives That Transform Lives</h2>
<p>From classroom to crisis zone, our programs address the root causes of inequality and empower communities to thrive on their own terms.</p>
</div>
<div class="programs-grid">
<div class="program-card">
<img src="https://picsum.photos/400/220?grayscale" alt="Education program">
<div class="program-card-body">
<h3>Education Access Initiative</h3>
<p>Providing scholarships, learning materials, and teacher training to over 45,000 students annually across underserved regions. Our holistic education model includes after-school programs, digital literacy workshops, and mentorship networks that prepare young people for meaningful careers.</p>
<a href="#" class="program-link">Learn More →</a>
</div>
</div>
<div class="program-card">
<img src="https://picsum.photos/400/221" alt="Food security program">
<div class="program-card-body">
<h3>Food Security & Nutrition</h3>
<p>Operating 120+ community kitchens and sustainable agriculture programs that serve nutritious meals to families facing food insecurity. We combine immediate hunger relief with long-term agricultural training, helping communities develop resilient local food systems.</p>
<a href="#" class="program-link">Learn More →</a>
</div>
</div>
<div class="program-card">
<img src="https://picsum.photos/400/222" alt="Disaster relief program">
<div class="program-card-body">
<h3>Disaster Relief & Recovery</h3>
<p>Our rapid-response teams deploy within 48 hours of natural disasters, providing emergency shelter, clean water, medical supplies, and psychosocial support. Our recovery programs help communities rebuild stronger, with improved infrastructure and disaster preparedness training.</p>
<a href="#" class="program-link">Learn More →</a>
</div>
</div>
</div>
</div>
</section>
<!-- IMPACT STORIES -->
<section class="section stories" id="impact">
<div class="section-inner">
<div class="section-header">
<span class="section-label">Impact Stories</span>
<h2>Voices from the Communities We Serve</h2>
<p>Real stories from real people whose lives have been transformed through the generosity of our donors and the dedication of our volunteers.</p>
</div>
<div class="stories-grid">
<div class="story-card">
<img src="https://i.pravatar.cc/56?u=maria2024" alt="Maria Santos">
<p class="quote">"Thanks to the scholarship program, I became the first person in my family to attend university. Today I'm a nurse serving my own community. Beacon of Hope didn't just change my life — they changed the trajectory of my entire family."</p>
<div class="author">Maria Santos</div>
<div class="role">Education Program Graduate, Guatemala</div>
</div>
<div class="story-card">
<img src="https://i.pravatar.cc/56?u=james2024" alt="James Okonkwo">
<p class="quote">"When the floods destroyed our village, I thought we had lost everything. The disaster relief team arrived within two days. Six months later, they helped us rebuild with flood-resistant housing. We're safer now than we were before."</p>
<div class="author">James Okonkwo</div>
<div class="role">Disaster Recovery Beneficiary, Nigeria</div>
</div>
<div class="story-card">
<img src="https://i.pravatar.cc/56?u=priya2024" alt="Priya Sharma">
<p class="quote">"The agricultural training program taught our village sustainable farming techniques. Our crop yields have tripled, and we now have enough food to feed our families and sell at market. We went from depending on aid to becoming self-sufficient."</p>
<div class="author">Priya Sharma</div>
<div class="role">Agriculture Program Participant, India</div>
</div>
</div>
</div>
</section>
<!-- DONATION CALCULATOR -->
<section class="section donation-section" id="donate">
<div class="section-inner">
<div class="donation-grid">
<div class="donation-content">
<span class="section-label">Giving Portal</span>
<h3>See the Impact of Your Generosity</h3>
<p>Every dollar you contribute creates measurable, tangible change. Use our impact calculator to see exactly how your charitable giving translates into real-world outcomes for communities in need.</p>
<p>We maintain a commitment to radical transparency: 94 cents of every dollar goes directly to our programs. Our overhead costs are among the lowest in the sector, and our annual reports are publicly available for review.</p>
<p>Whether you choose to give once or set up a recurring donation, your contribution helps us plan ahead and maximize our reach. Together, we can ensure that no community is left behind.</p>
<a href="#" class="btn btn-outline" style="margin-top: 1rem;">View Annual Report →</a>
</div>
<div class="calculator">
<h4>Impact Calculator</h4>
<p>Choose an amount to see your potential impact</p>
<div class="calc-field">
<label>Select Donation Amount</label>
<div class="amount-buttons">
<button class="amount-btn" data-amount="25" onclick="selectAmount(this)">$25</button>
<button class="amount-btn active" data-amount="50" onclick="selectAmount(this)">$50</button>
<button class="amount-btn" data-amount="100" onclick="selectAmount(this)">$100</button>
<button class="amount-btn" data-amount="250" onclick="selectAmount(this)">$250</button>
</div>
</div>
<div class="calc-field">
<label>Donation Frequency</label>
<div class="frequency-toggle">
<button class="freq-btn active" onclick="selectFreq(this)">One-Time</button>
<button class="freq-btn" onclick="selectFreq(this)">Monthly</button>
<button class="freq-btn" onclick="selectFreq(this)">Annually</button>
</div>
</div>
<div class="calc-result" id="calcResult">
<div class="impact-text">
Your <strong id="impactText">$50 provides 250 nutritious meals</strong> for families facing food insecurity in our community kitchen network.
</div>
</div>
<button class="calc-submit" onclick="handleDonate()">Start Giving Now</button>
</div>
</div>
</div>
</section>
<!-- RESOURCES / BLOG -->
<section class="section" id="resources">
<div class="section-inner">
<div class="section-header">
<span class="section-label">Resource Center</span>
<h2>Insights, Stories & Advocacy Updates</h2>
<p>Stay informed about the issues that matter most. Our blog features field reports, policy analysis, volunteer stories, and practical guides for effective charitable giving.</p>
</div>
<div class="resources-grid">
<div class="resource-main">
<div class="resource-card">
<img src="https://picsum.photos/120/90" alt="Blog post image">
<div>
<h4>Measuring What Matters: Our 2024 Impact Report</h4>
<p>A comprehensive look at how we tracked outcomes across all 32 countries, including new metrics for long-term community resilience and self-sufficiency rates.</p>
<div class="meta">Impact Report • Dec 2024</div>
</div>
</div>
<div class="resource-card">
<img src="https://picsum.photos/120/91" alt="Blog post image">
<div>
<h4>The Case for Unrestricted Giving: Why Flexibility Matters</h4>
<p>Research shows that donors who give unrestricted funds enable nonprofits to respond faster to emerging needs and invest in innovation. Here's why we're making the case.</p>
<div class="meta">Advocacy • Nov 2024</div>
</div>
</div>
<div class="resource-card">
<img src="https://picsum.photos/120/92" alt="Blog post image">
<div>
<h4>From Volunteer to Leader: Sarah's Journey with Beacon of Hope</h4>
<p>How a two-week volunteer trip to Honduras turned into a decade-long commitment to community development and eventually a role as our Regional Director.</p>
<div class="meta">Volunteer Stories • Oct 2024</div>
</div>
</div>
<div class="resource-card">
<img src="https://picsum.photos/120/93" alt="Blog post image">
<div>
<h4>Hosting a Fundraiser? Here's Your Complete Guide</h4>
<p>From planning your first community bake sale to organizing a gala dinner, this step-by-step guide covers everything you need to host a successful fundraising event.</p>
<div class="meta">Fundraising Guide • Sep 2024</div>
</div>
</div>
</div>
<div class="sidebar">
<div class="sidebar-card">
<h4>Partner Highlights</h4>
<div class="partner-list">
<div class="partner-item">
<img src="https://placehold.co/40x40/1a6b5a/ffffff?text=UN&font=montserrat" alt="UN Partner">
<span>United Nations Development Programme</span>
</div>
<div class="partner-item">
<img src="https://placehold.co/40x40/d4943a/ffffff?text=RC&font=montserrat" alt="Red Cross">
<span>International Red Cross</span>
</div>
<div class="partner-item">
<img src="https://placehold.co/40x40/2d8f7b/ffffff?text=WF&font=montserrat" alt="World Food">
<span>World Food Programme</span>
</div>
<div class="partner-item">
<img src="https://placehold.co/40x40/0f4a3e/ffffff?text=GF&font=montserrat" alt="Gates Foundation">
<span>Gates Foundation</span>
</div>
</div>
</div>
<div class="sidebar-card">
<h4>Stay Updated</h4>
<p style="font-size: 0.88rem; color: var(--text-light); margin-bottom: 1rem;">Get monthly impact updates and stories delivered to your inbox.</p>
<form class="newsletter-form" onsubmit="event.preventDefault(); alert('Thank you for subscribing!')">
<input type="email" placeholder="Your email address" required>
<button type="submit">Subscribe</button>
</form>
</div>
<div class="sidebar-card" id="help">
<h4>Need Assistance?</h4>
<p style="font-size: 0.88rem; color: var(--text-light); margin-bottom: 1rem;">If you or someone you know needs help accessing our services, our support team is here for you.</p>
<a href="#" class="btn btn-outline" style="font-size: 0.85rem; padding: 10px 20px;">Get Help Now</a>
</div>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section class="section faq" id="faq">
<div class="section-inner">
<div class="section-header">
<span class="section-label">Common Questions</span>
<h2>Frequently Asked Questions</h2>
<p>Everything you need to know about donating, volunteering, and the impact of your support.</p>
</div>
<div class="faq-list">
<div class="faq-item active">
<div class="faq-question" onclick="toggleFaq(this)">
How is my donation used?
<span class="faq-icon">+</span>
</div>
<div class="faq-answer" style="max-height: 200px;">
<div class="faq-answer-inner">
We are committed to radical transparency in our use of funds. 94% of every dollar donated goes directly to our program services — education, food security, disaster relief, and community development. The remaining 6% covers essential administrative and fundraising costs. Our full financial statements and annual reports are published on our website and audited by an independent third party.
</div>
</div>
</div>
<div class="faq-item">
<div class="faq-question" onclick="toggleFaq(this)">
Can I volunteer remotely or internationally?
<span class="faq-icon">+</span>
</div>
<div class="faq-answer">
<div class="faq-answer-inner">
Absolutely! We offer both remote volunteering opportunities and international placements. Remote volunteers can contribute skills in translation, graphic design, grant writing, social media, data analysis, and more. International volunteers can apply for 2-week to 6-month placements in our field offices. All international volunteers receive pre-departure training, cultural orientation, and ongoing support throughout their placement.
</div>
</div>
</div>
<div class="faq-item">
<div class="faq-question" onclick="toggleFaq(this)">
Is my donation tax-deductible?
<span class="faq-icon">+</span>
</div>
<div class="faq-answer">
<div class="faq-answer-inner">
Yes. Beacon of Hope Foundation is a registered 501(c)(3) nonprofit organization (EIN: 47-2839156). All donations are tax-deductible to the extent allowed by law. You will receive a donation receipt via email immediately after your contribution. For donations over $250, we provide detailed acknowledgment letters suitable for tax filing purposes. We recommend consulting with your tax advisor for specific guidance.
</div>
</div>
</div>
<div class="faq-item">
<div class="faq-question" onclick="toggleFaq(this)">
How do you measure and report impact?
<span class="faq-icon">+</span>
</div>
<div class="faq-answer">
<div class="faq-answer-inner">
We employ a rigorous impact measurement framework that tracks both output metrics (number of meals served, students enrolled) and outcome metrics (graduation rates, food security index improvements, income growth). We use longitudinal studies, community surveys, and third-party evaluations to ensure our data is accurate and meaningful. Our annual Impact Report provides detailed breakdowns by program and region, and is available for public download.
</div>
</div>
</div>
<div class="faq-item">
<div class="faq-question" onclick="toggleFaq(this)">
How can I host a fundraiser for Beacon of Hope?
<span class="faq-icon">+</span>
</div>
<div class="faq-answer">
<div class="faq-answer-inner">
We love community-organized fundraisers! Whether you're planning a charity run, bake sale, gala dinner, or online campaign, we have resources to help you succeed. Visit our Fundraiser Toolkit page for downloadable materials, branding guidelines, and step-by-step planning guides. You can also contact our community partnerships team at fundraisers@beaconofhope.org for personalized support and advice.
</div>
</div>
</div>
</div>
</div>
</section>
<!-- CTA BANNER -->
<section class="cta-banner">
<h2>Ready to Make a Difference?</h2>
<p>Join thousands of donors, volunteers, and advocates who are building a more equitable world. Every action counts.</p>
<div class="cta-buttons">
<a href="#donate" class="btn btn-primary">Start Giving Today</a>
<a href="#" class="btn btn-secondary">Host a Fundraiser</a>
<a href="#" class="btn btn-secondary">Become a Volunteer</a>
</div>
</section>
<!-- FOOTER -->
<footer class="footer">
<div class="footer-grid">
<div class="footer-brand">
<div class="name">Beacon of Hope Foundation</div>
<p>Illuminating paths to a brighter tomorrow through education, food security, disaster relief, and sustainable community development. A registered 501(c)(3) nonprofit organization.</p>
<div class="social-links">
<a href="#" title="Facebook">fb</a>
<a href="#" title="Twitter">tw</a>
<a href="#" title="Instagram">ig</a>
<a href="#" title="LinkedIn">in</a>
<a href="#" title="YouTube">yt</a>
</div>
</div>
<div class="footer-col">
<h4>Programs</h4>
<ul>
<li><a href="#">Education Access</a></li>
<li><a href="#">Food Security</a></li>
<li><a href="#">Disaster Relief</a></li>
<li><a href="#">Community Dev</a></li>
<li><a href="#">Advocacy</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Get Involved</h4>
<ul>
<li><a href="#">Donate</a></li>
<li><a href="#">Volunteer</a></li>
<li><a href="#">Host Fundraiser</a></li>
<li><a href="#">Corporate Partners</a></li>
<li><a href="#">Planned Giving</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Contact</h4>
<ul>
<li><a href="mailto:info@beaconofhope.org">info@beaconofhope.org</a></li>
<li><a href="tel:+18005551234">+1 (800) 555-1234</a></li>
<li><a href="#">1200 Hope Avenue, Suite 400<br>Washington, DC 20036</a></li>
<li><a href="#">Get Help</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>© 2025 Beacon of Hope Foundation. All rights reserved. EIN: 47-2839156</p>
<div class="footer-bottom-links">
<a href="#">Privacy Policy</a>
<a href="#">Terms of Service</a>
<a href="#">Accessibility</a>
<a href="#">Financials</a>
</div>
</div>
</footer>
<script>
// Donation Calculator
const impactData = {
25: { text: '$25 provides school supplies for 5 children', detail: 'for an entire academic year in our Education Access program.' },
50: { text: '$50 provides 250 nutritious meals', detail: 'for families facing food insecurity in our community kitchen network.' },
100: { text: '$100 funds emergency shelter kits for 2 families', detail: 'displaced by natural disasters, including bedding, hygiene supplies, and clean water.' },
250: { text: '$250 sponsors a student for one full semester', detail: 'covering tuition, books, meals, and mentorship support in our Education Access Initiative.' }
};
function selectAmount(btn) {
document.querySelectorAll('.amount-btn').forEach(b => b.classList.remove('active'));
btn.classList.add('active');
const amount = btn.dataset.amount;
const data = impactData[amount];
document.getElementById('impactText').innerHTML = `${data.text}<br><span style="font-size:0.9rem;font-weight:400;">${data.detail}</span>`;
}
function selectFreq(btn) {
document.querySelectorAll('.freq-btn').forEach(b => b.classList.remove('active'));
btn.classList.add('active');
}
function handleDonate() {
const activeBtn = document.querySelector('.amount-btn.active');
const amount = activeBtn ? activeBtn.dataset.amount : '50';
alert(`Thank you for your generous donation of $${amount}! In a production environment, this would redirect you to our secure payment portal.`);
}
// FAQ Accordion
function toggleFaq(element) {
const item = element.parentElement;
const answer = item.querySelector('.faq-answer');
const isActive = item.classList.contains('active');
// Close all
document.querySelectorAll('.faq-item').forEach(faq => {
faq.classList.remove('active');
faq.querySelector('.faq-answer').style.maxHeight = '0';
});
// Open clicked if it wasn't active
if (!isActive) {
item.classList.add('active');
answer.style.maxHeight = answer.scrollHeight + 'px';
}
}
// Smooth scroll for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
const target = document.querySelector(this.getAttribute('href'));
if (target) {
e.preventDefault();
target.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
});
});
// Header scroll effect
window.addEventListener('scroll', () => {
const header = document.querySelector('.header');
if (window.scrollY > 50) {
header.style.boxShadow = '0 2px 20px rgba(0,0,0,0.1)';
} else {
header.style.boxShadow = 'none';
}
});
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T09:43:07.856Z",
"url": "https://benchmark.aimac.invalid/b04ae55a005d5bf5d50cae09572b0892c60b61c8c9bea0fdc967b6c71e039cc6.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-conditional-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are used as described in the specification of the element's role",
"help": "ARIA attributes must be used as specified for the element's role",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": []
},
{
"id": "aria-valid-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure attributes that begin with aria- are valid ARIA attributes",
"help": "ARIA attributes must conform to valid names",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "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": "select-name",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "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": "<a href=\"#\" class=\"btn btn-outline\" style=\"margin-top: 1rem;\">View Annual Report \u2192</a>",
"target": [
".donation-content > .btn-outline.btn[href=\"#\"]"
]
}
]
},
{
"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=\"amount-btn\" data-amount=\"25\" onclick=\"selectAmount(this)\">$25</button>",
"target": [
"button[data-amount=\"25\"]"
]
}
]
},
{
"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>Every Act of <span>Kindness</span> Creates a Ripple of Hope</h1>",
"target": [
"h1"
]
},
{
"html": "<h3>Building Stronger Communities Through Compassion and Action</h3>",
"target": [
".about-content > h3"
]
},
{
"html": "<h2>Advocacy Initiatives That Transform Lives</h2>",
"target": [
"#programs > .section-inner > .section-header > h2"
]
},
{
"html": "<h3>Education Access Initiative</h3>",
"target": [
".program-card:nth-child(1) > .program-card-body > h3"
]
},
{
"html": "<h3>Food Security & Nutrition</h3>",
"target": [
".program-card:nth-child(2) > .program-card-body > h3"
]
},
{
"html": "<h3>Disaster Relief & Recovery</h3>",
"target": [
".program-card:nth-child(3) > .program-card-body > h3"
]
},
{
"html": "<h2>Voices from the Communities We Serve</h2>",
"target": [
"#impact > .section-inner > .section-header > h2"
]
},
{
"html": "<h3>See the Impact of Your Generosity</h3>",
"target": [
".donation-content > h3"
]
},
{
"html": "<h4>Impact Calculator</h4>",
"target": [
".calculator > h4"
]
},
{
"html": "<h2>Insights, Stories & Advocacy Updates</h2>",
"target": [
"#resources > .section-inner > .section-header > h2"
]
},
{
"html": "<h4>Measuring What Matters: Our 2024 Impact Report</h4>",
"target": [
".resource-card:nth-child(1) > div > h4"
]
},
{
"html": "<h4>The Case for Unrestricted Giving: Why Flexibility Matters</h4>",
"target": [
".resource-card:nth-child(2) > div > h4"
]
},
{
"html": "<h4>From Volunteer to Leader: Sarah's Journey with Beacon of Hope</h4>",
"target": [
".resource-card:nth-child(3) > div > h4"
]
},
{
"html": "<h4>Hosting a Fundraiser? Here's Your Complete Guide</h4>",
"target": [
".resource-card:nth-child(4) > div > h4"
]
},
{
"html": "<h4>Partner Highlights</h4>",
"target": [
".sidebar-card:nth-child(1) > h4"
]
},
{
"html": "<h4>Stay Updated</h4>",
"target": [
".sidebar-card:nth-child(2) > h4"
]
},
{
"html": "<h4>Need Assistance?</h4>",
"target": [
"#help > h4"
]
},
{
"html": "<h2>Frequently Asked Questions</h2>",
"target": [
"#faq > .section-inner > .section-header > h2"
]
},
{
"html": "<h2>Ready to Make a Difference?</h2>",
"target": [
".cta-banner > h2"
]
},
{
"html": "<h4>Programs</h4>",
"target": [
".footer-col:nth-child(2) > h4"
]
},
{
"html": "<h4>Get Involved</h4>",
"target": [
".footer-col:nth-child(3) > h4"
]
},
{
"html": "<h4>Contact</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": "#0f4a3e",
"bgColor": "#ffffff",
"contrastRatio": 10.14,
"fontSize": "14.4pt (19.2px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "3:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 10.14"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span class=\"name\">Beacon of Hope</span>",
"target": [
".logo-text > .name"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "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": "<input type=\"email\" placeholder=\"Your email address\" required=\"\">",
"target": [
"input"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/48x48/1a6b5a/ffffff?text=BoH&font=montserrat\" alt=\"Beacon of Hope Logo\">",
"target": [
"img[alt=\"Beacon of Hope Logo\"]"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "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=\"email\" placeholder=\"Your email address\" required=\"\">",
"target": [
"input"
]
}
]
},
{
"id": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "link-in-text-block-style",
"data": null,
"relatedNodes": [
{
"html": "<div class=\"program-card-body\">",
"target": [
".program-card:nth-child(1) > .program-card-body"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" class=\"program-link\">Learn More \u2192</a>",
"target": [
".program-card:nth-child(1) > .program-card-body > .program-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=\"#about\">About</a>",
"target": [
"a[href$=\"#about\"]"
]
}
]
},
{
"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": [
".footer-col:nth-child(2) > 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=\"#\">Education Access</a></li>",
"target": [
".footer-col:nth-child(2) > ul > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/48x48/1a6b5a/ffffff?text=BoH&font=montserrat\" alt=\"Beacon of Hope Logo\">",
"target": [
"img[alt=\"Beacon of Hope Logo\"]"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 40.8,
"height": 24.5
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (40.8px by 24.5px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#about\">About</a>",
"target": [
"a[href$=\"#about\"]"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fontSize": "42.0pt (56px)",
"fontWeight": "bold",
"messageKey": "pseudoContent",
"expectedContrastRatio": "3:1"
},
"relatedNodes": [
{
"html": "<section class=\"hero\">",
"target": [
".hero"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a pseudo element"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<h1>Every Act of <span>Kindness</span> Creates a Ripple of Hope</h1>",
"target": [
"h1"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a pseudo element"
}
]
}
],
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#d4943a",
"contrastRatio": 2.59,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<a href=\"#donate\" class=\"donate-btn\">Donate Now</a>",
"target": [
".donate-btn"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.59 (foreground color: #ffffff, background color: #d4943a, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#donate\" class=\"donate-btn\">Donate Now</a>",
"target": [
".donate-btn"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.59 (foreground color: #ffffff, background color: #d4943a, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d4943a",
"bgColor": "#275c51",
"contrastRatio": 2.95,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"section-label\">Impact Stories</span>",
"target": [
"#impact > .section-inner > .section-header > .section-label"
]
},
{
"html": "<section class=\"section stories\" id=\"impact\">",
"target": [
"#impact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.95 (foreground color: #d4943a, background color: #275c51, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"section-label\">Impact Stories</span>",
"target": [
"#impact > .section-inner > .section-header > .section-label"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.95 (foreground color: #d4943a, background color: #275c51, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d4943a",
"bgColor": "#1b5348",
"contrastRatio": 3.4,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"story-card\">",
"target": [
".story-card:nth-child(1)"
]
},
{
"html": "<section class=\"section stories\" id=\"impact\">",
"target": [
"#impact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.4 (foreground color: #d4943a, background color: #1b5348, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"author\">Maria Santos</div>",
"target": [
".story-card:nth-child(1) > .author"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.4 (foreground color: #d4943a, background color: #1b5348, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8da9a4",
"bgColor": "#1b5348",
"contrastRatio": 3.5,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"story-card\">",
"target": [
".story-card:nth-child(1)"
]
},
{
"html": "<section class=\"section stories\" id=\"impact\">",
"target": [
"#impact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.5 (foreground color: #8da9a4, background color: #1b5348, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"role\">Education Program Graduate, Guatemala</div>",
"target": [
".story-card:nth-child(1) > .role"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.5 (foreground color: #8da9a4, background color: #1b5348, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d4943a",
"bgColor": "#1b5348",
"contrastRatio": 3.4,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"story-card\">",
"target": [
".story-card:nth-child(2)"
]
},
{
"html": "<section class=\"section stories\" id=\"impact\">",
"target": [
"#impact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.4 (foreground color: #d4943a, background color: #1b5348, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"author\">James Okonkwo</div>",
"target": [
".story-card:nth-child(2) > .author"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.4 (foreground color: #d4943a, background color: #1b5348, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8da9a4",
"bgColor": "#1b5348",
"contrastRatio": 3.5,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"story-card\">",
"target": [
".story-card:nth-child(2)"
]
},
{
"html": "<section class=\"section stories\" id=\"impact\">",
"target": [
"#impact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.5 (foreground color: #8da9a4, background color: #1b5348, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"role\">Disaster Recovery Beneficiary, Nigeria</div>",
"target": [
".story-card:nth-child(2) > .role"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.5 (foreground color: #8da9a4, background color: #1b5348, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d4943a",
"bgColor": "#1b5348",
"contrastRatio": 3.4,
"fontSize": "11.4pt (15.2px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"story-card\">",
"target": [
".story-card:nth-child(3)"
]
},
{
"html": "<section class=\"section stories\" id=\"impact\">",
"target": [
"#impact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.4 (foreground color: #d4943a, background color: #1b5348, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"author\">Priya Sharma</div>",
"target": [
".story-card:nth-child(3) > .author"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.4 (foreground color: #d4943a, background color: #1b5348, font size: 11.4pt (15.2px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#8da9a4",
"bgColor": "#1b5348",
"contrastRatio": 3.5,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"story-card\">",
"target": [
".story-card:nth-child(3)"
]
},
{
"html": "<section class=\"section stories\" id=\"impact\">",
"target": [
"#impact"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.5 (foreground color: #8da9a4, background color: #1b5348, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"role\">Agriculture Program Participant, India</div>",
"target": [
".story-card:nth-child(3) > .role"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.5 (foreground color: #8da9a4, background color: #1b5348, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d4943a",
"bgColor": "#ffffff",
"contrastRatio": 2.59,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"resource-card\">",
"target": [
".resource-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.59 (foreground color: #d4943a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"meta\">Impact Report \u2022 Dec 2024</div>",
"target": [
".resource-card:nth-child(1) > div > .meta"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.59 (foreground color: #d4943a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d4943a",
"bgColor": "#ffffff",
"contrastRatio": 2.59,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"resource-card\">",
"target": [
".resource-card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.59 (foreground color: #d4943a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"meta\">Advocacy \u2022 Nov 2024</div>",
"target": [
".resource-card:nth-child(2) > div > .meta"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.59 (foreground color: #d4943a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d4943a",
"bgColor": "#ffffff",
"contrastRatio": 2.59,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"resource-card\">",
"target": [
".resource-card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.59 (foreground color: #d4943a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"meta\">Volunteer Stories \u2022 Oct 2024</div>",
"target": [
".resource-card:nth-child(3) > div > .meta"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.59 (foreground color: #d4943a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#d4943a",
"bgColor": "#ffffff",
"contrastRatio": 2.59,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"resource-card\">",
"target": [
".resource-card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.59 (foreground color: #d4943a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"meta\">Fundraising Guide \u2022 Sep 2024</div>",
"target": [
".resource-card:nth-child(4) > div > .meta"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.59 (foreground color: #d4943a, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 7837
},
{
"y": 576,
"height": 7837
},
{
"y": 1152,
"height": 7837
},
{
"y": 1728,
"height": 7837
},
{
"y": 2304,
"height": 7837
},
{
"y": 2880,
"height": 7837
},
{
"y": 3456,
"height": 7837
},
{
"y": 4032,
"height": 7837
},
{
"y": 4608,
"height": 7837
},
{
"y": 5184,
"height": 7837
},
{
"y": 5760,
"height": 7837
},
{
"y": 6336,
"height": 7837
},
{
"y": 6912,
"height": 7837
},
{
"y": 7117,
"height": 7837
}
],
"scans": 15,
"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 "Non-Profit/Charity" 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: "Non-Profit/Charity"
- Description: Charitable organizations, non-profit initiatives, volunteering, and fundraising resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Non-Profit/Charity" 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: "Blog", "About", "Get Help".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Non-Profit/Charity" category. Consider themes similar to: "Resource Center", "Impact Stories", "Advocacy Initiatives".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "impact measurement", "advocacy", "charitable giving".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Start Giving", "Take Action", "Host Fundraiser".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Non-Profit/Charity" sector. Ideas similar but not limited to: "giving portal".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "partner highlights", "success stories", "donor recognition".
- **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.