45 Commits
Author SHA1 Message Date
Keith Solomon 842818ec7e 🐞 fix: Animate team-grid bio with JS measuring natural height 2026-07-25 15:41:46 -05:00
Keith Solomon 7c1c145846 🐞 fix: Use max-height for team-grid bio animation 2026-07-25 15:33:10 -05:00
Keith Solomon aabed2b437 🐞 fix: Use @starting-style for team-grid open transition 2026-07-25 15:23:43 -05:00
Keith Solomon e5301f34c4 🐞 fix: Animate team-grid bio on close and subsequent opens 2026-07-25 15:18:38 -05:00
Keith Solomon 18dde4c9f4 feat: Enhance team-grid block with single open mode and updated styles 2026-07-25 15:15:13 -05:00
Keith Solomon 3a07eb384f 🎨 build: Rebuild dist with team-grid block styles 2026-07-25 13:32:58 -05:00
Keith Solomon f8247ff7af 🐞 fix: Adjust line thickness
Deploy to Dreamhost (dev) / build (push) Successful in 36s
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-07-25 11:16:39 -05:00
Keith Solomon 2441cef539 rollback: Revert file move, change url for svg
Deploy to Dreamhost (dev) / build (push) Successful in 36s
Sync TODOs with Issues / sync_todos (push) Successful in 5s
2026-07-25 11:13:26 -05:00
Keith Solomon 75055e6f6e 🐞 fix: Move line image into block folder
Deploy to Dreamhost (dev) / build (push) Successful in 34s
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-07-25 11:07:06 -05:00
Keith Solomon 63df8e9a88 🐞 fix: Update service heading font size
Deploy to Dreamhost (dev) / build (push) Successful in 35s
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-07-25 10:54:30 -05:00
Keith Solomon b7477306d8 🐞 fix: Adjust menu width
Deploy to Dreamhost (dev) / build (push) Successful in 34s
Sync TODOs with Issues / sync_todos (push) Successful in 5s
2026-07-25 10:45:43 -05:00
Keith Solomon 02a8379de2 🐞 fix: Update styles and footer spacing
Deploy to Dreamhost (dev) / build (push) Successful in 36s
Sync TODOs with Issues / sync_todos (push) Successful in 5s
2026-07-25 10:42:57 -05:00
Keith Solomon f0b5bf75a5 feature: Add services list block
Deploy to Dreamhost (dev) / build (push) Successful in 39s
Sync TODOs with Issues / sync_todos (push) Successful in 7s
2026-07-25 10:37:28 -05:00
Keith SolomonandClaude dae3e7fd68 🎨 build: Rebuild dist after services-list heading token fix
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>
2026-07-24 23:52:33 -05:00
Keith Solomon b32abfb8f6 feat: Add services-list decorative line SVG 2026-07-24 23:24:13 -05:00
Keith Solomon 8c3284399e 🐞 fix: Remove Chrome tint implementation
Deploy to Dreamhost (dev) / build (push) Successful in 33s
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-07-12 15:30:54 -05:00
Keith Solomon 2b0daaa699 🐞 fix: Update footer color for chrome tinting and adjust related tests for iOS compatibility
Deploy to Dreamhost (dev) / build (push) Successful in 34s
Sync TODOs with Issues / sync_todos (push) Successful in 5s
2026-07-12 14:50:34 -05:00
Keith Solomon c82e6187af feature: Add independent chrome tint elements for iOS 26+ compatibility and enhance related tests
Deploy to Dreamhost (dev) / build (push) Successful in 33s
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-07-12 14:30:41 -05:00
Keith Solomon a41f6f3834 🐞 fix: Update Chrome tint implementation for iOS 26+ compatibility and enhance test coverage
Deploy to Dreamhost (dev) / build (push) Successful in 36s
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-07-12 14:12:18 -05:00
Keith Solomon ca367364f8 feature: Implement dynamic browser chrome tinting for header and footer visibility
Deploy to Dreamhost (dev) / build (push) Successful in 36s
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-07-12 13:57:20 -05:00
Keith Solomon 19d4dfd89c Merge branch 'main' of ssh://git.keithsolomon.net:222/Solo-Web-Works/CWC
Deploy to Dreamhost (dev) / build (push) Successful in 35s
Sync TODOs with Issues / sync_todos (push) Successful in 5s
2026-07-05 12:07:59 -05:00
Keith Solomon d56ec2ac96 build: regenerate dist with blog post card styles 2026-07-05 11:08:19 -05:00
Keith Solomon 02f9999621 🐞 fix: Update header/hero to swap based on service page children
Deploy to Dreamhost (dev) / build (push) Successful in 34s
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-07-05 10:36:27 -05:00
Keith Solomon a7fc6c974c build: regenerate dist with blog post-list styles 2026-07-04 20:32:22 -05:00
Keith Solomon 0a19256310 🐞 fix: Adjust mobile styles for contact block
Deploy to Dreamhost (dev) / build (push) Successful in 33s
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-07-04 19:40:01 -05:00
Keith Solomon 01c6fb7831 feature: Set up contact info block and map
Deploy to Dreamhost (dev) / build (push) Successful in 34s
Sync TODOs with Issues / sync_todos (push) Successful in 7s
2026-07-04 19:22:26 -05:00
Keith Solomon 952b1731d9 fix(contact): hardcode CWC Blue 03 stroke on contact info SVGs
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.
2026-07-04 15:51:28 -05:00
Keith Solomon f77a78b856 fix(contact): use wp_kses_post for block wrapper and AA color for required marker
- 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 &quot; 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.
2026-07-04 14:14:50 -05:00
Keith Solomon 6d62bd73ae build: regenerate dist with contact-info styles 2026-07-04 13:50:28 -05:00
Keith Solomon 1593be1c70 feat(contact): add address, email, phone icon SVGs 2026-07-04 13:25:53 -05:00
Keith Solomon dddb4b8c54 feature: Build interior layout
Deploy to Dreamhost (dev) / build (push) Successful in 38s
Sync TODOs with Issues / sync_todos (push) Successful in 7s
2026-07-01 18:33:01 -05:00
Keith SolomonandClaude 6452f28932 Refine hero: vector full-width, image top padding, content flush left
- 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>
2026-07-01 16:39:29 -05:00
Keith SolomonandClaude 2bda7f21eb Restructure hero: image at natural size overflowing, intro as text, no hard-coded copy
- 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>
2026-07-01 16:11:28 -05:00
Keith SolomonandClaude e221f62ef7 Refine hero: gradient backdrop, intro inside hero, image on right, vector visible
- 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>
2026-07-01 15:25:39 -05:00
Keith Solomon 998619fa3f Add Playwright coverage for inner page layout at all viewports 2026-07-01 11:13:34 -05:00
Keith Solomon edf3d6c5ce Add page-hero media layer CSS and import into blocks bundle 2026-07-01 10:22:29 -05:00
Keith Solomon daeb184dd1 fix: use new mobile vector for our work
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>.
2026-06-28 13:06:01 -05:00
Keith Solomon 8c239e15f6 fix: use new mobile vector for contact block
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.
2026-06-28 13:04:55 -05:00
Keith Solomon 14de24351e fix: use new mobile vector for hero
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.
2026-06-28 13:03:58 -05:00
Keith Solomon dbfd5bfb43 fix: use new mobile vector for pull quote
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.
2026-06-28 13:03:18 -05:00
Keith Solomon 7c3c09855d fix: add mobile pull quote artwork 2026-06-27 19:47:06 -05:00
Keith Solomon a360b8192a fix: complete mobile carousel and social updates 2026-06-27 18:00:32 -05:00
Keith Solomon f3c97efcd7 🐞 feat: Add contact information section to footer with address, email, and phone icons
Deploy to Dreamhost (dev) / build (push) Successful in 30s
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-06-21 15:12:03 -05:00
Keith Solomon d3e879c439 feature: Refactor footer layout and styles for improved design consistency
Sync TODOs with Issues / sync_todos (push) Successful in 6s
2026-06-06 22:55:32 -05:00
Keith Solomon a21ad94189 feat: bootstrap Community Works Collaborative theme from starter 2026-05-02 10:14:49 -05:00