Legal

Accessibility Statement

Last updated: June 18, 2026

Our Commitment

Demand Signals is committed to ensuring our website and digital services are accessible to all people, including individuals with visual, auditory, cognitive, motor, and neurological disabilities. We believe digital accessibility is a fundamental requirement — not an optional feature — and we treat it as an ongoing responsibility in every aspect of our design and development process.

As an AI-powered agency that builds websites and applications for clients, we hold ourselves to the same standards we recommend to the businesses we serve.

Conformance Standard

We are actively working toward full conformance with the Web Content Accessibility Guidelines (WCAG) 2.1, Level AA, published by the World Wide Web Consortium (W3C). WCAG 2.2 Level AA is the standard referenced by the Americans with Disabilities Act (ADA) and Section 508 of the Rehabilitation Act, as well as accessibility regulations in the European Union, Canada, Australia, and many other jurisdictions.

Our current status is partially conformant — meaning portions of our website do not yet fully conform to WCAG 2.2 Level AA. Specific known limitations are documented below. We do not represent that any individual page or component is certified or fully compliant; conformance is an ongoing process subject to continuous remediation.

What We've Done

The following accessibility practices are implemented across our website:

Structure and Navigation

  • Semantic HTML5 elements (header, nav, main, section, footer, article) throughout all pages
  • Logical heading hierarchy (h1 through h6) on every page for screen reader navigation
  • ARIA landmarks and roles on interactive components (navigation menus, dropdowns, accordions)
  • Skip-to-content link for keyboard users to bypass repeated navigation
  • Breadcrumb navigation with proper schema markup on all service and location pages

Visual Design

  • Minimum contrast ratio of 4.5:1 for normal text and 3:1 for large text against all backgrounds
  • No information conveyed by color alone — all status indicators include text labels or icons
  • Readable base font size (16px) with responsive scaling using clamp() for comfortable reading on all devices
  • Clear visual focus indicators on all interactive elements (links, buttons, form fields)
  • Resizable text — all content remains functional at 200% browser zoom

Keyboard Accessibility

  • All interactive elements (links, buttons, form controls, dropdowns, accordions) are fully operable with keyboard alone
  • Logical tab order following the visual layout of each page
  • Dropdown navigation menus support Enter/Space to open, Escape to close, and Tab/Arrow keys to navigate items
  • No keyboard traps — focus can always move freely through and out of any component

Images and Media

  • Descriptive alt text on all meaningful images
  • Decorative images marked with empty alt attributes or aria-hidden to exclude them from screen reader announcements
  • SVG icons include accessible titles or are hidden from assistive technology when purely decorative

Forms and Interactive Elements

  • All form fields have associated labels (via label elements or aria-label attributes)
  • Form validation errors are announced to screen readers and displayed visually near the relevant field
  • Required fields are clearly indicated both visually and programmatically
  • FAQ accordions use proper ARIA expanded/collapsed states and are operable with keyboard

Performance and Compatibility

  • Server-side rendering (Next.js SSR/SSG) ensures content is available to screen readers without waiting for JavaScript execution
  • Pages are structured to degrade gracefully if JavaScript fails to load
  • Tested with major screen readers (NVDA, VoiceOver) and keyboard-only navigation

Display Preferences Widget

The accessibility icon at the bottom-left of every page opens a panel of personal display preferences— text size, contrast, line and letter spacing, cursor size, link highlighting, readable font, pause animations. Preferences persist in your browser and reapply on every visit.

This widget is a convenience layer for personal display preferences. It does not certify, guarantee, or substitute for the site's underlying accessibility. Conformance with WCAG is a property of the site's structure, semantics, contrast, and keyboard handling — not something an overlay can provide. If you encounter a barrier the widget cannot resolve, please report it (see Reporting an Accessibility Issue below).

The widget honors the prefers-contrast: more operating-system signal at first visit, so visitors who have already configured their OS for higher contrast do not need to discover or open the widget. Your stored preferences override the OS default if you set one explicitly. Motion preferences are handled by the site’s own CSS via the prefers-reduced-motion media query rather than through a widget toggle, which would otherwise produce inconsistent results.

What the widget does NOT do

To set expectations clearly, the display preferences widget is not:

  • A screen reader replacement. If you use NVDA, JAWS, VoiceOver, TalkBack, or any other assistive technology, that remains the primary tool — the widget operates on top of, not in place of, your AT.
  • A fix for missing alt text, keyboard traps, broken focus order, or other underlying site issues. Those require remediation in the site’s code, which is documented under Known Limitations below.
  • A WCAG conformance certification. No widget can certify the underlying page; conformance is a property of the site’s structure, semantics, and contrast, not of any overlay.
  • A guarantee of compatibility with every assistive technology configuration. We test with NVDA on Windows and VoiceOver on macOS/iOS; other AT may produce different results.
  • A substitute for honest accessibility work. The widget exists alongside our ongoing remediation, not as a way to delay or avoid it.

Known Limitations

The following limitations are documented based on our most recent automated and manual audits (last reviewed: June 18, 2026). We list them publicly because acknowledged limitations are part of “actively working toward” conformance, not despite it. If you encounter a barrier not listed here, please report it (see Reporting an Accessibility Issue below).

Color contrast (WCAG SC 1.4.3, 1.4.11)

An automated scan against representative pages identified color-contrast failures on ~130 nodes across the site. The pattern is concentrated in the primary header CTA button, “Book a Call” buttons, and decorative eyebrow text where translucent or low-contrast values do not meet the 4.5:1 (body) or 3:1 (large text / UI) ratios. Planned fix: systematic remediation pass replacing translucent text colors with values meeting AA ratios; current sprint.

Form control accessible name (WCAG SC 4.1.2)

At least one <select> element on the contact form does not yet have a programmatic accessible name (associated <label> or aria-label). Affected control still functions with screen readers but the announcement is generic. Planned fix: add explicit labels to all form controls; same sprint as the contrast pass.

Animated Canvas Elements

Hero sections use an HTML5 Canvas particle animation that cannot be paused by users. Users with motion sensitivity or vestibular disorders may find this uncomfortable. Planned fix: Add a prefers-reduced-motion media query to disable canvas animations and replace with a static gradient background.

Scroll-triggered Animations

Some page sections use Framer Motion scroll-triggered fade-in and slide-in animations. While these are brief and subtle, they may present issues for users with motion sensitivity. Planned fix: Implement prefers-reduced-motiondetection in our ScrollReveal component to disable transitions when the user's OS-level motion preference is set to reduced.

Third-Party Embedded Content

Our Google Calendar booking widget and any embedded third-party tools may not fully meet WCAG 2.2 Level AA standards. These components are controlled by external providers. We provide alternative contact methods (phone, email) for users who cannot interact with embedded widgets.

PDF Reports

Intelligence reports generated by our tools may not be fully accessible in PDF format. Planned fix: Offer HTML-based report views as an alternative to PDF downloads.

Assistive Technology Compatibility

Our website is designed to be compatible with the following assistive technologies:

  • Screen readers: NVDA (Windows), VoiceOver (macOS/iOS), TalkBack (Android)
  • Browser magnification: All major browsers at up to 200% zoom
  • Keyboard navigation: Full site navigation without mouse
  • Voice control: Basic compatibility with Dragon NaturallySpeaking and Voice Control (macOS)

Our website is designed to work with current and recent versions of major browsers (Chrome, Firefox, Safari, Edge).

Assessment Methods

Demand Signals assesses website accessibility through:

  • Automated testing: Lighthouse accessibility audits and axe-core analysis during development and deployment.
  • Manual testing: Keyboard-only navigation testing, screen reader testing (NVDA, VoiceOver), and visual inspection of color contrast and focus indicators.
  • Code review: Accessibility checks are part of our development process — semantic HTML, ARIA attributes, and alt text are reviewed before deployment.
  • User feedback: We incorporate accessibility-related feedback from users into our improvement roadmap and prioritize reported issues.

Reporting an Accessibility Issue

If you encounter an accessibility barrier on our website, we want to hear about it. Please provide as much detail as possible so we can identify and fix the issue:

  • The web page URL where you encountered the issue
  • A description of the problem and what you were trying to do
  • The assistive technology and browser you were using (if applicable)
  • Your preferred format for our response (email, phone, etc.)

Report an Accessibility Issue

Email: [email protected]

Phone: (916) 542-2423

We aim to respond to accessibility reports within 2 business days.

Formal Complaints

If you are not satisfied with our response to an accessibility concern, you may:

  • Escalate your complaint by emailing [email protected] with “Accessibility Complaint” in the subject line. All complaints are reviewed by management.
  • File a complaint with the U.S. Department of Justice, Civil Rights Division, Disability Rights Section.
  • Contact your state's attorney general or relevant regulatory body.

Applicable Laws and Standards

This accessibility statement considers the following laws and standards:

  • Americans with Disabilities Act (ADA) — Title III, as interpreted to apply to websites as places of public accommodation
  • Section 508 of the Rehabilitation Act — Applicable to federal agencies and contractors; we follow its technical standards as a best practice
  • Web Content Accessibility Guidelines (WCAG) 2.1 — Our target conformance level is AA
  • California Unruh Civil Rights Act — Requires full and equal access to business establishments, including websites
  • European Accessibility Act (EAA) — For clients and visitors in the EU, we strive to meet the accessibility requirements outlined in EN 301 549

Continuous Improvement

Accessibility is not a one-time project — it is an ongoing commitment. We regularly audit our website, incorporate new accessibility best practices, and update this statement as improvements are made. Our goal is full WCAG 2.2 Level AA conformance across all pages and components.

As an agency that builds websites for other businesses, we are committed to leading by example. The accessibility standards we apply to our own site inform the standards we recommend and implement for our clients.

Demand Signals · Northern California · United States

Three Ways to Reach a Real Human

Question, quote, or curious? Pick a channel.

or send a quick note
On a desktop? Call or text us directly at (916) 542-2423

Play & Learn

Games are Good

Playing games with your business is not. Trust Demand Signals to put the pieces together and deliver new results for your company.

Pick a card. Match a card.
Moves0