Portrait of the site owner, shown at the top of the home page.

Executive portfolio

A portfolio theme that earns its accessibility claim

Apex is built for consultants, directors and advisors who need a fast, credible site without a build toolchain. Every accessibility and performance claim it makes is checked by a gate in CI.

Measured, not asserted

Every figure below is produced by a CI gate on each commit. Nothing here is a static badge.

AA

WCAG 2.2 conformance

Verified by axe-core and ssg audit. Colour tokens additionally clear AAA 7:1 for text.

0

Third-party requests

No CDN, no webfont host, no analytics. Everything ships from your own origin.

<7 KB

Heaviest page, compressed

HTML plus the fingerprinted CSS and JS it references. Enforced at 20 KB by scripts/pageweight.py.

0.00

Cumulative layout shift

Every image carries intrinsic dimensions; no late-loading webfont reflows the page.

About this theme

What you get

Apex ships five page types — home, case studies, frameworks, about and contact — sharing a single base.html through template inheritance. The header, footer and navigation live in partials, so changing a menu item is a one-line edit in one file rather than a find-and-replace across layouts.

The colour system is defined once as custom properties and re-checked on every commit by scripts/contrast.py. Text pairs clear WCAG 1.4.6 at 7:1 — the AAA threshold — and borders and the focus ring clear 1.4.11 at 3:1. Change a token and the gate tells you if you have broken something.

What it deliberately does not do

There is no CDN, no webfont host, no analytics snippet and no cookie banner, because there is nothing to consent to. The type stack resolves to fonts already on the device, which is why there is no layout shift when a webfont arrives late — none arrives at all.

Search is provided by SSG itself. The generator injects an accessible search widget with a proper dialog role, live-region result announcements and a Subresource Integrity hash on its script; the theme only re-skins it to match your palette.

Making it yours

Start with _layouts/styles.css. The @layer tokens block at the top is the whole design system: change --accent, run make check, and the contrast gate confirms the new value still passes before you ship it.