NVIDIA Nemotron 3 Ultra – Government

via BaseTen · Generated

  • AIMAC Debt 4.19
  • Cost $0.05
  • Total Violations 10
  • HTML Size 69 KB
  • Em Dashes 0

Screenshot

View NVIDIA Nemotron 3 Ultra Government page View Live Page

Accessibility Issues Found

10 Serious

  • color-contrast serious 10 instances

    Elements must meet minimum color contrast ratio thresholds

    Example HTML <span class="month">Oct</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">
    <meta name="description" content="CivicTrust Municipal Portal - Your gateway to city services, permits, public records, and community engagement for the City of Apex.">
    <title>CivicTrust Municipal Portal | City of Apex Official Website</title>
    <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=Inter:wght@400;500;600;700&family=Merriweather:wght@400;700&display=swap" rel="stylesheet">
    <style>
        /* --- CSS Variables & Reset --- */
        :root {
            --color-primary: #003366;
            --color-primary-dark: #002244;
            --color-primary-light: #0056a0;
            --color-accent: #e87722;
            --color-accent-hover: #d0681a;
            --color-bg: #f4f6f8;
            --color-surface: #ffffff;
            --color-text: #1a1a2e;
            --color-text-muted: #4a4a68;
            --color-border: #dfe3e8;
            --color-success: #28a745;
            --color-warning: #ffc107;
            --color-danger: #dc3545;
            --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
            --font-serif: 'Merriweather', Georgia, serif;
            --max-width: 1280px;
            --header-height: 72px;
            --transition-fast: 150ms ease;
            --transition-normal: 250ms ease;
            --shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
            --shadow-md: 0 4px 12px rgba(0,0,0,0.08);
            --shadow-lg: 0 10px 30px rgba(0,0,0,0.1);
            --radius-sm: 4px;
            --radius-md: 8px;
            --radius-lg: 16px;
        }

        *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
        html { scroll-behavior: smooth; font-size: 16px; }
        body {
            font-family: var(--font-sans);
            background-color: var(--color-bg);
            color: var(--color-text);
            line-height: 1.65;
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
        }
        img { max-width: 100%; height: auto; display: block; border-radius: var(--radius-md); }
        a { color: var(--color-primary); text-decoration: none; transition: color var(--transition-fast); }
        a:hover { color: var(--color-accent); text-decoration: underline; }
        a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible {
            outline: 3px solid var(--color-accent); outline-offset: 2px; border-radius: var(--radius-sm);
        }
        h1, h2, h3, h4 { font-family: var(--font-serif); font-weight: 700; line-height: 1.25; color: var(--color-primary); }
        h1 { font-size: clamp(2.5rem, 5vw, 3.5rem); }
        h2 { font-size: clamp(1.75rem, 3.5vw, 2.25rem); margin-bottom: 1rem; }
        h3 { font-size: clamp(1.25rem, 2.5vw, 1.5rem); margin-bottom: 0.75rem; }
        p { margin-bottom: 1rem; color: var(--color-text-muted); font-size: 1rem; }
        .container { width: 100%; max-width: var(--max-width); margin: 0 auto; padding: 0 1.5rem; }
        .btn {
            display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
            padding: 0.875rem 1.75rem; border-radius: var(--radius-md); font-weight: 600; font-size: 0.95rem;
            border: 2px solid transparent; cursor: pointer; transition: all var(--transition-fast);
            text-decoration: none; white-space: nowrap;
        }
        .btn-primary { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
        .btn-primary:hover { background: var(--color-primary-dark); border-color: var(--color-primary-dark); color: #fff; text-decoration: none; }
        .btn-secondary { background: transparent; color: var(--color-primary); border-color: var(--color-primary); }
        .btn-secondary:hover { background: var(--color-primary); color: #fff; text-decoration: none; }
        .btn-accent { background: var(--color-accent); color: #fff; border-color: var(--color-accent); }
        .btn-accent:hover { background: var(--color-accent-hover); border-color: var(--color-accent-hover); color: #fff; text-decoration: none; }
        .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

        /* --- Header & Navigation --- */
        .site-header {
            position: sticky; top: 0; z-index: 1000;
            background: var(--color-surface); border-bottom: 1px solid var(--color-border);
            box-shadow: var(--shadow-sm); height: var(--header-height);
        }
        .header-inner { display: flex; align-items: center; justify-content: space-between; height: 100%; gap: 1.5rem; }
        .logo { display: flex; align-items: center; gap: 0.75rem; text-decoration: none; color: var(--color-primary); flex-shrink: 0; }
        .logo img { width: 48px; height: 48px; border-radius: 50%; background: var(--color-primary); padding: 4px; }
        .logo-text { display: flex; flex-direction: column; line-height: 1.1; }
        .logo-title { font-family: var(--font-serif); font-weight: 700; font-size: 1.15rem; color: var(--color-primary); }
        .logo-tagline { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-text-muted); font-weight: 500; }

        .main-nav { display: none; } /* Hidden by default for mobile */
        .main-nav ul { display: flex; gap: 0.5rem; list-style: none; }
        .main-nav a { display: block; padding: 0.6rem 1rem; font-weight: 500; font-size: 0.9rem; color: var(--color-text); border-radius: var(--radius-sm); transition: background var(--transition-fast), color var(--transition-fast); }
        .main-nav a:hover { background: var(--color-bg); color: var(--color-primary); text-decoration: none; }
        .main-nav a[aria-current="page"] { background: var(--color-primary); color: #fff; }

        .header-actions { display: flex; align-items: center; gap: 1rem; }
        .search-toggle { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: none; background: transparent; border-radius: 50%; color: var(--color-text); cursor: pointer; }
        .search-toggle:hover { background: var(--color-bg); }
        .mobile-menu-btn { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: none; background: transparent; border-radius: var(--radius-md); color: var(--color-text); cursor: pointer; }
        .mobile-menu-btn:hover { background: var(--color-bg); }

        /* Mobile Menu Overlay */
        .mobile-nav-overlay {
            position: fixed; inset: 0; z-index: 1100;
            background: rgba(0,0,0,0.5); opacity: 0; visibility: hidden; transition: opacity var(--transition-normal), visibility var(--transition-normal);
            display: flex; justify-content: flex-end;
        }
        .mobile-nav-overlay.is-open { opacity: 1; visibility: visible; }
        .mobile-nav-panel {
            width: 100%; max-width: 320px; background: var(--color-surface); height: 100vh; overflow-y: auto;
            transform: translateX(100%); transition: transform var(--transition-normal) ease-out;
            padding: 2rem 1.5rem; display: flex; flex-direction: column; gap: 1.5rem;
        }
        .mobile-nav-overlay.is-open .mobile-nav-panel { transform: translateX(0); }
        .mobile-nav-close { align-self: flex-end; background: none; border: none; font-size: 1.5rem; cursor: pointer; color: var(--color-text); padding: 0.5rem; }
        .mobile-nav-links { display: flex; flex-direction: column; gap: 0.25rem; }
        .mobile-nav-links a { padding: 1rem; background: var(--color-bg); border-radius: var(--radius-md); font-weight: 500; color: var(--color-text); text-align: center; }
        .mobile-nav-links a:hover { background: var(--color-primary); color: #fff; text-decoration: none; }
        .mobile-search { display: flex; gap: 0.5rem; }
        .mobile-search input { flex: 1; padding: 0.75rem 1rem; border: 1px solid var(--color-border); border-radius: var(--radius-md); font-size: 1rem; }
        .mobile-search button { padding: 0.75rem 1.5rem; }

        /* Desktop Nav Visible */
        @media (min-width: 992px) {
            .main-nav { display: block; }
            .mobile-menu-btn { display: none; }
            .search-toggle { display: none; } /* Desktop search could be inline, keeping simple for header height constraint */
        }

        /* --- Hero Section --- */
        .hero {
            background: linear-gradient(135deg, var(--color-primary) 0%, #004080 100%);
            color: #fff; padding: 5rem 0; position: relative; overflow: hidden;
        }
        .hero::before {
            content: ""; position: absolute; inset: 0;
            background-image: url("https://placehold.co/1920x1080/003366/ffffff?text=City+Skyline+Silhouette&font=inter");
            background-size: cover; background-position: center; opacity: 0.08; z-index: 0;
        }
        .hero-inner { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr; gap: 2rem; align-items: center; }
        @media (min-width: 768px) { .hero-inner { grid-template-columns: 1fr 1fr; } }
        .hero-content { max-width: 60ch; }
        .hero h1 { color: #fff; margin-bottom: 1rem; text-shadow: 0 2px 4px rgba(0,0,0,0.2); }
        .hero p { color: rgba(255,255,255,0.9); font-size: 1.125rem; margin-bottom: 2rem; max-width: 55ch; }
        .hero-cta-group { display: flex; flex-wrap: wrap; gap: 1rem; }
        .hero-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; padding: 2rem; background: rgba(255,255,255,0.05); border-radius: var(--radius-lg); border: 1px solid rgba(255,255,255,0.1); backdrop-filter: blur(10px); }
        .stat-item { text-align: center; }
        .stat-value { font-family: var(--font-sans); font-size: 2.5rem; font-weight: 700; color: var(--color-accent); line-height: 1; }
        .stat-label { font-size: 0.875rem; color: rgba(255,255,255,0.7); text-transform: uppercase; letter-spacing: 0.05em; margin-top: 0.25rem; }

        /* --- Alert Banner --- */
        .alert-banner { background: var(--color-warning); color: #000; padding: 1rem 0; border-bottom: 1px solid #e0a800; }
        .alert-content { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
        .alert-icon { flex-shrink: 0; width: 24px; height: 24px; }
        .alert-text { flex: 1; min-width: 200px; font-weight: 500; font-size: 0.95rem; }
        .alert-link { font-weight: 700; text-decoration: underline; color: #000; }
        .alert-link:hover { color: var(--color-primary); }

        /* --- Main Layout --- */
        .main-layout { display: grid; grid-template-columns: 1fr; gap: 3rem; padding: 4rem 0; }
        @media (min-width: 992px) { .main-layout { grid-template-columns: 1fr 320px; } }

        /* --- Section Styling --- */
        .section { margin-bottom: 3rem; }
        .section-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; flex-wrap: wrap; }
        .section-title { margin-bottom: 0; }
        .section-link { font-weight: 600; font-size: 0.9rem; display: inline-flex; align-items: center; gap: 0.25rem; }
        .section-link svg { transition: transform var(--transition-fast); }
        .section-link:hover svg { transform: translateX(4px); }

        /* --- Service Grid --- */
        .service-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1.5rem; }
        .service-card {
            background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg);
            padding: 2rem; transition: transform var(--transition-normal), box-shadow var(--transition-normal), border-color var(--transition-normal);
            display: flex; flex-direction: column; height: 100%;
        }
        .service-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); border-color: var(--color-primary-light); }
        .service-icon { width: 56px; height: 56px; background: var(--color-bg); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; color: var(--color-primary); margin-bottom: 1rem; flex-shrink: 0; }
        .service-card h3 { font-size: 1.15rem; margin-bottom: 0.5rem; }
        .service-card p { font-size: 0.9rem; flex-grow: 1; margin-bottom: 1.5rem; }
        .service-card .btn { width: 100%; margin-top: auto; }

        /* --- Content Blocks (Image + Text) --- */
        .content-block { display: grid; grid-template-columns: 1fr; gap: 2rem; align-items: start; }
        @media (min-width: 768px) { .content-block { grid-template-columns: 1fr 1fr; } }
        .content-block.reverse @media (min-width: 768px) { direction: rtl; } .content-block.reverse > * { direction: ltr; }
        .content-image { border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-md); background: var(--color-border); aspect-ratio: 4/3; }
        .content-text h3 { color: var(--color-primary); }
        .content-text p { color: var(--color-text-muted); }
        .content-text ul { margin: 1rem 0 1.5rem 1.5rem; color: var(--color-text-muted); }
        .content-text li { margin-bottom: 0.5rem; }

        /* --- Permit Tracker (Interactive) --- */
        .permit-tracker { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 2rem; margin-top: 1.5rem; }
        .tracker-form { display: grid; grid-template-columns: 1fr; gap: 1rem; max-width: 500px; }
        @media (min-width: 600px) { .tracker-form { grid-template-columns: 1fr auto; align-items: end; } }
        .form-group { display: flex; flex-direction: column; gap: 0.35rem; }
        .form-group label { font-weight: 600; font-size: 0.875rem; color: var(--color-text); }
        .form-group input {
            padding: 0.875rem 1rem; border: 1px solid var(--color-border); border-radius: var(--radius-md);
            font-family: inherit; font-size: 1rem; background: var(--color-bg); transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
        }
        .form-group input:focus { border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(0,51,102,0.15); outline: none; background: #fff; }
        .tracker-result { display: none; margin-top: 1.5rem; padding: 1.5rem; background: var(--color-bg); border-radius: var(--radius-md); border: 1px solid var(--color-border); animation: fadeIn 0.3s ease; }
        .tracker-result.visible { display: block; }
        .result-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 1px solid var(--color-border); }
        .result-status { padding: 0.25rem 0.75rem; border-radius: 999px; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; }
        .status-under-review { background: #fff3cd; color: #856404; }
        .status-approved { background: #d4edda; color: #155724; }
        .status-pending { background: #cce5ff; color: #004085; }
        .result-details { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; font-size: 0.9rem; }
        .detail-item dt { font-weight: 600; color: var(--color-text-muted); font-size: 0.75rem; text-transform: uppercase; margin-bottom: 0.25rem; }
        .detail-item dd { color: var(--color-text); font-weight: 500; }
        @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

        /* --- Transparency Grid --- */
        .transparency-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; }
        .data-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 1.5rem; text-align: center; transition: box-shadow var(--transition-normal); }
        .data-card:hover { box-shadow: var(--shadow-md); }
        .data-card .icon { color: var(--color-accent); margin-bottom: 0.75rem; }
        .data-card .figure { font-family: var(--font-sans); font-size: 2.5rem; font-weight: 700; color: var(--color-primary); line-height: 1; margin-bottom: 0.25rem; }
        .data-card .label { font-size: 0.9rem; color: var(--color-text-muted); font-weight: 500; }

        /* --- Testimonials --- */
        .testimonial-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.5rem; }
        .testimonial-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 2rem; position: relative; }
        .testimonial-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--color-primary), var(--color-accent)); border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
        .testimonial-quote { font-family: var(--font-serif); font-style: italic; color: var(--color-text); margin-bottom: 1.5rem; line-height: 1.7; }
        .testimonial-author { display: flex; align-items: center; gap: 1rem; }
        .author-avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; border: 2px solid var(--color-border); }
        .author-name { font-weight: 600; color: var(--color-text); }
        .author-role { font-size: 0.85rem; color: var(--color-text-muted); }

        /* --- FAQ Accordion --- */
        .faq-list { max-width: 800px; }
        .faq-item { border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); margin-bottom: 0.75rem; overflow: hidden; }
        .faq-question { width: 100%; text-align: left; padding: 1.25rem 1.5rem; background: none; border: none; font-family: inherit; font-size: 1rem; font-weight: 600; color: var(--color-text); cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
        .faq-question:hover { background: var(--color-bg); }
        .faq-question[aria-expanded="true"] { color: var(--color-primary); }
        .faq-icon { flex-shrink: 0; width: 24px; height: 24px; transition: transform var(--transition-fast); color: var(--color-text-muted); }
        .faq-question[aria-expanded="true"] .faq-icon { transform: rotate(180deg); }
        .faq-answer { max-height: 0; overflow: hidden; transition: max-height 0.3s ease, padding 0.3s ease; }
        .faq-answer-content { padding: 0 1.5rem 1.5rem; color: var(--color-text-muted); line-height: 1.7; }

        /* --- Sidebar --- */
        .sidebar { display: flex; flex-direction: column; gap: 1.5rem; position: sticky; top: calc(var(--header-height) + 1.5rem); max-height: calc(100vh - var(--header-height) - 3rem); overflow-y: auto; }
        .sidebar-widget { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 1.5rem; }
        .widget-title { font-size: 1rem; font-weight: 700; color: var(--color-primary); margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--color-border); display: flex; align-items: center; gap: 0.5rem; }
        .meeting-list { list-style: none; }
        .meeting-item { display: flex; gap: 1rem; padding: 0.75rem 0; border-bottom: 1px solid var(--color-border); }
        .meeting-item:last-child { border-bottom: none; padding-bottom: 0; }
        .meeting-date { background: var(--color-primary); color: #fff; border-radius: var(--radius-md); padding: 0.5rem 0.75rem; text-align: center; min-width: 60px; flex-shrink: 0; line-height: 1.2; }
        .meeting-date .day { font-size: 1.25rem; font-weight: 700; line-height: 1; display: block; }
        .meeting-date .month { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.9; }
        .meeting-info h4 { font-size: 0.9rem; font-weight: 600; color: var(--color-text); margin-bottom: 0.15rem; }
        .meeting-info p { font-size: 0.8rem; color: var(--color-text-muted); margin: 0; }
        .budget-item { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 0; border-bottom: 1px solid var(--color-border); }
        .budget-item:last-child { border-bottom: none; }
        .budget-label { font-size: 0.9rem; color: var(--color-text-muted); }
        .budget-value { font-weight: 700; color: var(--color-primary); font-family: var(--font-sans); }
        .alert-widget .alert-item { padding: 1rem; background: var(--color-bg); border-radius: var(--radius-md); margin-bottom: 0.75rem; border-left: 4px solid var(--color-accent); }
        .alert-widget .alert-item:last-child { margin-bottom: 0; }
        .alert-widget .alert-title { font-weight: 600; font-size: 0.9rem; color: var(--color-text); margin-bottom: 0.25rem; }
        .alert-widget .alert-desc { font-size: 0.8rem; color: var(--color-text-muted); margin: 0; }

        /* --- Footer --- */
        .site-footer { background: var(--color-primary-dark); color: rgba(255,255,255,0.7); padding: 4rem 0 2rem; margin-top: 2rem; }
        .footer-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; margin-bottom: 3rem; }
        @media (min-width: 600px) { .footer-grid { grid-template-columns: repeat(2, 1fr); } }
        @media (min-width: 992px) { .footer-grid { grid-template-columns: 2fr repeat(3, 1fr); } }
        .footer-brand { max-width: 300px; }
        .footer-logo { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; }
        .footer-logo img { width: 40px; height: 40px; }
        .footer-brand p { font-size: 0.9rem; color: rgba(255,255,255,0.6); }
        .footer-heading { color: #fff; font-size: 1rem; font-weight: 600; margin-bottom: 1.25rem; text-transform: uppercase; letter-spacing: 0.05em; }
        .footer-links { list-style: none; display: flex; flex-direction: column; gap: 0.6rem; }
        .footer-links a { color: rgba(255,255,255,0.7); font-size: 0.9rem; transition: color var(--transition-fast); }
        .footer-links a:hover { color: var(--color-accent); text-decoration: none; }
        .footer-contact p { margin-bottom: 0.5rem; font-size: 0.9rem; display: flex; align-items: center; gap: 0.5rem; color: rgba(255,255,255,0.7); }
        .footer-bottom { border-top: 1px solid rgba(255,255,255,0.1); padding-top: 2rem; display: flex; flex-direction: column; align-items: center; gap: 1rem; text-align: center; font-size: 0.85rem; }
        @media (min-width: 600px) { .footer-bottom { flex-direction: row; justify-content: space-between; text-align: left; } }
        .social-links { display: flex; gap: 1rem; }
        .social-links a { width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,0.1); display: flex; align-items: center; justify-content: center; color: #fff; transition: background var(--transition-fast), transform var(--transition-fast); }
        .social-links a:hover { background: var(--color-accent); transform: translateY(-2px); color: #fff; text-decoration: none; }
        .legal-links { display: flex; gap: 1.5rem; flex-wrap: wrap; justify-content: center; }
        @media (min-width: 600px) { .legal-links { justify-content: flex-end; } }
        .legal-links a { color: rgba(255,255,255,0.5); font-size: 0.8rem; }
        .legal-links a:hover { color: var(--color-accent); }

        /* --- Utilities --- */
        .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
    </style>
</head>
<body>

<header class="site-header" role="banner">
    <div class="container header-inner">
        <a href="#" class="logo" aria-label="CivicTrust Municipal Portal Home">
            <img src="https://placehold.co/96x96/003366/ffffff?text=CT&font=inter" alt="" aria-hidden="true">
            <div class="logo-text">
                <span class="logo-title">CivicTrust</span>
                <span class="logo-tagline">City of Apex Official Portal</span>
            </div>
        </a>

        <nav class="main-nav" aria-label="Main Navigation" role="navigation">
            <ul>
                <li><a href="#" aria-current="page">Home</a></li>
                <li><a href="#services">Services</a></li>
                <li><a href="#permits">Permits</a></li>
                <li><a href="#transparency">Transparency</a></li>
                <li><a href="#events">Events</a></li>
                <li><a href="#safety">Public Safety</a></li>
                <li><a href="#contact">Contact</a></li>
            </ul>
        </nav>

        <div class="header-actions">
            <button class="search-toggle" aria-label="Open Search" aria-expanded="false" aria-controls="mobile-search">
                <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg>
            </button>
            <button class="mobile-menu-btn" aria-label="Open Menu" aria-expanded="false" aria-controls="mobile-nav-panel">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg>
            </button>
        </div>
    </div>
</header>

<!-- Mobile Nav Overlay -->
<div class="mobile-nav-overlay" id="mobile-nav-overlay" role="dialog" aria-modal="true" aria-labelledby="mobile-nav-title">
    <div class="mobile-nav-panel" id="mobile-nav-panel">
        <button class="mobile-nav-close" aria-label="Close Menu" id="mobile-nav-close">&times;</button>
        <nav class="mobile-nav-links" aria-label="Mobile Navigation">
            <a href="#" aria-current="page">Home</a>
            <a href="#services">Services</a>
            <a href="#permits">Permits & Licensing</a>
            <a href="#transparency">Transparency</a>
            <a href="#events">Events & Meetings</a>
            <a href="#safety">Public Safety</a>
            <a href="#contact">Contact Us</a>
        </nav>
        <div class="mobile-search">
            <input type="search" placeholder="Search services, codes..." aria-label="Search">
            <button class="btn btn-primary" type="submit">Search</button>
        </div>
    </div>
</div>

<!-- Alert Banner -->
<div class="alert-banner" role="region" aria-label="Emergency Alert" aria-live="polite">
    <div class="container alert-content">
        <svg class="alert-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
        <p class="alert-text">Weather Advisory: Winter Storm Warning in effect until 6 PM Friday. <a href="#" class="alert-link">View Emergency Resources & Shelter Locations</a></p>
    </div>
</div>

<main id="main-content" role="main">
    <!-- Hero Section -->
    <section class="hero" aria-labelledby="hero-title">
        <div class="container hero-inner">
            <div class="hero-content">
                <h1 id="hero-title">Transparent Government. Accessible Services. Thriving Community.</h1>
                <p>The City of Apex CivicTrust Portal is your central hub for municipal services, regulatory compliance, public records, and civic engagement. We are committed to fiscal responsibility and open governance for the 2024-2025 fiscal year.</p>
                <div class="hero-cta-group">
                    <a href="#services" class="btn btn-accent">Explore Services</a>
                    <a href="#permits" class="btn btn-secondary" style="border-color: #fff; color: #fff;">Apply for Permits</a>
                </div>
            </div>
            <div class="hero-stats" aria-label="City Statistics">
                <div class="stat-item">
                    <div class="stat-value">98.2%</div>
                    <div class="stat-label">Citizen Satisfaction</div>
                </div>
                <div class="stat-item">
                    <div class="stat-value">$240M</div>
                    <div class="stat-label">Annual Budget</div>
                </div>
                <div class="stat-item">
                    <div class="stat-value">12K+</div>
                    <div class="stat-label">Permits Processed/Yr</div>
                </div>
            </div>
        </div>
    </section>

    <!-- Main Layout Grid -->
    <div class="container main-layout">
        <!-- Primary Content Area -->
        <div class="content-area">
            <!-- Featured Services -->
            <section id="services" class="section" aria-labelledby="services-title">
                <header class="section-header">
                    <h2 id="services-title" class="section-title">Featured Municipal Services</h2>
                    <a href="#" class="section-link">View All Services <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a>
                </header>
                <div class="service-grid" role="list">
                    <article class="service-card" role="listitem">
                        <div class="service-icon" aria-hidden="true"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg></div>
                        <h3>Building & Safety Permits</h3>
                        <p>Submit, track, and manage building permit applications online. Our streamlined ePlan review system reduces turnaround times for residential and commercial projects.</p>
                        <a href="#permits" class="btn btn-primary">Start Application</a>
                    </article>
                    <article class="service-card" role="listitem">
                        <div class="service-icon" aria-hidden="true"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                        <h3>Utility Billing & Payments</h3>
                        <p>Manage water, sewer, and stormwater accounts. Enroll in auto-pay, view consumption history, and request service starts or stops through the secure customer portal.</p>
                        <a href="#" class="btn btn-primary">Manage Account</a>
                    </article>
                    <article class="service-card" role="listitem">
                        <div class="service-icon" aria-hidden="true"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg></div>
                        <h3>Business Licensing</h3>
                        <p>Apply for new business licenses, renew existing registrations, and verify zoning compliance for commercial operations within city limits.</p>
                        <a href="#" class="btn btn-primary">License Portal</a>
                    </article>
                    <article class="service-card" role="listitem">
                        <div class="service-icon" aria-hidden="true"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg></div>
                        <h3>Public Records Requests</h3>
                        <p>Submit Freedom of Information Act (FOIA) requests digitally. Track request status, communicate with records officers, and download responsive documents.</p>
                        <a href="#" class="btn btn-primary">Submit Request</a>
                    </article>
                    <article class="service-card" role="listitem">
                        <div class="service-icon" aria-hidden="true"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg></div>
                        <h3>Code Enforcement Reporting</h3>
                        <p>Report property maintenance violations, zoning infractions, or environmental hazards. Upload photos and geolocation data for faster inspector dispatch.</p>
                        <a href="#" class="btn btn-primary">File Report</a>
                    </article>
                    <article class="service-card" role="listitem">
                        <div class="service-icon" aria-hidden="true"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg></div>
                        <h3>Court & Citation Payments</h3>
                        <p>Pay traffic citations, municipal court fines, and parking tickets securely online. View court dates, request continuances, or enroll in defensive driving courses.</p>
                        <a href="#" class="btn btn-primary">Pay Citation</a>
                    </article>
                </div>
            </section>

            <!-- Public Safety & Preparedness -->
            <section id="safety" class="section" aria-labelledby="safety-title">
                <div class="content-block reverse">
                    <div class="content-image">
                        <img src="https://picsum.photos/seed/apex-fire-dept/800/600" alt="Apex Fire Department engine and crew in front of station">
                    </div>
                    <div class="content-text">
                        <h2 id="safety-title">Public Safety & Emergency Preparedness</h2>
                        <p>The Apex Department of Public Safety operates under a unified command structure integrating Police, Fire, and Emergency Medical Services. For the current fiscal year, the department has allocated significant resources toward community risk reduction programs, including the expansion of the Community Paramedicine initiative and the implementation of a new Computer-Aided Dispatch (CAD) system to improve response times across all districts.</p>
                        <p>Residents are encouraged to register for the <strong>AlertApex</strong> emergency notification system to receive real-time alerts regarding severe weather, road closures, and public safety emergencies via SMS, email, or voice call. The Office of Emergency Management (OEM) publishes the Comprehensive Emergency Management Plan (CEMP) annually, detailing evacuation routes, shelter-in-place protocols, and continuity of operations planning.</p>
                        <h3>Key Initiatives</h3>
                        <ul>
                            <li><strong>Neighborhood Watch Revitalization:</strong> Partnership with HOAs to establish certified watch groups.</li>
                            <li><strong>Youth Engagement Programs:</strong> Police Athletic League (PAL) and Fire Explorer Post 911.</li>
                            <li><strong>Traffic Calming Measures:</strong> Data-driven deployment of speed humps and radar feedback signs.</li>
                        </ul>
                        <a href="#" class="btn btn-primary">Sign Up for AlertApex</a>
                    </div>
                </div>
            </section>

            <!-- Planning, Zoning & Development -->
            <section id="planning" class="section" aria-labelledby="planning-title">
                <div class="content-block">
                    <div class="content-image">
                        <img src="https://picsum.photos/seed/apex-planning-meeting/800/600" alt="Planning commission meeting with maps and developers">
                    </div>
                    <div class="content-text">
                        <h2 id="planning-title">Planning, Zoning & Development Services</h2>
                        <p>The Planning & Development Services Division administers the City's Comprehensive Plan, "Apex 2045," which guides long-term growth, infrastructure investment, and land use policy. The division processes rezoning applications, special use permits, variances, and subdivision plats through a transparent public hearing process involving the Planning Commission and City Council.</p>
                        <p>Current major undertakings include the <strong>Downtown Revitalization Overlay District</strong> update, the <strong>Unified Development Ordinance (UDO)</strong> amendment cycle for FY2025, and the ongoing <strong>Transportation Master Plan</strong> update addressing multi-modal connectivity. Developers and property owners can utilize the Development Assistance Center (DAC) for pre-application conferences to identify regulatory hurdles early in the project lifecycle.</p>
                        <h3>Current Public Hearings</h3>
                        <ul>
                            <li><strong>RZ-2024-012:</strong> Rezoning 14.2 acres at Main St & 5th Ave from R-1 to MXD (Mixed Use). Hearing: Oct 15.</li>
                            <li><strong>SUP-2024-008:</strong> Special Use Permit for a 120-unit multi-family development near Transit Center.</li>
                            <li><strong>Text Amendment:</strong> Proposed changes to Article 14 (Sign Regulations) regarding digital signage.</li>
                        </ul>
                        <a href="#" class="btn btn-primary">View Development Dashboard</a>
                    </div>
                </div>

                <!-- Interactive Permit Tracker -->
                <div class="permit-tracker" id="permit-tracker">
                    <h3>Permit Status Tracker</h3>
                    <p style="margin-bottom: 1.5rem; color: var(--color-text-muted);">Enter your Permit Number (format: PER-YYYY-NNNNN) or Application ID to view real-time status, review comments, and inspection schedules.</p>
                    <form class="tracker-form" id="tracker-form" novalidate>
                        <div class="form-group">
                            <label for="permit-number">Permit Number</label>
                            <input type="text" id="permit-number" name="permitNumber" placeholder="e.g., PER-2024-01234" required pattern="PER-\d{4}-\d{5}" aria-describedby="permit-help">
                            <small id="permit-help" style="color: var(--color-text-muted); font-size: 0.8rem;">Format: PER-YYYY-NNNNN</small>
                        </div>
                        <button type="submit" class="btn btn-primary">Check Status</button>
                    </form>
                    <div class="tracker-result" id="tracker-result" aria-live="polite">
                        <div class="result-header">
                            <strong id="result-permit-id">PER-2024-01234</strong>
                            <span class="result-status status-under-review" id="result-status">Under Review</span>
                        </div>
                        <dl class="result-details">
                            <div class="detail-item"><dt>Type</dt><dd id="result-type">Commercial Build-Out</dd></div>
                            <div class="detail-item"><dt>Address</dt><dd id="result-address">100 Civic Center Dr</dd></div>
                            <div class="detail-item"><dt>Submitted</dt><dd id="result-date">2024-09-15</dd></div>
                            <div class="detail-item"><dt>Assigned Reviewer</dt><dd id="result-reviewer">J. Martinez, Plans Examiner</dd></div>
                            <div class="detail-item"><dt>Next Milestone</dt><dd id="result-next">Planning Commission Hearing (Oct 15)</dd></div>
                        </dl>
                    </div>
                </div>
            </section>

            <!-- Transparency & Open Data -->
            <section id="transparency" class="section" aria-labelledby="transparency-title">
                <header class="section-header">
                    <h2 id="transparency-title" class="section-title">Transparency & Open Government</h2>
                    <a href="#" class="section-link">Open Data Portal <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a>
                </header>
                <p style="max-width: 70ch; margin-bottom: 2rem; color: var(--color-text-muted);">CivicTrust is built on the principle that government accountability requires accessible data. We publish financial expenditures, contract awards, salary databases, and performance metrics in machine-readable formats. Our Open Data Portal complies with the State Open Records Act and federal DATA Act standards.</p>
                <div class="transparency-grid" role="list">
                    <article class="data-card" role="listitem">
                        <div class="icon" aria-hidden="true"><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><line x1="18" y1="20" x2="18" y2="10"></line><line x1="12" y1="20" x2="12" y2="4"></line><line x1="6" y1="20" x2="6" y2="14"></line></svg></div>
                        <div class="figure">$18.4M</div>
                        <div class="label">Capital Improvement FY24 YTD</div>
                    </article>
                    <article class="data-card" role="listitem">
                        <div class="icon" aria-hidden="true"><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg></div>
                        <div class="figure">342</div>
                        <div class="label">Active Contracts Awarded</div>
                    </article>
                    <article class="data-card" role="listitem">
                        <div class="icon" aria-hidden="true"><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="6" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg></div>
                        <div class="figure">14 Days</div>
                        <div class="label">Avg. FOIA Response Time</div>
                    </article>
                    <article class="data-card" role="listitem">
                        <div class="icon" aria-hidden="true"><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg></div>
                        <div class="figure">1,240</div>
                        <div class="label">Datasets Published</div>
                    </article>
                </div>
            </section>

            <!-- Community Voices / Testimonials -->
            <section id="community" class="section" aria-labelledby="community-title">
                <header class="section-header">
                    <h2 id="community-title" class="section-title">Community Voices</h2>
                </header>
                <p style="max-width: 70ch; margin-bottom: 2rem; color: var(--color-text-muted);">Feedback from residents and business owners drives our continuous improvement efforts. These reflections represent verified interactions with municipal departments during the last quarter.</p>
                <div class="testimonial-grid" role="list">
                    <article class="testimonial-card" role="listitem">
                        <blockquote class="testimonial-quote">"The new ePlan submission portal cut our commercial permit review time by nearly 40%. The ability to respond to reviewer comments digitally without resubmitting full plan sets is a game-changer for our project management workflow."</blockquote>
                        <div class="testimonial-author">
                            <img class="author-avatar" src="https://i.pravatar.cc/96?u=dev-james" alt="" aria-hidden="true">
                            <div>
                                <div class="author-name">Marcus Thorne</div>
                                <div class="author-role">Principal, Thorne Development Group</div>
                            </div>
                        </div>
                    </article>
                    <article class="testimonial-card" role="listitem">
                        <blockquote class="testimonial-quote">"As a new resident, the 'New Neighbor' packet and the 311 app made navigating city services incredibly simple. I reported a streetlight outage and it was resolved within 48 hours. The transparency on the tracker map gave me confidence in the process."</blockquote>
                        <div class="testimonial-author">
                            <img class="author-avatar" src="https://i.pravatar.cc/96?u=resident-sarah" alt="" aria-hidden="true">
                            <div>
                                <div class="author-name">Sarah Jenkins</div>
                                <div class="author-role">Resident, Maplewood District</div>
                            </div>
                        </div>
                    </article>
                    <article class="testimonial-card" role="listitem">
                        <blockquote class="testimonial-quote">"The Planning Commission's pre-application conference saved us months of redesign. Staff identified a setback conflict with the new UDO overlay early, allowing us to adjust the site plan before formal submission. Professional, knowledgeable staff."</blockquote>
                        <div class="testimonial-author">
                            <img class="author-avatar" src="https://i.pravatar.cc/96?u=architect-robert" alt="" aria-hidden="true">
                            <div>
                                <div class="author-name">Robert K. Lee, AIA</div>
                                <div class="author-role">Senior Architect, Lee & Associates</div>
                            </div>
                        </div>
                    </article>
                </div>
            </section>

            <!-- FAQ Accordion -->
            <section id="faq" class="section" aria-labelledby="faq-title">
                <header class="section-header">
                    <h2 id="faq-title" class="section-title">Frequently Asked Questions</h2>
                </header>
                <div class="faq-list">
                    <details class="faq-item">
                        <summary class="faq-question" aria-expanded="false">
                            How do I determine the zoning designation for my property?
                            <svg class="faq-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><polyline points="6 9 12 15 18 9"></polyline></svg>
                        </summary>
                        <div class="faq-answer">
                            <div class="faq-answer-content">
                                <p>You can determine your property's zoning designation by using the <a href="#">Interactive Zoning Map</a> available on the Planning Division page. Enter your address or parcel ID (PIN) to view the current zoning district, overlay districts, and future land use classification. For official written verification, you may request a Zoning Verification Letter through the Public Records Request portal (fee applies).</p>
                            </div>
                        </div>
                    </details>
                    <details class="faq-item">
                        <summary class="faq-question" aria-expanded="false">
                            What is the process for appealing a code enforcement violation?
                            <svg class="faq-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><polyline points="6 9 12 15 18 9"></polyline></svg>
                        </summary>
                        <div class="faq-answer">
                            <div class="faq-answer-content">
                                <p>Upon receipt of a Notice of Violation (NOV), the property owner or responsible party has <strong>15 calendar days</strong> to file a written appeal with the Code Enforcement Board. The appeal must be submitted on the official Appeal Form (CE-101) and accompanied by the applicable filing fee. A hearing will be scheduled within 30 days. Failure to appeal or correct the violation within the compliance period may result in the issuance of a citation and potential liens against the property.</p>
                            </div>
                        </div>
                    </details>
                    <details class="faq-item">
                        <summary class="faq-question" aria-expanded="false">
                            When are City Council meetings held and how can I speak?
                            <svg class="faq-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><polyline points="6 9 12 15 18 9"></polyline></svg>
                        </summary>
                        <div class="faq-answer">
                            <div class="faq-answer-content">
                                <p>Regular City Council meetings are held on the <strong>1st and 3rd Tuesdays</strong> of each month at 6:00 PM in the Council Chambers at City Hall. Special called meetings and work sessions are posted per state Sunshine Law requirements. To speak during the "Public Comment" period, individuals must sign up via the <a href="#">Speaker Registration Form</a> by 12:00 PM on the meeting day. Speakers are limited to three minutes. Agendas are published the Friday prior to the meeting.</p>
                            </div>
                        </div>
                    </details>
                    <details class="faq-item">
                        <summary class="faq-question" aria-expanded="false">
                            How are property tax rates determined in Apex?
                            <svg class="faq-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><polyline points="6 9 12 15 18 9"></polyline></svg>
                        </summary>
                        <div class="faq-answer">
                            <div class="faq-answer-content">
                                <p>The City Council sets the ad valorem tax rate annually during the budget adoption process (typically June). The rate is expressed in dollars per $100 of assessed valuation. The County Tax Assessor determines the assessed value of real property. The current rate for FY2024-2025 is <strong>$0.415 per $100 valuation</strong>. Revenue supports General Fund operations: Public Safety, Parks & Recreation, Public Works, and Debt Service. Senior citizens and disabled veterans may qualify for homestead exclusions.</p>
                            </div>
                        </div>
                    </details>
                    <details class="faq-item">
                        <summary class="faq-question" aria-expanded="false">
                            Where can I find the adopted budget and financial audit reports?
                            <svg class="faq-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><polyline points="6 9 12 15 18 9"></polyline></svg>
                        </summary>
                        <div class="faq-answer">
                            <div class="faq-answer-content">
                                <p>All adopted budgets (Annual Operating Budget, Capital Improvement Program) and Comprehensive Annual Financial Reports (CAFR) are archived in the <a href="#">Financial Transparency Portal</a>. The CAFR is prepared in accordance with GASB standards and audited by an independent CPA firm. Current and historical documents (back to FY2010) are available for download in PDF and Excel formats. The Popular Annual Financial Report (PAFR) provides a citizen-friendly summary.</p>
                            </div>
                        </div>
                    </details>
                </div>
            </section>
        </div>

        <!-- Sidebar -->
        <aside class="sidebar" aria-label="Quick Links & Updates">
            <!-- Upcoming Meetings -->
            <div class="sidebar-widget">
                <h3 class="widget-title"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg> Upcoming Public Meetings</h3>
                <ul class="meeting-list">
                    <li class="meeting-item">
                        <div class="meeting-date"><span class="day">15</span><span class="month">Oct</span></div>
                        <div class="meeting-info">
                            <h4>Planning Commission</h4>
                            <p>6:00 PM • Council Chambers</p>
                        </div>
                    </li>
                    <li class="meeting-item">
                        <div class="meeting-date"><span class="day">17</span><span class="month">Oct</span></div>
                        <div class="meeting-info">
                            <h4>Board of Adjustment</h4>
                            <p>5:30 PM • Virtual / Room 204</p>
                        </div>
                    </li>
                    <li class="meeting-item">
                        <div class="meeting-date"><span class="day">21</span><span class="month">Oct</span></div>
                        <div class="meeting-info">
                            <h4>City Council Regular</h4>
                            <p>6:00 PM • Council Chambers</p>
                        </div>
                    </li>
                    <li class="meeting-item">
                        <div class="meeting-date"><span class="day">28</span><span class="month">Oct</span></div>
                        <div class="meeting-info">
                            <h4>Parks & Rec Advisory</h4>
                            <p>7:00 PM • Community Center</p>
                        </div>
                    </li>
                </ul>
                <a href="#events" class="btn btn-secondary" style="width: 100%; margin-top: 1rem; justify-content: center;">Full Calendar</a>
            </div>

            <!-- Budget Snapshot -->
            <div class="sidebar-widget">
                <h3 class="widget-title"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><line x1="18" y1="20" x2="18" y2="10"></line><line x1="12" y1="20" x2="12" y2="4"></line><line x1="6" y1="20" x2="6" y2="14"></line></svg> FY2025 Budget Snapshot</h3>
                <div class="budget-item"><span class="budget-label">General Fund Revenue</span><span class="budget-value">$112.4M</span></div>
                <div class="budget-item"><span class="budget-label">General Fund Expenditure</span><span class="budget-value">$110.8M</span></div>
                <div class="budget-item"><span class="budget-label">Capital Projects Fund</span><span class="budget-value">$42.1M</span></div>
                <div class="budget-item"><span class="budget-label">Enterprise Funds (Water/Sewer)</span><span class="budget-value">$38.5M</span></div>
                <div class="budget-item"><span class="budget-label">Fund Balance (Unassigned)</span><span class="budget-value" style="color: var(--color-success);">$18.2M</span></div>
                <a href="#transparency" class="btn btn-secondary" style="width: 100%; margin-top: 1rem; justify-content: center;">View Full Budget</a>
            </div>

            <!-- Emergency Alerts -->
            <div class="sidebar-widget alert-widget">
                <h3 class="widget-title"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg> Active Alerts</h3>
                <div class="alert-item">
                    <div class="alert-title">Winter Storm Warning</div>
                    <p class="alert-desc">Active until 6 PM Fri. Hazardous travel conditions expected. Non-essential city offices closing 2 PM.</p>
                </div>
                <div class="alert-item" style="border-left-color: var(--color-success);">
                    <div class="alert-title">Water Main Repair - Oak St</div>
                    <p class="alert-desc">Intermittent pressure loss 100-300 Block. Crews on site. Estimated restoration: 4:00 PM.</p>
                </div>
                <div class="alert-item" style="border-left-color: var(--color-primary);">
                    <div class="alert-title">Road Closure: Main St Bridge</div>
                    <p class="alert-desc">Closed for structural inspection. Detour via 5th Ave & Elm St. Duration: 2-3 weeks.</p>
                </div>
                <a href="#safety" class="btn btn-secondary" style="width: 100%; margin-top: 1rem; justify-content: center;">All Alerts</a>
            </div>

            <!-- Contact Card -->
            <div class="sidebar-widget" style="background: var(--color-primary); border-color: var(--color-primary); color: #fff;">
                <h3 class="widget-title" style="color: #fff; border-color: rgba(255,255,255,0.2);"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg> City Hall</h3>
                <address style="font-style: normal; line-height: 2; font-size: 0.95rem; color: rgba(255,255,255,0.9);">
                    <p><strong>100 Civic Center Drive</strong><br>Apex, State 27502</p>
                    <p>📞 <a href="tel:+19195550100" style="color: #fff;">(919) 555-0100</a><br>✉️ <a href="mailto:info@apexcivictrust.gov" style="color: #fff;">info@apexcivictrust.gov</a></p>
                    <p>Hours: Mon–Fri, 8:00 AM – 5:00 PM<br>Closed Federal Holidays</p>
                </address>
            </div>
        </aside>
    </div>
</main>

<footer class="site-footer" role="contentinfo" id="contact">
    <div class="container">
        <div class="footer-grid">
            <div class="footer-brand">
                <div class="footer-logo">
                    <img src="https://placehold.co/80x80/003366/ffffff?text=CT&font=inter" alt="" aria-hidden="true">
                    <span style="font-family: var(--font-serif); font-weight: 700; font-size: 1.25rem;">CivicTrust</span>
                </div>
                <p>The City of Apex is committed to providing transparent, efficient, and equitable government services to all residents, businesses, and visitors.</p>
            </div>
            <nav aria-label="Government Services">
                <h4 class="footer-heading">Services</h4>
                <ul class="footer-links">
                    <li><a href="#permits">Building & Permits</a></li>
                    <li><a href="#">Utility Billing</a></li>
                    <li><a href="#">Business Licensing</a></li>
                    <li><a href="#">Public Records</a></li>
                    <li><a href="#">Code Enforcement</a></li>
                    <li><a href="#">Court Payments</a></li>
                </ul>
            </nav>
            <nav aria-label="Government Links">
                <h4 class="footer-heading">Government</h4>
                <ul class="footer-links">
                    <li><a href="#">City Council</a></li>
                    <li><a href="#">Departments</a></li>
                    <li><a href="#transparency">Open Data</a></li>
                    <li><a href="#">Budget & Finance</a></li>
                    <li><a href="#">Ordinances & Codes</a></li>
                    <li><a href="#">Elections & Voting</a></li>
                </ul>
            </nav>
            <nav aria-label="Community Resources">
                <h4 class="footer-heading">Community</h4>
                <ul class="footer-links">
                    <li><a href="#events">Calendar & Events</a></li>
                    <li><a href="#">Parks & Recreation</a></li>
                    <li><a href="#">Public Library</a></li>
                    <li><a href="#">Senior Services</a></li>
                    <li><a href="#">Emergency Prep</a></li>
                    <li><a href="#">Volunteer Opportunities</a></li>
                </ul>
            </nav>
        </div>
        <div class="footer-bottom">
            <p>&copy; 2025 City of Apex. All Rights Reserved.</p>
            <div class="social-links" aria-label="Social Media">
                <a href="#" aria-label="Twitter"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path></svg></a>
                <a href="#" aria-label="Facebook"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg></a>
                <a href="#" aria-label="YouTube"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"></path><polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon></svg></a>
                <a href="#" aria-label="Instagram"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line></svg></a>
                <a href="#" aria-label="Nextdoor"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-1-13h2v6h-2zm0 8h2v2h-2z"></path></svg></a>
            </div>
            <nav class="legal-links" aria-label="Legal Links">
                <a href="#">Privacy Policy</a>
                <a href="#">Terms of Use</a>
                <a href="#">Accessibility Statement</a>
                <a href="#">Public Records Policy</a>
            </nav>
        </div>
    </div>
</footer>

<script>
    // --- Mobile Navigation Toggle ---
    const mobileMenuBtn = document.querySelector('.mobile-menu-btn');
    const mobileNavOverlay = document.getElementById('mobile-nav-overlay');
    const mobileNavClose = document.getElementById('mobile-nav-close');
    const mobileNavPanel = document.getElementById('mobile-nav-panel');

    function openMobileNav() {
        mobileNavOverlay.classList.add('is-open');
        mobileMenuBtn.setAttribute('aria-expanded', 'true');
        document.body.style.overflow = 'hidden';
        // Trap focus (simple version)
        mobileNavPanel.querySelector('a, button').focus();
    }

    function closeMobileNav() {
        mobileNavOverlay.classList.remove('is-open');
        mobileMenuBtn.setAttribute('aria-expanded', 'false');
        document.body.style.overflow = '';
        mobileMenuBtn.focus();
    }

    mobileMenuBtn.addEventListener('click', openMobileNav);
    mobileNavClose.addEventListener('click', closeMobileNav);
    mobileNavOverlay.addEventListener('click', (e) => {
        if (e.target === mobileNavOverlay) closeMobileNav();
    });

    // Close on Escape key
    document.addEventListener('keydown', (e) => {
        if (e.key === 'Escape' && mobileNavOverlay.classList.contains('is-open')) {
            closeMobileNav();
        }
    });

    // Close mobile nav when clicking a link
    mobileNavPanel.querySelectorAll('a').forEach(link => {
        link.addEventListener('click', closeMobileNav);
    });

    // --- Permit Tracker Logic ---
    const trackerForm = document.getElementById('tracker-form');
    const trackerResult = document.getElementById('tracker-result');
    const permitInput = document.getElementById('permit-number');

    // Mock Data
    const mockPermits = {
        'PER-2024-01234': { type: 'Commercial Build-Out', address: '100 Civic Center Dr', date: '2024-09-15', reviewer: 'J. Martinez, Plans Examiner', next: 'Planning Commission Hearing (Oct 15)', status: 'Under Review', statusClass: 'status-under-review' },
        'PER-2024-00987': { type: 'Residential Addition', address: '45 Maplewood Ln', date: '2024-08-22', reviewer: 'S. Chen, Building Inspector', next: 'Final Inspection Scheduled (Oct 18)', status: 'Approved', statusClass: 'status-approved' },
        'PER-2024-01550': { type: 'Sign Permit', address: '220 Main St', date: '2024-10-01', reviewer: 'A. Rodriguez, Zoning Admin', next: 'Awaiting Applicant Revision', status: 'Pending Info', statusClass: 'status-pending' }
    };

    trackerForm.addEventListener('submit', (e) => {
        e.preventDefault();
        const permitNum = permitInput.value.trim().toUpperCase();
        const data = mockPermits[permitNum];

        if (data) {
            document.getElementById('result-permit-id').textContent = permitNum;
            document.getElementById('result-type').textContent = data.type;
            document.getElementById('result-address').textContent = data.address;
            document.getElementById('result-date').textContent = data.date;
            document.getElementById('result-reviewer').textContent = data.reviewer;
            document.getElementById('result-next').textContent = data.next;
            
            const statusEl = document.getElementById('result-status');
            statusEl.textContent = data.status;
            statusEl.className = 'result-status ' + data.statusClass;
            
            trackerResult.classList.add('visible');
            trackerResult.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
        } else {
            alert('Permit not found. Please check the number and try again.\n\nDemo numbers: PER-2024-01234, PER-2024-00987, PER-2024-01550');
            trackerResult.classList.remove('visible');
        }
    });

    // --- FAQ Accordion Polyfill for <details> animation ---
    // Native <details> doesn't animate height easily. We use the CSS max-height transition on .faq-answer.
    // We need to toggle the max-height via JS when open/close happens.
    document.querySelectorAll('.faq-item').forEach(item => {
        const summary = item.querySelector('.faq-question');
        const answer = item.querySelector('.faq-answer');
        
        // Initialize state
        if (item.open) {
            answer.style.maxHeight = answer.scrollHeight + 'px';
        } else {
            answer.style.maxHeight = '0px';
        }

        summary.addEventListener('click', (e) => {
            // Prevent default toggle to handle animation
            e.preventDefault();
            const isOpen = item.open;
            
            if (isOpen) {
                // Closing
                answer.style.maxHeight = answer.scrollHeight + 'px'; // Set explicit height first
                // Force reflow
                answer.offsetHeight;
                answer.style.maxHeight = '0px';
                // Wait for transition then close
                setTimeout(() => { item.open = false; }, 300);
            } else {
                // Opening
                item.open = true;
                answer.style.maxHeight = '0px'; // Ensure start state
                answer.offsetHeight; // Reflow
                answer.style.maxHeight = answer.scrollHeight + 'px';
                // Clean up max-height after transition to allow content growth
                setTimeout(() => { answer.style.maxHeight = 'none'; }, 300);
            }
        });
    });

    // Update current year in footer (already hardcoded 2025 per prompt, but good practice)
    // document.querySelector('.footer-bottom p').textContent = `© ${new Date().getFullYear()} City of Apex. All Rights Reserved.`;
</script>
</body>
</html>
View Axe Report (JSON)
{
  "testEngine": {
    "name": "axe-core",
    "version": "4.10.2"
  },
  "testRunner": {
    "name": "axe"
  },
  "testEnvironment": {
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
    "windowWidth": 1280,
    "windowHeight": 720,
    "orientationAngle": 0,
    "orientationType": "landscape-primary"
  },
  "timestamp": "2026-11-12T09:42:35.504Z",
  "url": "https://benchmark.aimac.invalid/caeea7c191faeb3e2823b3e703d188baf172173f0c7b3b11abf569753c12708a.html",
  "toolOptions": {
    "runOnly": {
      "type": "tag",
      "values": [
        "wcag2a",
        "wcag2aa",
        "wcag21a",
        "wcag21aa",
        "wcag22a",
        "wcag22aa"
      ]
    },
    "resultTypes": [
      "violations"
    ],
    "reporter": "v1"
  },
  "inapplicable": [
    {
      "id": "area-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag244",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.2.4.4",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure <area> elements of image maps have alternative text",
      "help": "Active <area> elements must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-braille-equivalent",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
      "help": "aria-braille attributes must have a non-braille equivalent",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-command-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA button, link and menuitem has an accessible name",
      "help": "ARIA commands must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-input-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA input field has an accessible name",
      "help": "ARIA input fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-meter-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag111",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure every ARIA meter node has an accessible name",
      "help": "ARIA meter nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-progressbar-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag111",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure every ARIA progressbar node has an accessible name",
      "help": "ARIA progressbar nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-toggle-field-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every ARIA toggle field has an accessible name",
      "help": "ARIA toggle fields must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "aria-tooltip-name",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every ARIA tooltip node has an accessible name",
      "help": "ARIA tooltip nodes must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "autocomplete-valid",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag21aa",
        "wcag135",
        "EN-301-549",
        "EN-9.1.3.5",
        "ACT"
      ],
      "description": "Ensure the autocomplete attribute is correct and suitable for the form field",
      "help": "autocomplete attribute must be used correctly",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
      "nodes": []
    },
    {
      "id": "blink",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag222",
        "section508",
        "section508.22.j",
        "TTv5",
        "TT2.b",
        "EN-301-549",
        "EN-9.2.2.2"
      ],
      "description": "Ensure <blink> elements are not used",
      "help": "<blink> elements are deprecated and must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
      "nodes": []
    },
    {
      "id": "definition-list",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <dl> elements are structured correctly",
      "help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
      "nodes": []
    },
    {
      "id": "dlitem",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure <dt> and <dd> elements are contained by a <dl>",
      "help": "<dt> and <dd> elements must be contained by a <dl>",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-focusable-content",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag211",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
      "help": "Frames with focusable content must not have tabindex=-1",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-title-unique",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT12.d",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
      "help": "Frames must have a unique title attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
      "nodes": []
    },
    {
      "id": "frame-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.i",
        "TTv5",
        "TT12.d",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure <iframe> and <frame> elements have an accessible name",
      "help": "Frames must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
      "nodes": []
    },
    {
      "id": "html-xml-lang-mismatch",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
      "help": "HTML elements with lang and xml:lang must have the same base language",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
      "nodes": []
    },
    {
      "id": "input-button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure input buttons have discernible text",
      "help": "Input buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "input-image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure <input type=\"image\"> elements have alternative text",
      "help": "Image buttons must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "marquee",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag222",
        "TTv5",
        "TT2.b",
        "EN-301-549",
        "EN-9.2.2.2"
      ],
      "description": "Ensure <marquee> elements are not used",
      "help": "<marquee> elements are deprecated and must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
      "nodes": []
    },
    {
      "id": "meta-refresh",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag221",
        "TTv5",
        "TT8.a",
        "EN-301-549",
        "EN-9.2.2.1"
      ],
      "description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
      "help": "Delayed refresh under 20 hours must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
      "nodes": []
    },
    {
      "id": "object-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "EN-301-549",
        "EN-9.1.1.1"
      ],
      "description": "Ensure <object> elements have alternative text",
      "help": "<object> elements must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "role-img-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure [role=\"img\"] elements have alternative text",
      "help": "[role=\"img\"] elements must have an alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "select-name",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure select element has an accessible name",
      "help": "Select element must have an accessible name",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
      "nodes": []
    },
    {
      "id": "server-side-image-map",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag211",
        "section508",
        "section508.22.f",
        "TTv5",
        "TT4.a",
        "EN-301-549",
        "EN-9.2.1.1"
      ],
      "description": "Ensure that server-side image maps are not used",
      "help": "Server-side image maps must not be used",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
      "nodes": []
    },
    {
      "id": "svg-img-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
      "help": "<svg> elements with an img role must have an alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
      "nodes": []
    },
    {
      "id": "td-headers-attr",
      "impact": null,
      "tags": [
        "cat.tables",
        "wcag2a",
        "wcag131",
        "section508",
        "section508.22.g",
        "TTv5",
        "TT14.b",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
      "help": "Table cells that use the headers attribute must only refer to cells in the same table",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
      "nodes": []
    },
    {
      "id": "th-has-data-cells",
      "impact": null,
      "tags": [
        "cat.tables",
        "wcag2a",
        "wcag131",
        "section508",
        "section508.22.g",
        "TTv5",
        "TT14.b",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
      "help": "Table headers in a data table must refer to data cells",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
      "nodes": []
    },
    {
      "id": "valid-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2aa",
        "wcag312",
        "TTv5",
        "TT11.b",
        "EN-301-549",
        "EN-9.3.1.2",
        "ACT"
      ],
      "description": "Ensure lang attributes have valid values",
      "help": "lang attribute must have a valid value",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
      "nodes": []
    },
    {
      "id": "video-caption",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag122",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT17.a",
        "EN-301-549",
        "EN-9.1.2.2"
      ],
      "description": "Ensure <video> elements have captions",
      "help": "<video> elements must have captions",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
      "nodes": []
    },
    {
      "id": "no-autoplay-audio",
      "impact": null,
      "tags": [
        "cat.time-and-media",
        "wcag2a",
        "wcag142",
        "TTv5",
        "TT2.a",
        "EN-301-549",
        "EN-9.1.4.2",
        "ACT"
      ],
      "description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
      "help": "<video> or <audio> elements must not play automatically",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
      "nodes": []
    }
  ],
  "passes": [
    {
      "id": "aria-allowed-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure an element's role supports its ARIA attributes",
      "help": "Elements must only use supported ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-allowed-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attributes are used correctly for the defined role"
            }
          ],
          "none": [
            {
              "id": "aria-unsupported-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute is supported"
            }
          ],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"CivicTrust Municipal Portal Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "id": "aria-conditional-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are used as described in the specification of the element's role",
      "help": "ARIA attributes must be used as specified for the element's role",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-conditional-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"CivicTrust Municipal Portal Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "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": "<header class=\"site-header\" role=\"banner\">",
          "target": [
            ".site-header"
          ]
        }
      ]
    },
    {
      "id": "aria-hidden-body",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "wcag412",
        "EN-301-549",
        "EN-9.1.3.1",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-hidden=\"true\" is not present on the document body.",
      "help": "aria-hidden=\"true\" must not be present on the document body",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-hidden-body",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "No aria-hidden attribute is present on document body"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<body>",
          "target": [
            "body"
          ]
        }
      ]
    },
    {
      "id": "aria-hidden-focus",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
      "help": "ARIA hidden element must not be focusable or contain focusable elements",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "focusable-modal-open",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements while a modal is open"
            },
            {
              "id": "focusable-disabled",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            },
            {
              "id": "focusable-not-tabbable",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "No focusable elements contained within element"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<img src=\"https://placehold.co/96x96/003366/ffffff?text=CT&amp;font=inter\" alt=\"\" aria-hidden=\"true\">",
          "target": [
            ".logo > img[alt=\"\"]"
          ]
        }
      ]
    },
    {
      "id": "aria-prohibited-attr",
      "impact": "serious",
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure ARIA attributes are not prohibited for an element's role",
      "help": "Elements must only use permitted ARIA attributes",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "aria-prohibited-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "ARIA attribute is allowed"
            }
          ],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"CivicTrust Municipal Portal Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "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": "<header class=\"site-header\" role=\"banner\">",
          "target": [
            ".site-header"
          ]
        }
      ]
    },
    {
      "id": "aria-required-children",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure elements with an ARIA role that require child roles contain them",
      "help": "Certain ARIA roles must contain particular children",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-required-children",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Required ARIA children are present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"service-grid\" role=\"list\">",
          "target": [
            ".service-grid"
          ]
        }
      ]
    },
    {
      "id": "aria-required-parent",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag131",
        "EN-301-549",
        "EN-9.1.3.1"
      ],
      "description": "Ensure elements with an ARIA role that require parent roles are contained by them",
      "help": "Certain ARIA roles must be contained by particular parents",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-required-parent",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Required ARIA parent role present"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<article class=\"service-card\" role=\"listitem\">",
          "target": [
            ".service-card:nth-child(1)"
          ]
        }
      ]
    },
    {
      "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": "<header class=\"site-header\" role=\"banner\">",
          "target": [
            ".site-header"
          ]
        }
      ]
    },
    {
      "id": "aria-valid-attr-value",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure all ARIA attributes have valid values",
      "help": "ARIA attributes must conform to valid values",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "aria-valid-attr-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute values are valid"
            },
            {
              "id": "aria-errormessage",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique"
            },
            {
              "id": "aria-level",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "aria-level values are valid"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"CivicTrust Municipal Portal Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "id": "aria-valid-attr",
      "impact": null,
      "tags": [
        "cat.aria",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure attributes that begin with aria- are valid ARIA attributes",
      "help": "ARIA attributes must conform to valid names",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "aria-valid-attr",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "ARIA attribute name is valid"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"CivicTrust Municipal Portal Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "id": "avoid-inline-spacing",
      "impact": null,
      "tags": [
        "cat.structure",
        "wcag21aa",
        "wcag1412",
        "EN-301-549",
        "EN-9.1.4.12",
        "ACT"
      ],
      "description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
      "help": "Inline text spacing must be adjustable with custom stylesheets",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [
            {
              "id": "important-letter-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-word-spacing",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
            },
            {
              "id": "important-line-height",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "line-height in the style attribute is not set to !important, or meets the minimum"
            }
          ],
          "none": [],
          "impact": null,
          "html": "<a href=\"#permits\" class=\"btn btn-secondary\" style=\"border-color: #fff; color: #fff;\">Apply for Permits</a>",
          "target": [
            ".btn-secondary.btn[href$=\"#permits\"]"
          ]
        }
      ]
    },
    {
      "id": "button-name",
      "impact": null,
      "tags": [
        "cat.name-role-value",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure buttons have discernible text",
      "help": "Buttons must have discernible text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "button-has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has inner text that is visible to screen readers"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<button type=\"submit\" class=\"btn btn-primary\">Check Status</button>",
          "target": [
            "#tracker-form > button[type=\"submit\"]"
          ]
        }
      ]
    },
    {
      "id": "bypass",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag241",
        "section508",
        "section508.22.o",
        "TTv5",
        "TT9.a",
        "EN-301-549",
        "EN-9.2.4.1"
      ],
      "description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
      "help": "Page must have means to bypass repeated blocks",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "internal-link-present",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Valid skip link found"
            },
            {
              "id": "header-present",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<h1 id=\"hero-title\">Transparent Government. Accessible Services. Thriving Community.</h1>",
                  "target": [
                    "#hero-title"
                  ]
                },
                {
                  "html": "<h2 id=\"services-title\" class=\"section-title\">Featured Municipal Services</h2>",
                  "target": [
                    "#services-title"
                  ]
                },
                {
                  "html": "<h3>Building &amp; Safety Permits</h3>",
                  "target": [
                    ".service-card:nth-child(1) > h3"
                  ]
                },
                {
                  "html": "<h3>Utility Billing &amp; Payments</h3>",
                  "target": [
                    ".service-card:nth-child(2) > h3"
                  ]
                },
                {
                  "html": "<h3>Business Licensing</h3>",
                  "target": [
                    ".service-card:nth-child(3) > h3"
                  ]
                },
                {
                  "html": "<h3>Public Records Requests</h3>",
                  "target": [
                    ".service-card:nth-child(4) > h3"
                  ]
                },
                {
                  "html": "<h3>Code Enforcement Reporting</h3>",
                  "target": [
                    ".service-card:nth-child(5) > h3"
                  ]
                },
                {
                  "html": "<h3>Court &amp; Citation Payments</h3>",
                  "target": [
                    ".service-card:nth-child(6) > h3"
                  ]
                },
                {
                  "html": "<h2 id=\"safety-title\">Public Safety &amp; Emergency Preparedness</h2>",
                  "target": [
                    "#safety-title"
                  ]
                },
                {
                  "html": "<h3>Key Initiatives</h3>",
                  "target": [
                    ".reverse > .content-text > h3"
                  ]
                },
                {
                  "html": "<h2 id=\"planning-title\">Planning, Zoning &amp; Development Services</h2>",
                  "target": [
                    "#planning-title"
                  ]
                },
                {
                  "html": "<h3>Current Public Hearings</h3>",
                  "target": [
                    "#planning > .content-block > .content-text > h3"
                  ]
                },
                {
                  "html": "<h3>Permit Status Tracker</h3>",
                  "target": [
                    "#permit-tracker > h3"
                  ]
                },
                {
                  "html": "<h2 id=\"transparency-title\" class=\"section-title\">Transparency &amp; Open Government</h2>",
                  "target": [
                    "#transparency-title"
                  ]
                },
                {
                  "html": "<h2 id=\"community-title\" class=\"section-title\">Community Voices</h2>",
                  "target": [
                    "#community-title"
                  ]
                },
                {
                  "html": "<h2 id=\"faq-title\" class=\"section-title\">Frequently Asked Questions</h2>",
                  "target": [
                    "#faq-title"
                  ]
                },
                {
                  "html": "<h3 class=\"widget-title\">",
                  "target": [
                    ".sidebar-widget:nth-child(1) > .widget-title"
                  ]
                },
                {
                  "html": "<h4>Planning Commission</h4>",
                  "target": [
                    ".meeting-item:nth-child(1) > .meeting-info > h4"
                  ]
                },
                {
                  "html": "<h4>Board of Adjustment</h4>",
                  "target": [
                    ".meeting-item:nth-child(2) > .meeting-info > h4"
                  ]
                },
                {
                  "html": "<h4>City Council Regular</h4>",
                  "target": [
                    ".meeting-item:nth-child(3) > .meeting-info > h4"
                  ]
                },
                {
                  "html": "<h4>Parks &amp; Rec Advisory</h4>",
                  "target": [
                    ".meeting-item:nth-child(4) > .meeting-info > h4"
                  ]
                },
                {
                  "html": "<h3 class=\"widget-title\">",
                  "target": [
                    ".sidebar-widget:nth-child(2) > .widget-title"
                  ]
                },
                {
                  "html": "<h3 class=\"widget-title\">",
                  "target": [
                    ".alert-widget > .widget-title"
                  ]
                },
                {
                  "html": "<h3 class=\"widget-title\" style=\"color: #fff; border-color: rgba(255,255,255,0.2);\">",
                  "target": [
                    ".sidebar-widget:nth-child(4) > .widget-title"
                  ]
                },
                {
                  "html": "<h4 class=\"footer-heading\">Services</h4>",
                  "target": [
                    "nav[aria-label=\"Government Services\"] > .footer-heading"
                  ]
                },
                {
                  "html": "<h4 class=\"footer-heading\">Government</h4>",
                  "target": [
                    "nav[aria-label=\"Government Links\"] > .footer-heading"
                  ]
                },
                {
                  "html": "<h4 class=\"footer-heading\">Community</h4>",
                  "target": [
                    "nav[aria-label=\"Community Resources\"] > .footer-heading"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a heading"
            },
            {
              "id": "landmark",
              "data": null,
              "relatedNodes": [
                {
                  "html": "<main id=\"main-content\" role=\"main\">",
                  "target": [
                    "#main-content"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Page has a landmark region"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#003366",
                "bgColor": "#ffffff",
                "contrastRatio": 12.6,
                "fontSize": "13.8pt (18.4px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has sufficient color contrast of 12.6"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<span class=\"logo-title\">CivicTrust</span>",
          "target": [
            ".logo-title"
          ]
        }
      ]
    },
    {
      "id": "document-title",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag242",
        "TTv5",
        "TT12.a",
        "EN-301-549",
        "EN-9.2.4.2",
        "ACT"
      ],
      "description": "Ensure each HTML document contains a non-empty <title> element",
      "help": "Documents must have <title> element to aid in navigation",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "doc-has-title",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Document has a non-empty <title> element"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "duplicate-id-aria",
      "impact": null,
      "tags": [
        "cat.parsing",
        "wcag2a",
        "wcag412",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure every id attribute value used in ARIA and in labels is unique",
      "help": "IDs used in ARIA and labels must be unique",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "duplicate-id-aria",
              "data": "mobile-nav-panel",
              "relatedNodes": [],
              "impact": "critical",
              "message": "Document has no elements referenced with ARIA or labels that share the same id attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<div class=\"mobile-nav-panel\" id=\"mobile-nav-panel\">",
          "target": [
            "#mobile-nav-panel"
          ]
        }
      ]
    },
    {
      "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=\"permit-number\">Permit Number</label>",
                  "target": [
                    "label"
                  ]
                }
              ],
              "impact": "moderate",
              "message": "Form field does not have multiple label elements"
            }
          ],
          "impact": null,
          "html": "<input type=\"text\" id=\"permit-number\" name=\"permitNumber\" placeholder=\"e.g., PER-2024-01234\" required=\"\" pattern=\"PER-\\d{4}-\\d{5}\" aria-describedby=\"permit-help\">",
          "target": [
            "#permit-number"
          ]
        }
      ]
    },
    {
      "id": "html-has-lang",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure every HTML document has a lang attribute",
      "help": "<html> element must have a lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "The <html> element has a lang attribute"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "html-lang-valid",
      "impact": null,
      "tags": [
        "cat.language",
        "wcag2a",
        "wcag311",
        "TTv5",
        "TT11.a",
        "EN-301-549",
        "EN-9.3.1.1",
        "ACT"
      ],
      "description": "Ensure the lang attribute of the <html> element has a valid value",
      "help": "<html> element must have a valid value for the lang attribute",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
      "nodes": [
        {
          "any": [],
          "all": [],
          "none": [
            {
              "id": "valid-lang",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Value of lang attribute is included in the list of valid languages"
            }
          ],
          "impact": null,
          "html": "<html lang=\"en\">",
          "target": [
            "html"
          ]
        }
      ]
    },
    {
      "id": "image-alt",
      "impact": null,
      "tags": [
        "cat.text-alternatives",
        "wcag2a",
        "wcag111",
        "section508",
        "section508.22.a",
        "TTv5",
        "TT7.a",
        "TT7.b",
        "EN-301-549",
        "EN-9.1.1.1",
        "ACT"
      ],
      "description": "Ensure <img> elements have alternative text or a role of none or presentation",
      "help": "Images must have alternative text",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "has-alt",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has an alt attribute"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "alt-space-value",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has a valid alt attribute value"
            }
          ],
          "impact": null,
          "html": "<img src=\"https://picsum.photos/seed/apex-fire-dept/800/600\" alt=\"Apex Fire Department engine and crew in front of station\">",
          "target": [
            ".reverse > .content-image > img"
          ]
        }
      ]
    },
    {
      "id": "label",
      "impact": null,
      "tags": [
        "cat.forms",
        "wcag2a",
        "wcag412",
        "section508",
        "section508.22.n",
        "TTv5",
        "TT5.c",
        "EN-301-549",
        "EN-9.4.1.2",
        "ACT"
      ],
      "description": "Ensure every form element has a label",
      "help": "Form elements must have labels",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "explicit-label",
              "data": {
                "explicitLabel": "Permit Number"
              },
              "relatedNodes": [
                {
                  "html": "<label for=\"permit-number\">Permit Number</label>",
                  "target": [
                    "label"
                  ]
                }
              ],
              "impact": "critical",
              "message": "Element has an explicit <label>"
            },
            {
              "id": "non-empty-placeholder",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Element has a placeholder attribute"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "hidden-explicit-label",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "Form element has a visible explicit <label>"
            }
          ],
          "impact": null,
          "html": "<input type=\"text\" id=\"permit-number\" name=\"permitNumber\" placeholder=\"e.g., PER-2024-01234\" required=\"\" pattern=\"PER-\\d{4}-\\d{5}\" aria-describedby=\"permit-help\">",
          "target": [
            "#permit-number"
          ]
        }
      ]
    },
    {
      "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 class=\"alert-text\">Weather Advisory: Winter Storm Warning in effect until 6 PM Friday. <a href=\"#\" class=\"alert-link\">View Emergency Resources &amp; Shelter Locations</a></p>",
                  "target": [
                    ".alert-text"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Links can be distinguished from surrounding text by visual styling"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"alert-link\">View Emergency Resources &amp; Shelter Locations</a>",
          "target": [
            ".alert-link"
          ]
        }
      ]
    },
    {
      "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"
            },
            {
              "id": "aria-label",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "aria-label attribute exists and is not empty"
            }
          ],
          "all": [],
          "none": [
            {
              "id": "focusable-no-name",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element is not in tab order or has accessible text"
            }
          ],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"CivicTrust Municipal Portal Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    },
    {
      "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-nav > 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=\"#\" aria-current=\"page\">Home</a></li>",
          "target": [
            ".main-nav > ul > li:nth-child(1)"
          ]
        }
      ]
    },
    {
      "id": "meta-viewport",
      "impact": null,
      "tags": [
        "cat.sensory-and-visual-cues",
        "wcag2aa",
        "wcag144",
        "EN-301-549",
        "EN-9.1.4.4",
        "ACT"
      ],
      "description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
      "help": "Zooming and scaling must not be disabled",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "meta-viewport",
              "data": null,
              "relatedNodes": [],
              "impact": "critical",
              "message": "<meta> tag does not disable zooming on mobile devices"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
          "target": [
            "meta[name=\"viewport\"]"
          ]
        }
      ]
    },
    {
      "id": "nested-interactive",
      "impact": null,
      "tags": [
        "cat.keyboard",
        "wcag2a",
        "wcag412",
        "TTv5",
        "TT6.a",
        "EN-301-549",
        "EN-9.4.1.2"
      ],
      "description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
      "help": "Interactive controls must not be nested",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "no-focusable-content",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element does not have focusable descendants"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<img src=\"https://picsum.photos/seed/apex-fire-dept/800/600\" alt=\"Apex Fire Department engine and crew in front of station\">",
          "target": [
            ".reverse > .content-image > img"
          ]
        }
      ]
    },
    {
      "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": [
        {
          "any": [
            {
              "id": "focusable-content",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element contains focusable elements"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<aside class=\"sidebar\" aria-label=\"Quick Links &amp; Updates\">",
          "target": [
            "aside"
          ]
        }
      ]
    },
    {
      "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": [
        {
          "any": [
            {
              "id": "has-visible-text",
              "data": null,
              "relatedNodes": [],
              "impact": "serious",
              "message": "Element has text that is visible to screen readers"
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<summary class=\"faq-question\" aria-expanded=\"false\">",
          "target": [
            "details:nth-child(1) > summary"
          ]
        }
      ]
    },
    {
      "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": 253.1,
                "height": 48
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Control has sufficient size (253.1px by 48px, should be at least 24px by 24px)"
            },
            {
              "id": "target-offset",
              "data": {
                "closestOffset": 24,
                "minOffset": 24
              },
              "relatedNodes": [],
              "impact": "serious",
              "message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
            }
          ],
          "all": [],
          "none": [],
          "impact": null,
          "html": "<a href=\"#\" class=\"logo\" aria-label=\"CivicTrust Municipal Portal Home\">",
          "target": [
            ".logo"
          ]
        }
      ]
    }
  ],
  "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=\"hero-stats\" aria-label=\"City Statistics\">",
          "target": [
            ".hero-stats"
          ],
          "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": {
                "fontSize": "42.0pt (56px)",
                "fontWeight": "bold",
                "messageKey": "pseudoContent",
                "expectedContrastRatio": "3:1"
              },
              "relatedNodes": [
                {
                  "html": "<section class=\"hero\" aria-labelledby=\"hero-title\">",
                  "target": [
                    ".hero"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element's background color could not be determined due to a pseudo element"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<h1 id=\"hero-title\">Transparent Government. Accessible Services. Thriving Community.</h1>",
          "target": [
            "#hero-title"
          ],
          "failureSummary": "Fix any of the following:\n  Element's background color could not be determined due to a pseudo element"
        }
      ]
    }
  ],
  "violations": [
    {
      "id": "color-contrast",
      "impact": "serious",
      "tags": [
        "cat.color",
        "wcag2aa",
        "wcag143",
        "TTv5",
        "TT13.c",
        "EN-301-549",
        "EN-9.1.4.3",
        "ACT"
      ],
      "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
      "help": "Elements must meet minimum color contrast ratio thresholds",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
      "nodes": [
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fefefe",
                "bgColor": "#f4f6f8",
                "contrastRatio": 1.07,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.07 (foreground color: #fefefe, background color: #f4f6f8, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"month\">Oct</span>",
          "target": [
            ".meeting-item:nth-child(1) > .meeting-date > .month"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.07 (foreground color: #fefefe, background color: #f4f6f8, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fefefe",
                "bgColor": "#f4f6f8",
                "contrastRatio": 1.07,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.07 (foreground color: #fefefe, background color: #f4f6f8, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"month\">Oct</span>",
          "target": [
            ".meeting-item:nth-child(2) > .meeting-date > .month"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.07 (foreground color: #fefefe, background color: #f4f6f8, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fefefe",
                "bgColor": "#f4f6f8",
                "contrastRatio": 1.07,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.07 (foreground color: #fefefe, background color: #f4f6f8, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"month\">Oct</span>",
          "target": [
            ".meeting-item:nth-child(3) > .meeting-date > .month"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.07 (foreground color: #fefefe, background color: #f4f6f8, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#fefefe",
                "bgColor": "#f4f6f8",
                "contrastRatio": 1.07,
                "fontSize": "8.4pt (11.2px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<body>",
                  "target": [
                    "body"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.07 (foreground color: #fefefe, background color: #f4f6f8, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"month\">Oct</span>",
          "target": [
            ".meeting-item:nth-child(4) > .meeting-date > .month"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.07 (foreground color: #fefefe, background color: #f4f6f8, font size: 8.4pt (11.2px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#28a745",
                "bgColor": "#ffffff",
                "contrastRatio": 3.13,
                "fontSize": "12.0pt (16px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"sidebar-widget\">",
                  "target": [
                    ".sidebar-widget:nth-child(2)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 3.13 (foreground color: #28a745, background color: #ffffff, font size: 12.0pt (16px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<span class=\"budget-value\" style=\"color: var(--color-success);\">$18.2M</span>",
          "target": [
            ".budget-item:nth-child(6) > .budget-value"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 3.13 (foreground color: #28a745, background color: #ffffff, font size: 12.0pt (16px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#4a4a68",
                "bgColor": "#003366",
                "contrastRatio": 1.48,
                "fontSize": "12.0pt (16px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"sidebar-widget\" style=\"background: var(--color-primary); border-color: var(--color-primary); color: #fff;\">",
                  "target": [
                    ".sidebar-widget:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.48 (foreground color: #4a4a68, background color: #003366, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p><strong>100 Civic Center Drive</strong><br>Apex, State 27502</p>",
          "target": [
            "address > p:nth-child(1)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.48 (foreground color: #4a4a68, background color: #003366, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#4a4a68",
                "bgColor": "#003366",
                "contrastRatio": 1.48,
                "fontSize": "12.0pt (16px)",
                "fontWeight": "bold",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"sidebar-widget\" style=\"background: var(--color-primary); border-color: var(--color-primary); color: #fff;\">",
                  "target": [
                    ".sidebar-widget:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.48 (foreground color: #4a4a68, background color: #003366, font size: 12.0pt (16px), font weight: bold). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<strong>100 Civic Center Drive</strong>",
          "target": [
            "address > p:nth-child(1) > strong"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.48 (foreground color: #4a4a68, background color: #003366, font size: 12.0pt (16px), font weight: bold). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#4a4a68",
                "bgColor": "#003366",
                "contrastRatio": 1.48,
                "fontSize": "12.0pt (16px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"sidebar-widget\" style=\"background: var(--color-primary); border-color: var(--color-primary); color: #fff;\">",
                  "target": [
                    ".sidebar-widget:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.48 (foreground color: #4a4a68, background color: #003366, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>\ud83d\udcde <a href=\"tel:+19195550100\" style=\"color: #fff;\">(919) 555-0100</a><br>\u2709\ufe0f <a href=\"mailto:info@apexcivictrust.gov\" style=\"color: #fff;\">info@apexcivictrust.gov</a></p>",
          "target": [
            "address > p:nth-child(2)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.48 (foreground color: #4a4a68, background color: #003366, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#4a4a68",
                "bgColor": "#003366",
                "contrastRatio": 1.48,
                "fontSize": "12.0pt (16px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<div class=\"sidebar-widget\" style=\"background: var(--color-primary); border-color: var(--color-primary); color: #fff;\">",
                  "target": [
                    ".sidebar-widget:nth-child(4)"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.48 (foreground color: #4a4a68, background color: #003366, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>Hours: Mon\u2013Fri, 8:00 AM \u2013 5:00 PM<br>Closed Federal Holidays</p>",
          "target": [
            "address > p:nth-child(3)"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.48 (foreground color: #4a4a68, background color: #003366, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
        },
        {
          "any": [
            {
              "id": "color-contrast",
              "data": {
                "fgColor": "#4a4a68",
                "bgColor": "#002244",
                "contrastRatio": 1.88,
                "fontSize": "12.0pt (16px)",
                "fontWeight": "normal",
                "messageKey": null,
                "expectedContrastRatio": "4.5:1",
                "shadowColor": null
              },
              "relatedNodes": [
                {
                  "html": "<footer class=\"site-footer\" role=\"contentinfo\" id=\"contact\">",
                  "target": [
                    "#contact"
                  ]
                }
              ],
              "impact": "serious",
              "message": "Element has insufficient color contrast of 1.88 (foreground color: #4a4a68, background color: #002244, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
            }
          ],
          "all": [],
          "none": [],
          "impact": "serious",
          "html": "<p>\u00a9 2025 City of Apex. All Rights Reserved.</p>",
          "target": [
            ".footer-bottom > p"
          ],
          "failureSummary": "Fix any of the following:\n  Element has insufficient color contrast of 1.88 (foreground color: #4a4a68, background color: #002244, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
        }
      ]
    }
  ],
  "coverage": {
    "contract": "main-document-vertical-scroll",
    "complete": true,
    "positions": [
      {
        "y": 0,
        "height": 6593
      },
      {
        "y": 576,
        "height": 6593
      },
      {
        "y": 1152,
        "height": 6593
      },
      {
        "y": 1728,
        "height": 6593
      },
      {
        "y": 2304,
        "height": 6593
      },
      {
        "y": 2880,
        "height": 6593
      },
      {
        "y": 3456,
        "height": 6593
      },
      {
        "y": 4032,
        "height": 6593
      },
      {
        "y": 4608,
        "height": 6593
      },
      {
        "y": 5184,
        "height": 6593
      },
      {
        "y": 5760,
        "height": 6593
      },
      {
        "y": 5873,
        "height": 6593
      }
    ],
    "scans": 13,
    "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: "Events", "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: "Public Safety", "Planning & Zoning", "Government Services".
    -   **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "fiscal year", "compliance", "public hearing".
    -   **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", "Find Services", "Check Status".
-   **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: "permit tracker".
-   **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "meeting schedules", "budget reports", "emergency alerts".
-   **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.