Traced from a piece of petrified root wood the user owns, simplified into
a flat currentColor SVG so it matches the header text in both light and
dark mode, plus a bio line explaining the connection.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Computed actual contrast ratios rather than eyeballing:
- White button text on teal was 3.67:1, fails AA (needs 4.5:1) — darkened
the CTA color to 007f73, now 4.90:1.
- Rose nav-hover text was 2.50:1 on the header, 1.82:1 on the footer —
both far below any AA threshold. Rose now shows as an underline instead
of a text color change, so the accent survives without breaking
legibility.
- Added a skip-to-content link (hidden until focused, standard pattern),
aria-label on both nav landmarks (header nav and footer nav previously
both announced as plain 'navigation' with no way to distinguish them),
and an explicit high-contrast focus-visible ring — including a
header-specific override since the default cta-color ring was only
~1:1 against the slate blue header background.
All values re-verified in both light and dark mode, not just light.
Reconciled two overlapping note sets — kept the intent from both,
resolved contradictions toward the more distinctive option (cream over
plain gray/white background), and fixed a couple of pairings that would
have been genuinely hard to read as written (teal button with taupe
text, rose links on taupe — both too low-contrast) by keeping the color
but swapping in white/higher-contrast text instead.
Slate blue header (firm, confident) with warm cream body (gentle,
breathing room), teal CTAs (clarity/action), dusty rose as the one purely
interactive/decorative touch (hover states), warm taupe grounding the
footer. Headings in slate blue to tie the brand color into the type
hierarchy. Roboto/Open Sans/Source Code Pro per the font pairing brief,
loaded via Google Fonts since that's what was specified.
Minified and fingerprinted in production (cache-busting via content
hash), plain link in dev. Sets up for actual styling work — much easier
to find and edit than a <style> block buried in baseof.html.
- baseof.html: proper header/nav/footer, CSS custom properties for
light/dark, button and form component styles — no external theme
dependency, avoiding the submodule/version churn from the earlier
PaperMod attempt.
- Contact page: real form (honeypot spam protection) posting to the eec
service's new /contact endpoint, replacing the plain mailto CTA.
- Privacy Policy and Terms drafts — grounded in what's actually true here
(self-hosted mail/course infra, no third-party trackers), flagged as
drafts pending review.
- courses/ section with a generic single template driven by front matter
(eec_slug, pitch) and the first course, Find Your Right Readers —
landing page only; the actual course content isn't authored in
eec-courses yet, so enrolling will 404 until that's written.
- Fixed hugo.toml baseURL (was www.reground.org, but Caddy's canonical
host is the bare domain — www redirects to it, not the other way).
PaperMod's opengraph.html calls partial with a redundant "partials/"
prefix that the production Hugo version (0.154.5, from the
hugomods/hugo:exts build image) doesn't tolerate, breaking the build.
Rather than patch a vendored theme, replaced it with plain, dependency-
free layouts (baseof/index/single/list) that render the actual homepage
content directly. Verified building successfully against the exact
Hugo image/version the deploy pipeline uses.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>