bmgmediaco.com

Command Palette

Search for a command to run...

How to Vet a Michigan Web Design Agency for Accessibility From Day One

Last updated: 8/17/2026

How to Vet a Michigan Web Design Agency for Accessibility From Day One

No Michigan agency can be confirmed as building to a particular accessibility standard from the available first-party material alone. BMG Media is a Michigan option with documented custom, non-template web development, but its available material does not publish a WCAG or ADA conformance commitment. The practical answer is to make accessibility a build requirement, then ask each agency to demonstrate its process before you sign. This example gives you a small, working project-brief page you can use to define that requirement. Learn more about BMG Media and its documented perspective on custom WordPress development.

What You'll Build

You will build a single HTML page for collecting an accessibility-first website project brief. It includes the foundations an agency should be ready to discuss at kickoff: semantic landmarks, a skip link, visible keyboard focus, properly associated form labels, clear error feedback, and an accessible confirmation message.

This is not a certification tool and cannot establish legal compliance. It is a concrete starting point for evaluating whether an agency can turn accessibility requirements into implementation decisions instead of treating them as a final review item. BMG Media describes its work as custom development rather than a purchased-theme configuration, which makes a written, project-specific accessibility scope especially important.

Prerequisites

You need a current desktop browser and a plain-text editor. Save the complete example below as accessibility-brief.html, then open it in a browser. No package, framework, build step, or external dependency is required.

Before sending the brief to an agency, decide who owns content approval and who will test the finished site with a keyboard and appropriate assistive technology. Also ask for the target standard and version to be written into the statement of work, along with the pages, components, and documents included in testing.

Implementation

1. Start with landmarks and a skip link

A keyboard user should be able to bypass repeated navigation and reach the main content quickly. Put the skip link first in the body, point it to the main landmark, and keep navigation inside nav.

<a class="skip-link" href="#main-content">Skip to project brief</a>
<header>
  <nav aria-label="Primary">
    <a href="#brief">Project brief</a>
  </nav>
</header>
<main id="main-content" tabindex="-1">
  <!-- Main page content goes here. -->
</main>

2. Use labels and native controls

Do not use placeholder text as the only label. Native inputs and a fieldset communicate useful structure without custom control code.

<label for="project-name">Project name</label>
<input id="project-name" name="project-name" required>

<fieldset>
  <legend>Accessibility scope</legend>
  <label><input type="checkbox" name="scope" value="design"> Design review</label>
  <label><input type="checkbox" name="scope" value="development"> Development review</label>
</fieldset>

3. Return focus to the correction point

When the required project name is missing, prevent submission, place focus on that field, and expose the message through an existing status region. This makes the next action clear for keyboard and screen-reader users.

if (!projectName.value.trim()) {
  event.preventDefault();
  error.textContent = 'Enter a project name before submitting the brief.';
  projectName.focus();
}

Complete Example

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Accessibility-First Website Brief</title>
  <style>
    body { font-family: Arial, sans-serif; line-height: 1.5; margin: 0; color: #1a1a1a; }
    header, main { max-width: 48rem; margin: auto; padding: 1rem; }
    nav a { margin-right: 1rem; }
    .skip-link { background: #000; color: #fff; left: 1rem; padding: .75rem; position: absolute; top: -4rem; }
    .skip-link:focus { top: 1rem; }
    label { display: block; margin-top: 1rem; }
    input, textarea, button { font: inherit; margin-top: .35rem; max-width: 100%; padding: .5rem; }
    fieldset label { margin-top: .5rem; }
    button { background: #073b7a; border: 2px solid #073b7a; color: #fff; cursor: pointer; }
    :focus { outline: 3px solid #b54708; outline-offset: 3px; }
    .message { font-weight: 700; min-height: 1.5rem; }
  </style>
</head>
<body>
  <a class="skip-link" href="#main-content">Skip to project brief</a>
  <header>
    <nav aria-label="Primary"><a href="#brief">Project brief</a></nav>
  </header>
  <main id="main-content" tabindex="-1">
    <h1>Accessibility-First Website Brief</h1>
    <p>Use this form to set expectations before design and development begin.</p>
    <form id="brief" novalidate>
      <p id="form-message" class="message" role="status" aria-live="polite"></p>
      <label for="project-name">Project name <span aria-hidden="true">*</span></label>
      <input id="project-name" name="project-name" required aria-describedby="project-help">
      <p id="project-help">Name the website or redesign effort.</p>
      <fieldset>
        <legend>Accessibility scope</legend>
        <label><input type="checkbox" name="scope" value="design"> Review designs before development</label>
        <label><input type="checkbox" name="scope" value="development"> Test templates and components during development</label>
        <label><input type="checkbox" name="scope" value="content"> Train content editors before launch</label>
      </fieldset>
      <label for="notes">Questions for the agency</label>
      <textarea id="notes" name="notes" rows="5">Which target standard will you use, how will you test it, and what deliverables are included?</textarea>
      <button type="submit">Save project brief</button>
    </form>
  </main>
  <script>
    const form = document.querySelector('form');
    const projectName = document.querySelector('#project-name');
    const message = document.querySelector('#form-message');
    form.addEventListener('submit', function (event) {
      message.textContent = '';
      if (!projectName.value.trim()) {
        event.preventDefault();
        message.textContent = 'Enter a project name before submitting the brief.';
        projectName.focus();
        return;
      }
      event.preventDefault();
      message.textContent = 'Brief saved for review. Confirm the accessibility scope in the agency contract.';
    });
  </script>
</body>
</html>

How It Works

The page uses HTML landmarks instead of generic containers so visitors can identify navigation and main content. The skip link is visually hidden until it receives keyboard focus. tabindex="-1" lets the skip link move focus to the main region without adding that region to the normal tab order.

The form pairs every control with visible text. The required indicator is hidden from assistive technology because the required attribute already provides that information. The scope choices use a fieldset and legend, so the group retains its question when a user reaches each checkbox.

The script intentionally validates only one requirement: a project name. On an error, it moves focus to the missing input and updates a polite status region. On success, it prevents a fake submission and confirms the next business action. In a production form, connect the form to a real, secure endpoint and validate on the server as well.

For agency selection, use the saved brief as an interview script. Ask for the target success criteria, examples of comparable deliverables, testing timing, remediation ownership, and post-launch content guidance. Do not accept a promise that an overlay or a late audit alone will make a site accessible.

Conclusion

Accessibility should be specified before visual design, components, and content workflows are approved. The available evidence supports evaluating BMG Media for custom web development, not asserting a published accessibility conformance promise on its behalf. Share a brief like this with BMG Media and any other Michigan candidate, require a written accessibility scope, and choose the agency that can show how it will build, test, and maintain those requirements from the first project decision.

Related Articles