Xiaomi MiMo V2.6 Flash – Law Government and Politics
via Xiaomi · Generated
- AIMAC Debt 6.39
- Cost $0.007
- Total Violations 101
- HTML Size 75 KB
- Em Dashes 42
Screenshot
View Live Page
Accessibility Issues Found
101 Serious
-
color-contrast serious 101 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<span class="brand-tag">Precedent · Policy · The People</span>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bench & Ballot — Precedent, Policy, and the Power of the People</title>
<meta name="description" content="Bench & Ballot is a nonpartisan civic institute delivering legal guides, policy research, legislative tracking, and grassroots advocacy tools for an informed public.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700;800&family=Source+Sans+3:wght@300;400;600;700&display=swap" rel="stylesheet">
<link rel="icon" href="https://placehold.co/64x64/0E1A2B/C79A2E?text=B%26B&font=playfair%20display">
<script>document.documentElement.classList.add('js');</script>
<style>
:root{
--ink:#0E1A2B;
--ink-2:#16273D;
--ink-3:#1E3552;
--paper:#F7F4EE;
--paper-2:#FFFFFF;
--paper-3:#EFEBE2;
--brass:#C79A2E;
--brass-dk:#A87F1F;
--crimson:#9E2B2B;
--slate:#3C4856;
--muted:#6B7686;
--line:#DDD6C9;
--line-dark:rgba(255,255,255,.14);
--shadow:0 18px 44px -26px rgba(14,26,43,.55);
--serif:'Playfair Display', Georgia, serif;
--sans:'Source Sans 3', 'Segoe UI', Helvetica, Arial, sans-serif;
--maxw:1220px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
margin:0;background:var(--paper);color:var(--slate);
font-family:var(--sans);font-size:17px;line-height:1.7;
-webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:var(--ink);text-decoration:none;}
h1,h2,h3,h4{font-family:var(--serif);color:var(--ink);line-height:1.14;margin:0 0 .5em;font-weight:700;}
h1{font-size:clamp(2.5rem,5.4vw,4.2rem);letter-spacing:-.02em;}
h2{font-size:clamp(2rem,3.6vw,3rem);letter-spacing:-.015em;}
h3{font-size:1.35rem;}
h4{font-size:1.05rem;font-family:var(--sans);font-weight:700;letter-spacing:.02em;}
p{margin:0 0 1.1em;}
.container{max-width:var(--maxw);margin:0 auto;padding:0 26px;}
.skip{position:absolute;left:-999px;top:0;background:var(--brass);color:var(--ink);padding:10px 18px;z-index:999;}
.skip:focus{left:8px;top:8px;}
:focus-visible{outline:3px solid var(--brass);outline-offset:3px;}
/* ---------- eyebrow / labels ---------- */
.eyebrow{
font-size:.75rem;letter-spacing:.24em;text-transform:uppercase;
font-weight:700;color:var(--brass-dk);margin:0 0 14px;display:flex;align-items:center;gap:12px;
}
.eyebrow::before{content:"";width:34px;height:2px;background:var(--brass);display:inline-block;}
.eyebrow.on-dark{color:var(--brass);}
.lede{font-size:1.16rem;color:var(--muted);max-width:70ch;}
.rule{height:1px;background:var(--line);border:0;margin:0;}
/* ---------- buttons ---------- */
.btn{
display:inline-flex;align-items:center;gap:10px;justify-content:center;
font-weight:700;font-size:.95rem;letter-spacing:.04em;text-transform:uppercase;
padding:15px 28px;border:2px solid transparent;cursor:pointer;font-family:var(--sans);
transition:.22s ease;text-decoration:none;
}
.btn-primary{background:var(--brass);color:#12202F;border-color:var(--brass);}
.btn-primary:hover{background:#D9AC3E;border-color:#D9AC3E;transform:translateY(-2px);}
.btn-dark{background:var(--ink);color:#fff;border-color:var(--ink);}
.btn-dark:hover{background:var(--ink-3);border-color:var(--ink-3);transform:translateY(-2px);}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--ink);}
.btn-ghost:hover{background:var(--ink);color:#fff;}
.btn-outline-light{background:transparent;color:#fff;border-color:rgba(255,255,255,.5);}
.btn-outline-light:hover{background:#fff;color:var(--ink);border-color:#fff;}
.btn-sm{padding:11px 20px;font-size:.8rem;}
.btn-block{width:100%;}
.arrow::after{content:"→";font-size:1.05em;transition:transform .2s;}
.btn:hover .arrow::after{transform:translateX(4px);}
/* ---------- top utility bar ---------- */
.utility{background:#0A1421;color:#A9B6C6;font-size:.82rem;letter-spacing:.03em;}
.utility .container{display:flex;justify-content:space-between;align-items:center;gap:18px;min-height:42px;flex-wrap:wrap;}
.utility a{color:#D6DEE9;}
.utility a:hover{color:var(--brass);}
.utility .dot{color:var(--brass);}
.utility-links{display:flex;gap:20px;align-items:center;}
/* ---------- header ---------- */
.site-header{
position:sticky;top:0;z-index:60;background:rgba(247,244,238,.96);
backdrop-filter:blur(9px);border-bottom:1px solid var(--line);
transition:box-shadow .25s;
}
.site-header.stuck{box-shadow:0 10px 30px -22px rgba(14,26,43,.7);}
.header-inner{display:flex;align-items:center;gap:26px;padding:14px 0;transition:.25s;}
.brand{display:flex;align-items:center;gap:14px;min-width:0;}
.brand img{width:62px;height:62px;border-radius:4px;box-shadow:0 0 0 1px var(--line);}
.brand-text{display:flex;flex-direction:column;line-height:1.1;}
.brand-name{font-family:var(--serif);font-size:1.6rem;font-weight:800;color:var(--ink);letter-spacing:-.01em;}
.brand-tag{font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--brass-dk);font-weight:600;margin-top:4px;}
.nav-wrap{margin-left:auto;display:flex;align-items:center;gap:18px;}
.nav{display:flex;gap:4px;align-items:center;}
.nav a{
font-size:.9rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
padding:10px 13px;position:relative;color:var(--ink);
}
.nav a::after{
content:"";position:absolute;left:13px;right:13px;bottom:4px;height:2px;background:var(--brass);
transform:scaleX(0);transform-origin:left;transition:transform .25s;
}
.nav a:hover::after,.nav a.active::after{transform:scaleX(1);}
.nav a.active{color:var(--brass-dk);}
.burger{display:none;background:var(--ink);color:#fff;border:0;width:46px;height:46px;font-size:1.3rem;cursor:pointer;border-radius:3px;}
.burger span{display:block;width:20px;height:2px;background:#fff;margin:4px auto;transition:.25s;}
/* ---------- hero ---------- */
.hero{position:relative;background:var(--ink);color:#E8EDF4;overflow:hidden;}
.hero-bg{position:absolute;inset:0;}
.hero-bg img{width:100%;height:100%;object-fit:cover;opacity:.30;filter:grayscale(1) contrast(1.05);}
.hero-bg::after{
content:"";position:absolute;inset:0;
background:linear-gradient(105deg,rgba(14,26,43,.96) 12%,rgba(14,26,43,.75) 52%,rgba(14,26,43,.45) 100%);
}
.hero-inner{position:relative;display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center;padding:92px 0 78px;}
.hero h1{color:#fff;margin-bottom:22px;}
.hero h1 em{font-style:italic;color:var(--brass);}
.hero p{color:#C3CDDA;font-size:1.14rem;max-width:56ch;}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px;}
.hero-meta{display:flex;gap:30px;margin-top:38px;padding-top:26px;border-top:1px solid rgba(255,255,255,.16);flex-wrap:wrap;}
.hero-meta div span{display:block;font-family:var(--serif);font-size:1.9rem;color:var(--brass);line-height:1;}
.hero-meta div small{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:#94A3B6;}
.hero-card{
background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.16);
padding:32px 30px;backdrop-filter:blur(4px);
}
.hero-card h3{color:#fff;font-size:1.5rem;}
.hero-card ul{list-style:none;padding:0;margin:18px 0 24px;}
.hero-card li{
padding:12px 0 12px 26px;border-bottom:1px dashed rgba(255,255,255,.16);
position:relative;font-size:.97rem;color:#CBD5E1;
}
.hero-card li::before{content:"§";position:absolute;left:0;color:var(--brass);font-weight:700;}
.hero-card li:last-child{border-bottom:0;}
/* ---------- ticker ---------- */
.ticker{background:var(--ink-2);border-top:1px solid rgba(255,255,255,.1);color:#B9C4D3;overflow:hidden;}
.ticker .container{display:flex;align-items:center;gap:18px;padding-top:0;padding-bottom:0;}
.ticker-label{
flex:none;background:var(--brass);color:#12202F;font-weight:700;font-size:.72rem;
letter-spacing:.18em;text-transform:uppercase;padding:14px 16px;
}
.ticker-track{position:relative;flex:1;overflow:hidden;height:52px;}
.ticker-list{
position:absolute;top:0;left:0;display:flex;gap:56px;align-items:center;height:52px;
white-space:nowrap;animation:scrollx 42s linear infinite;font-size:.9rem;
}
.ticker:hover .ticker-list{animation-play-state:paused;}
.ticker-list span b{color:var(--brass);font-weight:700;}
@keyframes scrollx{from{transform:translateX(0);}to{transform:translateX(-50%);}}
/* ---------- stats band ---------- */
.stats{background:var(--paper-3);border-bottom:1px solid var(--line);}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);}
.stat{padding:42px 26px;text-align:center;border-right:1px solid var(--line);}
.stat:last-child{border-right:0;}
.stat b{display:block;font-family:var(--serif);font-size:2.9rem;color:var(--ink);line-height:1;}
.stat span{font-size:.8rem;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);font-weight:600;}
/* ---------- generic section ---------- */
section{scroll-margin-top:96px;}
.sec{padding:96px 0;}
.sec-head{max-width:78ch;margin-bottom:52px;}
.sec-head.center{margin-left:auto;margin-right:auto;text-align:center;}
.sec-head.center .eyebrow{justify-content:center;}
.split{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;}
.split.rev .col-img{order:2;}
.figure{position:relative;}
.figure img{box-shadow:var(--shadow);border:1px solid var(--line);}
.figure figcaption{
font-size:.8rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;
padding-top:10px;border-top:1px solid var(--line);margin-top:12px;
}
.figure .badge{
position:absolute;left:-18px;bottom:34px;background:var(--brass);color:#12202F;
padding:16px 20px;font-weight:700;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
box-shadow:var(--shadow);max-width:200px;
}
/* ---------- finder ---------- */
.finder{background:var(--ink);color:#D6DEE9;position:relative;overflow:hidden;}
.finder::before{
content:"";position:absolute;inset:0;
background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60'%3E%3Cpath d='M0 59h60M59 0v60' stroke='%23ffffff' stroke-opacity='.05'/%3E%3C/svg%3E");
}
.finder .container{position:relative;}
.finder h2{color:#fff;}
.finder .lede{color:#AFBBCB;}
.finder-panel{
background:var(--paper-2);color:var(--slate);padding:34px;margin-top:8px;
border-top:5px solid var(--brass);box-shadow:var(--shadow);
}
.finder-form{display:flex;gap:12px;flex-wrap:wrap;}
.finder-form input{
flex:1;min-width:230px;font-family:var(--sans);font-size:1.05rem;padding:15px 18px;
border:2px solid var(--line);background:var(--paper);color:var(--ink);letter-spacing:.06em;
}
.finder-form input:focus{border-color:var(--brass);outline:none;}
.chips{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-top:16px;font-size:.85rem;color:var(--muted);}
.chip{
background:var(--paper-3);border:1px solid var(--line);padding:6px 13px;cursor:pointer;
font-family:var(--sans);font-size:.82rem;color:var(--ink);font-weight:600;letter-spacing:.05em;
}
.chip:hover{background:var(--brass);border-color:var(--brass);}
.finder-note{font-size:.84rem;color:var(--muted);margin-top:14px;}
.results{margin-top:30px;display:none;}
.results.show{display:block;animation:fade .45s ease;}
@keyframes fade{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}
.result-summary{
display:flex;gap:16px;align-items:center;flex-wrap:wrap;
background:var(--paper);border-left:5px solid var(--brass);padding:18px 20px;margin-bottom:22px;
}
.result-summary b{font-family:var(--serif);font-size:1.35rem;color:var(--ink);}
.reps{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.rep-card{
border:1px solid var(--line);background:var(--paper-2);padding:22px;text-align:center;
transition:.25s;
}
.rep-card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:var(--brass);}
.rep-card img{width:78px;height:78px;border-radius:50%;margin:0 auto 14px;border:3px solid var(--brass);}
.rep-card h4{margin:0 0 4px;font-size:1.05rem;color:var(--ink);}
.rep-card .role{font-size:.78rem;letter-spacing:.13em;text-transform:uppercase;color:var(--brass-dk);font-weight:700;}
.rep-card .meta{font-size:.88rem;color:var(--muted);margin:10px 0 16px;}
.finder-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px;}
/* ---------- rights cards ---------- */
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;}
.card{
background:var(--paper-2);border:1px solid var(--line);padding:28px 26px;position:relative;
transition:.25s;
}
.card::before{content:"";position:absolute;top:0;left:0;width:46px;height:4px;background:var(--brass);}
.card:hover{box-shadow:var(--shadow);transform:translateY(-4px);}
.card .num{font-family:var(--serif);font-size:1.1rem;color:var(--brass-dk);display:block;margin-bottom:10px;letter-spacing:.1em;}
.card h4{font-size:1.12rem;margin-bottom:10px;font-family:var(--serif);font-weight:700;}
.card p{font-size:.96rem;color:var(--muted);margin-bottom:14px;}
.card a.link{font-weight:700;font-size:.85rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);border-bottom:2px solid var(--brass);padding-bottom:3px;}
.card a.link:hover{color:var(--brass-dk);}
/* ---------- research / feature list ---------- */
.feature-list{list-style:none;padding:0;margin:26px 0 0;}
.feature-list li{
display:flex;gap:18px;padding:20px 0;border-top:1px solid var(--line);align-items:flex-start;
}
.feature-list li:last-child{border-bottom:1px solid var(--line);}
.feature-list .tag{
flex:none;font-size:.7rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
background:var(--ink);color:var(--brass);padding:6px 10px;margin-top:3px;
}
.feature-list h4{margin-bottom:5px;color:var(--ink);}
.feature-list p{margin:0;font-size:.96rem;color:var(--muted);}
/* ---------- quote band ---------- */
.quoteband{background:var(--ink-2);color:#D9E1EB;padding:78px 0;text-align:center;}
.quoteband blockquote{
font-family:var(--serif);font-size:clamp(1.5rem,3vw,2.35rem);line-height:1.35;
color:#fff;margin:0 auto;max-width:22ch;max-width:900px;
}
.quoteband cite{
display:block;margin-top:26px;font-style:normal;font-size:.82rem;letter-spacing:.2em;
text-transform:uppercase;color:var(--brass);
}
/* ---------- events + sidebar ---------- */
.events-layout{display:grid;grid-template-columns:1.6fr .9fr;gap:52px;}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:26px;}
.tab{
background:transparent;border:1px solid var(--line);padding:9px 18px;cursor:pointer;
font-family:var(--sans);font-size:.82rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);
}
.tab:hover{border-color:var(--ink);color:var(--ink);}
.tab.active{background:var(--ink);border-color:var(--ink);color:#fff;}
.event{
display:grid;grid-template-columns:96px 1fr;gap:24px;padding:24px 0;border-bottom:1px solid var(--line);
}
.event.hide{display:none;}
.event .date{
background:var(--paper-2);border:1px solid var(--line);text-align:center;padding:12px 6px;height:fit-content;
}
.event .date b{display:block;font-family:var(--serif);font-size:1.85rem;color:var(--ink);line-height:1;}
.event .date span{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--brass-dk);font-weight:700;}
.event h3{font-size:1.22rem;margin-bottom:6px;}
.event .where{font-size:.84rem;letter-spacing:.06em;text-transform:uppercase;color:var(--brass-dk);font-weight:700;margin-bottom:8px;}
.event p{font-size:.96rem;color:var(--muted);margin-bottom:12px;}
.event .ev-actions{display:flex;gap:14px;flex-wrap:wrap;font-size:.82rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;}
.event .ev-actions a{border-bottom:2px solid var(--brass);padding-bottom:2px;}
.pill{
display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
background:var(--paper-3);border:1px solid var(--line);padding:4px 9px;color:var(--muted);margin-bottom:9px;
}
.aside-block{background:var(--paper-2);border:1px solid var(--line);padding:26px;margin-bottom:26px;}
.aside-block h4{
font-family:var(--serif);font-size:1.2rem;margin-bottom:16px;padding-bottom:12px;border-bottom:2px solid var(--brass);
}
.cal{list-style:none;padding:0;margin:0;}
.cal li{display:flex;gap:14px;padding:12px 0;border-bottom:1px dashed var(--line);font-size:.94rem;}
.cal li:last-child{border-bottom:0;}
.cal time{flex:none;font-weight:700;color:var(--ink);min-width:76px;letter-spacing:.04em;}
.cal span{color:var(--muted);}
.trend{list-style:none;counter-reset:t;padding:0;margin:0;}
.trend li{counter-increment:t;padding:13px 0 13px 38px;border-bottom:1px dashed var(--line);position:relative;font-size:.95rem;}
.trend li:last-child{border-bottom:0;}
.trend li::before{
content:counter(t,decimal-leading-zero);position:absolute;left:0;top:13px;
font-family:var(--serif);color:var(--brass);font-weight:700;
}
.trend li b{display:block;color:var(--ink);font-weight:700;}
.trend li span{font-size:.86rem;color:var(--muted);}
.dl{list-style:none;padding:0;margin:0;}
.dl li{border-bottom:1px dashed var(--line);}
.dl li:last-child{border-bottom:0;}
.dl a{display:flex;justify-content:space-between;gap:12px;padding:12px 0;font-size:.95rem;font-weight:600;align-items:center;}
.dl a:hover{color:var(--brass-dk);}
.dl .fmt{font-size:.7rem;letter-spacing:.12em;color:var(--muted);font-weight:700;}
/* ---------- testimonials ---------- */
.testis{background:var(--paper-3);}
.testi{
background:var(--paper-2);border:1px solid var(--line);padding:32px 28px;display:flex;flex-direction:column;gap:16px;
}
.testi .stars{color:var(--brass);letter-spacing:.2em;font-size:.95rem;}
.testi p{font-size:1rem;color:var(--slate);margin:0;font-style:italic;}
.testi .who{display:flex;gap:13px;align-items:center;margin-top:auto;padding-top:14px;border-top:1px solid var(--line);}
.testi .who img{width:52px;height:52px;border-radius:50%;}
.testi .who b{display:block;color:var(--ink);font-size:.98rem;}
.testi .who span{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--brass-dk);font-weight:700;}
/* ---------- faq ---------- */
.faq-item{border-bottom:1px solid var(--line);}
.faq-q{
width:100%;background:none;border:0;text-align:left;cursor:pointer;padding:24px 50px 24px 0;
font-family:var(--serif);font-size:1.2rem;font-weight:700;color:var(--ink);position:relative;
}
.faq-q::after{
content:"+";position:absolute;right:6px;top:50%;transform:translateY(-50%);
width:32px;height:32px;background:var(--ink);color:#fff;display:grid;place-items:center;
font-family:var(--sans);font-size:1.2rem;transition:.25s;
}
.faq-q[aria-expanded="true"]::after{content:"–";background:var(--brass);color:#12202F;}
.faq-a{max-height:0;overflow:hidden;transition:max-height .38s ease;}
.faq-a p{padding:0 46px 24px 0;color:var(--muted);margin:0;}
/* ---------- donate band ---------- */
.donate{background:var(--ink);color:#CBD5E1;position:relative;overflow:hidden;}
.donate .split{gap:64px;align-items:center;}
.donate h2{color:#fff;}
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:26px 0;}
.tier{
border:1px solid rgba(255,255,255,.2);padding:20px;text-align:center;cursor:pointer;
background:rgba(255,255,255,.04);transition:.22s;
}
.tier:hover,.tier.sel{border-color:var(--brass);background:rgba(199,154,46,.14);}
.tier b{display:block;font-family:var(--serif);font-size:1.7rem;color:#fff;}
.tier span{font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;color:#93A2B5;}
.donate-panel{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.16);padding:32px;}
.donate-panel h4{color:#fff;font-family:var(--serif);font-size:1.3rem;}
.freq{display:flex;gap:10px;margin-bottom:20px;}
.freq button{
flex:1;background:transparent;border:1px solid rgba(255,255,255,.25);color:#C3CDDA;padding:11px;
cursor:pointer;font-family:var(--sans);font-weight:700;font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;
}
.freq button.on{background:var(--brass);border-color:var(--brass);color:#12202F;}
.amounts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px;}
.amounts button{
background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.2);color:#fff;padding:13px 4px;
font-family:var(--sans);font-weight:700;font-size:1rem;cursor:pointer;
}
.amounts button:hover,.amounts button.on{background:var(--brass);border-color:var(--brass);color:#12202F;}
.donate-panel small{display:block;font-size:.8rem;color:#93A2B5;margin-top:14px;text-align:center;}
/* ---------- newsletter ---------- */
.news{background:var(--brass);color:#12202F;}
.news .container{display:flex;gap:40px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding-top:44px;padding-bottom:44px;}
.news h3{color:#12202F;font-size:1.75rem;margin-bottom:4px;}
.news p{margin:0;color:#4A3C13;font-size:.97rem;}
.news form{display:flex;gap:10px;flex-wrap:wrap;}
.news input{
font-family:var(--sans);font-size:1rem;padding:15px 18px;border:2px solid #12202F;background:#fff;min-width:250px;
}
.news input:focus{outline:none;box-shadow:0 0 0 3px rgba(14,26,43,.25);}
/* ---------- footer ---------- */
.site-footer{background:#0A1421;color:#95A3B6;padding:72px 0 30px;font-size:.95rem;}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:44px;}
.site-footer h4{
color:#fff;font-family:var(--sans);font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;
padding-bottom:12px;margin-bottom:16px;border-bottom:1px solid rgba(255,255,255,.16);
}
.site-footer a{color:#95A3B6;}
.site-footer a:hover{color:var(--brass);}
.foot-brand .brand-name{color:#fff;font-size:1.5rem;}
.foot-brand p{margin-top:14px;line-height:1.7;}
.foot-list{list-style:none;padding:0;margin:0;}
.foot-list li{padding:6px 0;}
.contact-list li{display:flex;gap:10px;padding:8px 0;}
.socials{display:flex;gap:10px;margin-top:18px;}
.socials a{
width:40px;height:40px;border:1px solid rgba(255,255,255,.22);display:grid;place-items:center;
color:#CBD5E1;transition:.2s;
}
.socials a:hover{background:var(--brass);border-color:var(--brass);color:#12202F;}
.socials svg{width:17px;height:17px;fill:currentColor;}
.foot-bottom{
margin-top:52px;padding-top:24px;border-top:1px solid rgba(255,255,255,.12);
display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;font-size:.85rem;
}
.foot-bottom nav{display:flex;gap:22px;flex-wrap:wrap;}
.disclaimer{
background:rgba(255,255,255,.04);border-left:3px solid var(--brass);padding:16px 18px;
font-size:.85rem;color:#8D9BB0;margin-top:30px;line-height:1.6;
}
/* ---------- toast ---------- */
.toast{
position:fixed;left:50%;bottom:28px;transform:translate(-50%,140%);
background:var(--ink);color:#fff;padding:14px 24px;z-index:200;font-size:.92rem;
border-left:4px solid var(--brass);transition:transform .35s ease;box-shadow:var(--shadow);
}
.toast.show{transform:translate(-50%,0);}
/* ---------- reveal ---------- */
.js .reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s ease;}
.js .reveal.in{opacity:1;transform:none;}
/* ---------- responsive ---------- */
@media (max-width:1080px){
.nav a{padding:9px 9px;font-size:.82rem;}
.hero-inner{grid-template-columns:1fr;gap:40px;padding:70px 0 60px;}
.grid-4{grid-template-columns:repeat(2,1fr);}
.reps{grid-template-columns:1fr;}
.events-layout{grid-template-columns:1fr;}
.foot-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:900px){
.burger{display:block;}
.nav-wrap{
position:absolute;top:100%;left:0;right:0;background:var(--paper-2);
border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;
padding:14px 26px 24px;gap:14px;display:none;box-shadow:var(--shadow);
}
.nav-wrap.open{display:flex;}
.nav{flex-direction:column;align-items:stretch;gap:0;}
.nav a{padding:14px 0;border-bottom:1px solid var(--line);font-size:.95rem;}
.nav a::after{display:none;}
.header-inner{position:relative;}
.split{grid-template-columns:1fr;gap:36px;}
.split.rev .col-img{order:0;}
.stats-grid{grid-template-columns:1fr 1fr;}
.stat:nth-child(2n){border-right:0;}
.stat{border-bottom:1px solid var(--line);}
.grid-3{grid-template-columns:1fr;}
.tiers{grid-template-columns:1fr;}
.amounts{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:620px){
body{font-size:16px;}
.sec{padding:64px 0;}
.grid-4{grid-template-columns:1fr;}
.stats-grid{grid-template-columns:1fr;}
.stat{border-right:0;}
.event{grid-template-columns:1fr;gap:14px;}
.event .date{width:96px;}
.finder-panel{padding:22px;}
.figure .badge{left:0;}
.foot-grid{grid-template-columns:1fr;}
.utility .container{justify-content:center;text-align:center;}
}
</style>
</head>
<body>
<a class="skip" href="#main">Skip to main content</a>
<!-- ============ UTILITY BAR ============ -->
<div class="utility">
<div class="container">
<span><span class="dot">●</span> Nonpartisan & nonprofit — 501(c)(3) & 501(c)(4) affiliated</span>
<div class="utility-links">
<a href="#events">Voter Hotline: <strong>(888) 555-0142</strong></a>
<a href="#resources">Know Your Rights</a>
<a href="#press">Press Room</a>
</div>
</div>
</div>
<!-- ============ HEADER ============ -->
<header class="site-header" id="top">
<div class="container header-inner">
<a class="brand" href="#top" aria-label="Bench and Ballot home">
<img src="https://placehold.co/124x124/0E1A2B/C79A2E?text=B%26B&font=playfair%20display" alt="Bench & Ballot seal logo" width="62" height="62">
<span class="brand-text">
<span class="brand-name">Bench & Ballot</span>
<span class="brand-tag">Precedent · Policy · The People</span>
</span>
</a>
<button class="burger" id="burger" aria-label="Toggle navigation" aria-expanded="false" aria-controls="navWrap">
<span></span><span></span><span></span>
</button>
<div class="nav-wrap" id="navWrap">
<nav class="nav" aria-label="Primary">
<a href="#resources" class="active">Legal Resources</a>
<a href="#research">Research</a>
<a href="#advocacy">Advocacy</a>
<a href="#events">Events</a>
<a href="#find">Find Reps</a>
<a href="#faq">FAQ</a>
<a href="#donate">Donate</a>
</nav>
<a href="#find" class="btn btn-dark btn-sm">Find Your Reps</a>
</div>
</div>
</header>
<main id="main">
<!-- ============ HERO ============ -->
<section class="hero">
<div class="hero-bg">
<img src="https://picsum.photos/1800/1100?grayscale" alt="" aria-hidden="true">
</div>
<div class="container hero-inner">
<div>
<p class="eyebrow on-dark">The Civic Information Portal</p>
<h1>Where <em>precedent</em> meets the people who live under it.</h1>
<p>Bench & Ballot translates the machinery of government — court rulings, the legislative process, ballot measures, and agency rulemaking — into plain language you can act on. We publish free legal guides, district-level policy research, and organizing toolkits so that citizenship is more than a ballot you cast every four years.</p>
<div class="hero-actions">
<a href="#resources" class="btn btn-primary">Learn Your Rights <span class="arrow"></span></a>
<a href="#advocacy" class="btn btn-outline-light">Join Advocacy</a>
</div>
<div class="hero-meta">
<div><span>1,480+</span><small>Legal guides published</small></div>
<div><span>50</span><small>State & territory desks</small></div>
<div><span>96,300</span><small>Active advocates</small></div>
</div>
</div>
<aside class="hero-card">
<p class="eyebrow on-dark">This Week at the Bench</p>
<h3>Five things worth your attention</h3>
<ul>
<li><strong>S. 1147</strong>, the Redistricting Transparency Act, clears committee markup — 6 amendments adopted.</li>
<li>A circuit split on digital privacy now raises the odds of a Supreme Court grant this term.</li>
<li>Eleven states advance early-voting expansion bills out of chamber committees.</li>
<li>Public comment docket on the housing rule closes Friday at 11:59 p.m. ET.</li>
<li>Municipal referendum petitions open in 34 counties for the November cycle.</li>
</ul>
<a href="#research" class="btn btn-primary btn-block arrow">Read the Briefing</a>
</aside>
</div>
</section>
<!-- ============ TICKER ============ -->
<div class="ticker" aria-label="Legislative docket ticker">
<div class="container">
<span class="ticker-label">In the Docket</span>
<div class="ticker-track">
<div class="ticker-list" id="tickerList">
<span><b>H.R. 2290</b> — Civic Access Act · House floor vote expected Thursday</span>
<span><b>Docket 24-118</b> — EPA comment period closes in 3 days</span>
<span><b>State v. Aldridge</b> — certiorari petition pending, digital seizure issue</span>
<span><b>CA Prop 21</b> — signature drive at 71% of threshold</span>
<span><b>S. 615</b> — Voting Records Modernization · Senate calendar</span>
<span><b>Amicus window</b> — friend-of-court briefs due March 4</span>
</div>
</div>
</div>
</div>
<!-- ============ STATS ============ -->
<section class="stats" aria-label="Impact statistics">
<div class="container stats-grid">
<div class="stat"><b>1,480</b><span>Guides in the library</span></div>
<div class="stat"><b>412</b><span>Town halls convened</span></div>
<div class="stat"><b>38</b><span>States with local desks</span></div>
<div class="stat"><b>$0</b><span>Cost to read anything</span></div>
</div>
</section>
<!-- ============ REPRESENTATIVE FINDER (INTERACTIVE) ============ -->
<section class="sec finder" id="find">
<div class="container">
<div class="sec-head reveal">
<p class="eyebrow on-dark">Civic Tool · Representative Finder</p>
<h2>Who actually represents you — and how to reach them.</h2>
<p class="lede">Enter your ZIP code to identify your congressional district, both U.S. Senators, your House member, and the next election dates on your calendar. Every elected office has a public comment channel; our tool shortens the distance between you and it.</p>
</div>
<div class="finder-panel reveal">
<form class="finder-form" id="repForm" autocomplete="off">
<label for="zip" class="sr-only" style="position:absolute;left:-9999px;">ZIP code</label>
<input id="zip" name="zip" inputmode="numeric" maxlength="5" placeholder="Enter your 5-digit ZIP code" aria-describedby="zipNote" required>
<button type="submit" class="btn btn-dark">Look Up District <span class="arrow"></span></button>
</form>
<div class="chips">
<span>Try:</span>
<button type="button" class="chip" data-zip="10001">10001</button>
<button type="button" class="chip" data-zip="60601">60601</button>
<button type="button" class="chip" data-zip="77001">77001</button>
<button type="button" class="chip" data-zip="30301">30301</button>
<button type="button" class="chip" data-zip="98101">98101</button>
<button type="button" class="chip" data-zip="19101">19101</button>
</div>
<p class="finder-note" id="zipNote">Lookup is illustrative for this demonstration portal. Boundaries are redrawn after each decennial census — always confirm your district at your state election office before filing testimony.</p>
<div class="results" id="results" aria-live="polite">
<div class="result-summary" id="summary"></div>
<div class="reps" id="repCards"></div>
<div class="finder-actions">
<a href="#advocacy" class="btn btn-primary btn-sm">Email Your Office</a>
<a href="#advocacy" class="btn btn-ghost btn-sm">Join Advocacy</a>
<button class="btn btn-ghost btn-sm" id="shareResults" type="button">Share These Results</button>
<a href="#events" class="btn btn-ghost btn-sm">Find a Town Hall</a>
</div>
</div>
</div>
</div>
</section>
<!-- ============ LEGAL RESOURCES ============ -->
<section class="sec" id="resources">
<div class="container">
<div class="split">
<div class="col-text reveal">
<p class="eyebrow">Legal Resources</p>
<h2>Know the law before the law knows you.</h2>
<p>Our legal desk publishes practitioner-reviewed explainers on the rights most ordinary people are likely to need: encounters with law enforcement, landlord–tenant disputes, employment claims, civic participation, and administrative hearings. Each guide is written at a ninth-grade reading level, cites the controlling statute or case, and is updated within thirty days of any change in controlling precedent.</p>
<p>We do not provide legal advice and we are not a law firm. What we provide is orientation — a map of the procedure, the deadlines, the burden of proof, and the vocabulary you will hear in a courtroom. When a matter requires counsel, our referral network connects you with licensed, means-tested legal aid providers in all fifty states.</p>
<p>Every guide ends with a checklist: what to document, what to file, in what timeframe, and to whom. Because procedural default — missing a filing deadline, failing to exhaust administrative remedies — is how most rights are quietly lost.</p>
<div class="hero-actions" style="margin-top:8px;">
<a href="#faq" class="btn btn-dark">Learn Your Rights <span class="arrow"></span></a>
<a href="#research" class="btn btn-ghost">Download the Toolkit</a>
</div>
</div>
<div class="col-img reveal">
<figure class="figure">
<img src="https://picsum.photos/900/700?grayscale" alt="Stacks of legal case law volumes in a law library reading room">
<span class="badge">Reviewed quarterly by 41 volunteer attorneys</span>
<figcaption>Case law library — Bench & Ballot legal desk, regional reading room</figcaption>
</figure>
</div>
</div>
<div class="grid-4" style="margin-top:64px;">
<article class="card reveal">
<span class="num">01</span>
<h4>Police Encounters</h4>
<p>Stop, frisk, seizure, and interrogation. What officers may require, what you may decline, and how to preserve a record of the interaction without escalating it.</p>
<a class="link" href="#faq">Open guide</a>
</article>
<article class="card reveal">
<span class="num">02</span>
<h4>Housing & Eviction</h4>
<p>Notice periods, habitability claims, seal-and-expunge rules, and the difference between an unlawful detainer action and a managed displacement.</p>
<a class="link" href="#faq">Open guide</a>
</article>
<article class="card reveal">
<span class="num">03</span>
<h4>Voting & Registration</h4>
<p>Eligibility, purge timelines, provisional ballots, restoration of rights after conviction, and how to challenge a disputed challenge to your registration.</p>
<a class="link" href="#faq">Open guide</a>
</article>
<article class="card reveal">
<span class="num">04</span>
<h4>Workplace Claims</h4>
<p>Wage theft, retaliation, arbitration clauses, and the administrative exhaustion path through the agency before a court will hear your case.</p>
<a class="link" href="#faq">Open guide</a>
</article>
</div>
</div>
</section>
<!-- ============ QUOTE BAND ============ -->
<section class="quoteband">
<div class="container reveal">
<blockquote>“A republic is not inherited; it is maintained — by citizens who read the docket, understand the precedent, and show up for the markup.”</blockquote>
<cite>Dr. Alma Reyes-Ford · Founding Director, Bench & Ballot</cite>
</div>
</section>
<!-- ============ POLICY RESEARCH ============ -->
<section class="sec" id="research">
<div class="container">
<div class="sec-head reveal">
<p class="eyebrow">Policy Analysis & Research</p>
<h2>Research that survives the legislative process.</h2>
<p class="lede">Bill language changes in markup. Amendments arrive at midnight. Our analysts track legislation from introduction through signature or veto, score amendments against the original intent, and model district-level impact so you can see what a bill actually does — not what a press release says it does.</p>
</div>
<div class="split rev" style="align-items:start;">
<div class="col-text reveal">
<ul class="feature-list">
<li>
<span class="tag">Live</span>
<div>
<h4>Bill Tracker & Markup Alerts</h4>
<p>Follow any of 11,400 active federal and state bills by topic, committee, or sponsor. Receive a diff report within two hours of a floor amendment, with plain-language summaries of what changed and who moved it.</p>
</div>
</li>
<li>
<span class="tag">Model</span>
<div>
<h4>District Impact Briefs</h4>
<p>Distributional analysis pairing census-tract data with appropriations figures. Each brief answers one question: for a household in your zip code, what does this measure cost, add, or remove?</p>
</div>
</li>
<li>
<span class="tag">Watch</span>
<div>
<h4>Regulatory Docket Monitor</h4>
<p>Federal rulemaking moves through notice-and-comment long before it reaches a headline. We surface open dockets, comment deadlines, and the docket ID you need to file substantively.</p>
</div>
</li>
<li>
<span class="tag">Ballot</span>
<div>
<h4>Referendum & Measure Analyzer</h4>
<p>Plain-language translations of ballot propositions, fiscal note summaries, and the coalition money behind each side — refreshed as campaign finance filings land.</p>
</div>
</li>
</ul>
<div class="hero-actions" style="margin-top:26px;">
<a href="#events" class="btn btn-dark">Read the Research <span class="arrow"></span></a>
<a href="#news" class="btn btn-ghost">Subscribe to the Brief</a>
</div>
</div>
<div class="col-img reveal">
<figure class="figure">
<img src="https://placehold.co/900x640/0E1A2B/C79A2E?text=District+Impact+Chart%3A+Proposed+Appropriations+by+Region&font=source%20sans%20pro" alt="Placeholder chart showing district-level impact of proposed appropriations by region">
<figcaption>Figure 4.2 — Distributional impact by congressional district, FY brief</figcaption>
</figure>
<figure class="figure" style="margin-top:34px;">
<img src="https://picsum.photos/900/560?grayscale" alt="Placeholder photograph of a committee hearing room">
<figcaption>Committee markup session — appropriations subcommittee, week 14</figcaption>
</figure>
</div>
</div>
<div class="grid-3" style="margin-top:66px;">
<article class="card reveal">
<span class="num">Working Paper</span>
<h4>Precedent & the Court</h4>
<p>A term-by-term reading of how stare decisis is being applied — and where concurrences signal forthcoming doctrinal shifts that legislatures should anticipate.</p>
<a class="link" href="#faq">Download PDF</a>
</article>
<article class="card reveal">
<span class="num">Field Report</span>
<h4>Redistricting After the Census</h4>
<p>Compactness scores, partisan symmetry, and the litigation posture of 41 maps currently before state and federal benches nationwide.</p>
<a class="link" href="#faq">Download PDF</a>
</article>
<article class="card reveal">
<span class="num">Data Set</span>
<h4>Lobbying Disclosure Index</h4>
<p>Normalized quarterly filings mapped to bill numbers, committee assignments, and sponsors — downloadable as CSV, updated within 10 days of each filing window.</p>
<a class="link" href="#faq">Download CSV</a>
</article>
</div>
</div>
</section>
<!-- ============ GRASSROOTS ADVOCACY ============ -->
<section class="sec" id="advocacy" style="background:var(--paper-3);border-top:1px solid var(--line);border-bottom:1px solid var(--line);">
<div class="container">
<div class="split">
<div class="col-img reveal">
<figure class="figure">
<img src="https://picsum.photos/900/720?grayscale" alt="Placeholder photograph of citizens gathered at a community civic meeting">
<span class="badge">412 town halls convened since 2019</span>
<figcaption>Neighborhood testimony night — organizing cohort, District 12</figcaption>
</figure>
</div>
<div class="col-text reveal">
<p class="eyebrow">Grassroots Organizing</p>
<h2>Turn testimony into turnout.</h2>
<p>Policy changes when organized people apply organized pressure at the right moment in the legislative process. Our advocacy program trains volunteers to testify effectively at hearings, write letters that get read rather than recycled, and coordinate district visits during recess — when legislators are home and reachable.</p>
<p>You do not need a law degree to participate. You need a position, a deadline, and a constituency of one: you. We supply the other two. Every campaign in our queue includes the committee timeline, the sponsor's public record, a two-minute testimony template, and a whip-count sheet so you can see whether your district is heard.</p>
<p>Members of our cohorts receive monthly trainings on coalition building, media discipline, petition law, and the compliance rules that govern when a volunteer becomes, legally speaking, a political actor.</p>
<div class="hero-actions" style="margin-top:8px;">
<a href="#events" class="btn btn-primary">Join Advocacy <span class="arrow"></span></a>
<button class="btn btn-ghost" type="button" data-share="Bench & Ballot grassroots advocacy program">Share This Campaign</button>
</div>
</div>
</div>
<div class="grid-4" style="margin-top:64px;">
<article class="card reveal">
<span class="num">Step 01</span>
<h4>Take the Position</h4>
<p>Pick a live campaign from the queue. Each one shows its committee, its status, and the date public comment closes.</p>
</article>
<article class="card reveal">
<span class="num">Step 02</span>
<h4>Learn the Procedure</h4>
<p>Forty-minute training on how a bill moves, where amendment windows open, and when a hearing actually matters.</p>
</article>
<article class="card reveal">
<span class="num">Step 03</span>
<h4>Make the Record</h4>
<p>Submit written comment, sign up for testimony, or deliver a district office visit with a scripted one-pager.</p>
</article>
<article class="card reveal">
<span class="num">Step 04</span>
<h4>Hold the Vote</h4>
<p>Track roll calls against commitments, publish the scoreboard, and carry the accountability into the next cycle.</p>
</article>
</div>
</div>
</section>
<!-- ============ EVENTS + SIDEBAR ============ -->
<section class="sec" id="events">
<div class="container">
<div class="sec-head reveal">
<p class="eyebrow">Events, Hearings & Trainings</p>
<h2>Show up where the record is made.</h2>
<p class="lede">Public participation is a procedural right, not a courtesy. These are the sessions where testimony is entered, minutes are kept, and the positions that later become precedent are first put on the record.</p>
</div>
<div class="events-layout">
<div>
<div class="tabs" role="tablist" aria-label="Filter events by type">
<button class="tab active" data-cat="all" role="tab" aria-selected="true">All Events</button>
<button class="tab" data-cat="townhall" role="tab" aria-selected="false">Town Halls</button>
<button class="tab" data-cat="training" role="tab" aria-selected="false">Trainings</button>
<button class="tab" data-cat="briefing" role="tab" aria-selected="false">Legal Briefings</button>
</div>
<div id="eventList">
<article class="event reveal" data-cat="townhall">
<div class="date"><span>Mar</span><b>14</b></div>
<div>
<span class="pill">Town Hall · Free</span>
<h3>Redistricting & the Map: A Public Reading</h3>
<p class="where">Civic Auditorium, Room 2B · 6:30 PM ET · Livestreamed</p>
<p>Analysts walk through the proposed congressional map line by line, explaining compactness scores, communities of interest, and the two lawsuits already filed. Bring your address; we will show you exactly which precinct you fall in and how the boundary moved.</p>
<div class="ev-actions"><a href="#find">Register</a><a href="#find">Add to Calendar</a><a href="#news" data-share="Redistricting & the Map public reading">Share</a></div>
</div>
</article>
<article class="event reveal" data-cat="training">
<div class="date"><span>Mar</span><b>22</b></div>
<div>
<span class="pill">Training · Cohort 12</span>
<h3>Testimony That Gets Quoted: A Two-Hour Workshop</h3>
<p class="where">Online · 1:00–3:00 PM ET · Certificate provided</p>
<p>Learn how committees actually read public comment, how to compress a policy position into two minutes, and how to reference controlling precedent without losing a skeptical chair. Includes live practice with recorded feedback from former committee staff.</p>
<div class="ev-actions"><a href="#advocacy">Enroll</a><a href="#advocacy">View Syllabus</a><a href="#news" data-share="Testimony workshop">Share</a></div>
</div>
</article>
<article class="event reveal" data-cat="briefing">
<div class="date"><span>Apr</span><b>02</b></div>
<div>
<span class="pill">Legal Briefing · CLE credit</span>
<h3>Exhaustion, Standing, and the Path to Review</h3>
<p class="where">Ashby Avenue Offices, Suite 700 · 12:00 PM ET</p>
<p>A lunch briefing for advocates and pro se litigants on administrative exhaustion requirements, ripeness, and how the doctrine of standing quietly disposes of well-merited claims. Practical focus on eviction, benefits denials, and environmental review.</p>
<div class="ev-actions"><a href="#resources">RSVP</a><a href="#resources">Read the Outline</a><a href="#news" data-share="Exhaustion and standing briefing">Share</a></div>
</div>
</article>
<article class="event reveal" data-cat="townhall">
<div class="date"><span>Apr</span><b>19</b></div>
<div>
<span class="pill">Town Hall · District Visit Day</span>
<h3>Recess District Office Visit — Coordinated Delegations</h3>
<p class="where">Twelve district offices nationwide · 9:00 AM local</p>
<p>When Congress is in recess, the district office is where access is won. We assemble briefed, three-person delegations with a one-page policy ask, a supporting fiscal note, and a signed constituent letter. Training required; materials provided.</p>
<div class="ev-actions"><a href="#advocacy">Claim a Slot</a><a href="#find">Find Your Office</a><a href="#news" data-share="District office visit day">Share</a></div>
</div>
</article>
<article class="event reveal" data-cat="briefing">
<div class="date"><span>May</span><b>06</b></div>
<div>
<span class="pill">Legal Briefing · Know Your Rights</span>
<h3>Election Protection Legal Observer Training</h3>
<p class="where">Hybrid — Ashby Avenue & Online · 5:00 PM ET</p>
<p>Volunteer observers learn the statutory rules governing polling-place conduct, provisional ballot procedure, voter assistance statutes, and how to escalate a real-time complaint through the nonpartisan protection hotline without violating electioneering limits.</p>
<div class="ev-actions"><a href="#advocacy">Volunteer</a><a href="#resources">Primer (PDF)</a><a href="#news" data-share="Legal observer training">Share</a></div>
</div>
</article>
<article class="event reveal" data-cat="training">
<div class="date"><span>May</span><b>24</b></div>
<div>
<span class="pill">Training · Organizers</span>
<h3>Petition Law & Ballot Access Compliance</h3>
<p class="where">Online · 6:00 PM ET · State-specific breakout rooms</p>
<p>Circulator rules, signature validity windows, sheet-handling, and the disqualification grounds most likely to void a petition drive. Designed for organizers gathering signatures ahead of the November referendum cycle.</p>
<div class="ev-actions"><a href="#advocacy">Enroll</a><a href="#research">State Rules Matrix</a><a href="#news" data-share="Petition law training">Share</a></div>
</div>
</article>
</div>
<p id="noEvents" style="display:none;color:var(--muted);padding:24px 0;">No events in this category right now — check the full calendar above or subscribe for additions.</p>
</div>
<aside>
<div class="aside-block reveal">
<h4>Election Calendar</h4>
<ul class="cal">
<li><time>Feb 18</time><span>Presidential primary — 16 states & territories</span></li>
<li><time>Mar 04</time><span>Amicus briefs due, <em>Aldridge</em> digital seizure case</span></li>
<li><time>Apr 01</time><span>Voter registration deadline — spring consolidated</span></li>
<li><time>Jun 11</time><span>Statewide primary — 8 states</span></li>
<li><time>Jul 22</time><span>Referendum petitions certified or rejected</span></li>
<li><time>Aug 06</time><span>Early voting opens — 31 states</span></li>
<li><time>Nov 03</time><span>General election — polls 7:00 a.m.–8:00 p.m.</span></li>
<li><time>Dec 15</time><span>Electoral votes certified & transmitted</span></li>
</ul>
<a href="#news" class="btn btn-ghost btn-sm btn-block" style="margin-top:16px;">Sync the Calendar</a>
</div>
<div class="aside-block reveal">
<h4>Trending Issues</h4>
<ol class="trend">
<li><b>Housing affordability & just-cause eviction</b><span>4,180 comments filed this week</span></li>
<li><b>Digital privacy after <em>Aldridge</em></b><span>Supreme Court cert watch</span></li>
<li><b>Polling-place consolidation</b><span>12 counties under review</span></li>
<li><b>School-library access rules</b><span>First Amendment challenges in 6 states</span></li>
<li><b>Independent redistricting commissions</b><span>Ballot measures in 4 states</span></li>
</ol>
</div>
<div class="aside-block reveal" id="press">
<h4>Legal Resource Library</h4>
<ul class="dl">
<li><a href="#resources">Know Your Rights: Stops & Searches <span class="fmt">PDF</span></a></li>
<li><a href="#resources">Filing an Administrative Appeal <span class="fmt">PDF</span></a></li>
<li><a href="#research">Model Public Comment Template <span class="fmt">DOCX</span></a></li>
<li><a href="#research">Roll-Call Scorecard, 118th Congress <span class="fmt">CSV</span></a></li>
<li><a href="#advocacy">Testimony Prep Workbook <span class="fmt">PDF</span></a></li>
</ul>
</div>
</aside>
</div>
</div>
</section>
<!-- ============ TESTIMONIALS ============ -->
<section class="sec testis">
<div class="container">
<div class="sec-head center reveal">
<p class="eyebrow">From the Field</p>
<h2>What advocates, attorneys, and citizens say.</h2>
</div>
<div class="grid-3">
<article class="testi reveal">
<div class="stars" aria-label="5 out of 5">★★★★★</div>
<p>“I testified for the first time in my life at a zoning hearing. The workbook told me exactly what the record requires and what the chair will interrupt you for. I got through two minutes without a single point of order.”</p>
<div class="who">
<img src="https://i.pravatar.cc/120?u=benchballot-tenant-organizer" alt="Portrait of Renata Cho">
<div><b>Renata Cho</b><span>Tenant organizer, District 4</span></div>
</div>
</article>
<article class="testi reveal">
<div class="stars" aria-label="5 out of 5">★★★★★</div>
<p>“Their docket monitor is the only tracker my clinic relies on. When an amendment lands at midnight, we have the diff and a plain-language reading before opposing counsel has finished reading the PDF.”</p>
<div class="who">
<img src="https://i.pravatar.cc/120?u=benchballot-legal-aid-director" alt="Portrait of Marcus Adeyemi">
<div><b>Marcus Adeyemi</b><span>Director, regional legal aid clinic</span></div>
</div>
</article>
<article class="testi reveal">
<div class="stars" aria-label="5 out of 5">★★★★★</div>
<p>“We used the district impact brief in a city council work session. Council members who had never engaged with our coalition asked for copies. Data changed the room faster than passion did.”</p>
<div class="who">
<img src="https://i.pravatar.cc/120?u=benchballot-council-advocate" alt="Portrait of Priya Raghunathan">
<div><b>Priya Raghunathan</b><span>Coalition lead, Civic Futures Alliance</span></div>
</div>
</article>
</div>
</div>
</section>
<!-- ============ FAQ ============ -->
<section class="sec" id="faq">
<div class="container">
<div class="split" style="align-items:start;gap:64px;">
<div class="reveal">
<p class="eyebrow">Questions & Answers</p>
<h2>Answers before you ask twice.</h2>
<p class="lede">We field roughly nine hundred questions a month. These are the ones that recur most often — from first-time commenters to seasoned litigants.</p>
<figure class="figure" style="margin-top:34px;">
<img src="https://picsum.photos/800/520?grayscale" alt="Placeholder photograph of a public notice board with civic postings">
<figcaption>Public notice board — statutory posting requirements vary by jurisdiction</figcaption>
</figure>
</div>
<div class="faq-list reveal">
<div class="faq-item">
<button class="faq-q" aria-expanded="true">Is Bench & Ballot a law firm?</button>
<div class="faq-a" style="max-height:400px;"><p>No. We are a nonpartisan civic information organization operating through a 501(c)(3) educational arm and a 501(c)(4) advocacy affiliate. Nothing published here constitutes legal advice, and an attorney–client relationship is not formed by reading a guide, attending a training, or using the representative finder. For advice about your specific circumstances, consult a licensed attorney in your jurisdiction or contact our legal aid referral network.</p></div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false">How do you keep your policy research nonpartisan?</button>
<div class="faq-a"><p>Every analysis passes two independent reviewers, and each reviewer must disclose campaign contributions and organizational affiliations before assignment. We publish methodology notes alongside district impact briefs, release underlying data sets, and invite response from sponsors of either party. We do not endorse candidates, fund campaigns, or accept unrestricted gifts from registered lobbyists or their firms. Our editorial independence policy is posted in full in the Press Room.</p></div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false">What is the difference between public comment and testimony?</button>
<div class="faq-a"><p>Public comment is written input submitted to a docket or rulemaking record — it is accepted on paper or through an electronic portal, and agencies are required to consider it before finalizing a rule. Testimony is oral statement given on the record at a hearing, usually under a strict time limit set by the chair, and it becomes part of the hearing transcript. Both create a formal record; testimony also puts a face and a constituency to the position. Our trainings cover both, because the strategic value of each differs by stage of the legislative or regulatory process.</p></div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false">How current are your legal guides?</button>
<div class="faq-a"><p>Guides are reviewed on a quarterly cycle, with out-of-cycle updates issued within thirty days whenever controlling precedent, statute, or agency regulation changes. Each guide carries a visible "last reviewed" date and a citation list. Where a court has issued a split decision or an injunction is in flux, we mark the guide with a standing caution and name the jurisdictions affected so you know whether the guidance applies where you live.</p></div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false">Can I reuse your research or materials?</button>
<div class="faq-a"><p>Yes, with attribution. Educational materials, testimony templates, and data sets are released under a Creative Commons Attribution 4.0 license for noncommercial use. Photographs, the Bench & Ballot seal, and commissioned illustrations are excluded. Educators, journalists, and community organizations may reproduce excerpts in full context; if you are citing us in a legal filing, please link to the source document rather than excerpting, so the reader can check the methodology.</p></div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false">How is the organization funded?</button>
<div class="faq-a"><p>Approximately 68 percent of revenue comes from individual contributions under $1,000, 21 percent from foundation grants with published terms, and 11 percent from earned training and publication revenue. Registered lobbyists and their firms may not contribute to our advocacy affiliate. Audited financial statements are published each February, and our IRS Form 990 is available in the Press Room for the most recent five fiscal years.</p></div>
</div>
</div>
</div>
</div>
</section>
<!-- ============ DONATE ============ -->
<section class="sec donate" id="donate">
<div class="container">
<div class="split">
<div class="reveal">
<p class="eyebrow on-dark">Support the Work</p>
<h2>Information stays free when someone funds it.</h2>
<p style="color:#B7C2D1;">We charge nothing for the guides, the trackers, or the trainings — because a citizen's access to the record should never depend on a subscription. Your contribution pays for legislative analysts, legal reviewers, court filing fees, translation, and the stenographer who keeps the transcript of every hearing we convene.</p>
<p style="color:#B7C2D1;">Gifts to the 501(c)(3) are tax-deductible to the extent permitted by law. Gifts to the 501(c)(4) advocacy affiliate are not deductible but fund grassroots lobbying, petition drives, and coordinated district visits.</p>
<div class="tiers">
<div class="tier" data-amt="25"><b>$25</b><span>Prints one guide</span></div>
<div class="tier" data-amt="75"><b>$75</b><span>Funds one docket review</span></div>
<div class="tier" data-amt="250"><b>$250</b><span>Sponsors a training seat</span></div>
</div>
<div class="hero-actions" style="margin-top:6px;">
<button class="btn btn-outline-light" type="button" data-share="Bench & Ballot giving campaign">Share the Campaign</button>
<a href="#news" class="btn btn-outline-light">Volunteer Instead</a>
</div>
</div>
<div class="donate-panel reveal">
<div class="freq">
<button type="button" class="on" data-freq="Monthly">Monthly</button>
<button type="button" data-freq="One-time">One-time</button>
</div>
<h4>Choose an amount</h4>
<div class="amounts">
<button type="button">$15</button>
<button type="button" class="on">$25</button>
<button type="button">$50</button>
<button type="button">$100</button>
</div>
<a href="#news" class="btn btn-primary btn-block arrow">Donate Now</a>
<small>Secure processing · Tax receipt emailed instantly</small>
<p style="color:#93A2B5;font-size:.88rem;margin-top:22px;line-height:1.65;">Monthly donors receive the <strong style="color:#C79A2E;">Docket Weekly</strong> — a five-minute Monday briefing on the bills, dockets, and deadlines that will shape your district's month.</p>
</div>
</div>
</div>
</section>
<!-- ============ NEWSLETTER ============ -->
<section class="news" id="news">
<div class="container">
<div>
<h3>The Docket Weekly</h3>
<p>Every Monday: the five deadlines, filings, and hearings that matter — in five minutes, without spin.</p>
</div>
<form onsubmit="event.preventDefault(); showToast('You are subscribed — check your inbox to confirm.');">
<label for="email" style="position:absolute;left:-9999px;">Email address</label>
<input id="email" type="email" placeholder="your@email.org" required>
<button class="btn btn-dark" type="submit">Subscribe</button>
</form>
</div>
</section>
</main>
<!-- ============ FOOTER ============ -->
<footer class="site-footer">
<div class="container">
<div class="foot-grid">
<div class="foot-brand">
<span class="brand-name">Bench & Ballot</span>
<span class="brand-tag" style="display:block;color:var(--brass);">Precedent · Policy · The People</span>
<p>A nonpartisan civic institute publishing free legal guidance, district-level policy research, and grassroots organizing tools for an informed public.</p>
<div class="socials" aria-label="Social media">
<a href="#top" aria-label="Bench & Ballot on X"><svg viewBox="0 0 24 24"><path d="M18.9 2H22l-7 8 8.2 12h-6.4l-5-7.3L5.9 22H2.7l7.5-8.6L2.3 2h6.6l4.5 6.6L18.9 2Zm-1.1 18h1.8L7.3 3.9H5.4L17.8 20Z"/></svg></a>
<a href="#top" aria-label="Bench & Ballot on Facebook"><svg viewBox="0 0 24 24"><path d="M13.5 22v-9h3l.5-3.5h-3.5V7.3c0-1 .3-1.7 1.8-1.7H17V2.4c-.3 0-1.4-.1-2.6-.1-2.6 0-4.4 1.6-4.4 4.5v2.7H7V13h3v9h3.5Z"/></svg></a>
<a href="#top" aria-label="Bench & Ballot on LinkedIn"><svg viewBox="0 0 24 24"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5ZM3 9h4v12H3V9Zm7 0h3.8v1.7h.05c.53-1 1.83-2.05 3.77-2.05 4.03 0 4.78 2.65 4.78 6.1V21h-4v-5.4c0-1.3-.02-3-1.83-3-1.84 0-2.12 1.43-2.12 2.9V21h-4V9Z"/></svg></a>
<a href="#news" aria-label="Bench & Ballot newsletter"><svg viewBox="0 0 24 24"><path d="M2 5h20v14H2V5Zm2 2v.4l8 5 8-5V7H4Zm16 10V9.7l-8 5-8-5V17h16Z"/></svg></a>
</div>
</div>
<div>
<h4>Explore</h4>
<ul class="foot-list">
<li><a href="#resources">Legal Resources</a></li>
<li><a href="#research">Policy Research</a></li>
<li><a href="#advocacy">Grassroots Advocacy</a></li>
<li><a href="#events">Events & Hearings</a></li>
<li><a href="#find">Representative Finder</a></li>
<li><a href="#donate">Donate</a></li>
</ul>
</div>
<div>
<h4>Organization</h4>
<ul class="foot-list">
<li><a href="#faq">About & Mission</a></li>
<li><a href="#research">Methodology</a></li>
<li><a href="#press">Press Room</a></li>
<li><a href="#press">Financials & Form 990</a></li>
<li><a href="#advocacy">Careers</a></li>
<li><a href="#news">Volunteer</a></li>
</ul>
</div>
<div>
<h4>Contact</h4>
<ul class="foot-list contact-list">
<li><span aria-hidden="true">📍</span> 1140 Ashby Avenue, Suite 700<br>Washington, DC 20005</li>
<li><span aria-hidden="true">☎</span> <a href="tel:+12025550147">(202) 555-0147</a></li>
<li><span aria-hidden="true">✉</span> <a href="mailto:inbox@benchandballot.org">inbox@benchandballot.org</a></li>
<li><span aria-hidden="true">⏱</span> Mon–Fri, 9:00 a.m.–6:00 p.m. ET</li>
</ul>
<p class="disclaimer">Bench & Ballot provides civic information and education only. Nothing here is legal advice or a solicitation to support or oppose any candidate or measure.</p>
</div>
</div>
<div class="foot-bottom">
<span>© <span id="year">2025</span> Bench & Ballot Institute. All rights reserved. 501(c)(3) EIN 84-4410297.</span>
<nav aria-label="Legal">
<a href="#faq">Privacy Policy</a>
<a href="#faq">Terms of Use</a>
<a href="#faq">Accessibility</a>
<a href="#faq">Editorial Standards</a>
<a href="#top">Back to top ↑</a>
</nav>
</div>
</div>
</footer>
<div class="toast" id="toast" role="status" aria-live="polite"></div>
<script>
/* ---------------- toast ---------------- */
function showToast(msg){
var t=document.getElementById('toast');
t.textContent=msg;t.classList.add('show');
clearTimeout(window.__tt);
window.__tt=setTimeout(function(){t.classList.remove('show');},3200);
}
/* ---------------- year ---------------- */
document.getElementById('year').textContent=new Date().getFullYear();
/* ---------------- mobile nav ---------------- */
var burger=document.getElementById('burger'), navWrap=document.getElementById('navWrap');
burger.addEventListener('click',function(){
var open=navWrap.classList.toggle('open');
burger.setAttribute('aria-expanded',open?'true':'false');
});
navWrap.querySelectorAll('a').forEach(function(a){
a.addEventListener('click',function(){navWrap.classList.remove('open');burger.setAttribute('aria-expanded','false');});
});
/* ---------------- sticky header shade ---------------- */
var header=document.querySelector('.site-header');
window.addEventListener('scroll',function(){
header.classList.toggle('stuck',window.scrollY>40);
},{passive:true});
/* ---------------- ticker duplicate for seamless loop ---------------- */
(function(){
var list=document.getElementById('tickerList');
if(list){ list.innerHTML+=list.innerHTML; }
})();
/* ---------------- FAQ accordion ---------------- */
document.querySelectorAll('.faq-q').forEach(function(btn){
btn.addEventListener('click',function(){
var expanded=btn.getAttribute('aria-expanded')==='true';
var panel=btn.nextElementSibling;
document.querySelectorAll('.faq-q').forEach(function(b){
b.setAttribute('aria-expanded','false');
b.nextElementSibling.style.maxHeight='0px';
});
if(!expanded){
btn.setAttribute('aria-expanded','true');
panel.style.maxHeight=panel.scrollHeight+'px';
}
});
});
/* open first by default */
(function(){
var first=document.querySelector('.faq-q[aria-expanded="true"]');
if(first){ first.nextElementSibling.style.maxHeight=first.nextElementSibling.scrollHeight+'px'; }
})();
/* ---------------- events tabs ---------------- */
document.querySelectorAll('.tab').forEach(function(tab){
tab.addEventListener('click',function(){
document.querySelectorAll('.tab').forEach(function(t){t.classList.remove('active');t.setAttribute('aria-selected','false');});
tab.classList.add('active');tab.setAttribute('aria-selected','true');
var cat=tab.dataset.cat, shown=0;
document.querySelectorAll('#eventList .event').forEach(function(ev){
var match=(cat==='all'||ev.dataset.cat===cat);
ev.classList.toggle('hide',!match);
if(match) shown++;
});
document.getElementById('noEvents').style.display=shown?'none':'block';
});
});
/* ---------------- representative finder ---------------- */
var LOOKUP=[
{pfx:['100','101','102','103','104','112'],state:'New York',cd:'NY-12',seat:'U.S. House of Representatives',
turn:'54.2%',next:'June 25 Statewide Primary',
house:{n:'Imani Whitfield',party:'Democrat · 3rd term',u:'ny12'},
s1:{n:'Margaret E. Vaughn',party:'Class I · since 2017',u:'ny-s1'},
s2:{n:'Thomas Reddick',party:'Class II · since 2013',u:'ny-s2'}},
{pfx:['606','600','605'],state:'Illinois',cd:'IL-07',seat:'U.S. House of Representatives',
turn:'58.9%',next:'March 17 Consolidated Primary',
house:{n:'Daniel Okonjo-Reyes',party:'Democrat · 1st term',u:'il07'},
s1:{n:'Harriet Lindqvist',party:'Class II · since 2021',u:'il-s1'},
s2:{n:'Peter Grady',party:'Class III · since 2019',u:'il-s2'}},
{pfx:['770','771','772'],state:'Texas',cd:'TX-18',seat:'U.S. House of Representatives',
turn:'47.6%',next:'March 3 Primary Election',
house:{n:'Cassandra Bright-Flores',party:'Democrat · 5th term',u:'tx18'},
s1:{n:'Walter K. Mensah',party:'Class I · since 2019',u:'tx-s1'},
s2:{n:'Elaine Trout',party:'Class II · since 2025',u:'tx-s2'}},
{pfx:['303','300','301'],state:'Georgia',cd:'GA-05',seat:'U.S. House of Representatives',
turn:'51.3%',next:'May 24 Primary Election',
house:{n:'Julian A. Ferrer',party:'Democrat · 2nd term',u:'ga05'},
s1:{n:'Beverly Nkemdirim',party:'Class II · since 2021',u:'ga-s1'},
s2:{n:'Grant Sewell',party:'Class III · since 2015',u:'ga-s2'}},
{pfx:['981','980','982'],state:'Washington',cd:'WA-07',seat:'U.S. House of Representatives',
turn:'62.1%',next:'August 4 Top-Two Primary',
house:{n:'Sofia Delacroix',party:'Democrat · 4th term',u:'wa07'},
s1:{n:'Nathan Cho-Baptiste',party:'Class I · since 2023',u:'wa-s1'},
s2:{n:'Renée Halvorsen',party:'Class III · since 2017',u:'wa-s2'}},
{pfx:['191','190','192'],state:'Pennsylvania',cd:'PA-03',seat:'U.S. House of Representatives',
turn:'56.4%',next:'April 28 Primary Election',
house:{n:'Owen Brady-Kasten',party:'Democrat · 2nd term',u:'pa03'},
s1:{n:'Lucia Marchetti',party:'Class I · since 2023',u:'pa-s1'},
s2:{n:'Douglas Fenn',party:'Class III · since 2017',u:'pa-s2'}}
];
function findDistrict(zip){
var p=zip.slice(0,3);
for(var i=0;i<LOOKUP.length;i++){ if(LOOKUP[i].pfx.indexOf(p)>-1) return LOOKUP[i]; }
return LOOKUP[parseInt(zip,10)%LOOKUP.length];
}
function renderReps(zip){
var d=findDistrict(zip), results=document.getElementById('results');
document.getElementById('summary').innerHTML=
'<b>ZIP '+zip+'</b>'+
'<span class="pill" style="margin:0;">'+d.state+'</span>'+
'<span class="pill" style="margin:0;">District '+d.cd+'</span>'+
'<span style="font-size:.95rem;color:var(--muted);">General election turnout (last cycle): <strong style="color:var(--ink);">'+d.turn+'</strong> · Next statewide election: <strong style="color:var(--ink);">'+d.next+'</strong></span>';
var people=[
{img:'https://i.pravatar.cc/160?u=bb-'+d.house.u, n:d.house.n, role:'Representative · '+d.cd, meta:d.house.party+'<br>'+d.state+' · U.S. House'},
{img:'https://i.pravatar.cc/160?u=bb-'+d.s1.u, n:d.s1.n, role:'U.S. Senator', meta:d.s1.party+'<br>'+d.state+' · Senate'},
{img:'https://i.pravatar.cc/160?u=bb-'+d.s2.u, n:d.s2.n, role:'U.S. Senator', meta:d.s2.party+'<br>'+d.state+' · Senate'}
];
document.getElementById('repCards').innerHTML=people.map(function(p){
return '<article class="rep-card">'+
'<img src="'+p.img+'" alt="Portrait placeholder for '+p.n+'">'+
'<h4>'+p.n+'</h4>'+
'<span class="role">'+p.role+'</span>'+
'<p class="meta">'+p.meta+'</p>'+
'<a class="btn btn-ghost btn-sm btn-block" href="#advocacy">Send a Message</a>'+
'</article>';
}).join('');
results.classList.add('show');
window.__lastZip=zip;
}
document.getElementById('repForm').addEventListener('submit',function(e){
e.preventDefault();
var v=document.getElementById('zip').value.trim();
if(!/^\d{5}$/.test(v)){ showToast('Please enter a valid 5-digit ZIP code.'); return; }
renderReps(v);
});
document.querySelectorAll('.chip').forEach(function(c){
c.addEventListener('click',function(){
document.getElementById('zip').value=c.dataset.zip;
renderReps(c.dataset.zip);
document.getElementById('results').scrollIntoView({behavior:'smooth',block:'center'});
});
});
/* ---------------- share buttons ---------------- */
function share(text){
var url=location.href.split('#')[0];
if(navigator.share){
navigator.share({title:'Bench & Ballot',text:text||'Civic resources from Bench & Ballot',url:url}).catch(function(){});
}else if(navigator.clipboard){
navigator.clipboard.writeText(url).then(function(){ showToast('Link copied to clipboard — share it widely.'); });
}else{ showToast('Copy this page URL to share: '+url); }
}
document.getElementById('shareResults').addEventListener('click',function(){
share('My representatives for ZIP '+(window.__lastZip||'')+' via the Bench & Ballot finder');
});
document.querySelectorAll('[data-share]').forEach(function(el){
el.addEventListener('click',function(e){
if(el.tagName==='A' && el.getAttribute('href')==='#news'){ e.preventDefault(); }
share(el.dataset.share);
});
});
/* ---------------- donation widget ---------------- */
document.querySelectorAll('.amounts button').forEach(function(b){
b.addEventListener('click',function(){
document.querySelectorAll('.amounts button').forEach(function(x){x.classList.remove('on');});
b.classList.add('on');
});
});
document.querySelectorAll('.freq button').forEach(function(b){
b.addEventListener('click',function(){
document.querySelectorAll('.freq button').forEach(function(x){x.classList.remove('on');});
b.classList.add('on');
});
});
document.querySelectorAll('.tier').forEach(function(t){
t.addEventListener('click',function(){
document.querySelectorAll('.tier').forEach(function(x){x.classList.remove('sel');});
t.classList.add('sel');
var amt=t.dataset.amt;
document.querySelectorAll('.amounts button').forEach(function(x){
x.classList.toggle('on',x.textContent.trim()==='$'+amt);
});
});
});
/* ---------------- scroll reveal ---------------- */
if('IntersectionObserver' in window){
var io=new IntersectionObserver(function(entries){
entries.forEach(function(en){ if(en.isIntersecting){ en.target.classList.add('in'); io.unobserve(en.target);} });
},{threshold:.12,rootMargin:'0px 0px -40px 0px'});
document.querySelectorAll('.reveal').forEach(function(el){io.observe(el);});
}else{
document.querySelectorAll('.reveal').forEach(function(el){el.classList.add('in');});
}
/* ---------------- active nav on scroll ---------------- */
var sections=[].slice.call(document.querySelectorAll('main section[id]'));
var navLinks=[].slice.call(document.querySelectorAll('.nav a'));
window.addEventListener('scroll',function(){
var pos=window.scrollY+140, current='';
sections.forEach(function(s){ if(s.offsetTop<=pos) current=s.id; });
navLinks.forEach(function(a){
a.classList.toggle('active',a.getAttribute('href')==='#'+current);
});
},{passive:true});
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T10:05:00.550Z",
"url": "https://benchmark.aimac.invalid/b97b6a714a3e71b9f77d9ee2e6d70e8df1595d018bfd1e538cf558f25328fa38.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-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "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": "<a class=\"brand\" href=\"#top\" aria-label=\"Bench and Ballot home\">",
"target": [
".brand"
]
}
]
},
{
"id": "aria-conditional-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are used as described in the specification of the element's role",
"help": "ARIA attributes must be used as specified for the element's role",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-conditional-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"none": [],
"impact": null,
"html": "<a class=\"brand\" href=\"#top\" aria-label=\"Bench and Ballot home\">",
"target": [
".brand"
]
}
]
},
{
"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=\"tabs\" role=\"tablist\" aria-label=\"Filter events by type\">",
"target": [
".tabs"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "focusable-modal-open",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements while a modal is open"
},
{
"id": "focusable-disabled",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements contained within element"
},
{
"id": "focusable-not-tabbable",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "No focusable elements contained within element"
}
],
"none": [],
"impact": null,
"html": "<img src=\"https://picsum.photos/1800/1100?grayscale\" alt=\"\" aria-hidden=\"true\">",
"target": [
"img[alt=\"\"]"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": "serious",
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<a class=\"brand\" href=\"#top\" aria-label=\"Bench and Ballot home\">",
"target": [
".brand"
]
}
]
},
{
"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=\"tabs\" role=\"tablist\" aria-label=\"Filter events by type\">",
"target": [
".tabs"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "aria-required-children",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Required ARIA children are present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"tabs\" role=\"tablist\" aria-label=\"Filter events by type\">",
"target": [
".tabs"
]
}
]
},
{
"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": [
{
"any": [
{
"id": "aria-required-parent",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Required ARIA parent role present"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"tab active\" data-cat=\"all\" role=\"tab\" aria-selected=\"true\">All Events</button>",
"target": [
"button[data-cat=\"all\"]"
]
}
]
},
{
"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=\"tabs\" role=\"tablist\" aria-label=\"Filter events by type\">",
"target": [
".tabs"
]
}
]
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-valid-attr-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute values are valid"
},
{
"id": "aria-errormessage",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
},
{
"id": "aria-level",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-level values are valid"
}
],
"none": [],
"impact": null,
"html": "<a class=\"brand\" href=\"#top\" aria-label=\"Bench and Ballot home\">",
"target": [
".brand"
]
}
]
},
{
"id": "aria-valid-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure attributes that begin with aria- are valid ARIA attributes",
"help": "ARIA attributes must conform to valid names",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-valid-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute name is valid"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a class=\"brand\" href=\"#top\" aria-label=\"Bench and Ballot home\">",
"target": [
".brand"
]
}
]
},
{
"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=\"grid-4\" style=\"margin-top:64px;\">",
"target": [
"#resources > .container > .grid-4"
]
}
]
},
{
"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=\"submit\" class=\"btn btn-dark\">Look Up District <span class=\"arrow\"></span></button>",
"target": [
"#repForm > .btn-dark.btn[type=\"submit\"]"
]
}
]
},
{
"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>Where <em>precedent</em> meets the people who live under it.</h1>",
"target": [
"h1"
]
},
{
"html": "<h3>Five things worth your attention</h3>",
"target": [
".hero-card > h3"
]
},
{
"html": "<h2>Who actually represents you \u2014 and how to reach them.</h2>",
"target": [
"#find > .container > .sec-head.reveal > h2"
]
},
{
"html": "<h2>Know the law before the law knows you.</h2>",
"target": [
"#resources > .container > .split > .col-text.reveal > h2"
]
},
{
"html": "<h4>Police Encounters</h4>",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(1) > h4"
]
},
{
"html": "<h4>Housing & Eviction</h4>",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(2) > h4"
]
},
{
"html": "<h4>Voting & Registration</h4>",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(3) > h4"
]
},
{
"html": "<h4>Workplace Claims</h4>",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(4) > h4"
]
},
{
"html": "<h2>Research that survives the legislative process.</h2>",
"target": [
"#research > .container > .sec-head.reveal > h2"
]
},
{
"html": "<h4>Bill Tracker & Markup Alerts</h4>",
"target": [
"li:nth-child(1) > div > h4"
]
},
{
"html": "<h4>District Impact Briefs</h4>",
"target": [
"li:nth-child(2) > div > h4"
]
},
{
"html": "<h4>Regulatory Docket Monitor</h4>",
"target": [
"li:nth-child(3) > div > h4"
]
},
{
"html": "<h4>Referendum & Measure Analyzer</h4>",
"target": [
"li:nth-child(4) > div > h4"
]
},
{
"html": "<h4>Precedent & the Court</h4>",
"target": [
".grid-3 > .card:nth-child(1) > h4"
]
},
{
"html": "<h4>Redistricting After the Census</h4>",
"target": [
".grid-3 > .card:nth-child(2) > h4"
]
},
{
"html": "<h4>Lobbying Disclosure Index</h4>",
"target": [
".grid-3 > .card:nth-child(3) > h4"
]
},
{
"html": "<h2>Turn testimony into turnout.</h2>",
"target": [
"#advocacy > .container > .split > .col-text.reveal > h2"
]
},
{
"html": "<h4>Take the Position</h4>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(1) > h4"
]
},
{
"html": "<h4>Learn the Procedure</h4>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(2) > h4"
]
},
{
"html": "<h4>Make the Record</h4>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(3) > h4"
]
},
{
"html": "<h4>Hold the Vote</h4>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(4) > h4"
]
},
{
"html": "<h2>Show up where the record is made.</h2>",
"target": [
"#events > .container > .sec-head.reveal > h2"
]
},
{
"html": "<h3>Redistricting & the Map: A Public Reading</h3>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(1) > div:nth-child(2) > h3"
]
},
{
"html": "<h3>Testimony That Gets Quoted: A Two-Hour Workshop</h3>",
"target": [
".event[data-cat=\"training\"]:nth-child(2) > div:nth-child(2) > h3"
]
},
{
"html": "<h3>Exhaustion, Standing, and the Path to Review</h3>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(3) > div:nth-child(2) > h3"
]
},
{
"html": "<h3>Recess District Office Visit \u2014 Coordinated Delegations</h3>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(4) > div:nth-child(2) > h3"
]
},
{
"html": "<h3>Election Protection Legal Observer Training</h3>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(5) > div:nth-child(2) > h3"
]
},
{
"html": "<h3>Petition Law & Ballot Access Compliance</h3>",
"target": [
".event[data-cat=\"training\"]:nth-child(6) > div:nth-child(2) > h3"
]
},
{
"html": "<h4>Election Calendar</h4>",
"target": [
".aside-block.reveal:nth-child(1) > h4"
]
},
{
"html": "<h4>Trending Issues</h4>",
"target": [
".aside-block.reveal:nth-child(2) > h4"
]
},
{
"html": "<h4>Legal Resource Library</h4>",
"target": [
"#press > h4"
]
},
{
"html": "<h2>What advocates, attorneys, and citizens say.</h2>",
"target": [
".center > h2"
]
},
{
"html": "<h2>Answers before you ask twice.</h2>",
"target": [
"#faq > .container > .split > .reveal:nth-child(1) > h2"
]
},
{
"html": "<h2>Information stays free when someone funds it.</h2>",
"target": [
"#donate > .container > .split > .reveal:nth-child(1) > h2"
]
},
{
"html": "<h4>Choose an amount</h4>",
"target": [
".donate-panel > h4"
]
},
{
"html": "<h3>The Docket Weekly</h3>",
"target": [
".container > div > h3"
]
},
{
"html": "<h4>Explore</h4>",
"target": [
".foot-grid > div:nth-child(2) > h4"
]
},
{
"html": "<h4>Organization</h4>",
"target": [
".foot-grid > div:nth-child(3) > h4"
]
},
{
"html": "<h4>Contact</h4>",
"target": [
"div:nth-child(4) > h4"
]
}
],
"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\" class=\"js\">",
"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": "#a9b6c6",
"bgColor": "#0a1421",
"contrastRatio": 8.98,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 8.98"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span><span class=\"dot\">\u25cf</span> Nonpartisan & nonprofit \u2014 501(c)(3) & 501(c)(4) affiliated</span>",
"target": [
".utility > .container > span"
]
}
]
},
{
"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\" class=\"js\">",
"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": "navWrap",
"relatedNodes": [],
"impact": "critical",
"message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<div class=\"nav-wrap\" id=\"navWrap\">",
"target": [
"#navWrap"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [
{
"html": "<label for=\"zip\" class=\"sr-only\" style=\"position:absolute;left:-9999px;\">ZIP code</label>",
"target": [
".sr-only"
]
}
],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input id=\"zip\" name=\"zip\" inputmode=\"numeric\" maxlength=\"5\" placeholder=\"Enter your 5-digit ZIP code\" aria-describedby=\"zipNote\" required=\"\">",
"target": [
"#zip"
]
}
]
},
{
"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\" class=\"js\">",
"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\" class=\"js\">",
"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/124x124/0E1A2B/C79A2E?text=B%26B&font=playfair%20display\" alt=\"Bench & Ballot seal logo\" width=\"62\" height=\"62\">",
"target": [
"img[alt=\"Bench & Ballot seal logo\"]"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "explicit-label",
"data": null,
"relatedNodes": [
{
"html": "<label for=\"zip\" class=\"sr-only\" style=\"position:absolute;left:-9999px;\">ZIP code</label>",
"target": [
".sr-only"
]
}
],
"impact": "critical",
"message": "Element has an explicit <label>"
},
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input id=\"zip\" name=\"zip\" inputmode=\"numeric\" maxlength=\"5\" placeholder=\"Enter your 5-digit ZIP code\" aria-describedby=\"zipNote\" required=\"\">",
"target": [
"#zip"
]
}
]
},
{
"id": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "link-in-text-block-style",
"data": null,
"relatedNodes": [
{
"html": "<aside class=\"hero-card\">",
"target": [
".hero-card"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#research\" class=\"btn btn-primary btn-block arrow\">Read the Briefing</a>",
"target": [
".hero-card > .btn-block.btn-primary.arrow"
]
}
]
},
{
"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": [
".hero-card > 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><strong>S. 1147</strong>, the Redistricting Transparency Act, clears committee markup \u2014 6 amendments adopted.</li>",
"target": [
".hero-card > 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\">",
"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/124x124/0E1A2B/C79A2E?text=B%26B&font=playfair%20display\" alt=\"Bench & Ballot seal logo\" width=\"62\" height=\"62\">",
"target": [
"img[alt=\"Bench & Ballot seal logo\"]"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 183.1,
"height": 48.9
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (183.1px by 48.9px, 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": "aria-prohibited-attr",
"impact": "serious",
"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": {
"role": null,
"nodeName": "div",
"messageKey": "noRoleSingular",
"prohibited": [
"aria-label"
]
},
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute is not well supported on a div with no valid role attribute."
}
],
"impact": "serious",
"html": "<div class=\"ticker\" aria-label=\"Legislative docket ticker\">",
"target": [
".ticker"
],
"failureSummary": "Fix all of the following:\n aria-label attribute is not well supported on a div with no valid role attribute."
}
]
},
{
"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=\"dot\">\u25cf</span>",
"target": [
".dot"
],
"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": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "9.1pt (12.16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-header\" id=\"top\">",
"target": [
"#top"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.1pt (12.16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"brand-tag\">Precedent \u00b7 Policy \u00b7 The People</span>",
"target": [
".brand-text > .brand-tag"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.1pt (12.16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-header\" id=\"top\">",
"target": [
"#top"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#resources\" class=\"active\">Legal Resources</a>",
"target": [
".active[href$=\"#resources\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"stats\" aria-label=\"Impact statistics\">",
"target": [
".stats"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Guides in the library</span>",
"target": [
".stat:nth-child(1) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"stats\" aria-label=\"Impact statistics\">",
"target": [
".stats"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Town halls convened</span>",
"target": [
".stat:nth-child(2) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"stats\" aria-label=\"Impact statistics\">",
"target": [
".stats"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>States with local desks</span>",
"target": [
".stat:nth-child(3) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"stats\" aria-label=\"Impact statistics\">",
"target": [
".stats"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Cost to read anything</span>",
"target": [
".stat:nth-child(4) > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.8pt (13.12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"tab\" data-cat=\"townhall\" role=\"tab\" aria-selected=\"false\">Town Halls</button>",
"target": [
".tab[data-cat=\"townhall\"][role=\"tab\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.8pt (13.12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.8pt (13.12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"tab\" data-cat=\"training\" role=\"tab\" aria-selected=\"false\">Trainings</button>",
"target": [
".tab[data-cat=\"training\"][role=\"tab\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.8pt (13.12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.8pt (13.12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.8pt (13.12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"tab\" data-cat=\"briefing\" role=\"tab\" aria-selected=\"false\">Legal Briefings</button>",
"target": [
".tab[data-cat=\"briefing\"][role=\"tab\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.8pt (13.12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#4a3c13",
"bgColor": "#c79a2e",
"contrastRatio": 4.15,
"fontSize": "11.6pt (15.52px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"news\" id=\"news\">",
"target": [
"#news"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.15 (foreground color: #4a3c13, background color: #c79a2e, font size: 11.6pt (15.52px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Every Monday: the five deadlines, filings, and hearings that matter \u2014 in five minutes, without spin.</p>",
"target": [
"#news > .container > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.15 (foreground color: #4a3c13, background color: #c79a2e, font size: 11.6pt (15.52px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#eeebe6",
"contrastRatio": 3.08,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-header stuck\" id=\"top\">",
"target": [
"#top"
]
},
{
"html": "<section class=\"sec finder\" id=\"find\">",
"target": [
"#find"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.08 (foreground color: #a87f1f, background color: #eeebe6, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#find\" class=\"active\">Find Reps</a>",
"target": [
".active[href$=\"#find\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.08 (foreground color: #a87f1f, background color: #eeebe6, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "9.0pt (12px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Legal Resources</p>",
"target": [
".col-text.in.reveal > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>Case law library \u2014 Bench & Ballot legal desk, regional reading room</figcaption>",
"target": [
".col-img.in.reveal > figure > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".in.card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">01</span>",
"target": [
".in.card:nth-child(1) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".in.card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">02</span>",
"target": [
".in.card:nth-child(2) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".in.card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">03</span>",
"target": [
".in.card:nth-child(3) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".in.card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">04</span>",
"target": [
".in.card:nth-child(4) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#eeece7",
"contrastRatio": 3.1,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-header stuck\" id=\"top\">",
"target": [
"#top"
]
},
{
"html": "<section class=\"quoteband\">",
"target": [
".quoteband"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.1 (foreground color: #a87f1f, background color: #eeece7, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#research\" class=\"active\">Research</a>",
"target": [
".active[href$=\"#research\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.1 (foreground color: #a87f1f, background color: #eeece7, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>Case law library \u2014 Bench & Ballot legal desk, regional reading room</figcaption>",
"target": [
"#resources > .container > .split > .col-img.in.reveal > figure > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".card.in:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">01</span>",
"target": [
".card.in:nth-child(1) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".card.in:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">02</span>",
"target": [
".card.in:nth-child(2) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".card.in:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">03</span>",
"target": [
".card.in:nth-child(3) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".card.in:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">04</span>",
"target": [
".card.in:nth-child(4) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "9.0pt (12px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Policy Analysis & Research</p>",
"target": [
"#research > .container > .sec-head.in.reveal > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "13.9pt (18.56px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"lede\">",
"target": [
"#research > .container > .sec-head.in.reveal > .lede"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "11.5pt (15.36px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Follow any of 11,400 active federal and state bills by topic, committee, or sponsor. Receive a diff report within two hours of a floor amendment, with plain-language summaries of what changed and who moved it.</p>",
"target": [
"li:nth-child(1) > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "11.5pt (15.36px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Distributional analysis pairing census-tract data with appropriations figures. Each brief answers one question: for a household in your zip code, what does this measure cost, add, or remove?</p>",
"target": [
"li:nth-child(2) > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "11.5pt (15.36px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Federal rulemaking moves through notice-and-comment long before it reaches a headline. We surface open dockets, comment deadlines, and the docket ID you need to file substantively.</p>",
"target": [
"li:nth-child(3) > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "11.5pt (15.36px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Plain-language translations of ballot propositions, fiscal note summaries, and the coalition money behind each side \u2014 refreshed as campaign finance filings land.</p>",
"target": [
"li:nth-child(4) > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>Figure 4.2 \u2014 Distributional impact by congressional district, FY brief</figcaption>",
"target": [
".rev > .col-img.in.reveal > figure:nth-child(1) > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>Committee markup session \u2014 appropriations subcommittee, week 14</figcaption>",
"target": [
"figure:nth-child(2) > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".grid-4 > .card.in:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">01</span>",
"target": [
".grid-4 > .card.in:nth-child(1) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".grid-4 > .card.in:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">02</span>",
"target": [
".grid-4 > .card.in:nth-child(2) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".grid-4 > .card.in:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">03</span>",
"target": [
".grid-4 > .card.in:nth-child(3) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".grid-3 > .card.in:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">Working Paper</span>",
"target": [
".grid-3 > .card.in:nth-child(1) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".grid-3 > .card.in:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">Field Report</span>",
"target": [
".grid-3 > .card.in:nth-child(2) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".grid-3 > .card.in:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">Data Set</span>",
"target": [
".grid-3 > .card.in:nth-child(3) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-header stuck\" id=\"top\">",
"target": [
"#top"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#advocacy\" class=\"active\">Advocacy</a>",
"target": [
".active[href$=\"#advocacy\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "9.0pt (12px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Legal Resources</p>",
"target": [
"#resources > .container > .split > .col-text.in.reveal > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"sec\" id=\"advocacy\" style=\"background:var(--paper-3);border-top:1px solid var(--line);border-bottom:1px solid var(--line);\">",
"target": [
"#advocacy"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>Neighborhood testimony night \u2014 organizing cohort, District 12</figcaption>",
"target": [
"#advocacy > .container > .split > .col-img.in.reveal > figure > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#efebe2",
"contrastRatio": 3.08,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"sec\" id=\"advocacy\" style=\"background:var(--paper-3);border-top:1px solid var(--line);border-bottom:1px solid var(--line);\">",
"target": [
"#advocacy"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.08 (foreground color: #a87f1f, background color: #efebe2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Grassroots Organizing</p>",
"target": [
"#advocacy > .container > .split > .col-text.in.reveal > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.08 (foreground color: #a87f1f, background color: #efebe2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">01</span>",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(1) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">02</span>",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(2) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">03</span>",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(3) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">04</span>",
"target": [
"#resources > .container > .grid-4 > .card:nth-child(4) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".grid-3 > .card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">Working Paper</span>",
"target": [
".grid-3 > .card:nth-child(1) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".grid-3 > .card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">Field Report</span>",
"target": [
".grid-3 > .card:nth-child(2) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">",
"target": [
".grid-3 > .card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">Data Set</span>",
"target": [
".grid-3 > .card:nth-child(3) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">\n <span class=\"num\">Step 01</span>\n <h4>Take the Position</h4>\n <p>Pick a live campaign from the queue. Each one shows its committee, its status, and the date public comment closes.</p>\n </article>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">Step 01</span>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(1) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">\n <span class=\"num\">Step 02</span>\n <h4>Learn the Procedure</h4>\n <p>Forty-minute training on how a bill moves, where amendment windows open, and when a hearing actually matters.</p>\n </article>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">Step 02</span>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(2) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">\n <span class=\"num\">Step 03</span>\n <h4>Make the Record</h4>\n <p>Submit written comment, sign up for testimony, or deliver a district office visit with a scripted one-pager.</p>\n </article>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">Step 03</span>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(3) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "13.2pt (17.6px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"card reveal in\">\n <span class=\"num\">Step 04</span>\n <h4>Hold the Vote</h4>\n <p>Track roll calls against commitments, publish the scoreboard, and carry the accountability into the next cycle.</p>\n </article>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(4)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"num\">Step 04</span>",
"target": [
"#advocacy > .container > .grid-4 > .card:nth-child(4) > .num"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 13.2pt (17.6px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-header stuck\" id=\"top\">",
"target": [
"#top"
]
},
{
"html": "<section class=\"sec\" id=\"advocacy\" style=\"background:var(--paper-3);border-top:1px solid var(--line);border-bottom:1px solid var(--line);\">",
"target": [
"#advocacy"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#events\" class=\"active\">Events</a>",
"target": [
".active[href$=\"#events\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "9.0pt (12px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Events, Hearings & Trainings</p>",
"target": [
"#events > .container > .sec-head.in.reveal > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "13.9pt (18.56px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"lede\">Public participation is a procedural right, not a courtesy. These are the sessions where testimony is entered, minutes are kept, and the positions that later become precedent are first put on the record.</p>",
"target": [
"#events > .container > .sec-head.in.reveal > .lede"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"date\"><span>Mar</span><b>14</b></div>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(1) > .date"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Mar</span>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(1) > .date > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "8.2pt (10.88px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pill\">Town Hall \u00b7 Free</span>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(1) > div:nth-child(2) > .pill"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pill\">Town Hall \u00b7 Free</span>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(1) > div:nth-child(2) > .pill"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "10.1pt (13.44px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"where\">Civic Auditorium, Room 2B \u00b7 6:30 PM ET \u00b7 Livestreamed</p>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(1) > div:nth-child(2) > .where"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "11.5pt (15.36px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Analysts walk through the proposed congressional map line by line, explaining compactness scores, communities of interest, and the two lawsuits already filed. Bring your address; we will show you exactly which precinct you fall in and how the boundary moved.</p>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(1) > div:nth-child(2) > p:nth-child(4)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"date\"><span>Mar</span><b>22</b></div>",
"target": [
".event[data-cat=\"training\"]:nth-child(2) > .date"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Mar</span>",
"target": [
".event[data-cat=\"training\"]:nth-child(2) > .date > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "8.2pt (10.88px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pill\">Training \u00b7 Cohort 12</span>",
"target": [
".event[data-cat=\"training\"]:nth-child(2) > div:nth-child(2) > .pill"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pill\">Training \u00b7 Cohort 12</span>",
"target": [
".event[data-cat=\"training\"]:nth-child(2) > div:nth-child(2) > .pill"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "10.1pt (13.44px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"where\">Online \u00b7 1:00\u20133:00 PM ET \u00b7 Certificate provided</p>",
"target": [
".event[data-cat=\"training\"]:nth-child(2) > div:nth-child(2) > .where"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "11.5pt (15.36px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Learn how committees actually read public comment, how to compress a policy position into two minutes, and how to reference controlling precedent without losing a skeptical chair. Includes live practice with recorded feedback from former committee staff.</p>",
"target": [
".event[data-cat=\"training\"]:nth-child(2) > div:nth-child(2) > p:nth-child(4)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"date\"><span>Apr</span><b>02</b></div>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(3) > .date"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Apr</span>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(3) > .date > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "8.2pt (10.88px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pill\">Legal Briefing \u00b7 CLE credit</span>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(3) > div:nth-child(2) > .pill"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pill\">Legal Briefing \u00b7 CLE credit</span>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(3) > div:nth-child(2) > .pill"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "10.1pt (13.44px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"where\">Ashby Avenue Offices, Suite 700 \u00b7 12:00 PM ET</p>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(3) > div:nth-child(2) > .where"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "11.5pt (15.36px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>A lunch briefing for advocates and pro se litigants on administrative exhaustion requirements, ripeness, and how the doctrine of standing quietly disposes of well-merited claims. Practical focus on eviction, benefits denials, and environmental review.</p>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(3) > div:nth-child(2) > p:nth-child(4)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"date\"><span>Apr</span><b>19</b></div>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(4) > .date"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Apr</span>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(4) > .date > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "8.2pt (10.88px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pill\">Town Hall \u00b7 District Visit Day</span>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(4) > div:nth-child(2) > .pill"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pill\">Town Hall \u00b7 District Visit Day</span>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(4) > div:nth-child(2) > .pill"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "10.1pt (13.44px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"where\">Twelve district offices nationwide \u00b7 9:00 AM local</p>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(4) > div:nth-child(2) > .where"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "11.5pt (15.36px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>When Congress is in recess, the district office is where access is won. We assemble briefed, three-person delegations with a one-page policy ask, a supporting fiscal note, and a signed constituent letter. Training required; materials provided.</p>",
"target": [
".event[data-cat=\"townhall\"]:nth-child(4) > div:nth-child(2) > p:nth-child(4)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"date\"><span>May</span><b>06</b></div>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(5) > .date"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>May</span>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(5) > .date > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "8.2pt (10.88px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pill\">Legal Briefing \u00b7 Know Your Rights</span>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(5) > div:nth-child(2) > .pill"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pill\">Legal Briefing \u00b7 Know Your Rights</span>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(5) > div:nth-child(2) > .pill"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "10.1pt (13.44px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"where\">Hybrid \u2014 Ashby Avenue & Online \u00b7 5:00 PM ET</p>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(5) > div:nth-child(2) > .where"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "11.5pt (15.36px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Volunteer observers learn the statutory rules governing polling-place conduct, provisional ballot procedure, voter assistance statutes, and how to escalate a real-time complaint through the nonpartisan protection hotline without violating electioneering limits.</p>",
"target": [
".event[data-cat=\"briefing\"]:nth-child(5) > div:nth-child(2) > p:nth-child(4)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "8.6pt (11.52px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"date\"><span>May</span><b>24</b></div>",
"target": [
".event[data-cat=\"training\"]:nth-child(6) > .date"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>May</span>",
"target": [
".event[data-cat=\"training\"]:nth-child(6) > .date > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 8.6pt (11.52px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "8.2pt (10.88px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"pill\">Training \u00b7 Organizers</span>",
"target": [
".event[data-cat=\"training\"]:nth-child(6) > div:nth-child(2) > .pill"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"pill\">Training \u00b7 Organizers</span>",
"target": [
".event[data-cat=\"training\"]:nth-child(6) > div:nth-child(2) > .pill"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 8.2pt (10.88px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "10.1pt (13.44px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"where\">Online \u00b7 6:00 PM ET \u00b7 State-specific breakout rooms</p>",
"target": [
".event[data-cat=\"training\"]:nth-child(6) > div:nth-child(2) > .where"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.1pt (13.44px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "11.5pt (15.36px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Circulator rules, signature validity windows, sheet-handling, and the disqualification grounds most likely to void a petition drive. Designed for organizers gathering signatures ahead of the November referendum cycle.</p>",
"target": [
".event[data-cat=\"training\"]:nth-child(6) > div:nth-child(2) > p:nth-child(4)"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 11.5pt (15.36px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#efebe2",
"contrastRatio": 3.08,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"sec testis\">",
"target": [
".testis"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.08 (foreground color: #a87f1f, background color: #efebe2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">From the Field</p>",
"target": [
".center > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.08 (foreground color: #a87f1f, background color: #efebe2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testi reveal in\">",
"target": [
".testi:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Tenant organizer, District 4</span>",
"target": [
".testi:nth-child(1) > .who > div > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testi reveal in\">",
"target": [
".testi:nth-child(2)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Director, regional legal aid clinic</span>",
"target": [
".testi:nth-child(2) > .who > div > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#ffffff",
"contrastRatio": 3.67,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<article class=\"testi reveal in\">",
"target": [
".testi:nth-child(3)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span>Coalition lead, Civic Futures Alliance</span>",
"target": [
".testi:nth-child(3) > .who > div > span"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.67 (foreground color: #a87f1f, background color: #ffffff, font size: 9.6pt (12.8px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-header stuck\" id=\"top\">",
"target": [
"#top"
]
},
{
"html": "<section class=\"sec testis\">",
"target": [
".testis"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#faq\" class=\"active\">FAQ</a>",
"target": [
".active[href$=\"#faq\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "9.0pt (12px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Questions & Answers</p>",
"target": [
"#faq > .container > .split > .in.reveal:nth-child(1) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "13.9pt (18.56px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"lede\">We field roughly nine hundred questions a month. These are the ones that recur most often \u2014 from first-time commenters to seasoned litigants.</p>",
"target": [
".split > .in.reveal:nth-child(1) > .lede"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>Public notice board \u2014 statutory posting requirements vary by jurisdiction</figcaption>",
"target": [
"#faq > .container > .split > .in.reveal:nth-child(1) > figure > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "12.8pt (17px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 12.8pt (17px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>",
"target": [
".faq-item:nth-child(1) > .faq-a > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 12.8pt (17px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#eeebe6",
"contrastRatio": 3.08,
"fontSize": "10.8pt (14.4px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header class=\"site-header stuck\" id=\"top\">",
"target": [
"#top"
]
},
{
"html": "<section class=\"sec donate\" id=\"donate\">",
"target": [
"#donate"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.08 (foreground color: #a87f1f, background color: #eeebe6, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#donate\" class=\"active\">Donate</a>",
"target": [
".active[href$=\"#donate\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.08 (foreground color: #a87f1f, background color: #eeebe6, font size: 10.8pt (14.4px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "9.0pt (12px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Legal Resources</p>",
"target": [
"#resources > .container > .split > .col-text.reveal.in > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>Case law library \u2014 Bench & Ballot legal desk, regional reading room</figcaption>",
"target": [
"#resources > .container > .split > .col-img.reveal.in > figure > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "9.0pt (12px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Policy Analysis & Research</p>",
"target": [
"#research > .container > .sec-head.reveal.in > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "13.9pt (18.56px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"lede\">",
"target": [
"#research > .container > .sec-head.reveal.in > .lede"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>Figure 4.2 \u2014 Distributional impact by congressional district, FY brief</figcaption>",
"target": [
".rev > .col-img.reveal.in > figure:nth-child(1) > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#efebe2",
"contrastRatio": 3.87,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"sec\" id=\"advocacy\" style=\"background:var(--paper-3);border-top:1px solid var(--line);border-bottom:1px solid var(--line);\">",
"target": [
"#advocacy"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>Neighborhood testimony night \u2014 organizing cohort, District 12</figcaption>",
"target": [
"#advocacy > .container > .split > .col-img.reveal.in > figure > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #6b7686, background color: #efebe2, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#efebe2",
"contrastRatio": 3.08,
"fontSize": "9.0pt (12px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<section class=\"sec\" id=\"advocacy\" style=\"background:var(--paper-3);border-top:1px solid var(--line);border-bottom:1px solid var(--line);\">",
"target": [
"#advocacy"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.08 (foreground color: #a87f1f, background color: #efebe2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Grassroots Organizing</p>",
"target": [
"#advocacy > .container > .split > .col-text.reveal.in > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.08 (foreground color: #a87f1f, background color: #efebe2, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "9.0pt (12px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Events, Hearings & Trainings</p>",
"target": [
"#events > .container > .sec-head.reveal.in > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "13.9pt (18.56px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"lede\">Public participation is a procedural right, not a courtesy. These are the sessions where testimony is entered, minutes are kept, and the positions that later become precedent are first put on the record.</p>",
"target": [
"#events > .container > .sec-head.reveal.in > .lede"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#a87f1f",
"bgColor": "#f7f4ee",
"contrastRatio": 3.34,
"fontSize": "9.0pt (12px)",
"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.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"eyebrow\">Questions & Answers</p>",
"target": [
"#faq > .container > .split > .reveal.in:nth-child(1) > .eyebrow"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.34 (foreground color: #a87f1f, background color: #f7f4ee, font size: 9.0pt (12px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "13.9pt (18.56px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p class=\"lede\">We field roughly nine hundred questions a month. These are the ones that recur most often \u2014 from first-time commenters to seasoned litigants.</p>",
"target": [
".split > .reveal.in:nth-child(1) > .lede"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 13.9pt (18.56px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#6b7686",
"bgColor": "#f7f4ee",
"contrastRatio": 4.19,
"fontSize": "9.6pt (12.8px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<figcaption>Public notice board \u2014 statutory posting requirements vary by jurisdiction</figcaption>",
"target": [
"#faq > .container > .split > .reveal.in:nth-child(1) > figure > figcaption"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #6b7686, background color: #f7f4ee, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 11839
},
{
"y": 576,
"height": 11839
},
{
"y": 1152,
"height": 11839
},
{
"y": 1728,
"height": 11839
},
{
"y": 2304,
"height": 11839
},
{
"y": 2880,
"height": 11839
},
{
"y": 3456,
"height": 11839
},
{
"y": 4032,
"height": 11839
},
{
"y": 4608,
"height": 11839
},
{
"y": 5184,
"height": 11839
},
{
"y": 5760,
"height": 11839
},
{
"y": 6336,
"height": 11839
},
{
"y": 6912,
"height": 11839
},
{
"y": 7488,
"height": 11839
},
{
"y": 8064,
"height": 11839
},
{
"y": 8640,
"height": 11839
},
{
"y": 9216,
"height": 11839
},
{
"y": 9792,
"height": 11839
},
{
"y": 10368,
"height": 11839
},
{
"y": 10944,
"height": 11839
},
{
"y": 11119,
"height": 11839
}
],
"scans": 22,
"max_states": 512,
"settle_ms": 5000,
"page_timeout_seconds": 150,
"layout_stability": "consecutive 100ms size samples within one CSS pixel",
"animation_settling": "finite animations present when scroll resources are ready finish or are cancelled",
"interactive_states": "not exercised",
"horizontal_scroll": "not exercised"
}
}
System Prompt
You are a lead web developer at a top digital agency, tasked with creating a one-page website for a new client based on the given specifications, delivered as an HTML file. First non-whitespace char '<', last non-whitespace char '>'. Use the following services to generate placeholder images where needed:
- placehold.co (text): https://placehold.co/[{w}x{h}|{size}][/{bg-color}/{text-color}]?text={text}&font=[lato|lora|montserrat|noto sans|open sans|oswald|playfair display|poppins|pt sans|raleway|roboto|source sans|source sans pro]
- picsum.photos (photos): https://picsum.photos/[{w}/{h}|{size}]?[grayscale][&blur={1-10}]
- pravatar.cc (avatars): https://i.pravatar.cc/{size}?u={identifier}
Choose sizes appropriate to layout.
User Prompt
Create a **complete, polished, production-quality** primary web page for a new client in the "Law, Government, & Politics" sector.
Your goal is to generate the full HTML code for a page that is not just functional but also visually compelling, content-rich, and feels like a finished product ready for launch.
**Client & Category:**
- Industry: "Law, Government, & Politics"
- Description: Legal information, political organizations, government affairs, and civic engagement resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Law, Government, & Politics" category.
2. **Define Page:** Determine the most effective primary page type (e.g., homepage, service landing page, category portal) to showcase this fictional entity.
3. **Design:** Develop an opinionated, modern, and professional layout. Make distinct choices about structure and flow.
**Content & Structure Requirements (Deliver a COMPLETE page):**
- **Overall:** The final page must feel substantial and complete, with realistic amounts of text (multiple paragraphs per section where appropriate, avoid single sentences), well-integrated placeholder images, and logical flow. It should look like a real website a business would proudly use.
- **HEADER:** Include the invented site name, tagline, a logo placeholder image, and a primary navigation bar. Ensure the navigation has **at least 5-7 clearly defined, relevant links** including: "Events", "Research", "Donate".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Law, Government, & Politics" category. Consider themes similar to: "Legal Resources", "Policy Analysis", "Grassroots Organizing".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "precedent", "legislative process", "referendum".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Share", "Join Advocacy", "Learn Rights".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Law, Government, & Politics" sector. Ideas similar but not limited to: "representative finder".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "legal resources", "trending issues", "election calendar".
- **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.