# CLAUDE.md — Women's Fit Co website Operating guide for Claude Code working in this repository. Read this first. ## What this is A static, zero-build website for **Women's Fit Co** — a personal training and group exercise business for mums, run by **Sarah White** (sole trader) in **Karalee, QLD** (servicing the Karalee/Ipswich area). The site replaces a Squarespace site to eliminate subscription cost and give full control over content and hosting. Hosting: **Cloudflare Pages**, deployed from this GitHub repo. No build step — the files in the repo are served exactly as-is. ## Who edits, and how - **Sarah does not use GitHub, the CLI, or touch code.** Ever. She requests changes in plain language (e.g. "update the class times", "add a banner about the new term"). - **All changes are made by the repo owner via Claude Code.** When asked for a change, make the edit, push to the `test` branch, and tell the owner it's ready to preview. - Sarah's only involvement is viewing the test site and approving. ## Branch & deployment model | Branch | Environment | URL | Purpose | |--------|-------------|-----|---------| | `main` | Production | `www.womensfit.co` | Live public site | | `test` | Preview | `test.womensfit.co` | Staging for Sarah to approve | **Workflow for any change:** 1. Make the edit on the `test` branch. 2. Commit and push `test` → Cloudflare auto-deploys to `test.womensfit.co` (~30s). 3. Owner/Sarah previews at `test.womensfit.co` (behind Cloudflare Access — passkey login). 4. On approval, merge `test` into `main` and push → auto-deploys to the live site. 5. If `test` drifts from `main`, reset it: `git checkout test && git reset --hard main && git push -f`. Keep `test` as a simple persistent branch. Do not over-engineer with per-change branches unless it becomes necessary. ### Commit behaviour (read this) - **Commit and push directly to the `test` branch. Do NOT open pull requests** unless the owner explicitly asks for one. The approval gate here is Sarah previewing `test.womensfit.co`, not a PR review. - **Never merge to `main` on your own initiative.** Only merge `test` → `main` when the owner explicitly says to publish/go live. Merging to `main` deploys to the live public site. - `main` has **no enforced branch protection** (free private repo — GitHub doesn't enforce it). That makes the "don't merge without approval" rule a discipline matter, not a technical block. Treat it as strict. If a bad change reaches `main`, it can be rolled back instantly via the Cloudflare Pages dashboard (Deployments → Rollback). ### Creating the test branch (first time) After `main` exists on the remote: ```bash git checkout main git pull git checkout -b test git push -u origin test ``` `test` and `main` hold the **same files** — the only difference is which Cloudflare Pages environment they deploy to. Per-environment differences (like the test-site `noindex`) are handled at the Cloudflare edge, never in the repo. ## Hard rules - **NEVER put a physical/home address anywhere in the site or any public content.** This is a privacy and personal-safety requirement. Service area is "Karalee / Ipswich", never a street address. - **NEVER commit a `Disallow: /` or `noindex` into `robots.txt` or `_headers` on `test`** that could merge into `main` and deindex the live site. Per-environment indexing differences are handled at the Cloudflare edge (scoped to the `test` hostname), NOT in the repo. The repo is identical across branches. - The business owner is **Sarah White** (not "Sarah Chappell" — that is an outdated maiden name that must never appear). Trading name: **Women's Fit Co**. - Keep the site a **zero-build static site**. Do not introduce frameworks, bundlers, or a build step without explicit instruction. ## File map ``` index.html Home page (hero, ticker, credentials, about, contact) privacy-policy.html Privacy policy (noindex; AU Privacy Principles; has placeholders) 404.html Not-found page (noindex) assets/style.css SINGLE shared stylesheet — all pages link this. Edit here to restyle. _headers Cloudflare Pages security headers (HTTP response headers) robots.txt Crawler directives (allows search + AI-search bots) sitemap.xml Lists only the public www URLs ``` ## Styling - All styles live in `assets/style.css`. Brand tokens are CSS custom properties in the `:root` block at the top — change a colour or font there and it updates site-wide. - **Fonts (match Squarespace original exactly):** Anton for headings (`letter-spacing: 0.04em`, `line-height: 1.3`, single weight 400), Inter for body (`line-height: 1.59`). Loaded from Google Fonts. - **Colours:** `--pink` and `--blue` are the two brand section colours. NOTE: the current hex values are PLACEHOLDERS pending confirmation from the Squarespace colour picker. When the real values are provided, update only the `:root` tokens in `style.css`. ## Common edit recipes - **Announcement banner:** edit the `ANNOUNCEMENT` constant in the `