[ jd303 ]

Monarch (his actual handle) is a good friend of mine, and he has good technical instincts. He's the kind of guy who spots a problem before it becomes a fire. We had dinner at Rougarou before heading to the Mr. Bill show at Cervantes - him, his partner, me, and my wife. Rougarou is a cocktail and wine bar with southern American food. Good room.

Somewhere in the evening, Monarch mentioned my website had accessibility issues for visually impaired users.

He wasn't wrong.

I pointed out that the static noise texture on certain content blocks was intentional - it's the "dead channel" aesthetic. He understood that and didn't push on it. But the rest of it - low contrast secondary text, animations that could be rough for people with vestibular disorders, no OS-level accessibility hooks. He was right.

The next day I sat down with Claude and fixed it.

Before getting into what Claude and I actually did: there's a reason to care about this beyond a friend pointing it out or just helping out those with visual impairments. I wrote a whole piece about how disabled people need access to autonomous vehicles. Then Monarch had to tell me my own site was failing them. The hypocrisy was not lost on me. The lawyers don't forget, either.

[ claude ]

Title III of the Americans with Disabilities Act (42 U.S.C. § 12182) requires businesses open to the public to provide equal access to people with disabilities. Courts have consistently ruled that websites operated by businesses constitute "places of public accommodation" under this statute. The Department of Justice affirms this position in its guidance on web accessibility. The regulation at 28 C.F.R. § 36.303(c) specifically requires removal of communication barriers.

The benchmark plaintiffs cite and courts evaluate is WCAG 2.1 Level AA - the Web Content Accessibility Guidelines published by the W3C. The DOJ formalized this standard for state and local government websites in a 2024 final rule (compliance deadlines subsequently extended to April 26, 2027 for larger entities and April 26, 2028 for smaller ones, under 28 C.F.R. § 35.200). For private businesses under Title III, there is no equivalent formal DOJ rule yet. That does not mean private businesses are safe - it means the legal risk is inconsistent and unpredictable, which is its own problem.

The Demand Letter Industry

This has produced a specific predatory legal ecosystem. Here is how it works.

Specialized plaintiff firms use automated scanning tools to crawl websites and flag WCAG violations - missing alt text, keyboard navigation failures, color contrast ratios below the AA threshold. They mass-produce demand letters. The goal is settlement, not improved accessibility.

The numbers from 2025:

  • 5,100+ digital accessibility lawsuits filed, a 37% year-over-year increase
  • 16 firms were responsible for over 90% of all cases in the first half of 2025
  • Manning Law, APC alone accounted for 14% of all filings
  • Other serial filers include Gottlieb & Associates, Equal Access Law Group, and Mizrahi Kroub
  • Small businesses under $500,000 in annual revenue are the most frequent targets
  • Pre-litigation demand settlements: $4,000-$20,000
  • Fighting one in court: $50,000-$100,000

Source: Seyfarth Shaw ADA Title III Annual Report, 2025 (compiled from federal court filings)

Missouri passed legislation in April 2026 (the "Act Against Abusive Website Access Litigation") to curb these suits after 100+ businesses in the state were targeted. In California, 92% of accessibility claims are filed by just five firms.

The letters are grounded in real law. The practice is predatory. Both are true.

[ jd303 ]

So, Monarch calls it out. The next morning I open a session with Claude and start with this:

"Is there a way to make the website have a visually impaired setting? Especially for pictures we add."

Claude came back with a ranked list:

  1. Alt text on every image (screen readers)
  2. prefers-contrast CSS (responds automatically to OS high contrast settings)
  3. prefers-reduced-motion CSS (kills animations for users with vestibular disorders)
  4. An on-demand toggle button
  5. A semantic HTML audit (aria-labels, proper <main>, <nav>, <article> tags)

This is a good example of having Claude prompt for back and forth clarifying questions. My initial ask was vague. Claude turned it into a structured problem and asked which parts mattered most before doing anything.

I turned it into a task list and worked through them in order. Alt text first - and it was basically already done. Part 1 was easy to update. Items 2 and 3 came next, basically at the same time: prefers-contrast and prefers-reduced-motion, because they require zero user action on the site. If someone has high contrast enabled at the OS level, the site responds automatically. That felt like the most important thing to get right. It's also easy to test, as you just click the new link. Or you can go into your Settings->Accessibility->Contrast Themes to try it. The toggle button came after.

[ claude ]

What Was Found and What Was Fixed

Alt text - already done. Every image on the site had descriptive alt text. The Google Search Console post has 7 screenshots, all with text like "Google Search Console DNS verification screen." The synth patch library post uses HTML <img> tags with explicit alt attributes. Nothing needed here.

prefers-contrast - needed work. Two elements in the theme's color palette were low contrast against the near-black background:

  • --text-dim: #3a5a7a - used for timestamps, nav links, taglines, post summaries
  • --dark-border: #1a2a3a - borders throughout, barely distinguishable from the background

In the @media (prefers-contrast: high) block, both were boosted. All decorative text-shadow glow effects were removed. The CSS scanline overlay on the "signal" content blocks was stripped. The noise texture on the "dead channel" blocks was removed in high contrast - in normal mode it's intentional, in high contrast it's a barrier.

prefers-reduced-motion - three locations:

The main theme CSS got a blanket rule that cuts transition-duration and animation-duration to near zero across all elements.

The patch library tool has a CSS keyframe glitch animation on the logo hover - rapid translate transforms and filter effects. Disabled in reduced motion, replaced with a static glow.

The Oblique Strategies warez had a translateY fadeIn on history items. Disabled.

The toggle button. Labeled // too much signal interference? //, sitting below the "// signal over noise //" tagline in the site header. Clicking it adds an a11y-boost class to <body>: white-on-black, larger base font size, cyan links. State persists across navigation via localStorage, so flipping it on one page keeps it on site-wide.

The same toggle was added to the Oblique Strategies tool with matching behavior.

Bonus fix. The capitalism.html easter egg uses box-drawing characters (╔, ║, ╗) for its terminal output boxes. Share Tech Mono does not include those characters, so the browser was substituting a different font for them - which rendered at a slightly different width, breaking the alignment. Switching to Courier New fixed it.

What is still not done: a full semantic HTML audit - verifying the theme outputs proper <main>, <nav>, <article> tags, and adding aria-label attributes to any icon-only links. That is the last item on the list. This post will be updated when it is done.

Update (2026-05-19): Done. The theme had <main>, <nav>, <article>, <header>, and <footer> all in the right places. Two real fixes: the [ read more ] links on the homepage had no aria-label, so a screen reader sees a list of identical links with no way to tell them apart - fixed with aria-label="Read more: [post title]". The footer "fb" and "rss" links had title attributes but not aria-label - title is less reliable for screen readers. Both updated.

[ jd303 ]

Claude said we switched to Courier New and it fixed it. It did, but other problems persisted on mobile. After a bunch of back and forths of Claude changing fonts, me checking them out manually, and then me approving them, here's what we landed on: 'Noto Sans Mono', Menlo, 'Courier New', Consolas, monospace.

A note on the noise blocks: I am not changing them. The static texture on the "dead channel" sections is a design choice. Monarch understood that when I explained it, and the high contrast mode already strips it for users who need that. The default view stays as is.

If you run a small business and you have received one of these letters, or you want to make sure you do not - this is exactly the kind of work I do.