Links
A text link with a faint hairline underline that firms up on hover and focus. The links to the current page and to its section have none, and only the section link reacts to hover.
Neutral greys, hairline rules, letterspaced small type, one pink, and motion that stays out of the way. Every value below is read from the site’s stylesheets at build time and every component is the real one, so this page cannot drift from the site.
Two neutral palettes, no tint. Emphasis is contrast, not a hue: --accent is the highlight text color and selection inverts the text. Dark is the default; .theme-dark pins it to a subtree, which keeps the search dialog dark in the light theme.
--bg-primary #0a0a0a --bg-secondary #161616 --bg-tertiary #222 --text-primary #ededed 16.9:1 --text-secondary #a3a3a3 7.8:1 --text-tertiary #818181 5.1:1 --text-highlight #fff 19.8:1 --border-primary #262626 --border-secondary #4d4d4d --surface-hover #ffffff14 --bg-primary #f5f5f5 --bg-secondary #e7e7e7 --bg-tertiary #dcdcdc --text-primary #111 17.3:1 --text-secondary #555 6.8:1 --text-tertiary #666 5.3:1 --text-highlight #000 19.3:1 --border-primary #d9d9d9 --border-secondary #a5a5a5 --surface-hover #00000010 Ratios are each text color on its own --bg-primary (WCAG 2).
The only hue in the interface: a 6px pink swatch beside a kicker, shown here magnified and at actual size. The blue joins it only in the colophon. Never body text, never a wash, never a second palette.
Latest
Three families, self-hosted through the Astro font pipeline, and only the cuts listed are loaded. Headings are set in the sans; the serif is an editorial accent.
--font-weight-book Long-form reading --font-weight-regular Body text (default) and the home headline --font-weight-regular Emphasis in running text --font-weight-medium Labels and kickers --font-weight-semibold Card titles, strong --font-weight-bold Headings (--font-weight-heading) Fluid sizes with floors: small type never under 11.5px, small text never under 15px. The right column is the size at this viewport.
A fixed step scale inside components, a fluid one for page rhythm. The gutter never drops under a display cutout.
--space-4xs 0.125rem · 2px --space-3xs 0.25rem · 4px --space-2xs 0.375rem · 6px --space-xs 0.5rem · 8px --space-s 0.75rem · 12px --space-m 1rem · 16px --space-l 1.5rem · 24px --space-xl 2rem · 32px --space-2xl 3rem · 48px --space-fluid-2xs clamp(0.375rem, 0.3182rem + 0.2424vi, 0.5rem) --space-fluid-s clamp(0.75rem, 0.6364rem + 0.4848vi, 1rem) --space-fluid-l clamp(1.5rem, 1.2727rem + 0.9697vi, 2rem) --space-fluid-2xl clamp(3rem, 2.3182rem + 2.9091vi, 4.5rem) Two radii plus pill. A button sits one step under its card, so the pair stays concentric.
--radius-sm 6px --radius-md 0.5rem --radius-pill 9999px --border-width-hairline 1px --border-width-strong 2px Short, plain transitions for chrome; authored curves only where something travels. Play runs every row at once. With reduced motion nothing travels.
--duration-instant 100ms --duration-fast 150ms --duration-base 200ms --duration-moderate 250ms --duration-slow 300ms --duration-slower 400ms --duration-slowest 500ms Fixed chrome from back to front. On a phone the bottom fade sits under the dock and the top fade over it; on a wider screen the masthead takes their place. The menu clears them all. Skip link, theme-swap snapshot and cursor always win.
--z-cursor --z-theme-transition --z-skip-link --z-menu-toggle --z-menu --z-fade-top --z-masthead --z-dock --z-fade-bottom 24px is the floor everywhere and --tap-target-size on a coarse pointer. Hit areas grow; the drawn shape and the row spacing do not move.
Live, rendered with the site’s own components and classes.
A text link with a faint hairline underline that firms up on hover and focus. The links to the current page and to its section have none, and only the section link reacts to hover.
The works lenses as a line of type, each counted in Geist Mono at the cap line. Selected is the highlight color with an underline; the grid and list switch uses the same text buttons at the small size.
Quiet caps with ↗ for off-site links. The email address comes first, written out; clicking it copies it and says so.
Kickers, spec blocks and captions at --fs-xs in --text-tertiary, in letterspaced caps or Geist Mono.
Selected
Fig. 1 Astro (pages) + Contentful (content management)
Muted loops load near the viewport. One control pauses every loop on the site and remembers it; with reduced motion the poster stays.
A native dialog pinned to the dark palette in both themes, floating on a dark veil. ⌘ K opens it from anywhere.
A fine pointer gets a custom cursor. Over “view” and “read” it turns into a frosted lens, the one glass surface on the site.
The floating bar at the foot of every page on a phone: the four pages, plus the theme switch and the contact links where they fit. A wider window moves the pages and the switch into the masthead and leaves the contact links to the footer. --dock-clearance keeps content and keyboard focus above it.