refactor(css): WP1.1 sprints 1+2 — font-system-ui extraction + dead Bootstrap :root purge#355
Conversation
…tical.css The careers bundle loads careers-critical.css first and never includes critical/base.css, so its 4 var(--font-system-ui) usages resolved to nothing (invalid at computed-value time, font fell back to inherited). Mirrors the @import already used by critical/base.css line 5. Tests: 46 runs, 124 assertions, 0 failures. Screenshots: 84 compared, 0 diffs. Reviewed: css-reviewer agent — APPROVE (no cascade risk, no :root collision). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ers.css single-career bundle (careers/single.html) loads this file first and has no critical/base.css, so the variable foundation must be imported here. Prep for extracting this file's 7 literal system-ui font stacks to var(--font-system-ui) in the next commit. Tests: 46 runs, 0 failures; 84 screenshots, 0 diffs. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…7 stacks) Replace 7 byte-identical literal system-ui font stacks with var(--font-system-ui) (defined in foundations/css-variables.css, imported by this file in the previous commit). 91 lines eliminated. Intentional exception to the ≤10-line micro-change rule: per-file commit is the documented unit for this mechanical substitution (WP1.1 task 7, TASK-TRACKER.md), all 7 edits are one identical transformation. Tests: macOS 46 runs/0 failures, 84 screenshots 0 diffs; Linux (bin/dtest) 46 runs/0 failures. Reviewer: APPROVE (diff verified hunk-by-hunk). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s (7 stacks) Replace 7 byte-identical literal system-ui stacks with var(--font-system-ui). Variable available via critical/base.css (first in homepage bundle), which imports foundations/css-variables.css. Line 1604's different Bootstrap-reboot stack variant left untouched (converting it would be a value change). 91 lines eliminated. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…cases.css use-cases/single.html loads this file first with no critical/base.css, and neither 3027-layout.css nor the shared layout bundle imports the variable foundation. Prep for extracting this file's 3 literal system-ui stacks in the next commit. Verified :root definition present in the compiled single-use-cases bundle. Tests: 46/0 macOS, 84 screenshots 0 diffs. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… (3 stacks) Replace 3 byte-identical literal system-ui stacks with var(--font-system-ui) (imported in previous commit). The different Bootstrap-reboot variant stack left untouched. 39 lines eliminated. No critical-suite test covers use-case single pages, so verified via chrome-devtools on /use-cases/emergency-cto-leadership/: desktop 1280x800 + mobile 390x844 render correctly, console 0 errors, network 0 failures, h1/.fl-button compute the full system-ui stack via the var. Tests: macOS 46/0 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…(3 stacks) Replace 3 byte-identical literal system-ui stacks with var(--font-system-ui). Variable available on both load paths: service-template bundle via critical/base.css, services/single bundle via 2949-layout.css import (custom properties resolve at computed-value time regardless of source order). Bootstrap-reboot variant untouched. 39 lines eliminated. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; targeted test_service* 17 screenshots 0 diffs. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…3 stacks) Replace 3 byte-identical literal system-ui stacks with var(--font-system-ui). Variable available via critical/base.css (first in clients/single bundle). Bootstrap-reboot variant untouched. 39 lines eliminated. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; targeted test_clients* 9 screenshots 0 diffs. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…itical.css (3 stacks) Replace 3 byte-identical literal system-ui stacks with var(--font-system-ui). Variable available via critical/base.css (first in free-consultation bundle). 39 lines eliminated. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; targeted free_consultation 2 screenshots 0 diffs. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s (3 stacks) Replace 3 byte-identical literal system-ui stacks with var(--font-system-ui). Variable available via critical/base.css (first in services bundle). 39 lines eliminated. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; targeted test_services* 17 screenshots 0 diffs. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ss (1 stack) Replace the single byte-identical literal system-ui stack with var(--font-system-ui), completing the exact-match extraction across all critical CSS files (grep sweep: 0 literal stacks remain). NOTE: review found this file is ORPHANED - no template references it (page/use-cases.html bundles 3021-layout.css instead; repo-wide grep finds zero loaders). This edit is consistency-only and no-op at runtime. Follow-up needed: wire the file into the use-cases bundle if its styles are still wanted, or delete it as dead code. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE (with orphan finding). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…xtraction complete Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
📝 WalkthroughWalkthroughCSS foundations now provide shared font and Ruby color tokens. Critical CSS consumes the font token and removes duplicated Bootstrap variables, while page bundles include the foundation stylesheet and migration tracking records updated sprint status and validation details. ChangesCSS variable migration
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…us-critical.css The 35-line Bootstrap :root block (--blue..--font-family-monospace) is duplicated byte-identically in 8 critical files and has ZERO var() consumers anywhere in themes/, layouts/, assets/, static/, content/ (verified independently by scope agent, reviewer, and lead). Deleting rather than consolidating - no dead-code relocation. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; targeted test_about* 10 screenshots 0 diffs. Reviewer: APPROVE (re-verified all 28 var names and block byte-identity independently). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s-critical.css Same byte-identical 35-line dead block (zero var() consumers repo-wide). The careers bundle keeps vendor base-4.min.css's own copy (untouched). Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; targeted test_careers* 8 screenshots 0 diffs. Chrome-devtools spot check on /careers/ at 1280x800: fonts resolve, hero/nav/CTA correct. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ge-critical.css Same byte-identical 35-line dead block (zero var() consumers repo-wide). Homepage bundle retains the block via fl-common-modules (base.css import chain) until that file's own deletion commit. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; targeted test_homepage* 7 screenshots 0 diffs. Reviewer: APPROVE (traced the import-chain retention claim independently). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-careers.css Same byte-identical 35-line dead block (zero var() consumers repo-wide). single-career bundle retains vendor base-4.min.css's copy (untouched). Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; targeted test_careers_ruby 3 screenshots 0 diffs. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-clients.css Same byte-identical 35-line dead block (zero var() consumers repo-wide). clients/single bundle retains the block via fl-common-modules until its own deletion commit. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; targeted test_clients* 9 screenshots 0 diffs. Chrome-devtools spot check on /clients/agent-inbox/: fonts resolve, hero correct. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-services.css Same byte-identical 35-line dead block (zero var() consumers repo-wide). service-template bundle retains via fl-common-modules; services/single via vendor base-4.min.css. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; targeted test_service* 17 screenshots 0 diffs. Reviewer: APPROVE (FYI noted: pre-existing stray mid-file @charset at line 1333 - queued as future cleanup, untouched here). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-use-cases.css Same byte-identical 35-line dead block (zero var() consumers repo-wide). Bundle retains vendor base-4.min.css's copy. No automated coverage for use-case singles: chrome-devtools verified /use-cases/emergency-cto- leadership/ at 1280x800 - fonts resolve, hero/nav/CTA correct. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…mon-modules.css Final copy outside vendor CSS - this file reaches all 10 base.css bundles. Post-deletion sweep: zero :root blocks remain in critical/; the only source-tree definition of the Bootstrap var set is vendors/base-4.min.css (untouchable). Newest compiled homepage bundle verified: 1 :root (--font-system-ui foundation), 0 --blue definitions. Tests: macOS 46/0, 84 screenshots 0 diffs (one blog-post cover-image load flake on first run, re-verified green in isolation and in full re-run); Linux (bin/dtest) 46/0. Reviewer: APPROVE (independent zero-consumer re-check of all 28 vars across live source; cleared the 5 other :root files as unrelated live tokens). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…urged Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
No template loads this file: page/use-cases.html bundles 3021-layout.css instead; repo-wide reference grep (html/toml/js/rb/ yaml/md) finds only historical planning-doc mentions. Created by 6f76dc9 (inline-CSS extraction), orphaned in a later refactor. Reviewer independently re-verified zero references and ran bin/hugo-build post-deletion (722 pages, 0 errors). Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
themes/beaver/assets/css/critical/single-services.css (1)
1474-1477: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winUse
var(--font-system-ui)forbody
bodystill hardcodes a shorter stack than--font-system-uiand misses the Noto/Liberation/emoji fallbacks. Switching this rule to the shared token keeps the typography consistent with the rest of the theme.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@themes/beaver/assets/css/critical/single-services.css` around lines 1474 - 1477, Update the body rule to use var(--font-system-ui) for font-family instead of the hardcoded stack, preserving the shared theme typography token and its complete fallback list.
🧹 Nitpick comments (1)
themes/beaver/assets/css/critical/single-clients.css (1)
1379-1384: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueBox-sizing selector notation inconsistent with sibling files.
This file uses
*, ::after, ::beforewhilesingle-services.cssandsingle-use-cases.cssuse*, *::before, *::after. Both are functionally equivalent, but normalizing the notation across files in the same PR improves consistency.♻️ Optional: align selector notation with sibling files
*, -::after, -::before { +*::before, +*::after { box-sizing: border-box; }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@themes/beaver/assets/css/critical/single-clients.css` around lines 1379 - 1384, Normalize the box-sizing selectors in the affected rule to match the sibling stylesheet convention: use the universal-element pseudo-element form for both ::before and ::after, while preserving the existing box-sizing declaration.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@themes/beaver/assets/css/critical/single-services.css`:
- Around line 1474-1477: Update the body rule to use var(--font-system-ui) for
font-family instead of the hardcoded stack, preserving the shared theme
typography token and its complete fallback list.
---
Nitpick comments:
In `@themes/beaver/assets/css/critical/single-clients.css`:
- Around line 1379-1384: Normalize the box-sizing selectors in the affected rule
to match the sibling stylesheet convention: use the universal-element
pseudo-element form for both ::before and ::after, while preserving the existing
box-sizing declaration.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: ad738289-5630-4090-9b30-771066a51999
📒 Files selected for processing (12)
docs/projects/2509-css-migration/TASK-TRACKER.mdthemes/beaver/assets/css/critical/about-us-critical.cssthemes/beaver/assets/css/critical/careers-critical.cssthemes/beaver/assets/css/critical/fl-common-modules.cssthemes/beaver/assets/css/critical/free-consultation-critical.cssthemes/beaver/assets/css/critical/homepage-critical.cssthemes/beaver/assets/css/critical/services-critical.cssthemes/beaver/assets/css/critical/single-careers.cssthemes/beaver/assets/css/critical/single-clients.cssthemes/beaver/assets/css/critical/single-services.cssthemes/beaver/assets/css/critical/single-use-cases.cssthemes/beaver/assets/css/critical/use-cases-critical.css
💤 Files with no reviewable changes (2)
- themes/beaver/assets/css/critical/about-us-critical.css
- themes/beaver/assets/css/critical/fl-common-modules.css
@charset is honored only at byte 0 of a stylesheet; these 8 (in 586.css, services-layout.css, fl-common-modules.css x2, single-services.css x2, single-use-cases.css x2) sat mid-file as ignored no-ops left over from old file concatenation. None of the 5 files has a line-1 @charset. Valid line-1 declarations in the other critical files untouched. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE (independent full-tree sweep confirms zero remain). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…g it Prepend css/foundations/css-variables.css as the FIRST resource in blog-single, taxonomy list, not_found, and course-single bundles - the only skin-loading bundles with no --font-system-ui definition. Prep for extracting skin's 6 literal font stacks. Note: the initially planned @import at the top of the skin FILE fails - skin concatenates mid-bundle where @import is invalid CSS, and postcss-import silently drops it (verified in compiled output). Template-level prepend is the only correct wiring for non-first files. Compiled-output verification: blog-single/not_found/course-single/ blog-list each carry exactly 1 :root definition; homepage still 1 (no duplicates - postcss-import skipDuplicates). Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE (ran own build, verified all 5 bundles). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… skin extraction rolled back with root cause Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nly) Replace the two woocommerce button-group stacks and the .fl-page button:visited group stack with var(--font-system-ui). body, h1, and the h1-h6 group DELIBERATELY stay literal, with KEEP LITERAL comments: converting them lets production-only postcss plugins dedup/merge the declarations with earlier identical var() rules and hoist skin's styling up the cascade - reviewer hand-traced h1 dropping 70px->40px (Bootstrap reboot in fl-common-modules wins after the hoist), and the body variant was caught by 17 macOS screenshot diffs in two failed attempts (v1 full 6-stack, v2 5-stack). Gates (option-a protocol): production-bundle rule-level diff shows pure in-place swaps, rule counts identical (contact-us 1195=1195, homepage 2375=2375, reviewer-verified); macOS suite 46/0 with 84 screenshots 0 diffs; Linux (bin/dtest) 46/0; KEEP LITERAL comments verified byte-identical in minified output. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…vigation bundle Prepend foundations/css-variables.css to the inlined navigation bundle so design tokens are defined on EVERY page regardless of per-template bundle wiring - closes the /blog/ gap (blog/list.html has no foundation) and future-proofs new templates. Verified inline in rendered /blog/index.html. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE (verified baseof is the single universal wrapper, 20 templates define main against it). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Name approved by Paul. NOT --color-primary: that token already exists as #1a8cff (blue) with 89 usages; redefining it would repaint them. Zero consumers yet - literal replacements follow per-file with the option-a production-diff gate. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…lor-ruby) Option-a gate: rule counts identical in all 5 checked production bundles, 18 changed lines each = 9 in-place swaps + the :root delta (purgecss variables:true now retains --color-ruby where consumed). Reviewer verified the .blog blockquote same-selector triple has no shared properties, so no dedup collapse possible. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE (independent 5-bundle verification). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… --color-ruby) The inline navigation bundle (baseof) carries the foundation since 987935a, so definition + consumers live in the same inline style block - verified in rendered /blog/index.html (1 definition, 3 var consumers, 0 remaining literals). Comment mention on line 28 untouched. Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Reviewer: APPROVE (verified rendered inline block occurrence counts). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…> --color-ruby) Final replacement: zero #cc342d declaration literals remain outside vendors/ (the token definition and one comment mention are the only occurrences left). blog-list bundle consumers resolve via the inline baseof definition (its compiled bundle has no :root at all - pre-existing purgecss behavior, reviewer-verified against baselines). Tests: macOS 46/0, 84 screenshots 0 diffs; Linux (bin/dtest) 46/0. Mechanism gate: both blog bundles rule-count identical, pure in-place swaps. Reviewer: APPROVE (full inline-definition chain verified). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…uby rollout done Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@themes/beaver/assets/css/style.css`:
- Line 323: Update every bundle that consumes themes/beaver/assets/css/style.css
to load css/foundations/css-variables.css before style.css, ensuring variables
such as --color-ruby are defined before use. Apply this ordering consistently
across all bundle entry points.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 56f8abef-7645-40b4-b734-25441c8f13a3
📒 Files selected for processing (17)
docs/projects/2509-css-migration/TASK-TRACKER.mdthemes/beaver/assets/css/586.cssthemes/beaver/assets/css/critical/fl-common-modules.cssthemes/beaver/assets/css/critical/single-services.cssthemes/beaver/assets/css/critical/single-use-cases.cssthemes/beaver/assets/css/critical/use-cases-critical.cssthemes/beaver/assets/css/foundations/css-variables.cssthemes/beaver/assets/css/navigation.cssthemes/beaver/assets/css/services-layout.cssthemes/beaver/assets/css/single-post.cssthemes/beaver/assets/css/skin-65eda28877e04.cssthemes/beaver/assets/css/style.cssthemes/beaver/layouts/404.htmlthemes/beaver/layouts/baseof.htmlthemes/beaver/layouts/course/single.htmlthemes/beaver/layouts/list.htmlthemes/beaver/layouts/single.html
💤 Files with no reviewable changes (6)
- themes/beaver/assets/css/586.css
- themes/beaver/assets/css/critical/use-cases-critical.css
- themes/beaver/assets/css/services-layout.css
- themes/beaver/assets/css/critical/fl-common-modules.css
- themes/beaver/assets/css/critical/single-use-cases.css
- themes/beaver/assets/css/critical/single-services.css
|
|
||
| .blog .post-tags a:hover { | ||
| color: #cc342d; | ||
| color: var(--color-ruby); |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Verify css-variables.css is bundled before style.css in all consuming templates.
rg -n 'style\.css' themes/beaver/layouts/ --type=html -C5
rg -n 'css-variables' themes/beaver/layouts/ --type=html -C5Repository: jetthoughts/jetthoughts.github.io
Length of output: 22002
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect the shared CSS bundling path and the layouts that call it.
files=(
"themes/beaver/layouts/partials/assets/css-processor.html"
"themes/beaver/layouts/_default/baseof.html"
"themes/beaver/layouts/index.html"
"themes/beaver/layouts/list.html"
"themes/beaver/layouts/single.html"
"themes/beaver/layouts/blog/list.html"
"themes/beaver/layouts/services/single.html"
"themes/beaver/layouts/page/single.html"
"themes/beaver/layouts/page/services.html"
"themes/beaver/layouts/page/use-cases.html"
"themes/beaver/layouts/page/service-template.html"
"themes/beaver/layouts/clients/single.html"
"themes/beaver/layouts/course/single.html"
"themes/beaver/layouts/use-cases/single.html"
"themes/beaver/layouts/page/clients.html"
)
for f in "${files[@]}"; do
if [ -f "$f" ]; then
echo "=== $f ==="
cat -n "$f" | sed -n '1,220p'
echo
fi
doneRepository: jetthoughts/jetthoughts.github.io
Length of output: 50390
Load css-variables.css before style.css in every bundle
Several bundles still include style.css without css/foundations/css-variables.css first, so var(--color-ruby) can be undefined on those pages. Add the variables sheet to each consuming bundle before style.css.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@themes/beaver/assets/css/style.css` at line 323, Update every bundle that
consumes themes/beaver/assets/css/style.css to load
css/foundations/css-variables.css before style.css, ensuring variables such as
--color-ruby are defined before use. Apply this ordering consistently across all
bundle entry points.
Summary
First two sprints of Project 2509 CSS Migration, WP1.1 (CSS Variables Foundation). Total: −700 lines of CSS duplication/dead code (+44/−744), 21 commits, zero visual regressions on both platforms.
Sprint 1 — wire css-variables foundation + extract --font-system-ui (12 commits)
Eliminates all exact-match literal
system-uifont stacks from the critical CSS layer: 25 byte-identical stacks replaced withvar(--font-system-ui), and the pre-existingfoundations/css-variables.csswired (via@import, same pattern ascritical/base.css) into the 3 bundles that never loaded it. This fixed a real defect: /careers/ had 4var(--font-system-ui)usages resolving to nothing. Variant stacks (short system-ui, Bootstrap-reboot) deliberately untouched — converting them would be value changes.Sprint 2 — delete the dead Bootstrap :root block (9 commits)
An identical 35-line Bootstrap
:rootblock (--blue…--font-family-monospace, 28 vars) was copy-pasted in 8 critical files. Three independent checks (scope agent, reviewer, lead) confirmed zerovar()consumers of any of those 28 variables anywhere in live source — so the copies were deleted outright (280 lines), not relocated. The vendor copy inbase-4.min.cssis untouched. Post-sweep: zero:rootblocks remain incritical/; compiled bundles verified.Safety protocol (every commit)
bin/rake test:critical(macOS): 46 runs / 84 screenshots / 0 diffs — per commitbin/dtest(Linux/Docker via Colima): 46 runs / 0 failures — per commitFollow-ups queued (not in this PR)
use-cases-critical.cssis orphaned — no template loads it; wire in or delete.@charsetin single-services.css, single-use-cases.css, fl-common-modules.css (pre-existing concat leftovers; invalid per spec, ignored by browsers).skin-65eda28877e04.cssstill carries 8+ literal font-stack copies — next extraction target.--color-primary/--color-texttoken extraction with the existingvariables/colors.cssnaming.🤖 Generated with Claude Code
Summary by CodeRabbit