Rebuild static/dist/theme.css to reflect the text-25px → text-24px
fix in views/blocks/services-list/services-list.css. The
.services-list__heading rule now resolves cleanly in Tailwind v4.
Co-Authored-By: Claude <noreply@anthropic.com>
SVGs loaded via <img src> cannot inherit currentColor from the parent
document, so the .contact-info__icon { color: ... } rule had no effect and
the icons rendered in the SVG's own default color (black).
Bake the stroke color in directly: stroke="#8FC9E6" (CWC Blue 03). The
final user-provided SVGs will replace these placeholders later, so this is
the minimal change to make the icons visible in the brand color today.
- contact-info.php was calling esc_attr() on the output of
blockWrapperAttributes(), which returns a full attribute string.
esc_attr() turned the wrapping quotes into " so the class
attribute rendered literally as class="contact-info ...".
Switched to wp_kses_post() to match the pattern used by every
other block template in the project.
- contact-info.css: .gfield_required used --color-cwc-orange-01
(#e15747, 3.71:1 on white) which fails WCAG 2 AA. Swapped to the
project's --color-secondary-accessible token (#c43c2b) so the
required marker is brand-aligned and meets the 4.5:1 minimum.
- Regenerated static/dist/theme.css to match.
- styles/blocks/page-hero.css:
- .page-hero__vector: width is now 100% (was clamp(28rem, 60vw, 56rem))
so the orange linework spans the full width of the hero. The SVG
scales proportionally (1920x489 viewBox).
- .page-hero__media: added top: clamp(2rem, 4vw, 4rem) so the image
has visible top padding inside the hero (in addition to overflowing
the bottom). Reduced right offset to clamp(0.5rem, 2vw, 2rem) so
the image sits closer to the right edge. Width is 'auto' with
max-width: clamp(20rem, 30vw, 28rem) so the image's natural aspect
ratio (490x613 portrait) is preserved.
- views/partials/page-hero.php: .page-hero__content is now 'container
mx-auto px-0!' so the breadcrumbs, H1, and intro sit flush left at
x=0, matching the logo's left edge (which is also at x=0 thanks to
the header's px-0! override on its container).
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
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.
Add hero-vector-mobile.php that renders mobile-hero-vector.svg alongside the existing desktop hero partial. The homepage-hero.css hides the desktop SVG and shows the mobile <img> below 768px while preserving every other mobile rule.
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.