The old /gift page's actual visible pitch ("The world is stranger than
it looks...") got replaced with the book's back-cover blurb when this
file was first created — this was the wrong text to lose; the blurb was
only ever used as /gift's SEO meta description, not its visible copy.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Neon Tan now ships via shop.michaelferrara.org/arc/neon-tan (bookshop's
ARC giveaway: single email field, gated download, tracked redemptions)
instead of these EEC-course-driven pages, which required first name as
well as email and served the epub from an ungated public bucket URL.
Old /gift and /gift-thanks paths still work via Caddy's path_redirects
(reground-infrastructure), so any existing bookmarks/emailed links keep
resolving to the new page instead of 404ing.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Front-matter-only, mirroring thistleandmoth-site's books/ convention.
Feeds the bookshop ARC campaign's title/author/cover/description —
draft: true, not meant to render as its own page (no books layout
exists in this site).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fleet-wide change: CI now builds the site in an isolated container and
pushes output via rsync to a forced-command SSH key restricted (via
rrsync) to this site's own docroot only, instead of relying on the
shared Actions runner's blanket /var/www/** bind-mount capability. See
the static-site-deploy Ansible role in reground-infrastructure.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The book cover is a 1664x2432 portrait image, which crops badly into
og:image's expected 1200x630. Add a social_image field (a composited
card: cover centered on the site's parchment background) that og:image/
twitter:card prefer, falling back to cover_image if unset.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fill in the gift page's copy (title, description, subhead), wire the
cover image into the hero and og:image/Twitter card meta, and point the
download links at the real bucket path. Also fixes a bug where every
page's meta description fell back to the site-wide bio instead of its
own.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Matches the gift.<domain> vanity redirect's own name instead of a
different word for the same page.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Self-hosts the five EB Garamond/Source Serif 4/Inter woff2 files the
new CSS's @font-face rules point at (static/fonts/ didn't exist before
now, so those requests just 404'd). Removes the old Google Fonts link
that was pulling Roboto/Open Sans/Source Code Pro — fonts the new
stylesheet never references.
Updates baseof.html's header/footer markup from the old scaffold's
.site/.brand/.inner classes to .site-header/.site-title/.site-footer,
matching what the new CSS actually targets — without this the header
and footer rendered completely unstyled.
Adds the component styles the new CSS didn't include at all: .btn,
.enroll-form/.enroll-status/.enroll-download, .course-hero and
friends, and .skip-link. Most importantly .field-honeypot — its
absence meant the anti-spam honeypot field rendered visibly on the
page instead of off-screen, which would silently break a real
visitor's signup if they filled it in.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>