Meta Muse Spark 1.3 – Government
via Meta · Generated
- AIMAC Debt 21.50
- Cost $0.07
- Total Violations 9
- HTML Size 52 KB
- Em Dashes 18
Screenshot
View Live Page
Accessibility Issues Found
5 Critical 4 Serious
-
button-name critical 4 instances
Buttons must have discernible text
Example HTML
<button class="other" disabled=""></button> -
select-name critical 1 instance
Select element must have an accessible name
Example HTML
<select required="" style="padding:12px;border-radius:10px;border:0"><option value="">Select issue type...</option><option>Pothole / Street damage<... -
target-size serious 4 instances
All touch targets must be 24px large, or leave sufficient space
Example HTML
<a href="#services">Pay Utility Bill</a>
Artifacts
View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>City of Alderbrook | Transparent Government. Thriving Community.</title>
<meta name="description" content="Official portal for the City of Alderbrook. Pay bills, apply for permits, submit requests, find services, view public records, jobs and council meetings.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,serif,wght@9..144,600;9..144,700&family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
<style>
:root{
--navy:#0F2A44; --navy2:#0B1E32; --blue:#17599B; --blue-light:#E8F0F9; --gold:#C1962B; --gold-light:#FFF6DE;
--ink:#182234; --muted:#5B6B82; --line:#DDE5EE; --bg:#F4F6F9; --white:#fff; --green:#147A5A; --red:#B42318;
--radius:14px; --shadow:0 12px 32px rgba(15,42,68,.12); --shadow-sm:0 6px 18px rgba(15,42,68,.08);
--font:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif; --serif:'Fraunces',Georgia,serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.6}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.container{max-width:1240px;margin:0 auto;padding:0 24px}
.top-alert{background:var(--gold);color:#1A1405;font-size:.88rem;font-weight:600}
.top-alert .container{display:flex;align-items:center;gap:12px;padding:9px 24px}
.top-alert i{background:#00000022;width:28px;height:28px;display:grid;place-items:center;border-radius:50%}
.top-alert a{text-decoration:underline;font-weight:800}
.utility{background:var(--navy2);color:#CBD8E8;font-size:.82rem}
.utility .container{display:flex;justify-content:space-between;align-items:center;padding:7px 24px;gap:16px;flex-wrap:wrap}
.utility-left{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.utility a:hover{color:#fff}
.utility .pill{background:#ffffff14;border:1px solid #ffffff22;padding:3px 10px;border-radius:100px}
header.site{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--line)}
.header-main .container{display:flex;align-items:center;gap:18px;padding:14px 24px}
.brand{display:flex;align-items:center;gap:14px;flex:1}
.brand img{width:58px;height:58px;border-radius:12px}
.brand-name{line-height:1.1}
.brand-name strong{font-family:var(--serif);font-size:1.45rem;color:var(--navy);letter-spacing:-.02em;display:block}
.brand-name span{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--blue);font-weight:700}
.brand-tag{font-size:.82rem;color:var(--muted);border-left:2px solid var(--line);padding-left:14px;margin-left:4px;max-width:210px}
.header-actions{display:flex;gap:10px;align-items:center}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;font-size:.92rem;padding:12px 20px;border-radius:10px;border:1px solid transparent;cursor:pointer;transition:.2s}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--navy)}
.btn-gold{background:var(--gold);color:#191300}
.btn-gold:hover{filter:brightness(.95)}
.btn-outline{background:#fff;border-color:var(--line);color:var(--navy)}
.btn-outline:hover{border-color:var(--navy)}
.btn-dark{background:var(--navy);color:#fff}
nav.mainnav{background:var(--navy);color:#E6EEF7}
nav.mainnav .container{display:flex;align-items:center;gap:4px}
.nav-links{display:flex;flex:1;overflow-x:auto}
.nav-links a{padding:14px 16px;font-size:.9rem;font-weight:600;white-space:nowrap;opacity:.92;border-bottom:3px solid transparent}
.nav-links a:hover,.nav-links a.active{background:#ffffff10;opacity:1;border-bottom-color:var(--gold)}
.search-mini{display:flex;align-items:center;background:#ffffff14;border:1px solid #ffffff22;border-radius:8px;margin:8px 0 8px 12px;overflow:hidden;min-width:220px}
.search-mini input{background:transparent;border:0;color:#fff;padding:9px 12px;outline:0;width:100%}
.search-mini input::placeholder{color:#B9C9DE}
.search-mini button{background:var(--gold);border:0;padding:9px 14px;cursor:pointer;font-weight:800}
.hamburger{display:none;background:transparent;border:0;color:#fff;font-size:1.4rem;padding:12px}
.hero{position:relative;background:var(--navy);color:#fff;overflow:hidden}
.hero-bg{position:absolute;inset:0}
.hero-bg img{width:100%;height:100%;object-fit:cover;opacity:.38}
.hero-bg:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg, rgba(11,30,50,.92) 30%, rgba(11,30,50,.55) 60%, rgba(11,30,50,.25) 100%)}
.hero .container{position:relative;z-index:2;display:grid;grid-template-columns:1.05fr .95fr;gap:40px;padding:64px 24px 54px}
.eyebrow{display:inline-flex;align-items:center;gap:8px;background:#ffffff18;border:1px solid #ffffff2e;color:#FFE9A8;font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:7px 14px;border-radius:100px;margin-bottom:16px}
.hero h1{font-family:var(--serif);font-size:3.1rem;line-height:1.05;letter-spacing:-.02em;margin-bottom:16px}
.hero h1 em{color:var(--gold);font-style:normal}
.hero p.lead{font-size:1.12rem;color:#D8E4F3;max-width:560px;margin-bottom:22px}
.hero-search{background:#fff;border-radius:16px;padding:10px;box-shadow:var(--shadow);margin-bottom:18px}
.hero-search-row{display:flex;gap:10px}
.hero-search input{flex:1;border:0;outline:0;padding:14px 16px;font-size:1rem;border-radius:10px;background:#F2F5F9}
.hero-quick{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.hero-quick a{background:#ffffff14;border:1px solid #ffffff2b;color:#fff;font-size:.86rem;font-weight:600;padding:9px 14px;border-radius:100px}
.hero-quick a:hover{background:var(--gold);color:#191300;border-color:var(--gold)}
.hero-card{background:#fff;color:var(--ink);border-radius:18px;overflow:hidden;box-shadow:var(--shadow)}
.hero-card-top{padding:22px 22px 16px;display:flex;justify-content:space-between;align-items:center}
.hero-card-top h3{font-size:1.05rem}
.live-dot{display:flex;align-items:center;gap:8px;font-size:.8rem;font-weight:700;color:var(--green)}
.live-dot span{width:9px;height:9px;background:#18A058;border-radius:50%;box-shadow:0 0 0 6px #18A05822;animation:pulse 1.8s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 2px #18A05833}}
.hero-services{padding:0 12px 12px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hs{display:flex;gap:12px;align-items:flex-start;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:14px}
.hs i{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;background:var(--navy);color:#fff;border-radius:10px}
.hs strong{font-size:.9rem;display:block;line-height:1.3}
.hs small{color:var(--muted);font-size:.8rem}
.hs:hover{border-color:var(--blue);background:var(--blue-light)}
.hero-card-foot{background:var(--navy);color:#D7E3F2;display:flex;justify-content:space-between;align-items:center;padding:14px 22px;font-size:.86rem}
.stats-bar{background:#fff;border-bottom:1px solid var(--line)}
.stats-bar .container{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.stat{padding:20px 24px;border-right:1px solid var(--line);display:flex;gap:14px;align-items:center}
.stat:last-child{border:0}
.stat b{font-size:1.6rem;font-family:var(--serif);color:var(--navy);display:block;line-height:1}
.stat span{font-size:.82rem;color:var(--muted);font-weight:600}
.stat i{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:var(--blue-light);color:var(--blue);font-size:1.2rem}
.section{padding:64px 0}
.section-head{max-width:760px;margin-bottom:32px}
.section-head h2{font-family:var(--serif);font-size:2.2rem;line-height:1.15;color:var(--navy);margin:10px 0 12px;letter-spacing:-.02em}
.section-head p{color:var(--muted);font-size:1.02rem}
.kicker{font-size:.78rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--blue)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.svc-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;transition:.2s}
.svc-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--blue)}
.svc-card .icon{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font-size:1.3rem;color:#fff;margin-bottom:16px}
.svc-card h3{font-size:1.08rem;margin-bottom:8px;color:var(--navy)}
.svc-card p{font-size:.92rem;color:var(--muted);margin-bottom:16px}
.svc-card a.link{font-weight:800;color:var(--blue);font-size:.9rem}
.svc-card a.link:hover{text-decoration:underline}
.layout{display:grid;grid-template-columns:1fr 360px;gap:28px;align-items:start}
.feature-article{background:#fff;border-radius:18px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.feature-article img{height:340px;width:100%;object-fit:cover}
.feature-body{padding:28px 30px}
.meta{display:flex;gap:12px;flex-wrap:wrap;font-size:.8rem;font-weight:700;margin-bottom:12px}
.meta span{background:var(--blue-light);color:var(--blue);padding:5px 12px;border-radius:100px}
.meta span.gold{background:var(--gold-light);color:#7A5E0D}
.feature-body h3{font-family:var(--serif);font-size:1.7rem;color:var(--navy);margin-bottom:12px;line-height:1.25}
.feature-body p{color:#34465F;margin-bottom:14px;font-size:.98rem}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}
.mini-card{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:18px;display:flex;gap:14px}
.mini-card img{width:110px;height:90px;object-fit:cover;border-radius:10px;flex:0 0 110px}
.mini-card h4{font-size:.95rem;color:var(--navy);margin-bottom:6px}
.mini-card p{font-size:.84rem;color:var(--muted)}
aside.sidebar{display:flex;flex-direction:column;gap:18px}
.side-box{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow-sm)}
.side-box header{padding:16px 20px;background:var(--navy);color:#fff;display:flex;justify-content:space-between;align-items:center}
.side-box header h4{font-size:.95rem;letter-spacing:.02em}
.side-box header a{font-size:.78rem;color:var(--gold);font-weight:800}
.side-list{padding:8px 20px 16px}
.side-list li{list-style:none;padding:12px 0;border-bottom:1px solid var(--line);font-size:.9rem}
.side-list li:last-child{border:0}
.side-list small{display:block;color:var(--muted);font-size:.78rem;font-weight:600;margin-top:3px}
.ord-num{display:inline-block;background:var(--bg);border:1px solid var(--line);font-size:.72rem;font-weight:800;padding:2px 8px;border-radius:6px;margin-right:8px;color:var(--navy)}
.press-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.press-item:last-child{border:0}
.press-item img{width:64px;height:64px;border-radius:10px;object-fit:cover}
.budget-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--line);font-size:.9rem}
.budget-row:last-child{border:0}
.calendar-section{background:var(--navy);color:#EAF0F8;border-radius:20px;overflow:hidden}
.calendar-section .container{display:grid;grid-template-columns:420px 1fr;gap:0;padding:0}
.cal-left{padding:36px 32px;background:var(--navy2);border-right:1px solid #ffffff14}
.cal-left h2{font-family:var(--serif);font-size:1.9rem;margin:10px 0 12px}
.cal-left p{color:#A9BDD6;font-size:.94rem;margin-bottom:20px}
.cal-grid{background:#ffffff0F;border:1px solid #ffffff1c;border-radius:14px;padding:16px}
.cal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-weight:800}
.cal-head button{background:#ffffff18;border:0;color:#fff;width:32px;height:32px;border-radius:8px;cursor:pointer}
.cal-days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;text-align:center;font-size:.72rem;font-weight:800;color:#8EA6C2;margin-bottom:6px}
.cal-dates{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-dates button{aspect-ratio:1;border:0;border-radius:9px;background:transparent;color:#fff;font-weight:700;cursor:pointer;font-size:.88rem;position:relative}
.cal-dates button.other{opacity:.25}
.cal-dates button.has{background:#ffffff18;border:1px solid #ffffff2a}
.cal-dates button.has:after{content:"";position:absolute;bottom:6px;left:50%;transform:translateX(-50%);width:6px;height:6px;background:var(--gold);border-radius:50%}
.cal-dates button.active{background:var(--gold);color:#191300}
.cal-right{padding:36px}
.tabs{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap}
.tabs button{border:1px solid #ffffff26;background:transparent;color:#fff;padding:9px 16px;border-radius:100px;font-weight:700;font-size:.86rem;cursor:pointer}
.tabs button.active{background:#fff;color:var(--navy)}
.meeting-card{background:#fff;color:var(--ink);border-radius:14px;padding:20px 22px;margin-bottom:14px;display:flex;gap:16px;align-items:flex-start}
.meeting-date{background:var(--navy);color:#fff;border-radius:12px;text-align:center;padding:10px 14px;min-width:74px}
.meeting-date b{font-size:1.4rem;display:block;line-height:1}
.meeting-date span{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}
.meeting-card h4{color:var(--navy);margin-bottom:4px}
.meeting-card p{font-size:.88rem;color:var(--muted);margin-bottom:10px}
.chip{display:inline-block;font-size:.75rem;font-weight:800;padding:4px 10px;border-radius:100px;margin-right:6px}
.chip-blue{background:var(--blue-light);color:var(--blue)} .chip-green{background:#DFF5E9;color:#0E6B4A} .chip-gold{background:var(--gold-light);color:#7A5E0D}
.split{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.info-card{background:#fff;border-radius:18px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-sm);display:flex;flex-direction:column}
.info-card img{height:220px;object-fit:cover;width:100%}
.info-body{padding:26px}
.info-body h3{font-family:var(--serif);font-size:1.5rem;color:var(--navy);margin-bottom:10px}
.info-body p{font-size:.94rem;color:#34465F;margin-bottom:12px}
.check-list{list-style:none;margin:14px 0}
.check-list li{padding:8px 0 8px 30px;position:relative;font-size:.9rem;color:#2B3B55}
.check-list li:before{content:"✓";position:absolute;left:0;top:8px;width:22px;height:22px;background:#E6F4EC;color:var(--green);border-radius:50%;display:grid;place-items:center;font-size:.75rem;font-weight:900}
.transparency{background:#fff;border:1px solid var(--line);border-radius:18px;padding:30px;display:grid;grid-template-columns:1.1fr 1fr;gap:30px;align-items:center}
.bar{margin:14px 0}
.bar-top{display:flex;justify-content:space-between;font-size:.86rem;font-weight:700;margin-bottom:6px}
.bar-track{background:#EAEFF5;border-radius:100px;height:10px;overflow:hidden}
.bar-fill{height:100%;background:linear-gradient(90deg,var(--blue),#2E8BDA);border-radius:100px}
.testimonials{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.t-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:var(--shadow-sm)}
.t-card .stars{color:var(--gold);margin-bottom:12px;letter-spacing:2px}
.t-card p{font-size:.93rem;color:#2E3E57;margin-bottom:18px;font-style:italic}
.t-who{display:flex;gap:12px;align-items:center}
.t-who img{width:48px;height:48px;border-radius:50%}
.t-who strong{font-size:.9rem;display:block;color:var(--navy)}
.t-who small{color:var(--muted);font-size:.8rem}
.faq-wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:28px;align-items:start}
.faq-item{background:#fff;border:1px solid var(--line);border-radius:12px;margin-bottom:12px;overflow:hidden}
.faq-q{width:100%;background:#fff;border:0;text-align:left;padding:18px 20px;font-weight:700;font-size:.96rem;color:var(--navy);cursor:pointer;display:flex;justify-content:space-between;gap:12px;align-items:center}
.faq-a{max-height:0;overflow:hidden;transition:max-height .3s ease;background:#F8FAFC}
.faq-a p{padding:0 20px 18px;font-size:.92rem;color:#3A4C66}
.faq-item.open .faq-a{max-height:300px}
.faq-item.open .faq-q i{transform:rotate(45deg)}
.faq-q i{background:var(--blue-light);color:var(--blue);width:28px;height:28px;display:grid;place-items:center;border-radius:50%;transition:.2s;flex:0 0 28px}
.jobs-cta{background:linear-gradient(135deg,var(--blue) 0%, var(--navy) 70%);border-radius:18px;color:#fff;padding:32px;display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center}
.newsletter{background:var(--gold-light);border:1px solid #E8D48A;border-radius:18px;padding:30px;display:grid;grid-template-columns:1fr 380px;gap:24px;align-items:center}
.newsletter form{display:flex;gap:10px}
.newsletter input{flex:1;padding:13px 16px;border-radius:10px;border:1px solid #D9C67A;outline:0}
footer{background:var(--navy2);color:#B9C9DE;padding:56px 0 0;margin-top:64px}
.foot-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:32px;padding-bottom:36px}
.foot-grid h5{color:#fff;font-size:.9rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:16px}
.foot-grid a{display:block;padding:5px 0;font-size:.9rem}
.foot-grid a:hover{color:#fff;text-decoration:underline}
.foot-brand{display:flex;gap:12px;align-items:center;margin-bottom:14px}
.socials{display:flex;gap:10px;margin-top:16px}
.socials a{width:38px;height:38px;display:grid;place-items:center;background:#ffffff12;border:1px solid #ffffff1e;border-radius:10px}
.socials a:hover{background:var(--gold);color:#191300}
.foot-bottom{border-top:1px solid #ffffff14;padding:18px 0;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:.82rem}
.back-top{position:fixed;right:22px;bottom:22px;width:48px;height:48px;border-radius:12px;background:var(--navy);color:#fff;border:0;cursor:pointer;box-shadow:var(--shadow);display:none;z-index:60}
@media(max-width:1020px){
.hero .container,.layout,.calendar-section .container,.split,.transparency,.faq-wrap,.newsletter,.jobs-cta{grid-template-columns:1fr}
.grid-3,.testimonials{grid-template-columns:1fr 1fr}
.grid-4{grid-template-columns:1fr 1fr}
.stats-bar .container{grid-template-columns:1fr 1fr}
.stat{border-bottom:1px solid var(--line)}
.foot-grid{grid-template-columns:1fr 1fr}
.brand-tag{display:none}
}
@media(max-width:680px){
.hero h1{font-size:2.15rem}
.grid-3,.grid-4,.testimonials,.two-col{grid-template-columns:1fr}
nav.mainnav .container{flex-wrap:wrap}
.hamburger{display:block}
.nav-links{display:none;width:100%;flex-direction:column}
.nav-links.open{display:flex}
.search-mini{width:100%;margin-left:0}
.utility,.header-actions .btn-outline{display:none}
.foot-grid{grid-template-columns:1fr}
.hero-search-row{flex-direction:column}
.newsletter form{flex-direction:column}
}
</style>
</head>
<body>
<div class="top-alert">
<div class="container"><i class="fa-solid fa-triangle-exclamation"></i><span> TRAFFIC ADVISORY: Elm Street bridge lane closure Oct 6–18 for resurfacing. <a href="#services">View detour map & Public Works updates</a></span></div>
</div>
<div class="utility">
<div class="container">
<div class="utility-left"><span><i class="fa-solid fa-phone"></i> 311 Citizen Hotline: (555) 014-2800</span><span><i class="fa-solid fa-clock"></i> City Hall: Mon–Fri 8am–5pm</span><a class="pill" href="#emergency"><i class="fa-solid fa-siren"></i> Emergency? Dial 911</a></div>
<div><a href="#">English <i class="fa-solid fa-caret-down"></i></a> | <a href="#">Español</a> | <a href="#">Accessibility</a> | <a href="#">Translate</a></div>
</div>
</div>
<header class="site">
<div class="header-main"><div class="container">
<div class="brand">
<img src="https://placehold.co/120x120/0F2A44/FFFFFF?text=AB&font=montserrat" alt="City of Alderbrook seal">
<div class="brand-name"><strong>City of Alderbrook</strong><span>Official Government Portal</span></div>
<div class="brand-tag">Transparent Government. Thriving Community.</div>
</div>
<div class="header-actions">
<a class="btn btn-outline" href="#records"><i class="fa-regular fa-folder-open"></i> Public Records</a>
<a class="btn btn-gold" href="#report"><i class="fa-solid fa-pen-to-square"></i> Submit Request</a>
</div>
</div></div>
<nav class="mainnav"><div class="container">
<button class="hamburger" id="menuBtn" aria-label="Menu"><i class="fa-solid fa-bars"></i></button>
<div class="nav-links" id="navLinks">
<a href="#" class="active">Home</a>
<a href="#services">Services</a>
<a href="#departments">Departments</a>
<a href="#meetings">Council & Meetings</a>
<a href="#records">Public Records</a>
<a href="#jobs">Jobs</a>
<a href="#news">News & Events</a>
<a href="#contact">Contact</a>
</div>
<div class="search-mini"><input type="search" id="navSearch" placeholder="Search services, permits..."><button aria-label="Search"><i class="fa-solid fa-magnifying-glass"></i></button></div>
</div></nav>
</header>
<section class="hero">
<div class="hero-bg"><img src="https://picsum.photos/seed/alderbrook-hall/1600/800" alt="Alderbrook civic district"></div>
<div class="container">
<div>
<div class="eyebrow"><i class="fa-solid fa-landmark"></i> Incorporated 1912 • Population 84,200</div>
<h1>Your city services, <em>simplified</em> and open to all.</h1>
<p class="lead">Welcome to the official portal for the City of Alderbrook. Pay utility bills, apply for permits, track public works, request public records, and connect directly with constituent services — all in one trusted place.</p>
<div class="hero-search">
<div class="hero-search-row"><input id="serviceInput" type="text" placeholder="How can we help? Try “trash pickup, marriage license, pothole...”"><button class="btn btn-primary" onclick="filterServices()"><i class="fa-solid fa-magnifying-glass"></i> Find Services</button></div>
<div class="hero-quick"><a href="#services">Pay Utility Bill</a><a href="#services">Apply for Permit</a><a href="#report">Report Pothole</a><a href="#records">FOIA Request</a><a href="#jobs">City Jobs</a></div>
</div>
<p style="font-size:.85rem;color:#B9C9DE"><i class="fa-solid fa-shield-halved"></i> Secure .gov portal • No account needed for most services • ADA & language access supported</p>
</div>
<div class="hero-card">
<div class="hero-card-top"><h3>311 — I Want To...</h3><span class="live-dot"><span></span> OFFICES OPEN</span></div>
<div class="hero-services">
<a class="hs" href="#services"><i class="fa-solid fa-file-circle-plus"></i><div><strong>Apply for Permit</strong><small>Building, fence, event</small></div></a>
<a class="hs" href="#services"><i class="fa-solid fa-money-bill-wave"></i><div><strong>Pay a Bill</strong><small>Water, parking, taxes</small></div></a>
<a class="hs" href="#report"><i class="fa-solid fa-screwdriver-wrench"></i><div><strong>Submit Request</strong><small>Pothole, lights, graffiti</small></div></a>
<a class="hs" href="#records"><i class="fa-solid fa-box-archive"></i><div><strong>Public Records</strong><small>FOIA, budgets, maps</small></div></a>
</div>
<div class="hero-card-foot"><span><i class="fa-solid fa-circle-check" style="color:#7EE2A8"></i> Avg. request resolved in 2.4 days</span><a href="#services" style="color:var(--gold);font-weight:800">All 42 services →</a></div>
</div>
</div>
</section>
<div class="stats-bar"><div class="container">
<div class="stat"><i class="fa-solid fa-users"></i><div><b>84,200</b><span>Residents served across 6 districts</span></div></div>
<div class="stat"><i class="fa-solid fa-hand-holding-dollar"></i><div><b>$186M</b><span>FY 2026 adopted budget, open book</span></div></div>
<div class="stat"><i class="fa-solid fa-award"></i><div><b>A+ Rating</b><span>Sunshine Transparency 4 years running</span></div></div>
<div class="stat"><i class="fa-solid fa-headset"></i><div><b>96% Sat.</b><span>Constituent services approval</span></div></div>
</div></div>
<main class="container">
<!-- SERVICES -->
<section class="section" id="services" style="padding-bottom:20px">
<div class="section-head"><div class="kicker">Citizen Services Hub</div><h2>Find services fast — without the runaround</h2><p>From trash schedules to business licenses, our constituent services team has streamlined the 40+ most-requested tasks into plain language with clear timelines, fees, and tracking. Start with a category below, or use search to filter instantly.</p></div>
<div style="margin-bottom:18px;display:flex;gap:10px;flex-wrap:wrap" id="filterBtns">
<button class="btn btn-dark" data-f="all">All</button>
<button class="btn btn-outline" data-f="permits">Permits & Licenses</button>
<button class="btn btn-outline" data-f="utilities">Utilities & Billing</button>
<button class="btn btn-outline" data-f="safety">Safety & Emergency</button>
<button class="btn btn-outline" data-f="records">Records & Voting</button>
</div>
<div class="grid-4" id="serviceGrid">
<div class="svc-card" data-cat="permits"><div class="icon" style="background:#17599B"><i class="fa-solid fa-house-chimney"></i></div><h3>Building & Trade Permits</h3><p>Apply for residential and commercial permits, schedule inspections, and track plan review. Most simple permits approved in 3–5 business days.</p><a class="link" href="#">Apply for Permit →</a></div>
<div class="svc-card" data-cat="utilities"><div class="icon" style="background:#147A5A"><i class="fa-solid fa-droplet"></i></div><h3>Water, Sewer & Trash</h3><p>Start or stop service, pay utility bills, view pickup calendars, request bulky-item pickup, and report missed collections online.</p><a class="link" href="#">Pay Utility Bill →</a></div>
<div class="svc-card" data-cat="permits"><div class="icon" style="background:#7A3E1F"><i class="fa-solid fa-store"></i></div><h3>Business Licenses</h3><p>Register a new business, renew annual licenses, apply for food truck, home occupation, and short-term rental permits with step-by-step help.</p><a class="link" href="#">Start Application →</a></div>
<div class="svc-card" data-cat="safety"><div class="icon" style="background:#B42318"><i class="fa-solid fa-truck-medical"></i></div><h3>Emergency Preparedness</h3><p>Sign up for AlertAlderbrook texts, view evacuation routes, find warming centers, and download the family emergency planning guide.</p><a class="link" href="#">Get Alerts →</a></div>
<div class="svc-card" data-cat="records"><div class="icon" style="background:#4A2E8A"><i class="fa-solid fa-scale-balanced"></i></div><h3>Public Records & FOIA</h3><p>Submit a FOIA request, search council minutes, ordinances, budgets, and police reports. Responses within 5 business days by law.</p><a class="link" href="#records">Submit Request →</a></div>
<div class="svc-card" data-cat="utilities"><div class="icon" style="background:#0E6B7A"><i class="fa-solid fa-road"></i></div><h3>Streets & Public Works</h3><p>Report potholes, broken streetlights, sidewalk damage, or drainage issues. Track your 311 ticket live with photo updates from crews.</p><a class="link" href="#report">Report Issue →</a></div>
<div class="svc-card" data-cat="records"><div class="icon" style="background:#1A6B3C"><i class="fa-solid fa-id-card"></i></div><h3>Voting & Registration</h3><p>Register to vote, find your precinct, request mail ballots, become a poll worker, and view sample ballots for Nov 3 General Election.</p><a class="link" href="#">Find Polling Place →</a></div>
<div class="svc-card" data-cat="safety"><div class="icon" style="background:#5B3B00"><i class="fa-solid fa-paw"></i></div><h3>Animal & Code Enforcement</h3><p>License pets, report code violations, noise, overgrowth, or abandoned vehicles. Anonymous reporting available for all violations.</p><a class="link" href="#">File Report →</a></div>
</div>
</section>
<!-- DEPARTMENTS + SIDEBAR -->
<section class="section" id="departments" style="padding-top:28px">
<div class="section-head"><div class="kicker">Departments & Public Works in Action</div><h2>What your city is building this month</h2><p>Our Public Works, Parks, and Community Development departments publish weekly progress reports. Here’s the latest — with budgets, timelines, and who to contact with questions.</p></div>
<div class="layout">
<div>
<article class="feature-article">
<img src="https://picsum.photos/seed/alderbrook-works/1000/520" alt="Public works construction in Alderbrook">
<div class="feature-body">
<div class="meta"><span>Public Works</span><span class="gold">Capital Project • $4.2M</span><span style="background:#EDF2F7;color:#4A5B75">Updated Oct 1, 2026</span></div>
<h3>Riverwalk Trail Extension & Elm Street Complete Streets Project enters Phase 2</h3>
<p>Phase 2 of our voter-approved 2024 Mobility Bond is now underway. Crews are widening sidewalks to 10 feet, adding protected bike lanes, 84 new shade trees, and ADA-accessible crossings from 3rd to 11th Street. The Riverwalk Trail will connect North Park to the Transit Center, creating a continuous 4.6-mile car-free corridor for walkers, runners, and commuters.</p>
<p>Night and weekend work is scheduled to minimize business disruption, and all local storefronts remain open with signed detours. Constituent services staff hold open office hours every Thursday at the Library Annex to answer questions, review public records related to bidding, and help businesses apply for temporary signage permits. Completion is expected March 2027, on budget and two weeks ahead of the original baseline.</p>
<div class="two-col">
<div class="mini-card"><img src="https://picsum.photos/seed/alder-parks/300/220" alt="Park"><div><h4>Parks: 12 playgrounds renovated</h4><p>New inclusive equipment, shade sails, and water fountains finished district-wide.</p></div></div>
<div class="mini-card"><img src="https://picsum.photos/seed/alder-water/300/220" alt="Water plant"><div><h4>Utilities: Lead line replacement</h4><p>1,240 service lines replaced free to homeowners under federal grant.</p></div></div>
</div>
<div style="display:flex;gap:10px;margin-top:20px;flex-wrap:wrap"><a class="btn btn-primary" href="#">View Project Dashboard</a><a class="btn btn-outline" href="#">Contact Project Manager</a></div>
</div>
</article>
</div>
<aside class="sidebar" id="news">
<div class="side-box"><header><h4><i class="fa-solid fa-gavel"></i> Recent Ordinances</h4><a href="#">All →</a></header><ul class="side-list">
<li><span class="ord-num">ORD 2026-41</span> Short-term rental licensing update — second reading passed 6-1.<small>Adopted Sept 22, 2026 • Effective Nov 1</small></li>
<li><span class="ord-num">ORD 2026-38</span> Water conservation Stage 1 voluntary measures.<small>Adopted Sept 9, 2026 • Public Works</small></li>
<li><span class="ord-num">ORD 2026-35</span> FY 2026 budget amendment for Fire Station #4.<small>Adopted Aug 26, 2026 • $2.8M</small></li>
</ul></div>
<div class="side-box"><header><h4><i class="fa-solid fa-bullhorn"></i> Press Releases</h4><a href="#">Archive →</a></header><div class="side-list">
<div class="press-item"><img src="https://picsum.photos/seed/press1/140/140" alt="press"><div><strong style="font-size:.88rem">City launches free composting pilot for 2,000 households</strong><br><small>Sept 29, 2026 • Public Works • 2 min read</small></div></div>
<div class="press-item"><img src="https://picsum.photos/seed/press2/140/140" alt="press"><div><strong style="font-size:.88rem">Alderbrook earns AAA bond rating, saves $1.1M</strong><br><small>Sept 24, 2026 • Finance • 3 min read</small></div></div>
</div></div>
<div class="side-box"><header><h4><i class="fa-solid fa-chart-pie"></i> Budget Reports</h4><a href="#">Open Data →</a></header><div class="side-list">
<div class="budget-row"><span><i class="fa-regular fa-file-pdf" style="color:var(--red)"></i> FY 2026 Adopted Budget (PDF)</span><a href="#" style="font-weight:800;color:var(--blue)">Download</a></div>
<div class="budget-row"><span><i class="fa-regular fa-file-excel" style="color:var(--green)"></i> Checkbook: August spending</span><a href="#" style="font-weight:800;color:var(--blue)">View</a></div>
<div class="budget-row"><span><i class="fa-solid fa-magnifying-glass-chart" style="color:var(--blue)"></i> Capital Projects Tracker</span><a href="#" style="font-weight:800;color:var(--blue)">Explore</a></div>
</div></div>
</aside>
</div>
</section>
</main>
<!-- INTERACTIVE CALENDAR -->
<section class="section" id="meetings" style="padding-top:0"><div class="container">
<div class="calendar-section"><div class="container" style="max-width:none">
<div class="cal-left">
<div class="kicker" style="color:var(--gold)">Council & Boards • Interactive</div>
<h2>Meeting calendar & agendas</h2>
<p>All council, planning, and board meetings are open to the public, streamed live, and archived with minutes. Select a highlighted date to view agenda, location, and how to give public comment.</p>
<div class="cal-grid">
<div class="cal-head"><button id="prevM">‹</button><span id="calTitle">October 2026</span><button id="nextM">›</button></div>
<div class="cal-days"><span>SU</span><span>MO</span><span>TU</span><span>WE</span><span>TH</span><span>FR</span><span>SA</span></div>
<div class="cal-dates" id="calDates"></div>
</div>
<p style="margin-top:14px;font-size:.8rem"><i class="fa-solid fa-circle-info"></i> Need accommodation? Call Clerk at (555) 014-2810 48 hrs in advance.</p>
</div>
<div class="cal-right">
<div class="tabs"><button class="active" data-tab="all">All Meetings</button><button data-tab="council">City Council</button><button data-tab="planning">Planning & Zoning</button><button data-tab="community">Community</button></div>
<div id="meetingList"></div>
<div style="background:#ffffff14;border:1px solid #ffffff22;border-radius:12px;padding:16px 18px;font-size:.88rem;color:#D3E0F1"><strong style="color:#fff">How to participate:</strong> Attend in person at Council Chambers (200 Civic Plaza), join via Zoom, or submit written comment by noon on meeting day to <u>clerk@alderbrook.gov</u>. Public comment is 3 minutes per speaker. Agendas posted 72 hours prior per open meetings law.</div>
</div>
</div></div>
</div></section>
<main class="container">
<!-- EMERGENCY + RECORDS -->
<section class="section" id="emergency" style="padding-top:8px">
<div class="split">
<div class="info-card"><img src="https://picsum.photos/seed/alder-fire/800/440" alt="Emergency services"><div class="info-body">
<div class="kicker">Emergency Services • Fire • Police • EMS</div><h3>Help is always minutes away — and preparedness starts with you</h3>
<p>Alderbrook Fire-Rescue operates 4 stations with 92 career firefighters, paramedics, and wildfire crews; Alderbrook Police provides 24/7 patrol, community policing, and a co-responder mental health unit. Average 911 response is 5:42 — among the fastest in the region.</p>
<ul class="check-list"><li><strong>AlertAlderbrook:</strong> text ALDER to 888777 for severe weather, boil notices & road closures</li><li><strong>Community paramedicine:</strong> free blood-pressure checks every Tuesday at Senior Center</li><li><strong>Non-emergency dispatch:</strong> (555) 014-2900 for noise, parking & welfare checks</li></ul>
<div style="display:flex;gap:10px;flex-wrap:wrap;margin-top:8px"><a class="btn btn-dark" href="#">Find Services: Safety</a><a class="btn btn-outline" href="#">Fire Station Tour Signup</a></div>
</div></div>
<div class="info-card" id="records"><img src="https://picsum.photos/seed/alder-records/800/440" alt="City clerk records"><div class="info-body">
<div class="kicker">Public Records • FOIA • Transparency</div><h3>Your right to know, honored in days — not months</h3>
<p>Every ordinance, budget, permit, and email is a public record. Our Clerk’s Office processes FOIA requests with a median turnaround of 2.1 days. Search our open portal first — over 18,000 documents are already published, from council voting histories to restaurant inspections.</p>
<ul class="check-list"><li><strong>FOIA request online:</strong> no fee for first 2 hours; status tracking by email & SMS</li><li><strong>Constituent services advocates:</strong> help navigating permits, appeals & landlord issues</li><li><strong>Data hub:</strong> crime maps, pothole repairs, building permits & budget visualized</li></ul>
<div style="display:flex;gap:10px;flex-wrap:wrap;margin-top:8px"><a class="btn btn-primary" href="#">Submit FOIA Request</a><a class="btn btn-outline" href="#">Search Open Data</a></div>
</div></div>
</div>
<!-- TRANSPARENCY -->
<section class="section" style="padding-bottom:0">
<div class="transparency">
<div><div class="kicker">Open Budget Dashboard</div><h2 style="font-family:var(--serif);color:var(--navy);font-size:1.9rem;margin:8px 0 10px">See exactly where every tax dollar goes</h2><p style="color:var(--muted);font-size:.95rem;margin-bottom:8px">The FY 2026 $186M general fund was adopted after 6 public hearings and 1,400 resident survey responses. Public safety and streets represent 58% of spending. Independent audit: clean opinion, zero findings.</p>
<div class="bar"><div class="bar-top"><span>Public Safety (Police, Fire, EMS)</span><span>34%</span></div><div class="bar-track"><div class="bar-fill" style="width:34%"></div></div></div>
<div class="bar"><div class="bar-top"><span>Public Works & Utilities</span><span>24%</span></div><div class="bar-track"><div class="bar-fill" style="width:24%"></div></div></div>
<div class="bar"><div class="bar-top"><span>Parks, Library & Community</span><span>18%</span></div><div class="bar-track"><div class="bar-fill" style="width:18%"></div></div></div>
<div class="bar"><div class="bar-top"><span>Administration & Reserves</span><span>24%</span></div><div class="bar-track"><div class="bar-fill" style="width:24%;background:linear-gradient(90deg,var(--gold),#E8C84A)"></div></div></div>
</div>
<div style="background:var(--navy);color:#fff;border-radius:14px;padding:26px">
<h3 style="font-family:var(--serif);margin-bottom:10px">Report a concern in 60 seconds</h3>
<p style="font-size:.9rem;color:#B9C9DE;margin-bottom:16px" id="report">311 works 24/7 online, by phone, or text. Photo upload, GPS location, and live crew tracking included.</p>
<form id="reqForm" onsubmit="return submit311(event)" style="display:grid;gap:10px">
<select required style="padding:12px;border-radius:10px;border:0"><option value="">Select issue type...</option><option>Pothole / Street damage</option><option>Missed trash / recycling</option><option>Streetlight outage</option><option>Code violation</option><option>Water leak</option></select>
<input required placeholder="Street address or intersection" style="padding:12px;border-radius:10px;border:0">
<textarea placeholder="Describe the issue (optional)" rows="3" style="padding:12px;border-radius:10px;border:0"></textarea>
<button class="btn btn-gold" type="submit">Submit Request <i class="fa-solid fa-arrow-right"></i></button>
<p id="reqMsg" style="font-size:.85rem;color:#7EE2A8;display:none">✓ Request #311-88412 received! Crew assigned — track by text.</p>
</form>
</div>
</div>
</section>
<!-- TESTIMONIALS -->
<section class="section" id="voices">
<div class="section-head"><div class="kicker">Resident Voices</div><h2>Neighbors helping shape City Hall</h2><p>From small business owners to new parents, Alderbrook residents use constituent services every day. Here’s what they say about working with our teams.</p></div>
<div class="testimonials">
<div class="t-card"><div class="stars">★★★★★</div><p>“I applied for a home renovation permit online Sunday night and had approval by Wednesday. The inspector even called to walk me through setbacks. Easiest government experience I’ve ever had.”</p><div class="t-who"><img src="https://i.pravatar.cc/96?u=alder1" alt="resident"><div><strong>Marisol Vega</strong><small>Homeowner, District 3 • Permit #2026-1148</small></div></div></div>
<div class="t-card"><div class="stars">★★★★★</div><p>“Our bakery needed a food truck license and outdoor seating permit. Constituent services assigned us one advocate who handled both. We opened two weeks early.”</p><div class="t-who"><img src="https://i.pravatar.cc/96?u=alder2" alt="resident"><div><strong>James & Priya Okafor</strong><small>Founders, Crumb & Craft • Business License</small></div></div></div>
<div class="t-card"><div class="stars">★★★★★</div><p>“Reported a streetlight outage on the 311 app with a photo. Fixed the next evening, with a text when the crew closed the ticket. That’s transparency you can see.”</p><div class="t-who"><img src="https://i.pravatar.cc/96?u=alder3" alt="resident"><div><strong>Denise Caldwell</strong><small>Neighborhood Watch Lead, District 5</small></div></div></div>
</div>
</section>
<!-- FAQ + JOBS -->
<section class="section" id="faq" style="padding-top:0">
<div class="faq-wrap">
<div>
<div class="kicker">Help Center • FAQ</div>
<h2 style="font-family:var(--serif);color:var(--navy);font-size:2rem;margin:10px 0 12px">Answers to top City Hall questions</h2>
<p style="color:var(--muted);font-size:.95rem;margin-bottom:18px">Can’t find it? Call 311 at (555) 014-2800 or visit the first-floor Constituent Services desk — no appointment needed. Se habla español, plus interpretation in 12 languages.</p>
<img src="https://picsum.photos/seed/alder-hall2/600/360" alt="City hall" style="border-radius:14px;margin-bottom:18px">
<div class="jobs-cta" id="jobs" style="padding:24px"><div><h3 style="font-family:var(--serif);font-size:1.35rem;margin-bottom:6px">We’re hiring: 38 open city jobs</h3><p style="font-size:.88rem;color:#CBD8E8">Firefighter, librarian, civil engineer, 911 dispatcher + paid internships. Great benefits, pension, $22–$48/hr.</p></div><a class="btn btn-gold" href="#">View Jobs</a></div>
</div>
<div>
<div class="faq-item open"><button class="faq-q">How do I apply for a building or event permit? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>Create a free portal account, select permit type, upload plans/photos, and pay online. Staff review for zoning, safety, and historic compliance. Simple fences, water heaters, and block-party permits are often same-day; full remodels average 10 business days. You’ll get email/SMS at each step and can message your reviewer directly.</p></div></div>
<div class="faq-item"><button class="faq-q">How do I file a FOIA / public records request? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>Use the online FOIA form — describe records as specifically as you can (dates, departments, subject). The Clerk acknowledges within 1 business day and responds within 5 business days per state law. Many records (budgets, minutes, salaries, permits) are already searchable in the Open Data portal with no request needed.</p></div></div>
<div class="faq-item"><button class="faq-q">When is trash, recycling, and bulky pickup? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>Collection is weekly by zone — enter your address in the pickup lookup for your day. Carts out by 6am. Bulky items (furniture, appliances) are free twice yearly by appointment via 311. Missed pickup? Report by 6pm next day and crews return within 24 hours at no charge.</p></div></div>
<div class="faq-item"><button class="faq-q">How do I pay a parking ticket or utility bill? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>Pay online, by phone at (555) 014-2850, by mail, or in person at City Hall. Parking citations can be appealed within 21 days with photos. Utility customers facing hardship may apply for the CARE discount (up to 30% off) or a 12-month payment plan — no shutoff while enrolled.</p></div></div>
<div class="faq-item"><button class="faq-q">How do I speak at a council meeting? <i class="fa-solid fa-plus"></i></button><div class="faq-a"><p>All regular meetings include public comment. Sign up online or in person until 6pm meeting day. You may speak 3 minutes in person or via Zoom, or submit written comment. Agendas, staff reports, and video archives are posted on the Meeting Calendar above 72 hours in advance.</p></div></div>
</div>
</div>
</section>
<section style="padding-bottom:64px">
<div class="newsletter">
<div><h3 style="font-family:var(--serif);color:var(--navy);font-size:1.5rem;margin-bottom:8px">Get the Alderbrook Weekender — city news every Friday</h3><p style="font-size:.92rem;color:#5B4D1A">Road work, council decisions, job openings, and free events. Join 18,400 subscribers. No spam, unsubscribe anytime.</p></div>
<form onsubmit="return subscribe(event)"><input id="nlEmail" type="email" required placeholder="you@example.com"><button class="btn btn-dark" type="submit">Sign Up</button></form>
</div>
<p id="nlMsg" style="display:none;margin-top:12px;background:#DFF5E9;color:#0E6B4A;padding:12px 16px;border-radius:10px;font-weight:700">✓ Thanks! Check your inbox to confirm your subscription.</p>
</section>
</main>
<footer id="contact">
<div class="container">
<div class="foot-grid">
<div>
<div class="foot-brand"><img src="https://placehold.co/88x88/C1962B/0B1E32?text=AB&font=montserrat" alt="seal" style="width:48px;height:48px;border-radius:10px"><div><strong style="color:#fff;font-family:var(--serif);font-size:1.2rem">City of Alderbrook</strong><br><span style="font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);font-weight:800">Transparent • Responsive • Proud</span></div></div>
<p style="font-size:.9rem;margin-bottom:12px">200 Civic Plaza, Alderbrook, ST 74012<br>City Hall: Mon–Fri 8:00am–5:00pm<br>311: (555) 014-2800 • 911 for emergencies<br>clerk@alderbrook.gov • mayor@alderbrook.gov</p>
<div class="socials"><a href="#" aria-label="Facebook"><i class="fa-brands fa-facebook-f"></i></a><a href="#" aria-label="X"><i class="fa-brands fa-x-twitter"></i></a><a href="#" aria-label="Instagram"><i class="fa-brands fa-instagram"></i></a><a href="#" aria-label="Youtube"><i class="fa-brands fa-youtube"></i></a><a href="#" aria-label="Nextdoor"><i class="fa-solid fa-house"></i></a></div>
</div>
<div><h5>Services</h5><a href="#">Pay Utility Bill</a><a href="#">Apply for Permit</a><a href="#">Business Licenses</a><a href="#">Submit 311 Request</a><a href="#">Trash & Recycling</a><a href="#">Report Code Violation</a></div>
<div><h5>Government</h5><a href="#departments">Departments</a><a href="#meetings">Council & Agendas</a><a href="#records">Public Records / FOIA</a><a href="#">Budget & Open Data</a><a href="#jobs">Jobs & Internships</a><a href="#">Elections & Voting</a></div>
<div><h5>Support</h5><a href="#contact">Contact & Directory</a><a href="#">Accessibility & Language</a><a href="#">Emergency Preparedness</a><a href="#">Privacy Policy</a><a href="#">Terms of Use</a><a href="#">ADA & Non-Discrimination</a></div>
</div>
<div class="foot-bottom"><span>© 2026 City of Alderbrook. All rights reserved. This is a fictional demonstration portal for design purposes.</span><span><a href="#">Privacy</a> • <a href="#">Terms</a> • <a href="#">Site Map</a> • <i class="fa-solid fa-lock"></i> Secure .gov</span></div>
</div>
</footer>
<button class="back-top" id="backTop" aria-label="Back to top"><i class="fa-solid fa-arrow-up"></i></button>
<script>
const menuBtn=document.getElementById('menuBtn'),navLinks=document.getElementById('navLinks');
menuBtn.onclick=()=>navLinks.classList.toggle('open');
// Service filter
const btns=document.querySelectorAll('#filterBtns button');
btns.forEach(b=>b.onclick=()=>{
btns.forEach(x=>{x.className='btn btn-outline'});b.className='btn btn-dark';
const f=b.dataset.f;document.querySelectorAll('#serviceGrid .svc-card').forEach(c=>{
c.style.display=(f==='all'||c.dataset.cat===f)?'':'none';});
});
function filterServices(){
const q=document.getElementById('serviceInput').value.toLowerCase();
document.querySelectorAll('#serviceGrid .svc-card').forEach(c=>{
c.style.display=c.textContent.toLowerCase().includes(q)?'':'none';});
document.getElementById('services').scrollIntoView({behavior:'smooth'});
}
document.getElementById('serviceInput').addEventListener('input',e=>{
const q=e.target.value.toLowerCase();
document.querySelectorAll('#serviceGrid .svc-card').forEach(c=>{
c.style.display=c.textContent.toLowerCase().includes(q)?'':'none';});
});
document.getElementById('navSearch').addEventListener('input',e=>{
document.getElementById('serviceInput').value=e.target.value;
document.getElementById('serviceInput').dispatchEvent(new Event('input'));
});
// Meetings data
const meetings=[
{id:1,day:6,title:'City Council — Regular Session',cat:'council',time:'6:00 PM • Council Chambers',desc:'FY 2026 budget amendment, Elm St. contract award, public hearing on short-term rentals. Public comment welcome.',tags:['Live Stream','Public Hearing']},
{id:2,day:8,title:'Planning & Zoning Commission',cat:'planning',time:'5:30 PM • Room 201',desc:'Review of North Park mixed-use site plan, 42-unit affordable housing proposal, and sign code update.',tags:['Site Plans','Housing']},
{id:3,day:13,title:'Coffee with the Mayor — District 4',cat:'community',time:'9:00 AM • Community Library',desc:'Informal Q&A on streets, parks, and utility rates. No RSVP needed. Kids welcome, coffee provided.',tags:['Town Hall','Free']},
{id:4,day:15,title:'Public Works Open House',cat:'community',time:'4:00–7:00 PM • Public Works Yard',desc:'Touch-a-truck, meet snow crews, compost pilot signup, free rain barrels (first 100 households).',tags:['Family','RSVP']},
{id:5,day:20,title:'City Council — Work Session + Voting',cat:'council',time:'6:00 PM • Council Chambers',desc:'Fire Station #4 update, police body-cam policy second reading, consent agenda and final votes.',tags:['Live Stream','Vote']},
{id:6,day:22,title:'Historic Preservation Board',cat:'planning',time:'4:00 PM • Room 105',desc:'Certificate of appropriateness for 112 Main St. facade restoration and downtown design guidelines.',tags:['Design Review']},
{id:7,day:27,title:'Budget Town Hall & Shred Day',cat:'community',time:'10:00 AM • Civic Plaza',desc:'Finance director explains 2027 outlook + free document shredding, e-waste, and prescription take-back.',tags:['Budget','Free Service']},
];
let activeTab='all',selectedDay=6;
function renderCal(){
const box=document.getElementById('calDates');box.innerHTML='';
const start=new Date(2026,9,1).getDay();
for(let i=0;i<start;i++){let s=document.createElement('button');s.className='other';s.textContent='';s.disabled=true;box.appendChild(s);}
for(let d=1;d<=31;d++){let b=document.createElement('button');b.textContent=d;
if(meetings.some(m=>m.day===d))b.classList.add('has');
if(d===selectedDay)b.classList.add('active');
b.onclick=()=>{selectedDay=d;renderCal();renderMeetings();};box.appendChild(b);}
}
function renderMeetings(){
const list=document.getElementById('meetingList');list.innerHTML='';
let filtered=meetings.filter(m=>(activeTab==='all'||m.cat===activeTab));
if(selectedDay && meetings.some(m=>m.day===selectedDay)){
const sel=meetings.find(m=>m.day===selectedDay);
if(activeTab==='all'||sel.cat===activeTab) filtered=[sel];
}
if(!filtered.length){list.innerHTML='<div class="meeting-card"><div><h4>No meetings in this category for the selected date.</h4><p>Try “All Meetings” or pick a highlighted gold-dot date.</p></div></div>';return;}
filtered.forEach(m=>{
list.innerHTML+=`<div class="meeting-card"><div class="meeting-date"><span>Oct</span><b>${m.day}</b></div><div style="flex:1"><h4>${m.title}</h4><p><i class="fa-regular fa-clock"></i> ${m.time}</p><p>${m.desc}</p><div>${m.tags.map(t=>`<span class="chip ${m.cat==='council'?'chip-blue':m.cat==='planning'?'chip-gold':'chip-green'}">${t}</span>`).join('')}</div><div style="margin-top:10px;display:flex;gap:8px;flex-wrap:wrap"><a href="#" style="font-size:.82rem;font-weight:800;color:var(--blue)">View Agenda →</a><a href="#" style="font-size:.82rem;font-weight:800;color:var(--blue)">Watch Live →</a></div></div></div>`;
});
}
document.querySelectorAll('.tabs button').forEach(t=>t.onclick=()=>{
document.querySelectorAll('.tabs button').forEach(x=>x.classList.remove('active'));t.classList.add('active');activeTab=t.dataset.tab;renderMeetings();
});
renderCal();renderMeetings();
// FAQ
document.querySelectorAll('.faq-item').forEach(item=>{
item.querySelector('.faq-q').onclick=()=>{
const open=item.classList.contains('open');
document.querySelectorAll('.faq-item').forEach(i=>i.classList.remove('open'));
if(!open)item.classList.add('open');
};
});
function submit311(e){e.preventDefault();document.getElementById('reqMsg').style.display='block';e.target.querySelector('button').textContent='Request Submitted ✓';return false;}
function subscribe(e){e.preventDefault();document.getElementById('nlMsg').style.display='block';document.getElementById('nlEmail').value='';return false;}
window.addEventListener('scroll',()=>{document.getElementById('backTop').style.display=window.scrollY>600?'block':'none';});
document.getElementById('backTop').onclick=()=>window.scrollTo({top:0,behavior:'smooth'});
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T09:55:00.531Z",
"url": "https://benchmark.aimac.invalid/780d65128eda9117f74ed436f3cf3ad66d88aecd9ca8d7828ec8b27ad3c28277.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "aria-allowed-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attributes are used correctly for the defined role"
}
],
"none": [
{
"id": "aria-unsupported-attr",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "ARIA attribute is supported"
}
],
"impact": null,
"html": "<button aria-label=\"Search\"><i class=\"fa-solid fa-magnifying-glass\"></i></button>",
"target": [
"button[aria-label=\"Search\"]"
]
}
]
},
{
"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": "<button aria-label=\"Search\"><i class=\"fa-solid fa-magnifying-glass\"></i></button>",
"target": [
"button[aria-label=\"Search\"]"
]
}
]
},
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "aria-prohibited-attr",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "ARIA attribute is allowed"
}
],
"impact": null,
"html": "<button aria-label=\"Search\"><i class=\"fa-solid fa-magnifying-glass\"></i></button>",
"target": [
"button[aria-label=\"Search\"]"
]
}
]
},
{
"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": "<button aria-label=\"Search\"><i class=\"fa-solid fa-magnifying-glass\"></i></button>",
"target": [
"button[aria-label=\"Search\"]"
]
}
]
},
{
"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": "<button aria-label=\"Search\"><i class=\"fa-solid fa-magnifying-glass\"></i></button>",
"target": [
"button[aria-label=\"Search\"]"
]
}
]
},
{
"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": "<p style=\"font-size:.85rem;color:#B9C9DE\"><i class=\"fa-solid fa-shield-halved\"></i> Secure .gov portal \u2022 No account needed for most services \u2022 ADA & language access supported</p>",
"target": [
".hero > .container > div:nth-child(1) > p:nth-child(5)"
]
}
]
},
{
"id": "button-name",
"impact": "critical",
"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": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute exists and is not empty"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button aria-label=\"Search\"><i class=\"fa-solid fa-magnifying-glass\"></i></button>",
"target": [
"button[aria-label=\"Search\"]"
]
}
]
},
{
"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>Your city services, <em>simplified</em> and open to all.</h1>",
"target": [
"h1"
]
},
{
"html": "<h3>311 \u2014 I Want To...</h3>",
"target": [
".hero-card-top > h3"
]
},
{
"html": "<h2>Find services fast \u2014 without the runaround</h2>",
"target": [
"#services > .section-head > h2"
]
},
{
"html": "<h3>Building & Trade Permits</h3>",
"target": [
".svc-card[data-cat=\"permits\"]:nth-child(1) > h3"
]
},
{
"html": "<h3>Water, Sewer & Trash</h3>",
"target": [
".svc-card[data-cat=\"utilities\"]:nth-child(2) > h3"
]
},
{
"html": "<h3>Business Licenses</h3>",
"target": [
".svc-card[data-cat=\"permits\"]:nth-child(3) > h3"
]
},
{
"html": "<h3>Emergency Preparedness</h3>",
"target": [
".svc-card[data-cat=\"safety\"]:nth-child(4) > h3"
]
},
{
"html": "<h3>Public Records & FOIA</h3>",
"target": [
".svc-card[data-cat=\"records\"]:nth-child(5) > h3"
]
},
{
"html": "<h3>Streets & Public Works</h3>",
"target": [
".svc-card[data-cat=\"utilities\"]:nth-child(6) > h3"
]
},
{
"html": "<h3>Voting & Registration</h3>",
"target": [
".svc-card[data-cat=\"records\"]:nth-child(7) > h3"
]
},
{
"html": "<h3>Animal & Code Enforcement</h3>",
"target": [
".svc-card[data-cat=\"safety\"]:nth-child(8) > h3"
]
},
{
"html": "<h2>What your city is building this month</h2>",
"target": [
"#departments > .section-head > h2"
]
},
{
"html": "<h3>Riverwalk Trail Extension & Elm Street Complete Streets Project enters Phase 2</h3>",
"target": [
".feature-body > h3"
]
},
{
"html": "<h4>Parks: 12 playgrounds renovated</h4>",
"target": [
".mini-card:nth-child(1) > div > h4"
]
},
{
"html": "<h4>Utilities: Lead line replacement</h4>",
"target": [
".mini-card:nth-child(2) > div > h4"
]
},
{
"html": "<h4><i class=\"fa-solid fa-gavel\"></i> Recent Ordinances</h4>",
"target": [
".side-box:nth-child(1) > header > h4"
]
},
{
"html": "<h4><i class=\"fa-solid fa-bullhorn\"></i> Press Releases</h4>",
"target": [
".side-box:nth-child(2) > header > h4"
]
},
{
"html": "<h4><i class=\"fa-solid fa-chart-pie\"></i> Budget Reports</h4>",
"target": [
".side-box:nth-child(3) > header > h4"
]
},
{
"html": "<h2>Meeting calendar & agendas</h2>",
"target": [
".cal-left > h2"
]
},
{
"html": "<h4>City Council \u2014 Regular Session</h4>",
"target": [
".meeting-card > div:nth-child(2) > h4"
]
},
{
"html": "<h3>Help is always minutes away \u2014 and preparedness starts with you</h3>",
"target": [
".info-card:nth-child(1) > .info-body > h3"
]
},
{
"html": "<h3>Your right to know, honored in days \u2014 not months</h3>",
"target": [
"#records > .info-body > h3"
]
},
{
"html": "<h2 style=\"font-family:var(--serif);color:var(--navy);font-size:1.9rem;margin:8px 0 10px\">See exactly where every tax dollar goes</h2>",
"target": [
".transparency > div:nth-child(1) > h2"
]
},
{
"html": "<h3 style=\"font-family:var(--serif);margin-bottom:10px\">Report a concern in 60 seconds</h3>",
"target": [
".transparency > div:nth-child(2) > h3"
]
},
{
"html": "<h2>Neighbors helping shape City Hall</h2>",
"target": [
"#voices > .section-head > h2"
]
},
{
"html": "<h2 style=\"font-family:var(--serif);color:var(--navy);font-size:2rem;margin:10px 0 12px\">Answers to top City Hall questions</h2>",
"target": [
".faq-wrap > div:nth-child(1) > h2"
]
},
{
"html": "<h3 style=\"font-family:var(--serif);font-size:1.35rem;margin-bottom:6px\">We\u2019re hiring: 38 open city jobs</h3>",
"target": [
"#jobs > div > h3"
]
},
{
"html": "<h3 style=\"font-family:var(--serif);color:var(--navy);font-size:1.5rem;margin-bottom:8px\">Get the Alderbrook Weekender \u2014 city news every Friday</h3>",
"target": [
".newsletter > div > h3"
]
},
{
"html": "<h5>Services</h5>",
"target": [
"div:nth-child(2) > h5"
]
},
{
"html": "<h5>Government</h5>",
"target": [
"div:nth-child(3) > h5"
]
},
{
"html": "<h5>Support</h5>",
"target": [
"div:nth-child(4) > h5"
]
}
],
"impact": "serious",
"message": "Page has a heading"
},
{
"id": "landmark",
"data": null,
"relatedNodes": [
{
"html": "<main class=\"container\">",
"target": [
"main:nth-child(6)"
]
},
{
"html": "<main class=\"container\">",
"target": [
"main:nth-child(8)"
]
}
],
"impact": "serious",
"message": "Page has a landmark region"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#1a1405",
"bgColor": "#c1962b",
"contrastRatio": 6.68,
"fontSize": "10.6pt (14.08px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 6.68"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span> TRAFFIC ADVISORY: Elm Street bridge lane closure Oct 6\u201318 for resurfacing. <a href=\"#services\">View detour map & Public Works updates</a></span>",
"target": [
".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\">",
"target": [
"html"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input type=\"search\" id=\"navSearch\" placeholder=\"Search services, permits...\">",
"target": [
"#navSearch"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/120x120/0F2A44/FFFFFF?text=AB&font=montserrat\" alt=\"City of Alderbrook seal\">",
"target": [
"img[alt=\"City of Alderbrook seal\"]"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input type=\"search\" id=\"navSearch\" placeholder=\"Search services, permits...\">",
"target": [
"#navSearch"
]
}
]
},
{
"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",
"data": null,
"relatedNodes": [
{
"html": "<span> TRAFFIC ADVISORY: Elm Street bridge lane closure Oct 6\u201318 for resurfacing. <a href=\"#services\">View detour map & Public Works updates</a></span>",
"target": [
".container > span"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text in some way other than by color"
},
{
"id": "link-in-text-block-style",
"data": null,
"relatedNodes": [
{
"html": "<span> TRAFFIC ADVISORY: Elm Street bridge lane closure Oct 6\u201318 for resurfacing. <a href=\"#services\">View detour map & Public Works updates</a></span>",
"target": [
".container > span"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#services\">View detour map & Public Works updates</a>",
"target": [
"span > a[href$=\"#services\"]"
]
}
]
},
{
"id": "link-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a href=\"#services\">View detour map & Public Works updates</a>",
"target": [
"span > a[href$=\"#services\"]"
]
}
]
},
{
"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 class=\"side-list\">",
"target": [
".side-box:nth-child(1) > 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><span class=\"ord-num\">ORD 2026-41</span> Short-term rental licensing update \u2014 second reading passed 6-1.<small>Adopted Sept 22, 2026 \u2022 Effective Nov 1</small></li>",
"target": [
".side-box:nth-child(1) > ul > li:nth-child(1)"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/120x120/0F2A44/FFFFFF?text=AB&font=montserrat\" alt=\"City of Alderbrook seal\">",
"target": [
"img[alt=\"City of Alderbrook seal\"]"
]
}
]
},
{
"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": 151.1,
"height": 29
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (151.1px by 29px, 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=\"pill\" href=\"#emergency\"><i class=\"fa-solid fa-siren\"></i> Emergency? Dial 911</a>",
"target": [
".pill"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "9.4pt (12.48px)",
"fontWeight": "bold",
"messageKey": "imgNode",
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"eyebrow\"><i class=\"fa-solid fa-landmark\"></i> Incorporated 1912 \u2022 Population 84,200</div>",
"target": [
".eyebrow"
]
},
{
"html": "<img src=\"https://picsum.photos/seed/alderbrook-hall/1600/800\" alt=\"Alderbrook civic district\">",
"target": [
"img[alt=\"Alderbrook civic district\"]"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined because element contains an image node"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<div class=\"eyebrow\"><i class=\"fa-solid fa-landmark\"></i> Incorporated 1912 \u2022 Population 84,200</div>",
"target": [
".eyebrow"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because element contains an image node"
}
]
}
],
"violations": [
{
"id": "button-name",
"impact": "critical",
"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 does not have inner text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<button class=\"other\" disabled=\"\"></button>",
"target": [
".other:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Element does not have inner text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have inner text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<button class=\"other\" disabled=\"\"></button>",
"target": [
".other:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Element does not have inner text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have inner text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<button class=\"other\" disabled=\"\"></button>",
"target": [
".other:nth-child(3)"
],
"failureSummary": "Fix any of the following:\n Element does not have inner text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have inner text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<button class=\"other\" disabled=\"\"></button>",
"target": [
".other:nth-child(4)"
],
"failureSummary": "Fix any of the following:\n Element does not have inner text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
]
},
{
"id": "select-name",
"impact": "critical",
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<select required=\"\" style=\"padding:12px;border-radius:10px;border:0\"><option value=\"\">Select issue type...</option><option>Pothole / Street damage</option><option>Missed trash / recycling</option><option>Streetlight outage</option><option>Code violation</option><option>Water leak</option></select>",
"target": [
"select"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
]
},
{
"id": "target-size",
"impact": "serious",
"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": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 121.2,
"height": 22.2
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"active\">Home</a>",
"target": [
".active[href=\"#\"]"
]
},
{
"html": "<a href=\"#services\">Services</a>",
"target": [
"#navLinks > a[href$=\"#services\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 121.2px by 22.2px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 23.2,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#\" class=\"active\">Home</a>",
"target": [
".active[href=\"#\"]"
]
},
{
"html": "<a href=\"#services\">Services</a>",
"target": [
"#navLinks > a[href$=\"#services\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 23.2px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#services\">Pay Utility Bill</a>",
"target": [
".hero-quick > a[href$=\"#services\"]:nth-child(1)"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 121.2px by 22.2px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 23.2px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 138.2,
"height": 22.2
},
"relatedNodes": [
{
"html": "<a href=\"#services\">Services</a>",
"target": [
"#navLinks > a[href$=\"#services\"]"
]
},
{
"html": "<a href=\"#departments\">Departments</a>",
"target": [
"#navLinks > a[href$=\"#departments\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 138.2px by 22.2px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 23.2,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#departments\">Departments</a>",
"target": [
"#navLinks > a[href$=\"#departments\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 23.2px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#services\">Apply for Permit</a>",
"target": [
".hero-quick > a[href$=\"#services\"]:nth-child(2)"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 138.2px by 22.2px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 23.2px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 129.2,
"height": 22.2
},
"relatedNodes": [
{
"html": "<a href=\"#meetings\">Council & Meetings</a>",
"target": [
"#navLinks > a[href$=\"#meetings\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 129.2px by 22.2px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 23.2,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#meetings\">Council & Meetings</a>",
"target": [
"#navLinks > a[href$=\"#meetings\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 23.2px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#report\">Report Pothole</a>",
"target": [
".hero-quick > a[href$=\"#report\"]"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 129.2px by 22.2px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 23.2px instead of at least 24px."
},
{
"any": [
{
"id": "target-size",
"data": {
"messageKey": "partiallyObscured",
"minSize": 24,
"width": 120.5,
"height": 22.2
},
"relatedNodes": [
{
"html": "<a href=\"#meetings\">Council & Meetings</a>",
"target": [
"#navLinks > a[href$=\"#meetings\"]"
]
},
{
"html": "<a href=\"#records\">Public Records</a>",
"target": [
"#navLinks > a[href$=\"#records\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient size because it is partially obscured (smallest space is 120.5px by 22.2px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 23.2,
"minOffset": 24
},
"relatedNodes": [
{
"html": "<a href=\"#records\">Public Records</a>",
"target": [
"#navLinks > a[href$=\"#records\"]"
]
}
],
"impact": "serious",
"message": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 23.2px instead of at least 24px."
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<a href=\"#records\">FOIA Request</a>",
"target": [
".hero-quick > a[href$=\"#records\"]"
],
"failureSummary": "Fix any of the following:\n Target has insufficient size because it is partially obscured (smallest space is 120.5px by 22.2px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 23.2px instead of at least 24px."
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 7488
},
{
"y": 576,
"height": 7488
},
{
"y": 1152,
"height": 7488
},
{
"y": 1728,
"height": 7488
},
{
"y": 2304,
"height": 7488
},
{
"y": 2880,
"height": 7488
},
{
"y": 3456,
"height": 7488
},
{
"y": 4032,
"height": 7488
},
{
"y": 4608,
"height": 7488
},
{
"y": 5184,
"height": 7488
},
{
"y": 5760,
"height": 7488
},
{
"y": 6336,
"height": 7488
},
{
"y": 6768,
"height": 7488
}
],
"scans": 14,
"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 "Government" 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: "Government"
- Description: Government agencies, official portals, public services, and regulatory resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Government" 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: "Departments", "Jobs", "Contact".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Government" category. Consider themes similar to: "Public Works", "Business Licenses", "Emergency Services".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "public records", "FOIA request", "constituent services".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Submit Request", "Apply for Permit", "Find Services".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Government" sector. Ideas similar but not limited to: "meeting calendar".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "recent ordinances", "press releases", "budget reports".
- **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.