# Blog Index Layout ## Goal Build the blog index layout shown in `blog-mockup.png` (theme root) so `/blog/` and any other view that uses the WordPress `index.php` template (category, tag, author, search) render with a clean design: a "Blog" page title at the top, a grid of post cards (each card shows image, title, and byline only), and the existing sidebar logic preserved on the right side. ## Scope - Applies to `index.php` only — the blog index, category archives, tag archives, author archives, and search results all fall through this template in the current theme (no `archive.php`, `category.php`, `tag.php`, `author.php`, or `home.php` exist). - Does **not** change `single.php` (single-post view) or `page.php` (static pages). The Services hero gate is unaffected. - Does **not** change `front-page.php` (the home page). - The existing post list component (`.post-list__posts`, `.post-list__post`, `.post-list__title`, `.post-list__byline`) is preserved and used. - The existing sidebar logic (`hasSidebar()` → 4-col grid with sidebar) is preserved. - The existing pagination (`the_posts_pagination`) is preserved. ## Architecture The change is a small refactor of `index.php` and an unfreeze of `styles/components/post-list.css`: 1. **`index.php`** — add a "Blog" page title at the top of the post list section, and trim the post card to image + title + byline (remove the categories row and the 15-word excerpt). The grid, sidebar, and pagination remain unchanged. 2. **`styles/components/post-list.css`** — unfreeze the file (currently empty boilerplate) and add styles for the new `.post-list__h1` heading. Use the project's existing H1 typography (Quincy serif, fluid `--h1` size, default margin). 3. **A new test** in `tests/blog-page.spec.js` — verifies the blog renders the page title, the post grid, and no inner-page hero. Mirrors the structure of `tests/contact-page.spec.js`. The post list grid is already implemented with `grid-cols-[repeat(auto-fit,minmax(20rem,1fr))]` (a responsive auto-fit grid that gives 3-4 columns on desktop, fewer on smaller viewports). The mockup shows 3 columns at desktop, which is what the auto-fit grid gives at ~1280px. No change to the grid layout. ## ACF Field Group Changes None. The blog index uses the standard WordPress post data (`the_title`, `the_permalink`, `the_author`, `the_date`, `get_the_post_thumbnail_url`, `get_the_category`). No custom fields. ## index.php Wiring Find the post list section: ```php
... (featured image)
Posted in: ... (categories)

... ``` Changes: 1. **Add a page title** at the top of the post list, after the `
` opening tag: ```php

Blog

...
...
``` The title text is hard-coded "Blog" — this matches the spec's "Standard H1 (Quincy, project default)" answer. The title is the same on category, tag, author, and search views (the mockup only shows the blog index, but consistency is the simplest choice for now; a future task can add per-view titles if needed). 2. **Remove the categories row** (`
...`). 3. **Remove the 15-word excerpt** (`
...`). 4. **Keep the byline** (`