- views/partials/page-hero.php: removed the page-intro partial call. The
intro is now rendered inline as a single .page-hero__intro div
containing the editor-supplied intro text only (no hard-coded
heading). The H1 is rendered with a dedicated .page-hero__heading
class for typography control. Breadcrumbs + H1 + intro are in a
single .page-hero__content container.
- views/partials/page-intro.php: deleted (no longer used).
- styles/blocks/page-hero.css: rewritten layout. The hero has a min-height
of clamp(31rem, 38vw, 36rem). .page-hero__media is a foreground
absolutely-positioned img on the right (no mask, no cover, no
object-fit), with bottom: -10% so the image's bottom hangs over
the bottom edge of the hero. The vector is positioned at
bottom: clamp(1.5rem, 4vw, 3rem) with some spacing from the bottom
edge, full-width on the left. Both elements stay above the content
layer (z-index 10) and below the breadcrumb/title text. The H1 uses
Quincy serif at clamp(2.5rem, 6vw, 4.5rem). The intro text is
capped at 36rem to sit alongside the H1 without spanning the full
hero width.
- tests/inner-page.spec.js: removed the now-obsolete
.page-hero__intro-heading / .page-hero__intro-text assertions (the
intro is a single text block now).
Co-Authored-By: Claude <noreply@anthropic.com>
- styles/blocks/page-hero.css: add blue-to-teal gradient to .page-hero (matches
homepage-hero). Fix image mask direction (right-to-left fade) so the image
is visible on the right and fades to transparent on the left. Reposition
the vector to span the full bottom of the hero at z-index 2 (above the
media layer, below content). Add .page-hero__intro and .page-hero__intro-inner
grid rules for the new two-column heading + body block.
- views/partials/page-hero.php: drop bg-dark / bg-cover / bg-no-repeat
utilities (the gradient comes from CSS now). Simplify the heading render.
Load the page-intro partial inside .page-hero__content, below the heading.
- views/partials/page-intro.php: rewrite as a fragment for embedding inside
the hero - a two-column heading (hard-coded 'Our Work') + body grid.
Returns early when the intro field is empty.
- page.php: remove the page-intro partial call (it's now loaded from
page-hero.php).
- tests/inner-page.spec.js: switch the selector from .page-intro to
.page-hero__intro. Update the order assertions to verify the intro is
a descendant of the hero (not a sibling below it).
Co-Authored-By: Claude <noreply@anthropic.com>
The mobile contact linework is loading=lazy and only resolved when scrolled into view. Wait for it to finish loading before the geometry assertions read its bounding rect, matching the pattern already used for the Our Work desktop vector.
Replace the clip-path composition of the desktop SVG with a real <img> that references the artist-supplied mobile-work-vector.svg. Drop the CSS-layer trick and the ::before/::after background pieces; the new mobile SVG already covers the composition. Update the linework composition test to assert against the new <img>.
Render mobile-contact-vector.svg alongside the existing contact linework. CSS hides the desktop SVG and shows the mobile <img> at <=767px so the new 342x187 composition fills the card width. Update the geometry test to assert the new linework ratio (342/187) and the snapshot.
Swap pullquote-mobile-linework.png for the artist-supplied mobile-pullquote-vector.svg at the existing pull-quote__vector--mobile slot. Update the visual snapshots to match the new artwork.