Links
A hairline box that fills with ink from the right on hover and focus. The current page stays filled.
Paper and ink, hairline rules, letterspaced small print, one loaded Riso drum, 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 ink itself: --accent is the highlight text color and selection is inverted ink. Dark is the default; .theme-dark pins it to a subtree, which keeps the search dialog dark on paper.
--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).
One loaded drum as a print mark: a 6px swatch beside a kicker, shown here magnified and at actual size. 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) --font-weight-regular Emphasis in running text --font-weight-medium Labels, pills and kickers --font-weight-semibold Thesis title, strong --font-weight-bold Headings (--font-weight-heading) Fluid sizes with floors: small print 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. The bottom fade sits under the dock and the top fade over it; the menu clears both. 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-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 hairline box that fills with ink from the right on hover and focus. The current page stays filled.
Medium caps trimmed to cap height; active is ink on paper. They run the works filter and the grid and list toggle.
Quiet caps with ↗ for off-site links. Email copies the address and says so.
Kickers, spec blocks and captions at --fs-xs in --text-tertiary, in letterspaced caps or Geist Mono.
Selected
Fig. 1 Astro and Contentful
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. ⌘ 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, this one included. --dock-clearance keeps content and keyboard focus above it.
At most one per session, on --bg-secondary with --shadow-elevated. It pauses on hover, focus and open dialogs and is announced politely.