# Grace Family Roofing — GFRYork Project

WordPress site on local XAMPP (`http://localhost/gfryork/`). Active theme: `wp-content/themes/gfryork`. Pages are managed via the **Pika Vibe** plugin (dual-stored as WP post meta + theme JSON in `wp-content/themes/gfryork/content/pages/`).

Live production: **https://waml.in/gfryork/** — this is the client-approved deployment and is the source of truth for visible styling.

---

## Hard rules for any AI session working in this repo

These rules are non-negotiable. Future sessions: read them before touching theme files.

### 1. Production is the source of truth for visible design

The client has signed off on what is currently live at `https://waml.in/gfryork/`. Before changing any font property, color, spacing scale, or layout in the theme:

1. Fetch the production CSS: `https://waml.in/gfryork/wp-content/themes/gfryork/assets/css/main.css`.
2. Compare against the local file you are about to edit.
3. If your change would diverge from production, **stop and ask the user first**. Do not invent new design tokens, new typography scales, or new font families.

### 2. Typography is governed

The full typography standard, including every approved selector and value, is in **[wp-content/themes/gfryork/docs/standards/typography.md](wp-content/themes/gfryork/docs/standards/typography.md)**. Read it before any CSS edit that touches a `font-*`, `line-height`, or `letter-spacing` property.

Key rules:
- Display headings use `"Barlow Condensed", sans-serif`. Body inherits `"Barlow", sans-serif` from the body element.
- For a new section's heading, reuse an existing selector (`.gfr-section-title`, `.gfr-about-standard-card__title`, the unified inner-H1 group) — do not open a new `clamp()` scale.
- Do **NOT** override Pika Vibe plugin block classes (`.pika-fg__*`, `.pika-services-grid__*`, etc.) unless the client has specifically asked for it. Production does not override these; the plugin defaults are intentional.

### 3. Navigation menus are WP-managed

Both the header and footer menus are driven by `wp_nav_menu()` reading WP-managed menus assigned to theme locations `primary` and `footer`. Do not hardcode menu items into `header.php`, `footer.php`, or `functions.php`. Edit menus via wp-admin → Appearance → Menus.

### 4. Page hierarchy lives in the WP database, not in JSON

Pika Vibe JSON files in `content/pages/` do not reliably encode `post_parent`. When creating a sub-page (e.g. under `/services/`), set `post_parent` on the WP post (via wp-admin → Page parent dropdown, or `wp post create --post_parent=<id>`). Otherwise the URL will be top-level instead of nested.

### 5. Scope discipline

When a client provides a feedback doc, implement only what the doc asks for. Do not "improve" adjacent content, refactor unrelated CSS, or invent design system upgrades the client did not request. If something looks broken but is out of scope, surface it as a separate flag — do not silently fix it.

### 6. Hooks

A PreToolUse hook in `.claude/settings.json` fires when you Edit/Write `main.css`, a block template under `templates/blocks/`, or `header.php`/`footer.php`. The hook injects a reminder pointing back at this file and at the typography standard. Treat the reminder as binding context — don't dismiss it.

---

## Quick references

- **Theme docs:** [wp-content/themes/gfryork/AGENTS.md](wp-content/themes/gfryork/AGENTS.md), [wp-content/themes/gfryork/docs/](wp-content/themes/gfryork/docs/)
- **Typography standard:** [wp-content/themes/gfryork/docs/standards/typography.md](wp-content/themes/gfryork/docs/standards/typography.md)
- **Pika Vibe plugin docs:** [wp-content/plugins/pika-vibe/AGENTS.md](wp-content/plugins/pika-vibe/AGENTS.md)
- **WP admin:** `http://localhost/gfryork/wp-admin` (user: `max`, pass: `1`)
- **WP CLI / one-offs:** PHP CLI at `C:\xampp\php\php.exe`; PHP scripts can be dropped at site root (see existing `import-blog-posts.php`, `fix_db_overrides.php` as examples)
