Qwen Qwen3.8 Max (0902) – Government

via Alibaba · Generated

  • AIMAC Debt 5.56
  • Cost $0.28
  • Total Violations 42
  • HTML Size 104 KB
  • Em Dashes 53

Screenshot

View Qwen Qwen3.8 Max (0902) Government page View Live Page

Accessibility Issues Found

42 Serious

  • color-contrast serious 42 instances

    Elements must meet minimum color contrast ratio thresholds

    Example HTML <span>Open doors · Open data · Open government</span>

Artifacts

View Generated HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>City of Port Avery — One City. One Front Door. | Official Municipal Portal</title>
<meta name="description" content="The official portal of the City of Port Avery. Pay a utility bill, track a permit, follow the FY2026 budget, and report an issue — government at one front door.">
<script>document.documentElement.classList.add('js');</script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Public+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet">
<style>
/* ============ TOKENS & RESET ============ */
:root{
  --ink:#0d2438; --ink2:#12314e; --navy:#0a1b2b; --navy2:#0e2540;
  --paper:#f5f1e6; --paper2:#ece6d6; --card:#fbf9f1;
  --line:#d8d0bb; --line-dark:rgba(245,241,230,.16);
  --gold:#c9a227; --gold-soft:#e4c65f; --brass:#8a6a1f;
  --red:#a63d2f; --green:#2f6b4f; --amber:#f3e3b0;
  --text:#22303e; --muted:#5b6572;
  --disp:"Fraunces",Georgia,serif;
  --body:"Public Sans",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
  --shadow:0 18px 40px -18px rgba(13,36,56,.28);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--body);color:var(--text);background:var(--paper);line-height:1.6;font-size:16px;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit}
button{font:inherit;cursor:pointer;background:none;border:0;color:inherit}
input,select,textarea{font:inherit;color:inherit}
ul{list-style:none}
h1,h2,h3,h4{font-family:var(--disp);color:var(--ink);line-height:1.08;font-weight:600;letter-spacing:-.01em}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
::selection{background:var(--gold);color:var(--ink)}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.mono{font-family:var(--mono)}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:10px 16px;z-index:200}
.skip:focus{left:12px;top:12px}

/* section label — stamp style */
.label{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--brass);margin-bottom:18px}
.label::before{content:"";width:34px;height:2px;background:var(--gold)}
.label .star{color:var(--gold);font-size:10px}
.dark .label{color:var(--gold-soft)}
.dark .label::before{background:var(--gold)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;padding:14px 20px;border:1px solid var(--ink);border-radius:2px;transition:background .25s,color .25s,transform .25s,border-color .25s}
.btn svg{transition:transform .25s}
.btn:hover svg{transform:translateX(4px)}
.btn-gold{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.btn-gold:hover{background:var(--ink);border-color:var(--ink);color:var(--gold-soft)}
.btn-ink{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.btn-ink:hover{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.btn-line{background:transparent;color:var(--ink)}
.btn-line:hover{background:var(--ink);color:var(--paper)}
.dark .btn-line{color:var(--paper);border-color:var(--line-dark)}
.dark .btn-line:hover{background:var(--gold);border-color:var(--gold);color:var(--ink)}

/* reveal */
.js .rv{opacity:0;transform:translateY(20px);transition:opacity .7s ease,transform .8s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s)}
.js .rv.in{opacity:1;transform:none}

/* ============ OFFICIAL STRIP ============ */
.gov-strip{background:var(--navy);color:#cfd8e0;font-size:12.5px}
.gov-strip .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:7px;padding-bottom:7px}
.gov-strip .flag{width:18px;height:12px;background:linear-gradient(180deg,var(--gold) 33%,#f5f1e6 33% 66%,var(--ink2) 66%);flex:none;box-shadow:0 0 0 1px rgba(255,255,255,.25)}
.gov-strip b{color:#fff;font-weight:600}
.gov-strip .right{display:flex;align-items:center;gap:18px;font-family:var(--mono);font-size:11.5px;letter-spacing:.04em}
.gov-strip select{background:var(--navy);border:1px solid rgba(255,255,255,.25);color:#cfd8e0;font-family:var(--mono);font-size:11px;padding:3px 6px;border-radius:2px}
@media(max-width:720px){.gov-strip .right span.tel{display:none}}

/* ============ ALERT BAR ============ */
.alertbar{background:var(--amber);border-bottom:1px solid #d9c37e;position:relative}
.alertbar .wrap{display:flex;gap:14px;align-items:center;padding-top:10px;padding-bottom:10px}
.alertbar .tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;background:var(--red);color:#fff;padding:4px 9px;flex:none;border-radius:2px}
.alertbar p{font-size:13.5px;color:#4c4022}
.alertbar p b{color:var(--red)}
.alert-close{margin-left:auto;font-size:20px;line-height:1;color:#4c4022;padding:2px 8px;transition:transform .2s}
.alert-close:hover{transform:scale(1.2);color:var(--red)}
.alertbar.hidden{display:none}

/* ============ HEADER ============ */
header.site{position:sticky;top:0;z-index:100;background:rgba(245,241,230,.94);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);transition:box-shadow .3s}
header.site.scrolled{box-shadow:0 10px 30px -18px rgba(13,36,56,.35)}
.head-row{display:flex;align-items:center;gap:22px;padding-top:14px;padding-bottom:14px}
.brand{display:flex;align-items:center;gap:14px;text-decoration:none}
.brand img{width:54px;height:54px;border-radius:50%;border:2px solid var(--gold);box-shadow:0 0 0 3px var(--paper),0 0 0 4px var(--line)}
.brand .names b{display:block;font-family:var(--disp);font-weight:700;font-size:19px;color:var(--ink);letter-spacing:.01em}
.brand .names span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass);margin-top:2px}
nav.main{margin-left:auto}
nav.main ul{display:flex;gap:4px;align-items:center}
nav.main a{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;color:var(--ink);padding:9px 11px;border-radius:2px;position:relative}
nav.main a::after{content:"";position:absolute;left:11px;right:100%;bottom:4px;height:2px;background:var(--gold);transition:right .3s cubic-bezier(.2,.7,.2,1)}
nav.main a:hover::after{right:11px}
nav.main a.hot{color:var(--red)}
.head-cta{flex:none}
.burger{display:none;flex-direction:column;gap:5px;padding:8px;margin-left:8px}
.burger i{width:24px;height:2px;background:var(--ink);transition:transform .3s,opacity .3s}
.mobile-panel{display:none}
@media(max-width:1020px){
  nav.main,.head-cta{display:none}
  .burger{display:flex}
  .mobile-panel{display:block;max-height:0;overflow:hidden;transition:max-height .4s ease;background:var(--paper2);border-top:1px solid var(--line)}
  .mobile-panel.open{max-height:480px}
  .mobile-panel ul{padding:14px 24px 22px}
  .mobile-panel a{display:block;padding:12px 4px;font-family:var(--mono);font-size:13px;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--line)}
  body.nav-open .burger i:nth-child(1){transform:translateY(7px) rotate(45deg)}
  body.nav-open .burger i:nth-child(2){opacity:0}
  body.nav-open .burger i:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
}

/* ============ MASTHEAD ============ */
.masthead{position:relative;overflow:hidden;border-bottom:1px solid var(--line);
  background-image:repeating-linear-gradient(45deg,rgba(13,36,56,.035) 0 1px,transparent 1px 9px)}
.seal-mark{position:absolute;right:-130px;top:-110px;width:460px;height:460px;color:var(--ink);opacity:.07;pointer-events:none;animation:spin 90s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.mast-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;padding-top:64px;padding-bottom:72px;position:relative}
.kicker{font-family:var(--mono);font-size:12px;letter-spacing:.22em;color:var(--brass);text-transform:uppercase;display:flex;align-items:center;gap:10px}
.kicker::before{content:"";width:8px;height:8px;background:var(--red);border-radius:50%;animation:pulse 2.2s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(166,61,47,.45)}55%{box-shadow:0 0 0 8px rgba(166,61,47,0)}}
.masthead h1{font-size:clamp(2.7rem,5.6vw,4.4rem);margin:20px 0 6px;font-weight:700}
.lm{display:block;overflow:hidden;padding-bottom:.06em}
.lm>span{display:block;transform:translateY(112%);transition:transform 1s cubic-bezier(.2,.75,.15,1);transition-delay:var(--d,0s)}
body.loaded .lm>span{transform:translateY(0)}
.masthead h1 em{font-style:italic;color:var(--brass)}
.mast-sub{max-width:52ch;color:var(--muted);font-size:17px;margin-top:16px}
/* search */
.search{position:relative;margin-top:30px;max-width:560px}
.search-box{display:flex;background:var(--card);border:1px solid var(--ink);border-radius:3px;box-shadow:4px 4px 0 var(--gold)}
.search-box input{flex:1;border:0;background:transparent;padding:15px 16px;font-size:15px;min-width:0}
.search-box input::placeholder{color:#9a947f}
.search-box button{background:var(--ink);color:var(--gold-soft);font-family:var(--mono);font-size:12px;letter-spacing:.14em;padding:0 22px;text-transform:uppercase;transition:background .25s}
.search-box button:hover{background:var(--brass);color:#fff}
.search-panel{position:absolute;top:calc(100% + 8px);left:0;right:0;background:var(--card);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);display:none;z-index:30;overflow:hidden}
.search-panel.open{display:block}
.search-panel li a{display:flex;justify-content:space-between;gap:12px;padding:11px 16px;text-decoration:none;border-bottom:1px solid var(--paper2);font-size:14px}
.search-panel li a:hover{background:var(--paper2)}
.search-panel li a b{font-weight:600;color:var(--ink)}
.search-panel li a span{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--brass);text-transform:uppercase;flex:none}
.search-panel .none{padding:14px 16px;font-size:13.5px;color:var(--muted)}
.search-panel .foot{padding:9px 16px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--muted);background:var(--paper2);text-transform:uppercase}
/* quick actions */
.quick{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.quick a{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;background:var(--card);border:1px solid var(--line);padding:11px 15px;border-radius:2px;color:var(--ink);transition:border-color .25s,transform .25s,box-shadow .25s}
.quick a:hover{border-color:var(--gold);transform:translateY(-2px);box-shadow:0 8px 16px -10px rgba(13,36,56,.35)}
.quick svg{color:var(--brass)}
/* photos */
.mast-visual{position:relative;min-height:520px}
.duo{position:relative;border:1px solid var(--line);background:var(--ink)}
.duo img{filter:grayscale(1) contrast(1.05);width:100%;height:100%;object-fit:cover}
.duo::after{content:"";position:absolute;inset:0;background:#16334f;mix-blend-mode:color;opacity:.55;pointer-events:none}
.duo-main{position:absolute;right:0;top:0;width:86%;aspect-ratio:4/3.1;box-shadow:var(--shadow);overflow:hidden}
.duo-main .kb{width:100%;height:100%}
.kb img{animation:kenburns 20s ease-in-out infinite alternate}
@keyframes kenburns{from{transform:scale(1) translate(0,0)}to{transform:scale(1.09) translate(-1.5%,2%)}}
.duo-sub{position:absolute;left:-6px;bottom:64px;width:44%;aspect-ratio:4/3;transform:rotate(-3.5deg);box-shadow:var(--shadow);overflow:hidden;z-index:2}
.duo-sub::before{content:"";position:absolute;inset:8px;border:1px solid rgba(245,241,230,.5);z-index:3}
.stamp{position:absolute;right:14px;bottom:26px;z-index:4;transform:rotate(-7deg);border:2px solid var(--red);color:var(--red);font-family:var(--mono);font-size:11px;letter-spacing:.28em;text-transform:uppercase;padding:7px 12px;background:rgba(245,241,230,.85)}
.clerk-card{position:absolute;right:-8px;top:-18px;z-index:4;background:var(--ink);color:var(--paper);padding:13px 16px;border-radius:3px;font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;box-shadow:var(--shadow);display:flex;gap:10px;align-items:center}
.clerk-card .dot{width:9px;height:9px;background:#5ec48a;border-radius:50%;animation:pulse 2s infinite}
.clerk-card b{color:var(--gold-soft);font-weight:600}
@media(max-width:960px){
  .mast-grid{grid-template-columns:1fr;gap:44px;padding-top:44px}
  .mast-visual{min-height:0;padding:12px 0 56px}
  .duo-main{position:relative;width:100%}
  .duo-sub{bottom:-26px}
  .clerk-card{top:auto;bottom:-40px;right:8px}
}

/* ============ TICKER ============ */
.ticker{background:var(--ink);color:var(--paper);border-bottom:3px solid var(--gold);overflow:hidden}
.ticker .track{display:flex;width:max-content;animation:tick 46s linear infinite}
.ticker:hover .track{animation-play-state:paused}
@keyframes tick{to{transform:translateX(-50%)}}
.ticker ul{display:flex;align-items:center;padding:11px 0}
.ticker li{display:flex;align-items:center;gap:26px;padding-right:26px;font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}
.ticker li::after{content:"✦";color:var(--gold);font-size:10px}
.ticker b{color:var(--gold-soft);font-weight:600}

/* ============ SECTIONS BASE ============ */
section{scroll-margin-top:90px}
.sec{padding:88px 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:44px;flex-wrap:wrap}
.sec-head h2{font-size:clamp(1.9rem,3.4vw,2.7rem);max-width:22ch}
.sec-head .updated{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase;text-align:right;line-height:1.8}
.dark{background:var(--navy);color:#c6cfd8}
.dark h2,.dark h3{color:#f5f1e6}
.paper2{background:var(--paper2)}

/* ============ SERVICES ============ */
.svc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.svc{background:var(--card);padding:26px 24px 22px;position:relative;display:flex;flex-direction:column;gap:12px;overflow:hidden;transition:transform .3s,box-shadow .3s;z-index:1}
.svc::before{content:"";position:absolute;top:0;left:0;height:3px;width:0;background:var(--gold);transition:width .45s cubic-bezier(.2,.7,.2,1)}
.svc:hover{transform:translateY(-4px);box-shadow:var(--shadow);z-index:2}
.svc:hover::before{width:100%}
.svc .num{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--muted);text-transform:uppercase}
.svc .ic{width:38px;height:38px;border:1px solid var(--line);border-radius:2px;display:grid;place-items:center;color:var(--brass);background:var(--paper)}
.svc h3{font-size:19px}
.svc p{font-size:13.5px;color:var(--muted);flex:1}
.svc .meta{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--green);text-transform:uppercase;display:flex;align-items:center;gap:6px}
.svc .meta::before{content:"";width:7px;height:7px;background:var(--green);border-radius:50%}
.svc .go{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:var(--ink);display:inline-flex;gap:8px;align-items:center;border-top:1px solid var(--paper2);padding-top:12px;margin-top:2px}
.svc .go:hover{color:var(--brass)}
.svc .go svg{transition:transform .25s}
.svc .go:hover svg{transform:translateX(4px)}
@media(max-width:1020px){.svc-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.svc-grid{grid-template-columns:1fr}}

/* ============ DEPARTMENTS (sticky 2-col) ============ */
.dept-grid{display:grid;grid-template-columns:380px 1fr;gap:64px;align-items:start}
.dept-sticky{position:sticky;top:110px}
.dept-sticky h2{font-size:clamp(1.9rem,3vw,2.6rem);margin-bottom:16px}
.dept-sticky p{color:var(--muted);font-size:15px;margin-bottom:14px}
.dir-card{margin-top:26px;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--gold);padding:22px;border-radius:2px}
.dir-card h4{font-size:16px;margin-bottom:8px}
.dir-card p{font-size:13.5px;margin-bottom:0}
.dir-card a{color:var(--brass);font-weight:600;text-decoration:none}
.dir-card a:hover{text-decoration:underline}
.dept-list{border-top:1px solid var(--line)}
.dept{display:grid;grid-template-columns:70px 1fr;gap:22px;padding:30px 8px;border-bottom:1px solid var(--line);transition:background .3s;position:relative}
.dept:hover{background:var(--card)}
.dept .dnum{font-family:var(--mono);font-size:13px;color:var(--brass);letter-spacing:.08em;padding-top:5px}
.dept h3{font-size:22px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.dept h3 .pill{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;background:var(--ink);color:var(--gold-soft);padding:4px 8px;border-radius:2px;text-transform:uppercase;font-weight:500}
.dept p{font-size:14px;color:var(--muted);margin:8px 0 12px;max-width:62ch}
.dept .dmeta{display:flex;flex-wrap:wrap;gap:8px 22px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ink);text-transform:uppercase;margin-bottom:12px}
.dept .dmeta span{display:flex;gap:7px;align-items:center}
.dept .dmeta svg{color:var(--brass)}
.dept .dcontact{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:var(--ink);border-bottom:2px solid var(--gold);padding-bottom:2px}
.dept .dcontact:hover{color:var(--brass)}
@media(max-width:960px){.dept-grid{grid-template-columns:1fr}.dept-sticky{position:static}}

/* ============ PERMITS ============ */
.permit-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;margin-bottom:60px}
.steps{position:relative;margin-top:8px}
.steps::before{content:"";position:absolute;left:21px;top:14px;bottom:14px;width:2px;background:repeating-linear-gradient(var(--gold) 0 6px,transparent 6px 12px)}
.step{display:flex;gap:22px;padding-bottom:34px;position:relative}
.step:last-child{padding-bottom:0}
.step .no{width:44px;height:44px;flex:none;border-radius:50%;background:var(--card);border:2px solid var(--gold);display:grid;place-items:center;font-family:var(--mono);font-weight:600;color:var(--brass);position:relative;z-index:1}
.step h3{font-size:19px;margin-bottom:6px}
.step p{font-size:14px;color:var(--muted);max-width:48ch}
.step .slabel{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--green);text-transform:uppercase;display:inline-block;margin-top:8px;border:1px solid var(--line);padding:4px 9px;border-radius:2px;background:var(--card)}
.fee-card{background:var(--card);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);overflow:hidden}
.fee-card header{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;background:var(--ink);color:var(--paper)}
.fee-card header h3{color:var(--gold-soft);font-size:18px}
.fee-card header span{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:#9fb0c2;text-transform:uppercase}
.fee-table{width:100%;border-collapse:collapse;font-size:14px}
.fee-table td{padding:13px 24px;border-bottom:1px solid var(--paper2)}
.fee-table tr:last-child td{border-bottom:0}
.fee-table tr:hover td{background:var(--paper2)}
.fee-table .amt{font-family:var(--mono);font-weight:600;color:var(--ink);text-align:right;white-space:nowrap}
.fee-note{padding:14px 24px;background:var(--paper2);font-size:12px;color:var(--muted);font-family:var(--mono);letter-spacing:.02em}
/* status lookup */
.lookup{margin-top:26px;background:var(--ink);color:var(--paper);padding:26px;border-radius:3px;border-top:4px solid var(--gold)}
.lookup h4{color:var(--paper);font-size:17px;margin-bottom:4px}
.lookup .sub{font-size:13px;color:#9fb0c2;margin-bottom:16px}
.lookup form{display:flex;gap:10px}
.lookup input{flex:1;background:var(--navy);border:1px solid rgba(245,241,230,.25);color:#fff;padding:12px 14px;border-radius:2px;font-family:var(--mono);font-size:13px;min-width:0}
.lookup input::placeholder{color:#6d8098}
.lookup button{background:var(--gold);color:var(--ink);font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;padding:12px 18px;border-radius:2px;transition:background .25s}
.lookup button:hover{background:var(--gold-soft)}
.lookup-result{margin-top:16px;font-size:13.5px;display:none;border:1px dashed rgba(245,241,230,.3);padding:14px 16px;border-radius:2px}
.lookup-result.show{display:block;animation:pop .4s cubic-bezier(.2,.7,.2,1)}
.lookup-result .chip{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;padding:3px 8px;border-radius:2px;margin-left:8px}
.chip.ok{background:var(--green);color:#fff}
.chip.wait{background:var(--gold);color:var(--ink)}
.chip.hold{background:var(--red);color:#fff}
@keyframes pop{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* FAQ */
.faq{border-top:1px solid var(--line)}
.faq-item{border-bottom:1px solid var(--line)}
.faq-q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:20px;text-align:left;padding:22px 6px;font-family:var(--disp);font-size:19px;color:var(--ink);transition:color .25s}
.faq-q:hover{color:var(--brass)}
.faq-q .fi{width:30px;height:30px;flex:none;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;position:relative;transition:transform .35s,background .3s}
.faq-q .fi::before,.faq-q .fi::after{content:"";position:absolute;background:var(--brass);transition:transform .35s}
.faq-q .fi::before{width:12px;height:2px}
.faq-q .fi::after{width:2px;height:12px}
.faq-q[aria-expanded="true"] .fi{background:var(--gold);transform:rotate(180deg)}
.faq-q[aria-expanded="true"] .fi::after{transform:scaleY(0)}
.faq-q[aria-expanded="true"] .fi::before,.faq-q[aria-expanded="true"] .fi::after{background:var(--ink)}
.faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.2,.7,.2,1)}
.faq-a>div{overflow:hidden}
.faq-a p{padding:0 6px 24px;font-size:14.5px;color:var(--muted);max-width:72ch}
.faq-item.open .faq-a{grid-template-rows:1fr}
@media(max-width:960px){.permit-grid{grid-template-columns:1fr;gap:44px}}

/* ============ TRANSPARENCY ============ */
.dark .hatch{background-image:repeating-linear-gradient(45deg,rgba(201,162,39,.05) 0 1px,transparent 1px 10px)}
.trans-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}
.trans-left p{font-size:15.5px;margin-bottom:16px;max-width:56ch}
.trans-left p b{color:#f5f1e6}
.counters{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line-dark);border:1px solid var(--line-dark);margin:34px 0}
.counter{background:var(--navy);padding:24px}
.counter .cv{font-family:var(--mono);font-size:clamp(1.7rem,2.6vw,2.3rem);font-weight:600;color:var(--gold-soft);letter-spacing:-.02em}
.counter .cl{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#8fa0b3;margin-top:6px;font-family:var(--mono)}
.trans-ctas{display:flex;gap:12px;flex-wrap:wrap}
.budget h3{font-size:19px;margin-bottom:6px}
.budget .bsub{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#8fa0b3;margin-bottom:24px}
.bar-row{margin-bottom:18px}
.bar-row .bl{display:flex;justify-content:space-between;font-size:13px;margin-bottom:7px}
.bar-row .bl b{color:#f5f1e6;font-weight:600}
.bar-row .bl span{font-family:var(--mono);color:var(--gold-soft);font-size:12px}
.bar{height:12px;background:rgba(245,241,230,.1);border-radius:1px;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brass),var(--gold));transition:width 1.4s cubic-bezier(.2,.7,.2,1)}
.docs{margin-top:34px;border-top:1px solid var(--line-dark)}
.docs a{display:flex;align-items:center;gap:14px;padding:14px 4px;border-bottom:1px solid var(--line-dark);text-decoration:none;color:#c6cfd8;font-size:14px;transition:color .25s,padding-left .3s}
.docs a:hover{color:var(--gold-soft);padding-left:10px}
.docs a svg{color:var(--gold);flex:none}
.docs a .du{margin-left:auto;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:#6d8098;text-transform:uppercase}
@media(max-width:960px){.trans-grid{grid-template-columns:1fr;gap:48px}}

/* ============ ISSUE REPORTER ============ */
.report-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:start}
.wizard{background:var(--card);border:1px solid var(--line);border-top:5px solid var(--gold);border-radius:3px;box-shadow:var(--shadow);padding:34px}
.wprog{display:flex;gap:8px;margin-bottom:28px}
.wprog li{flex:1;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:10px;border-top:3px solid var(--line);transition:color .3s,border-color .3s}
.wprog li.on{color:var(--brass);border-color:var(--gold)}
.wstep{display:none}
.wstep.active{display:block;animation:pop .45s cubic-bezier(.2,.7,.2,1)}
.wstep h3{font-size:21px;margin-bottom:6px}
.wstep .ws-sub{font-size:13.5px;color:var(--muted);margin-bottom:22px}
.chips{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.chip-c{position:relative}
.chip-c input{position:absolute;opacity:0}
.chip-c span{display:flex;flex-direction:column;gap:8px;padding:16px 14px;border:1px solid var(--line);border-radius:2px;font-size:13px;font-weight:600;color:var(--ink);background:var(--paper);cursor:pointer;transition:border-color .2s,background .2s,transform .2s;height:100%}
.chip-c span small{font-weight:400;color:var(--muted);font-size:11.5px}
.chip-c svg{color:var(--brass)}
.chip-c input:checked+span{border-color:var(--gold);background:#f9f2dd;box-shadow:inset 0 0 0 1px var(--gold)}
.chip-c input:focus-visible+span{outline:2px solid var(--gold);outline-offset:2px}
.chip-c span:hover{transform:translateY(-2px)}
.frow{margin-bottom:16px}
.frow label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass);margin-bottom:7px}
.frow input[type=text],.frow input[type=email],.frow textarea{width:100%;background:var(--paper);border:1px solid var(--line);border-radius:2px;padding:12px 14px;font-size:14px;transition:border-color .2s}
.frow input:focus,.frow textarea:focus{outline:none;border-color:var(--gold)}
.frow textarea{min-height:96px;resize:vertical}
.urg{display:flex;gap:10px}
.urg label{flex:1;display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:2px;padding:11px 14px;font-size:13px;cursor:pointer;background:var(--paper)}
.urg input{accent-color:var(--brass)}
.urg label:has(input:checked){border-color:var(--gold);background:#f9f2dd}
.wbtns{display:flex;justify-content:space-between;gap:12px;margin-top:26px}
.wbtns .btn{padding:13px 22px}
.wsummary{background:var(--paper);border:1px dashed var(--line);padding:20px;border-radius:2px;margin-bottom:6px}
.wsummary dl{display:grid;grid-template-columns:110px 1fr;gap:8px 16px;font-size:13.5px}
.wsummary dt{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--brass);padding-top:2px}
.wsummary dd{color:var(--ink)}
.confirm{display:none;text-align:left}
.confirm.show{display:block;animation:pop .5s cubic-bezier(.2,.7,.2,1)}
.confirm .case{font-family:var(--mono);font-size:clamp(1.5rem,3vw,2.1rem);font-weight:600;color:var(--brass);letter-spacing:.04em;border:2px dashed var(--gold);display:inline-block;padding:12px 24px;background:#f9f2dd;margin:14px 0 18px}
.confirm h3{font-size:24px}
.confirm p{font-size:14.5px;color:var(--muted);max-width:52ch}
.hint-err{color:var(--red);font-size:12.5px;font-family:var(--mono);margin-top:10px;display:none}
.hint-err.show{display:block}
/* feed */
.feed-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:8px;flex-wrap:wrap}
.feed-head h3{font-size:22px}
.feed-stat{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--green);border:1px solid var(--line);padding:6px 10px;border-radius:2px;background:var(--card)}
.feed{border-top:1px solid var(--line)}
.feed li{display:grid;grid-template-columns:86px 1fr;gap:18px;padding:20px 0;border-bottom:1px solid var(--line);align-items:center}
.feed .thumb{width:86px;height:64px;object-fit:cover;filter:grayscale(1) contrast(1.05);border:1px solid var(--line)}
.feed .ft{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:4px}
.feed .ft b{font-size:15px;color:var(--ink)}
.stamp-chip{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;padding:3px 8px;border-radius:2px}
.stamp-chip.resolved{background:var(--green);color:#fff}
.stamp-chip.open{background:var(--gold);color:var(--ink);animation:blink 1.6s steps(2) infinite}
@keyframes blink{50%{opacity:.55}}
.feed .fm{font-size:13px;color:var(--muted)}
.feed .fw{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--brass);text-transform:uppercase;margin-top:5px}
@media(max-width:960px){.report-grid{grid-template-columns:1fr}}
@media(max-width:620px){.chips{grid-template-columns:repeat(2,1fr)}}

/* ============ COMMUNITY (events + sidebar) ============ */
.comm-grid{display:grid;grid-template-columns:1fr 340px;gap:56px;align-items:start}
.event{display:grid;grid-template-columns:86px 1fr;gap:22px;padding:26px 6px;border-bottom:1px solid var(--line);transition:background .3s}
.event:hover{background:var(--card)}
.dateblock{border:1px solid var(--ink);border-radius:2px;text-align:center;background:var(--card);align-self:start;overflow:hidden}
.dateblock .dm{background:var(--ink);color:var(--gold-soft);font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;padding:4px 0}
.dateblock .dd{font-family:var(--disp);font-size:30px;font-weight:700;color:var(--ink);padding:6px 0 9px}
.event h3{font-size:20px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.etag{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;padding:4px 8px;border-radius:2px}
.etag.hearing{background:var(--ink);color:var(--gold-soft)}
.etag.event{background:var(--green);color:#fff}
.etag.election{background:var(--red);color:#fff}
.etag.bid{background:var(--brass);color:#fff}
.event p{font-size:14px;color:var(--muted);margin-top:7px;max-width:60ch}
.event .eloc{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--brass);margin-top:9px;display:flex;gap:8px;align-items:center}
/* rail */
.rail{display:flex;flex-direction:column;gap:24px;position:sticky;top:110px}
.rail-card{border:1px solid var(--line);border-radius:3px;background:var(--card);overflow:hidden}
.rail-card header{padding:13px 18px;display:flex;gap:10px;align-items:center;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase}
.rail-card header svg{flex:none}
.rc-alert header{background:var(--red);color:#fff}
.rc-status header{background:var(--ink);color:var(--gold-soft)}
.rc-news header{background:var(--gold);color:var(--ink)}
.rail-card .rb{padding:16px 18px}
.alert-item{padding:10px 0;border-bottom:1px dashed var(--line);font-size:13px}
.alert-item:last-child{border-bottom:0;padding-bottom:2px}
.alert-item b{display:block;color:var(--ink);font-size:13.5px}
.alert-item time{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--red);text-transform:uppercase}
.status-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13px}
.status-row:last-child{border-bottom:0}
.status-row .st{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;display:flex;align-items:center;gap:7px}
.st::before{content:"";width:8px;height:8px;border-radius:50%}
.st.ok{color:var(--green)}.st.ok::before{background:var(--green)}
.st.note{color:var(--brass)}.st.note::before{background:var(--gold)}
.rc-news p{font-size:13px;color:var(--muted);margin-bottom:14px}
.rc-news form{display:flex;gap:8px}
.rc-news input{flex:1;border:1px solid var(--line);background:var(--paper);padding:11px 12px;border-radius:2px;font-size:13px;min-width:0}
.rc-news button{background:var(--ink);color:var(--gold-soft);font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;padding:11px 15px;border-radius:2px;transition:background .25s}
.rc-news button:hover{background:var(--brass);color:#fff}
.rc-news .done{color:var(--green);font-size:13.5px;font-weight:600;display:flex;gap:8px;align-items:center}
@media(max-width:960px){.comm-grid{grid-template-columns:1fr}.rail{position:static}}

/* ============ PUBLIC RECORD (testimonials) ============ */
.record{background-image:repeating-linear-gradient(0deg,transparent 0 30px,rgba(13,36,56,.045) 30px 31px)}
.rec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.rec-card{background:var(--card);border:1px solid var(--line);border-radius:2px;padding:30px 28px;position:relative;box-shadow:var(--shadow);transition:transform .35s}
.rec-card:nth-child(1){transform:rotate(-1.1deg)}
.rec-card:nth-child(2){transform:rotate(.7deg)}
.rec-card:nth-child(3){transform:rotate(-.5deg)}
.rec-card:hover{transform:rotate(0) translateY(-6px)}
.rec-card::before{content:"";position:absolute;top:-11px;left:50%;width:86px;height:22px;transform:translateX(-50%) rotate(-1deg);background:rgba(201,162,39,.35);border:1px solid rgba(138,106,31,.3)}
.rec-card .rhead{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--red);border-bottom:1px solid var(--paper2);padding-bottom:12px;margin-bottom:18px}
.rec-card blockquote{font-family:var(--disp);font-size:17.5px;line-height:1.5;color:var(--ink);font-weight:500}
.rec-card blockquote::before{content:"“";color:var(--gold);font-size:34px;display:block;line-height:.6;margin-bottom:10px}
.rec-card .who{display:flex;gap:12px;align-items:center;margin-top:22px;border-top:1px dashed var(--line);padding-top:18px}
.rec-card .who img{width:42px;height:42px;border-radius:50%;filter:grayscale(1);border:2px solid var(--gold)}
.rec-card .who b{display:block;font-size:14px;color:var(--ink)}
.rec-card .who span{font-size:12px;color:var(--muted)}
@media(max-width:960px){.rec-grid{grid-template-columns:1fr;max-width:560px;margin:0 auto}}

/* ============ FOOTER ============ */
.contact-band{background:var(--brass);color:var(--paper)}
.contact-band .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:34px;padding-bottom:34px;flex-wrap:wrap}
.contact-band .big{font-family:var(--mono);font-size:clamp(1.4rem,3.4vw,2.2rem);font-weight:600;letter-spacing:.04em}
.contact-band .big small{display:block;font-size:11px;letter-spacing:.22em;text-transform:uppercase;opacity:.85;margin-bottom:4px;font-weight:400}
.contact-band p{font-size:14px;max-width:44ch}
footer.site{background:var(--navy);color:#9fb0c2;position:relative;overflow:hidden}
.foot-mark{position:absolute;bottom:-40px;left:0;right:0;text-align:center;font-family:var(--disp);font-weight:700;font-size:clamp(80px,16vw,220px);color:rgba(245,241,230,.03);letter-spacing:.02em;pointer-events:none;white-space:nowrap;line-height:1}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:44px;padding:70px 0 50px;position:relative}
.foot-brand img{width:66px;height:66px;border-radius:50%;border:2px solid var(--gold);margin-bottom:18px}
.foot-brand h3{color:#f5f1e6;font-size:21px}
.foot-brand .tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-soft);margin:6px 0 18px;display:block}
.foot-brand address{font-style:normal;font-size:13.5px;line-height:1.9}
.foot-brand address a{color:#e8edf2;text-decoration:none}
.foot-brand address a:hover{color:var(--gold-soft)}
.foot-col h4{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-weight:600;margin-bottom:18px}
.foot-col li{margin-bottom:10px}
.foot-col a{font-size:13.5px;text-decoration:none;color:#9fb0c2;transition:color .2s,padding-left .25s}
.foot-col a:hover{color:var(--gold-soft);padding-left:6px}
.socials{display:flex;gap:10px;margin-top:20px}
.socials a{width:36px;height:36px;border:1px solid rgba(245,241,230,.25);border-radius:2px;display:grid;place-items:center;color:#c6cfd8;transition:background .25s,color .25s,transform .25s}
.socials a:hover{background:var(--gold);color:var(--ink);border-color:var(--gold);transform:translateY(-3px)}
.foot-bottom{border-top:1px solid rgba(245,241,230,.14);padding:22px 0 26px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:12.5px;position:relative}
.foot-bottom nav{display:flex;gap:20px;flex-wrap:wrap}
.foot-bottom a{color:#9fb0c2;text-decoration:none}
.foot-bottom a:hover{color:var(--gold-soft)}
.foot-bottom .coords{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:#6d8098}
@media(max-width:960px){.foot-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.foot-grid{grid-template-columns:1fr}}

/* back to top + toast */
.to-top{position:fixed;right:22px;bottom:22px;width:46px;height:46px;background:var(--ink);color:var(--gold-soft);border:1px solid var(--gold);border-radius:2px;display:grid;place-items:center;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;z-index:90;transform:translateY(8px)}
.to-top.show{opacity:1;pointer-events:auto;transform:none}
.to-top:hover{background:var(--gold);color:var(--ink)}
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);background:var(--ink);color:var(--paper);font-family:var(--mono);font-size:12.5px;letter-spacing:.04em;padding:13px 22px;border:1px solid var(--gold);border-radius:2px;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;z-index:120;max-width:90vw;text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ============ REDUCED MOTION ============ */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important}
  .js .rv{opacity:1;transform:none}
  .lm>span{transform:none}
  .ticker .track{animation:none;flex-wrap:wrap}
  .kb img,.seal-mark{animation:none}
}
</style>
</head>
<body>
<a class="skip" href="#main">Skip to main content</a>

<!-- OFFICIAL STRIP -->
<div class="gov-strip">
  <div class="wrap">
    <div style="display:flex;align-items:center;gap:10px">
      <span class="flag" aria-hidden="true"></span>
      <span>An official website of the <b>City of Port Avery</b></span>
    </div>
    <div class="right">
      <span class="tel">311 SERVICE LINE · (401) 555-0311 · MON–SAT 7A–7P</span>
      <label for="lang" class="mono" style="font-size:10.5px;letter-spacing:.1em">LANGUAGE</label>
      <select id="lang" aria-label="Select language">
        <option>English</option><option>Español</option><option>Português</option><option>Tiếng Việt</option>
      </select>
    </div>
  </div>
</div>

<!-- ALERT BAR -->
<div class="alertbar" id="alertbar" role="status">
  <div class="wrap">
    <span class="tag">ADVISORY</span>
    <p><b>Leaf collection, Districts 1–3 begins Oct 20</b> — park on the posted side of each street. The boil-water advisory for Harbor Terrace was lifted Thursday at 4:10 p.m.</p>
    <button class="alert-close" id="alertClose" aria-label="Dismiss advisory">×</button>
  </div>
</div>

<!-- HEADER -->
<header class="site" id="siteHead">
  <div class="wrap head-row">
    <a class="brand" href="#main">
      <img src="https://placehold.co/120x120/0d2438/c9a227?text=P+A&font=oswald" alt="Seal of the City of Port Avery" width="54" height="54">
      <span class="names">
        <b>City of Port Avery</b>
        <span>Open doors · Open data · Open government</span>
      </span>
    </a>
    <nav class="main" aria-label="Primary">
      <ul>
        <li><a href="#services">Services</a></li>
        <li><a href="#departments">Departments</a></li>
        <li><a href="#permits">Permits</a></li>
        <li><a href="#transparency">Transparency</a></li>
        <li><a href="#report" class="hot">Report an Issue</a></li>
        <li><a href="#community">Meetings</a></li>
        <li><a href="#contact">Contact</a></li>
      </ul>
    </nav>
    <a href="#services" class="btn btn-ink head-cta">Pay Online
      <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
    </a>
    <button class="burger" id="navToggle" aria-label="Toggle menu" aria-expanded="false" aria-controls="mobilePanel">
      <i></i><i></i><i></i>
    </button>
  </div>
  <div class="mobile-panel" id="mobilePanel">
    <ul>
      <li><a href="#services">Services</a></li>
      <li><a href="#departments">Departments</a></li>
      <li><a href="#permits">Permits</a></li>
      <li><a href="#transparency">Transparency</a></li>
      <li><a href="#report">Report an Issue</a></li>
      <li><a href="#community">Meetings &amp; Events</a></li>
      <li><a href="#contact">Contact</a></li>
    </ul>
  </div>
</header>

<main id="main">

<!-- ============ MASTHEAD ============ -->
<section class="masthead" aria-label="Welcome">
  <svg class="seal-mark" viewBox="0 0 200 200" aria-hidden="true">
    <defs><path id="sealCir" d="M100,100 m-76,0 a76,76 0 1,1 152,0 a76,76 0 1,1 -152,0"/></defs>
    <circle cx="100" cy="100" r="96" fill="none" stroke="currentColor" stroke-width="2"/>
    <circle cx="100" cy="100" r="60" fill="none" stroke="currentColor" stroke-width="1.5"/>
    <text font-family="IBM Plex Mono, monospace" font-size="11" letter-spacing="4" fill="currentColor">
      <textPath href="#sealCir">CITY OF PORT AVERY ★ EST. 1887 ★ ONE FRONT DOOR ★ PUBLIC RECORD ★</textPath>
    </text>
    <path d="M100 72l8 18 20 2-15 13 4 19-17-10-17 10 4-19-15-13 20-2z" fill="currentColor"/>
  </svg>
  <div class="wrap mast-grid">
    <div>
      <p class="kicker" data-scramble>OFFICIAL MUNICIPAL PORTAL · FISCAL YEAR 2026</p>
      <h1>
        <span class="lm"><span style="--d:.15s">One city.</span></span>
        <span class="lm"><span style="--d:.32s">One <em>front door.</em></span></span>
      </h1>
      <p class="mast-sub">Pay a utility bill in under a minute, track any permit from intake to inspection, and follow every dollar of the FY2026 budget. Port Avery City Hall, online — built and maintained by the Department of Digital Services.</p>

      <form class="search" role="search" id="searchForm">
        <div class="search-box">
          <input type="text" id="searchInput" placeholder="Search 214 city services — try “water bill”…" aria-label="Search city services" autocomplete="off">
          <button type="submit">Search</button>
        </div>
        <div class="search-panel" id="searchPanel">
          <ul id="searchResults"></ul>
          <div class="foot">Can’t find it? Dial 311 · (401) 555-0311</div>
        </div>
      </form>

      <div class="quick">
        <a href="#services"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="3" y="5" width="18" height="14" rx="1"/><path d="M3 10h18M7 15h4"/></svg>Pay a Bill</a>
        <a href="#report"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M12 3l10 18H2L12 3zM12 10v4M12 17.5v.5"/></svg>Report an Issue</a>
        <a href="#services"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="3" y="4" width="18" height="17" rx="1"/><path d="M3 9h18M8 2v4M16 2v4"/></svg>Book a Facility</a>
        <a href="#services"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M9 12l2 2 4-5M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6l7-3z"/></svg>Register to Vote</a>
      </div>
    </div>

    <div class="mast-visual">
      <div class="clerk-card"><span class="dot"></span>CLERK’S COUNTER: <b>OPEN</b> · WAIT ≈ 4 MIN</div>
      <figure class="duo duo-main">
        <div class="kb"><img src="https://picsum.photos/seed/port-avery-city-hall/980/760?grayscale" alt="Port Avery City Hall at Harbor Square" width="980" height="760"></div>
      </figure>
      <figure class="duo duo-sub">
        <img src="https://picsum.photos/seed/port-avery-harbor/520/390?grayscale" alt="Fishing fleet moored in Avery Harbor">
      </figure>
      <span class="stamp" aria-hidden="true">Public Record</span>
    </div>
  </div>
</section>

<!-- ============ NOTICE TICKER ============ -->
<div class="ticker" aria-label="Official notices">
  <div class="track">
    <ul>
      <li><b>PUBLIC HEARING</b> FY2026 PROPOSED BUDGET · COUNCIL CHAMBERS · OCT 14 · 6:30 PM</li>
      <li><b>BID 26-118</b> FLEET REFUSE VEHICLES · SEALED BIDS CLOSE NOV 3</li>
      <li><b>LEAF COLLECTION</b> DISTRICTS 1–3 BEGIN OCT 20 · PARK ON POSTED SIDE</li>
      <li><b>CLERK’S COUNTER</b> OPEN SATURDAYS THROUGH NOVEMBER</li>
      <li><b>TRANSFER STATION</b> WINTER HOURS EFFECTIVE NOV 1</li>
      <li><b>RESIDENT SURVEY</b> CLOSES NOV 15 · YOUR INPUT SHAPES THE CAPITAL PLAN</li>
    </ul>
    <ul aria-hidden="true">
      <li><b>PUBLIC HEARING</b> FY2026 PROPOSED BUDGET · COUNCIL CHAMBERS · OCT 14 · 6:30 PM</li>
      <li><b>BID 26-118</b> FLEET REFUSE VEHICLES · SEALED BIDS CLOSE NOV 3</li>
      <li><b>LEAF COLLECTION</b> DISTRICTS 1–3 BEGIN OCT 20 · PARK ON POSTED SIDE</li>
      <li><b>CLERK’S COUNTER</b> OPEN SATURDAYS THROUGH NOVEMBER</li>
      <li><b>TRANSFER STATION</b> WINTER HOURS EFFECTIVE NOV 1</li>
      <li><b>RESIDENT SURVEY</b> CLOSES NOV 15 · YOUR INPUT SHAPES THE CAPITAL PLAN</li>
    </ul>
  </div>
</div>

<!-- ============ 01 SERVICES ============ -->
<section class="sec" id="services">
  <div class="wrap">
    <div class="sec-head rv">
      <div>
        <p class="label">Sec. 01 — Everyday Services <span class="star">✦</span></p>
        <h2>The most-requested services, one click from the front door.</h2>
      </div>
      <p class="updated">Updated Oct 8, 2025<br>Maintained by Digital Services</p>
    </div>
    <div class="svc-grid">
      <article class="svc rv" style="--d:.02s">
        <span class="num">Finance · No. 01</span>
        <span class="ic"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="3" y="5" width="18" height="14" rx="1"/><path d="M3 10h18M7 15h4"/></svg></span>
        <h3>Pay Utility Bill</h3>
        <p>Water, sewer and stormwater billing with autopay and paperless statements. Payments post to your account the same business day; e-check is always fee-free.</p>
        <span class="meta">Online · Instant · No fee</span>
        <a class="go" href="#services">Pay Online <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
      </article>
      <article class="svc rv" style="--d:.06s">
        <span class="num">311 Operations · No. 02</span>
        <span class="ic"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M12 3l10 18H2L12 3zM12 10v4M12 17.5v.5"/></svg></span>
        <h3>Report an Issue</h3>
        <p>Potholes, dark streetlights, missed pickups — file in two minutes and track your case from dispatch to closure. Median time to resolution last quarter: six days.</p>
        <span class="meta">1,209 cases closed in Q3</span>
        <a class="go" href="#report">Start a Report <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
      </article>
      <article class="svc rv" style="--d:.1s">
        <span class="num">Planning &amp; Zoning · No. 03</span>
        <span class="ic"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M6 2h9l4 4v16H6V2zM14 2v5h5M9 13h6M9 17h6"/></svg></span>
        <h3>Permits &amp; Licensing</h3>
        <p>Building, electrical, special-event and short-term rental permits. Minor-work reviews return within five business days as set in Municipal Code §14.02.</p>
        <span class="meta">FY2026 fee schedule posted</span>
        <a class="go" href="#permits">Check Fees <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
      </article>
      <article class="svc rv" style="--d:.14s">
        <span class="num">Assessor · No. 04</span>
        <span class="ic"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M3 10l9-7 9 7M5 9v11h14V9M9 20v-6h6v6"/></svg></span>
        <h3>Property &amp; Tax Records</h3>
        <p>Search deeds, assessments and FY2025 tax bills online. Homestead and senior-veteran exemption filings are accepted through April 1 of each fiscal year.</p>
        <span class="meta">42,118 parcels on record</span>
        <a class="go" href="#transparency">Search Records <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
      </article>
      <article class="svc rv" style="--d:.02s">
        <span class="num">City Clerk · No. 05</span>
        <span class="ic"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M9 12l2 2 4-5M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6l7-3z"/></svg></span>
        <h3>Register to Vote</h3>
        <p>Register, update your address, or request an absentee ballot. The registration deadline for the November 4 general election is October 5 at 4:30 p.m.</p>
        <span class="meta">Deadline Oct 5 · 4:30 PM</span>
        <a class="go" href="#community">Register <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
      </article>
      <article class="svc rv" style="--d:.06s">
        <span class="num">Parks &amp; Rec · No. 06</span>
        <span class="ic"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M12 3l5 7h-3l4 6H6l4-6H7l5-7zM12 16v5M8 21h8"/></svg></span>
        <h3>Book Parks &amp; Facilities</h3>
        <p>Shelters, ball fields, the Harbor Room and the Bandstand. Residents can book up to 90 days out at resident rates; insurance riders are available for events over 100 guests.</p>
        <span class="meta">34 parks · 6 boat ramps</span>
        <a class="go" href="#community">Book a Facility <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
      </article>
      <article class="svc rv" style="--d:.1s">
        <span class="num">Economic Dev · No. 07</span>
        <span class="ic"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="3" y="7" width="18" height="13" rx="1"/><path d="M8 7V5a2 2 0 012-2h4a2 2 0 012 2v2M3 13h18"/></svg></span>
        <h3>Start or Renew a Business</h3>
        <p>From home occupations to harbor vendors: one application, one annual renewal, and a compliance checklist tailored to your use class before you pay a dollar.</p>
        <span class="meta">Renewals due Jan 31</span>
        <a class="go" href="#permits">Apply <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
      </article>
      <article class="svc rv" style="--d:.14s">
        <span class="num">Public Safety · No. 08</span>
        <span class="ic"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="4" y="4" width="16" height="16" rx="1"/><path d="M8 9h8M8 13h5M4 16l4 4h12"/></svg></span>
        <h3>Parking &amp; Citations</h3>
        <p>Residential permit zones, meter maps, and citation management. You have a 10-day window to contest online — no court date required for most notices.</p>
        <span class="meta">Contest window: 10 days</span>
        <a class="go" href="#services">Manage <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
      </article>
    </div>
  </div>
</section>

<!-- ============ 02 DEPARTMENTS ============ -->
<section class="sec paper2" id="departments">
  <div class="wrap dept-grid">
    <div class="dept-sticky rv">
      <p class="label">Sec. 02 — Directory <span class="star">✦</span></p>
      <h2>Who’s who at City Hall.</h2>
      <p>Five departments deliver nearly every service on this site — from the crews paving District 4 to the examiners reviewing your site plan. Each listing includes direct lines, counter hours and the division lead for public records requests.</p>
      <p>The full organizational chart and the FY2026 staffing plan are published under <b>Transparency</b>, updated each July with the adopted budget.</p>
      <div class="dir-card">
        <h4>Not sure where to start?</h4>
        <p>Call <b>311</b> — (401) 555-0311 — or write <a href="mailto:frontdesk@portavery.gov">frontdesk@portavery.gov</a>. A human answers within one business day and routes your request to the right desk with a tracking number.</p>
      </div>
    </div>
    <div class="dept-list">
      <article class="dept rv">
        <span class="dnum">DEPT 01</span>
        <div>
          <h3>Public Works <span class="pill">Infrastructure</span></h3>
          <p>Streets, water &amp; sewer, fleet maintenance and the Transfer Station. Crews run a 24/7 dispatch line for water-main breaks and downed signage; leaf and brush routes publish each fall by district.</p>
          <div class="dmeta">
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>412 Dock St.</span>
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 5h4l2 5-3 2a13 13 0 005 5l2-3 5 2v4a2 2 0 01-2 2A16 16 0 012 7a2 2 0 012-2z"/></svg>(401) 555-0312</span>
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 3"/></svg>Mon–Fri 7:00–4:00</span>
          </div>
          <a class="dcontact" href="mailto:publicworks@portavery.gov">Contact Department →</a>
        </div>
      </article>
      <article class="dept rv" style="--d:.05s">
        <span class="dnum">DEPT 02</span>
        <div>
          <h3>Planning &amp; Zoning <span class="pill">Land Use</span></h3>
          <p>All development review under Title 14 of the Municipal Code — site plans, variances, and historic-district certificates. Variances go to the Zoning Board of Review; staff reports post 72 hours before each public hearing.</p>
          <div class="dmeta">
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>City Hall, 2nd Floor</span>
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 5h4l2 5-3 2a13 13 0 005 5l2-3 5 2v4a2 2 0 01-2 2A16 16 0 012 7a2 2 0 012-2z"/></svg>(401) 555-0314</span>
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 3"/></svg>Counter 8:00–4:30</span>
          </div>
          <a class="dcontact" href="mailto:planning@portavery.gov">Contact Department →</a>
        </div>
      </article>
      <article class="dept rv" style="--d:.1s">
        <span class="dnum">DEPT 03</span>
        <div>
          <h3>Finance &amp; Budget <span class="pill">Fiscal</span></h3>
          <p>Billing, payroll, procurement and the city’s books. The check register publishes monthly, the Annual Comprehensive Financial Report files by February 28, and all bids and RFPs run through the purchasing portal.</p>
          <div class="dmeta">
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>City Hall, 1st Floor</span>
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 5h4l2 5-3 2a13 13 0 005 5l2-3 5 2v4a2 2 0 01-2 2A16 16 0 012 7a2 2 0 012-2z"/></svg>(401) 555-0316</span>
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 3"/></svg>Mon–Fri 8:30–4:30</span>
          </div>
          <a class="dcontact" href="mailto:finance@portavery.gov">Contact Department →</a>
        </div>
      </article>
      <article class="dept rv" style="--d:.15s">
        <span class="dnum">DEPT 04</span>
        <div>
          <h3>Public Safety <span class="pill">24/7</span></h3>
          <p>Police non-emergency services, the Fire Marshal’s office and Emergency Management. For emergencies, always call 911; 311 handles noise complaints, property checks, burn permits and everything else.</p>
          <div class="dmeta">
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>88 Ferry St.</span>
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 5h4l2 5-3 2a13 13 0 005 5l2-3 5 2v4a2 2 0 01-2 2A16 16 0 012 7a2 2 0 012-2z"/></svg>Non-emergency (401) 555-0318</span>
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 3"/></svg>Front desk 24/7</span>
          </div>
          <a class="dcontact" href="mailto:safety@portavery.gov">Contact Department →</a>
        </div>
      </article>
      <article class="dept rv" style="--d:.2s">
        <span class="dnum">DEPT 05</span>
        <div>
          <h3>Parks, Recreation &amp; Culture <span class="pill">Community</span></h3>
          <p>Thirty-four parks, six public boat ramps, plus senior, youth and aquatics programming. Event permits on parkland, the Harbor Room and the Bandstand route through this desk — residents book 90 days ahead.</p>
          <div class="dmeta">
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>Gullwing Pavilion, Alder Park</span>
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 5h4l2 5-3 2a13 13 0 005 5l2-3 5 2v4a2 2 0 01-2 2A16 16 0 012 7a2 2 0 012-2z"/></svg>(401) 555-0320</span>
            <span><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 3"/></svg>Daily 8:00–8:00</span>
          </div>
          <a class="dcontact" href="mailto:parks@portavery.gov">Contact Department →</a>
        </div>
      </article>
    </div>
  </div>
</section>

<!-- ============ 03 PERMITS ============ -->
<section class="sec" id="permits">
  <div class="wrap">
    <div class="sec-head rv">
      <div>
        <p class="label">Sec. 03 — Permits &amp; Review <span class="star">✦</span></p>
        <h2>From application to inspection, on a published clock.</h2>
      </div>
      <p class="updated">Fee schedule adopted Jul 1, 2025<br>Ord. 2025-09 · Municipal Code Title 14</p>
    </div>
    <div class="permit-grid">
      <div class="rv">
        <div class="steps">
          <div class="step">
            <span class="no">1</span>
            <div>
              <h3>File your application</h3>
              <p>Apply online or at the Planning counter, second floor of City Hall. Attach plans, proof of ownership, and — for commercial work — your contractor’s city registration number.</p>
              <span class="slabel">Same-day intake number</span>
            </div>
          </div>
          <div class="step">
            <span class="no">2</span>
            <div>
              <h3>Plan review</h3>
              <p>Examiners check zoning, building and fire life-safety under Municipal Code §14.02. Minor work returns in five business days; full plan review in fifteen. If revisions are needed, the clock pauses until you resubmit.</p>
              <span class="slabel">5–15 business days</span>
            </div>
          </div>
          <div class="step">
            <span class="no">3</span>
            <div>
              <h3>Issuance &amp; inspections</h3>
              <p>Your permit card posts on-site, and inspections book online with same-week slots. Final sign-off is recorded to the parcel file, so the next owner — and the Assessor — can see the full history.</p>
              <span class="slabel">Inspections within 5 days</span>
            </div>
          </div>
        </div>
        <a class="btn btn-gold" href="#services" style="margin-top:28px">Start a Permit Application
          <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
        </a>
      </div>
      <div class="rv" style="--d:.1s">
        <div class="fee-card">
          <header>
            <h3>FY2026 Fee Schedule</h3>
            <span>Effective Jul 1, 2025</span>
          </header>
          <table class="fee-table">
            <tbody>
              <tr><td>Residential alteration</td><td class="amt">$185 + $12 / $1k valuation</td></tr>
              <tr><td>Electrical service or circuit</td><td class="amt">$95</td></tr>
              <tr><td>Sign permit (per face)</td><td class="amt">$140</td></tr>
              <tr><td>Special event, public right-of-way</td><td class="amt">$250</td></tr>
              <tr><td>Short-term rental registration</td><td class="amt">$310 / yr</td></tr>
              <tr><td>Demolition</td><td class="amt">$520</td></tr>
            </tbody>
          </table>
          <p class="fee-note">CARD, CHECK OR ACH · INTAKE FEES NON-REFUNDABLE ONCE REVIEW BEGINS · §14.05</p>
        </div>
        <div class="lookup">
          <h4>Check an application status</h4>
          <p class="sub">Enter the number from your intake receipt — e.g., BLD-2025-1187.</p>
          <form id="statusForm">
            <input type="text" id="statusInput" placeholder="BLD-2025-1187" aria-label="Permit number">
            <button type="submit">Look Up</button>
          </form>
          <div class="lookup-result" id="statusResult" role="status"></div>
        </div>
      </div>
    </div>

    <div class="rv">
      <p class="label" style="margin-bottom:8px">Common Questions <span class="star">✦</span></p>
      <div class="faq">
        <div class="faq-item">
          <button class="faq-q" aria-expanded="false">Do I need a permit to replace a fence?
            <span class="fi" aria-hidden="true"></span></button>
          <div class="faq-a"><div><p>Fences under six feet generally do not require a permit — unless the property sits in the Harborview or Old Ferry historic districts, where a Certificate of Appropriateness is required under Ordinance 2023-17. Corner-lot visibility triangles apply either way.</p></div></div>
        </div>
        <div class="faq-item">
          <button class="faq-q" aria-expanded="false">Does my contractor have to be registered with the city?
            <span class="fi" aria-hidden="true"></span></button>
          <div class="faq-a"><div><p>Yes. Contractors must hold a current state license plus a City of Port Avery registration, with a certificate of insurance on file. You can verify any registration at the Planning counter or by calling (401) 555-0314 — it takes about two minutes.</p></div></div>
        </div>
        <div class="faq-item">
          <button class="faq-q" aria-expanded="false">How long will plan review actually take?
            <span class="fi" aria-hidden="true"></span></button>
          <div class="faq-a"><div><p>Minor work (water heaters, re-roofs, like-for-like replacement) returns within five business days. Full plan review is fifteen business days per Municipal Code §14.02(c). The review clock pauses while corrections are outstanding, so responding quickly to examiner comments is the fastest lever you control.</p></div></div>
        </div>
        <div class="faq-item">
          <button class="faq-q" aria-expanded="false">How long is a permit valid once issued?
            <span class="fi" aria-hidden="true"></span></button>
          <div class="faq-a"><div><p>Work must begin within 180 days of issuance and continue diligently. One written extension of up to 90 days is granted on request before expiration; beyond that, the permit lapses and fees must be re-paid.</p></div></div>
        </div>
        <div class="faq-item">
          <button class="faq-q" aria-expanded="false">Can I get a refund if I withdraw my application?
            <span class="fi" aria-hidden="true"></span></button>
          <div class="faq-a"><div><p>Applications withdrawn before an examiner is assigned receive a refund minus a $45 processing fee. Once review has begun, intake fees are non-refundable under §14.05, though unused inspection deposits are returned at project close-out.</p></div></div>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- ============ 04 TRANSPARENCY ============ -->
<section class="sec dark hatch" id="transparency">
  <div class="wrap">
    <div class="sec-head rv">
      <div>
        <p class="label">Sec. 04 — Transparency <span class="star">✦</span></p>
        <h2>The city’s books, on the shelf and online.</h2>
      </div>
      <p class="updated" style="color:#6d8098">ACFR filed Feb 28, 2025<br>Check register posts monthly</p>
    </div>
    <div class="trans-grid">
      <div class="trans-left rv">
        <p><b>Every dollar has a line item.</b> The adopted FY2026 budget, the monthly check register, and every council appropriation are published in machine-readable form — no records request required to see where your taxes go.</p>
        <p>For everything else, Municipal Code §2.30 guarantees the public’s right to inspect city records. File a request online or at the Clerk’s counter; the city responds within <b>five business days</b>, and fees are waived for requests under 50 pages.</p>
        <div class="counters">
          <div class="counter"><div class="cv" data-to="214.6" data-dec="1" data-prefix="$" data-suffix="M">$0.0M</div><div class="cl">FY2026 Adopted Budget</div></div>
          <div class="counter"><div class="cv" data-to="1284">0</div><div class="cl">Records requests fulfilled, 2025</div></div>
          <div class="counter"><div class="cv" data-to="96.4" data-dec="1" data-suffix="%">0%</div><div class="cl">Response within 5 days</div></div>
          <div class="counter"><div class="cv" data-to="121">0</div><div class="cl">Open-data datasets published</div></div>
        </div>
        <div class="trans-ctas">
          <a class="btn btn-gold" href="#contact">File a Records Request
            <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
          <a class="btn btn-line" href="#transparency">Open Data Portal</a>
        </div>
      </div>
      <div class="budget rv" style="--d:.1s">
        <h3>Where FY2026 appropriations go</h3>
        <p class="bsub">FY2026 · $214.6M total · Adopted Jun 24, 2025</p>
        <div class="bar-row"><div class="bl"><b>Public Safety</b><span>34% · $73.0M</span></div><div class="bar"><i data-pct="34"></i></div></div>
        <div class="bar-row"><div class="bl"><b>Infrastructure &amp; Mobility</b><span>21% · $45.1M</span></div><div class="bar"><i data-pct="21"></i></div></div>
        <div class="bar-row"><div class="bl"><b>Housing &amp; Community Development</b><span>15% · $32.2M</span></div><div class="bar"><i data-pct="15"></i></div></div>
        <div class="bar-row"><div class="bl"><b>Parks, Recreation &amp; Culture</b><span>11% · $23.6M</span></div><div class="bar"><i data-pct="11"></i></div></div>
        <div class="bar-row"><div class="bl"><b>General Administration</b><span>9% · $19.3M</span></div><div class="bar"><i data-pct="9"></i></div></div>
        <div class="bar-row"><div class="bl"><b>Reserves &amp; Debt Service</b><span>10% · $21.4M</span></div><div class="bar"><i data-pct="10"></i></div></div>
        <div class="docs">
          <a href="#transparency"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M6 2h9l4 4v16H6V2zM14 2v5h5"/></svg>Annual Comprehensive Financial Report<span class="du">PDF · FEB 2025</span></a>
          <a href="#transparency"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M6 2h9l4 4v16H6V2zM14 2v5h5"/></svg>September Check Register<span class="du">CSV · OCT 3</span></a>
          <a href="#community"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M6 2h9l4 4v16H6V2zM14 2v5h5"/></svg>Council Meeting Minutes<span class="du">UPDATED WEEKLY</span></a>
          <a href="#permits"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M6 2h9l4 4v16H6V2zM14 2v5h5"/></svg>Municipal Code — Full Text<span class="du">REV. OCT 2025</span></a>
          <a href="#transparency"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M6 2h9l4 4v16H6V2zM14 2v5h5"/></svg>Lobbyist &amp; Campaign Finance Registry<span class="du">Q3 FILINGS</span></a>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- ============ 05 REPORT AN ISSUE ============ -->
<section class="sec paper2" id="report">
  <div class="wrap">
    <div class="sec-head rv">
      <div>
        <p class="label">Sec. 05 — 311 Service Desk <span class="star">✦</span></p>
        <h2>See something? File it. Track it. Watch it close.</h2>
      </div>
      <p class="updated">Every case gets a number.<br>Every number gets a crew.</p>
    </div>
    <div class="report-grid">
      <div class="wizard rv">
        <ol class="wprog" aria-label="Report progress">
          <li class="on" data-p="1">01 · Category</li>
          <li data-p="2">02 · Details</li>
          <li data-p="3">03 · Review &amp; File</li>
        </ol>
        <form id="issueForm" novalidate>
          <div class="wstep active" data-step="1">
            <h3>What’s the problem?</h3>
            <p class="ws-sub">Pick the closest match — it routes your report to the right crew automatically.</p>
            <div class="chips">
              <label class="chip-c"><input type="radio" name="cat" value="Pothole / Roadway"><span><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><circle cx="12" cy="12" r="9"/><path d="M8 13c1-1.5 2.5-1 3.5 0s2.5 1.5 4 0"/></svg>Pothole / Roadway<small>Pavement, sinkholes, signage</small></span></label>
              <label class="chip-c"><input type="radio" name="cat" value="Streetlight Out"><span><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M9 18h6M10 21h4M12 3a6 6 0 014 10.5c-.6.5-1 1.5-1 2.5h-6c0-1-.4-2-1-2.5A6 6 0 0112 3z"/></svg>Streetlight Out<small>Dark or flickering heads</small></span></label>
              <label class="chip-c"><input type="radio" name="cat" value="Graffiti"><span><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M12 19l7-7-4-4-7 7-1 5 5-1zM14 5l3 3"/></svg>Graffiti<small>Ablatement within 7 days</small></span></label>
              <label class="chip-c"><input type="radio" name="cat" value="Missed Pickup"><span><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M3 6h13l2 4h3v8h-2M3 6v8h2M5 18a2 2 0 104 0M15 18a2 2 0 104 0M5 14h10"/></svg>Missed Pickup<small>Trash, recycling, yard waste</small></span></label>
              <label class="chip-c"><input type="radio" name="cat" value="Water / Sewer"><span><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M12 3s6 7 6 11a6 6 0 11-12 0c0-4 6-11 6-11z"/></svg>Water / Sewer<small>Leaks, hydrants, backups</small></span></label>
              <label class="chip-c"><input type="radio" name="cat" value="Sidewalk / Tree"><span><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M12 21v-7M12 3l5 6h-3l4 5H6l4-5H7l5-6z"/></svg>Sidewalk / Tree<small>Trip hazards, limbs, stumps</small></span></label>
            </div>
            <p class="hint-err" id="catErr">Please choose a category to continue.</p>
            <div class="wbtns"><span></span>
              <button type="button" class="btn btn-ink" data-next="2">Continue
                <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></button>
            </div>
          </div>

          <div class="wstep" data-step="2">
            <h3>Where is it, and what do you see?</h3>
            <p class="ws-sub">Be specific — “NW corner of Ferry &amp; 3rd, near hydrant” beats “somewhere downtown.”</p>
            <div class="frow">
              <label for="fLoc">Location *</label>
              <input type="text" id="fLoc" placeholder="Address or intersection" required>
            </div>
            <div class="frow">
              <label for="fDesc">Description *</label>
              <textarea id="fDesc" placeholder="What’s happening, how long it’s been there, anything a crew should know…" required></textarea>
            </div>
            <div class="frow">
              <label>Priority</label>
              <div class="urg">
                <label><input type="radio" name="urg" value="Routine" checked> Routine — standard queue</label>
                <label><input type="radio" name="urg" value="Urgent"> Urgent — safety hazard</label>
              </div>
            </div>
            <div class="frow">
              <label for="fEmail">Email (optional — for status updates)</label>
              <input type="email" id="fEmail" placeholder="you@example.com">
            </div>
            <div class="wbtns">
              <button type="button" class="btn btn-line" data-back="1">← Back</button>
              <button type="button" class="btn btn-ink" data-next="3">Continue
                <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6"/></svg></button>
            </div>
          </div>

          <div class="wstep" data-step="3">
            <h3>Review &amp; file your report</h3>
            <p class="ws-sub">This becomes part of the public 311 service log. Confirm the details below.</p>
            <div class="wsummary">
              <dl>
                <dt>Category</dt><dd id="sumCat">—</dd>
                <dt>Location</dt><dd id="sumLoc">—</dd>
                <dt>Priority</dt><dd id="sumUrg">—</dd>
                <dt>Description</dt><dd id="sumDesc">—</dd>
              </dl>
            </div>
            <div class="wbtns">
              <button type="button" class="btn btn-line" data-back="2">← Back</button>
              <button type="submit" class="btn btn-gold">File Report
                <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 13l4 4L19 7"/></svg></button>
            </div>
          </div>
        </form>

        <div class="confirm" id="confirmBox">
          <h3>Report filed. Thank you.</h3>
          <p>Your case number is below — keep it for tracking. Routine cases are dispatched within two business days; urgent safety reports go to a crew the same day. Status updates go to your email if you provided one.</p>
          <div class="case" id="caseNo">PA-25-00000</div>
          <p class="mono" style="font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--brass)">ENTERED INTO THE PUBLIC 311 SERVICE LOG</p>
          <button class="btn btn-line" id="fileAnother" style="margin-top:22px">File Another Report</button>
        </div>
      </div>

      <div class="rv" style="--d:.1s">
        <div class="feed-head">
          <h3>From the crew log</h3>
          <span class="feed-stat">1,209 closed in Q3 · Median 6 days</span>
        </div>
        <ul class="feed" id="feed">
          <li>
            <img class="thumb" src="https://picsum.photos/seed/pothole-repair-crew/200/150?grayscale" alt="Crew repairing a pothole">
            <div>
              <div class="ft"><b>Harborview Ave pothole cluster</b><span class="stamp-chip resolved">Resolved</span></div>
              <p class="fm">Reported Sep 30 · Filled and photographed Oct 3 · Case PA-25-03988</p>
              <p class="fw">Public Works · Asphalt crew 2</p>
            </div>
          </li>
          <li>
            <img class="thumb" src="https://picsum.photos/seed/streetlight-repair/200/150?grayscale" alt="Streetlight under repair">
            <div>
              <div class="ft"><b>Dark streetlight, Elm &amp; Wharf</b><span class="stamp-chip resolved">Resolved</span></div>
              <p class="fm">Reported Sep 27 · Ballast replaced Sep 29 · Case PA-25-03961</p>
              <p class="fw">Public Works · Electrical division</p>
            </div>
          </li>
          <li>
            <img class="thumb" src="https://picsum.photos/seed/graffiti-wall-cleanup/200/150?grayscale" alt="Graffiti removal on a wall">
            <div>
              <div class="ft"><b>Graffiti, Ferry St. underpass</b><span class="stamp-chip open">In Progress</span></div>
              <p class="fm">Reported Oct 6 · Ablatement scheduled this week · Case PA-25-04012</p>
              <p class="fw">Neighborhood Services · Ablatement team</p>
            </div>
          </li>
        </ul>
      </div>
    </div>
  </div>
</section>

<!-- ============ 06 COMMUNITY / EVENTS + SIDEBAR ============ -->
<section class="sec" id="community">
  <div class="wrap">
    <div class="sec-head rv">
      <div>
        <p class="label">Sec. 06 — On the Calendar <span class="star">✦</span></p>
        <h2>Meetings, markets &amp; muster days.</h2>
      </div>
      <p class="updated">Agendas post 72 hrs ahead<br>per Council Rule 9</p>
    </div>
    <div class="comm-grid">
      <div>
        <article class="event rv">
          <div class="dateblock"><div class="dm">Oct · Tue</div><div class="dd">14</div></div>
          <div>
            <h3>Public Hearing: FY2026 Proposed Budget <span class="etag hearing">Hearing</span></h3>
            <p>The Council takes public comment on the $214.6M proposed budget before final adoption. Comment cards are available at the door; remote testimony must be filed with the Clerk by 5:00 p.m. the same day.</p>
            <p class="eloc"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>Council Chambers, 1 Harbor Square · 6:30 PM · Live on Ch. 12</p>
          </div>
        </article>
        <article class="event rv" style="--d:.05s">
          <div class="dateblock"><div class="dm">Oct · Sat</div><div class="dd">18</div></div>
          <div>
            <h3>Leaf Drop-Off &amp; Free Mulch Giveaway <span class="etag event">Event</span></h3>
            <p>Bring bagged leaves to the Transfer Station between 8:00 a.m. and 2:00 p.m.; finished compost from last season goes back to residents, first come, first served. Proof of residency required.</p>
            <p class="eloc"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>Transfer Station, 60 Gravel Pit Rd · 8 AM–2 PM</p>
          </div>
        </article>
        <article class="event rv" style="--d:.1s">
          <div class="dateblock"><div class="dm">Oct · Tue</div><div class="dd">21</div></div>
          <div>
            <h3>Planning Commission: Harbor Overlay Amendments <span class="etag hearing">Hearing</span></h3>
            <p>Second reading of the proposed Harbor Overlay district, including new ground-floor-use standards along Wharf Street. Staff report and exhibit set post October 14 under the 72-hour notice rule.</p>
            <p class="eloc"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>Committee Room B · 7:00 PM</p>
          </div>
        </article>
        <article class="event rv" style="--d:.15s">
          <div class="dateblock"><div class="dm">Nov · Tue</div><div class="dd">04</div></div>
          <div>
            <h3>General Election — Polls Open 7 AM–8 PM <span class="etag election">Election</span></h3>
            <p>All twelve precincts open at 7:00 a.m. District maps, sample ballots and accessible-voting locations are available at the Clerk’s counter and in the open-data portal. Registration closes October 5.</p>
            <p class="eloc"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>Your precinct · Find it at the Clerk’s office</p>
          </div>
        </article>
        <article class="event rv" style="--d:.2s">
          <div class="dateblock"><div class="dm">Nov · Thu</div><div class="dd">13</div></div>
          <div>
            <h3>Public Bid Opening 26-118: Fleet Refuse Vehicles <span class="etag bid">Bid</span></h3>
            <p>Sealed bids for six rear-load refuse vehicles, opened and read aloud in public. Bid packets are available from Purchasing; a pre-bid site visit runs November 5 at the Fleet yard.</p>
            <p class="eloc"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg>Council Chambers · 2:00 PM</p>
          </div>
        </article>
      </div>

      <!-- SIDEBAR RAIL -->
      <aside class="rail" aria-label="Alerts, status and newsletter">
        <div class="rail-card rc-alert rv">
          <header><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 3l10 18H2L12 3zM12 10v4M12 17.5v.5"/></svg>Emergency Alerts</header>
          <div class="rb">
            <div class="alert-item"><time>Oct 9 · 4:10 PM</time><b>Boil-water advisory lifted</b>Harbor Terrace tested clear on two consecutive samples. No further action required.</div>
            <div class="alert-item"><time>Oct 8 · 9:00 AM</time><b>Red-flag warning</b>Gusts to 40 mph through Friday. No open burning; fireworks prohibited citywide.</div>
          </div>
        </div>
        <div class="rail-card rc-status rv" style="--d:.08s">
          <header><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 3"/></svg>Service Status</header>
          <div class="rb">
            <div class="status-row"><span>Water &amp; Sewer</span><span class="st ok">Normal</span></div>
            <div class="status-row"><span>Trash / Recycling</span><span class="st ok">On schedule</span></div>
            <div class="status-row"><span>Transfer Station</span><span class="st note">Winter hrs Nov 1</span></div>
            <div class="status-row"><span>Clerk’s counter</span><span class="st note">Closed Sat Nov 8</span></div>
            <div class="status-row"><span>Transit Route 4</span><span class="st note">Detour via Elm</span></div>
          </div>
        </div>
        <div class="rail-card rc-news rv" style="--d:.16s">
          <header><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 6l9 6 9-6M4 5h16v14H4z"/></svg>The Avery Ledger</header>
          <div class="rb">
            <p>One civic email a month: agendas worth knowing, roadwork ahead, and what your taxes built. No spam — it’s in the municipal code, honestly.</p>
            <form id="nlForm">
              <input type="email" id="nlEmail" placeholder="you@example.com" required aria-label="Email address">
              <button type="submit">Sign Up</button>
            </form>
          </div>
        </div>
      </aside>
    </div>
  </div>
</section>

<!-- ============ 07 PUBLIC RECORD / TESTIMONIALS ============ -->
<section class="sec record paper2" aria-label="Community voices">
  <div class="wrap">
    <div class="sec-head rv">
      <div>
        <p class="label">Sec. 07 — From the Public Record <span class="star">✦</span></p>
        <h2>What neighbors put on the record.</h2>
      </div>
      <p class="updated">Reproduced with permission<br>from minutes &amp; correspondence</p>
    </div>
    <div class="rec-grid">
      <article class="rec-card rv">
        <p class="rhead">Public Comment · Council Meeting of Sep 9, 2025 · Item 7(a)</p>
        <blockquote>I filed a pothole on Harborview Tuesday night; it was filled by Friday morning, and the case closed with a photo attached. I didn’t have to call anyone twice. That’s the whole point.</blockquote>
        <div class="who">
          <img src="https://i.pravatar.cc/84?u=dana-whitcomb" alt="Portrait of Dana Whitcomb">
          <div><b>Dana Whitcomb</b><span>Resident, District 4 · 22 years on Harborview</span></div>
        </div>
      </article>
      <article class="rec-card rv" style="--d:.08s">
        <p class="rhead">Correspondence · Small Business Desk · Received Aug 22, 2025</p>
        <blockquote>We renewed our bakery license and added a sidewalk-café permit in one session. The checklist told us exactly what the Fire Marshal would need before we ever paid a fee.</blockquote>
        <div class="who">
          <img src="https://i.pravatar.cc/84?u=marcus-ferreira" alt="Portrait of Marcus Ferreira">
          <div><b>Marcus Ferreira</b><span>Owner, Ferry Street Bakehouse · Old Ferry District</span></div>
        </div>
      </article>
      <article class="rec-card rv" style="--d:.16s">
        <p class="rhead">Resident Survey · Submitted Oct 2, 2025 · Respondent 1,844</p>
        <blockquote>Moved here in August. Registered to vote, signed up for leaf-collection alerts, and booked the Bandstand for our block party — all before lunch, all from one page.</blockquote>
        <div class="who">
          <img src="https://i.pravatar.cc/84?u=priya-raghavan" alt="Portrait of Priya Raghavan">
          <div><b>Priya Raghavan</b><span>New resident, Ferry District · Arrived Aug 2025</span></div>
        </div>
      </article>
    </div>
  </div>
</section>

<!-- ============ CONTACT BAND ============ -->
<div class="contact-band" id="contact-band">
  <div class="wrap">
    <div class="big"><small>Questions? Humans answer.</small>311 · (401) 555-0311</div>
    <p>City Hall · 1 Harbor Square, Port Avery, RI 02872 · Mon–Fri 8:30–4:30, Clerk’s counter open Thursdays until 7:00 p.m. · <a href="mailto:frontdesk@portavery.gov" style="color:#fff;font-weight:600">frontdesk@portavery.gov</a></p>
  </div>
</div>

</main>

<!-- ============ FOOTER ============ -->
<footer class="site" id="contact">
  <div class="foot-mark" aria-hidden="true">PORT AVERY</div>
  <div class="wrap foot-grid">
    <div class="foot-brand">
      <img src="https://placehold.co/132x132/0d2438/c9a227?text=P+A&font=oswald" alt="Seal of the City of Port Avery" width="66" height="66">
      <h3>City of Port Avery</h3>
      <span class="tag">Open doors · Open data · Open government</span>
      <address>
        1 Harbor Square, Port Avery, RI 02872<br>
        311 / (401) 555-0311 · Fax (401) 555-0399<br>
        <a href="mailto:frontdesk@portavery.gov">frontdesk@portavery.gov</a><br>
        Hours: Mon–Fri 8:30 a.m.–4:30 p.m.
      </address>
      <div class="socials">
        <a href="#" aria-label="Port Avery on X"><svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M18.9 2H22l-6.8 7.8L23.2 22h-6.3l-4.9-6.4L6.4 22H3.3l7.3-8.3L1 2h6.5l4.4 5.9L18.9 2zm-1.1 18h1.7L7.1 3.9H5.3L17.8 20z"/></svg></a>
        <a href="#" aria-label="Port Avery on Facebook"><svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M13.5 22v-8h2.7l.4-3.2h-3.1V8.7c0-.9.3-1.6 1.6-1.6h1.7V4.2c-.3 0-1.3-.1-2.5-.1-2.5 0-4.2 1.5-4.2 4.3v2.4H7.4V14h2.7v8h3.4z"/></svg></a>
        <a href="#" aria-label="Port Avery on Instagram"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="4"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r="1" fill="currentColor" stroke="none"/></svg></a>
        <a href="#" aria-label="Port Avery on YouTube"><svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M23 8s-.2-1.6-.9-2.3c-.9-.9-1.9-.9-2.3-1C16.6 4.5 12 4.5 12 4.5s-4.6 0-7.8.2c-.4.1-1.4.1-2.3 1C1.2 6.4 1 8 1 8S.8 9.9.8 11.8v1.7c0 1.9.2 3.8.2 3.8s.2 1.6.9 2.3c.9.9 2 .9 2.5 1 1.8.2 7.6.2 7.6.2s4.6 0 7.8-.2c.4-.1 1.4-.1 2.3-1 .7-.7.9-2.3.9-2.3s.2-1.9.2-3.8v-1.7C23.2 9.9 23 8 23 8zM9.8 15.3V8.9l6.2 3.2-6.2 3.2z"/></svg></a>
      </div>
    </div>
    <div class="foot-col">
      <h4>Departments</h4>
      <ul>
        <li><a href="#departments">Public Works</a></li>
        <li><a href="#departments">Planning &amp; Zoning</a></li>
        <li><a href="#departments">Finance &amp; Budget</a></li>
        <li><a href="#departments">Public Safety</a></li>
        <li><a href="#departments">Parks &amp; Recreation</a></li>
        <li><a href="#departments">Full Directory</a></li>
      </ul>
    </div>
    <div class="foot-col">
      <h4>Services</h4>
      <ul>
        <li><a href="#services">Pay a Utility Bill</a></li>
        <li><a href="#report">Report an Issue (311)</a></li>
        <li><a href="#permits">Permits &amp; Licensing</a></li>
        <li><a href="#community">Register to Vote</a></li>
        <li><a href="#services">Book a Facility</a></li>
        <li><a href="#services">Parking &amp; Citations</a></li>
      </ul>
    </div>
    <div class="foot-col">
      <h4>Transparency</h4>
      <ul>
        <li><a href="#transparency">FY2026 Budget</a></li>
        <li><a href="#transparency">Public Records Requests</a></li>
        <li><a href="#transparency">Open Data Portal</a></li>
        <li><a href="#community">Meeting Agendas &amp; Minutes</a></li>
        <li><a href="#permits">Municipal Code</a></li>
        <li><a href="#transparency">Ethics &amp; Lobbyist Registry</a></li>
      </ul>
    </div>
  </div>
  <div class="wrap foot-bottom">
    <span>© <span id="year">2025</span> City of Port Avery, Rhode Island. All records subject to Municipal Code §2.30.</span>
    <nav aria-label="Legal">
      <a href="#">Privacy Policy</a>
      <a href="#">Terms of Use</a>
      <a href="#">Accessibility</a>
      <a href="#">ADA Accommodations</a>
      <a href="#">Employee Portal</a>
    </nav>
    <span class="coords">41.4822° N · 71.3128° W · EST. 1887</span>
  </div>
</footer>

<button class="to-top" id="toTop" aria-label="Back to top">
  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5M6 11l6-6 6 6"/></svg>
</button>
<div class="toast" id="toast" role="status" aria-live="polite"></div>

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

  /* ---- load flag for masthead line masks ---- */
  window.addEventListener("DOMContentLoaded", function(){
    setTimeout(function(){ document.body.classList.add("loaded"); }, 120);
  });

  /* ---- year ---- */
  document.getElementById("year").textContent = new Date().getFullYear();

  /* ---- header shadow ---- */
  var head = document.getElementById("siteHead");
  window.addEventListener("scroll", function(){
    head.classList.toggle("scrolled", window.scrollY > 8);
    document.getElementById("toTop").classList.toggle("show", window.scrollY > 700);
  }, {passive:true});
  document.getElementById("toTop").addEventListener("click", function(){
    window.scrollTo({top:0, behavior: reduced ? "auto" : "smooth"});
  });

  /* ---- mobile nav ---- */
  var navT = document.getElementById("navToggle"), panel = document.getElementById("mobilePanel");
  navT.addEventListener("click", function(){
    var open = panel.classList.toggle("open");
    document.body.classList.toggle("nav-open", open);
    navT.setAttribute("aria-expanded", open);
  });
  panel.querySelectorAll("a").forEach(function(a){
    a.addEventListener("click", function(){
      panel.classList.remove("open"); document.body.classList.remove("nav-open");
      navT.setAttribute("aria-expanded","false");
    });
  });

  /* ---- alert dismiss ---- */
  document.getElementById("alertClose").addEventListener("click", function(){
    document.getElementById("alertbar").classList.add("hidden");
  });

  /* ---- dead links ---- */
  document.querySelectorAll('a[href="#"]').forEach(function(a){
    a.addEventListener("click", function(e){ e.preventDefault(); });
  });

  /* ---- toast ---- */
  var toastEl = document.getElementById("toast"), toastT;
  function toast(msg){
    toastEl.textContent = msg; toastEl.classList.add("show");
    clearTimeout(toastT); toastT = setTimeout(function(){ toastEl.classList.remove("show"); }, 3200);
  }
  document.getElementById("lang").addEventListener("change", function(){
    toast("Language line coming soon — dial 311 for a free interpreter.");
  });

  /* ---- scramble decode ---- */
  function scramble(el){
    if(reduced) return;
    var chars = "█▓▒░<>/\\*#0123456789", final = el.textContent, i = 0, len = final.length;
    var frames = 0;
    (function tick(){
      frames++;
      if(frames % 2 === 0) i++;
      var out = final.slice(0, i);
      for(var j = i; j < len; j++){
        out += final[j] === " " ? " " : chars[Math.floor(Math.random()*chars.length)];
      }
      el.textContent = out;
      if(i < len) requestAnimationFrame(tick); else el.textContent = final;
    })();
  }
  document.querySelectorAll("[data-scramble]").forEach(scramble);

  /* ---- reveal on scroll ---- */
  var io = new IntersectionObserver(function(entries){
    entries.forEach(function(en){
      if(en.isIntersecting){ en.target.classList.add("in"); io.unobserve(en.target); }
    });
  }, {threshold:.12});
  document.querySelectorAll(".rv").forEach(function(el){ io.observe(el); });

  /* ---- counters ---- */
  function runCounter(el){
    var to = parseFloat(el.dataset.to), dec = parseInt(el.dataset.dec||"0",10);
    var pre = el.dataset.prefix||"", suf = el.dataset.suffix||"";
    if(reduced){ el.textContent = pre + to.toFixed(dec).replace(/\B(?=(\d{3})+(?!\d))/g,",") + suf; return; }
    var start = null, dur = 1400;
    function frame(t){
      if(!start) start = t;
      var p = Math.min((t-start)/dur, 1), e = 1 - Math.pow(1-p, 3);
      var v = (to*e);
      el.textContent = pre + v.toFixed(dec).replace(/\B(?=(\d{3})+(?!\d))/g,",") + suf;
      if(p < 1) requestAnimationFrame(frame);
    }
    requestAnimationFrame(frame);
  }
  var cio = new IntersectionObserver(function(entries){
    entries.forEach(function(en){
      if(en.isIntersecting){ runCounter(en.target); cio.unobserve(en.target); }
    });
  }, {threshold:.5});
  document.querySelectorAll("[data-to]").forEach(function(el){ cio.observe(el); });

  /* ---- budget bars ---- */
  var bio = new IntersectionObserver(function(entries){
    entries.forEach(function(en){
      if(en.isIntersecting){
        en.target.querySelectorAll(".bar i").forEach(function(b, idx){
          setTimeout(function(){ b.style.width = b.dataset.pct + "%"; }, idx*120);
        });
        bio.unobserve(en.target);
      }
    });
  }, {threshold:.3});
  var budget = document.querySelector(".budget");
  if(budget) bio.observe(budget);

  /* ---- search ---- */
  var services = [
    {t:"Pay a water or sewer bill", c:"Finance", h:"#services"},
    {t:"Report a pothole or roadway issue", c:"311 Desk", h:"#report"},
    {t:"Apply for a building permit", c:"Planning", h:"#permits"},
    {t:"Renew a business license", c:"Econ Dev", h:"#permits"},
    {t:"Register to vote / absentee ballot", c:"Clerk", h:"#community"},
    {t:"Search property & tax records", c:"Assessor", h:"#transparency"},
    {t:"Contest a parking citation", c:"Safety", h:"#services"},
    {t:"Book the Bandstand or Harbor Room", c:"Parks", h:"#community"},
    {t:"Leaf collection schedule by district", c:"Pub Works", h:"#community"},
    {t:"Request public records (§2.30)", c:"Clerk", h:"#transparency"},
    {t:"Short-term rental registration", c:"Planning", h:"#permits"},
    {t:"Read the municipal code", c:"Clerk", h:"#transparency"}
  ];
  var sInput = document.getElementById("searchInput"),
      sPanel = document.getElementById("searchPanel"),
      sList  = document.getElementById("searchResults");
  function renderResults(q){
    var ql = q.toLowerCase(), matches = services.filter(function(s){ return s.t.toLowerCase().indexOf(ql) > -1; }).slice(0,6);
    sList.innerHTML = "";
    if(!matches.length){
      var li = document.createElement("li");
      li.className = "none"; li.textContent = "No matches for “" + q + "” — try “water bill,” or dial 311.";
      sList.appendChild(li);
    } else {
      matches.forEach(function(s){
        var li = document.createElement("li"), a = document.createElement("a");
        a.href = s.h;
        var b = document.createElement("b"); b.textContent = s.t;
        var sp = document.createElement("span"); sp.textContent = s.c;
        a.appendChild(b); a.appendChild(sp);
        a.addEventListener("click", function(){ sPanel.classList.remove("open"); sInput.value = ""; });
        li.appendChild(a); sList.appendChild(li);
      });
    }
    sPanel.classList.add("open");
  }
  sInput.addEventListener("input", function(){
    var q = sInput.value.trim();
    if(q.length < 2){ sPanel.classList.remove("open"); return; }
    renderResults(q);
  });
  sInput.addEventListener("focus", function(){ if(sInput.value.trim().length >= 2) renderResults(sInput.value.trim()); });
  document.addEventListener("click", function(e){
    if(!e.target.closest(".search")) sPanel.classList.remove("open");
  });
  document.getElementById("searchForm").addEventListener("submit", function(e){
    e.preventDefault();
    var first = sList.querySelector("a");
    if(first){ first.click(); location.hash = first.getAttribute("href"); }
    else if(sInput.value.trim()) renderResults(sInput.value.trim());
  });

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

  /* ---- permit status lookup (deterministic mock) ---- */
  var statuses = [
    {s:"Approved — awaiting inspection scheduling", k:"ok"},
    {s:"In plan review, round 1 · Examiner R. Okafor", k:"wait"},
    {s:"Corrections requested — see email of Oct 2", k:"hold"},
    {s:"Issued — permit card valid through Apr 12, 2026", k:"ok"},
    {s:"Closed — final inspection passed", k:"ok"}
  ];
  document.getElementById("statusForm").addEventListener("submit", function(e){
    e.preventDefault();
    var v = document.getElementById("statusInput").value.trim();
    var res = document.getElementById("statusResult");
    if(!v){ res.className = "lookup-result show"; res.innerHTML = "Enter a permit number from your intake receipt, e.g., <b class='mono'>BLD-2025-1187</b>."; return; }
    var hash = 0; for(var i=0;i<v.length;i++) hash += v.charCodeAt(i);
    var st = statuses[hash % statuses.length];
    res.className = "lookup-result show";
    res.innerHTML = "<strong class='mono'>" + v.toUpperCase() + "</strong><span class='chip " + st.k + "'>" + st.k.toUpperCase() + "</span><br><span style='color:#c6cfd8'>" + st.s + "</span><br><span style='font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:#6d8098;text-transform:uppercase'>Refreshed daily at 6:00 AM · Planning &amp; Zoning counter (401) 555-0314</span>";
  });

  /* ---- issue reporter wizard ---- */
  var form = document.getElementById("issueForm"),
      steps = form.querySelectorAll(".wstep"),
      prog = document.querySelectorAll(".wprog li"),
      confirmBox = document.getElementById("confirmBox");
  function go(n){
    steps.forEach(function(s){ s.classList.toggle("active", s.dataset.step == n); });
    prog.forEach(function(p){ p.classList.toggle("on", parseInt(p.dataset.p,10) <= n); });
    if(n === 3){
      document.getElementById("sumCat").textContent = (form.querySelector("input[name=cat]:checked")||{}).value || "—";
      document.getElementById("sumLoc").textContent = document.getElementById("fLoc").value || "—";
      document.getElementById("sumUrg").textContent = (form.querySelector("input[name=urg]:checked")||{}).value || "Routine";
      var d = document.getElementById("fDesc").value;
      document.getElementById("sumDesc").textContent = d.length > 140 ? d.slice(0,140) + "…" : (d || "—");
    }
  }
  form.querySelectorAll("[data-next]").forEach(function(btn){
    btn.addEventListener("click", function(){
      var next = parseInt(btn.dataset.next,10);
      if(btn.dataset.next === "2"){
        if(!form.querySelector("input[name=cat]:checked")){
          document.getElementById("catErr").classList.add("show"); return;
        }
        document.getElementById("catErr").classList.remove("show");
      }
      if(btn.dataset.next === "3"){
        var loc = document.getElementById("fLoc"), desc = document.getElementById("fDesc");
        if(!loc.value.trim() || !desc.value.trim()){
          toast("Location and description are required — Municipal Code §6.11.");
          (!loc.value.trim() ? loc : desc).focus();
          return;
        }
      }
      go(next);
    });
  });
  form.querySelectorAll("[data-back]").forEach(function(btn){
    btn.addEventListener("click", function(){ go(parseInt(btn.dataset.back,10)); });
  });
  var catThumb = {"Pothole / Roadway":"pothole","Streetlight Out":"streetlight","Graffiti":"graffiti","Missed Pickup":"refuse-truck","Water / Sewer":"water-main","Sidewalk / Tree":"city-tree"};
  form.addEventListener("submit", function(e){
    e.preventDefault();
    var id = "PA-25-" + String(Math.floor(10000 + Math.random()*89999));
    document.getElementById("caseNo").textContent = id;
    form.style.display = "none";
    document.querySelector(".wprog").style.display = "none";
    confirmBox.classList.add("show");
    var cat = document.getElementById("sumCat").textContent;
    var li = document.createElement("li");
    li.innerHTML = "<img class='thumb' src='https://picsum.photos/seed/new-report-" + (catThumb[cat]||"city") + "/200/150?grayscale' alt='New report photograph placeholder'>" +
      "<div><div class='ft'><b>" + cat + "</b><span class='stamp-chip open'>Open</span></div>" +
      "<p class='fm'>Reported just now · " + document.getElementById("sumLoc").textContent + " · Case " + id + "</p>" +
      "<p class='fw'>Assigned to dispatcher · Awaiting crew</p></div>";
    document.getElementById("feed").prepend(li);
    toast("Case " + id + " entered into the public 311 log.");
  });
  document.getElementById("fileAnother").addEventListener("click", function(){
    form.reset(); form.style.display = ""; document.querySelector(".wprog").style.display = "";
    confirmBox.classList.remove("show"); go(1);
  });

  /* ---- newsletter ---- */
  document.getElementById("nlForm").addEventListener("submit", function(e){
    e.preventDefault();
    var email = document.getElementById("nlEmail");
    if(!email.value || email.value.indexOf("@") < 0){ toast("Please enter a valid email address."); email.focus(); return; }
    this.innerHTML = "<p class='done'>✓ You’re on the Ledger — first issue arrives Nov 1.</p>";
    toast("Subscribed: The Avery Ledger.");
  });
})();
</script>
</body>
</html>
View Axe Report (JSON)
{
  "testEngine": {
    "name": "axe-core",
    "version": "4.10.2"
  },
  "testRunner": {
    "name": "axe"
  },
  "testEnvironment": {
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
    "windowWidth": 1280,
    "windowHeight": 720,
    "orientationAngle": 0,
    "orientationType": "landscape-primary"
  },
  "timestamp": "2026-11-12T10:00:47.689Z",
  "url": "https://benchmark.aimac.invalid/d51dfb65534d5758e461a94da32a5171b1952939481e6e75ddc6c4e0d58f0680.html",
  "toolOptions": {
    "runOnly": {
      "type": "tag",
      "values": [
        "wcag2a",
        "wcag2aa",
        "wcag21a",
        "wcag21aa",
        "wcag22a",
        "wcag22aa"
      ]
    },
    "resultTypes": [
      "violations"
    ],
    "reporter": "v1"
  },
  "inapplicable": [
    {
      "id": "area-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure <area> elements of image maps have alternative text",
      "help": "Active <area> elements must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-braille-equivalent",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
      "help": "aria-braille attributes must have a non-braille equivalent",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-command-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA button, link and menuitem has an accessible name",
      "help": "ARIA commands must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-input-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA input field has an accessible name",
      "help": "ARIA input fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-meter-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag111",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure every ARIA meter node has an accessible name",
      "help": "ARIA meter nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-progressbar-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag111",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure every ARIA progressbar node has an accessible name",
      "help": "ARIA progressbar nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-required-children",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure elements with an ARIA role that require child roles contain them",
      "help": "Certain ARIA roles must contain particular children",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-required-parent",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure elements with an ARIA role that require parent roles are contained by them",
      "help": "Certain ARIA roles must be contained by particular parents",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-toggle-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA toggle field has an accessible name",
      "help": "ARIA toggle fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-tooltip-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every ARIA tooltip node has an accessible name",
      "help": "ARIA tooltip nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "blink",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag222",
        "section508",
        "section508.22.j",
        "TTv5",
        "TT2.b",
        "EN-301-549",
        "EN-9.2.2.2"
      ],
      "description": "Ensure <blink> elements are not used",
      "help": "<blink> elements are deprecated and must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
      "nodes": []
    },
    {
      "id": "definition-list",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <dl> elements are structured correctly",
      "help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
      "nodes": []
    },
    {
      "id": "dlitem",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <dt> and <dd> elements are contained by a <dl>",
      "help": "<dt> and <dd> elements must be contained by a <dl>",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-focusable-content",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag211",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
      "help": "Frames with focusable content must not have tabindex=-1",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-title-unique",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT12.d",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
      "help": "Frames must have a unique title attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.i",
        "TTv5",
        "TT12.d",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure <iframe> and <frame> elements have an accessible name",
      "help": "Frames must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
      "nodes": []
    },
    {
      "id": "html-xml-lang-mismatch",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
      "help": "HTML elements with lang and xml:lang must have the same base language",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
      "nodes": []
    },
    {
      "id": "input-button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure input buttons have discernible text",
      "help": "Input buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "input-image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure <input type=\"image\"> elements have alternative text",
      "help": "Image buttons must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "marquee",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag222",
        "TTv5",
        "TT2.b",
        "EN-301-549",
        "EN-9.2.2.2"
      ],
      "description": "Ensure <marquee> elements are not used",
      "help": "<marquee> elements are deprecated and must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
      "nodes": []
    },
    {
      "id": "meta-refresh",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag221",
        "TTv5",
        "TT8.a",
        "EN-301-549",
        "EN-9.2.2.1"
      ],
      "description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
      "help": "Delayed refresh under 20 hours must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
      "nodes": []
    },
    {
      "id": "object-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure <object> elements have alternative text",
      "help": "<object> elements must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "role-img-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure [role=\"img\"] elements have alternative text",
      "help": "[role=\"img\"] elements must have an alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "scrollable-region-focusable",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag211",
        "wcag213",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1",
        "EN-9.2.1.3"
      ],
      "description": "Ensure elements that have scrollable content are accessible by keyboard",
      "help": "Scrollable region must have keyboard access",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
      "nodes": []
    },
    {
      "id": "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": "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": "<select id=\"lang\" aria-label=\"Select language\">\n        <option>English</option><option>Espa\u00f1ol</option><option>Portugu\u00eas</option><option>Ti\u1ebfng Vi\u1ec7t</option>\n      </select>",
          "target": [
            "#lang"
          ]
        }
      ]
    },
    {
      "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": "<select id=\"lang\" aria-label=\"Select language\">\n        <option>English</option><option>Espa\u00f1ol</option><option>Portugu\u00eas</option><option>Ti\u1ebfng Vi\u1ec7t</option>\n      </select>",
          "target": [
            "#lang"
          ]
        }
      ]
    },
    {
      "id": "aria-deprecated-role",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements do not use deprecated roles",
      "help": "Deprecated ARIA roles must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "deprecatedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "minor",
              "message": "ARIA role is not deprecated"
            }
          ],
          "impact": null,
          "html": "<div class=\"alertbar\" id=\"alertbar\" role=\"status\">",
          "target": [
            "#alertbar"
          ]
        }
      ]
    },
    {
      "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 class=\"loaded\">",
          "target": [
            "body"
          ]
        }
      ]
    },
    {
      "id": "aria-hidden-focus",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
      "help": "ARIA hidden element must not be focusable or contain focusable elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "focusable-modal-open",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements while a modal is open"
            },
            {
              "id": "focusable-disabled",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            },
            {
              "id": "focusable-not-tabbable",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<span class=\"flag\" aria-hidden=\"true\"></span>",
          "target": [
            ".flag"
          ]
        }
      ]
    },
    {
      "id": "aria-prohibited-attr",
      "impact": "serious",
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are not prohibited for an element's role",
      "help": "Elements must only use permitted ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "aria-prohibited-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "impact": null,
          "html": "<select id=\"lang\" aria-label=\"Select language\">\n        <option>English</option><option>Espa\u00f1ol</option><option>Portugu\u00eas</option><option>Ti\u1ebfng Vi\u1ec7t</option>\n      </select>",
          "target": [
            "#lang"
          ]
        }
      ]
    },
    {
      "id": "aria-required-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure elements with ARIA roles have all required ARIA attributes",
      "help": "Required ARIA attributes must be provided",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-required-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "All required ARIA attributes are present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"alertbar\" id=\"alertbar\" role=\"status\">",
          "target": [
            "#alertbar"
          ]
        }
      ]
    },
    {
      "id": "aria-roles",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all elements with a role attribute use a valid value",
      "help": "ARIA roles used must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "invalidrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is valid"
            },
            {
              "id": "abstractrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Abstract roles are not used"
            },
            {
              "id": "unsupportedrole",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA role is supported"
            }
          ],
          "impact": null,
          "html": "<div class=\"alertbar\" id=\"alertbar\" role=\"status\">",
          "target": [
            "#alertbar"
          ]
        }
      ]
    },
    {
      "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": "<select id=\"lang\" aria-label=\"Select language\">\n        <option>English</option><option>Espa\u00f1ol</option><option>Portugu\u00eas</option><option>Ti\u1ebfng Vi\u1ec7t</option>\n      </select>",
          "target": [
            "#lang"
          ]
        }
      ]
    },
    {
      "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": "<select id=\"lang\" aria-label=\"Select language\">\n        <option>English</option><option>Espa\u00f1ol</option><option>Portugu\u00eas</option><option>Ti\u1ebfng Vi\u1ec7t</option>\n      </select>",
          "target": [
            "#lang"
          ]
        }
      ]
    },
    {
      "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": [
        {
          "any": [],
          "all": [
            {
              "id": "autocomplete-valid",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "the autocomplete attribute is correctly formatted"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<input type=\"text\" id=\"searchInput\" placeholder=\"Search 214 city services \u2014 try \u201cwater bill\u201d\u2026\" aria-label=\"Search city services\" autocomplete=\"off\">",
          "target": [
            "#searchInput"
          ]
        }
      ]
    },
    {
      "id": "avoid-inline-spacing",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag21aa",
        "wcag1412",
        "EN-301-549",
        "EN-9.1.4.12",
        "ACT"
      ],
      "description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
      "help": "Inline text spacing must be adjustable with custom stylesheets",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "important-letter-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-word-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-line-height",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "line-height in the style attribute is not set to !important, or meets the minimum"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<div style=\"display:flex;align-items:center;gap:10px\">\n      <span class=\"flag\" aria-hidden=\"true\"></span>\n      <span>An official website of the <b>City of Port Avery</b></span>\n    </div>",
          "target": [
            ".gov-strip > .wrap > div:nth-child(1)"
          ]
        }
      ]
    },
    {
      "id": "button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure buttons have discernible text",
      "help": "Buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "button-has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has inner text that is visible to screen readers"
            },
            {
              "id": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-label attribute exists and is not empty"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<button class=\"alert-close\" id=\"alertClose\" aria-label=\"Dismiss advisory\">\u00d7</button>",
          "target": [
            "#alertClose"
          ]
        }
      ]
    },
    {
      "id": "bypass",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag241",
        "section508",
        "section508.22.o",
        "TTv5",
        "TT9.a",
        "EN-301-549",
        "EN-9.2.4.1"
      ],
      "description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
      "help": "Page must have means to bypass repeated blocks",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "internal-link-present",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Valid skip link found"
            },
            {
              "id": "header-present",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<h1>\n        <span class=\"lm\"><span style=\"--d:.15s\">One city.</span></span>\n        <span class=\"lm\"><span style=\"--d:.32s\">One <em>front door.</em></span></span>\n      </h1>",
                  "target": [
                    "h1"
                  ]
                },
                {
                  "html": "<h2>The most-requested services, one click from the front door.</h2>",
                  "target": [
                    "#services > .wrap > .sec-head.rv > div > h2"
                  ]
                },
                {
                  "html": "<h3>Pay Utility Bill</h3>",
                  "target": [
                    ".svc:nth-child(1) > h3"
                  ]
                },
                {
                  "html": "<h3>Report an Issue</h3>",
                  "target": [
                    ".svc:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>Permits &amp; Licensing</h3>",
                  "target": [
                    ".svc:nth-child(3) > h3"
                  ]
                },
                {
                  "html": "<h3>Property &amp; Tax Records</h3>",
                  "target": [
                    ".svc:nth-child(4) > h3"
                  ]
                },
                {
                  "html": "<h3>Register to Vote</h3>",
                  "target": [
                    ".svc:nth-child(5) > h3"
                  ]
                },
                {
                  "html": "<h3>Book Parks &amp; Facilities</h3>",
                  "target": [
                    ".svc:nth-child(6) > h3"
                  ]
                },
                {
                  "html": "<h3>Start or Renew a Business</h3>",
                  "target": [
                    ".svc:nth-child(7) > h3"
                  ]
                },
                {
                  "html": "<h3>Parking &amp; Citations</h3>",
                  "target": [
                    ".svc:nth-child(8) > h3"
                  ]
                },
                {
                  "html": "<h2>Who\u2019s who at City Hall.</h2>",
                  "target": [
                    ".dept-sticky > h2"
                  ]
                },
                {
                  "html": "<h4>Not sure where to start?</h4>",
                  "target": [
                    ".dir-card > h4"
                  ]
                },
                {
                  "html": "<h3>Public Works <span class=\"pill\">Infrastructure</span></h3>",
                  "target": [
                    ".dept:nth-child(1) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Planning &amp; Zoning <span class=\"pill\">Land Use</span></h3>",
                  "target": [
                    ".dept:nth-child(2) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Finance &amp; Budget <span class=\"pill\">Fiscal</span></h3>",
                  "target": [
                    ".dept:nth-child(3) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Public Safety <span class=\"pill\">24/7</span></h3>",
                  "target": [
                    ".dept:nth-child(4) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Parks, Recreation &amp; Culture <span class=\"pill\">Community</span></h3>",
                  "target": [
                    ".dept:nth-child(5) > div > h3"
                  ]
                },
                {
                  "html": "<h2>From application to inspection, on a published clock.</h2>",
                  "target": [
                    "#permits > .wrap > .sec-head.rv > div > h2"
                  ]
                },
                {
                  "html": "<h3>File your application</h3>",
                  "target": [
                    ".step:nth-child(1) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Plan review</h3>",
                  "target": [
                    ".step:nth-child(2) > div > h3"
                  ]
                },
                {
                  "html": "<h3>Issuance &amp; inspections</h3>",
                  "target": [
                    ".step:nth-child(3) > div > h3"
                  ]
                },
                {
                  "html": "<h3>FY2026 Fee Schedule</h3>",
                  "target": [
                    "header > h3"
                  ]
                },
                {
                  "html": "<h4>Check an application status</h4>",
                  "target": [
                    ".lookup > h4"
                  ]
                },
                {
                  "html": "<h2>The city\u2019s books, on the shelf and online.</h2>",
                  "target": [
                    "#transparency > .wrap > .sec-head.rv > div > h2"
                  ]
                },
                {
                  "html": "<h3>Where FY2026 appropriations go</h3>",
                  "target": [
                    ".budget > h3"
                  ]
                },
                {
                  "html": "<h2>See something? File it. Track it. Watch it close.</h2>",
                  "target": [
                    "#report > .wrap > .sec-head.rv > div > h2"
                  ]
                },
                {
                  "html": "<h3>What\u2019s the problem?</h3>",
                  "target": [
                    ".active > h3"
                  ]
                },
                {
                  "html": "<h3>From the crew log</h3>",
                  "target": [
                    ".feed-head > h3"
                  ]
                },
                {
                  "html": "<h2>Meetings, markets &amp; muster days.</h2>",
                  "target": [
                    "#community > .wrap > .sec-head.rv > div > h2"
                  ]
                },
                {
                  "html": "<h3>Public Hearing: FY2026 Proposed Budget <span class=\"etag hearing\">Hearing</span></h3>",
                  "target": [
                    ".event:nth-child(1) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>Leaf Drop-Off &amp; Free Mulch Giveaway <span class=\"etag event\">Event</span></h3>",
                  "target": [
                    ".event:nth-child(2) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>Planning Commission: Harbor Overlay Amendments <span class=\"etag hearing\">Hearing</span></h3>",
                  "target": [
                    ".event:nth-child(3) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>General Election \u2014 Polls Open 7 AM\u20138 PM <span class=\"etag election\">Election</span></h3>",
                  "target": [
                    ".event:nth-child(4) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>Public Bid Opening 26-118: Fleet Refuse Vehicles <span class=\"etag bid\">Bid</span></h3>",
                  "target": [
                    ".event:nth-child(5) > div:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h2>What neighbors put on the record.</h2>",
                  "target": [
                    ".record > .wrap > .sec-head.rv > div > h2"
                  ]
                },
                {
                  "html": "<h3>City of Port Avery</h3>",
                  "target": [
                    ".foot-brand > h3"
                  ]
                },
                {
                  "html": "<h4>Departments</h4>",
                  "target": [
                    ".foot-col:nth-child(2) > h4"
                  ]
                },
                {
                  "html": "<h4>Services</h4>",
                  "target": [
                    ".foot-col:nth-child(3) > h4"
                  ]
                },
                {
                  "html": "<h4>Transparency</h4>",
                  "target": [
                    ".foot-col:nth-child(4) > h4"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a heading"
            },
            {
              "id": "landmark",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<main id=\"main\">",
                  "target": [
                    "#main"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a landmark region"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\" class=\"js\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#cfd8e0",
                "bgColor": "#0a1b2b",
                "contrastRatio": 12.08,
                "fontSize": "9.4pt (12.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has sufficient color contrast of 12.08"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<span>An official website of the <b>City of Port Avery</b></span>",
          "target": [
            ".wrap > div:nth-child(1) > span:nth-child(2)"
          ]
        }
      ]
    },
    {
      "id": "document-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag242",
        "TTv5",
        "TT12.a",
        "EN-301-549",
        "EN-9.2.4.2",
        "ACT"
      ],
      "description": "Ensure each HTML document contains a non-empty <title> element",
      "help": "Documents must have <title> element to aid in navigation",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "doc-has-title",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Document has a non-empty <title> element"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\" class=\"js\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "duplicate-id-aria",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every id attribute value used in ARIA and in labels is unique",
      "help": "IDs used in ARIA and labels must be unique",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "duplicate-id-aria",
              "data": "lang",
              "relatedNodes": [],
              "impact": "critical",
              "message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<select id=\"lang\" aria-label=\"Select language\">\n        <option>English</option><option>Espa\u00f1ol</option><option>Portugu\u00eas</option><option>Ti\u1ebfng Vi\u1ec7t</option>\n      </select>",
          "target": [
            "#lang"
          ]
        }
      ]
    },
    {
      "id": "form-field-multiple-labels",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag332",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.3.3.2"
      ],
      "description": "Ensure form field does not have multiple label elements",
      "help": "Form field must not have multiple label elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "multiple-label",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<label for=\"lang\" class=\"mono\" style=\"font-size:10.5px;letter-spacing:.1em\">LANGUAGE</label>",
                  "target": [
                    "label[for=\"lang\"]"
                  ]
                }
              ],
              "impact": "moderate",
              "message": "Form field does not have multiple label elements"
            }
          ],
          "impact": null,
          "html": "<select id=\"lang\" aria-label=\"Select language\">\n        <option>English</option><option>Espa\u00f1ol</option><option>Portugu\u00eas</option><option>Ti\u1ebfng Vi\u1ec7t</option>\n      </select>",
          "target": [
            "#lang"
          ]
        }
      ]
    },
    {
      "id": "html-has-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure every HTML document has a lang attribute",
      "help": "<html> element must have a lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "The <html> element has a lang attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\" class=\"js\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "html-lang-valid",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure the lang attribute of the <html> element has a valid value",
      "help": "<html> element must have a valid value for the lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "valid-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Value of lang attribute is included in the list of valid languages"
            }
          ],
          "impact": null,
          "html": "<html lang=\"en\" class=\"js\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "TT7.b",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <img> elements have alternative text or a role of none or presentation",
      "help": "Images must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-alt",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has an alt attribute"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "alt-space-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has a valid alt attribute value"
            }
          ],
          "impact": null,
          "html": "<img src=\"https://placehold.co/120x120/0d2438/c9a227?text=P+A&amp;font=oswald\" alt=\"Seal of the City of Port Avery\" width=\"54\" height=\"54\">",
          "target": [
            "img[width=\"54\"]"
          ]
        }
      ]
    },
    {
      "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": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-label attribute exists and is not empty"
            },
            {
              "id": "non-empty-placeholder",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has a placeholder attribute"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "hidden-explicit-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Form element has a visible explicit <label>"
            }
          ],
          "impact": null,
          "html": "<input type=\"text\" id=\"searchInput\" placeholder=\"Search 214 city services \u2014 try \u201cwater bill\u201d\u2026\" aria-label=\"Search city services\" autocomplete=\"off\">",
          "target": [
            "#searchInput"
          ]
        }
      ]
    },
    {
      "id": "link-in-text-block",
      "impact": null,
      "tags": [
        "cat.color",
        "wcag2a",
        "wcag141",
        "TTv5",
        "TT13.a",
        "EN-301-549",
        "EN-9.1.4.1"
      ],
      "description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
      "help": "Links must be distinguishable without relying on color",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "link-in-text-block-style",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<p>City Hall \u00b7 1 Harbor Square, Port Avery, RI 02872 \u00b7 Mon\u2013Fri 8:30\u20134:30, Clerk\u2019s counter open Thursdays until 7:00 p.m. \u00b7 <a href=\"mailto:frontdesk@portavery.gov\" style=\"color:#fff;font-weight:600\">frontdesk@portavery.gov</a></p>",
                  "target": [
                    "#contact-band > .wrap > p"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Links can be distinguished from surrounding text by visual styling"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"mailto:frontdesk@portavery.gov\" style=\"color:#fff;font-weight:600\">frontdesk@portavery.gov</a>",
          "target": [
            ".wrap > p > a[href=\"mailto:frontdesk@portavery.gov\"]"
          ]
        }
      ]
    },
    {
      "id": "link-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure links have discernible text",
      "help": "Links must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has text that is visible to screen readers"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "focusable-no-name",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element is not in tab order or has accessible text"
            }
          ],
          "impact": null,
          "html": "<a class=\"skip\" href=\"#main\">Skip to main content</a>",
          "target": [
            ".skip"
          ]
        }
      ]
    },
    {
      "id": "list",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that lists are structured correctly",
      "help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "only-listitems",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "List element only has direct children that are allowed inside <li> elements"
            }
          ],
          "impact": null,
          "html": "<ul>",
          "target": [
            ".main > ul"
          ]
        }
      ]
    },
    {
      "id": "listitem",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <li> elements are used semantically",
      "help": "<li> elements must be contained in a <ul> or <ol>",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "listitem",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "List item has a <ul>, <ol> or role=\"list\" parent element"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<li><a href=\"#services\">Services</a></li>",
          "target": [
            ".main > 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": "<option>English</option>",
          "target": [
            "option:nth-child(1)"
          ]
        }
      ]
    },
    {
      "id": "select-name",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure select element has an accessible name",
      "help": "Select element must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "explicit-label",
              "data": {
                "explicitLabel": "LANGUAGE"
              },
              "relatedNodes": [
                {
                  "html": "<label for=\"lang\" class=\"mono\" style=\"font-size:10.5px;letter-spacing:.1em\">LANGUAGE</label>",
                  "target": [
                    "label[for=\"lang\"]"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has an explicit <label>"
            },
            {
              "id": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-label attribute exists and is not empty"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "hidden-explicit-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Form element has a visible explicit <label>"
            }
          ],
          "impact": null,
          "html": "<select id=\"lang\" aria-label=\"Select language\">\n        <option>English</option><option>Espa\u00f1ol</option><option>Portugu\u00eas</option><option>Ti\u1ebfng Vi\u1ec7t</option>\n      </select>",
          "target": [
            "#lang"
          ]
        }
      ]
    },
    {
      "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": 184.3,
                "height": 45.6
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Control has sufficient size (184.3px by 45.6px, should be at least 24px by 24px)"
            },
            {
              "id": "target-offset",
              "data": {
                "closestOffset": 24,
                "minOffset": 24
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a class=\"skip\" href=\"#main\">Skip to main content</a>",
          "target": [
            ".skip"
          ]
        }
      ]
    },
    {
      "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": [
        {
          "any": [],
          "all": [
            {
              "id": "td-headers-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "The headers attribute is exclusively used to refer to other cells in the table"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<table class=\"fee-table\">",
          "target": [
            "table"
          ]
        }
      ]
    },
    {
      "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": [
        {
          "any": [],
          "all": [
            {
              "id": "th-has-data-cells",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "All table header cells refer to data cells"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<table class=\"fee-table\">",
          "target": [
            "table"
          ]
        }
      ]
    }
  ],
  "incomplete": [
    {
      "id": "aria-prohibited-attr",
      "impact": "serious",
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are not prohibited for an element's role",
      "help": "Elements must only use permitted ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "aria-prohibited-attr",
              "data": {
                "role": null,
                "nodeName": "div",
                "messageKey": "noRoleSingular",
                "prohibited": [
                  "aria-label"
                ]
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "aria-label attribute is not well supported on a div with no valid role attribute."
            }
          ],
          "impact": "serious",
          "html": "<div class=\"ticker\" aria-label=\"Official notices\">",
          "target": [
            ".ticker"
          ],
          "failureSummary": "Fix all of the following:\n  aria-label attribute is not well supported on a div with no valid role attribute."
        }
      ]
    },
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": null,
                "bgColor": null,
                "contrastRatio": 0,
                "fontSize": "15.0pt (20px)",
                "fontWeight": "normal",
                "messageKey": "shortTextContent",
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element content is too short to determine if it is actual text content"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<button class=\"alert-close\" id=\"alertClose\" aria-label=\"Dismiss advisory\">\u00d7</button>",
          "target": [
            "#alertClose"
          ],
          "failureSummary": "Fix any of the following:\n  Element content is too short to determine if it is actual text content"
        }
      ]
    }
  ],
  "violations": [
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "7.5pt (10px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<header class=\"site\" id=\"siteHead\">",
                  "target": [
                    "#siteHead"
                  ]
                },
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span>Open doors \u00b7 Open data \u00b7 Open government</span>",
          "target": [
            ".names > span"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 7.5pt (10px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#e5ddc8",
                "bgColor": "#8a6a1f",
                "contrastRatio": 3.72,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"contact-band\" id=\"contact-band\">",
                  "target": [
                    "#contact-band"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.72 (foreground color: #e5ddc8, background color: #8a6a1f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<small>Questions? Humans answer.</small>",
          "target": [
            ".big > small"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.72 (foreground color: #e5ddc8, background color: #8a6a1f, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#f5f1e6",
                "bgColor": "#8a6a1f",
                "contrastRatio": 4.47,
                "fontSize": "10.5pt (14px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"contact-band\" id=\"contact-band\">",
                  "target": [
                    "#contact-band"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #f5f1e6, background color: #8a6a1f, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>City Hall \u00b7 1 Harbor Square, Port Avery, RI 02872 \u00b7 Mon\u2013Fri 8:30\u20134:30, Clerk\u2019s counter open Thursdays until 7:00 p.m. \u00b7 <a href=\"mailto:frontdesk@portavery.gov\" style=\"color:#fff;font-weight:600\">frontdesk@portavery.gov</a></p>",
          "target": [
            "#contact-band > .wrap > p"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #f5f1e6, background color: #8a6a1f, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6d8098",
                "bgColor": "#0a1b2b",
                "contrastRatio": 4.3,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"site\" id=\"contact\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"coords\">41.4822\u00b0 N \u00b7 71.3128\u00b0 W \u00b7 EST. 1887</span>",
          "target": [
            ".coords"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\">Sec. 01 \u2014 Everyday Services <span class=\"star\">\u2726</span></p>",
          "target": [
            ".in.sec-head.rv > div > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\">Sec. 01 \u2014 Everyday Services <span class=\"star\">\u2726</span></p>",
          "target": [
            ".sec-head.in.rv > div > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"departments\">",
                  "target": [
                    "#departments"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"dnum\">DEPT 01</span>",
          "target": [
            ".dept.in:nth-child(1) > .dnum"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"departments\">",
                  "target": [
                    "#departments"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"dnum\">DEPT 02</span>",
          "target": [
            ".dept.in:nth-child(2) > .dnum"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"departments\">",
                  "target": [
                    "#departments"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"dnum\">DEPT 03</span>",
          "target": [
            ".dept.in:nth-child(3) > .dnum"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"departments\">",
                  "target": [
                    "#departments"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"dnum\">DEPT 04</span>",
          "target": [
            ".dept.in:nth-child(4) > .dnum"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"departments\">",
                  "target": [
                    "#departments"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"dnum\">DEPT 05</span>",
          "target": [
            ".dept.in:nth-child(5) > .dnum"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\">Sec. 01 \u2014 Everyday Services <span class=\"star\">\u2726</span></p>",
          "target": [
            "#services > .wrap > .sec-head.in.rv > div > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\">Sec. 03 \u2014 Permits &amp; Review <span class=\"star\">\u2726</span></p>",
          "target": [
            "#permits > .wrap > .sec-head.in.rv > div > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\" style=\"margin-bottom:8px\">Common Questions <span class=\"star\">\u2726</span></p>",
          "target": [
            ".in.rv:nth-child(3) > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"departments\">",
                  "target": [
                    "#departments"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"dnum\">DEPT 01</span>",
          "target": [
            ".dept:nth-child(1) > .dnum"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"departments\">",
                  "target": [
                    "#departments"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"dnum\">DEPT 02</span>",
          "target": [
            ".dept:nth-child(2) > .dnum"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"departments\">",
                  "target": [
                    "#departments"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"dnum\">DEPT 03</span>",
          "target": [
            ".dept:nth-child(3) > .dnum"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"departments\">",
                  "target": [
                    "#departments"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"dnum\">DEPT 04</span>",
          "target": [
            ".dept:nth-child(4) > .dnum"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.8pt (13px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"departments\">",
                  "target": [
                    "#departments"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"dnum\">DEPT 05</span>",
          "target": [
            ".dept:nth-child(5) > .dnum"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6d8098",
                "bgColor": "#0a1b2b",
                "contrastRatio": 4.3,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec dark hatch\" id=\"transparency\">",
                  "target": [
                    "#transparency"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"updated\" style=\"color:#6d8098\">ACFR filed Feb 28, 2025<br>Check register posts monthly</p>",
          "target": [
            "#transparency > .wrap > .sec-head.in.rv > .updated"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6d8098",
                "bgColor": "#0a1b2b",
                "contrastRatio": 4.3,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec dark hatch\" id=\"transparency\">",
                  "target": [
                    "#transparency"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"du\">PDF \u00b7 FEB 2025</span>",
          "target": [
            "a[href$=\"#transparency\"]:nth-child(1) > .du"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6d8098",
                "bgColor": "#0a1b2b",
                "contrastRatio": 4.3,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec dark hatch\" id=\"transparency\">",
                  "target": [
                    "#transparency"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"du\">CSV \u00b7 OCT 3</span>",
          "target": [
            "a[href$=\"#transparency\"]:nth-child(2) > .du"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6d8098",
                "bgColor": "#0a1b2b",
                "contrastRatio": 4.3,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec dark hatch\" id=\"transparency\">",
                  "target": [
                    "#transparency"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"du\">UPDATED WEEKLY</span>",
          "target": [
            "a[href$=\"#community\"] > .du"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6d8098",
                "bgColor": "#0a1b2b",
                "contrastRatio": 4.3,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec dark hatch\" id=\"transparency\">",
                  "target": [
                    "#transparency"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"du\">REV. OCT 2025</span>",
          "target": [
            "a[href$=\"#permits\"] > .du"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6d8098",
                "bgColor": "#0a1b2b",
                "contrastRatio": 4.3,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec dark hatch\" id=\"transparency\">",
                  "target": [
                    "#transparency"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"du\">Q3 FILINGS</span>",
          "target": [
            "a[href$=\"#transparency\"]:nth-child(5) > .du"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"report\">",
                  "target": [
                    "#report"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\">Sec. 05 \u2014 311 Service Desk <span class=\"star\">\u2726</span></p>",
          "target": [
            "#report > .wrap > .sec-head.in.rv > div > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"report\">",
                  "target": [
                    "#report"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"fw\">Public Works \u00b7 Asphalt crew 2</p>",
          "target": [
            "li:nth-child(1) > div > .fw"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"report\">",
                  "target": [
                    "#report"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"fw\">Public Works \u00b7 Electrical division</p>",
          "target": [
            "li:nth-child(2) > div > .fw"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#717b7f",
                "bgColor": "#d9c176",
                "contrastRatio": 2.44,
                "fontSize": "7.1pt (9.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<span class=\"stamp-chip open\">In Progress</span>",
                  "target": [
                    ".open"
                  ]
                },
                {
                  "html": "<section class=\"sec paper2\" id=\"report\">",
                  "target": [
                    "#report"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 2.44 (foreground color: #717b7f, background color: #d9c176, font size: 7.1pt (9.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"stamp-chip open\">In Progress</span>",
          "target": [
            ".open"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 2.44 (foreground color: #717b7f, background color: #d9c176, font size: 7.1pt (9.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "7.9pt (10.5px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"report\">",
                  "target": [
                    "#report"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"fw\">Neighborhood Services \u00b7 Ablatement team</p>",
          "target": [
            "li:nth-child(3) > div > .fw"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 7.9pt (10.5px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\">Sec. 06 \u2014 On the Calendar <span class=\"star\">\u2726</span></p>",
          "target": [
            "#community > .wrap > .sec-head.in.rv > div > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eloc\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z\"></path><circle cx=\"12\" cy=\"10\" r=\"2.5\"></circle></svg>Council Chambers, 1 Harbor Square \u00b7 6:30 PM \u00b7 Live on Ch. 12</p>",
          "target": [
            ".event:nth-child(1) > div:nth-child(2) > .eloc"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eloc\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z\"></path><circle cx=\"12\" cy=\"10\" r=\"2.5\"></circle></svg>Transfer Station, 60 Gravel Pit Rd \u00b7 8 AM\u20132 PM</p>",
          "target": [
            ".event:nth-child(2) > div:nth-child(2) > .eloc"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eloc\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z\"></path><circle cx=\"12\" cy=\"10\" r=\"2.5\"></circle></svg>Committee Room B \u00b7 7:00 PM</p>",
          "target": [
            ".event:nth-child(3) > div:nth-child(2) > .eloc"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eloc\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z\"></path><circle cx=\"12\" cy=\"10\" r=\"2.5\"></circle></svg>Your precinct \u00b7 Find it at the Clerk\u2019s office</p>",
          "target": [
            ".event:nth-child(4) > div:nth-child(2) > .eloc"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"eloc\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 21s-7-6-7-11a7 7 0 1114 0c0 5-7 11-7 11z\"></path><circle cx=\"12\" cy=\"10\" r=\"2.5\"></circle></svg>Council Chambers \u00b7 2:00 PM</p>",
          "target": [
            ".event:nth-child(5) > div:nth-child(2) > .eloc"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\">Sec. 01 \u2014 Everyday Services <span class=\"star\">\u2726</span></p>",
          "target": [
            "#services > .wrap > .sec-head.rv.in > div > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\">Sec. 03 \u2014 Permits &amp; Review <span class=\"star\">\u2726</span></p>",
          "target": [
            "#permits > .wrap > .sec-head.rv.in > div > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\" style=\"margin-bottom:8px\">Common Questions <span class=\"star\">\u2726</span></p>",
          "target": [
            ".rv.in:nth-child(3) > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#6d8098",
                "bgColor": "#0a1b2b",
                "contrastRatio": 4.3,
                "fontSize": "8.3pt (11px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec dark hatch\" id=\"transparency\">",
                  "target": [
                    "#transparency"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"updated\" style=\"color:#6d8098\">ACFR filed Feb 28, 2025<br>Check register posts monthly</p>",
          "target": [
            "#transparency > .wrap > .sec-head.rv.in > .updated"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.3 (foreground color: #6d8098, background color: #0a1b2b, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#ece6d6",
                "contrastRatio": 4.04,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"sec paper2\" id=\"report\">",
                  "target": [
                    "#report"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\">Sec. 05 \u2014 311 Service Desk <span class=\"star\">\u2726</span></p>",
          "target": [
            "#report > .wrap > .sec-head.rv.in > div > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.04 (foreground color: #8a6a1f, background color: #ece6d6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#8a6a1f",
                "bgColor": "#f5f1e6",
                "contrastRatio": 4.47,
                "fontSize": "9.0pt (12px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body class=\"loaded\">",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p class=\"label\">Sec. 06 \u2014 On the Calendar <span class=\"star\">\u2726</span></p>",
          "target": [
            "#community > .wrap > .sec-head.rv.in > div > .label"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 4.47 (foreground color: #8a6a1f, background color: #f5f1e6, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
        }
      ]
    }
  ],
  "coverage": {
    "contract": "main-document-vertical-scroll",
    "complete": true,
    "positions": [
      {
        "y": 0,
        "height": 9282
      },
      {
        "y": 576,
        "height": 9282
      },
      {
        "y": 1152,
        "height": 9282
      },
      {
        "y": 1728,
        "height": 9282
      },
      {
        "y": 2304,
        "height": 9282
      },
      {
        "y": 2880,
        "height": 9282
      },
      {
        "y": 3456,
        "height": 9282
      },
      {
        "y": 4032,
        "height": 9282
      },
      {
        "y": 4608,
        "height": 9282
      },
      {
        "y": 5184,
        "height": 9282
      },
      {
        "y": 5760,
        "height": 9282
      },
      {
        "y": 6336,
        "height": 9282
      },
      {
        "y": 6912,
        "height": 9282
      },
      {
        "y": 7488,
        "height": 9282
      },
      {
        "y": 8064,
        "height": 9282
      },
      {
        "y": 8562,
        "height": 9282
      }
    ],
    "scans": 17,
    "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", "Permits", "Transparency".
-   **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: "Planning & Zoning", "Government Services", "Public Safety".
    -   **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "fiscal year", "public records", "municipal code".
    -   **Visuals:** Integrate relevant placeholder images logically within the content sections.
    -   **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Pay Online", "Contact Department", "Register".
-   **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: "issue reporter".
-   **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "emergency alerts", "community events", "service updates".
-   **FOOTER:** Include a professional footer with invented contact details, copyright (current year), social media links, and standard links (Privacy, Terms).
-   **MODERN WEB PATTERNS:** Include modern web patterns like testimonial cards, feature grids, or FAQ accordions where appropriate.