How this site is made — the honest accounting of tools, type, and decisions.
Built with Astro. Content is authored in Markdown and MDX. No client-side framework — just HTML with a handful of small vanilla scripts for the theme toggle, search filter, and reading progress bar.
Tailwind CSS v4 via the Vite plugin for utility classes. Most of the layout and component styling is written as scoped CSS or inline styles to keep specificity predictable.
Serif: Newsreader (variable) — used for headlines and body prose.
Mono: JetBrains Mono (variable) — used for UI labels, metadata, and code.
Sans: Geist (variable) — reserved for occasional UI elements.
All fonts served from @fontsource — no Google Fonts requests.
Two themes — light and dark — are driven by a .dark class on the root element, toggled without JavaScript flicker via an inline script that reads localStorage before paint. Accent color is a deep red. Type scale is fluid using clamp().
Built with Claude Code — design, implementation, and QA. Powered by Obra Superpowers for structured AI workflows, gstack for headless browser QA and site auditing, and Claude Design for visual design review and UI iteration.