From 69102b28ea20cedfd55b97742c202b088c4ed3db Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 02:59:48 +0200 Subject: [PATCH 01/22] refactor(css): C2.1 re-key fl-node-1a4igunq3xvj -> testimonials-header Class rename only (data-node attrs kept - system tests select on them). Gate: every compiled bundle byte-identical after reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/layouts/partials/page/testimonials.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/beaver/layouts/partials/page/testimonials.html b/themes/beaver/layouts/partials/page/testimonials.html index 929095c21..e705acf34 100644 --- a/themes/beaver/layouts/partials/page/testimonials.html +++ b/themes/beaver/layouts/partials/page/testimonials.html @@ -11,7 +11,7 @@
Date: Sun, 19 Jul 2026 03:00:40 +0200 Subject: [PATCH 02/22] refactor(css): C2.1 re-key fl-node-38ejkdz2v4cq -> testimonials-header-col Class rename only; gate: all bundles byte-identical after reverse substitution (first run was build flicker; converged rerun clean). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/pages/about-us.css | 10 +++++----- themes/beaver/assets/css/pages/clients.css | 12 ++++++------ themes/beaver/assets/css/pages/homepage.css | 10 +++++----- themes/beaver/assets/css/pages/services.css | 10 +++++----- themes/beaver/assets/css/pages/single-service.css | 10 +++++----- themes/beaver/assets/css/pages/single-use-cases.css | 10 +++++----- .../beaver/layouts/partials/page/testimonials.html | 2 +- 7 files changed, 32 insertions(+), 32 deletions(-) diff --git a/themes/beaver/assets/css/pages/about-us.css b/themes/beaver/assets/css/pages/about-us.css index a2b9f04fb..4bcc64d75 100644 --- a/themes/beaver/assets/css/pages/about-us.css +++ b/themes/beaver/assets/css/pages/about-us.css @@ -1474,13 +1474,13 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq { +.testimonials-header-col { width: 100%; } @media (max-width: 860px) { - .fl-builder-content .fl-node-38ejkdz2v4cq { + .fl-builder-content .testimonials-header-col { width: 100% !important; max-width: none; clear: none; @@ -1489,18 +1489,18 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { margin-top: 0px; } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { padding-bottom: 60px; } @media ( max-width: 860px ) { - .fl-node-38ejkdz2v4cq.fl-col > .fl-col-content { + .testimonials-header-col.fl-col > .fl-col-content { padding-top: 0px; padding-bottom: 0px; } diff --git a/themes/beaver/assets/css/pages/clients.css b/themes/beaver/assets/css/pages/clients.css index 71886b5d1..4e70401b1 100644 --- a/themes/beaver/assets/css/pages/clients.css +++ b/themes/beaver/assets/css/pages/clients.css @@ -1066,13 +1066,13 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq { +.testimonials-header-col { width: 100%; } @media (max-width: 860px) { - .fl-builder-content .fl-node-38ejkdz2v4cq { + .fl-builder-content .testimonials-header-col { width: 100% !important; max-width: none; clear: none; @@ -1081,26 +1081,26 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { margin-top: 0px; } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { padding-top: 130px; padding-bottom: 60px; } @media ( max-width: 1115px ) { - .fl-node-38ejkdz2v4cq.fl-col > .fl-col-content { + .testimonials-header-col.fl-col > .fl-col-content { padding-top: 50px; } } @media ( max-width: 860px ) { - .fl-node-38ejkdz2v4cq.fl-col > .fl-col-content { + .testimonials-header-col.fl-col > .fl-col-content { padding-top: 50px; padding-bottom: 0px; } diff --git a/themes/beaver/assets/css/pages/homepage.css b/themes/beaver/assets/css/pages/homepage.css index fcc7b093f..1b66982af 100644 --- a/themes/beaver/assets/css/pages/homepage.css +++ b/themes/beaver/assets/css/pages/homepage.css @@ -2855,13 +2855,13 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq { +.testimonials-header-col { width: 100%; } @media (max-width: 860px) { - .fl-builder-content .fl-node-38ejkdz2v4cq { + .fl-builder-content .testimonials-header-col { width: 100% !important; max-width: none; clear: none; @@ -2870,18 +2870,18 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { margin-top: 130px; } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { padding-bottom: 60px; } @media ( max-width: 860px ) { - .fl-node-38ejkdz2v4cq.fl-col > .fl-col-content { + .testimonials-header-col.fl-col > .fl-col-content { padding-top: 50px; padding-bottom: 0px; } diff --git a/themes/beaver/assets/css/pages/services.css b/themes/beaver/assets/css/pages/services.css index 2ffa15809..8783a0e81 100644 --- a/themes/beaver/assets/css/pages/services.css +++ b/themes/beaver/assets/css/pages/services.css @@ -1362,13 +1362,13 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq { +.testimonials-header-col { width: 100%; } @media (max-width: 860px) { - .fl-builder-content .fl-node-38ejkdz2v4cq { + .fl-builder-content .testimonials-header-col { width: 100% !important; max-width: none; clear: none; @@ -1377,19 +1377,19 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { margin-top: 0px; } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { padding-top: 130px; padding-bottom: 60px; } @media ( max-width: 860px ) { - .fl-node-38ejkdz2v4cq.fl-col > .fl-col-content { + .testimonials-header-col.fl-col > .fl-col-content { padding-top: 50px; padding-bottom: 0px; } diff --git a/themes/beaver/assets/css/pages/single-service.css b/themes/beaver/assets/css/pages/single-service.css index ab949a1b2..c79aa3b26 100644 --- a/themes/beaver/assets/css/pages/single-service.css +++ b/themes/beaver/assets/css/pages/single-service.css @@ -1436,13 +1436,13 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq { +.testimonials-header-col { width: 100%; } @media (max-width: 860px) { - .fl-builder-content .fl-node-38ejkdz2v4cq { + .fl-builder-content .testimonials-header-col { width: 100% !important; max-width: none; clear: none; @@ -1451,19 +1451,19 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { margin-top: 0px; } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { padding-top: 130px; padding-bottom: 60px; } @media ( max-width: 860px ) { - .fl-node-38ejkdz2v4cq.fl-col > .fl-col-content { + .testimonials-header-col.fl-col > .fl-col-content { padding-top: 50px; padding-bottom: 0px; } diff --git a/themes/beaver/assets/css/pages/single-use-cases.css b/themes/beaver/assets/css/pages/single-use-cases.css index 6ba381514..d2a106697 100644 --- a/themes/beaver/assets/css/pages/single-use-cases.css +++ b/themes/beaver/assets/css/pages/single-use-cases.css @@ -1333,13 +1333,13 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq { +.testimonials-header-col { width: 100%; } @media (max-width: 860px) { - .fl-builder-content .fl-node-38ejkdz2v4cq { + .fl-builder-content .testimonials-header-col { width: 100% !important; max-width: none; clear: none; @@ -1348,19 +1348,19 @@ img.mfp-img { } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { margin-top: 0px; } -.fl-node-38ejkdz2v4cq > .fl-col-content { +.testimonials-header-col > .fl-col-content { padding-top: 130px; padding-bottom: 60px; } @media ( max-width: 860px ) { - .fl-node-38ejkdz2v4cq.fl-col > .fl-col-content { + .testimonials-header-col.fl-col > .fl-col-content { padding-top: 50px; padding-bottom: 0px; } diff --git a/themes/beaver/layouts/partials/page/testimonials.html b/themes/beaver/layouts/partials/page/testimonials.html index e705acf34..72f3c3af9 100644 --- a/themes/beaver/layouts/partials/page/testimonials.html +++ b/themes/beaver/layouts/partials/page/testimonials.html @@ -14,7 +14,7 @@ class="fl-col-group testimonials-header fl-col-group-custom-width" data-node="1a4igunq3xvj">
Date: Sun, 19 Jul 2026 03:03:47 +0200 Subject: [PATCH 03/22] refactor(css): C2.1 re-key fl-node-byg0v6ftixrd -> testimonials-label Class rename only; gate: all bundles byte-identical after reverse substitution (clean-destination rebuild). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/components/testimonials.css | 4 ++-- themes/beaver/layouts/partials/page/testimonials.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/themes/beaver/assets/css/components/testimonials.css b/themes/beaver/assets/css/components/testimonials.css index 81ac51f66..aeac3d3b8 100644 --- a/themes/beaver/assets/css/components/testimonials.css +++ b/themes/beaver/assets/css/components/testimonials.css @@ -42,12 +42,12 @@ -.fl-builder-content .fl-node-byg0v6ftixrd .fl-module-content .fl-rich-text, .fl-builder-content .fl-node-byg0v6ftixrd .fl-module-content .fl-rich-text * { +.fl-builder-content .testimonials-label .fl-module-content .fl-rich-text, .fl-builder-content .testimonials-label .fl-module-content .fl-rich-text * { color: var(--color-primary); } -.fl-builder-content .fl-node-byg0v6ftixrd .fl-rich-text, .fl-builder-content .fl-node-byg0v6ftixrd .fl-rich-text *:not(b, strong) { +.fl-builder-content .testimonials-label .fl-rich-text, .fl-builder-content .testimonials-label .fl-rich-text *:not(b, strong) { font-weight: 600; text-align: center; } diff --git a/themes/beaver/layouts/partials/page/testimonials.html b/themes/beaver/layouts/partials/page/testimonials.html index 72f3c3af9..daabba4cf 100644 --- a/themes/beaver/layouts/partials/page/testimonials.html +++ b/themes/beaver/layouts/partials/page/testimonials.html @@ -18,7 +18,7 @@ data-node="38ejkdz2v4cq">
From 974a65b8f160f5096d9f8a9bcc06aff96f280901 Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:06:02 +0200 Subject: [PATCH 04/22] refactor(css): C2.1 re-key fl-node-ud8jroeig5h2 -> testimonials-heading Class rename only; gate: converged builds, all bundles byte-identical after reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/components/testimonials.css | 4 ++-- themes/beaver/assets/css/pages/about-us.css | 4 ++-- themes/beaver/assets/css/pages/clients.css | 4 ++-- themes/beaver/assets/css/pages/homepage.css | 8 ++++---- themes/beaver/assets/css/pages/services.css | 4 ++-- themes/beaver/assets/css/pages/single-service.css | 4 ++-- themes/beaver/assets/css/pages/single-use-cases.css | 4 ++-- themes/beaver/assets/css/pages/use-cases.css | 4 ++-- themes/beaver/layouts/partials/page/testimonials.html | 2 +- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/themes/beaver/assets/css/components/testimonials.css b/themes/beaver/assets/css/components/testimonials.css index aeac3d3b8..705872381 100644 --- a/themes/beaver/assets/css/components/testimonials.css +++ b/themes/beaver/assets/css/components/testimonials.css @@ -53,12 +53,12 @@ } -.fl-node-ud8jroeig5h2.fl-module-heading .fl-heading { +.testimonials-heading.fl-module-heading .fl-heading { text-align: center; } -.fl-node-ud8jroeig5h2 > .fl-module-content { +.testimonials-heading > .fl-module-content { margin-top: 30px; margin-right: 100px; margin-left: 100px; diff --git a/themes/beaver/assets/css/pages/about-us.css b/themes/beaver/assets/css/pages/about-us.css index 4bcc64d75..b4b01387f 100644 --- a/themes/beaver/assets/css/pages/about-us.css +++ b/themes/beaver/assets/css/pages/about-us.css @@ -2834,7 +2834,7 @@ img.mfp-img { @media ( max-width: 1115px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-right: 50px; margin-left: 50px; } @@ -2842,7 +2842,7 @@ img.mfp-img { @media ( max-width: 860px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-top: 10px; margin-right: 0px; margin-left: 0px; diff --git a/themes/beaver/assets/css/pages/clients.css b/themes/beaver/assets/css/pages/clients.css index 4e70401b1..33c086cde 100644 --- a/themes/beaver/assets/css/pages/clients.css +++ b/themes/beaver/assets/css/pages/clients.css @@ -3372,7 +3372,7 @@ img.mfp-img { @media ( max-width: 1115px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-right: 50px; margin-left: 50px; } @@ -3380,7 +3380,7 @@ img.mfp-img { @media ( max-width: 860px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-top: 10px; margin-right: 0px; margin-left: 0px; diff --git a/themes/beaver/assets/css/pages/homepage.css b/themes/beaver/assets/css/pages/homepage.css index 1b66982af..94fc3a58b 100644 --- a/themes/beaver/assets/css/pages/homepage.css +++ b/themes/beaver/assets/css/pages/homepage.css @@ -765,7 +765,7 @@ @media ( max-width: 1115px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-right: 50px; margin-left: 50px; } @@ -773,7 +773,7 @@ @media ( max-width: 860px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-top: 10px; margin-right: 0px; margin-left: 0px; @@ -8982,7 +8982,7 @@ body .pp-post-feed-meta { @media ( max-width: 1115px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-right: 50px; margin-left: 50px; } @@ -8990,7 +8990,7 @@ body .pp-post-feed-meta { @media ( max-width: 860px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-top: 10px; margin-right: 0px; margin-left: 0px; diff --git a/themes/beaver/assets/css/pages/services.css b/themes/beaver/assets/css/pages/services.css index 8783a0e81..bde42ab4a 100644 --- a/themes/beaver/assets/css/pages/services.css +++ b/themes/beaver/assets/css/pages/services.css @@ -4375,7 +4375,7 @@ img.mfp-img { @media ( max-width: 1115px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-right: 0px; margin-left: 0px; } @@ -4383,7 +4383,7 @@ img.mfp-img { @media ( max-width: 860px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-top: 10px; margin-right: 0px; margin-left: 0px; diff --git a/themes/beaver/assets/css/pages/single-service.css b/themes/beaver/assets/css/pages/single-service.css index c79aa3b26..55b34983b 100644 --- a/themes/beaver/assets/css/pages/single-service.css +++ b/themes/beaver/assets/css/pages/single-service.css @@ -3471,7 +3471,7 @@ body .pp-post-feed-meta { @media ( max-width: 1115px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-right: 0px; margin-left: 0px; } @@ -3479,7 +3479,7 @@ body .pp-post-feed-meta { @media ( max-width: 860px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-top: 10px; margin-right: 0px; margin-left: 0px; diff --git a/themes/beaver/assets/css/pages/single-use-cases.css b/themes/beaver/assets/css/pages/single-use-cases.css index d2a106697..956c75ab2 100644 --- a/themes/beaver/assets/css/pages/single-use-cases.css +++ b/themes/beaver/assets/css/pages/single-use-cases.css @@ -3317,7 +3317,7 @@ body .pp-post-feed-meta { @media ( max-width: 1115px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-right: 50px; margin-left: 50px; } @@ -3325,7 +3325,7 @@ body .pp-post-feed-meta { @media ( max-width: 860px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-top: 10px; margin-right: 0px; margin-left: 0px; diff --git a/themes/beaver/assets/css/pages/use-cases.css b/themes/beaver/assets/css/pages/use-cases.css index 54e765093..eb8725142 100644 --- a/themes/beaver/assets/css/pages/use-cases.css +++ b/themes/beaver/assets/css/pages/use-cases.css @@ -2209,7 +2209,7 @@ img.mfp-img { @media ( max-width: 1115px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-right: 50px; margin-left: 50px; } @@ -2217,7 +2217,7 @@ img.mfp-img { @media ( max-width: 860px ) { - .fl-node-ud8jroeig5h2.fl-module > .fl-module-content { + .testimonials-heading.fl-module > .fl-module-content { margin-top: 10px; margin-right: 0px; margin-left: 0px; diff --git a/themes/beaver/layouts/partials/page/testimonials.html b/themes/beaver/layouts/partials/page/testimonials.html index daabba4cf..d7a875ebc 100644 --- a/themes/beaver/layouts/partials/page/testimonials.html +++ b/themes/beaver/layouts/partials/page/testimonials.html @@ -27,7 +27,7 @@

From 5ac7ec2699e1f95a141f610fe178442a8960dee0 Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:06:53 +0200 Subject: [PATCH 05/22] refactor(css): C2.1 re-key fl-node-1i28o7dq3pcv -> testimonials-subheading Class rename only; gate: converged builds, all bundles byte-identical after reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/components/testimonials.css | 6 +++--- themes/beaver/layouts/partials/page/testimonials.html | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/themes/beaver/assets/css/components/testimonials.css b/themes/beaver/assets/css/components/testimonials.css index 705872381..4da0ec4af 100644 --- a/themes/beaver/assets/css/components/testimonials.css +++ b/themes/beaver/assets/css/components/testimonials.css @@ -65,16 +65,16 @@ } -.fl-builder-content .fl-node-1i28o7dq3pcv .fl-rich-text, .fl-builder-content .fl-node-1i28o7dq3pcv .fl-rich-text *:not(b, strong) { +.fl-builder-content .testimonials-subheading .fl-rich-text, .fl-builder-content .testimonials-subheading .fl-rich-text *:not(b, strong) { text-align: center; } -.fl-node-1i28o7dq3pcv > .fl-module-content { +.testimonials-subheading > .fl-module-content { margin-top: 20px; }@media ( max-width: 860px ) { - .fl-node-1i28o7dq3pcv.fl-module > .fl-module-content { + .testimonials-subheading.fl-module > .fl-module-content { margin-top: 15px; }} diff --git a/themes/beaver/layouts/partials/page/testimonials.html b/themes/beaver/layouts/partials/page/testimonials.html index d7a875ebc..37d88a815 100644 --- a/themes/beaver/layouts/partials/page/testimonials.html +++ b/themes/beaver/layouts/partials/page/testimonials.html @@ -38,7 +38,7 @@

From fc6d4fbee795e74eaae75ab0f086a00eb4a2badd Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:07:46 +0200 Subject: [PATCH 06/22] refactor(css): C2.1 re-key fl-node-c17gwsk2h8zy -> testimonials-rating Class rename only; gate: converged builds, all bundles byte-identical after reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/components/testimonials.css | 4 ++-- themes/beaver/layouts/partials/page/testimonials.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/themes/beaver/assets/css/components/testimonials.css b/themes/beaver/assets/css/components/testimonials.css index 4da0ec4af..8b07f2548 100644 --- a/themes/beaver/assets/css/components/testimonials.css +++ b/themes/beaver/assets/css/components/testimonials.css @@ -80,12 +80,12 @@ -.fl-builder-content .fl-node-c17gwsk2h8zy .fl-rich-text, .fl-builder-content .fl-node-c17gwsk2h8zy .fl-rich-text *:not(b, strong) { +.fl-builder-content .testimonials-rating .fl-rich-text, .fl-builder-content .testimonials-rating .fl-rich-text *:not(b, strong) { font-size: 20px; text-align: right; }@media (max-width: 860px) { - .fl-builder-content .fl-node-c17gwsk2h8zy .fl-rich-text, .fl-builder-content .fl-node-c17gwsk2h8zy .fl-rich-text *:not(b, strong) { + .fl-builder-content .testimonials-rating .fl-rich-text, .fl-builder-content .testimonials-rating .fl-rich-text *:not(b, strong) { text-align: center; }} diff --git a/themes/beaver/layouts/partials/page/testimonials.html b/themes/beaver/layouts/partials/page/testimonials.html index 37d88a815..74f9c5886 100644 --- a/themes/beaver/layouts/partials/page/testimonials.html +++ b/themes/beaver/layouts/partials/page/testimonials.html @@ -130,7 +130,7 @@

From e27c8d9a642b206c24f4871b83c859c756d32abd Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:08:45 +0200 Subject: [PATCH 07/22] refactor(css): C2.1 re-key fl-node-d4wp9kxy1uav -> testimonials-rating-count Class rename only; gate: converged builds, all bundles byte-identical after reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/components/testimonials.css | 8 ++++---- themes/beaver/layouts/partials/page/testimonials.html | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/themes/beaver/assets/css/components/testimonials.css b/themes/beaver/assets/css/components/testimonials.css index 8b07f2548..1f718d11f 100644 --- a/themes/beaver/assets/css/components/testimonials.css +++ b/themes/beaver/assets/css/components/testimonials.css @@ -91,22 +91,22 @@ -.fl-builder-content .fl-node-d4wp9kxy1uav .fl-rich-text, .fl-builder-content .fl-node-d4wp9kxy1uav .fl-rich-text *:not(b, strong) { +.fl-builder-content .testimonials-rating-count .fl-rich-text, .fl-builder-content .testimonials-rating-count .fl-rich-text *:not(b, strong) { font-size: 16px; text-align: right; }@media (max-width: 860px) { - .fl-builder-content .fl-node-d4wp9kxy1uav .fl-rich-text, .fl-builder-content .fl-node-d4wp9kxy1uav .fl-rich-text *:not(b, strong) { + .fl-builder-content .testimonials-rating-count .fl-rich-text, .fl-builder-content .testimonials-rating-count .fl-rich-text *:not(b, strong) { text-align: center; }} -.fl-node-d4wp9kxy1uav > .fl-module-content { +.testimonials-rating-count > .fl-module-content { margin-top: 10px; }@media (max-width: 860px) { - .fl-node-d4wp9kxy1uav > .fl-module-content { + .testimonials-rating-count > .fl-module-content { margin-top: 0px; }} diff --git a/themes/beaver/layouts/partials/page/testimonials.html b/themes/beaver/layouts/partials/page/testimonials.html index 74f9c5886..d7166c359 100644 --- a/themes/beaver/layouts/partials/page/testimonials.html +++ b/themes/beaver/layouts/partials/page/testimonials.html @@ -144,7 +144,7 @@

From 9736a85a8d31deb4eb5f17add0a4af04354ba386 Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:09:33 +0200 Subject: [PATCH 08/22] refactor(css): C2.1 re-key fl-node-q4x2z8f9l1k3 -> testimonials-reviews-section Class rename only; gate: converged builds, all bundles byte-identical after reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/layouts/partials/page/testimonials.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/beaver/layouts/partials/page/testimonials.html b/themes/beaver/layouts/partials/page/testimonials.html index d7166c359..8e1e06163 100644 --- a/themes/beaver/layouts/partials/page/testimonials.html +++ b/themes/beaver/layouts/partials/page/testimonials.html @@ -156,7 +156,7 @@

Date: Sun, 19 Jul 2026 03:10:22 +0200 Subject: [PATCH 09/22] refactor(css): C2.1 re-key fl-node-zaerhibqp296 -> testimonials-quote-col Class rename only; gate: converged builds, all bundles byte-identical after reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/components/testimonials.css | 8 ++++---- themes/beaver/layouts/partials/page/testimonials.html | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/themes/beaver/assets/css/components/testimonials.css b/themes/beaver/assets/css/components/testimonials.css index 1f718d11f..2eaeb0e2b 100644 --- a/themes/beaver/assets/css/components/testimonials.css +++ b/themes/beaver/assets/css/components/testimonials.css @@ -19,11 +19,11 @@ -.fl-node-zaerhibqp296 { +.testimonials-quote-col { width: 100%; }@media (max-width: 860px) { - .fl-builder-content .fl-node-zaerhibqp296 { + .fl-builder-content .testimonials-quote-col { width: 100% !important; max-width: none; clear: none; @@ -32,11 +32,11 @@ -.fl-node-zaerhibqp296 > .fl-col-content { +.testimonials-quote-col > .fl-col-content { padding-top: 60px; }@media ( max-width: 860px ) { - .fl-node-zaerhibqp296.fl-col > .fl-col-content { + .testimonials-quote-col.fl-col > .fl-col-content { padding-top: 30px; }} diff --git a/themes/beaver/layouts/partials/page/testimonials.html b/themes/beaver/layouts/partials/page/testimonials.html index 8e1e06163..2b66341cb 100644 --- a/themes/beaver/layouts/partials/page/testimonials.html +++ b/themes/beaver/layouts/partials/page/testimonials.html @@ -159,7 +159,7 @@

class="fl-col-group testimonials-reviews-section fl-col-group-custom-width" data-node="q4x2z8f9l1k3">
Date: Sun, 19 Jul 2026 03:16:24 +0200 Subject: [PATCH 10/22] refactor(css): C2.1 re-key fl-node-08kl1yzxeout -> testimonials-reviews (+ purge safelist companion) The reviews-module rename needs a safelist companion: PowerPack runtime classes (pp-swiper-button, pp-review-image) are never in hugo_stats.json and pre-C2 survived PurgeCSS only because their selectors contained an fl-node-* class, which /^fl-node/ keeps greedily. New greedy entries /^testimonials-/ + /^cta-banner/ give semantic component prefixes the same protection (precedent: /^use-cases/ already in the list). C2.1 COMPLETE: all 10 testimonial nodes semantic. Gate: every compiled bundle byte-identical after reverse substitution - pixel parity by construction. Discovered for Paul (follow-up, NOT shipped): .jt-reviews-box swiper arrow styling (hover arrows at 44%, bottom placement) has been silently purged in production all along - pp-swiper classes are runtime-only and those selectors have no shield. Restoring it = intentional visual change; needs a design decision. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- postcss.config.js | 5 + .../assets/css/components/testimonials.css | 170 +++++++++--------- .../assets/css/critical/about-us-critical.css | 4 +- .../assets/css/critical/clients-critical.css | 2 +- .../assets/css/critical/homepage-critical.css | 4 +- .../assets/css/critical/single-services.css | 2 +- .../assets/css/critical/single-use-cases.css | 2 +- .../layouts/partials/page/testimonials.html | 2 +- 8 files changed, 98 insertions(+), 93 deletions(-) diff --git a/postcss.config.js b/postcss.config.js index 95433892d..44f3b7ebb 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -43,6 +43,11 @@ const purgecss = createPurgeCss({ greedy: [ /^swiper-/, /^is-/, /^has-/, /^js-/, /^fl-builder-content/, /^fl-col/, /^fl-node/, /^technologies-component/, /^footer-component/, /^use-cases/, + // C2 de-obfuscation: semantic component prefixes inherit the greedy + // protection their selectors previously got from /^fl-node/ (PowerPack + // runtime classes like pp-swiper-button/pp-review-image are never in + // hugo_stats.json, so without this the renamed rules get purged). + /^testimonials-/, /^cta-banner/, // Brand CTA buttons — preserve any selector mentioning these classes. // Standard safelist didn't catch tag+class compound selectors like // `a.fl-button` on CI (produced blue pills instead of Ruby red). diff --git a/themes/beaver/assets/css/components/testimonials.css b/themes/beaver/assets/css/components/testimonials.css index 2eaeb0e2b..fcd0f0dc2 100644 --- a/themes/beaver/assets/css/components/testimonials.css +++ b/themes/beaver/assets/css/components/testimonials.css @@ -360,93 +360,93 @@ } -.fl-node-08kl1yzxeout .pp-reviews-wrapper { +.testimonials-reviews .pp-reviews-wrapper { } -.fl-node-08kl1yzxeout .pp-review { +.testimonials-reviews .pp-review { padding: 25px; background-color: #F5F6F8; } -.fl-node-08kl1yzxeout .pp-review:hover { +.testimonials-reviews .pp-review:hover { background-color: #F5F6F8; } -.fl-node-08kl1yzxeout .pp-review-header { +.testimonials-reviews .pp-review-header { } -.fl-node-08kl1yzxeout .pp-review-name { +.testimonials-reviews .pp-review-name { margin-top: 25px; margin-bottom: 0px; } -.fl-node-08kl1yzxeout .pp-review-title { +.testimonials-reviews .pp-review-title { margin-top: 10px; margin-bottom: 0px; } -.fl-node-08kl1yzxeout .pp-review-text { +.testimonials-reviews .pp-review-text { margin-top: 35px; margin-bottom: 0px; } -.fl-node-08kl1yzxeout .pp-review-link a { +.testimonials-reviews .pp-review-link a { } -.fl-node-08kl1yzxeout .pp-review-link a:hover { +.testimonials-reviews .pp-review-link a:hover { } -.fl-node-08kl1yzxeout .pp-review:hover .pp-review-header { +.testimonials-reviews .pp-review:hover .pp-review-header { } -.fl-node-08kl1yzxeout .pp-review-image { +.testimonials-reviews .pp-review-image { align-self: flex-start; } -.fl-node-08kl1yzxeout .pp-review-image img { +.testimonials-reviews .pp-review-image img { width: 36px; height: 36px; } -.fl-node-08kl1yzxeout .pp-review-cite { +.testimonials-reviews .pp-review-cite { margin-left: 10px; } -.fl-node-08kl1yzxeout .pp-review-icon { +.testimonials-reviews .pp-review-icon { align-self: flex-start; } -.fl-node-08kl1yzxeout .swiper-pagination-bullet { +.testimonials-reviews .swiper-pagination-bullet { background: #999999; } -.fl-node-08kl1yzxeout .swiper-pagination-bullet-active { +.testimonials-reviews .swiper-pagination-bullet-active { background: #000000; } -.fl-node-08kl1yzxeout .pp-swiper-button svg { +.testimonials-reviews .pp-swiper-button svg { width: 48px; height: 48px; } -.fl-node-08kl1yzxeout .pp-swiper-button { +.testimonials-reviews .pp-swiper-button { color: #000000; padding-left: 13px; padding-right: 13px; @@ -456,247 +456,247 @@ } -.fl-node-08kl1yzxeout .pp-swiper-button:hover { +.testimonials-reviews .pp-swiper-button:hover { } -.fl-node-08kl1yzxeout .pp-swiper-button-prev { +.testimonials-reviews .pp-swiper-button-prev { } -.fl-node-08kl1yzxeout .pp-swiper-button-next { +.testimonials-reviews .pp-swiper-button-next { } -.fl-node-08kl1yzxeout .swiper-pagination-bullet { +.testimonials-reviews .swiper-pagination-bullet { width: 10px; height: 10px; border-radius: 100px; } -.fl-node-08kl1yzxeout .pp-review .pp-review-icon i { +.testimonials-reviews .pp-review .pp-review-icon i { } -.fl-node-08kl1yzxeout .pp-review:hover .pp-review-icon i { +.testimonials-reviews .pp-review:hover .pp-review-icon i { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review { +.testimonials-reviews .pp-review-item-0 .pp-review { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review:hover { +.testimonials-reviews .pp-review-item-0 .pp-review:hover { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review:hover .pp-review-header { +.testimonials-reviews .pp-review-item-0 .pp-review:hover .pp-review-header { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review .pp-review-icon i { +.testimonials-reviews .pp-review-item-0 .pp-review .pp-review-icon i { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review:hover .pp-review-icon i { +.testimonials-reviews .pp-review-item-0 .pp-review:hover .pp-review-icon i { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review-header { +.testimonials-reviews .pp-review-item-0 .pp-review-header { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review-name { +.testimonials-reviews .pp-review-item-0 .pp-review-name { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review:hover .pp-review-name { +.testimonials-reviews .pp-review-item-0 .pp-review:hover .pp-review-name { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review-title { +.testimonials-reviews .pp-review-item-0 .pp-review-title { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review:hover .pp-review-title { +.testimonials-reviews .pp-review-item-0 .pp-review:hover .pp-review-title { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review-content { +.testimonials-reviews .pp-review-item-0 .pp-review-content { } -.fl-node-08kl1yzxeout .pp-review-item-0 .pp-review:hover .pp-review-content { +.testimonials-reviews .pp-review-item-0 .pp-review:hover .pp-review-content { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review { +.testimonials-reviews .pp-review-item-1 .pp-review { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review:hover { +.testimonials-reviews .pp-review-item-1 .pp-review:hover { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review:hover .pp-review-header { +.testimonials-reviews .pp-review-item-1 .pp-review:hover .pp-review-header { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review .pp-review-icon i { +.testimonials-reviews .pp-review-item-1 .pp-review .pp-review-icon i { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review:hover .pp-review-icon i { +.testimonials-reviews .pp-review-item-1 .pp-review:hover .pp-review-icon i { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review-header { +.testimonials-reviews .pp-review-item-1 .pp-review-header { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review-name { +.testimonials-reviews .pp-review-item-1 .pp-review-name { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review:hover .pp-review-name { +.testimonials-reviews .pp-review-item-1 .pp-review:hover .pp-review-name { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review-title { +.testimonials-reviews .pp-review-item-1 .pp-review-title { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review:hover .pp-review-title { +.testimonials-reviews .pp-review-item-1 .pp-review:hover .pp-review-title { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review-content { +.testimonials-reviews .pp-review-item-1 .pp-review-content { } -.fl-node-08kl1yzxeout .pp-review-item-1 .pp-review:hover .pp-review-content { +.testimonials-reviews .pp-review-item-1 .pp-review:hover .pp-review-content { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review { +.testimonials-reviews .pp-review-item-2 .pp-review { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review:hover { +.testimonials-reviews .pp-review-item-2 .pp-review:hover { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review:hover .pp-review-header { +.testimonials-reviews .pp-review-item-2 .pp-review:hover .pp-review-header { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review .pp-review-icon i { +.testimonials-reviews .pp-review-item-2 .pp-review .pp-review-icon i { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review:hover .pp-review-icon i { +.testimonials-reviews .pp-review-item-2 .pp-review:hover .pp-review-icon i { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review-header { +.testimonials-reviews .pp-review-item-2 .pp-review-header { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review-name { +.testimonials-reviews .pp-review-item-2 .pp-review-name { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review:hover .pp-review-name { +.testimonials-reviews .pp-review-item-2 .pp-review:hover .pp-review-name { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review-title { +.testimonials-reviews .pp-review-item-2 .pp-review-title { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review:hover .pp-review-title { +.testimonials-reviews .pp-review-item-2 .pp-review:hover .pp-review-title { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review-content { +.testimonials-reviews .pp-review-item-2 .pp-review-content { } -.fl-node-08kl1yzxeout .pp-review-item-2 .pp-review:hover .pp-review-content { +.testimonials-reviews .pp-review-item-2 .pp-review:hover .pp-review-content { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review { +.testimonials-reviews .pp-review-item-3 .pp-review { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review:hover { +.testimonials-reviews .pp-review-item-3 .pp-review:hover { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review:hover .pp-review-header { +.testimonials-reviews .pp-review-item-3 .pp-review:hover .pp-review-header { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review .pp-review-icon i { +.testimonials-reviews .pp-review-item-3 .pp-review .pp-review-icon i { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review:hover .pp-review-icon i { +.testimonials-reviews .pp-review-item-3 .pp-review:hover .pp-review-icon i { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review-header { +.testimonials-reviews .pp-review-item-3 .pp-review-header { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review-name { +.testimonials-reviews .pp-review-item-3 .pp-review-name { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review:hover .pp-review-name { +.testimonials-reviews .pp-review-item-3 .pp-review:hover .pp-review-name { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review-title { +.testimonials-reviews .pp-review-item-3 .pp-review-title { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review:hover .pp-review-title { +.testimonials-reviews .pp-review-item-3 .pp-review:hover .pp-review-title { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review-content { +.testimonials-reviews .pp-review-item-3 .pp-review-content { } -.fl-node-08kl1yzxeout .pp-review-item-3 .pp-review:hover .pp-review-content { +.testimonials-reviews .pp-review-item-3 .pp-review:hover .pp-review-content { } -.fl-node-08kl1yzxeout .pp-rating { +.testimonials-reviews .pp-rating { text-align: left; } -.fl-node-08kl1yzxeout .pp-rating i { +.testimonials-reviews .pp-rating i { font-size: 30px; color: #efecdc; } -.fl-node-08kl1yzxeout .pp-rating i:before { +.testimonials-reviews .pp-rating i:before { color: #f0ad4e; } -.fl-node-08kl1yzxeout .pp-rating i:not(.pp-star-empty):before { +.testimonials-reviews .pp-rating i:not(.pp-star-empty):before { content: "\002605"; } -.fl-node-08kl1yzxeout .pp-review { +.testimonials-reviews .pp-review { border-style: none; border-width: 0; background-clip: border-box; @@ -708,21 +708,21 @@ } -.fl-node-08kl1yzxeout .pp-review-name { +.testimonials-reviews .pp-review-name { font-family: var(--font-system-ui); font-weight: 800; font-size: 18px; } -.fl-node-08kl1yzxeout .pp-review-title { +.testimonials-reviews .pp-review-title { font-family: var(--font-system-ui); font-weight: 300; font-size: 16px; } -.fl-node-08kl1yzxeout .pp-review-text { +.testimonials-reviews .pp-review-text { font-family: var(--font-system-ui); font-weight: 300; font-size: 18px; @@ -730,27 +730,27 @@ } -.fl-node-08kl1yzxeout .pp-rating i { +.testimonials-reviews .pp-rating i { font-size: 30px; } -.fl-node-08kl1yzxeout .pp-review-image img { +.testimonials-reviews .pp-review-image img { height: 36px; } -.fl-node-08kl1yzxeout .swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet { +.testimonials-reviews .swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet { margin-left: 5px; margin-right: 5px; } -.fl-node-08kl1yzxeout .swiper-pagination { +.testimonials-reviews .swiper-pagination { margin-top: 5px; } -.fl-node-08kl1yzxeout .pp-review-icon i:before { +.testimonials-reviews .pp-review-icon i:before { font-size: 0px; } \ No newline at end of file diff --git a/themes/beaver/assets/css/critical/about-us-critical.css b/themes/beaver/assets/css/critical/about-us-critical.css index 296f76db9..6d8963df8 100644 --- a/themes/beaver/assets/css/critical/about-us-critical.css +++ b/themes/beaver/assets/css/critical/about-us-critical.css @@ -45,7 +45,7 @@ .pp-reviews-wrapper .pp-swiper-button-next { right: 0; } -.fl-node-08kl1yzxeout .pp-swiper-button { +.testimonials-reviews .pp-swiper-button { color: #000; padding-left: 13px; padding-right: 13px; @@ -616,7 +616,7 @@ width: 37px; height: 37px; } -.fl-node-08kl1yzxeout .pp-swiper-button svg { +.testimonials-reviews .pp-swiper-button svg { width: 24px; height: 24px; } diff --git a/themes/beaver/assets/css/critical/clients-critical.css b/themes/beaver/assets/css/critical/clients-critical.css index 3b788fd21..f42a9ab86 100644 --- a/themes/beaver/assets/css/critical/clients-critical.css +++ b/themes/beaver/assets/css/critical/clients-critical.css @@ -205,7 +205,7 @@ } /* PowerPack reviews swiper button styling */ -.fl-node-08kl1yzxeout .pp-swiper-button svg { +.testimonials-reviews .pp-swiper-button svg { width: 24px; height: 24px; } diff --git a/themes/beaver/assets/css/critical/homepage-critical.css b/themes/beaver/assets/css/critical/homepage-critical.css index 980165b1d..e864903cc 100644 --- a/themes/beaver/assets/css/critical/homepage-critical.css +++ b/themes/beaver/assets/css/critical/homepage-critical.css @@ -149,7 +149,7 @@ .pp-reviews-wrapper .pp-swiper-button-next { right: 0; } -.fl-node-08kl1yzxeout .pp-swiper-button { +.testimonials-reviews .pp-swiper-button { color: #000; padding-left: 13px; padding-right: 13px; @@ -1503,7 +1503,7 @@ width: 37px; height: 37px; } -.fl-node-08kl1yzxeout .pp-swiper-button svg { +.testimonials-reviews .pp-swiper-button svg { width: 24px; height: 24px; } diff --git a/themes/beaver/assets/css/critical/single-services.css b/themes/beaver/assets/css/critical/single-services.css index 66fbf1cd4..233d90b02 100644 --- a/themes/beaver/assets/css/critical/single-services.css +++ b/themes/beaver/assets/css/critical/single-services.css @@ -461,7 +461,7 @@ width: 37px; height: 37px; } -.fl-node-08kl1yzxeout .pp-swiper-button svg { +.testimonials-reviews .pp-swiper-button svg { width: 24px; height: 24px; } diff --git a/themes/beaver/assets/css/critical/single-use-cases.css b/themes/beaver/assets/css/critical/single-use-cases.css index 02ece90d7..1c6397844 100644 --- a/themes/beaver/assets/css/critical/single-use-cases.css +++ b/themes/beaver/assets/css/critical/single-use-cases.css @@ -477,7 +477,7 @@ width: 37px; height: 37px; } -.fl-node-08kl1yzxeout .pp-swiper-button svg { +.testimonials-reviews .pp-swiper-button svg { width: 24px; height: 24px; } diff --git a/themes/beaver/layouts/partials/page/testimonials.html b/themes/beaver/layouts/partials/page/testimonials.html index 2b66341cb..d55140e44 100644 --- a/themes/beaver/layouts/partials/page/testimonials.html +++ b/themes/beaver/layouts/partials/page/testimonials.html @@ -163,7 +163,7 @@

data-node="zaerhibqp296">
From 7f365a437d81f3dd83b5e4c1080a552713953006 Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:21:22 +0200 Subject: [PATCH 11/22] refactor(css): C2.2 re-key fl-node-rujwd9mzxche -> cta-banner-eyebrow Class rename only; gate: converged builds, all bundles byte-identical after guarded reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/pages/about-us.css | 4 ++-- themes/beaver/assets/css/pages/homepage.css | 8 ++++---- themes/beaver/assets/css/pages/single-service.css | 4 ++-- themes/beaver/assets/css/pages/single-use-cases.css | 4 ++-- themes/beaver/assets/css/pages/use-cases.css | 4 ++-- themes/beaver/layouts/home.html | 2 +- themes/beaver/layouts/page/use-cases.html | 2 +- themes/beaver/layouts/partials/page/cta.html | 2 +- themes/beaver/layouts/services/single.html | 2 +- themes/beaver/layouts/use-cases/single.html | 2 +- 10 files changed, 17 insertions(+), 17 deletions(-) diff --git a/themes/beaver/assets/css/pages/about-us.css b/themes/beaver/assets/css/pages/about-us.css index b4b01387f..acc0de7b9 100644 --- a/themes/beaver/assets/css/pages/about-us.css +++ b/themes/beaver/assets/css/pages/about-us.css @@ -3026,12 +3026,12 @@ img.mfp-img { } -.fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text * { +.fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text * { color: var(--color-primary); } -.fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text *:not(b, strong) { +.fl-builder-content .cta-banner-eyebrow .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-rich-text *:not(b, strong) { font-weight: 600; text-align: center; } diff --git a/themes/beaver/assets/css/pages/homepage.css b/themes/beaver/assets/css/pages/homepage.css index 94fc3a58b..29d6abc61 100644 --- a/themes/beaver/assets/css/pages/homepage.css +++ b/themes/beaver/assets/css/pages/homepage.css @@ -866,12 +866,12 @@ } -.fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text * { +.fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text * { color: var(--color-primary); } -.fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text *:not(b, strong) { +.fl-builder-content .cta-banner-eyebrow .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-rich-text *:not(b, strong) { font-weight: 600; text-align: center; } @@ -9083,12 +9083,12 @@ body .pp-post-feed-meta { } -.fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text * { +.fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text * { color: var(--color-primary); } -.fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text *:not(b, strong) { +.fl-builder-content .cta-banner-eyebrow .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-rich-text *:not(b, strong) { font-weight: 600; text-align: center; } diff --git a/themes/beaver/assets/css/pages/single-service.css b/themes/beaver/assets/css/pages/single-service.css index 55b34983b..f31398012 100644 --- a/themes/beaver/assets/css/pages/single-service.css +++ b/themes/beaver/assets/css/pages/single-service.css @@ -3663,12 +3663,12 @@ body .pp-post-feed-meta { } -.fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text * { +.fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text * { color: var(--color-primary); } -.fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text *:not(b, strong) { +.fl-builder-content .cta-banner-eyebrow .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-rich-text *:not(b, strong) { font-weight: 600; text-align: center; } diff --git a/themes/beaver/assets/css/pages/single-use-cases.css b/themes/beaver/assets/css/pages/single-use-cases.css index 956c75ab2..9a3c93af4 100644 --- a/themes/beaver/assets/css/pages/single-use-cases.css +++ b/themes/beaver/assets/css/pages/single-use-cases.css @@ -3509,12 +3509,12 @@ body .pp-post-feed-meta { } -.fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text * { +.fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text * { color: var(--color-primary); } -.fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text *:not(b, strong) { +.fl-builder-content .cta-banner-eyebrow .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-rich-text *:not(b, strong) { font-weight: 600; text-align: center; } diff --git a/themes/beaver/assets/css/pages/use-cases.css b/themes/beaver/assets/css/pages/use-cases.css index eb8725142..d660f6169 100644 --- a/themes/beaver/assets/css/pages/use-cases.css +++ b/themes/beaver/assets/css/pages/use-cases.css @@ -2401,12 +2401,12 @@ img.mfp-img { } -.fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-module-content .fl-rich-text * { +.fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-module-content .fl-rich-text * { color: var(--color-primary); } -.fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text, .fl-builder-content .fl-node-rujwd9mzxche .fl-rich-text *:not(b, strong) { +.fl-builder-content .cta-banner-eyebrow .fl-rich-text, .fl-builder-content .cta-banner-eyebrow .fl-rich-text *:not(b, strong) { font-weight: 600; text-align: center; } diff --git a/themes/beaver/layouts/home.html b/themes/beaver/layouts/home.html index e85aa794a..f7ba6804a 100644 --- a/themes/beaver/layouts/home.html +++ b/themes/beaver/layouts/home.html @@ -1082,7 +1082,7 @@

data-node="8x91uqrnkeb7">
diff --git a/themes/beaver/layouts/page/use-cases.html b/themes/beaver/layouts/page/use-cases.html index 2ade3cbc0..56da269ec 100644 --- a/themes/beaver/layouts/page/use-cases.html +++ b/themes/beaver/layouts/page/use-cases.html @@ -101,7 +101,7 @@ data-node="7l8hya5ixfdo">
diff --git a/themes/beaver/layouts/partials/page/cta.html b/themes/beaver/layouts/partials/page/cta.html index 771ca03cc..46fe99be0 100644 --- a/themes/beaver/layouts/partials/page/cta.html +++ b/themes/beaver/layouts/partials/page/cta.html @@ -8,7 +8,7 @@ data-node="fdsvgxpowi03">
diff --git a/themes/beaver/layouts/services/single.html b/themes/beaver/layouts/services/single.html index ff592f96a..07126200f 100644 --- a/themes/beaver/layouts/services/single.html +++ b/themes/beaver/layouts/services/single.html @@ -397,7 +397,7 @@

data-node="gmrn0lw6918p">
diff --git a/themes/beaver/layouts/use-cases/single.html b/themes/beaver/layouts/use-cases/single.html index 7273d81f6..03fbeb607 100644 --- a/themes/beaver/layouts/use-cases/single.html +++ b/themes/beaver/layouts/use-cases/single.html @@ -344,7 +344,7 @@

data-node="mgnli9p56eku">
From e41e19bf3b45e858625273da82ca2d3182da2123 Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:22:50 +0200 Subject: [PATCH 12/22] refactor(css): C2.2 re-key fl-node-fdsvgxpowi03 -> cta-banner-box Class rename only; gate: converged builds, all bundles byte-identical after guarded reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/pages/about-us.css | 16 ++++++++-------- themes/beaver/layouts/partials/page/cta.html | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/themes/beaver/assets/css/pages/about-us.css b/themes/beaver/assets/css/pages/about-us.css index acc0de7b9..0eda0e1f4 100644 --- a/themes/beaver/assets/css/pages/about-us.css +++ b/themes/beaver/assets/css/pages/about-us.css @@ -1507,12 +1507,12 @@ img.mfp-img { } -.fl-node-fdsvgxpowi03 { +.cta-banner-box { width: 100%; } -.fl-node-fdsvgxpowi03 > .fl-col-content { +.cta-banner-box > .fl-col-content { background-color: #F5F6F8; border-top-left-radius: 20px; border-top-right-radius: 20px; @@ -1522,7 +1522,7 @@ img.mfp-img { @media (max-width: 1115px) { - .fl-builder-content .fl-node-fdsvgxpowi03 { + .fl-builder-content .cta-banner-box { width: 100% !important; max-width: none; -webkit-box-flex: 0 1 auto; @@ -1535,7 +1535,7 @@ img.mfp-img { @media (max-width: 860px) { - .fl-builder-content .fl-node-fdsvgxpowi03 { + .fl-builder-content .cta-banner-box { width: 100% !important; max-width: none; clear: none; @@ -1544,19 +1544,19 @@ img.mfp-img { } -.fl-node-fdsvgxpowi03 > .fl-col-content { +.cta-banner-box > .fl-col-content { margin-top: 180px; } @media ( max-width: 860px ) { - .fl-node-fdsvgxpowi03.fl-col > .fl-col-content { + .cta-banner-box.fl-col > .fl-col-content { margin-top: 50px; } } -.fl-node-fdsvgxpowi03 > .fl-col-content { +.cta-banner-box > .fl-col-content { padding-top: 80px; padding-right: 60px; padding-bottom: 120px; @@ -1565,7 +1565,7 @@ img.mfp-img { @media ( max-width: 860px ) { - .fl-node-fdsvgxpowi03.fl-col > .fl-col-content { + .cta-banner-box.fl-col > .fl-col-content { padding-top: 30px; padding-right: 20px; padding-bottom: 30px; diff --git a/themes/beaver/layouts/partials/page/cta.html b/themes/beaver/layouts/partials/page/cta.html index 46fe99be0..988b8f87e 100644 --- a/themes/beaver/layouts/partials/page/cta.html +++ b/themes/beaver/layouts/partials/page/cta.html @@ -4,7 +4,7 @@ data-node="3h8mj6w59d2c" data-node="x4hl5foues6i">
Date: Sun, 19 Jul 2026 03:23:48 +0200 Subject: [PATCH 13/22] refactor(css): C2.2 re-key fl-node-fa7hjib92cpv -> cta-banner-heading Class rename only; gate: converged builds, all bundles byte-identical after guarded reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/components/cta-banner.css | 6 +++--- themes/beaver/layouts/home.html | 2 +- themes/beaver/layouts/page/services.html | 2 +- themes/beaver/layouts/page/use-cases.html | 2 +- themes/beaver/layouts/partials/page/cta.html | 2 +- themes/beaver/layouts/services/single.html | 2 +- themes/beaver/layouts/use-cases/single.html | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/themes/beaver/assets/css/components/cta-banner.css b/themes/beaver/assets/css/components/cta-banner.css index d41140118..5b4369898 100644 --- a/themes/beaver/assets/css/components/cta-banner.css +++ b/themes/beaver/assets/css/components/cta-banner.css @@ -14,18 +14,18 @@ -.fl-node-fa7hjib92cpv.fl-module-heading .fl-heading { +.cta-banner-heading.fl-module-heading .fl-heading { text-align: center; } -.fl-node-fa7hjib92cpv > .fl-module-content { +.cta-banner-heading > .fl-module-content { margin-top: 20px; } @media ( max-width: 860px ) { - .fl-node-fa7hjib92cpv.fl-module > .fl-module-content { + .cta-banner-heading.fl-module > .fl-module-content { margin-top: 10px; } } diff --git a/themes/beaver/layouts/home.html b/themes/beaver/layouts/home.html index f7ba6804a..1bb04b4aa 100644 --- a/themes/beaver/layouts/home.html +++ b/themes/beaver/layouts/home.html @@ -1088,7 +1088,7 @@

class="fl-module-content fl-node-content">

diff --git a/themes/beaver/layouts/page/services.html b/themes/beaver/layouts/page/services.html index a1c3ddf9b..58cad4d7a 100644 --- a/themes/beaver/layouts/page/services.html +++ b/themes/beaver/layouts/page/services.html @@ -493,7 +493,7 @@

data-node="ohd51ixf3842">

diff --git a/themes/beaver/layouts/page/use-cases.html b/themes/beaver/layouts/page/use-cases.html index 56da269ec..a3029388d 100644 --- a/themes/beaver/layouts/page/use-cases.html +++ b/themes/beaver/layouts/page/use-cases.html @@ -107,7 +107,7 @@ class="fl-module-content fl-node-content">

diff --git a/themes/beaver/layouts/partials/page/cta.html b/themes/beaver/layouts/partials/page/cta.html index 988b8f87e..3cf3c8de1 100644 --- a/themes/beaver/layouts/partials/page/cta.html +++ b/themes/beaver/layouts/partials/page/cta.html @@ -13,7 +13,7 @@

diff --git a/themes/beaver/layouts/services/single.html b/themes/beaver/layouts/services/single.html index 07126200f..8128ba344 100644 --- a/themes/beaver/layouts/services/single.html +++ b/themes/beaver/layouts/services/single.html @@ -402,7 +402,7 @@

diff --git a/themes/beaver/layouts/use-cases/single.html b/themes/beaver/layouts/use-cases/single.html index 03fbeb607..4bdcc5b57 100644 --- a/themes/beaver/layouts/use-cases/single.html +++ b/themes/beaver/layouts/use-cases/single.html @@ -349,7 +349,7 @@

From 8754aa85e32bd1934b528df8b35f6b2d6c08bfaf Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:24:36 +0200 Subject: [PATCH 14/22] refactor(css): C2.2 re-key fl-node-9hf5wet31z02 -> cta-banner-text Class rename only; gate: converged builds, all bundles byte-identical after guarded reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/components/cta-banner.css | 8 ++++---- themes/beaver/layouts/home.html | 2 +- themes/beaver/layouts/page/services.html | 2 +- themes/beaver/layouts/page/use-cases.html | 2 +- themes/beaver/layouts/partials/page/cta.html | 2 +- themes/beaver/layouts/services/single.html | 2 +- themes/beaver/layouts/use-cases/single.html | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/themes/beaver/assets/css/components/cta-banner.css b/themes/beaver/assets/css/components/cta-banner.css index 5b4369898..26feeb708 100644 --- a/themes/beaver/assets/css/components/cta-banner.css +++ b/themes/beaver/assets/css/components/cta-banner.css @@ -32,27 +32,27 @@ -.fl-builder-content .fl-node-9hf5wet31z02 .fl-rich-text, .fl-builder-content .fl-node-9hf5wet31z02 .fl-rich-text *:not(b, strong) { +.fl-builder-content .cta-banner-text .fl-rich-text, .fl-builder-content .cta-banner-text .fl-rich-text *:not(b, strong) { text-align: center; } -.fl-node-9hf5wet31z02 > .fl-module-content { +.cta-banner-text > .fl-module-content { margin-top: 15px; margin-right: 250px; margin-left: 250px; } @media ( max-width: 1115px ) { - .fl-node-9hf5wet31z02.fl-module > .fl-module-content { + .cta-banner-text.fl-module > .fl-module-content { margin-right: 0px; margin-left: 0px; } } @media ( max-width: 860px ) { - .fl-node-9hf5wet31z02.fl-module > .fl-module-content { + .cta-banner-text.fl-module > .fl-module-content { margin-top: 15px; margin-right: 0px; margin-left: 0px; diff --git a/themes/beaver/layouts/home.html b/themes/beaver/layouts/home.html index 1bb04b4aa..0d8699e2a 100644 --- a/themes/beaver/layouts/home.html +++ b/themes/beaver/layouts/home.html @@ -1099,7 +1099,7 @@

diff --git a/themes/beaver/layouts/page/services.html b/themes/beaver/layouts/page/services.html index 58cad4d7a..0650ff586 100644 --- a/themes/beaver/layouts/page/services.html +++ b/themes/beaver/layouts/page/services.html @@ -504,7 +504,7 @@

diff --git a/themes/beaver/layouts/page/use-cases.html b/themes/beaver/layouts/page/use-cases.html index a3029388d..93edc6c7d 100644 --- a/themes/beaver/layouts/page/use-cases.html +++ b/themes/beaver/layouts/page/use-cases.html @@ -118,7 +118,7 @@

diff --git a/themes/beaver/layouts/partials/page/cta.html b/themes/beaver/layouts/partials/page/cta.html index 3cf3c8de1..a68ccc816 100644 --- a/themes/beaver/layouts/partials/page/cta.html +++ b/themes/beaver/layouts/partials/page/cta.html @@ -22,7 +22,7 @@

diff --git a/themes/beaver/layouts/services/single.html b/themes/beaver/layouts/services/single.html index 8128ba344..b9cacc82a 100644 --- a/themes/beaver/layouts/services/single.html +++ b/themes/beaver/layouts/services/single.html @@ -413,7 +413,7 @@

diff --git a/themes/beaver/layouts/use-cases/single.html b/themes/beaver/layouts/use-cases/single.html index 4bdcc5b57..e85a9a017 100644 --- a/themes/beaver/layouts/use-cases/single.html +++ b/themes/beaver/layouts/use-cases/single.html @@ -360,7 +360,7 @@

From 4a17fe1a23de51d58b7f8a86fdb9320ac13c0740 Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:25:35 +0200 Subject: [PATCH 15/22] refactor(css): C2.2 re-key fl-node-toa2hwegbp4q -> cta-banner-spacer Class rename only; gate: converged builds, all bundles byte-identical after guarded reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/assets/css/components/cta-banner.css | 6 +++--- themes/beaver/assets/css/critical/about-us-critical.css | 6 +++--- themes/beaver/assets/css/critical/homepage-critical.css | 6 +++--- themes/beaver/layouts/home.html | 2 +- themes/beaver/layouts/page/services.html | 2 +- themes/beaver/layouts/page/use-cases.html | 2 +- themes/beaver/layouts/partials/page/cta.html | 2 +- themes/beaver/layouts/services/single.html | 2 +- themes/beaver/layouts/use-cases/single.html | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/themes/beaver/assets/css/components/cta-banner.css b/themes/beaver/assets/css/components/cta-banner.css index 26feeb708..310cd23f6 100644 --- a/themes/beaver/assets/css/components/cta-banner.css +++ b/themes/beaver/assets/css/components/cta-banner.css @@ -61,19 +61,19 @@ -.fl-node-toa2hwegbp4q .pp-spacer-module { +.cta-banner-spacer .pp-spacer-module { height: 60px; width: 100%; } @media only screen and (max-width: 1115px) { - .fl-node-toa2hwegbp4q .pp-spacer-module { + .cta-banner-spacer .pp-spacer-module { height: 60px; } } @media only screen and (max-width: 860px) { - .fl-node-toa2hwegbp4q .pp-spacer-module { + .cta-banner-spacer .pp-spacer-module { height: 15px; } } diff --git a/themes/beaver/assets/css/critical/about-us-critical.css b/themes/beaver/assets/css/critical/about-us-critical.css index 6d8963df8..1196d40d7 100644 --- a/themes/beaver/assets/css/critical/about-us-critical.css +++ b/themes/beaver/assets/css/critical/about-us-critical.css @@ -53,17 +53,17 @@ padding-top: 5px; opacity: 1; } -.fl-node-toa2hwegbp4q .pp-spacer-module { +.cta-banner-spacer .pp-spacer-module { height: 60px; width: 100%; } @media only screen and (max-width: 1115px) { - .fl-node-toa2hwegbp4q .pp-spacer-module { + .cta-banner-spacer .pp-spacer-module { height: 60px; } } @media only screen and (max-width: 860px) { - .fl-node-toa2hwegbp4q .pp-spacer-module { + .cta-banner-spacer .pp-spacer-module { height: 15px; } } diff --git a/themes/beaver/assets/css/critical/homepage-critical.css b/themes/beaver/assets/css/critical/homepage-critical.css index e864903cc..c74a157fe 100644 --- a/themes/beaver/assets/css/critical/homepage-critical.css +++ b/themes/beaver/assets/css/critical/homepage-critical.css @@ -46,17 +46,17 @@ } } -.fl-node-toa2hwegbp4q .pp-spacer-module { +.cta-banner-spacer .pp-spacer-module { height: 60px; width: 100%; } @media only screen and (max-width: 1115px) { - .fl-node-toa2hwegbp4q .pp-spacer-module { + .cta-banner-spacer .pp-spacer-module { height: 60px; } } @media only screen and (max-width: 860px) { - .fl-node-toa2hwegbp4q .pp-spacer-module { + .cta-banner-spacer .pp-spacer-module { height: 15px; } } diff --git a/themes/beaver/layouts/home.html b/themes/beaver/layouts/home.html index 0d8699e2a..8bfdc03fc 100644 --- a/themes/beaver/layouts/home.html +++ b/themes/beaver/layouts/home.html @@ -1113,7 +1113,7 @@

diff --git a/themes/beaver/layouts/page/services.html b/themes/beaver/layouts/page/services.html index 0650ff586..ab75f6bbd 100644 --- a/themes/beaver/layouts/page/services.html +++ b/themes/beaver/layouts/page/services.html @@ -517,7 +517,7 @@

diff --git a/themes/beaver/layouts/page/use-cases.html b/themes/beaver/layouts/page/use-cases.html index 93edc6c7d..9c0a8cbbd 100644 --- a/themes/beaver/layouts/page/use-cases.html +++ b/themes/beaver/layouts/page/use-cases.html @@ -131,7 +131,7 @@

diff --git a/themes/beaver/layouts/partials/page/cta.html b/themes/beaver/layouts/partials/page/cta.html index a68ccc816..284c0f2b0 100644 --- a/themes/beaver/layouts/partials/page/cta.html +++ b/themes/beaver/layouts/partials/page/cta.html @@ -34,7 +34,7 @@

diff --git a/themes/beaver/layouts/services/single.html b/themes/beaver/layouts/services/single.html index b9cacc82a..e76a3af53 100644 --- a/themes/beaver/layouts/services/single.html +++ b/themes/beaver/layouts/services/single.html @@ -426,7 +426,7 @@

diff --git a/themes/beaver/layouts/use-cases/single.html b/themes/beaver/layouts/use-cases/single.html index e85a9a017..367997ef1 100644 --- a/themes/beaver/layouts/use-cases/single.html +++ b/themes/beaver/layouts/use-cases/single.html @@ -373,7 +373,7 @@

From 81568764a6bc80166cfbea6181a613628f36ec42 Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:26:23 +0200 Subject: [PATCH 16/22] refactor(css): C2.2 re-key fl-node-d96zqbnxltuj -> cta-banner-button-row Class rename only; gate: converged builds, all bundles byte-identical after guarded reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/layouts/page/services.html | 2 +- themes/beaver/layouts/page/use-cases.html | 2 +- themes/beaver/layouts/partials/page/cta.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/themes/beaver/layouts/page/services.html b/themes/beaver/layouts/page/services.html index ab75f6bbd..94ce898e5 100644 --- a/themes/beaver/layouts/page/services.html +++ b/themes/beaver/layouts/page/services.html @@ -524,7 +524,7 @@

Date: Sun, 19 Jul 2026 03:27:11 +0200 Subject: [PATCH 17/22] refactor(css): C2.2 re-key fl-node-3h8mj6w59d2c -> cta-banner Class rename only; gate: converged builds, all bundles byte-identical after guarded reverse substitution. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- themes/beaver/layouts/partials/page/cta.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/beaver/layouts/partials/page/cta.html b/themes/beaver/layouts/partials/page/cta.html index 0f9b6b200..12734da58 100644 --- a/themes/beaver/layouts/partials/page/cta.html +++ b/themes/beaver/layouts/partials/page/cta.html @@ -1,6 +1,6 @@
Date: Sun, 19 Jul 2026 03:28:23 +0200 Subject: [PATCH 18/22] refactor(css): C2.3 rename skin-65eda28877e04.css -> legacy-theme-skin.css Last hash-named CSS file retired (success criterion 2). git mv + sed of all 16 template refs (15 in themes/ + the root-level layouts/course/list.html override the themes-scoped grep missed) + comment refs in critical/ files + live docs; archived docs untouched. NAME NOT PRE-APPROVED: 'legacy-theme-skin.css' - single-commit revertable if Paul prefers another name. Gate: converged builds, every bundle fingerprint byte-identical (file content unchanged; concat output is content-addressed). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- ...2026-07-12-css-maintainability-redesign.md | 2 +- .../2509-css-migration/TASK-TRACKER.md | 10 +++---- .../css-bundle-ownership-map.md | 2 +- .../css-loading-order-analysis.md | 30 +++++++++---------- layouts/course/list.html | 2 +- .../assets/css/critical/about-us-critical.css | 8 ++--- .../assets/css/critical/careers-critical.css | 8 ++--- .../assets/css/critical/fl-common-modules.css | 8 ++--- .../assets/css/critical/homepage-critical.css | 8 ++--- .../assets/css/critical/single-careers.css | 10 +++---- .../assets/css/critical/single-clients.css | 8 ++--- .../assets/css/critical/single-services.css | 8 ++--- .../assets/css/critical/single-use-cases.css | 8 ++--- ...5eda28877e04.css => legacy-theme-skin.css} | 0 themes/beaver/layouts/404.html | 2 +- themes/beaver/layouts/clients/single.html | 2 +- themes/beaver/layouts/course/single.html | 2 +- themes/beaver/layouts/page/about.html | 2 +- themes/beaver/layouts/page/clients.html | 2 +- themes/beaver/layouts/page/services.html | 2 +- themes/beaver/layouts/page/single.html | 2 +- themes/beaver/layouts/page/use-cases.html | 2 +- .../assets/careers-css-resources.html | 2 +- .../assets/contact-us-css-resources.html | 2 +- .../assets/homepage-css-resources.html | 2 +- .../assets/single-career-css-resources.html | 2 +- themes/beaver/layouts/services/single.html | 2 +- themes/beaver/layouts/single.html | 2 +- themes/beaver/layouts/use-cases/single.html | 2 +- 29 files changed, 71 insertions(+), 71 deletions(-) rename themes/beaver/assets/css/{skin-65eda28877e04.css => legacy-theme-skin.css} (100%) diff --git a/docs/projects/2509-css-migration/2026-07-12-css-maintainability-redesign.md b/docs/projects/2509-css-migration/2026-07-12-css-maintainability-redesign.md index df144e53b..1f94cbd4f 100644 --- a/docs/projects/2509-css-migration/2026-07-12-css-maintainability-redesign.md +++ b/docs/projects/2509-css-migration/2026-07-12-css-maintainability-redesign.md @@ -147,7 +147,7 @@ parity. Measured against the success criteria above, the goal is NOT yet met: | # | Criterion | Status 2026-07-18 (tree at 1df33334) | |---|-----------|--------------------------------------| | 1 | FL files 16 → 0 | ✅ done (PR #365) | -| 2 | No obfuscated artifacts | ❌ ~3,700 `.fl-node-*` rules moved INTO `pages/*.css` by the delta ports (homepage 1,038 · careers 583 · services 492 · clients 366 · about-us 364 · single-service 350 · single-use-cases 329 · use-cases 147 · single-career 67); 604 `fl-node/fl-row/fl-col` refs across 14 templates; `skin-65eda28877e04.css` still hash-named; `critical/fl-*` trio + `foundations/fl-builder-common-base.css` kept alive only by the fl markup | +| 2 | No obfuscated artifacts | ❌ ~3,700 `.fl-node-*` rules moved INTO `pages/*.css` by the delta ports (homepage 1,038 · careers 583 · services 492 · clients 366 · about-us 364 · single-service 350 · single-use-cases 329 · use-cases 147 · single-career 67); 604 `fl-node/fl-row/fl-col` refs across 14 templates; `legacy-theme-skin.css` still hash-named; `critical/fl-*` trio + `foundations/fl-builder-common-base.css` kept alive only by the fl markup | | 3 | No duplication in hand layer | ❌ 55–70% byte-identical lines between sibling page files (clients↔services 841/1,463 · single-service↔services 851/1,455 · use-cases↔single-use-cases 832/1,176) — shared-partial node rules copied into every consumer; `critical/*.css` files each share ~250+ identical lines with their page file | | 4 | Safe-edit under a minute | ✅ map + suites; per-file "affects pages" headers still to add (folded into C1/C2) | | 5 | Evidence rule | ✅ standing (compiled+gzip, never source lines) | diff --git a/docs/projects/2509-css-migration/TASK-TRACKER.md b/docs/projects/2509-css-migration/TASK-TRACKER.md index e94fbc722..50acf2fef 100644 --- a/docs/projects/2509-css-migration/TASK-TRACKER.md +++ b/docs/projects/2509-css-migration/TASK-TRACKER.md @@ -597,9 +597,9 @@ tasks: - [ ] C2.2 Re-key cta partial — same protocol, ≈7 commits (cta-banner, cta-banner-heading, cta-banner-button, …) in partials/page/cta.html + components/cta-banner.css. - - [ ] C2.3 Rename skin-65eda28877e04.css → legacy-theme-skin.css (last + - [ ] C2.3 Rename legacy-theme-skin.css → legacy-theme-skin.css (last hash-named file; criterion 2). Enumerate ALL refs first: - `grep -rln 'skin-65eda28877e04' themes/ config/ | sort` (12+ template + `grep -rln 'legacy-theme-skin.css' themes/ config/ | sort` (12+ template slices at last count). git mv + sed all refs in ONE commit; file content untouched. Gate: every bundle's rule content identical (fingerprints change — concat input renamed — that is the ONLY @@ -707,7 +707,7 @@ Authoritative table: css-bundle-ownership-map.md ``` fl-node rules in pages/*.css: ~3,700 (target: 0 — sprints C2/C3/C4) fl-* refs in templates: 604 (target: 0) -Hash-named CSS files: 1 (skin-65eda28877e04.css; target: 0 — C2.3) +Hash-named CSS files: 1 (legacy-theme-skin.css; target: 0 — C2.3) Dup lines between sibling pages: 55-70% (target: ~0 — C1) Re-measure commands: for f in themes/beaver/assets/css/pages/*.css; do grep -c 'fl-node-' "$f"; done @@ -754,7 +754,7 @@ fcp_metrics: in the hand layer) are NOT met — the delta ports moved ~3,700 fl-node rules into pages/*.css, 604 fl-* refs remain in 14 templates, 55–70% of lines are byte-identical between sibling page files (shared-partial copies), and - skin-65eda28877e04.css is still hash-named. + legacy-theme-skin.css is still hash-named. - **Shipped**: spec revision (§"Phase C — post-burn-down cleanup": phase structure C1→C4, gate stack, preflight rule, non-goals) + this tracker's PHASE C section with agent-executable micro-commit task lists for sprints @@ -1043,7 +1043,7 @@ further whole-file merges found. - **Landed**: orphaned use-cases-critical.css deleted (265 lines); 8 invalid mid-file @charset removed; css-variables foundation wired into the 4 bundles that lacked it (blog-single, taxonomy list, not_found, course-single) -- **ROLLED BACK**: skin-65eda28877e04.css font-stack extraction (6 stacks). +- **ROLLED BACK**: legacy-theme-skin.css font-stack extraction (6 stacks). Root cause: postcss-delete-duplicate-css (production builds only) deletes the later of two byte-identical declarations; converting skin's body font-family to var() made it duplicate an earlier critical-CSS declaration, diff --git a/docs/projects/2509-css-migration/css-bundle-ownership-map.md b/docs/projects/2509-css-migration/css-bundle-ownership-map.md index 7aa2a1efe..2b1aebff5 100644 --- a/docs/projects/2509-css-migration/css-bundle-ownership-map.md +++ b/docs/projects/2509-css-migration/css-bundle-ownership-map.md @@ -48,7 +48,7 @@ site-wide). Not FL-affected. Shared non-FL slice members loaded by most bundles: `critical/base.css` (pulls the critical/fl-* trio), `dynamic-icons.css`, `586.css`, `vendors/base-4.min.css`, -`style.css`, `skin-65eda28877e04.css`, `footer.css`, plus per-page extras +`style.css`, `legacy-theme-skin.css`, `footer.css`, plus per-page extras (`technologies.css`, `single-post.css`, `use-cases-dynamic.css`, `homepage.css`, `companies.css`, `careers.css`, `404.css`, `pagination.css`, `component-bundle.css`, `theme-main.css`). diff --git a/docs/projects/2509-css-migration/css-loading-order-analysis.md b/docs/projects/2509-css-migration/css-loading-order-analysis.md index 3c0898fff..6a2623a3a 100644 --- a/docs/projects/2509-css-migration/css-loading-order-analysis.md +++ b/docs/projects/2509-css-migration/css-loading-order-analysis.md @@ -102,7 +102,7 @@ This analysis maps the complete CSS loading architecture across all Hugo templat 5. css/homepage.css # Homepage main styles 6. css/dynamic-404-590.css # Dynamic FL-builder styles (template-generated) 7. css/590-layout.css # FL-builder layout (590 = homepage post ID) -8. css/skin-65eda28877e04.css # Theme skin +8. css/legacy-theme-skin.css # Theme skin 9. css/style.css # General styles 10. css/dynamic-icons.css # Dynamic icon styles (template-generated) 11. css/586.css # Additional FL-builder module styles @@ -123,7 +123,7 @@ This analysis maps the complete CSS loading architecture across all Hugo templat ```yaml 1. css/critical/base.css # Critical global styles 2. css/701-layout.css # FL-builder layout (701 = about page ID) -3. css/skin-65eda28877e04.css # Theme skin +3. css/legacy-theme-skin.css # Theme skin 4. css/dynamic-icons.css # Dynamic icon styles 5. css/586.css # FL-builder module styles 6. css/bf72bba397177a0376baed325bffdc75-layout-bundle.css # Shared layout bundle @@ -145,7 +145,7 @@ This analysis maps the complete CSS loading architecture across all Hugo templat 5. css/586.css # FL-builder module styles 6. css/vendors/base-4.min.css # ⚠️ VENDOR DEPENDENCY: Foundation framework 7. css/style.css # General styles -8. css/skin-65eda28877e04.css # Theme skin +8. css/legacy-theme-skin.css # Theme skin 9. css/technologies.css # Technologies section 10. css/footer.css # Footer styles 11. css/use-cases-dynamic.css # Use cases dynamic styles @@ -183,7 +183,7 @@ This analysis maps the complete CSS loading architecture across all Hugo templat 4. css/vendors/base-4.min.css # ⚠️ VENDOR DEPENDENCY: Foundation framework 5. css/3114-layout.css # FL-builder layout (3114 = blog template ID) 6. css/bf72bba397177a0376baed325bffdc75-layout-bundle.css # Shared layout bundle -7. css/skin-65eda28877e04.css # Theme skin +7. css/legacy-theme-skin.css # Theme skin 8. css/single-post.css # Single post styles 9. css/footer.css # Footer styles ``` @@ -202,7 +202,7 @@ This analysis maps the complete CSS loading architecture across all Hugo templat 5. css/homepage.css # Homepage styles (form reuse) 6. css/vendors/base-4.min.css # ⚠️ VENDOR DEPENDENCY: Foundation framework 7. css/style.css # General styles -8. css/skin-65eda28877e04.css # Theme skin +8. css/legacy-theme-skin.css # Theme skin 9. css/footer.css # Footer styles ``` @@ -355,14 +355,14 @@ fl-shape-dividers.css: # FL-builder shape dividers ```yaml style.css: # General site styles (typography, utilities, etc.) -skin-65eda28877e04.css: # Theme skin (colors, spacing, FL-builder theme) +legacy-theme-skin.css: # Theme skin (colors, spacing, FL-builder theme) footer.css: # Footer component styles 586.css: # FL-builder module styles (ID 586) ``` **Loading Pattern**: - `style.css` loads mid-bundle (after layouts, before skin) -- `skin-65eda28877e04.css` loads near end (theme overrides) +- `legacy-theme-skin.css` loads near end (theme overrides) - `footer.css` loads LAST (footer appears last in DOM) ### 8.2 Component-Specific Global Files @@ -418,7 +418,7 @@ homepage-layout.css: # Homepage layout grid **Order 4: Theme & Overrides** ```yaml 10. css/style.css # General site styles -11. css/skin-65eda28877e04.css # Theme skin (colors, spacing) +11. css/legacy-theme-skin.css # Theme skin (colors, spacing) ``` **Rationale**: Theme overrides component defaults @@ -460,7 +460,7 @@ homepage-layout.css: # Homepage layout grid **Extract LAST** (Highest Cascade Risk): 1. 🚨 `css/style.css` → Complex dependencies, audit required -2. 🚨 `css/skin-65eda28877e04.css` → Theme overrides, affects all pages +2. 🚨 `css/legacy-theme-skin.css` → Theme overrides, affects all pages 3. 🚨 `css/{page-id}-layout.css` → FL-builder layouts, preserve node classes 4. 🚨 `css/vendors/base-4.min.css` → Foundation grid, system-wide impact @@ -575,7 +575,7 @@ css/critical/*-critical.css: # ALL critical CSS files ```yaml css/style.css: # General styles, complex dependencies -css/skin-65eda28877e04.css: # Theme skin, global overrides +css/legacy-theme-skin.css: # Theme skin, global overrides css/bf72bba397177a0376baed325bffdc75-layout-bundle.css: # Shared layout, used by multiple pages ``` @@ -641,7 +641,7 @@ Load Order: 5. css/homepage.css 6. css/dynamic-404-590.css (template-generated) 7. css/590-layout.css (FL-builder) - 8. css/skin-65eda28877e04.css + 8. css/legacy-theme-skin.css 9. css/style.css 10. css/dynamic-icons.css (template-generated) 11. css/586.css @@ -653,7 +653,7 @@ Bundle: about-us Load Order: 1. css/critical/base.css 2. css/701-layout.css (FL-builder) - 3. css/skin-65eda28877e04.css + 3. css/legacy-theme-skin.css 4. css/dynamic-icons.css (template-generated) 5. css/586.css 6. css/bf72bba397177a0376baed325bffdc75-layout-bundle.css @@ -669,7 +669,7 @@ Load Order: 5. css/586.css 6. css/vendors/base-4.min.css (⚠️ Foundation) 7. css/style.css - 8. css/skin-65eda28877e04.css + 8. css/legacy-theme-skin.css 9. css/technologies.css 10. css/footer.css 11. css/use-cases-dynamic.css (template-generated) @@ -697,7 +697,7 @@ Load Order: 4. css/vendors/base-4.min.css (⚠️ Foundation) 5. css/3114-layout.css (FL-builder) 6. css/bf72bba397177a0376baed325bffdc75-layout-bundle.css - 7. css/skin-65eda28877e04.css + 7. css/legacy-theme-skin.css 8. css/single-post.css 9. css/footer.css @@ -711,7 +711,7 @@ Load Order: 5. css/homepage.css 6. css/vendors/base-4.min.css (⚠️ Foundation) 7. css/style.css - 8. css/skin-65eda28877e04.css + 8. css/legacy-theme-skin.css 9. css/footer.css ``` diff --git a/layouts/course/list.html b/layouts/course/list.html index 00ec37f1b..cd5d61311 100644 --- a/layouts/course/list.html +++ b/layouts/course/list.html @@ -5,7 +5,7 @@ (resources.Get "css/586.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/single-post.css") (resources.Get "css/pages/course-list.css") (resources.Get "css/footer.css") diff --git a/themes/beaver/assets/css/critical/about-us-critical.css b/themes/beaver/assets/css/critical/about-us-critical.css index 1196d40d7..53d10c8d7 100644 --- a/themes/beaver/assets/css/critical/about-us-critical.css +++ b/themes/beaver/assets/css/critical/about-us-critical.css @@ -1458,7 +1458,7 @@ h1 { } body { background-color: #fff; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 18px; font-weight: 400; @@ -1468,7 +1468,7 @@ body { word-wrap: break-word; } h1 { - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; line-height: 1.4; @@ -1479,7 +1479,7 @@ h1 { font-size: 70px; line-height: 1; letter-spacing: -1px; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; font-style: normal; @@ -1615,7 +1615,7 @@ button { text-transform: capitalize; border-style: none; border-width: 1px; - border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical skin-65eda28877e04.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ + border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical legacy-theme-skin.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ border-radius: 25px; } .fl-page a.fl-button *, diff --git a/themes/beaver/assets/css/critical/careers-critical.css b/themes/beaver/assets/css/critical/careers-critical.css index e815e49a5..dc8e2319e 100644 --- a/themes/beaver/assets/css/critical/careers-critical.css +++ b/themes/beaver/assets/css/critical/careers-critical.css @@ -1381,7 +1381,7 @@ h2 { } body { background-color: #fff; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 18px; font-weight: 400; @@ -1392,7 +1392,7 @@ body { } h1, h2 { - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; line-height: 1.4; @@ -1403,7 +1403,7 @@ h1 { font-size: 70px; line-height: 1; letter-spacing: -1px; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; font-style: normal; @@ -1541,7 +1541,7 @@ button { text-transform: capitalize; border-style: none; border-width: 1px; - border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical skin-65eda28877e04.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ + border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical legacy-theme-skin.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ border-radius: 25px; } .fl-page a.fl-button *, diff --git a/themes/beaver/assets/css/critical/fl-common-modules.css b/themes/beaver/assets/css/critical/fl-common-modules.css index 4435b28d8..466b8c934 100644 --- a/themes/beaver/assets/css/critical/fl-common-modules.css +++ b/themes/beaver/assets/css/critical/fl-common-modules.css @@ -559,7 +559,7 @@ h1 { /* JT Theme Typography & Layout */ body { background-color: #fff; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 18px; font-weight: 400; @@ -569,7 +569,7 @@ body { word-wrap: break-word; } h1 { - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; line-height: 1.4; @@ -580,7 +580,7 @@ h1 { font-size: 70px; line-height: 1; letter-spacing: -1px; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; font-style: normal; @@ -715,7 +715,7 @@ button { text-transform: capitalize; border-style: none; border-width: 1px; - border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical skin-65eda28877e04.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ + border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical legacy-theme-skin.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ border-radius: 25px; } .fl-page a.fl-button *, diff --git a/themes/beaver/assets/css/critical/homepage-critical.css b/themes/beaver/assets/css/critical/homepage-critical.css index c74a157fe..980f4f3cd 100644 --- a/themes/beaver/assets/css/critical/homepage-critical.css +++ b/themes/beaver/assets/css/critical/homepage-critical.css @@ -1681,7 +1681,7 @@ button::-moz-focus-inner { /* JetThoughts Theme Styles */ body { background-color: #fff; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-size: 18px; font-weight: 400; @@ -1692,7 +1692,7 @@ body { } h1, h3 { - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; line-height: 1.4; @@ -1703,7 +1703,7 @@ h1 { font-size: 70px; line-height: 1; letter-spacing: -1px; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; font-style: normal; @@ -1842,7 +1842,7 @@ button { text-transform: capitalize; border-style: none; border-width: 1px; - border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical skin-65eda28877e04.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ + border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical legacy-theme-skin.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ border-radius: 25px; } .fl-page a.fl-button *, diff --git a/themes/beaver/assets/css/critical/single-careers.css b/themes/beaver/assets/css/critical/single-careers.css index 7c99ebb06..2e6610f8f 100644 --- a/themes/beaver/assets/css/critical/single-careers.css +++ b/themes/beaver/assets/css/critical/single-careers.css @@ -56,7 +56,7 @@ h2 { } h1, h2 { - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; line-height: 1.4; @@ -1761,7 +1761,7 @@ h3 { } body { background-color: #fff; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: Roboto, Arial, sans-serif; font-size: 18px; font-weight: 300; @@ -1773,7 +1773,7 @@ body { h1, h2, h3 { - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; line-height: 1.4; @@ -1784,7 +1784,7 @@ h1 { font-size: 70px; line-height: 1; letter-spacing: -1px; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; font-style: normal; @@ -1916,7 +1916,7 @@ input[type="text"]:-ms-input-placeholder { text-transform: capitalize; border-style: none; border-width: 1px; - border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical skin-65eda28877e04.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ + border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical legacy-theme-skin.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ border-radius: 25px; } .fl-page a.fl-button *, diff --git a/themes/beaver/assets/css/critical/single-clients.css b/themes/beaver/assets/css/critical/single-clients.css index e7a50715b..b347ba36a 100644 --- a/themes/beaver/assets/css/critical/single-clients.css +++ b/themes/beaver/assets/css/critical/single-clients.css @@ -1468,7 +1468,7 @@ h1 { } body { background-color: #fff; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: Roboto, Arial, sans-serif; font-size: 18px; font-weight: 300; @@ -1478,7 +1478,7 @@ body { word-wrap: break-word; } h1 { - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; line-height: 1.4; @@ -1489,7 +1489,7 @@ h1 { font-size: 70px; line-height: 1; letter-spacing: -1px; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; font-style: normal; @@ -1572,7 +1572,7 @@ button { text-transform: capitalize; border-style: none; border-width: 1px; - border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical skin-65eda28877e04.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ + border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical legacy-theme-skin.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ border-radius: 25px; } .fl-page a.fl-button *, diff --git a/themes/beaver/assets/css/critical/single-services.css b/themes/beaver/assets/css/critical/single-services.css index 233d90b02..a926a225a 100644 --- a/themes/beaver/assets/css/critical/single-services.css +++ b/themes/beaver/assets/css/critical/single-services.css @@ -1471,7 +1471,7 @@ h1 { } body { background-color: #fff; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 18px; font-weight: 400; @@ -1481,7 +1481,7 @@ body { word-wrap: break-word; } h1 { - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; line-height: 1.4; @@ -1492,7 +1492,7 @@ h1 { font-size: 70px; line-height: 1; letter-spacing: -1px; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; font-style: normal; @@ -1639,7 +1639,7 @@ button { text-transform: capitalize; border-style: none; border-width: 1px; - border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical skin-65eda28877e04.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ + border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical legacy-theme-skin.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ border-radius: 25px; } .fl-page a.fl-button *, diff --git a/themes/beaver/assets/css/critical/single-use-cases.css b/themes/beaver/assets/css/critical/single-use-cases.css index 1c6397844..6e3f028aa 100644 --- a/themes/beaver/assets/css/critical/single-use-cases.css +++ b/themes/beaver/assets/css/critical/single-use-cases.css @@ -1514,7 +1514,7 @@ h1 { } body { background-color: #fff; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 18px; font-weight: 400; @@ -1524,7 +1524,7 @@ body { word-wrap: break-word; } h1 { - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; line-height: 1.4; @@ -1535,7 +1535,7 @@ h1 { font-size: 70px; line-height: 1; letter-spacing: -1px; - color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see skin-65eda28877e04.css body note */ + color: #121212; /* KEEP LITERAL: reboot-generic selector - var() form invites cssnano merge-hoist / dedup unmask in production bundles; see legacy-theme-skin.css body note */ font-family: var(--font-system-ui); font-weight: 800; font-style: normal; @@ -1682,7 +1682,7 @@ button { text-transform: capitalize; border-style: none; border-width: 1px; - border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical skin-65eda28877e04.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ + border-color: #121212; /* KEEP LITERAL: dedup-twin of the identical legacy-theme-skin.css .fl-page fl-button rule - var() here breaks the twin match and changes the minifier merge product (border is style:none, invisible anyway) */ border-radius: 25px; } .fl-page a.fl-button *, diff --git a/themes/beaver/assets/css/skin-65eda28877e04.css b/themes/beaver/assets/css/legacy-theme-skin.css similarity index 100% rename from themes/beaver/assets/css/skin-65eda28877e04.css rename to themes/beaver/assets/css/legacy-theme-skin.css diff --git a/themes/beaver/layouts/404.html b/themes/beaver/layouts/404.html index e2518655f..9d3891ecd 100644 --- a/themes/beaver/layouts/404.html +++ b/themes/beaver/layouts/404.html @@ -4,7 +4,7 @@ (resources.Get "css/dynamic-404-590.css" | resources.ExecuteAsTemplate "css/dynamic.css" .) (resources.Get "css/404.css") (resources.Get "css/vendors/base-4.min.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/dynamic-icons.css" | resources.ExecuteAsTemplate "css/dynamic586.css" .) (resources.Get "css/586.css") (resources.Get "css/footer.css") diff --git a/themes/beaver/layouts/clients/single.html b/themes/beaver/layouts/clients/single.html index ff29901c8..878868112 100644 --- a/themes/beaver/layouts/clients/single.html +++ b/themes/beaver/layouts/clients/single.html @@ -7,7 +7,7 @@ (resources.Get "css/586.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/footer.css") -}} diff --git a/themes/beaver/layouts/course/single.html b/themes/beaver/layouts/course/single.html index 65437cc34..72e03cdce 100644 --- a/themes/beaver/layouts/course/single.html +++ b/themes/beaver/layouts/course/single.html @@ -6,7 +6,7 @@ (resources.Get "css/586.css") (resources.Get "css/style.css") (resources.Get "css/vendors/base-4.min.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/single-post.css") (resources.Get "css/pages/blog-single.css") (resources.Get "css/footer.css") diff --git a/themes/beaver/layouts/page/about.html b/themes/beaver/layouts/page/about.html index 12f8252ed..46eb315af 100644 --- a/themes/beaver/layouts/page/about.html +++ b/themes/beaver/layouts/page/about.html @@ -5,7 +5,7 @@ (resources.Get "css/components/testimonials.css") (resources.Get "css/components/cta-banner.css") (resources.Get "css/pages/about-us.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/dynamic-icons.css" | resources.ExecuteAsTemplate "css/dynamic586.css" .) (resources.Get "css/586.css") (resources.Get "css/footer.css") diff --git a/themes/beaver/layouts/page/clients.html b/themes/beaver/layouts/page/clients.html index 548588da2..b1a620be6 100644 --- a/themes/beaver/layouts/page/clients.html +++ b/themes/beaver/layouts/page/clients.html @@ -9,7 +9,7 @@ (resources.Get "css/586.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/technologies.css") (resources.Get "css/footer.css") -}} diff --git a/themes/beaver/layouts/page/services.html b/themes/beaver/layouts/page/services.html index 94ce898e5..64c527f7e 100644 --- a/themes/beaver/layouts/page/services.html +++ b/themes/beaver/layouts/page/services.html @@ -10,7 +10,7 @@ (resources.Get "css/586.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/technologies.css") (resources.Get "css/footer.css") (resources.Get "css/use-cases-dynamic.css" | resources.ExecuteAsTemplate "css/use-cases-dynamic.css" .) diff --git a/themes/beaver/layouts/page/single.html b/themes/beaver/layouts/page/single.html index a6d68102a..d80d760d8 100644 --- a/themes/beaver/layouts/page/single.html +++ b/themes/beaver/layouts/page/single.html @@ -6,7 +6,7 @@ (resources.Get "css/586.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/pages/simple-page.css") (resources.Get "css/footer.css") -}} diff --git a/themes/beaver/layouts/page/use-cases.html b/themes/beaver/layouts/page/use-cases.html index 818f00821..9416d2507 100644 --- a/themes/beaver/layouts/page/use-cases.html +++ b/themes/beaver/layouts/page/use-cases.html @@ -10,7 +10,7 @@ (resources.Get "css/586.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/technologies.css") (resources.Get "css/footer.css") (resources.Get "css/use-cases-dynamic.css" | resources.ExecuteAsTemplate "css/use-cases-dynamic.css" .) diff --git a/themes/beaver/layouts/partials/assets/careers-css-resources.html b/themes/beaver/layouts/partials/assets/careers-css-resources.html index eb8c572f6..bae2d26c2 100644 --- a/themes/beaver/layouts/partials/assets/careers-css-resources.html +++ b/themes/beaver/layouts/partials/assets/careers-css-resources.html @@ -9,6 +9,6 @@ (resources.Get "css/homepage.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/footer.css") ) -}} diff --git a/themes/beaver/layouts/partials/assets/contact-us-css-resources.html b/themes/beaver/layouts/partials/assets/contact-us-css-resources.html index 53418721e..6be00aee9 100644 --- a/themes/beaver/layouts/partials/assets/contact-us-css-resources.html +++ b/themes/beaver/layouts/partials/assets/contact-us-css-resources.html @@ -7,7 +7,7 @@ (resources.Get "css/homepage.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/pages/contact-us.css") (resources.Get "css/footer.css") ) -}} diff --git a/themes/beaver/layouts/partials/assets/homepage-css-resources.html b/themes/beaver/layouts/partials/assets/homepage-css-resources.html index a6303f08a..7fb1b8734 100644 --- a/themes/beaver/layouts/partials/assets/homepage-css-resources.html +++ b/themes/beaver/layouts/partials/assets/homepage-css-resources.html @@ -10,7 +10,7 @@ (resources.Get "css/components/testimonials.css") (resources.Get "css/components/cta-banner.css") (resources.Get "css/pages/homepage.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/style.css") (resources.Get "css/dynamic-icons.css" | resources.ExecuteAsTemplate "css/dynamic586.css" .) (resources.Get "css/586.css") diff --git a/themes/beaver/layouts/partials/assets/single-career-css-resources.html b/themes/beaver/layouts/partials/assets/single-career-css-resources.html index b606bc6fe..12a0b85ea 100644 --- a/themes/beaver/layouts/partials/assets/single-career-css-resources.html +++ b/themes/beaver/layouts/partials/assets/single-career-css-resources.html @@ -8,6 +8,6 @@ (resources.Get "css/homepage.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/footer.css") ) -}} diff --git a/themes/beaver/layouts/services/single.html b/themes/beaver/layouts/services/single.html index e76a3af53..00d110939 100644 --- a/themes/beaver/layouts/services/single.html +++ b/themes/beaver/layouts/services/single.html @@ -15,7 +15,7 @@ (resources.Get "css/586.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/footer.css") -}} diff --git a/themes/beaver/layouts/single.html b/themes/beaver/layouts/single.html index 4c426e58f..771597173 100644 --- a/themes/beaver/layouts/single.html +++ b/themes/beaver/layouts/single.html @@ -6,7 +6,7 @@ (resources.Get "css/586.css") (resources.Get "css/style.css") (resources.Get "css/vendors/base-4.min.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/single-post.css") (resources.Get "css/pages/blog-single.css") (resources.Get "css/footer.css") diff --git a/themes/beaver/layouts/use-cases/single.html b/themes/beaver/layouts/use-cases/single.html index 367997ef1..862672d95 100644 --- a/themes/beaver/layouts/use-cases/single.html +++ b/themes/beaver/layouts/use-cases/single.html @@ -8,7 +8,7 @@ (resources.Get "css/586.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/style.css") - (resources.Get "css/skin-65eda28877e04.css") + (resources.Get "css/legacy-theme-skin.css") (resources.Get "css/footer.css") -}} From 118842b41f7985d8b6b62f5f0630a569af999491 Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:28:54 +0200 Subject: [PATCH 19/22] refactor(css): C2.4 rename dynamic-404-590.css -> dynamic-404.css Node-id 590 retired with the homepage delta port (R9). Both ExecuteAsTemplate call sites keep their output name, so the published resource is unchanged. Gate: all bundle fingerprints byte-identical. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --- .../2026-07-12-css-maintainability-redesign.md | 2 +- docs/projects/2509-css-migration/TASK-TRACKER.md | 2 +- docs/projects/2509-css-migration/css-bundle-ownership-map.md | 2 +- .../beaver/assets/css/{dynamic-404-590.css => dynamic-404.css} | 0 themes/beaver/layouts/404.html | 2 +- .../beaver/layouts/partials/assets/homepage-css-resources.html | 2 +- 6 files changed, 5 insertions(+), 5 deletions(-) rename themes/beaver/assets/css/{dynamic-404-590.css => dynamic-404.css} (100%) diff --git a/docs/projects/2509-css-migration/2026-07-12-css-maintainability-redesign.md b/docs/projects/2509-css-migration/2026-07-12-css-maintainability-redesign.md index 1f94cbd4f..39fe0bdad 100644 --- a/docs/projects/2509-css-migration/2026-07-12-css-maintainability-redesign.md +++ b/docs/projects/2509-css-migration/2026-07-12-css-maintainability-redesign.md @@ -169,7 +169,7 @@ gated and revertable. - **C2 — de-obfuscate the shared layer** (criterion 2 start). Re-key the shared partials' fl-node ids to semantic classes (template + component file in the same commit, one node per commit); rename the hash-named skin file and - `dynamic-404-590.css`; land the deferred 586.css:823 cascade hardening. + `dynamic-404.css`; land the deferred 586.css:823 cascade hardening. - **C3 — page re-keying pilots** (criterion 2, easiest pages first). R3c alias technique: rename `.fl-node-xyz` → meaning-carrying class in page template + page CSS, one node-cluster per commit, ZERO baseline changes. Pilots: diff --git a/docs/projects/2509-css-migration/TASK-TRACKER.md b/docs/projects/2509-css-migration/TASK-TRACKER.md index 50acf2fef..c596a9f35 100644 --- a/docs/projects/2509-css-migration/TASK-TRACKER.md +++ b/docs/projects/2509-css-migration/TASK-TRACKER.md @@ -605,7 +605,7 @@ tasks: (fingerprints change — concat input renamed — that is the ONLY expected diff). Name pre-approved? NO — flag in PR for Paul; rename is one-commit revertable if he prefers another name. - - [ ] C2.4 Rename dynamic-404-590.css → dynamic-404.css (node-id 590 is + - [ ] C2.4 Rename dynamic-404.css → dynamic-404.css (node-id 590 is retired). Refs: themes/beaver/layouts/404.html + partials/assets/homepage-css-resources.html. One commit, same gate as C2.3. diff --git a/docs/projects/2509-css-migration/css-bundle-ownership-map.md b/docs/projects/2509-css-migration/css-bundle-ownership-map.md index 2b1aebff5..20f6b76be 100644 --- a/docs/projects/2509-css-migration/css-bundle-ownership-map.md +++ b/docs/projects/2509-css-migration/css-bundle-ownership-map.md @@ -33,7 +33,7 @@ zero FL-Builder export files remain in any slice. | contact-us | `page/contact-us.html` (partial `contact-us-css-resources.html`) | pages/contact-us.css | 18.9K → 17.4K | migrated (R2) | | course-list | `layouts/course/list.html` (repo root, NOT in theme) | pages/course-list.css | 17.6K → 14.6K² | migrated (R1) | | privacy-policy | `page/single.html` (generic pages) | pages/simple-page.css | 17.1K → 14.6K | migrated (R1) | -| not_found | `404.html` | — (404.css, dynamic-404-590.css) | 16.2K → 16.2K | no-FL | +| not_found | `404.html` | — (404.css, dynamic-404.css) | 16.2K → 16.2K | no-FL | | pagination | `list.html` (second bundle) | — (pagination.css only) | 0.2K → 0.2K | no-FL | ¹ careers was a byte-identical verbatim move (3086-layout2 had zero dead diff --git a/themes/beaver/assets/css/dynamic-404-590.css b/themes/beaver/assets/css/dynamic-404.css similarity index 100% rename from themes/beaver/assets/css/dynamic-404-590.css rename to themes/beaver/assets/css/dynamic-404.css diff --git a/themes/beaver/layouts/404.html b/themes/beaver/layouts/404.html index 9d3891ecd..9f402d7e2 100644 --- a/themes/beaver/layouts/404.html +++ b/themes/beaver/layouts/404.html @@ -1,7 +1,7 @@ {{ define "header" }} {{- $cssResources := slice (resources.Get "css/foundations/css-variables.css") - (resources.Get "css/dynamic-404-590.css" | resources.ExecuteAsTemplate "css/dynamic.css" .) + (resources.Get "css/dynamic-404.css" | resources.ExecuteAsTemplate "css/dynamic.css" .) (resources.Get "css/404.css") (resources.Get "css/vendors/base-4.min.css") (resources.Get "css/legacy-theme-skin.css") diff --git a/themes/beaver/layouts/partials/assets/homepage-css-resources.html b/themes/beaver/layouts/partials/assets/homepage-css-resources.html index 7fb1b8734..1343667f7 100644 --- a/themes/beaver/layouts/partials/assets/homepage-css-resources.html +++ b/themes/beaver/layouts/partials/assets/homepage-css-resources.html @@ -6,7 +6,7 @@ (resources.Get "css/companies.css") (resources.Get "css/footer.css") (resources.Get "css/homepage.css") - (resources.Get "css/dynamic-404-590.css" | resources.ExecuteAsTemplate "css/dynamic.css" .) + (resources.Get "css/dynamic-404.css" | resources.ExecuteAsTemplate "css/dynamic.css" .) (resources.Get "css/components/testimonials.css") (resources.Get "css/components/cta-banner.css") (resources.Get "css/pages/homepage.css") From 75cdf2898e5b7e781a0e9990924fe2e18864ee9a Mon Sep 17 00:00:00 2001 From: Paul Keen Date: Sun, 19 Jul 2026 03:34:45 +0200 Subject: [PATCH 20/22] refactor(css): C2.5 delete masked .single-content pre background from 586.css Deferred cascade hardening from the burn-down. The #F5F6F8 declaration never painted: (1) style.css's .blog pre #282a36 loads later at equal specificity on every page that renders .single-content inside .blog; (2) Chroma noClasses=true inlines the dracula background on every fenced block; (3) the only .single-content contexts without a .blog wrapper (simple pages, careers) contain no
 at all (audit-verified).

Gate: per-bundle decl-diff = exactly this one declaration across the 16
586-carrying bundles, 0 extra; codeblock screenshot lock green.

Co-Authored-By: Claude Fable 5 
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
---
 themes/beaver/assets/css/586.css | 1 -
 1 file changed, 1 deletion(-)

diff --git a/themes/beaver/assets/css/586.css b/themes/beaver/assets/css/586.css
index ef9289788..9300bffc2 100644
--- a/themes/beaver/assets/css/586.css
+++ b/themes/beaver/assets/css/586.css
@@ -829,7 +829,6 @@ footer .footer-menu.careers-text .fl-rich-text p:last-child a strong {
   font-size: 16px;
   border: unset;
   padding: 20px;
-  background-color: #F5F6F8;
   border-radius: 16px;
   word-break: unset !important;
 }

From 2a429c38704806f2195ae0fcc310eed9f90e6743 Mon Sep 17 00:00:00 2001
From: Paul Keen 
Date: Sun, 19 Jul 2026 03:36:38 +0200
Subject: [PATCH 21/22] docs(css): C2.6 safe-edit headers on the 5 legacy
 shared files

'affects pages' + ownership-map pointer on 586.css, style.css,
theme-main.css, component-bundle.css, legacy-theme-skin.css
(criterion 4 closure for the legacy layer). Comment-only; gate: all
bundle fingerprints byte-identical.

Co-Authored-By: Claude Fable 5 
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
---
 themes/beaver/assets/css/586.css               | 2 ++
 themes/beaver/assets/css/component-bundle.css  | 2 ++
 themes/beaver/assets/css/legacy-theme-skin.css | 2 ++
 themes/beaver/assets/css/style.css             | 2 ++
 themes/beaver/assets/css/theme-main.css        | 2 ++
 5 files changed, 10 insertions(+)

diff --git a/themes/beaver/assets/css/586.css b/themes/beaver/assets/css/586.css
index 9300bffc2..c2199f6fa 100644
--- a/themes/beaver/assets/css/586.css
+++ b/themes/beaver/assets/css/586.css
@@ -1,3 +1,5 @@
+/* affects pages: 16 of 19 bundles (site-wide) - see docs/projects/2509-css-migration/css-bundle-ownership-map.md
+   Legacy shared layer (Phase C4 strangler target) - verify with bin/qtest before editing. */
 /******* Do not edit this file *******
 Simple Custom CSS and JS - by Silkypress.com
 Saved: Nov 25 2022 | 22:27:19 */
diff --git a/themes/beaver/assets/css/component-bundle.css b/themes/beaver/assets/css/component-bundle.css
index 8087ef043..78fd75184 100644
--- a/themes/beaver/assets/css/component-bundle.css
+++ b/themes/beaver/assets/css/component-bundle.css
@@ -1,3 +1,5 @@
+/* affects pages: blog-list + free-consultation bundles - see docs/projects/2509-css-migration/css-bundle-ownership-map.md
+   Legacy shared layer (Phase C4 strangler target) - verify with bin/qtest before editing. */
 .fl-node-header-nav-row .fl-row-content {
   max-width: 1280px;
 }
diff --git a/themes/beaver/assets/css/legacy-theme-skin.css b/themes/beaver/assets/css/legacy-theme-skin.css
index 140ab44c4..b288912c4 100644
--- a/themes/beaver/assets/css/legacy-theme-skin.css
+++ b/themes/beaver/assets/css/legacy-theme-skin.css
@@ -1,3 +1,5 @@
+/* affects pages: 15 bundles (site-wide) - see docs/projects/2509-css-migration/css-bundle-ownership-map.md
+   Legacy shared layer (Phase C4 strangler target) - verify with bin/qtest before editing. */
 body {
   background-color: #fff;
   color: #121212;
diff --git a/themes/beaver/assets/css/style.css b/themes/beaver/assets/css/style.css
index 8bd0c2f7f..1b402a4e0 100644
--- a/themes/beaver/assets/css/style.css
+++ b/themes/beaver/assets/css/style.css
@@ -1,3 +1,5 @@
+/* affects pages: 15 bundles (site-wide) - see docs/projects/2509-css-migration/css-bundle-ownership-map.md
+   Legacy shared layer (Phase C4 strangler target) - verify with bin/qtest before editing. */
 .fl-node-ha6dj4z7r51f:last-child > .fl-col-content {
   border-right-width: 0;
 }
diff --git a/themes/beaver/assets/css/theme-main.css b/themes/beaver/assets/css/theme-main.css
index a1f671382..178806e5d 100644
--- a/themes/beaver/assets/css/theme-main.css
+++ b/themes/beaver/assets/css/theme-main.css
@@ -1,3 +1,5 @@
+/* affects pages: blog-list + free-consultation bundles - see docs/projects/2509-css-migration/css-bundle-ownership-map.md
+   Legacy shared layer (Phase C4 strangler target) - verify with bin/qtest before editing. */
 :root {
   --jt-primary-color: var(--color-primary);
   --jt-text-color: #121212; /* KEEP LITERAL (value side): shadow token - repointing to var(--color-dark) is a deliberate follow-up decision, not a mechanical swap */

From 3029d255a87b4f71550ab424cb38ce3a57d2e9b6 Mon Sep 17 00:00:00 2001
From: Paul Keen 
Date: Sun, 19 Jul 2026 03:53:17 +0200
Subject: [PATCH 22/22] docs(css): tracker - C2 shipped summary

Co-Authored-By: Claude Fable 5 
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
---
 docs/projects/2509-css-migration/TASK-TRACKER.md | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/docs/projects/2509-css-migration/TASK-TRACKER.md b/docs/projects/2509-css-migration/TASK-TRACKER.md
index c596a9f35..49b57b642 100644
--- a/docs/projects/2509-css-migration/TASK-TRACKER.md
+++ b/docs/projects/2509-css-migration/TASK-TRACKER.md
@@ -461,7 +461,7 @@ follow_ups:
 
 ## 📅 PHASE C (CURRENT PLAN): Post-burn-down cleanup — sprints C1–C3
 
-**Phase Status**: 🔲 Not started (planned 2026-07-18)
+**Phase Status**: 🔄 C1 ✅ (PR #371, merged) · C2 ✅ (PR pending) · C3 next
 **Source**: Spec §"Phase C — post-burn-down cleanup" (revision 2026-07-18) —
 read it FIRST; it defines the gate stack, the preflight rule, the
 dedup-trap warning, and the non-goals (no DOM restructuring, no rule-content
@@ -579,6 +579,19 @@ estimated_commits: ~18-22 (2 preflight, 7+~5+3 swaps, docs)
 
 ### Sprint C2 — de-obfuscate the shared layer (criterion 2 start)
 
+**✅ SHIPPED 2026-07-19** (branch css-migration/c2-deobfuscate-shared, 21 commits):
+C2.1 all 10 testimonial nodes -> testimonials-* (incl. purge-safelist
+companion: /^testimonials-/ + /^cta-banner/ greedy entries replace the
+accidental /^fl-node/ shield for runtime pp-* classes); C2.2 all 7 CTA
+nodes -> cta-banner-* (swept across the partial + 6 inline template
+copies); C2.3 skin -> legacy-theme-skin.css (NAME AWAITING PAUL);
+C2.4 dynamic-404.css; C2.5 586.css masked-background deletion;
+C2.6 safe-edit headers. Gate held: every re-key byte-identical after
+guarded reverse substitution; renames fingerprint-identical.
+FOLLOW-UP for Paul: .jt-reviews-box swiper-arrow design has been
+silently purged in production (runtime classes, no shield) - restoring
+it is an intentional visual change needing a design decision.
+
 **Branch**: `css-migration/c2-deobfuscate-shared`
 **Depends on**: C1 merged (re-key each shared block once, not 7×).
 **Deliverable**: shared partials use semantic classes; zero hash-named CSS