Skip to main content

Skyler HaliskyTechnical SupportAI-assisted Builder

Accessibility

Accessibility is where I begin.

Honest about what this site does for accessibility, and what it does not yet.

This site is built to be used by everyone, including people who navigate with a keyboard, a screen reader, or with motion turned down. This page is the honest record of that work: what I deliberately built in, and what I have not yet done. I would rather tell you exactly where it stands than claim a finish line I have not crossed.

The standard I aim for

I build to WCAG 2.2 Level AA. To be clear about that word: this site has not been through a formal third-party audit, and nothing here is certified. AA is the bar I design and build against, not a badge I have been given. The specific choices below are real, and you can check them yourself.

What I built in

Keyboard, end to end. A “Skip to main content” link is the first thing on the page: hidden until you focus it, then it jumps you past the navigation to the main region. Every control is reachable by keyboard, and the mobile menu is a proper dialog: it keeps focus inside while it is open, closes on Escape, and returns focus to the button that opened it.

A focus ring you can actually see. Move through the page by keyboard and the focused element gets a 2px terracotta outline that traces its own shape: pills stay pill-shaped, cards keep their corners. It clears the contrast WCAG asks of a focus indicator, in both the light and dark themes.

Readable text in both themes. I target WCAG AA contrast for body text, captions and links in light and dark themes. The 7 September 2026 hardening review covered 20 public content pages, the 404 page and three legacy redirects, using automated scans in both themes and targeted keyboard, reflow and contrast checks. These results are scoped evidence, not proof of contrast in every visual state or accessibility certification.

Real structure underneath. The page is built from honest landmarks (navigation, main, footer) in a sensible reading order, with a heading hierarchy a screen reader can move through. Links that open a new tab say so.

Motion that respects your settings. If your system asks for reduced motion, this site listens. The entrance animations, the scroll-linked day-to-night background, the page transitions, the small parallax: all of it holds still and shows you the finished, readable state instead of moving. A site-wide rule backs this up, so nothing decorative can slip past it.

Measured, not claimed

Real numbers from a real run: measured , method below. Not a live gate yet; a snapshot you can re-run.

0 axe violations

17 routes × 2 themes, strict rules

6 reduced-motion layers

rest-visible under every gate

AA measured, both themes

pixel-contrast at the measured coordinates

763 tests passing

the portfolio’s own suite

100% focus stops visible

every tab stop, keyboard-traced

0.0039 worst-case CLS

worst route, production build, floor 0.004

Measured Evidence JSON axe-core 4.11.4 across 17 routes × 2 themes label-content-name-mismatch + color-contrast on reduced-motion, scroll-settled Chromium, not WebKit

What I have not done

In the spirit of being honest about what ships:

No formal audit. Conformance here is self-assessed against my own code, not certified by a third party, and not validated end to end with assistive technology across every browser and screen reader. I have not run a full manual screen-reader pass on this site. If you rely on one, I would genuinely like to hear how it goes.

The moving background is decorative. The day-to-night world that shifts as you scroll is marked as decorative and hidden from screen readers. It carries no information you would miss, and it holds still under reduced motion. It is the one piece of visual flourish here, and I would rather name it than pretend the page is plain.

Found a barrier? Tell me.

Accessibility barriers feel lonely when you face them alone. If something here got in your way (a control you could not reach, text you could not read, anything at all), I want to know. Tell me what broke and what you were trying to do. I read every message that comes through, and I will fix it.