← Home

Accessibility

How this site is built

I design for people with disabilities, so this site should pass the same checks I'd ask of any product I work on. Here's what I did, what I tested, and what I haven't done yet.

Aiming for WCAG 2.2 AA. Last checked 23 October 2026.

issues from an automated check (axe) on every page, in light and dark
0
contrast for every text colour, in both themes
4.5:1+
wide with no sideways scrolling, the same as zooming to 400%
320px
shows a focus ring when you use the keyboard
Every stop

Keyboard

The first thing Tab reaches is a "Skip to content" link. After that, focus moves in the same order you read the page, and every link and button shows a terracotta focus ring.

The project cards are one link each, on the title, so you don't tab through every number on a card. The AI assistant closes with Esc and puts focus back where you were. On phones it covers the screen, so Tab stays inside it until you close it.

Screen readers

Every page has one main heading, and headings go in order. The page is split into landmarks (navigation, main content, footer), so you can jump between them.

Case study screenshots have alt text that says what's on the screen, not just "screenshot". Decorative images, like the dots behind the homepage title, are hidden from screen readers. Links say where they go, and say so when they open a new tab. The assistant's answers are read out when they finish.

What I haven't done yet: a full pass with VoiceOver and NVDA on this version of the site. That's next, and I'll update this page when it's done.

Motion

If your device is set to reduce motion, the site does too. Scrolling goes back to your browser's normal scrolling, the dots behind the title stay still, the ring that follows the mouse doesn't appear, and nothing fades in. Everything is on the page from the start.

The ring only shows with a mouse or trackpad, and it sits next to your normal cursor. It never replaces it.

Zoom and small screens

Every page works at 320px wide without scrolling sideways, which is what a page looks like at 400% zoom on a laptop. Text sizes are in rem, so your browser's font size setting changes them.

The AI assistant

You can use it with just a keyboard. It only answers from my case studies and resume, and when it doesn't know something it says so and gives my email instead of guessing. If it can't answer at all, the error says what happened and how to reach me.

“See this page as…”

The eye button in the top bar shows the page roughly the way someone with low vision or a type of colour blindness sees it. It uses published colour vision models, applied to the page content. It's a quick way to feel why contrast and labels matter. It's not a replacement for testing with people who live with these conditions.

Colour contrast

WCAG AA asks for at least 4.5:1 for normal text. These ratios are worked out from the site's actual colours.

Contrast ratios for each text colour, in light and dark themes
Used forLight themeDark theme
Headings17.35:116.71:1
Body text11.00:111.90:1
Captions and labels5.46:17.00:1
Links5.16:17.95:1
Text in cards11.67:110.97:1
Button text on terracotta5.16:17.95:1

How I checked

I ran axe 4.14 against every page in both themes, checking WCAG 2.0, 2.1 and 2.2 A and AA plus axe's best practices. Then I tabbed through the pages with a keyboard and checked that every stop showed a focus ring, and loaded every page at 320px wide to check nothing scrolled sideways.

Automated checks catch maybe a third of real problems. That's why the screen reader pass above matters.

Found something that doesn't work for you?

Please tell me at manojcareers24@gmail.com. I'll fix it.