diff --git a/.okf/architecture/css-pipeline.md b/.okf/architecture/css-pipeline.md index 74cf9246d..69f4407fa 100644 --- a/.okf/architecture/css-pipeline.md +++ b/.okf/architecture/css-pipeline.md @@ -4,13 +4,15 @@ title: CSS Build Pipeline (PostCSS + per-bundle PurgeCSS) description: PostCSS pipeline that concatenates per-page CSS resource slices and purges unused rules per bundle before shipping. resource: postcss.config.js tags: [css, build, performance] -timestamp: 2026-08-21T04:17:19Z +timestamp: 2026-08-21T07:45:14Z verified: + - { by: claude/opus-5, at: 2026-08-21T07:45:14Z } + - { by: claude/opus-5, at: 2026-08-21T07:08:22Z } - { by: claude/opus-5, at: 2026-08-21T04:17:19Z } - { by: claude/opus-5, at: 2026-08-21T01:43:19Z } generated: - by: process:okf-migrate - at: 2026-07-12T00:00:00Z + by: claude/opus-5 + at: 2026-08-21T07:45:14Z sources: - resource: "/workflows/css-maintainability-plan.md" title: "css-maintainability-plan" @@ -82,6 +84,17 @@ limitation below is demonstrated somewhere in this file: | `getComputedStyle(el)` | the value that won the cascade for that element | which selector produced it (another rule with the same value is indistinguishable), or what is actually visible - an overlay can cover it | | screenshot + pixel sample | what was painted | why | +**Read the element that PAINTS the text, not the one that matches your +selector** (2026-08-21). Auditing eyebrow contrast, `[class*="eyebrow"]` +matched `.fl-module` wrappers whose own `color` is inherited-but-unpainted; the +audit reported 1.12:1 (near-black on black, i.e. invisible) for a page that +renders fine. Walking down to the deepest element holding the text gave the +real 4.1:1 - a genuine AA failure that the bogus reading would have buried +under an implausible one. FL-Builder markup nests +`.fl-module > .fl-module-content > .fl-rich-text`, so the wrapper is almost +never the painter. A computed-style reading that contradicts the render is the +instrument being wrong, not the page. + Only the last is a fact about the rendered page; the rest are facts about intermediate representations. The technique for each, and the overlay trap that breaks the naive form of `getComputedStyle`, are below: @@ -214,6 +227,34 @@ Sweep result: 12 shape-layer rules across 9 page bundles were still `#000000` and are now `var(--surface-ink)`. Any future dark-surface token move must include them - `grep -rn 'fill: *#000' themes/beaver/assets/css/pages/`. +# The dark band is THREE groups, and a subset ships a seam + +Moving "the footer to `--surface-ink`" is not one edit. Measured while doing it +on 2026-08-21: + +| Group | Count | Where | +|---|---|---| +| footer background | 1 | `footer.css` | +| bottom-edge SVG fills | **12** | `.fl-builder-bottom-edge-layer .fl-shape-content .fl-shape` across 9 `pages/*.css` | +| section bands | **5** | `.home-services`, `.about-achievements`, `.careers-testimonial`, `.service-overview`, `.use-case-details` — each `> .fl-row-content-wrap` | + +A first pass moved the footer and the 12 fills and left the 5 bands at `#000`, +which CREATED the seam the migration exists to remove: `.home-proof`'s edge +computed `rgb(20, 17, 15)` meeting `.home-services` at `rgb(0, 0, 0)`. An earlier +attempt had moved the footer alone and was reverted for the mirror-image reason. + +**And the text on those bands moves with them.** `--color-ruby` measures 4.10:1 +on `#000` but only **3.67:1** on `--surface-ink`, so migrating a band makes any +ruby text on it worse. Two eyebrows that passed the first pass failed after the +bands moved. Band and accent are one change; see +[design/site-palette.md](/design/site-palette.md) for `--ruby-on-ink`. + +The check that catches a subset, run per page in the browser: for each +`.fl-builder-bottom-edge-layer`, compare the shape's computed `fill` against the +NEXT row's `.fl-row-content-wrap` background, and flag any pair that differs +while either side is dark. + + # Legacy liability: FL-Builder export CSS A large portion of shipped CSS (~75K lines at audit time) is diff --git a/.okf/build/ci-gates.md b/.okf/build/ci-gates.md index 0af5708ba..747095ad3 100644 --- a/.okf/build/ci-gates.md +++ b/.okf/build/ci-gates.md @@ -8,6 +8,8 @@ generated: by: process:okf-migrate at: 2026-07-31T16:30:00Z verified: + - by: claude/opus-5 + at: 2026-08-21T07:53:17Z - by: claude/opus-5 at: 2026-08-07T00:00:00Z - by: claude/sonnet-5 @@ -238,6 +240,18 @@ Two more, hit re-recording Linux baselines from CI on 2026-08-20 (see [test-gate - **"no checks reported" has TWO causes - check `mergeable_state` FIRST**: (a) the bot's baseline commit carries `[ci skip]`, so a record dispatch leaves the PR with no new run; (b) far more silent, an UNMERGEABLE PR produces ZERO checks at all - `pull_request` runs are built against a merge ref GitHub cannot compute, so it creates nothing rather than erroring. On 2026-08-20 (b) was the real blocker and (a) was wrongly blamed for 25 minutes; `gh api repos/OWNER/REPO/pulls/N --jq .mergeable_state` returned `dirty`. A baseline record takes ~20 min while master keeps moving, and the record commit plus any `.okf/log.md` edit conflicts easily - merge master and the checks appear. Never read missing checks as "still running" or "passing." - **Record mode has no accept/reject gate**: `FORCE_SCREENSHOT_UPDATE=true` overwrites every baseline blind, with no diff review before the commit. Screen the result by per-file byte-size delta and visually inspect only the outliers - sub-pixel noise lands under ~1.2%, real content changes stand out (2026-08-20: mermaid_post +21%/+24%, nav/use_cases -10%). + **And the outliers are often SOMEBODY ELSE'S work** (2026-08-21). A record + dispatched for a one-colour change wrote 84 Linux baselines: 76 under the noise + floor, 7 footers and CTA bands that were genuinely the change, and one at + **12.44%** - `desktop/blog/tag.png`, whose diff showed different blog POSTS + ("108 posts tagged rails" against 106). Content published since the previous + recording, folded into an unrelated PR. A baseline record snapshots the whole + site, not your diff. `bin/record-baselines ` filters that locally; a CI + dispatch has no filter, so screen and drop after the fact - the record commit + can simply be rebased out (`git rebase --onto ^ `), and on a PR the + screenshot job is `continue-on-error` (`test.yml:72`) so stale baselines report + without blocking. + **Stale Linux baselines drift silently on master** while the PR screenshot gate stays `continue-on-error` (report-only, see below) - two live examples found 2026-08-20: PR #470 updated only the `macos/` mermaid baselines and left `linux/` stale; and `linux/desktop/nav/use_cases.png` was still encoding copy banned by `.okf/content/claims-canon.md` ("Rated 4.8/5 by 32 clients", "2011") that was corrected on the live site on 2026-08-14 - the LIVE SITE was correct, only the frozen PNG carried the stale wording, which is why the banned-string ratchet (a text grep) never caught it. A frozen baseline PNG is not covered by any text validator. # R3-2 correctness + cost fixes (2026-07-31) diff --git a/.okf/build/test-gates.md b/.okf/build/test-gates.md index 559597ae1..5a073e005 100644 --- a/.okf/build/test-gates.md +++ b/.okf/build/test-gates.md @@ -4,8 +4,9 @@ title: Test gates and when they block commits description: bin/qtest --changed is the routine gate; bin/rake test:critical at milestones; bin/test AND bin/dtest once at PR prep (or on explicit confirmation) for themes/, layouts/, or CSS changes. tags: [testing, visual-regression, gates] status: stable -generated: { by: claude/opus-5, at: 2026-08-21T06:44:05Z } +generated: { by: claude/opus-5, at: 2026-08-21T07:42:17Z } verified: + - { by: claude/opus-5, at: 2026-08-21T07:42:17Z } - { by: claude/opus-5, at: 2026-08-21T06:44:05Z } - { by: claude/opus-5, at: 2026-08-21T06:36:48Z } - { by: claude/opus-5, at: 2026-08-21T06:27:54Z } @@ -19,7 +20,7 @@ verified: - { by: claude/sonnet-5, at: 2026-08-20T00:00:00Z } - { by: claude/opus-5, at: 2026-08-20T21:43:35Z } - { by: claude/opus-5, at: 2026-08-20T21:47:30Z } -timestamp: 2026-08-21T06:44:05Z +timestamp: 2026-08-21T07:42:17Z --- # The suites @@ -40,6 +41,38 @@ is `simple-page`); the changed-file→page map lives in the script itself - extend it when adding components or critical files. The macOS full suite remains the only dedup-trap catcher (Linux font resolution masks it) - never finish a component on qtest alone. +# Run the suite on PRISTINE master before trusting a green screenshot run + +A green screenshot run proves nothing until you know the suite is green with NO +change in the tree. Measured in a worktree on 2026-08-21: + +| Suite | Failures on untouched master | +|---|---| +| `bin/rake test:critical` | **13 of 55** | +| `bin/rake test:system` | **18 of 126** | + +A phase-1a.4 CSS change reported "55 screenshots compared, no failures" in that +same worktree - green ONLY because the run had rewritten the baselines with this +machine's output. That is not verification against the repo's baselines, it is +replacement of them, and committing the result bakes local render drift into the +repo, mixed in with the intended change and indistinguishable from it. + +The tell that something else was moving: a blog screenshot diff showed the +article body VERTICALLY SHIFTED. A `background-color` change cannot move layout, +and it nearly got accepted anyway because it arrived batched with diffs that +genuinely were the intended recolour. + +So establish the baseline-of-the-baseline first - `git checkout origin/master -- +themes/ test/fixtures/screenshots/`, build, run. If master is not green here, +this machine cannot produce trustworthy baselines: record them where the +canonical ones came from (`gh workflow run test.yml --ref -f +screenshots=true -f update-baselines=true`), which is the rule +[ci-gates](/build/ci-gates.md) already states for Linux, for the same reason. + +Correctness of the CHANGE is still establishable without the suite - browser +measurement and pixel-sampling the live render - and should be, since that +evidence is independent of baseline drift. + # Tolerance policy **0.0 for refactors** (a refactor must move zero pixels), **<=0.03 for diff --git a/.okf/design/course-landing-components.md b/.okf/design/course-landing-components.md index 4d8f4e5d3..9e70325e8 100644 --- a/.okf/design/course-landing-components.md +++ b/.okf/design/course-landing-components.md @@ -7,8 +7,9 @@ tags: [css, design, course, landing] status: stable generated: by: claude/opus-5 - at: 2026-08-13T00:00:00Z + at: 2026-08-21T07:49:13Z verified: + - { by: claude/opus-5, at: 2026-08-21T07:49:13Z } - by: human:pftg at: 2026-08-13T00:00:00Z --- @@ -60,6 +61,11 @@ mistake-grid CTA, or a module card. # Citations -* [Component library + the shuffle2 reference](../../docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/course-landing-components-2026-08.md) +* Component library + the shuffle2 reference: + `docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/course-landing-components-2026-08.md` + (repo-relative, and the same path as this concept`s `resource:`). Written as a + PATH, not a markdown link: a link escaping the bundle with `../../` resolves + correctly on disk but the validator cannot follow it out of `.okf/`, so it + warns forever and invites someone to "fix" a link that was never broken. * [Visual scroll gate](../workflows/visual-scroll-gate.md) * [ICP profile](../content-strategy/icp-primary-website-target.md) diff --git a/.okf/design/site-palette.md b/.okf/design/site-palette.md index 294033e51..c2a33b1f7 100644 --- a/.okf/design/site-palette.md +++ b/.okf/design/site-palette.md @@ -6,8 +6,8 @@ resource: themes/beaver/assets/css/foundations/css-variables.css tags: [design, palette, css, tokens, adr] generated: by: claude/opus-5 - at: 2026-08-20T00:00:00Z -timestamp: 2026-08-21T03:17:09Z + at: 2026-08-21T07:45:14Z +timestamp: 2026-08-21T07:45:14Z --- # Resolved: LIGHT (ADR-0003, 2026-08-20) @@ -106,8 +106,8 @@ Two consequences, and the second is the one that is easy to miss: footer/dark-surface migration cannot ship before the on-dark accent is decided, or it degrades contrast on every band it touches. -**Candidates derived and measured 2026-08-21. Recommended: `#e85a52`, named -`--ruby-on-ink`.** +**DECIDED and SHIPPED 2026-08-21: `#e85a52`, named `--ruby-on-ink`**, in +`foundations/css-variables.css` (PR #540). Candidates as measured: | Candidate | on `--surface-ink` | on `#000` | on white | |---|---|---|---| @@ -127,14 +127,17 @@ general accent trades an AA failure on dark for one on light. The ramp has `--ruby-700` for "text-on-light where AA needs more" and no counterpart for dark; that gap is the whole issue. -Not yet applied - it changes the rendered colour on every dark band, which is -Paul's call. Tracked in -`docs/projects/2608-site-design-system/README.md` under Outstanding. - -**Until it is named: do not apply a ruby text token to any surface in the -section below.** Neither of the two automated gates catches this - those -homepage sections carry no contrast test, and the screenshot suite passes a -colour change of this size. +Applied in PR #540 to the four eyebrows that measured below AA: +`home-services-eyebrow` and `home-clients-eyebrow` (4.10 -> 6.02), +`about-achievements-eyebrow` and `service-overview-eyebrow` (3.67 -> pass after +their bands migrated). NOT swept site-wide - only rules measured failing on a +dark surface were changed, which is what the reverted 41-rule sweep got wrong. + +**Still true after the decision: neither automated gate catches a contrast +regression here.** Those homepage sections carry no contrast test, and the +screenshot suite passes a colour change of this size. Ruby text landing on a dark +surface must be measured in the browser, per the ladder in +[architecture/css-pipeline.md](/architecture/css-pipeline.md). # Where dark is still deliberate diff --git a/.okf/index.md b/.okf/index.md index 686505a96..e9c1fa5bc 100644 --- a/.okf/index.md +++ b/.okf/index.md @@ -22,6 +22,14 @@ sessions verify the same concept concurrently and a rebase conflicts on the verification really happened, and dropping one falsifies the provenance the field exists to carry (2026-08-20, `build/test-gates.md`). +**Reference files OUTSIDE the bundle by PATH, not by a `../../` markdown link** +(2026-08-21). Such a link resolves fine on disk but the validator cannot follow +it out of `.okf/`, so it warns on every run forever - and a permanent warning +invites someone to "fix" a link that was never broken. Put the canonical +repo-relative path in `resource:` (or `sources:`) frontmatter and write the path +as inline code in the body. Removing the one instance took the bundle's +cross-link warnings to zero. + **Stamp actual UTC - take it from `date -u`, never compose it** (2026-08-20). Eighteen stamps across nine concepts were written as local time carrying a `Z` suffix, putting them ~2h in the future. That is not cosmetic HERE of all diff --git a/.okf/log.md b/.okf/log.md index d4eab25f1..ea0b6be2c 100644 --- a/.okf/log.md +++ b/.okf/log.md @@ -51,6 +51,156 @@ make it green: restructure same-day entries under one heading, and add `timestamp` to the 23 concepts missing it (anchored to each file's last commit time, which is verifiable - never invented). +## 2026-08-21 - PR #540 hands 16 stale Linux baselines to the parallel PR + +Making the debt legible rather than silent, per the async-first rule. The +phase-1a.4 recolour invalidates these Linux baselines, measured from CI run +32460674225 on the branch: + +``` +desktop/blog/index/_pagination desktop/services/_cta-contact_us +desktop/blog/special/codeblocks/bare desktop/services/_footer +desktop/blog/special/codeblocks/indented desktop/services/_overview +desktop/contact_us desktop/services/_services +desktop/homepage/_clients mobile/blog/index/_pagination +desktop/homepage/_cta-contact_us mobile/blog/special/codeblocks/indented +desktop/homepage/_footer mobile/services +desktop/homepage/_services +desktop/homepage/_technologies +``` + +All 16 are dark-band surfaces - footers, CTA bands, section bands, and pages +whose captures include one. The reds are the predicted reds, checked against the +run rather than assumed, per the "a slow failure and a fast failure are different +failures" rule in [build/ci-gates.md](build/ci-gates.md). + +They are NOT recorded on this PR, deliberately. Paul 2026-08-19: Linux rides a +parallel PR. A record was dispatched and dropped when screening found it carried +content drift (see the previous entry), and re-dispatching to curate it here +would take the same instruction the other way. + +Two facts that make merging safe rather than reckless: + +* `test.yml` triggers on `pull_request` and `workflow_dispatch` ONLY - there is + no `push` trigger, so merging does not turn master red; the job simply does not + run there. +* On PRs the job is `continue-on-error` (`test.yml:72`), so it reports. + +Which is also exactly the silent-drift condition ci-gates.md already documents. +This entry exists so the next session picks the list up from a document instead +of re-deriving it from a run that will have aged out. + +## 2026-08-21 - a blind baseline record bakes in content drift + +Dispatched `test.yml -f update-baselines=true` on the phase-1a.4 branch, because +this worktree's macOS render is drifted and cannot produce trustworthy baselines. +The bot recorded **84 Linux baselines** for a change that touches one colour. + +Screened them by the byte-size procedure this bundle already documents in +[build/ci-gates.md](build/ci-gates.md) - "record mode has no accept/reject gate": + +* 76 of 84 under the ~1.2% noise floor +* 8 above it; seven are footers and CTA bands, consistent with the change +* one outlier at **12.44%**: `desktop/blog/tag.png` + +Diffing that outlier showed **different blog posts** - "108 posts tagged rails" +against 106, different titles and dates. That is CONTENT drift published since +the previous recording, not the recolour. A blind record captures whatever the +site says today, and folds it into whatever PR dispatched it. + +So the record commit was dropped from the branch (`git rebase --onto ^ +`, backup tag first). Two reasons, and the second is the load-bearing one: +the PR is CSS-only and 84 mostly-unrelated binaries make its visual evidence +unreadable; and the screenshot job is `continue-on-error` on `pull_request` +(`test.yml:72`), so a stale Linux baseline reports without blocking. Linux rides +its own PR, per Paul 2026-08-19. + +**The generalisable part:** a baseline record is a snapshot of the whole site, +not of your diff. Screen it before accepting, and expect the outliers to be other +people's work. `bin/record-baselines ` exists for exactly this locally; a +CI dispatch has no such filter, so the filtering has to happen after the fact. + +## 2026-08-21 - the bundle's last cross-link warning was not a broken link + +Swept the bundle for claims that rot, after `design/site-palette.md` was found +carrying a closed blocker as open. Two findings, and the first is a +non-finding worth stating. + +**`workflows/site-redesign-rollout.md` does not need fixing, by design.** It +states outright that phase status comes from GIT rather than any document, and +records the reasoning that outlives a phase instead of a state snapshot. Adding +current phase status to it would make it worse. A concept built not to rot is the +counter-example to site-palette, and the difference is whether it stores +REASONING or STATE. + +**The one remaining cross-link warning was a correct link.** +`design/course-landing-components.md` referenced a repo doc with +`../../docs/projects/...`, which resolves fine on disk - verified by listing the +target from the concept's own directory - but the validator cannot follow a link +out of `.okf/`, so it warned on every run. A permanent warning is worse than +noise: it invites someone to "fix" a link that was never broken. + +The canonical path was already in that concept's `resource:` frontmatter, so the +body link was duplicating it. Converted to inline code, and the bundle's +cross-link warnings went to zero. Recorded as a convention in +[index.md](index.md): reference out-of-bundle files by PATH in the body, with the +canonical form in `resource:`/`sources:`. + +A postscript from verifying that: the control `grep -ci .cross-link.` returned 1 +and looked like a regression, because it matched the words in THIS ENTRY'S OWN +HEADING. The real message form is `cross-link target not found`, which returns 0. +A search term general enough to match your own prose about the thing is not a +measurement of the thing - match the tool's actual output string. + +## 2026-08-21 - the on-dark accent is decided, and the dark band is three groups + +Two concepts corrected against what actually shipped in PR #540. + +**[design/site-palette.md](design/site-palette.md) was stale in the way that +matters most.** It carried `#e85a52` as a *recommendation* and said "Not yet +applied - Paul's call", describing an open blocker that is now closed. A cold +session reading it would conclude the phase was still gated, which is exactly the +false state that produced hours of adjacent work instead of the CSS. Now recorded +as DECIDED and SHIPPED, with where it was applied - four eyebrows that MEASURED +below AA, not a site-wide sweep, since sweeping is what the reverted 41-rule +attempt got wrong. + +What survives the decision unchanged, and is re-stated: neither automated gate +catches a contrast regression on those bands. No contrast test covers them and +the screenshot suite passes a colour change of this size. + +**[architecture/css-pipeline.md](architecture/css-pipeline.md) documented how to +HUNT the shape layer but never what the dark band is made of.** It is three +groups - 1 footer background, 12 bottom-edge SVG fills across 9 page files, 5 +section bands - and moving a subset ships a seam. A first pass moved the footer +and the 12 fills, leaving the 5 bands black, and created the seam the migration +exists to remove; an earlier attempt moved the footer alone and was reverted for +the mirror-image reason. + +The coupling that makes them one change: `--color-ruby` measures 4.10:1 on `#000` +but 3.67:1 on `--surface-ink`, so migrating a band makes ruby text on it WORSE. +Two eyebrows that were fine before the bands moved failed after. + +## 2026-08-21 - Phase 1a.4 dark surfaces: what shipped, and two live AA failures + +Shipped in `phase-1a4-dark-surfaces`: the footer and the 12 +`.fl-builder-bottom-edge-layer` shape fills moved onto `--surface-ink` together +(either alone leaves a seam - that is why the earlier attempt was reverted), the +`--ruby-on-ink: #e85a52` token landed (5.39:1 on `--surface-ink` vs +`--color-ruby`'s 3.67:1), and two eyebrows that were failing WCAG AA on the live +homepage at 4.1:1 were fixed to 6.02:1. + +Recorded in [architecture/css-pipeline.md](architecture/css-pipeline.md): the +audit that found those failures first reported 1.12:1, because +`[class*="eyebrow"]` matches the `.fl-module` WRAPPER and the text is painted +three levels down. An implausible reading on a page that renders fine is the +instrument, not the page. + +Scope stopped deliberately short of the remaining 18 ruby eyebrow rules and 36 +hardcoded black backgrounds. Only measured failures were fixed; a blanket sweep +is exactly what produced the reverted AA regression, and several of those blacks +are code-block surfaces, which is a design decision rather than a token rename. + ## 2026-08-21 - what okf_validate actually guards, and the two-spec trap Recorded in [build/test-gates.md](build/test-gates.md), where the gates live. diff --git a/themes/beaver/assets/css/footer.css b/themes/beaver/assets/css/footer.css index 50e13be70..aa4e24aa7 100644 --- a/themes/beaver/assets/css/footer.css +++ b/themes/beaver/assets/css/footer.css @@ -1,5 +1,5 @@ .footer-component { - background-color: black; + background-color: var(--surface-ink); color: white; padding-top: 130px; padding-bottom: 40px; diff --git a/themes/beaver/assets/css/foundations/css-variables.css b/themes/beaver/assets/css/foundations/css-variables.css index abe916d7f..d2294d6b8 100644 --- a/themes/beaver/assets/css/foundations/css-variables.css +++ b/themes/beaver/assets/css/foundations/css-variables.css @@ -75,6 +75,11 @@ /* Ruby tints. --color-ruby #cc342d (5.1:1 on white, AA both directions) and --color-ruby-hover already exist above. */ --ruby-700: #9e2620; /* pressed / text-on-light where AA needs more */ + --ruby-on-ink: #e85a52; /* ruby ON --surface-ink. --color-ruby is 3.67:1 + there (fails AA-normal, large-text only); + this is 5.39:1. Use for any ruby TEXT or icon + on the dark band — not for ruby BACKGROUNDS, + which keep --color-ruby with white on top. */ --ruby-100: #fbeae8; /* tint background */ --ruby-050: #fdf5f4; /* hero blush (course page, campaign heroes) */ diff --git a/themes/beaver/assets/css/pages/about-us.css b/themes/beaver/assets/css/pages/about-us.css index 979dcf201..3d6ad5dec 100644 --- a/themes/beaver/assets/css/pages/about-us.css +++ b/themes/beaver/assets/css/pages/about-us.css @@ -846,7 +846,7 @@ img.mfp-img { padding-bottom: 0px; } .about-achievements > .fl-row-content-wrap { - background-color: #000; + background-color: var(--surface-ink); background-repeat: no-repeat; background-position: center center; background-attachment: scroll; @@ -902,7 +902,7 @@ img.mfp-img { .about-testimonials-cta .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } @@ -1540,7 +1540,7 @@ img.mfp-img { border-bottom-right-radius: px; } .fl-builder-content .about-achievements-eyebrow .fl-module-content .fl-rich-text, .fl-builder-content .about-achievements-eyebrow .fl-module-content .fl-rich-text * { - color: var(--color-ruby); + color: var(--ruby-on-ink); } diff --git a/themes/beaver/assets/css/pages/careers.css b/themes/beaver/assets/css/pages/careers.css index e14bf3a0c..ed3d485eb 100644 --- a/themes/beaver/assets/css/pages/careers.css +++ b/themes/beaver/assets/css/pages/careers.css @@ -763,7 +763,7 @@ img.mfp-img { } } .careers-testimonial > .fl-row-content-wrap { - background-color: #000; + background-color: var(--surface-ink); background-repeat: no-repeat; background-position: center center; background-attachment: scroll; @@ -812,7 +812,7 @@ img.mfp-img { } .careers-positions .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } .careers-positions > .fl-row-content-wrap { diff --git a/themes/beaver/assets/css/pages/clients.css b/themes/beaver/assets/css/pages/clients.css index 6b5ef2155..390388123 100644 --- a/themes/beaver/assets/css/pages/clients.css +++ b/themes/beaver/assets/css/pages/clients.css @@ -1016,7 +1016,7 @@ img.mfp-img { .clients-hero .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } diff --git a/themes/beaver/assets/css/pages/homepage.css b/themes/beaver/assets/css/pages/homepage.css index de620f03d..9c3afda89 100644 --- a/themes/beaver/assets/css/pages/homepage.css +++ b/themes/beaver/assets/css/pages/homepage.css @@ -1823,7 +1823,7 @@ img.mfp-img { .home-proof .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } @@ -1844,7 +1844,7 @@ img.mfp-img { .home-services > .fl-row-content-wrap { - background-color: #000; + background-color: var(--surface-ink); background-repeat: no-repeat; background-position: center center; background-attachment: scroll; @@ -1902,7 +1902,7 @@ img.mfp-img { .home-why-us .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } @@ -3041,7 +3041,7 @@ img.mfp-img { .fl-builder-content .home-services-eyebrow .fl-module-content .fl-rich-text, .fl-builder-content .home-services-eyebrow .fl-module-content .fl-rich-text * { - color: var(--color-ruby); + color: var(--ruby-on-ink); } @@ -3424,7 +3424,7 @@ img.mfp-img { } } .fl-builder-content .home-clients-eyebrow .fl-module-content .fl-rich-text, .fl-builder-content .home-clients-eyebrow .fl-module-content .fl-rich-text * { - color: var(--color-ruby); + color: var(--ruby-on-ink); } diff --git a/themes/beaver/assets/css/pages/services.css b/themes/beaver/assets/css/pages/services.css index f370a9fc2..dcf95e400 100644 --- a/themes/beaver/assets/css/pages/services.css +++ b/themes/beaver/assets/css/pages/services.css @@ -1112,7 +1112,7 @@ img.mfp-img { .services-showcase .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } diff --git a/themes/beaver/assets/css/pages/single-client.css b/themes/beaver/assets/css/pages/single-client.css index 2b9f944c1..29c7457ca 100644 --- a/themes/beaver/assets/css/pages/single-client.css +++ b/themes/beaver/assets/css/pages/single-client.css @@ -181,7 +181,7 @@ transform: scaleX(-1) scaleY(-1); } .cs-more .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } .cs-more > .fl-row-content-wrap { padding-top: 80px; diff --git a/themes/beaver/assets/css/pages/single-service.css b/themes/beaver/assets/css/pages/single-service.css index 136d238ea..2ee3af332 100644 --- a/themes/beaver/assets/css/pages/single-service.css +++ b/themes/beaver/assets/css/pages/single-service.css @@ -808,7 +808,7 @@ img.mfp-img { background-size: cover; } .service-hero .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } @@ -825,7 +825,7 @@ img.mfp-img { .service-overview > .fl-row-content-wrap { - background-color: #000; + background-color: var(--surface-ink); background-repeat: no-repeat; background-position: center center; background-attachment: scroll; @@ -857,7 +857,7 @@ img.mfp-img { .service-clients .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } @@ -1298,7 +1298,7 @@ img.mfp-img { padding-bottom: 40px !important; } .fl-builder-content .service-overview-eyebrow .fl-module-content .fl-rich-text, .fl-builder-content .service-overview-eyebrow .fl-module-content .fl-rich-text * { - color: var(--color-ruby); + color: var(--ruby-on-ink); } diff --git a/themes/beaver/assets/css/pages/single-use-cases.css b/themes/beaver/assets/css/pages/single-use-cases.css index abfd5cb69..3769332f9 100644 --- a/themes/beaver/assets/css/pages/single-use-cases.css +++ b/themes/beaver/assets/css/pages/single-use-cases.css @@ -807,7 +807,7 @@ img.mfp-img { background-size: cover; } .use-case-hero .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } @@ -816,7 +816,7 @@ img.mfp-img { padding-bottom: 0px; } .use-case-details > .fl-row-content-wrap { - background-color: #000; + background-color: var(--surface-ink); background-repeat: no-repeat; background-position: center center; background-attachment: scroll; @@ -848,7 +848,7 @@ img.mfp-img { .use-case-clients .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); } diff --git a/themes/beaver/assets/css/pages/use-cases.css b/themes/beaver/assets/css/pages/use-cases.css index 8f614f73e..b13cd32d8 100644 --- a/themes/beaver/assets/css/pages/use-cases.css +++ b/themes/beaver/assets/css/pages/use-cases.css @@ -1043,7 +1043,7 @@ img.mfp-img { .use-cases-cta .fl-builder-bottom-edge-layer .fl-shape-content .fl-shape { - fill: #000000; + fill: var(--surface-ink); }