Skip to contentStack
- Astro and TypeScript (strict). Static pages, no client framework. The only scripts are the live edit on the home page, the theme toggle, the email copy button and the Work filters.
- Plain CSS with cascade layers and custom properties. No CSS framework.
- Self-hosted fonts through Fontsource, so no requests go to third-party font servers.
- Content as typed data. Projects, experience and skills live in TypeScript files; the pages and the CV are generated from them.
- Hosted on Vercel, deployed from GitHub on every push.
Design standards
--paperBackground--inkText--quietSecondary text--pencilThe one accent: links, edits, notes--markHighlighter
- AaNewsreaderHeadings and statements
- AaSchibsted GroteskInterface and body text
- AaIBM Plex MonoLabels and dates
- AaNanum Pen ScriptHandwritten blue-pencil notes
Accessibility
- Built to WCAG 2.2 AA: colour contrast checked in both themes, visible keyboard focus, a skip link and semantic headings.
- The filters are real buttons with pressed states, and changes are announced to screen readers. The live edit has a pause button, and screen readers hear the full sentence instead.
- Motion is limited to the edit and pencil marks, and turns off when the system asks for reduced motion.
- Link previews are text, available to keyboard and screen-reader users as descriptions.
Privacy
- No cookies, no analytics, no tracking.
- Your chosen theme is stored only in your own browser.
- The hosting provider keeps standard server logs.