Qwen Qwen3.8 27B – Non Profit Charity

via Parasail · Generated

  • AIMAC Debt 5.82
  • Cost $0.13
  • Total Violations 55
  • HTML Size 74 KB
  • Em Dashes 46

Screenshot

View Qwen Qwen3.8 27B Non Profit Charity page View Live Page

Accessibility Issues Found

55 Serious

  • color-contrast serious 55 instances

    Elements must meet minimum color contrast ratio thresholds

    Example HTML <a href="#give" class="btn">Give Now <span class="arw">→</span></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>The Open Table Project — Community Kitchens in Providence, RI</title>
<meta name="description" content="The Open Table Project is a registered 501(c)(3) running six community kitchens and 14 mobile pantry routes across Providence. 1,200 neighbors fed daily. Every table has room for one more.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300..900;1,9..144,300..900&family=Karla:ital,wght@0,300..800;1,300..800&family=Space+Mono:ital,wght@0,400;0,700;1,400&display=swap" rel="stylesheet">
<style>
/* ============ TOKENS ============ */
:root{
  --paper:#F6F1E5;
  --paper-2:#EDE5D2;
  --sage:#E3E6D8;
  --ink:#1F2E22;
  --pine:#1E3327;
  --pine-deep:#14211A;
  --clay:#C4571F;
  --clay-dark:#9E4216;
  --gold:#DFA93C;
  --cream:#F4EFE2;
  --muted:#5C6455;
  --line:rgba(31,46,34,.22);
  --shadow:0 18px 40px -18px rgba(31,46,34,.35);
  --disp:'Fraunces',Georgia,serif;
  --body:'Karla','Helvetica Neue',Arial,sans-serif;
  --mono:'Space Mono',ui-monospace,'Courier New',monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font:400 17px/1.65 var(--body);
  color:var(--ink);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
/* paper grain */
body::after{
  content:"";position:fixed;inset:0;z-index:2147483000;pointer-events:none;opacity:.05;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
}
::selection{background:var(--clay);color:var(--cream)}
img{display:block;max-width:100%}
a{color:inherit}
[id]{scroll-margin-top:96px}
.wrap{max-width:1220px;margin:0 auto;padding:0 28px}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:var(--cream);padding:.7rem 1.2rem;z-index:9999}
.skip:focus{left:12px}
:focus-visible{outline:3px solid var(--clay);outline-offset:2px}

.eyebrow{
  font:700 11px/1 var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--clay);
  display:inline-flex;align-items:center;gap:.6rem;margin-bottom:1.1rem;
}
.eyebrow::before{content:"✳";font-size:13px}
h1,h2,h3{font-family:var(--disp);font-weight:560;line-height:1.06;letter-spacing:-.01em}
h2{font-size:clamp(2.1rem,4.4vw,3.3rem)}
.italic{font-style:italic;font-weight:480;color:var(--clay)}
.btn{
  display:inline-flex;align-items:center;gap:.55rem;text-decoration:none;cursor:pointer;
  background:var(--clay);color:#FDF8EE;border:1.5px solid var(--clay);border-radius:3px;
  font:700 12.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;
  padding:1rem 1.55rem;transition:transform .25s ease,background .25s ease,border-color .25s ease,box-shadow .25s ease;
}
.btn:hover{background:var(--clay-dark);border-color:var(--clay-dark);transform:translateY(-2px);box-shadow:0 12px 22px -12px rgba(158,66,22,.6)}
.btn .arw{transition:transform .25s ease}
.btn:hover .arw{transform:translateX(4px)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn-ghost:hover{background:var(--ink);border-color:var(--ink);color:var(--cream);box-shadow:0 12px 22px -14px rgba(31,46,34,.5)}
.btn-cream{background:transparent;color:var(--cream);border-color:rgba(244,239,226,.5)}
.btn-cream:hover{background:var(--cream);color:var(--pine);border-color:var(--cream)}
.link-more{
  display:inline-flex;align-items:center;gap:.45rem;text-decoration:none;font:700 12px/1 var(--mono);
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink);border-bottom:1.5px solid var(--clay);
  padding-bottom:.3rem;transition:color .2s;
}
.link-more:hover{color:var(--clay)}
.link-more .arw{transition:transform .25s}
.link-more:hover .arw{transform:translateX(4px)}

/* ============ REVEAL / MOTION ============ */
[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .85s ease,transform .85s cubic-bezier(.22,1,.36,1);transition-delay:var(--d,0s)}
[data-reveal].in-view{opacity:1;transform:none}
.h-line{display:block;overflow:hidden;padding-bottom:.06em}
.h-line>span{display:block;transform:translateY(115%);animation:lineUp 1s cubic-bezier(.22,1,.36,1) forwards}
.h-line:nth-child(2)>span{animation-delay:.14s}
.h-line:nth-child(3)>span{animation-delay:.28s}
@keyframes lineUp{to{transform:translateY(0)}}
.kb{overflow:hidden}
.kb img{width:100%;height:100%;object-fit:cover;animation:kb 17s ease-in-out infinite alternate}
@keyframes kb{from{transform:scale(1) translate(0,0)}to{transform:scale(1.08) translate(1.6%,-1.4%)}}

/* ============ UTILITY BAR + HEADER ============ */
.util-bar{background:var(--ink);color:rgba(244,239,226,.85);font:400 10.5px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase}
.util-bar .wrap{display:flex;justify-content:space-between;gap:1rem;padding-top:9px;padding-bottom:9px}
.util-bar b{color:var(--gold);font-weight:700}
header#site-header{
  position:sticky;top:0;z-index:100;background:rgba(246,241,229,.96);
  border-bottom:1.5px solid var(--line);transition:box-shadow .3s ease;
}
header#site-header.scrolled{box-shadow:0 10px 30px -18px rgba(31,46,34,.4)}
.header-inner{display:flex;align-items:center;gap:2rem;padding-top:14px;padding-bottom:14px}
.brand{display:flex;align-items:center;gap:.8rem;text-decoration:none;margin-right:auto}
.brand img{width:46px;height:46px;border-radius:4px;box-shadow:0 0 0 1.5px var(--ink)}
.brand-text strong{display:block;font:600 19px/1.1 var(--disp);letter-spacing:-.01em}
.brand-text em{display:block;font:italic 500 11.5px/1.3 var(--disp);color:var(--muted);margin-top:2px}
#mainNav ul{display:flex;list-style:none;gap:1.6rem}
#mainNav a{
  text-decoration:none;font:700 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink);padding:.55rem 0;position:relative;
}
#mainNav a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background:var(--clay);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.22,1,.36,1)}
#mainNav a:hover::after,#mainNav a.active::after{transform:scaleX(1)}
#mainNav a.active{color:var(--clay)}
.nav-toggle{display:none;background:none;border:1.5px solid var(--ink);border-radius:3px;width:44px;height:40px;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.nav-toggle span{width:20px;height:2px;background:var(--ink);transition:transform .3s,opacity .3s}
.nav-open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-open .nav-toggle span:nth-child(2){opacity:0}
.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ============ HERO ============ */
.hero{position:relative;padding:70px 0 100px;overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:70px;align-items:center}
.hero h1{font-size:clamp(3rem,6.6vw,5.6rem);font-weight:600}
.hero-lede{margin:1.6rem 0 2rem;max-width:34rem;color:#39443a;font-size:1.06rem}
.hero-ctas{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;margin-bottom:2.6rem}
.hero-stats{display:flex;gap:0;border-top:1.5px solid var(--line);max-width:34rem}
.hero-stats .hs{flex:1;padding:1.1rem 1rem 0 0}
.hero-stats .hs + .hs{padding-left:1.2rem;border-left:1.5px solid var(--line)}
.hs-num{font:560 1.85rem/1 var(--disp);color:var(--ink);display:block}
.hs-lab{font:400 10px/1.5 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);display:block;margin-top:.45rem}
.hero-side{position:absolute;right:18px;top:120px;writing-mode:vertical-rl;font:700 10px/1 var(--mono);letter-spacing:.4em;color:rgba(31,46,34,.4);text-transform:uppercase}
/* visual composition */
.hero-visual{position:relative;padding:0 10px 40px 40px}
.hv-main{position:relative;z-index:1;border:2px solid var(--ink);box-shadow:14px 14px 0 var(--paper-2);aspect-ratio:4/5}
.hv-main img{filter:saturate(.92) contrast(1.02)}
.hv-pol{
  position:absolute;z-index:2;left:-6px;bottom:0;width:52%;background:#FDFBF5;padding:8px 8px 10px;
  transform:rotate(-3deg);box-shadow:var(--shadow);border:1px solid rgba(31,46,34,.12);
}
.hv-pol img{width:100%;height:auto}
.hv-pol figcaption{font:400 10px/1.4 var(--mono);color:var(--muted);padding-top:8px;letter-spacing:.04em}
.tape{position:absolute;top:-11px;left:50%;transform:translateX(-50%) rotate(-4deg);width:76px;height:22px;background:rgba(223,169,60,.72);border-left:1px dashed rgba(255,255,255,.5);border-right:1px dashed rgba(255,255,255,.5)}
.hv-log{
  position:absolute;z-index:3;right:-8px;top:34px;width:212px;background:var(--ink);color:var(--cream);
  padding:1.15rem 1.15rem 1.05rem;border-radius:4px;box-shadow:var(--shadow);font-family:var(--mono);
}
.log-k{font-size:9px;letter-spacing:.2em;color:var(--gold);text-transform:uppercase}
.log-n{font:700 2rem/1.1 var(--disp);color:var(--cream);margin:.55rem 0 .35rem}
.log-n small{font:400 10.5px/1.4 var(--mono);color:rgba(244,239,226,.7)}
.log-s{font-size:9.5px;letter-spacing:.06em;color:rgba(244,239,226,.6)}
.log-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#7BC47F;margin-right:6px;animation:pulse 1.6s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}

/* ============ TICKER ============ */
.ticker{background:var(--pine);color:var(--cream);overflow:hidden;border-top:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink)}
.ticker-track{display:flex;width:max-content;animation:tick 34s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker-seq{display:flex;align-items:center;white-space:nowrap;padding:13px 0}
.tk{font:700 11.5px/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;padding:0 1.6rem}
.tk-star{color:var(--gold)}
@keyframes tick{to{transform:translateX(-50%)}}

/* ============ MISSION ============ */
.mission{padding:110px 0 100px}
.mission-statement{font-size:clamp(1.9rem,3.8vw,3rem);max-width:21ch;margin-bottom:70px}
.mission-grid{display:grid;grid-template-columns:1.05fr .85fr;gap:70px;align-items:start;margin-bottom:84px}
.mission-copy p{margin-bottom:1.15rem;color:#39443a}
.mission-copy p:first-of-type::first-letter{
  font-family:var(--disp);font-weight:700;font-size:3.3em;float:left;line-height:.82;padding:.06em .12em 0 0;color:var(--clay);
}
.pull-quote{margin-top:1.8rem;border-left:3px solid var(--clay);padding-left:1.3rem;display:flex;gap:1rem;align-items:flex-start}
.pull-quote img{width:52px;height:52px;border-radius:50%;border:2px solid var(--ink);margin-top:4px}
.pull-quote blockquote{font:italic 500 1.12rem/1.5 var(--disp);color:var(--ink)}
.pull-quote cite{display:block;font:700 10px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:.6rem;font-style:normal}
.mission-fig{position:relative}
.mission-fig .frame{border:2px solid var(--ink);aspect-ratio:4/5;box-shadow:-14px 14px 0 var(--paper-2)}
.mission-fig figcaption{font:400 11px/1.5 var(--mono);color:var(--muted);padding:.7rem 2px 0}
.float-stat{
  position:absolute;right:-18px;bottom:56px;background:var(--gold);color:var(--ink);padding:1rem 1.2rem;
  box-shadow:var(--shadow);transform:rotate(2deg);border:1.5px solid var(--ink);
}
.float-stat b{font:560 1.7rem/1 var(--disp);display:block}
.float-stat span{font:700 9.5px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase}
/* pillars index list */
.pillars{border-top:1.5px solid var(--ink)}
.pillar{
  display:grid;grid-template-columns:90px 220px 1fr auto;gap:2rem;align-items:center;
  padding:1.9rem 0;border-bottom:1.5px solid var(--line);transition:background .3s ease,padding-left .3s ease;
}
.pillar:hover{background:rgba(196,87,31,.05);padding-left:14px}
.pillar-num{font:700 13px/1 var(--mono);color:var(--clay)}
.pillar h3{font-size:1.55rem;font-weight:600}
.pillar p{color:#39443a;font-size:.98rem}
.pillar .tag{font:700 9.5px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);padding:.45rem .6rem;border-radius:2px}

/* ============ DOLLAR / PROGRAMS ============ */
.dollar{background:var(--paper-2);padding:110px 0;border-top:1.5px solid var(--line)}
.dollar-head{max-width:52ch;margin-bottom:64px}
.dollar-head p{margin-top:1rem;color:#39443a}
.dollar-grid{display:grid;grid-template-columns:390px 1fr;gap:64px;align-items:start}
.dollar-sticky{position:sticky;top:110px;background:var(--paper);border:1.5px solid var(--ink);padding:2rem 1.9rem;box-shadow:10px 10px 0 var(--gold)}
.dollar-sticky h2{font-size:2rem;margin-bottom:.6rem}
.dollar-sub{font-size:.95rem;color:var(--muted);margin-bottom:1.6rem}
.alloc-row{margin-bottom:1.1rem}
.alloc-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.4rem}
.alloc-top span{font-size:.92rem;font-weight:600}
.alloc-top b{font:700 15px/1 var(--mono);color:var(--clay)}
.bar{height:10px;background:rgba(31,46,34,.12);border-radius:2px;overflow:hidden}
.fill{height:100%;width:0;background:var(--clay);transition:width 1.3s cubic-bezier(.22,1,.36,1) .25s}
.fill.alt{background:var(--ink)}
.fill.alt2{background:var(--gold)}
.in-view .fill{width:var(--w)}
.dollar-sticky .btn{width:100%;justify-content:center;margin-top:1.4rem}
.fineprint{font:400 10px/1.6 var(--mono);color:var(--muted);margin-top:1rem;letter-spacing:.04em}
.stage{
  display:grid;grid-template-columns:230px 1fr;gap:2rem;align-items:center;
  padding:2.2rem 0;border-bottom:1.5px solid var(--line);
}
.stage:first-child{padding-top:0}
.stage-img{border:1.5px solid var(--ink);aspect-ratio:3/2;box-shadow:6px 6px 0 rgba(31,46,34,.15)}
.stage-img img{transition:transform .6s cubic-bezier(.22,1,.36,1)}
.stage:hover .stage-img img{transform:scale(1.05)}
.stage-num{font:700 12px/1 var(--mono);color:var(--clay);display:block;margin-bottom:.5rem}
.stage h3{font-size:1.6rem;margin-bottom:.55rem}
.stage p{color:#39443a;font-size:.98rem;max-width:52ch}
.stage .cost{display:inline-block;margin-top:.8rem;font:700 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;background:var(--ink);color:var(--gold);padding:.5rem .7rem;border-radius:2px}

/* ============ IMPACT ============ */
.impact{padding:110px 0 120px}
.impact-head{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap;margin-bottom:2.6rem}
.impact-head p{max-width:38ch;color:#39443a}
.impact-band{display:grid;grid-template-columns:repeat(4,1fr);border-top:1.5px solid var(--ink);border-bottom:1.5px solid var(--line);margin-bottom:90px}
.ib{padding:1.8rem 1.2rem 1.6rem;border-left:1.5px solid var(--line)}
.ib:first-child{border-left:none;padding-left:0}
.ib-num{font:560 clamp(2.2rem,3.4vw,3.1rem)/1 var(--disp);color:var(--clay);display:block}
.ib-lab{font:400 10px/1.6 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);display:block;margin-top:.55rem}
/* postcards */
.postcards{display:grid;grid-template-columns:1fr 1fr;gap:56px 44px;max-width:1040px;margin:0 auto}
.postcard{
  background:#FDFBF4;border:1px solid rgba(31,46,34,.14);padding:12px 12px 0;box-shadow:var(--shadow);
  transform:rotate(var(--r,0deg)) translateY(var(--ty,0px));
  transition:transform .5s cubic-bezier(.22,1,.36,1),box-shadow .5s ease;position:relative;
}
.postcard:hover{transform:rotate(0deg) translateY(calc(var(--ty,0px) - 10px));box-shadow:0 30px 50px -20px rgba(31,46,34,.45)}
.pc-img{aspect-ratio:3/2;overflow:hidden}
.pc-img img{width:100%;height:100%;object-fit:cover}
.pc-avatar{position:absolute;top:-22px;right:20px;width:58px;height:58px;border-radius:50%;border:3px solid #FDFBF4;box-shadow:0 6px 14px -6px rgba(31,46,34,.4)}
.postcard figcaption{padding:1.1rem .5rem 1.3rem}
.pc-tag{font:700 9.5px/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--clay)}
.postcard blockquote{font:italic 500 1.13rem/1.5 var(--disp);margin:.65rem 0 .8rem}
.pc-name{font:700 11px/1.5 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}

/* ============ VOLUNTEER ============ */
.volunteer{background:var(--sage);padding:110px 0;border-top:1.5px solid var(--line)}
.vol-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:70px;align-items:start}
.vol-copy .big-hours{margin:2rem 0 2.4rem;border-left:3px solid var(--clay);padding-left:1.3rem}
.big-hours b{font:560 3.2rem/1 var(--disp);display:block}
.big-hours span{font:400 10px/1.6 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.shifts{display:flex;flex-direction:column;gap:14px}
.shift{
  background:#FBF8EF;border:1.5px solid var(--ink);padding:1.2rem 1.4rem;display:grid;
  grid-template-columns:1fr auto;gap:.6rem 1.5rem;align-items:center;transition:transform .3s ease,box-shadow .3s ease;
}
.shift:hover{transform:translateX(8px);box-shadow:-8px 8px 0 var(--clay)}
.shift h3{font-size:1.25rem;font-weight:600}
.shift .meta{font:400 11px/1.7 var(--mono);color:var(--muted);letter-spacing:.03em}
.shift .spots{font:700 10px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;background:var(--gold);color:var(--ink);padding:.45rem .6rem;border:1px solid var(--ink);grid-column:1}
.shift .btn{padding:.75rem 1.1rem;font-size:11px}

/* ============ EVENTS ============ */
.events{padding:110px 0}
.event{
  display:grid;grid-template-columns:110px 1fr auto;gap:2.2rem;align-items:center;
  padding:2rem 1.4rem;border-bottom:1.5px solid var(--line);transition:background .3s ease;
}
.event:first-of-type{border-top:1.5px solid var(--ink)}
.event:hover{background:var(--paper-2)}
.date-block{border:2px solid var(--ink);text-align:center;padding:.8rem 0 .7rem;background:var(--paper)}
.date-block .d{font:560 2.1rem/1 var(--disp);display:block}
.date-block .m{font:700 10px/1 var(--mono);letter-spacing:.3em;text-transform:uppercase;color:var(--clay);display:block;margin-top:.3rem}
.event h3{font-size:1.55rem;font-weight:600;margin-bottom:.35rem}
.event .loc{font:700 10.5px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--clay);display:block;margin-bottom:.5rem}
.event p{color:#39443a;font-size:.95rem;max-width:56ch}
.event .cap{font:400 10px/1.6 var(--mono);color:var(--muted);display:block;margin-top:.5rem}

/* ============ GIVE (dark) ============ */
.give{background:var(--pine);color:var(--cream);padding:110px 0;border-top:1.5px solid var(--ink)}
.give .eyebrow{color:var(--gold)}
.give h2{color:var(--cream)}
.give-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:70px;align-items:start}
.give-copy p{color:rgba(244,239,226,.78);margin:1.2rem 0 0;max-width:44ch}
.trust{list-style:none;margin-top:1.8rem}
.trust li{font:400 12px/1.5 var(--mono);letter-spacing:.06em;padding:.75rem 0;border-bottom:1px solid rgba(244,239,226,.18);display:flex;gap:.8rem;align-items:center}
.trust li::before{content:"✓";color:var(--gold);font-weight:700}
/* donation widget */
.give-widget{background:var(--paper);color:var(--ink);border:1.5px solid var(--ink);box-shadow:12px 12px 0 var(--gold);margin-top:2.4rem;padding:1.9rem 1.8rem}
.give-widget h3{font-size:1.35rem;font-weight:600;margin-bottom:1.2rem}
.freq-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:1.2rem}
.freq-btn{
  border:1.5px solid var(--ink);background:transparent;padding:.85rem;cursor:pointer;border-radius:3px;
  font:700 11.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;transition:all .25s;position:relative;
}
.freq-btn.active{background:var(--ink);color:var(--cream)}
.freq-btn .flag{position:absolute;top:-9px;right:8px;background:var(--clay);color:#fff;font:700 8px/1 var(--mono);letter-spacing:.08em;padding:3px 5px;text-transform:uppercase}
.chips{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:.9rem}
.chip{
  border:1.5px solid var(--line);background:#fff;padding:.95rem .4rem;cursor:pointer;border-radius:3px;
  font:700 15px/1 var(--mono);transition:all .2s;
}
.chip:hover{border-color:var(--ink)}
.chip.active{background:var(--clay);border-color:var(--clay);color:#FDF8EE}
.custom-row{display:flex;align-items:center;border:1.5px solid var(--line);background:#fff;border-radius:3px;margin-bottom:1.1rem;padding-left:.9rem}
.custom-row span{font:700 14px var(--mono);color:var(--muted)}
.custom-row input{border:0;outline:0;background:transparent;padding:.9rem .6rem .9rem 0;font:700 14px var(--mono);width:100%}
.match-row{display:flex;gap:.8rem;align-items:flex-start;background:rgba(223,169,60,.16);border:1.5px dashed var(--gold);padding:.9rem 1rem;border-radius:3px;margin-bottom:1.1rem;cursor:pointer}
.match-row input{margin-top:3px;accent-color:var(--clay);width:16px;height:16px}
.match-row b{font:700 12px/1.4 var(--mono);letter-spacing:.04em}
.match-row small{display:block;font-size:.82rem;color:var(--muted)}
.impact-line{background:var(--ink);color:var(--cream);padding:1rem 1.1rem;border-radius:3px;margin-bottom:.8rem}
.impact-line .il-main{font:560 1.12rem/1.4 var(--disp)}
.impact-line .il-sub{font:400 10.5px/1.6 var(--mono);color:rgba(244,239,226,.7);margin-top:.35rem}
.alloc-line{font:400 10.5px/1.7 var(--mono);color:var(--muted);margin-bottom:1.2rem}
.give-widget .btn{width:100%;justify-content:center;padding:1.15rem}
.secure-note{font:400 10px/1.6 var(--mono);color:var(--muted);text-align:center;margin-top:.8rem;letter-spacing:.04em}
/* success state */
.give-success{display:none;text-align:center;padding:1.5rem 0}
.give-widget.donated .give-form{display:none}
.give-widget.donated .give-success{display:block}
.check{width:64px;height:64px;border-radius:50%;background:var(--clay);color:#fff;display:flex;align-items:center;justify-content:center;margin:0 auto 1.2rem;font-size:1.8rem}
.give-success h3{margin-bottom:.7rem}
.give-success p{font-size:.95rem;color:#39443a;max-width:38ch;margin:0 auto .6rem}
.ref{font:700 12px/1 var(--mono);letter-spacing:.14em;background:var(--paper-2);border:1px dashed var(--ink);display:inline-block;padding:.7rem 1rem;margin:.8rem 0 1.2rem}
/* sidebar cards */
.side-cards{display:flex;flex-direction:column;gap:22px}
.side-card{border:1.5px solid rgba(244,239,226,.35);padding:1.6rem 1.5rem;border-radius:4px}
.side-card h4{font:700 11px/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:1.1rem}
.rec-row{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;border-bottom:1px solid rgba(244,239,226,.16);font-size:.9rem}
.rec-row:last-child{border-bottom:none}
.rec-row b{font:700 11px/1.6 var(--mono);color:var(--gold);white-space:nowrap}
.side-card .fine{font:400 10px/1.6 var(--mono);color:rgba(244,239,226,.55);margin-top:.9rem}
.report-link{display:flex;justify-content:space-between;align-items:center;text-decoration:none;padding:.75rem 0;border-bottom:1px solid rgba(244,239,226,.16);font-size:.92rem;transition:color .2s}
.report-link:hover{color:var(--gold)}
.report-link .dl{font:700 12px var(--mono);color:var(--gold)}

/* ============ PARTNERS ============ */
.partners{padding:110px 0}
.partners-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}
.logo-wall{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.logo-tile{
  background:#F1EBDB;border:1.5px solid var(--line);padding:1.1rem;display:flex;align-items:center;justify-content:center;
  transition:transform .3s ease,border-color .3s ease;
}
.logo-tile img{width:100%;opacity:.6;filter:grayscale(1);transition:opacity .3s,filter .3s}
.logo-tile:hover{transform:translateY(-5px);border-color:var(--ink)}
.logo-tile:hover img{opacity:1;filter:none}
.partners-copy p{color:#39443a;margin-bottom:1.1rem}
.partner-cta{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1.8rem}

/* ============ FAQ ============ */
.faq{background:var(--paper-2);padding:110px 0;border-top:1.5px solid var(--line)}
.faq-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:70px;align-items:start}
.contact-mini{border:1.5px solid var(--ink);background:var(--paper);padding:1.5rem;margin-top:2rem;box-shadow:8px 8px 0 var(--gold)}
.contact-mini h4{font:700 10.5px/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--clay);margin-bottom:.8rem}
.contact-mini p{font-size:.92rem;color:#39443a}
.contact-mini a{font:700 12px/1 var(--mono);color:var(--ink);text-decoration:none;border-bottom:1.5px solid var(--clay)}
.faq-item{border-bottom:1.5px solid var(--line)}
.faq-item:first-child{border-top:1.5px solid var(--ink)}
.faq-q{
  width:100%;background:none;border:0;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1.5rem;
  padding:1.35rem .2rem;text-align:left;font:600 1.1rem/1.4 var(--body);color:var(--ink);
}
.faq-q .plus{font:400 1.5rem/1 var(--disp);color:var(--clay);transition:transform .35s cubic-bezier(.22,1,.36,1);flex-shrink:0}
.faq-item.open .plus{transform:rotate(45deg)}
.faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.22,1,.36,1)}
.faq-item.open .faq-a{grid-template-rows:1fr}
.faq-a-inner{overflow:hidden}
.faq-a p{padding:0 .2rem 1.4rem;color:#39443a;font-size:.97rem;max-width:60ch}

/* ============ FOOTER ============ */
footer{background:var(--pine-deep);color:rgba(244,239,226,.78);padding:80px 0 0}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.3fr;gap:50px;padding-bottom:60px}
.foot-brand img{width:48px;height:48px;border-radius:4px;margin-bottom:1.1rem}
.foot-brand .fb-name{font:600 1.35rem/1.2 var(--disp);color:var(--cream)}
.foot-brand .fb-tag{font:italic 500 13px/1.5 var(--disp);color:var(--gold);margin:.3rem 0 1.1rem}
.foot-brand address{font:400 12px/1.9 var(--mono);font-style:normal;letter-spacing:.03em}
.foot-col h5{font:700 10.5px/1 var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin-bottom:1.3rem}
.foot-col ul{list-style:none}
.foot-col li{margin-bottom:.75rem}
.foot-col a{text-decoration:none;font-size:.95rem;transition:color .2s}
.foot-col a:hover{color:var(--gold)}
.nl-label{font:700 10.5px/1 var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin-bottom:1.3rem;display:block}
.nl-form{display:flex;border:1.5px solid rgba(244,239,226,.4);border-radius:3px;overflow:hidden}
.nl-form input{flex:1;background:transparent;border:0;outline:0;color:var(--cream);padding:.95rem 1rem;font:400 13px var(--body);min-width:0}
.nl-form input::placeholder{color:rgba(244,239,226,.45)}
.nl-form button{background:var(--clay);color:#fff;border:0;padding:0 1.2rem;font:700 11px/1 var(--mono);letter-spacing:.1em;cursor:pointer;text-transform:uppercase;transition:background .25s}
.nl-form button:hover{background:var(--clay-dark)}
.nl-msg{font:400 12px/1.6 var(--mono);color:var(--gold);margin-top:.9rem;display:none}
.foot-bottom{border-top:1px solid rgba(244,239,226,.18);padding:22px 0;display:flex;justify-content:space-between;align-items:center;gap:1.5rem;flex-wrap:wrap}
.foot-bottom p{font:400 10.5px/1.7 var(--mono);letter-spacing:.06em;color:rgba(244,239,226,.55)}
.foot-legal{display:flex;gap:1.4rem;list-style:none}
.foot-legal a{font:400 10.5px/1 var(--mono);letter-spacing:.08em;text-decoration:none;color:rgba(244,239,226,.55)}
.foot-legal a:hover{color:var(--gold)}
.socials{display:flex;gap:.7rem}
.socials a{width:36px;height:36px;border:1px solid rgba(244,239,226,.3);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .25s}
.socials a:hover{background:var(--clay);border-color:var(--clay);transform:translateY(-3px)}
.socials svg{width:16px;height:16px;fill:currentColor}
.socials svg.st{fill:none;stroke:currentColor;stroke-width:2}

/* ============ RESPONSIVE ============ */
@media (max-width:1080px){
  .hero .wrap{grid-template-columns:1fr;gap:90px}
  .hero-visual{max-width:560px}
  .dollar-grid{grid-template-columns:1fr;gap:44px}
  .dollar-sticky{position:static}
  .mission-grid,.vol-grid,.give-grid,.partners-grid,.faq-grid{grid-template-columns:1fr;gap:50px}
  .impact-band{grid-template-columns:1fr 1fr}
  .ib{padding:1.4rem 1rem;border-top:1.5px solid var(--line)}
  .ib:nth-child(-n+2){border-top:0}
  .ib:nth-child(odd){border-left:none;padding-left:0}
  .foot-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  .nav-toggle{display:flex}
  #mainNav{
    position:absolute;top:100%;left:0;right:0;background:var(--paper);border-bottom:1.5px solid var(--ink);
    padding:1.2rem 28px 1.6rem;opacity:0;transform:translateY(-10px);pointer-events:none;transition:opacity .3s,transform .3s;
    box-shadow:0 30px 40px -20px rgba(31,46,34,.35);
  }
  .nav-open #mainNav{opacity:1;transform:none;pointer-events:auto}
  #mainNav ul{flex-direction:column;gap:.4rem}
  #mainNav a{display:block;padding:.7rem 0;font-size:14px}
  .util-bar .u-right{display:none}
  .pillar{grid-template-columns:60px 1fr;gap:.8rem 1.2rem}
  .pillar p{grid-column:2}
  .pillar .tag{display:none}
  .stage{grid-template-columns:1fr;gap:1.4rem}
  .stage-img{max-width:420px}
  .postcards{grid-template-columns:1fr;max-width:520px}
  .postcard{--ty:0px !important}
  .event{grid-template-columns:88px 1fr;gap:1.3rem}
  .event .btn{grid-column:2;justify-self:start}
  .shift{grid-template-columns:1fr}
  .shift .spots{grid-column:1}
}
@media (max-width:640px){
  .wrap{padding:0 20px}
  .hero{padding:50px 0 80px}
  .hero-stats{flex-direction:column;border-top:none}
  .hero-stats .hs{border-left:none;padding:1rem 0 0;border-top:1.5px solid var(--line)}
  .chips{grid-template-columns:1fr 1fr}
  .logo-wall{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr}
  .hv-log{right:0;top:-30px;width:190px}
  .float-stat{right:0}
  .mission-statement{margin-bottom:44px}
}
/* ============ REDUCED MOTION ============ */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  .h-line>span{transform:none;animation:none}
  [data-reveal]{opacity:1;transform:none}
  .kb img{animation:none}
  .ticker-track{animation:none}
}
</style>
</head>
<body>
<a class="skip" href="#main">Skip to main content</a>

<!-- Utility bar -->
<div class="util-bar" aria-hidden="true">
  <div class="wrap">
    <span>Registered 501(c)(3) · EIN 84-1204477 · Providence, RI</span>
    <span class="u-right"><b>82¢</b> of every dollar goes to programs</span>
  </div>
</div>

<!-- Header -->
<header id="site-header">
  <div class="wrap header-inner">
    <a class="brand" href="#top">
      <img src="https://placehold.co/48x48/c4571f/faf3e4?text=OT&font=playfair+display" alt="The Open Table Project logo" width="46" height="46">
      <span class="brand-text">
        <strong>The Open Table Project</strong>
        <em>Every table has room for one more.</em>
      </span>
    </a>
    <nav id="mainNav" aria-label="Primary navigation">
      <ul>
        <li><a href="#mission" data-link="mission">Our Mission</a></li>
        <li><a href="#programs" data-link="programs">Programs</a></li>
        <li><a href="#impact" data-link="impact">Impact</a></li>
        <li><a href="#volunteer" data-link="volunteer">Volunteer</a></li>
        <li><a href="#events" data-link="events">Events</a></li>
        <li><a href="#partners" data-link="partners">Partners</a></li>
        <li><a href="#faq" data-link="faq">FAQ</a></li>
      </ul>
    </nav>
    <a href="#give" class="btn">Give Now <span class="arw">→</span></a>
    <button class="nav-toggle" aria-expanded="false" aria-controls="mainNav" aria-label="Toggle menu">
      <span></span><span></span><span></span>
    </button>
  </div>
</header>

<main id="main">

  <!-- ================= HERO ================= -->
  <section class="hero" id="top">
    <span class="hero-side">Est. 2016 · Providence, R.I. · Six kitchens · 14 routes</span>
    <div class="wrap">
      <div>
        <p class="eyebrow">Community food non-profit · Serving daily since 2016</p>
        <h1>
          <span class="h-line"><span>Every table</span></span>
          <span class="h-line"><span>has room for</span></span>
          <span class="h-line"><span class="italic">one more.</span></span>
        </h1>
        <p class="hero-lede">
          The Open Table Project runs six community kitchens and fourteen mobile pantry routes across
          Providence, putting 1,200 hot meals on the table every single day — free, dignified, and cooked
          from scratch by the people of the community we serve. We're a registered 501(c)(3) founded by
          three line cooks and one social worker, and we publish every financial and every impact number we track.
        </p>
        <div class="hero-ctas">
          <a href="#give" class="btn">Give Now <span class="arw">→</span></a>
          <a class="link-more" href="#programs">Follow a dollar <span class="arw">→</span></a>
        </div>
        <div class="hero-stats">
          <div class="hs"><span class="hs-num" data-count="132540">0</span><span class="hs-lab">Meals served since 2016</span></div>
          <div class="hs"><span class="hs-num" data-count="9412">0</span><span class="hs-lab">Volunteer hours this season</span></div>
          <div class="hs"><span class="hs-num" data-count="214">0</span><span class="hs-lab">Apprentices trained</span></div>
        </div>
      </div>

      <div class="hero-visual" data-reveal style="--d:.15s">
        <figure class="hv-main kb">
          <img src="https://picsum.photos/seed/community-kitchen/700/880" alt="Volunteers plating a three-course dinner at the Riverside community kitchen">
        </figure>
        <figure class="hv-pol">
          <span class="tape" aria-hidden="true"></span>
          <img src="https://picsum.photos/seed/pantry-crew/520/380" alt="Volunteer hands packing mobile pantry boxes at the Central Depot">
          <figcaption>Meal prep, Central Depot — Wednesday, 7 p.m.</figcaption>
        </figure>
        <aside class="hv-log" aria-label="Live kitchen log">
          <p class="log-k"><span class="log-dot"></span>Riverside Kitchen · Live log</p>
          <p class="log-n"><span id="liveMeals">247</span><small> meals served in the last 24 h</small></p>
          <p class="log-s">Next service 11:00 · 14:00 · 17:30</p>
        </aside>
      </div>
    </div>
  </section>

  <!-- Ticker -->
  <div class="ticker" aria-hidden="true">
    <div class="ticker-track">
      <div class="ticker-seq">
        <span class="tk">132,540 meals served since 2016</span><span class="tk-star">✳</span>
        <span class="tk">9,412 volunteer hours this season</span><span class="tk-star">✳</span>
        <span class="tk">6 community kitchens</span><span class="tk-star">✳</span>
        <span class="tk">14 mobile pantry routes</span><span class="tk-star">✳</span>
        <span class="tk">82¢ of every dollar to programs</span><span class="tk-star">✳</span>
        <span class="tk">214 apprentices trained</span><span class="tk-star">✳</span>
        <span class="tk">2024 annual report now public</span><span class="tk-star">✳</span>
      </div>
      <div class="ticker-seq">
        <span class="tk">132,540 meals served since 2016</span><span class="tk-star">✳</span>
        <span class="tk">9,412 volunteer hours this season</span><span class="tk-star">✳</span>
        <span class="tk">6 community kitchens</span><span class="tk-star">✳</span>
        <span class="tk">14 mobile pantry routes</span><span class="tk-star">✳</span>
        <span class="tk">82¢ of every dollar to programs</span><span class="tk-star">✳</span>
        <span class="tk">214 apprentices trained</span><span class="tk-star">✳</span>
        <span class="tk">2024 annual report now public</span><span class="tk-star">✳</span>
      </div>
    </div>
  </div>

  <!-- ================= MISSION ================= -->
  <section class="mission" id="mission" data-spy>
    <div class="wrap">
      <p class="eyebrow" data-reveal>Our Mission</p>
      <h2 class="mission-statement" data-reveal style="--d:.08s">
        Food insecurity isn't an accident — it's a failure of logistics. <span class="italic">So we built the logistics.</span>
      </h2>

      <div class="mission-grid">
        <div class="mission-copy" data-reveal>
          <p>
            In 2016, three line cooks and a social worker rented a broken-down church hall on Delancey Street
            and fed forty-one neighbors with whatever the produce stand down the block didn't sell. That first
            service cost $118. It ran every Saturday for a year — and we never once let a single guest stand in
            a line longer than the food took to plate.
          </p>
          <p>
            Today, The Open Table Project is a registered 501(c)(3) public charity (EIN 84-1204477) operating
            six community kitchens and fourteen mobile pantry routes that reach 1,200 neighbors daily, including
            every ward in the city with no full-service grocery within a mile. We hire and train from the
            communities we serve: 71% of our kitchen staff have lived in the neighborhood where they work.
          </p>
          <p>
            We believe charity should be accountable like a business — just with a different balance sheet.
            Every meal is logged, every route is mapped, every volunteer hour is tallied in a public impact
            ledger, and our financials are audited annually and published in full, including the parts that
            embarrass us.
          </p>
          <div class="pull-quote">
            <img src="https://i.pravatar.cc/104?u=amara-okafor" alt="Portrait of Amara Okafor">
            <div>
              <blockquote>"We don't ask neighbors to be grateful for what we can spare. We ask our donors to be grateful they get to pay for what we already know how to do."</blockquote>
              <cite>Amara Okafor — Founder &amp; Executive Director</cite>
            </div>
          </div>
        </div>

        <figure class="mission-fig" data-reveal style="--d:.15s">
          <div class="frame kb">
            <img src="https://picsum.photos/seed/chef-crew/620/780" alt="The Riverside kitchen crew lining plates before the 11 a.m. service">
          </div>
          <figcaption>RIVERSIDE KITCHEN CREW — SERVICE 2, 10:41 A.M.</figcaption>
          <div class="float-stat">
            <b>$3.40</b>
            <span>Cost per plated meal, FY24 avg.</span>
          </div>
        </figure>
      </div>

      <div class="pillars" data-reveal>
        <article class="pillar">
          <span class="pillar-num">01 /</span>
          <h3>Feed</h3>
          <p>Six community kitchens and fourteen mobile routes serve 1,200 neighbors a day. Every meal is cooked from scratch by paid and volunteer crews, and every guest chooses from a real menu — no trays, no handouts, no forms to fill out.</p>
          <span class="tag">1,200 / day</span>
        </article>
        <article class="pillar">
          <span class="pillar-num">02 /</span>
          <h3>Train</h3>
          <p>Our chef apprenticeship pairs displaced and at-risk adults with partner restaurants for a paid twelve-month training. 214 graduates so far; 68% are still working in the culinary field two years after the program ends.</p>
          <span class="tag">214 graduates</span>
        </article>
        <article class="pillar">
          <span class="pillar-num">003 /</span>
          <h3>Advocate</h3>
          <p>We publish open data on Providence's food access gaps and sit on the city's food policy council. Last year's procurement report helped municipal budgets add $2.1M in local grocery funding — a lever bigger than any kitchen we run.</p>
          <span class="tag">Open data</span>
        </article>
      </div>
    </div>
  </section>

  <!-- ================= PROGRAMS / FOLLOW A DOLLAR ================= -->
  <section class="dollar" id="programs" data-spy>
    <div class="wrap">
      <div class="dollar-head" data-reveal>
        <p class="eyebrow">Programs · Follow a Dollar</p>
        <h2>Where your dollar <span class="italic">actually</span> goes</h2>
        <p>We break out our spending the way a restaurant breaks out its food cost — to the line item. Here's the shape of a gift to Open Table, from the farm gate to the printed Form 990.</p>
      </div>

      <div class="dollar-grid">
        <div class="dollar-sticky" data-reveal>
          <h2>The split</h2>
          <p class="dollar-sub">Audited annually by Ernst &amp; Harbor CPA, LLC. Reconciled monthly. Posted on the ledger every Friday.</p>
          <div class="alloc-row">
            <div class="alloc-top"><span>Programs &amp; kitchens</span><b>82¢</b></div>
            <div class="bar"><div class="fill" style="--w:82%"></div></div>
          </div>
          <div class="alloc-row">
            <div class="alloc-top"><span>Fundraising &amp; events</span><b>9¢</b></div>
            <div class="bar"><div class="fill alt" style="--w:9%"></div></div>
          </div>
          <div class="alloc-row">
            <div class="alloc-top"><span>Operations &amp; admin</span><b>9¢</b></div>
            <div class="bar"><div class="fill alt2" style="--w:9%"></div></div>
          </div>
          <a href="#give" class="btn">Give Now <span class="arw">→</span></a>
          <p class="fineprint">FY24 FORM 990 · RATIO VERIFIED 04/2025<br>COST PER MEAL: $3.40 · COST PER ROUTE-MILE: $11.20</p>
        </div>

        <div>
          <article class="stage" data-reveal>
            <div class="stage-img kb"><img src="https://picsum.photos/seed/ri-farm-stand/440/300" alt="Crates of rhubarb and squash at a Rhode Island farm stand"></div>
            <div class="stage-body">
              <span class="stage-num">STAGE 01 — SOURCE</span>
              <h3>Groceries, bought close to home</h3>
              <p>Eighty-two cents of every dollar starts in the produce budget. We buy 70% of our produce and 100% of our dairy from five Rhode Island farms and two member co-ops, so one payment lands twice in the community — once in our walk-in, once in a farm payroll.</p>
              <span class="cost">$1 of every $10 → farm gate</span>
            </div>
          </article>
          <article class="stage" data-reveal style="--d:.08s">
            <div class="stage-img kb"><img src="https://picsum.photos/seed/cooking-line/440/300" alt="Volunteer cooks working the line in a community kitchen"></div>
            <div class="stage-body">
              <span class="stage-num">STAGE 02 — COOK</span>
              <h3>Crews that turn produce into 1,200 plates</h3>
              <p>Volunteers, apprentices, and paid cooks work a three-service shift in every kitchen, daily. The average crew is nineteen people; the average cost to plate a full meal is $3.40, tracked to the cent each month and published every Friday.</p>
              <span class="cost">$3.40 per plated meal</span>
            </div>
          </article>
          <article class="stage" data-reveal style="--d:.08s">
            <div class="stage-img kb"><img src="https://picsum.photos/seed/dinner-service/440/300" alt="Guests seated at a long communal table during the noon service"></div>
            <div class="stage-body">
              <span class="stage-num">STAGE 03 — SERVE</span>
              <h3>Three services a day, zero forms</h3>
              <p>Kitchens run at 11:00, 14:00, and 17:30, and the mobile vans hit fourteen routes into neighborhoods where the nearest grocery is over a mile away. Guests never pay, never wait for a longer line than the food, and never explain themselves.</p>
              <span class="cost">3 services · 6 kitchens · 14 routes</span>
            </div>
          </article>
          <article class="stage" data-reveal style="--d:.08s">
            <div class="stage-img kb"><img src="https://picsum.photos/seed/youth-cooking/440/300" alt="Teens kneading bread in the Youth Food Lab"></div>
            <div class="stage-body">
              <span class="stage-num">STAGE 04 — TEACH</span>
              <h3>The Youth Food Lab</h3>
              <p>Two hundred young people a year learn to cook, to budget for food, and to navigate SNAP without shame. The skills outlast us — that's the whole point. Lab graduates rate their food confidence 4.7 out of 5 on our post-program survey.</p>
              <span class="cost">200 seats / year · ages 10–17</span>
            </div>
          </article>
          <article class="stage" data-reveal style="--d:.08s">
            <div class="stage-img kb"><img src="https://picsum.photos/seed/impact-ledger/440/300" alt="Hand-written service ledger taped beside a kitchen window"></div>
            <div class="stage-body">
              <span class="stage-num">STAGE 05 — RECORD</span>
              <h3>Logged, published, argued over</h3>
              <p>Every meal, mile, and volunteer hour is recorded at the point of service and flows into the open impact ledger. When a route underperforms, we say so in the annual report and reallocate. Transparency is a program too.</p>
              <span class="cost">Updated weekly · fully public</span>
            </div>
          </article>
        </div>
      </div>
    </div>
  </section>

  <!-- ================= IMPACT ================= -->
  <section class="impact" id="impact" data-spy>
    <div class="wrap">
      <div class="impact-head">
        <div data-reveal>
          <p class="eyebrow">Impact Stories</p>
          <h2>Postcards from <span class="italic">the table</span></h2>
        </div>
        <p data-reveal style="--d:.1s">Numbers tell you what happened. People tell you what it meant. These are four of the 3,900+ stories logged in our impact ledger this year.</p>
      </div>

      <div class="impact-band">
        <div class="ib" data-reveal><span class="ib-num" data-count="132540">0</span><span class="ib-lab">Meals served since 2016</span></div>
        <div class="ib" data-reveal style="--d:.08s"><span class="ib-num" data-count="41208">0</span><span class="ib-lab">Volunteer hours logged</span></div>
        <div class="ib" data-reveal style="--d:.16s"><span class="ib-num" data-count="318400">0</span><span class="ib-lab">Lbs sourced from RI farms</span></div>
        <div class="ib" data-reveal style="--d:.24s"><span class="ib-num" data-count="68" data-suffix="%">0</span><span class="ib-lab">Apprentices in culinary jobs, yr 2</span></div>
      </div>

      <div class="postcards">
        <figure class="postcard" style="--r:-2.2deg; --ty:0px" data-reveal>
          <div class="pc-img kb"><img src="https://picsum.photos/seed/story-devon/600/440" alt="Devon plating a sauced entrée during an apprenticeship shift"></div>
          <figcaption>
            <span class="pc-tag">Chef Apprentice · Class of 2024</span>
            <blockquote>"I walked into Riverside with a GED and my grandmother's knife. A year later I'm saucing a Friday dinner at a two-star place. Nobody in that kitchen treated my past like a deficit."</blockquote>
            <p class="pc-name">Devon M., 24 — now saucier, The Gilded Quail</p>
          </figcaption>
        </figure>

        <figure class="postcard" style="--r:1.8deg; --ty:46px" data-reveal style2="">
          <img class="pc-avatar" src="https://i.pravatar.cc/116?u=marisol-volunteer" alt="Portrait of Marisol V.">
          <div class="pc-img kb"><img src="https://picsum.photos/seed/story-marisol/600/440" alt="Marisol laughing with the plating crew on a Saturday morning"></div>
          <figcaption>
            <span class="pc-tag">Volunteer · 312 Saturdays</span>
            <blockquote>"I came for one Saturday morning and stayed six years. We plate, we argue about music, we feed 140 people before 1 p.m. This is the closest thing to family I have in Providence."</blockquote>
            <p class="pc-name">Marisol V. — Stove Crew lead, Central Depot</p>
          </figcaption>
        </figure>

        <figure class="postcard" style="--r:-1.6deg; --ty:20px" data-reveal>
          <div class="pc-img kb"><img src="https://picsum.photos/seed/story-ruiz/600/440" alt="The mobile pantry van parked on a Ward 4 street in the morning light"></div>
          <figcaption>
            <span class="pc-tag">Mobile Pantry · Ward 4</span>
            <blockquote>"The truck used to come every other week. Now it comes Thursday at eight, sharp, and my kids get to pick the salsa. Small things. Huge things. It's the one appointment our family has never missed."</blockquote>
            <p class="pc-name">The Ruiz family — Route 9, every Thursday</p>
          </figcaption>
        </figure>

        <figure class="postcard" style="--r:2.4deg; --ty:60px" data-reveal>
          <div class="pc-img kb"><img src="https://picsum.photos/seed/story-kellan/600/440" alt="Kellan rolling out dough at a Youth Food Lab Thanksgiving prep"></div>
          <figcaption>
            <span class="pc-tag">Youth Food Lab · Age 16</span>
            <blockquote>"I can cook a full Thanksgiving for ten people and I know what a co-op is and what SNAP is. I did not think school was ever going to give me that. This kitchen did."</blockquote>
            <p class="pc-name">Kellan — Lab graduate, Providence High</p>
          </figcaption>
        </figure>
      </div>
    </div>
  </section>

  <!-- ================= VOLUNTEER ================= -->
  <section class="volunteer" id="volunteer" data-spy>
    <div class="wrap vol-grid">
      <div class="vol-copy" data-reveal>
        <p class="eyebrow">Volunteer Opportunities</p>
        <h2>Get involved <span class="italic">at the stove</span></h2>
        <p style="margin-top:1.2rem;color:#39443a">No experience required. Show up with closed-toe shoes and an open mind; a forty-five-minute orientation covers the rest. Our crews log every shift in the public impact ledger — 9,412 hours this season and counting — so the work you do on a Saturday becomes part of a record the whole city can read.</p>
        <div class="big-hours">
          <b><span data-count="9412">0</span></b>
          <span>Volunteer hours logged this season · 618 active volunteers</span>
        </div>
        <a href="#give" class="btn">Sign Up to Volunteer <span class="arw">→</span></a>
      </div>

      <div class="shifts">
        <article class="shift" data-reveal>
          <div>
            <h3>Saturday Community Kitchen</h3>
            <p class="meta">SAT 8:00–13:00 · RIVERSIDE, WARD 2 · PLATING · GUEST HOSPITALITY · DISH</p>
          </div>
          <a href="#give" class="btn">Sign Up</a>
          <span class="spots">14 spots open</span>
        </article>
        <article class="shift" data-reveal style="--d:.08s">
          <div>
            <h3>Meal Prep Wednesday</h3>
            <p class="meta">WED 17:00–21:00 · CENTRAL DEPOT · CHOP LINE · COLD STORAGE · LABELING</p>
          </div>
          <a href="#give" class="btn">Sign Up</a>
          <span class="spots">6 spots open</span>
        </article>
        <article class="shift" data-reveal style="--d:.16s">
          <div>
            <h3>Mobile Pantry Driver</h3>
            <p class="meta">THU 7:00–11:00 · 12 ROUTES CITYWIDE · VAN PROVIDED · CDL NOT REQUIRED</p>
          </div>
          <a href="#give" class="btn">Sign Up</a>
          <span class="spots">4 drivers needed</span>
        </article>
        <article class="shift" data-reveal style="--d:.24s">
          <div>
            <h3>Youth Food Lab Mentor</h3>
            <p class="meta">FRI 15:00–18:00 · RIVERSIDE · BAKING · SNAP NAVIGATION · BUDGETING</p>
          </div>
          <a href="#give" class="btn">Sign Up</a>
          <span class="spots">8 mentors needed</span>
        </article>
      </div>
    </div>
  </section>

  <!-- ================= EVENTS ================= -->
  <section class="events" id="events" data-spy>
    <div class="wrap">
      <div class="impact-head">
        <div data-reveal>
          <p class="eyebrow">Events</p>
          <h2>Come to the <span class="italic">table</span> in person</h2>
        </div>
        <p data-reveal style="--d:.1s">Three dates to mark now. Every event proceeds fund the winter pantry — the months when our routes run longest and our fridges work hardest.</p>
      </div>

      <article class="event" data-reveal>
        <div class="date-block"><span class="d">04</span><span class="m">Oct</span></div>
        <div>
          <h3>Harvest Cook-Off</h3>
          <span class="loc">Riverside Kitchen · 11:00 a.m.</span>
          <p>Our four neighborhood kitchens compete for the title of best fall squash dish, judged by the guests in the room (that's you). Free tickets, 300 seats, and every dollar of proceeds goes to the winter pantry fund.</p>
          <span class="cap">FREE · 300 SEATS · KIDS WELCOME</span>
        </div>
        <a href="#give" class="btn">Join Event</a>
      </article>

      <article class="event" data-reveal style="--d:.08s">
        <div class="date-block"><span class="d">25</span><span class="m">Oct</span></div>
        <div>
          <h3>The Long Table: Annual Gala</h3>
          <span class="loc">Harbor Hall, 180 Front St · 6:30 p.m.</span>
          <p>Three hundred neighbors, one extremely long table, a live band, and our annual impact reading — every number of the year, out loud, including the ones that didn't go well. Black-tie optional; appetite required.</p>
          <span class="cap">$140 / $280 PAIR · TABLES OF 10 STILL OPEN</span>
        </div>
        <a href="#give" class="btn">Join Event</a>
      </article>

      <article class="event" data-reveal style="--d:.16s">
        <div class="date-block"><span class="d">08</span><span class="m">Nov</span></div>
        <div>
          <h3>Sponsor-a-Kitchen Day</h3>
          <span class="loc">Citywide · 10:00 a.m. assembly at Central Depot</span>
          <p>Bring your whole team for a full service: prep by ten, serving by eleven-thirty, debrief with the crew before lunch. Corporate sponsors fund a month of groceries — $9,600 — for one kitchen of their choosing.</p>
          <span class="cap">12 TEAM SLOTS REMAINING · $9,600 PER KITCHEN</span>
        </div>
        <a href="#give" class="btn">Join Event</a>
      </article>
    </div>
  </section>

  <!-- ================= GIVE ================= -->
  <section class="give" id="give" data-spy>
    <div class="wrap give-grid">
      <div class="give-copy">
        <p class="eyebrow" data-reveal>Secure Giving Portal</p>
        <h2 data-reveal style="--d:.08s">Put a plate on the table <span class="italic" style="color:var(--gold)">tonight.</span></h2>
        <p data-reveal style="--d:.16s">Your gift is received by The Open Table Project, a registered 501(c)(3) public charity (EIN 84-1204477). Donations are tax-deductible to the extent allowed by law, and a receipt is emailed the moment your gift clears. Monthly gifts are what let us buy the pantry before it runs empty — that's the difference between a meal and a habit.</p>
        <ul class="trust" data-reveal style="--d:.24s">
          <li>Tax-deductible · 501(c)(3) · EIN 84-1204477</li>
          <li>82¢ of every dollar goes straight to programs</li>
          <li>Cancel or change monthly gifts anytime, one click</li>
        </ul>

        <div class="give-widget" id="giveWidget" data-reveal style="--d:.2s">
          <form class="give-form" id="giveForm" novalidate>
            <h3>Choose your gift</h3>
            <div class="freq-row" role="group" aria-label="Gift frequency">
              <button type="button" class="freq-btn" data-freq="once">One-time</button>
              <button type="button" class="freq-btn active" data-freq="monthly">Monthly <span class="flag">Most impact</span></button>
            </div>
            <div class="chips" role="group" aria-label="Gift amount">
              <button type="button" class="chip" data-amt="25">$25</button>
              <button type="button" class="chip active" data-amt="50">$50</button>
              <button type="button" class="chip" data-amt="100">$100</button>
              <button type="button" class="chip" data-amt="250">$250</button>
            </div>
            <label class="custom-row" for="customAmt">
              <span>$</span>
              <input type="number" id="customAmt" min="5" placeholder="Custom amount" aria-label="Custom amount in dollars">
            </label>
            <label class="match-row">
              <input type="checkbox" id="matchToggle">
              <span><b>Double my gift with the Harvest Match.</b>
              <small>Matching fund up to $12,000 — $4,310 remaining for October. Matched by Brightline Logistics employees.</small></span>
            </label>
            <div class="impact-line">
              <p class="il-main" id="impMain">20 warm meals, every single month.</p>
              <p class="il-sub" id="impMatch">Turn on the Harvest Match to double your impact for free.</p>
            </div>
            <p class="alloc-line" id="allocLine">That puts ≈ $41 in kitchens, $5 in fundraising, $4 in operations.</p>
            <button type="submit" class="btn" id="giveBtn">Give $50/month securely <span class="arw">→</span></button>
            <p class="secure-note">256-BIT ENCRYPTED · POWERED BY OUR FRIENDS AT PROVIDENCE PAY · NO FEES PASSED THROUGH</p>
          </form>

          <div class="give-success" aria-live="polite">
            <div class="check">✓</div>
            <h3>Plate's on the table.</h3>
            <p id="giveSummary">Your monthly gift of $50 is confirmed.</p>
            <span class="ref" id="refNum">OTP-2025-0000</span>
            <p>A tax receipt for your records is on its way to your inbox. Thank you, neighbor — the kitchen sees you.</p>
            <button type="button" class="btn btn-ghost" id="giveReset" style="margin-top:1rem">Make another gift</button>
          </div>
        </div>
      </div>

      <aside class="side-cards" data-reveal style="--d:.25s">
        <div class="side-card">
          <h4>The Harvest Table · Recognized July 2025</h4>
          <div class="rec-row"><span>Brightline Logistics (employee match)</span><b>$10,000</b></div>
          <div class="rec-row"><span>Eleanor &amp; Sam Whitfield — annual</span><b>$5,000</b></div>
          <div class="rec-row"><span>The Reyes family — kitchen adoption</span><b>$1,200</b></div>
          <div class="rec-row"><span>41 individual neighbors, $25–$250</span><b>$6,480</b></div>
          <p class="fine">Named recognition is always optional — most of our donors ask to be anonymous. All of them get a seat.</p>
        </div>
        <div class="side-card">
          <h4>Impact Reports &amp; Financials</h4>
          <a class="report-link" href="#faq">2024 Annual Report <span class="dl">PDF ↓</span></a>
          <a class="report-link" href="#faq">IRS Form 990, FY24 <span class="dl">PDF ↓</span></a>
          <a class="report-link" href="#faq">Live Impact Ledger <span class="dl">WEEKLY</span></a>
          <a class="report-link" href="#impact">Success stories archive <span class="dl">→</span></a>
        </div>
        <div class="side-card">
          <h4>Prefer to give another way?</h4>
          <a class="report-link" href="#volunteer">Volunteer your hours instead <span class="dl">→</span></a>
          <a class="report-link" href="#partners">Sponsor a kitchen with your company <span class="dl">→</span></a>
          <a class="report-link" href="#faq">Bequest &amp; stock gifts — talk to us <span class="dl">→</span></a>
        </div>
      </aside>
    </div>
  </section>

  <!-- ================= PARTNERS ================= -->
  <section class="partners" id="partners" data-spy>
    <div class="wrap partners-grid">
      <div class="logo-wall" data-reveal>
        <div class="logo-tile"><img src="https://placehold.co/260x64/f0ead9/2a4a38?text=Roosevelt+Bakery&font=oswald" alt="Roosevelt Bakery logo" loading="lazy"></div>
        <div class="logo-tile"><img src="https://placehold.co/260x64/f0ead9/2a4a38?text=Northgate+Co-op&font=oswald" alt="Northgate Co-op logo" loading="lazy"></div>
        <div class="logo-tile"><img src="https://placehold.co/260x64/f0ead9/2a4a38?text=First+Harbor+Credit+Union&font=oswald" alt="First Harbor Credit Union logo" loading="lazy"></div>
        <div class="logo-tile"><img src="https://placehold.co/260x64/f0ead9/2a4a38?text=Delancey+Hardware&font=oswald" alt="Delancey Hardware logo" loading="lazy"></div>
        <div class="logo-tile"><img src="https://placehold.co/260x64/f0ead9/2a4a38?text=Mercado+La+Plata&font=oswald" alt="Mercado La Plata logo" loading="lazy"></div>
        <div class="logo-tile"><img src="https://placehold.co/260x64/f0ead9/2a4a38?text=Cedar+%26+Vine&font=oswald" alt="Cedar and Vine logo" loading="lazy"></div>
      </div>
      <div class="partners-copy" data-reveal style="--d:.12s">
        <p class="eyebrow">Partners</p>
        <h2>Kitchens run on <span class="italic">neighbors, not slogans</span></h2>
        <p style="margin-top:1.2rem">A community kitchen doesn't run on good intentions. It runs on a bakery that starts ovens at 4 a.m., a co-op that reserves shelf space for our bulk buys, and a credit union that writes the same-day checks that keep the farm gate open. We carry 31 partners this year, and every one of them shows up in the impact ledger by name and dollar amount.</p>
        <p>Partnerships come in three shapes: sponsor a kitchen for a month ($9,600), match your employees' giving (the Harvest Model), or simply sell to us at a fair price and let the ledger do the rest.</p>
        <div class="partner-cta">
          <a class="btn" href="mailto:partners@opentableproject.org">Become a Partner <span class="arw">→</span></a>
          <a class="link-more" href="#faq">See the partner FAQ <span class="arw">→</span></a>
        </div>
      </div>
    </div>
  </section>

  <!-- ================= FAQ ================= -->
  <section class="faq" id="faq" data-spy>
    <div class="wrap faq-grid">
      <div data-reveal>
        <p class="eyebrow">FAQ</p>
        <h2>The questions we <span class="italic">hear at the door</span></h2>
        <p style="margin-top:1.2rem;color:#39443a">If your question isn't here, a real human (usually Tanya, our development coordinator) answers email within one business day.</p>
        <div class="contact-mini">
          <h4>Still curious?</h4>
          <p>Write to us — we read everything, including the letters with the recipes. We think you'll want to try some of them.</p>
          <p style="margin-top:.8rem"><a href="mailto:hello@opentableproject.org">hello@opentableproject.org</a></p>
        </div>
      </div>

      <div data-reveal style="--d:.1s">
        <div class="faq-item">
          <button class="faq-q" aria-expanded="false">Is my donation tax-deductible?<span class="plus">+</span></button>
          <div class="faq-a"><div class="faq-a-inner"><p>Yes. The Open Table Project is a registered 501(c)(3) public charity (EIN 84-1204477), so donations from U.S. taxpayers are tax-deductible to the extent allowed by law. A receipt is emailed the moment your gift clears, and every gift — including in-kind donations and employer matches — is recorded in our public impact ledger.</p></div></div>
        </div>
        <div class="faq-item">
          <button class="faq-q" aria-expanded="false">How exactly do you measure your impact?<span class="plus">+</span></button>
          <div class="faq-a"><div class="faq-a-inner"><p>Every meal, mile, and volunteer hour is recorded at the point of service and published monthly. We track cost per meal (currently $3.40), our dollar-to-plate ratio (82¢), route density by ward, and two-year employment outcomes for apprentices. The numbers — the good ones and the ones that didn't work out — appear in the annual report and on the live impact ledger.</p></div></div>
        </div>
        <div class="faq-item">
          <button class="faq-q" aria-expanded="false">Do I need cooking experience to volunteer?<span class="plus">+</span></button>
          <div class="faq-a"><div class="faq-a-inner"><p>None. Most Saturday shifts are plating, dish, and guest hospitality — a 45-minute orientation, closed-toe shoes, and that's the whole barrier. If you want to be on the kitchen line, tag "Stove Crew" on the signup sheet and a trained apprentice will pair with you for your first two shifts.</p></div></div>
        </div>
        <div class="faq-item">
          <button class="faq-q" aria-expanded="false">Does my employer match charitable gifts?<span class="plus">+</span></button>
          <div class="faq-a"><div class="faq-a-inner"><p>Most large employers do. Enter your workplace at checkout and we'll generate a match-request letter your benefits team can file. In 2024, employer matches added $86,400 to our budget — roughly two months of mobile pantry operations. It's the highest-leverage checkbox on the giving form.</p></div></div>
        </div>
        <div class="faq-item">
          <button class="faq-q" aria-expanded="false">Can I cancel or change my monthly gift?<span class="plus">+</span></button>
          <div class="faq-a"><div class="faq-a-inner"><p>Anytime, with no call required — one click in your confirmation email, or write to give@opentableproject.org and we'll process it within one business day. No guilt, no exit interview. You'll also receive a 12-month summary every December showing exactly what your total giving served.</p></div></div>
        </div>
      </div>
    </div>
  </section>
</main>

<!-- ================= FOOTER ================= -->
<footer>
  <div class="wrap">
    <div class="foot-grid">
      <div class="foot-brand">
        <img src="https://placehold.co/48x48/c4571f/faf3e4?text=OT&font=playfair+display" alt="The Open Table Project logo" loading="lazy">
        <p class="fb-name">The Open Table Project</p>
        <p class="fb-tag">Every table has room for one more.</p>
        <address>
          312 W. Delancey Street<br>
          Providence, RI 02903<br>
          (401) 555-0148<br>
          hello@opentableproject.org
        </address>
      </div>
      <div class="foot-col">
        <h5>Explore</h5>
        <ul>
          <li><a href="#mission">Our Mission</a></li>
          <li><a href="#programs">Programs</a></li>
          <li><a href="#impact">Impact Stories</a></li>
          <li><a href="#events">Events</a></li>
          <li><a href="#partners">Partners</a></li>
          <li><a href="#faq">FAQ</a></li>
        </ul>
      </div>
      <div class="foot-col">
        <h5>Get Involved</h5>
        <ul>
          <li><a href="#give">Give Now</a></li>
          <li><a href="#volunteer">Volunteer</a></li>
          <li><a href="#give">Monthly Giving</a></li>
          <li><a href="#partners">Corporate Matching</a></li>
          <li><a href="#events">Sponsor-a-Kitchen</a></li>
          <li><a href="#faq">Bequest Planning</a></li>
        </ul>
      </div>
      <div>
        <span class="nl-label">The Kitchen Note — weekly</span>
        <form class="nl-form" id="nlForm" novalidate>
          <input type="email" id="nlEmail" placeholder="you@neighborhood.com" aria-label="Email address">
          <button type="submit">Join</button>
        </form>
        <p class="nl-msg" id="nlMsg">You're on the list — first note lands this Friday, 6 a.m.</p>
      </div>
    </div>
    <div class="foot-bottom">
      <p>© <span class="js-year">2025</span> The Open Table Project · 501(c)(3) EIN 84-1204477 · All donations tax-deductible as allowed by law.</p>
      <ul class="foot-legal">
        <li><a href="#top">Privacy Policy</a></li>
        <li><a href="#top">Terms of Use</a></li>
        <li><a href="#faq">Financials</a></li>
        <li><a href="#top">Press Kit</a></li>
      </ul>
      <div class="socials">
        <a href="#top" aria-label="Instagram"><svg viewBox="0 0 24 24" class="st"><rect x="3" y="3" width="18" height="18" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.2" cy="6.8" r="0.8" fill="currentColor" stroke="none"/></svg></a>
        <a href="#top" aria-label="Facebook"><svg viewBox="0 0 24 24"><path d="M13.5 3H11a4.5 4.5 0 0 0-4.5 4.5V10H4v3.5h2.5V21h3.5v-7.5h2.6l.55-3.5H10V7.6a1 1 0 0 1 1-1h2.5z"/></svg></a>
        <a href="#top" aria-label="X"><svg viewBox="0 0 24 24" class="st"><path d="M4 4l16 16M20 4L4 20"/></svg></a>
        <a href="#top" aria-label="YouTube"><svg viewBox="0 0 24 24"><rect x="2.5" y="5.5" width="19" height="13" rx="3.5"/><path d="M10.2 9.2v5.6l5-2.8z" fill="#14211A"/></svg></a>
      </div>
    </div>
  </div>
</footer>

<script>
(function(){
  "use strict";
  var reduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches;

  /* Year */
  document.querySelectorAll(".js-year").forEach(function(el){ el.textContent = new Date().getFullYear(); });

  /* Header shadow */
  var header = document.getElementById("site-header");
  var onScroll = function(){ header.classList.toggle("scrolled", window.scrollY > 8); };
  window.addEventListener("scroll", onScroll, {passive:true}); onScroll();

  /* Mobile nav */
  var toggle = document.querySelector(".nav-toggle");
  toggle.addEventListener("click", function(){
    var open = header.classList.toggle("nav-open");
    toggle.setAttribute("aria-expanded", open ? "true" : "false");
  });
  document.querySelectorAll("#mainNav a").forEach(function(a){
    a.addEventListener("click", function(){ header.classList.remove("nav-open"); toggle.setAttribute("aria-expanded","false"); });
  });

  /* Count-up */
  function animateCount(el){
    var target = parseInt(el.getAttribute("data-count"), 10);
    var suffix = el.getAttribute("data-suffix") || "";
    if (reduced || isNaN(target)) { el.textContent = target.toLocaleString() + suffix; return; }
    var dur = 1600, start = performance.now();
    (function tick(now){
      var p = Math.min((now - start) / dur, 1);
      var e = 1 - Math.pow(1 - p, 3);
      el.textContent = Math.round(target * e).toLocaleString() + suffix;
      if (p < 1) requestAnimationFrame(tick);
    })(start);
  }

  /* Reveal observer */
  var io = new IntersectionObserver(function(entries){
    entries.forEach(function(en){
      if (!en.isIntersecting) return;
      en.target.classList.add("in-view");
      en.target.querySelectorAll("[data-count]").forEach(animateCount);
      if (en.target.hasAttribute("data-count")) animateCount(en.target);
      io.unobserve(en.target);
    });
  }, {threshold:.15, rootMargin:"0px 0px -6% 0px"});
  document.querySelectorAll("[data-reveal],[data-count]").forEach(function(el){ io.observe(el); });

  /* Scrollspy */
  var spyLinks = document.querySelectorAll("#mainNav a[data-link]");
  var spyIO = new IntersectionObserver(function(entries){
    entries.forEach(function(en){
      if (!en.isIntersecting) return;
      spyLinks.forEach(function(l){ l.classList.toggle("active", l.getAttribute("data-link") === en.target.id); });
    });
  }, {rootMargin:"-40% 0px -55% 0px"});
  document.querySelectorAll("[data-spy]").forEach(function(s){ spyIO.observe(s); });

  /* Live kitchen log */
  var meals = 247, lm = document.getElementById("liveMeals");
  setInterval(function(){
    meals += 1 + Math.floor(Math.random() * 3);
    lm.textContent = meals.toLocaleString();
  }, reduced ? 12000 : 6000);

  /* FAQ accordion */
  document.querySelectorAll(".faq-q").forEach(function(btn){
    btn.addEventListener("click", function(){
      var item = btn.parentElement;
      var wasOpen = item.classList.contains("open");
      document.querySelectorAll(".faq-item.open").forEach(function(o){ o.classList.remove("open"); o.querySelector(".faq-q").setAttribute("aria-expanded","false"); });
      if (!wasOpen) { item.classList.add("open"); btn.setAttribute("aria-expanded","true"); }
    });
  });

  /* ---------- Giving portal ---------- */
  var MEAL_COST = 2.5;
  var give = { freq:"monthly", amount:50, matched:false };
  var freqBtns = document.querySelectorAll(".freq-btn");
  var chips = document.querySelectorAll(".chip");
  var customAmt = document.getElementById("customAmt");
  var matchToggle = document.getElementById("matchToggle");
  var impMain = document.getElementById("impMain");
  var impMatch = document.getElementById("impMatch");
  var allocLine = document.getElementById("allocLine");
  var giveBtn = document.getElementById("giveBtn");
  var giveForm = document.getElementById("giveForm");
  var widget = document.getElementById("giveWidget");

  function usd(n){ return "$" + n.toLocaleString(); }
  function updateGive(){
    var total = give.matched ? give.amount * 2 : give.amount;
    var meals = Math.max(1, Math.round(total / MEAL_COST));
    impMain.textContent = give.freq === "monthly"
      ? meals + " warm meals, every single month."
      : "About " + meals + " warm meals served this month.";
    impMatch.textContent = give.matched
      ? "Harvest Match added " + usd(give.amount) + " — your total is " + usd(total) + ". Thank you."
      : "Turn on the Harvest Match to double your impact for free.";
    allocLine.textContent = "That puts ≈ $" + Math.round(total * .82) + " in kitchens, $" + Math.round(total * .09) + " in fundraising, $" + Math.round(total * .09) + " in operations.";
    giveBtn.innerHTML = "Give " + usd(give.amount) + (give.freq === "monthly" ? "/month" : "") + " securely <span class='arw'>→</span>";
  }
  freqBtns.forEach(function(b){
    b.addEventListener("click", function(){
      freqBtns.forEach(function(x){ x.classList.remove("active"); });
      b.classList.add("active");
      give.freq = b.getAttribute("data-freq");
      updateGive();
    });
  });
  chips.forEach(function(c){
    c.addEventListener("click", function(){
      chips.forEach(function(x){ x.classList.remove("active"); });
      c.classList.add("active");
      customAmt.value = "";
      give.amount = parseInt(c.getAttribute("data-amt"), 10);
      updateGive();
    });
  });
  customAmt.addEventListener("input", function(){
    var v = parseInt(customAmt.value, 10);
    if (!isNaN(v) && v >= 5) {
      chips.forEach(function(x){ x.classList.remove("active"); });
      give.amount = v;
      updateGive();
    }
  });
  matchToggle.addEventListener("change", function(){ give.matched = matchToggle.checked; updateGive(); });

  giveForm.addEventListener("submit", function(e){
    e.preventDefault();
    var amt = give.amount;
    if (isNaN(amt) || amt < 5) { customAmt.focus(); customAmt.style.borderColor = "#C4571F"; return; }
    var total = give.matched ? amt * 2 : amt;
    document.getElementById("giveSummary").textContent =
      "Your " + (give.freq === "monthly" ? "monthly" : "one-time") + " gift of " + usd(amt) +
      (give.matched ? " (doubled to " + usd(total) + " by the Harvest Match)" : "") + " is confirmed.";
    document.getElementById("refNum").textContent =
      "OTP-" + new Date().getFullYear() + "-" + Math.random().toString(36).slice(2, 7).toUpperCase();
    widget.classList.add("donated");
    widget.scrollIntoView({behavior: reduced ? "auto" : "smooth", block:"center"});
  });
  document.getElementById("giveReset").addEventListener("click", function(){
    widget.classList.remove("donated");
    customAmt.style.borderColor = "";
  });
  updateGive();

  /* Newsletter */
  document.getElementById("nlForm").addEventListener("submit", function(e){
    e.preventDefault();
    var email = document.getElementById("nlEmail");
    if (!email.value || email.value.indexOf("@") < 1) { email.focus(); return; }
    this.style.display = "none";
    document.getElementById("nlMsg").style.display = "block";
  });
})();
</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:49:23.618Z",
  "url": "https://benchmark.aimac.invalid/0ac2a581e4b6713f50e6d03fe17d2f5ef5ccb9cc014c7712b0402cc21aab2382.html",
  "toolOptions": {
    "runOnly": {
      "type": "tag",
      "values": [
        "wcag2a",
        "wcag2aa",
        "wcag21a",
        "wcag21aa",
        "wcag22a",
        "wcag22aa"
      ]
    },
    "resultTypes": [
      "violations"
    ],
    "reporter": "v1"
  },
  "inapplicable": [
    {
      "id": "area-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure <area> elements of image maps have alternative text",
      "help": "Active <area> elements must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-braille-equivalent",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
      "help": "aria-braille attributes must have a non-braille equivalent",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-command-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA button, link and menuitem has an accessible name",
      "help": "ARIA commands must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-input-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA input field has an accessible name",
      "help": "ARIA input fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-meter-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag111",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure every ARIA meter node has an accessible name",
      "help": "ARIA meter nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-progressbar-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag111",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure every ARIA progressbar node has an accessible name",
      "help": "ARIA progressbar nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-required-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-toggle-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA toggle field has an accessible name",
      "help": "ARIA toggle fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-tooltip-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every ARIA tooltip node has an accessible name",
      "help": "ARIA tooltip nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "autocomplete-valid",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag21aa",
        "wcag135",
        "EN-301-549",
        "EN-9.1.3.5",
        "ACT"
      ],
      "description": "Ensure the autocomplete attribute is correct and suitable for the form field",
      "help": "autocomplete attribute must be used correctly",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
      "nodes": []
    },
    {
      "id": "blink",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag222",
        "section508",
        "section508.22.j",
        "TTv5",
        "TT2.b",
        "EN-301-549",
        "EN-9.2.2.2"
      ],
      "description": "Ensure <blink> elements are not used",
      "help": "<blink> elements are deprecated and must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
      "nodes": []
    },
    {
      "id": "definition-list",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <dl> elements are structured correctly",
      "help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
      "nodes": []
    },
    {
      "id": "dlitem",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <dt> and <dd> elements are contained by a <dl>",
      "help": "<dt> and <dd> elements must be contained by a <dl>",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-focusable-content",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag211",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
      "help": "Frames with focusable content must not have tabindex=-1",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-title-unique",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT12.d",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
      "help": "Frames must have a unique title attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.i",
        "TTv5",
        "TT12.d",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure <iframe> and <frame> elements have an accessible name",
      "help": "Frames must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
      "nodes": []
    },
    {
      "id": "html-xml-lang-mismatch",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
      "help": "HTML elements with lang and xml:lang must have the same base language",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
      "nodes": []
    },
    {
      "id": "input-button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure input buttons have discernible text",
      "help": "Input buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "input-image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure <input type=\"image\"> elements have alternative text",
      "help": "Image buttons must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "link-in-text-block",
      "impact": null,
      "tags": [
        "cat.color",
        "wcag2a",
        "wcag141",
        "TTv5",
        "TT13.a",
        "EN-301-549",
        "EN-9.1.4.1"
      ],
      "description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
      "help": "Links must be distinguishable without relying on color",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
      "nodes": []
    },
    {
      "id": "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-allowed-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure an element's role supports its ARIA attributes",
      "help": "Elements must only use supported ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-allowed-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attributes are used correctly for the defined role"
            }
          ],
          "none": [
            {
              "id": "aria-unsupported-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute is supported"
            }
          ],
          "impact": null,
          "html": "<nav id=\"mainNav\" aria-label=\"Primary navigation\">",
          "target": [
            "#mainNav"
          ]
        }
      ]
    },
    {
      "id": "aria-conditional-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are used as described in the specification of the element's role",
      "help": "ARIA attributes must be used as specified for the element's role",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-conditional-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<nav id=\"mainNav\" aria-label=\"Primary navigation\">",
          "target": [
            "#mainNav"
          ]
        }
      ]
    },
    {
      "id": "aria-deprecated-role",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements do not use deprecated roles",
      "help": "Deprecated ARIA roles must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "deprecatedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "minor",
              "message": "ARIA role is not deprecated"
            }
          ],
          "impact": null,
          "html": "<div class=\"freq-row\" role=\"group\" aria-label=\"Gift frequency\">",
          "target": [
            ".freq-row"
          ]
        }
      ]
    },
    {
      "id": "aria-hidden-body",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "wcag412",
        "EN-301-549",
        "EN-9.1.3.1",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-hidden=\"true\" is not present on the document body.",
      "help": "aria-hidden=\"true\" must not be present on the document body",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-hidden-body",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "No aria-hidden attribute is present on document body"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<body>",
          "target": [
            "body"
          ]
        }
      ]
    },
    {
      "id": "aria-hidden-focus",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
      "help": "ARIA hidden element must not be focusable or contain focusable elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "focusable-modal-open",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements while a modal is open"
            },
            {
              "id": "focusable-disabled",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            },
            {
              "id": "focusable-not-tabbable",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<div class=\"util-bar\" aria-hidden=\"true\">\n  <div class=\"wrap\">\n    <span>Registered 501(c)(3) \u00b7 EIN 84-1204477 \u00b7 Providence, RI</span>\n    <span class=\"u-right\"><b>82\u00a2</b> of every dollar goes to programs</span>\n  </div>\n</div>",
          "target": [
            ".util-bar"
          ]
        }
      ]
    },
    {
      "id": "aria-prohibited-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are not prohibited for an element's role",
      "help": "Elements must only use permitted ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "aria-prohibited-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "impact": null,
          "html": "<nav id=\"mainNav\" aria-label=\"Primary navigation\">",
          "target": [
            "#mainNav"
          ]
        }
      ]
    },
    {
      "id": "aria-required-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements with ARIA roles have all required ARIA attributes",
      "help": "Required ARIA attributes must be provided",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-required-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "All required ARIA attributes are present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"freq-row\" role=\"group\" aria-label=\"Gift frequency\">",
          "target": [
            ".freq-row"
          ]
        }
      ]
    },
    {
      "id": "aria-roles",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all elements with a role attribute use a valid value",
      "help": "ARIA roles used must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "invalidrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is valid"
            },
            {
              "id": "abstractrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Abstract roles are not used"
            },
            {
              "id": "unsupportedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is supported"
            }
          ],
          "impact": null,
          "html": "<div class=\"freq-row\" role=\"group\" aria-label=\"Gift frequency\">",
          "target": [
            ".freq-row"
          ]
        }
      ]
    },
    {
      "id": "aria-valid-attr-value",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all ARIA attributes have valid values",
      "help": "ARIA attributes must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-valid-attr-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute values are valid"
            },
            {
              "id": "aria-errormessage",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
            },
            {
              "id": "aria-level",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-level values are valid"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<nav id=\"mainNav\" aria-label=\"Primary navigation\">",
          "target": [
            "#mainNav"
          ]
        }
      ]
    },
    {
      "id": "aria-valid-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure attributes that begin with aria- are valid ARIA attributes",
      "help": "ARIA attributes must conform to valid names",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-valid-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute name is valid"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<nav id=\"mainNav\" aria-label=\"Primary navigation\">",
          "target": [
            "#mainNav"
          ]
        }
      ]
    },
    {
      "id": "avoid-inline-spacing",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag21aa",
        "wcag1412",
        "EN-301-549",
        "EN-9.1.4.12",
        "ACT"
      ],
      "description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
      "help": "Inline text spacing must be adjustable with custom stylesheets",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "important-letter-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-word-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-line-height",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "line-height in the style attribute is not set to !important, or meets the minimum"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<div class=\"hero-visual in-view\" data-reveal=\"\" style=\"--d:.15s\">",
          "target": [
            ".hero-visual"
          ]
        }
      ]
    },
    {
      "id": "button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure buttons have discernible text",
      "help": "Buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "button-has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has inner text that is visible to screen readers"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<button type=\"button\" class=\"freq-btn\" data-freq=\"once\">One-time</button>",
          "target": [
            "button[data-freq=\"once\"]"
          ]
        }
      ]
    },
    {
      "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>\n          <span class=\"h-line\"><span>Every table</span></span>\n          <span class=\"h-line\"><span>has room for</span></span>\n          <span class=\"h-line\"><span class=\"italic\">one more.</span></span>\n        </h1>",
                  "target": [
                    "h1"
                  ]
                },
                {
                  "html": "<h2 class=\"mission-statement\" data-reveal=\"\" style=\"--d:.08s\">\n        Food insecurity isn't an accident \u2014 it's a failure of logistics. <span class=\"italic\">So we built the logistics.</span>\n      </h2>",
                  "target": [
                    ".mission-statement"
                  ]
                },
                {
                  "html": "<h3>Feed</h3>",
                  "target": [
                    ".pillar:nth-child(1) > h3"
                  ]
                },
                {
                  "html": "<h3>Train</h3>",
                  "target": [
                    ".pillar:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>Advocate</h3>",
                  "target": [
                    ".pillar:nth-child(3) > h3"
                  ]
                },
                {
                  "html": "<h2>Where your dollar <span class=\"italic\">actually</span> goes</h2>",
                  "target": [
                    ".dollar-head > h2"
                  ]
                },
                {
                  "html": "<h2>The split</h2>",
                  "target": [
                    ".dollar-sticky > h2"
                  ]
                },
                {
                  "html": "<h3>Groceries, bought close to home</h3>",
                  "target": [
                    ".stage:nth-child(1) > .stage-body > h3"
                  ]
                },
                {
                  "html": "<h3>Crews that turn produce into 1,200 plates</h3>",
                  "target": [
                    ".stage:nth-child(2) > .stage-body > h3"
                  ]
                },
                {
                  "html": "<h3>Three services a day, zero forms</h3>",
                  "target": [
                    ".stage:nth-child(3) > .stage-body > h3"
                  ]
                },
                {
                  "html": "<h3>The Youth Food Lab</h3>",
                  "target": [
                    ".stage:nth-child(4) > .stage-body > h3"
                  ]
                },
                {
                  "html": "<h3>Logged, published, argued over</h3>",
                  "target": [
                    ".stage:nth-child(5) > .stage-body > h3"
                  ]
                },
                {
                  "html": "<h2>Postcards from <span class=\"italic\">the table</span></h2>",
                  "target": [
                    "#impact > .wrap > .impact-head > div[data-reveal=\"\"] > h2"
                  ]
                },
                {
                  "html": "<h2>Get involved <span class=\"italic\">at the stove</span></h2>",
                  "target": [
                    ".vol-copy > h2"
                  ]
                },
                {
                  "html": "<h3>Saturday Community Kitchen</h3>",
                  "target": [
                    ".shift:nth-child(1) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Meal Prep Wednesday</h3>",
                  "target": [
                    ".shift:nth-child(2) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Mobile Pantry Driver</h3>",
                  "target": [
                    ".shift:nth-child(3) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Youth Food Lab Mentor</h3>",
                  "target": [
                    ".shift:nth-child(4) > div > h3"
                  ]
                },
                {
                  "html": "<h2>Come to the <span class=\"italic\">table</span> in person</h2>",
                  "target": [
                    "#events > .wrap > .impact-head > div[data-reveal=\"\"] > h2"
                  ]
                },
                {
                  "html": "<h3>Harvest Cook-Off</h3>",
                  "target": [
                    ".event:nth-child(2) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>The Long Table: Annual Gala</h3>",
                  "target": [
                    ".event:nth-child(3) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>Sponsor-a-Kitchen Day</h3>",
                  "target": [
                    ".event:nth-child(4) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h2 data-reveal=\"\" style=\"--d:.08s\">Put a plate on the table <span class=\"italic\" style=\"color:var(--gold)\">tonight.</span></h2>",
                  "target": [
                    ".give-copy > h2"
                  ]
                },
                {
                  "html": "<h3>Choose your gift</h3>",
                  "target": [
                    "#giveForm > h3"
                  ]
                },
                {
                  "html": "<h4>The Harvest Table \u00b7 Recognized July 2025</h4>",
                  "target": [
                    ".side-card:nth-child(1) > h4"
                  ]
                },
                {
                  "html": "<h4>Impact Reports &amp; Financials</h4>",
                  "target": [
                    ".side-card:nth-child(2) > h4"
                  ]
                },
                {
                  "html": "<h4>Prefer to give another way?</h4>",
                  "target": [
                    ".side-card:nth-child(3) > h4"
                  ]
                },
                {
                  "html": "<h2>Kitchens run on <span class=\"italic\">neighbors, not slogans</span></h2>",
                  "target": [
                    ".partners-copy > h2"
                  ]
                },
                {
                  "html": "<h2>The questions we <span class=\"italic\">hear at the door</span></h2>",
                  "target": [
                    ".faq-grid > div[data-reveal=\"\"]:nth-child(1) > h2"
                  ]
                },
                {
                  "html": "<h4>Still curious?</h4>",
                  "target": [
                    ".contact-mini > h4"
                  ]
                },
                {
                  "html": "<h5>Explore</h5>",
                  "target": [
                    ".foot-col:nth-child(2) > h5"
                  ]
                },
                {
                  "html": "<h5>Get Involved</h5>",
                  "target": [
                    ".foot-col:nth-child(3) > h5"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a heading"
            },
            {
              "id": "landmark",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<main id=\"main\">",
                  "target": [
                    "#main"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a landmark region"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#d4d2c5",
                "bgColor": "#1f2e22",
                "contrastRatio": 9.39,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has sufficient color contrast of 9.39"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<span>Registered 501(c)(3) \u00b7 EIN 84-1204477 \u00b7 Providence, RI</span>",
          "target": [
            ".wrap > span:nth-child(1)"
          ]
        }
      ]
    },
    {
      "id": "document-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag242",
        "TTv5",
        "TT12.a",
        "EN-301-549",
        "EN-9.2.4.2",
        "ACT"
      ],
      "description": "Ensure each HTML document contains a non-empty <title> element",
      "help": "Documents must have <title> element to aid in navigation",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "doc-has-title",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Document has a non-empty <title> element"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "duplicate-id-aria",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every id attribute value used in ARIA and in labels is unique",
      "help": "IDs used in ARIA and labels must be unique",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "duplicate-id-aria",
              "data": "mainNav",
              "relatedNodes": [],
              "impact": "critical",
              "message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<nav id=\"mainNav\" aria-label=\"Primary navigation\">",
          "target": [
            "#mainNav"
          ]
        }
      ]
    },
    {
      "id": "form-field-multiple-labels",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag332",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.3.3.2"
      ],
      "description": "Ensure form field does not have multiple label elements",
      "help": "Form field must not have multiple label elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "multiple-label",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<label class=\"custom-row\" for=\"customAmt\">\n              <span>$</span>\n              <input type=\"number\" id=\"customAmt\" min=\"5\" placeholder=\"Custom amount\" aria-label=\"Custom amount in dollars\">\n            </label>",
                  "target": [
                    ".custom-row"
                  ]
                }
              ],
              "impact": "moderate",
              "message": "Form field does not have multiple label elements"
            }
          ],
          "impact": null,
          "html": "<input type=\"number\" id=\"customAmt\" min=\"5\" placeholder=\"Custom amount\" aria-label=\"Custom amount in dollars\">",
          "target": [
            "#customAmt"
          ]
        }
      ]
    },
    {
      "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/c4571f/faf3e4?text=OT&amp;font=playfair+display\" alt=\"The Open Table Project logo\" width=\"46\" height=\"46\">",
          "target": [
            "img[width=\"46\"]"
          ]
        }
      ]
    },
    {
      "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": "implicit-label",
              "data": {
                "implicitLabel": "$ Custom amount in dollars"
              },
              "relatedNodes": [
                {
                  "html": "<label class=\"custom-row\" for=\"customAmt\">\n              <span>$</span>\n              <input type=\"number\" id=\"customAmt\" min=\"5\" placeholder=\"Custom amount\" aria-label=\"Custom amount in dollars\">\n            </label>",
                  "target": [
                    ".custom-row"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has an implicit (wrapped) <label>"
            },
            {
              "id": "explicit-label",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<label class=\"custom-row\" for=\"customAmt\">\n              <span>$</span>\n              <input type=\"number\" id=\"customAmt\" min=\"5\" placeholder=\"Custom amount\" aria-label=\"Custom amount in dollars\">\n            </label>",
                  "target": [
                    ".custom-row"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has an explicit <label>"
            },
            {
              "id": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-label attribute exists and is not empty"
            },
            {
              "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=\"number\" id=\"customAmt\" min=\"5\" placeholder=\"Custom amount\" aria-label=\"Custom amount in dollars\">",
          "target": [
            "#customAmt"
          ]
        }
      ]
    },
    {
      "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 class=\"skip\" href=\"#main\">Skip to main content</a>",
          "target": [
            ".skip"
          ]
        }
      ]
    },
    {
      "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": [
            "#mainNav > 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=\"#mission\" data-link=\"mission\">Our Mission</a></li>",
          "target": [
            "#mainNav > 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/c4571f/faf3e4?text=OT&amp;font=playfair+display\" alt=\"The Open Table Project logo\" width=\"46\" height=\"46\">",
          "target": [
            "img[width=\"46\"]"
          ]
        }
      ]
    },
    {
      "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": 201.7,
                "height": 50.4
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Control has sufficient size (201.7px by 50.4px, 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 class=\"skip\" href=\"#main\">Skip to main content</a>",
          "target": [
            ".skip"
          ]
        }
      ]
    }
  ],
  "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": {
                "messageKey": "nonBmp"
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element content contains only non-text characters"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"arw\">\u2192</span>",
          "target": [
            ".header-inner > .btn[href$=\"#give\"] > .arw"
          ],
          "failureSummary": "Fix any of the following:\n  Element content contains only non-text characters"
        }
      ]
    }
  ],
  "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": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Give Now <span class=\"arw\">\u2192</span></a>",
                  "target": [
                    ".header-inner > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Give Now <span class=\"arw\">\u2192</span></a>",
          "target": [
            ".header-inner > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#a0a397",
                "bgColor": "#f6f1e5",
                "contrastRatio": 2.27,
                "fontSize": "7.5pt (10px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.27 (foreground color: #a0a397, background color: #f6f1e5, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"hero-side\">Est. 2016 \u00b7 Providence, R.I. \u00b7 Six kitchens \u00b7 14 routes</span>",
          "target": [
            ".hero-side"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.27 (foreground color: #a0a397, background color: #f6f1e5, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eyebrow\">Community food non-profit \u00b7 Serving daily since 2016</p>",
          "target": [
            "#top > .wrap > div:nth-child(1) > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Give Now <span class=\"arw\">\u2192</span></a>",
                  "target": [
                    ".hero-ctas > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Give Now <span class=\"arw\">\u2192</span></a>",
          "target": [
            ".hero-ctas > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#c4571f",
                "contrastRatio": 4.43,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<button type=\"submit\">Join</button>",
                  "target": [
                    "#nlForm > button[type=\"submit\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.43 (foreground color: #ffffff, background color: #c4571f, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<button type=\"submit\">Join</button>",
          "target": [
            "#nlForm > button[type=\"submit\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.43 (foreground color: #ffffff, background color: #c4571f, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eyebrow in-view\" data-reveal=\"\">Our Mission</p>",
          "target": [
            ".in-view.eyebrow[data-reveal=\"\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header id=\"site-header\" class=\"scrolled\">",
                  "target": [
                    "#site-header"
                  ]
                },
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#mission\" data-link=\"mission\" class=\"active\">Our Mission</a>",
          "target": [
            "a[data-link=\"mission\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eyebrow in-view\" data-reveal=\"\">Our Mission</p>",
          "target": [
            ".eyebrow.in-view[data-reveal=\"\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"pillar-num\">01 /</span>",
          "target": [
            ".pillar:nth-child(1) > .pillar-num"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"pillar-num\">02 /</span>",
          "target": [
            ".pillar:nth-child(2) > .pillar-num"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"pillar-num\">003 /</span>",
          "target": [
            ".pillar:nth-child(3) > .pillar-num"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e4",
                "contrastRatio": 3.93,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header id=\"site-header\" class=\"scrolled\">",
                  "target": [
                    "#site-header"
                  ]
                },
                {
                  "html": "<section class=\"dollar\" id=\"programs\" data-spy=\"\">",
                  "target": [
                    "#programs"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e4, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#programs\" data-link=\"programs\" class=\"active\">Programs</a>",
          "target": [
            "a[data-link=\"programs\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e4, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "11.3pt (15px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"dollar-sticky in-view\" data-reveal=\"\">",
                  "target": [
                    ".dollar-sticky"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>82\u00a2</b>",
          "target": [
            ".alloc-row:nth-child(3) > .alloc-top > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "11.3pt (15px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"dollar-sticky in-view\" data-reveal=\"\">",
                  "target": [
                    ".dollar-sticky"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>9\u00a2</b>",
          "target": [
            ".alloc-row:nth-child(4) > .alloc-top > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "11.3pt (15px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"dollar-sticky in-view\" data-reveal=\"\">",
                  "target": [
                    ".dollar-sticky"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<b>9\u00a2</b>",
          "target": [
            ".alloc-row:nth-child(5) > .alloc-top > b"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Give Now <span class=\"arw\">\u2192</span></a>",
                  "target": [
                    ".dollar-sticky > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Give Now <span class=\"arw\">\u2192</span></a>",
          "target": [
            ".dollar-sticky > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#ede5d2",
                "contrastRatio": 3.53,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"dollar\" id=\"programs\" data-spy=\"\">",
                  "target": [
                    "#programs"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"stage-num\">STAGE 01 \u2014 SOURCE</span>",
          "target": [
            ".stage.in-view:nth-child(1) > .stage-body > .stage-num"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#ede5d2",
                "contrastRatio": 3.53,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"dollar\" id=\"programs\" data-spy=\"\">",
                  "target": [
                    "#programs"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"stage-num\">STAGE 02 \u2014 COOK</span>",
          "target": [
            ".stage.in-view:nth-child(2) > .stage-body > .stage-num"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#ede5d2",
                "contrastRatio": 3.53,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"dollar\" id=\"programs\" data-spy=\"\">",
                  "target": [
                    "#programs"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"stage-num\">STAGE 01 \u2014 SOURCE</span>",
          "target": [
            ".stage:nth-child(1) > .stage-body > .stage-num"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#ede5d2",
                "contrastRatio": 3.53,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"dollar\" id=\"programs\" data-spy=\"\">",
                  "target": [
                    "#programs"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"stage-num\">STAGE 02 \u2014 COOK</span>",
          "target": [
            ".stage:nth-child(2) > .stage-body > .stage-num"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#ede5d2",
                "contrastRatio": 3.53,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"dollar\" id=\"programs\" data-spy=\"\">",
                  "target": [
                    "#programs"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"stage-num\">STAGE 03 \u2014 SERVE</span>",
          "target": [
            ".stage:nth-child(3) > .stage-body > .stage-num"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#ede5d2",
                "contrastRatio": 3.53,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"dollar\" id=\"programs\" data-spy=\"\">",
                  "target": [
                    "#programs"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"stage-num\">STAGE 04 \u2014 TEACH</span>",
          "target": [
            ".stage:nth-child(4) > .stage-body > .stage-num"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#ede5d2",
                "contrastRatio": 3.53,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"dollar\" id=\"programs\" data-spy=\"\">",
                  "target": [
                    "#programs"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"stage-num\">STAGE 05 \u2014 RECORD</span>",
          "target": [
            ".stage:nth-child(5) > .stage-body > .stage-num"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header id=\"site-header\" class=\"scrolled\">",
                  "target": [
                    "#site-header"
                  ]
                },
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#impact\" data-link=\"impact\" class=\"active\">Impact</a>",
          "target": [
            "a[data-link=\"impact\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#fdfbf4",
                "contrastRatio": 4.28,
                "fontSize": "7.1pt (9.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<figure class=\"postcard in-view\" style=\"--r:-2.2deg; --ty:0px\" data-reveal=\"\">",
                  "target": [
                    ".postcard:nth-child(1)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.28 (foreground color: #c4571f, background color: #fdfbf4, font size: 7.1pt (9.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"pc-tag\">Chef Apprentice \u00b7 Class of 2024</span>",
          "target": [
            ".postcard:nth-child(1) > figcaption > .pc-tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.28 (foreground color: #c4571f, background color: #fdfbf4, font size: 7.1pt (9.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#fdfbf4",
                "contrastRatio": 4.28,
                "fontSize": "7.1pt (9.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<figure class=\"postcard in-view\" style=\"--r:1.8deg; --ty:46px\" data-reveal=\"\" style2=\"\">",
                  "target": [
                    "figure[style2=\"\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.28 (foreground color: #c4571f, background color: #fdfbf4, font size: 7.1pt (9.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"pc-tag\">Volunteer \u00b7 312 Saturdays</span>",
          "target": [
            "figure[style2=\"\"] > figcaption > .pc-tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.28 (foreground color: #c4571f, background color: #fdfbf4, font size: 7.1pt (9.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#fdfbf4",
                "contrastRatio": 4.28,
                "fontSize": "7.1pt (9.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<figure class=\"postcard in-view\" style=\"--r:-1.6deg; --ty:20px\" data-reveal=\"\">",
                  "target": [
                    ".postcard:nth-child(3)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.28 (foreground color: #c4571f, background color: #fdfbf4, font size: 7.1pt (9.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"pc-tag\">Mobile Pantry \u00b7 Ward 4</span>",
          "target": [
            ".postcard:nth-child(3) > figcaption > .pc-tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.28 (foreground color: #c4571f, background color: #fdfbf4, font size: 7.1pt (9.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#fdfbf4",
                "contrastRatio": 4.28,
                "fontSize": "7.1pt (9.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<figure class=\"postcard in-view\" style=\"--r:2.4deg; --ty:60px\" data-reveal=\"\">",
                  "target": [
                    ".postcard:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.28 (foreground color: #c4571f, background color: #fdfbf4, font size: 7.1pt (9.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"pc-tag\">Youth Food Lab \u00b7 Age 16</span>",
          "target": [
            ".postcard:nth-child(4) > figcaption > .pc-tag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.28 (foreground color: #c4571f, background color: #fdfbf4, font size: 7.1pt (9.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#e3e6d8",
                "contrastRatio": 3.5,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"volunteer\" id=\"volunteer\" data-spy=\"\">",
                  "target": [
                    "#volunteer"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.5 (foreground color: #c4571f, background color: #e3e6d8, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eyebrow\">Volunteer Opportunities</p>",
          "target": [
            ".vol-copy > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.5 (foreground color: #c4571f, background color: #e3e6d8, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Sign Up to Volunteer <span class=\"arw\">\u2192</span></a>",
                  "target": [
                    ".vol-copy > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Sign Up to Volunteer <span class=\"arw\">\u2192</span></a>",
          "target": [
            ".vol-copy > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Sign Up</a>",
                  "target": [
                    ".shift:nth-child(1) > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Sign Up</a>",
          "target": [
            ".shift:nth-child(1) > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Sign Up</a>",
                  "target": [
                    ".shift:nth-child(2) > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Sign Up</a>",
          "target": [
            ".shift:nth-child(2) > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Sign Up</a>",
                  "target": [
                    ".shift:nth-child(3) > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Sign Up</a>",
          "target": [
            ".shift:nth-child(3) > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Sign Up</a>",
                  "target": [
                    ".shift:nth-child(4) > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Sign Up</a>",
          "target": [
            ".shift:nth-child(4) > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header id=\"site-header\" class=\"scrolled\">",
                  "target": [
                    "#site-header"
                  ]
                },
                {
                  "html": "<article class=\"shift in-view\" data-reveal=\"\" style=\"--d:.24s\">",
                  "target": [
                    ".shift:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#events\" data-link=\"events\" class=\"active\">Events</a>",
          "target": [
            "a[data-link=\"events\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "7.5pt (10px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"date-block\"><span class=\"d\">04</span><span class=\"m\">Oct</span></div>",
                  "target": [
                    ".event:nth-child(2) > .date-block"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"m\">Oct</span>",
          "target": [
            ".event:nth-child(2) > .date-block > .m"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.9pt (10.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"loc\">Riverside Kitchen \u00b7 11:00 a.m.</span>",
          "target": [
            ".event:nth-child(2) > div:nth-child(2) > .loc"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.9pt (10.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Join Event</a>",
                  "target": [
                    ".event:nth-child(2) > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Join Event</a>",
          "target": [
            ".event:nth-child(2) > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "7.5pt (10px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"date-block\"><span class=\"d\">25</span><span class=\"m\">Oct</span></div>",
                  "target": [
                    ".event:nth-child(3) > .date-block"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"m\">Oct</span>",
          "target": [
            ".event:nth-child(3) > .date-block > .m"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.9pt (10.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"loc\">Harbor Hall, 180 Front St \u00b7 6:30 p.m.</span>",
          "target": [
            ".event:nth-child(3) > div:nth-child(2) > .loc"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.9pt (10.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Join Event</a>",
                  "target": [
                    ".event:nth-child(3) > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Join Event</a>",
          "target": [
            ".event:nth-child(3) > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "7.5pt (10px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"date-block\"><span class=\"d\">08</span><span class=\"m\">Nov</span></div>",
                  "target": [
                    ".event:nth-child(4) > .date-block"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"m\">Nov</span>",
          "target": [
            ".event:nth-child(4) > .date-block > .m"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.5pt (10px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.9pt (10.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"loc\">Citywide \u00b7 10:00 a.m. assembly at Central Depot</span>",
          "target": [
            ".event:nth-child(4) > div:nth-child(2) > .loc"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.9pt (10.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a href=\"#give\" class=\"btn\">Join Event</a>",
                  "target": [
                    ".event:nth-child(4) > .btn[href$=\"#give\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#give\" class=\"btn\">Join Event</a>",
          "target": [
            ".event:nth-child(4) > .btn[href$=\"#give\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eyebrow in-view\" data-reveal=\"\">Our Mission</p>",
          "target": [
            ".wrap > .eyebrow.in-view[data-reveal=\"\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#ffffff",
                "bgColor": "#c4571f",
                "contrastRatio": 4.43,
                "fontSize": "6.0pt (8px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"flag\">Most impact</span>",
                  "target": [
                    ".flag"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.43 (foreground color: #ffffff, background color: #c4571f, font size: 6.0pt (8px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"flag\">Most impact</span>",
          "target": [
            ".flag"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.43 (foreground color: #ffffff, background color: #c4571f, font size: 6.0pt (8px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "11.3pt (15px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<button type=\"button\" class=\"chip active\" data-amt=\"50\">$50</button>",
                  "target": [
                    "button[data-amt=\"50\"]"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<button type=\"button\" class=\"chip active\" data-amt=\"50\">$50</button>",
          "target": [
            "button[data-amt=\"50\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#f4efe3",
                "bgColor": "#f6f1e5",
                "contrastRatio": 1.01,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"give-widget in-view\" id=\"giveWidget\" data-reveal=\"\" style=\"--d:.2s\">",
                  "target": [
                    "#giveWidget"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.01 (foreground color: #f4efe3, background color: #f6f1e5, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"alloc-line\" id=\"allocLine\">That puts \u2248 $41 in kitchens, $5 in fundraising, $5 in operations.</p>",
          "target": [
            "#allocLine"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.01 (foreground color: #f4efe3, background color: #f6f1e5, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<button type=\"submit\" class=\"btn\" id=\"giveBtn\">Give $50/month securely <span class=\"arw\">\u2192</span></button>",
                  "target": [
                    "#giveBtn"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<button type=\"submit\" class=\"btn\" id=\"giveBtn\">Give $50/month securely <span class=\"arw\">\u2192</span></button>",
          "target": [
            "#giveBtn"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#f4efe3",
                "bgColor": "#f6f1e5",
                "contrastRatio": 1.01,
                "fontSize": "7.5pt (10px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"give-widget in-view\" id=\"giveWidget\" data-reveal=\"\" style=\"--d:.2s\">",
                  "target": [
                    "#giveWidget"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.01 (foreground color: #f4efe3, background color: #f6f1e5, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"secure-note\">256-BIT ENCRYPTED \u00b7 POWERED BY OUR FRIENDS AT PROVIDENCE PAY \u00b7 NO FEES PASSED THROUGH</p>",
          "target": [
            ".secure-note"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.01 (foreground color: #f4efe3, background color: #f6f1e5, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fdf8ee",
                "bgColor": "#c4571f",
                "contrastRatio": 4.19,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<a class=\"btn\" href=\"mailto:partners@opentableproject.org\">Become a Partner <span class=\"arw\">\u2192</span></a>",
                  "target": [
                    ".partner-cta > .btn"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a class=\"btn\" href=\"mailto:partners@opentableproject.org\">Become a Partner <span class=\"arw\">\u2192</span></a>",
          "target": [
            ".partner-cta > .btn"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.19 (foreground color: #fdf8ee, background color: #c4571f, font size: 9.4pt (12.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header id=\"site-header\" class=\"scrolled\">",
                  "target": [
                    "#site-header"
                  ]
                },
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#partners\" data-link=\"partners\" class=\"active\">Partners</a>",
          "target": [
            "a[data-link=\"partners\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#ede5d2",
                "contrastRatio": 3.53,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"faq\" id=\"faq\" data-spy=\"\">",
                  "target": [
                    "#faq"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eyebrow\">FAQ</p>",
          "target": [
            ".faq-grid > .in-view[data-reveal=\"\"]:nth-child(1) > .eyebrow"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.53 (foreground color: #c4571f, background color: #ede5d2, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e5",
                "contrastRatio": 3.93,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"contact-mini\">",
                  "target": [
                    ".contact-mini"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.9pt (10.5px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<h4>Still curious?</h4>",
          "target": [
            ".contact-mini > h4"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e5, font size: 7.9pt (10.5px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#c4571f",
                "bgColor": "#f6f1e4",
                "contrastRatio": 3.93,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header id=\"site-header\" class=\"scrolled\">",
                  "target": [
                    "#site-header"
                  ]
                },
                {
                  "html": "<section class=\"faq\" id=\"faq\" data-spy=\"\">",
                  "target": [
                    "#faq"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e4, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<a href=\"#faq\" data-link=\"faq\" class=\"active\">FAQ</a>",
          "target": [
            "a[data-link=\"faq\"]"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.93 (foreground color: #c4571f, background color: #f6f1e4, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
        }
      ]
    }
  ],
  "coverage": {
    "contract": "main-document-vertical-scroll",
    "complete": true,
    "positions": [
      {
        "y": 0,
        "height": 11602
      },
      {
        "y": 576,
        "height": 11602
      },
      {
        "y": 1152,
        "height": 11602
      },
      {
        "y": 1728,
        "height": 11602
      },
      {
        "y": 2304,
        "height": 11602
      },
      {
        "y": 2880,
        "height": 11602
      },
      {
        "y": 3456,
        "height": 11602
      },
      {
        "y": 4032,
        "height": 11602
      },
      {
        "y": 4608,
        "height": 11602
      },
      {
        "y": 5184,
        "height": 11602
      },
      {
        "y": 5760,
        "height": 11602
      },
      {
        "y": 6336,
        "height": 11602
      },
      {
        "y": 6912,
        "height": 11602
      },
      {
        "y": 7488,
        "height": 11602
      },
      {
        "y": 8064,
        "height": 11602
      },
      {
        "y": 8640,
        "height": 11602
      },
      {
        "y": 9216,
        "height": 11602
      },
      {
        "y": 9792,
        "height": 11602
      },
      {
        "y": 10368,
        "height": 11602
      },
      {
        "y": 10882,
        "height": 11602
      }
    ],
    "scans": 21,
    "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: "Partners", "Our Mission", "Events".
-   **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: "Impact Stories", "Advocacy Initiatives", "Volunteer Opportunities".
    -   **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "501(c)(3) status", "impact measurement", "volunteer hours".
    -   **Visuals:** Integrate relevant placeholder images logically within the content sections.
    -   **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Give Now", "Join Event", "Get Involved".
-   **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: "impact reports", "donor recognition", "success stories".
-   **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.