ui-style-kit-css 2.4.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +22 -13
  3. package/STYLE-MAP.md +5 -0
  4. package/dist/ui-style-kit.css +607 -196
  5. package/dist/ui-style-kit.min.css +2 -2
  6. package/dist/ui-style-kit.visual.css +607 -196
  7. package/dist/ui-style-kit.visual.min.css +2 -2
  8. package/dist/ui-style-kit.with-bridge.css +607 -196
  9. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  10. package/dist/visual/art-deco.css +421 -11
  11. package/dist/visual/bauhaus.css +2 -2
  12. package/dist/visual/bento.css +2 -2
  13. package/dist/visual/brutalism.css +420 -10
  14. package/dist/visual/clay.css +2 -2
  15. package/dist/visual/cyberpunk.css +428 -18
  16. package/dist/visual/data-terminal.css +427 -17
  17. package/dist/visual/editorial-luxe.css +421 -11
  18. package/dist/visual/industrial-utility.css +420 -10
  19. package/dist/visual/maximalist.css +417 -7
  20. package/dist/visual/minimal-saas.css +427 -16
  21. package/dist/visual/neo-noir.css +2 -2
  22. package/dist/visual/neumorphism.css +421 -11
  23. package/dist/visual/organic-modern.css +2 -2
  24. package/dist/visual/paper-editorial.css +421 -11
  25. package/dist/visual/retro-glass.css +421 -11
  26. package/dist/visual/retrofuturism.css +421 -11
  27. package/dist/visual/tactile.css +420 -10
  28. package/dist/visual/technical-blueprint.css +433 -23
  29. package/dist/visual/y2k.css +420 -10
  30. package/docs/BAUHAUS.md +1 -1
  31. package/docs/CLAY.md +1 -1
  32. package/docs/COLOR-THEMES.md +63 -0
  33. package/docs/ECOSYSTEM.md +2 -2
  34. package/docs/ORGANIC-MODERN.md +1 -1
  35. package/docs/PUBLISHING.md +10 -10
  36. package/docs/RELEASE-2.4.1.md +35 -0
  37. package/docs/STYLE-GUIDE.md +1 -1
  38. package/manifest.json +7 -2
  39. package/package.json +3 -2
  40. package/styles/art-deco.css +6 -6
  41. package/styles/bauhaus.css +12 -12
  42. package/styles/bento.css +28 -27
  43. package/styles/brutalism.css +5 -5
  44. package/styles/clay.css +5 -5
  45. package/styles/components.css +2 -2
  46. package/styles/cyberpunk.css +14 -14
  47. package/styles/data-terminal.css +12 -12
  48. package/styles/editorial-luxe.css +6 -6
  49. package/styles/industrial-utility.css +5 -5
  50. package/styles/maximalist.css +2 -2
  51. package/styles/minimal-saas.css +13 -12
  52. package/styles/native-elements.css +1 -1
  53. package/styles/neo-noir.css +8 -8
  54. package/styles/neumorphism.css +6 -6
  55. package/styles/organic-modern.css +8 -8
  56. package/styles/paper-editorial.css +6 -6
  57. package/styles/retro-glass.css +6 -6
  58. package/styles/retrofuturism.css +6 -6
  59. package/styles/tactile.css +7 -7
  60. package/styles/technical-blueprint.css +18 -18
  61. package/styles/theme-colors.css +410 -0
  62. package/styles/y2k.css +5 -5
@@ -1,11 +1,11 @@
1
1
  # Publishing Guide
2
2
 
3
- ## 2.4.0 release workflow
3
+ ## 2.4.1 release workflow
4
4
 
5
- The current checkout is a release candidate. [Release preparation notes](RELEASE-2.4.0.md)
5
+ The current checkout is a release candidate. [Release preparation notes](RELEASE-2.4.1.md)
6
6
  record the current local scope and gates; existing visual-QA documents are historical
7
- evidence, not proof that subsequent edits passed browser validation. Replace the
8
- 2.4.0 changelog's `Unreleased` marker with the actual release date at approved publication.
7
+ evidence, not proof that subsequent edits passed browser validation. The 2.4.1
8
+ changelog entry must carry the approved publication date before tagging.
9
9
 
10
10
  Update the tracked `wiki/` sources with the README and docs. Publishing those pages
11
11
  to GitHub Wiki is a separate handoff, not a side effect of the CSS build. No jsdoc2md
@@ -13,9 +13,9 @@ documentation generator is configured in this package; reusable JavaScript helpe
13
13
  use JSDoc-compatible comments, and the checked-in build owns generated CSS, manifests,
14
14
  icons, README size measurements, and demo asset hashes.
15
15
 
16
- Prepare `ui-style-kit-css@2.4.0` on its release branch, open a pull request against `main`, and merge only after the fast automated gate is green and any requested manual demo review is complete. The aligned companion set is `layout-style-css@3.1.0` and `interactive-surface-css@1.7.0`.
16
+ Prepare `ui-style-kit-css@2.4.1` on its release branch, open a pull request against `main`, and merge only after the fast automated gate is green and any requested manual demo review is complete. The aligned companion set is `layout-style-css@3.1.0` and `interactive-surface-css@1.7.0`.
17
17
 
18
- Do not push `v2.4.0` before the reviewed release commit is on `main`. A pushed version tag runs Release Version Alignment, which validates the tag/package/changelog contract and creates the GitHub Release; publishing that release triggers the protected npm workflow.
18
+ Do not push `v2.4.1` before the reviewed release commit is on `main`. A pushed version tag runs Release Version Alignment, which validates the tag/package/changelog contract and creates the GitHub Release; publishing that release triggers the protected npm workflow.
19
19
 
20
20
  Release Version Alignment owns the fast automated release gate: lint, build, unit checks, the tagged Chromium release-smoke Playwright suite, and packed ecosystem preflight with `--skip-clean-install`. The visual-baseline suite, full UI matrix, and clean-install ecosystem matrix are manual escalation tools, not default push or publish blockers. The protected npm workflow intentionally does not rerun browser gates; it revalidates the immutable tag, package contracts, browser-free compatibility checks, companion commit reachability, the explicit release preflight with `--skip-clean-install`, npm token presence, npm owner authorization, and registry state before publishing.
21
21
 
@@ -33,7 +33,7 @@ Manual release review should open the checked-in demo, exercise the changed pres
33
33
 
34
34
  The local UI matrix stops after the first failing 100-case block. Every case has a stable global number, so diagnose each failure with `npm run test:matrix:case -- --case N`. The rest of that block has already completed; after its targeted failures pass, continue at the next untested block with `npm run test:matrix -- --from-block B`. Already green blocks do not run again. `npm run test:matrix:block -- --block B` and `npm run test:matrix:range -- --from N --to M` provide bounded alternatives. `test:matrix:raw` is reserved for the manual sharded automation workflow.
35
35
 
36
- `npm run release:preflight` validates the shared manifests and compatibility contract, queries npm for every exact minimum/current version, resolves every export from the candidate tarball, checks maintained documentation against installed packages, and can run the current/minimum clean-install browser matrix when `--skip-clean-install` is omitted. Normal UI preflight remains strict and queries `ui-style-kit-css@2.4.0` alongside every other documented exact version. The release workflows pass `--candidate-package ui-style-kit-css`, which excludes only that exact current version while it is absent from npm and still requires every published minimum and companion version. The default PR and release workflows also pass `--skip-clean-install`; run `release:verify:full` or `check:ecosystem:packs` when clean-install browser proof is explicitly requested. The gate performs no publish, tag, release, or deployment mutation and is therefore safe to execute on pull requests.
36
+ `npm run release:preflight` validates the shared manifests and compatibility contract, queries npm for every exact minimum/current version, resolves every export from the candidate tarball, checks maintained documentation against installed packages, and can run the current/minimum clean-install browser matrix when `--skip-clean-install` is omitted. Normal UI preflight remains strict and queries `ui-style-kit-css@2.4.1` alongside every other documented exact version. The release workflows pass `--candidate-package ui-style-kit-css`, which excludes only that exact current version while it is absent from npm and still requires every published minimum and companion version. The default PR and release workflows also pass `--skip-clean-install`; run `release:verify:full` or `check:ecosystem:packs` when clean-install browser proof is explicitly requested. The gate performs no publish, tag, release, or deployment mutation and is therefore safe to execute on pull requests.
37
37
 
38
38
  `npm run check` rebuilds dist CSS, runs stylelint, executes package and API contracts, validates all theme/mode contrast pairs, enforces the Browserslist compatibility contract through `check:compat`, verifies CSS ownership, and confirms package metadata. Default browser gates cover the release-smoke Playwright set; visual-baseline and full matrix checks are explicit manual gates. `npm run check:ecosystem:packs` remains the full standalone, pairwise, and all-three packed package compatibility proof for canonical visual/theme/state/layout imports and deprecated bridge imports in both supported matrices. `npm run pack:dry-run` shows the exact files that would publish without re-entering `prepack`.
39
39
 
@@ -41,7 +41,7 @@ The local UI matrix stops after the first failing 100-case block. Every case has
41
41
 
42
42
  `npm run check:ecosystem:minimum` downloads and repacks the declared minimum published runtime versions: `ui-style-kit-css@2.1.0`, `interactive-surface-css@1.5.0`, and `layout-style-css@3.0.0`. Those tarballs predate the additive shared-manifest policy introduced on the coordinated branches, so the minimum matrix validates their exact installed versions and published CSS entry points; current packed heads retain the stricter manifest-schema and current-documentation checks. `npm run check:ecosystem:packs` runs current first and minimum second.
43
43
 
44
- The current matrix checks `ui-style-kit-css@2.4.0` as the active candidate only while its exact npm version is absent, `interactive-surface-css@1.7.0` as a published release, and `layout-style-css@3.1.0` as a published release. The minimum published matrix remains `ui-style-kit-css@2.1.0`, `interactive-surface-css@1.5.0`, and `layout-style-css@3.0.0`.
44
+ The current matrix checks `ui-style-kit-css@2.4.1` as the active candidate only while its exact npm version is absent, `interactive-surface-css@1.7.0` as a published release, and `layout-style-css@3.1.0` as a published release. The minimum published matrix remains `ui-style-kit-css@2.1.0`, `interactive-surface-css@1.5.0`, and `layout-style-css@3.0.0`.
45
45
 
46
46
  Both matrices install fresh tarball consumers for UI only, Interaction only, Layout only, every pair, and all three. Chromium then checks selected theme paint, native and prefixed components, interaction focus/disabled/loading/selected/persistent states, Layout wrappers/primitives/recipes/personalities, console cleanliness, and an empty external-request log. Three text-free baselines under `tests/snapshots/clean-install/` cover the highest-risk integrated combinations.
47
47
 
@@ -76,7 +76,7 @@ npm run check:ecosystem:packs -- --layout-repo ../Layout-Style-CSS --interactive
76
76
  npm publish
77
77
  ```
78
78
 
79
- `prepublishOnly` runs `npm run release:verify`, so a direct `npm publish` still has the default fast release gate. For GitHub releases, push or dispatch the matching package tag, such as `v2.4.0`, only after the release PR is merged. The release workflows verify that `package.json`, `package-lock.json`, `CHANGELOG.md`, generated dist banners, and ecosystem pins are aligned before publishing. Dispatch the protected npm workflow from the current `main` workflow file when recovering publication for a release that has already passed Release Version Alignment.
79
+ `prepublishOnly` runs `npm run release:verify`, so a direct `npm publish` still has the default fast release gate. For GitHub releases, push or dispatch the matching package tag, such as `v2.4.1`, only after the release PR is merged. The release workflows verify that `package.json`, `package-lock.json`, `CHANGELOG.md`, generated dist banners, and ecosystem pins are aligned before publishing. Dispatch the protected npm workflow from the current `main` workflow file when recovering publication for a release that has already passed Release Version Alignment.
80
80
 
81
81
  The repository `NPM_TOKEN` secret must authenticate to npm as a user that appears in `npm owner ls ui-style-kit-css`. If the token belongs to another npm account or lacks package publish rights, npm may report a misleading registry `E404` at publish time.
82
82
 
@@ -88,4 +88,4 @@ npm run release:minor
88
88
  npm run release:major
89
89
  ```
90
90
 
91
- Use patch for compatible fixes, minor for new themes, presets, component capabilities, or browser-support contracts, and major for incompatible public API changes. The complete preset-specific native-control identity and browser coverage contract make `2.4.0` a minor release.
91
+ Use patch for compatible fixes, minor for new themes, presets, component capabilities, or browser-support contracts, and major for incompatible public API changes. Version `2.4.1` is the explicitly approved patch release for the already-merged, backward-compatible five-theme expansion; future feature versioning continues to follow this policy.
@@ -0,0 +1,35 @@
1
+ # v2.4.1 release preparation
2
+
3
+ ## Scope
4
+
5
+ UI Style Kit CSS 2.4.1 packages the five shared color themes already merged into
6
+ `main`: Signal Yellow, Botanical Green, Cobalt Electric, Stone Graphite, and Walnut
7
+ Clay. Each theme provides light, dark, and contrast palettes through the existing
8
+ `data-theme` and `data-mode` contract.
9
+
10
+ The release preserves the v2 selectors and package entrypoints. It does not add or
11
+ remove preset identifiers, exports, cascade layers, or companion-library ownership
12
+ boundaries.
13
+
14
+ ## Release surfaces
15
+
16
+ - Package, lockfile, public manifest, web manifests, structured metadata, generated
17
+ CSS banners, compatibility metadata, README, wiki sources, and maintained release
18
+ documentation identify `2.4.1`.
19
+ - The changelog records the theme additions, expanded 4,500-case browser matrix,
20
+ demo metadata refresh, and Signal Yellow foreground correction under the dated
21
+ `2.4.1` entry.
22
+ - The aligned companion versions remain `interactive-surface-css@1.7.0` and
23
+ `layout-style-css@3.1.0`.
24
+
25
+ ## Verification boundary
26
+
27
+ Run focused version and compatibility tests after updating source metadata, then run
28
+ the repository's final `npm run release:verify` gate. That gate rebuilds generated
29
+ assets, lints authored CSS, executes unit and release-smoke browser checks, validates
30
+ contrast, compatibility, ownership, package contents, ecosystem preflight, audit,
31
+ and the dry-run tarball.
32
+
33
+ A local green gate does not publish anything. Merge the reviewed release branch into
34
+ `main` before creating `v2.4.1`; the tag-alignment workflow creates the GitHub Release,
35
+ and the protected npm workflow publishes the immutable tagged package.
@@ -23,7 +23,7 @@
23
23
  | Paper Editorial | News, magazines, journals, cultural sites and story-led publishing |
24
24
  | Neo-Noir | Cinematic portfolios, nightlife, premium creative studios and dramatic product sites |
25
25
 
26
- All styles share the same 20 color schemes through `styles/theme-colors.css`, so changing `data-theme` affects the active color scheme independently from the selected UI treatment.
26
+ All styles share the same 25 color schemes through `styles/theme-colors.css`, so changing `data-theme` affects the active color scheme independently from the selected UI treatment.
27
27
 
28
28
  Omit `data-theme` to use the chosen preset's native light, dark, or contrast colors.
29
29
  The [demo guide](DEMO-SHOWCASE.md) explains the unified style-specific gallery and
package/manifest.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "breakingChange": "increment-schemaVersion-before-removing-or-renaming-fields"
6
6
  },
7
7
  "name": "ui-style-kit-css",
8
- "version": "2.4.0",
8
+ "version": "2.4.1",
9
9
  "cascadeLayers": [
10
10
  "ui-style-kit.theme_colors",
11
11
  "ui-style-kit.native_elements",
@@ -215,7 +215,12 @@
215
215
  "newsprint-crimson",
216
216
  "foundry-amber",
217
217
  "soft-orchid",
218
- "electric-noir"
218
+ "electric-noir",
219
+ "signal-yellow",
220
+ "botanical-green",
221
+ "cobalt-electric",
222
+ "stone-graphite",
223
+ "walnut-clay"
219
224
  ],
220
225
  "modes": [
221
226
  "light",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ui-style-kit-css",
3
- "version": "2.4.0",
3
+ "version": "2.4.1",
4
4
  "description": "CSS theme and UI style preset library for accessible websites, dashboards, admin interfaces, and client-facing pages.",
5
5
  "style": "dist/ui-style-kit.css",
6
6
  "main": "dist/ui-style-kit.css",
@@ -219,8 +219,9 @@
219
219
  "stylelint": "~17.14.1"
220
220
  },
221
221
  "overrides": {
222
+ "colord": "2.9.4",
222
223
  "fast-uri": "3.1.6",
223
- "js-yaml": "4.3.1",
224
+ "js-yaml": "4.3.2",
224
225
  "nanoid": "3.3.18",
225
226
  "postcss": "8.5.23"
226
227
  },
@@ -379,7 +379,7 @@
379
379
  .deco-title, .deco-heading, .deco-kicker, .deco-button, .deco-badge, .deco-nav-link { font-family: var(--deco-font-heading); }
380
380
  .deco-title { margin: 0; color: var(--deco-text); font-size: clamp(2rem, 5vw, 3.7rem); line-height: 1.02; letter-spacing: -0.045em; }
381
381
  .deco-heading { margin: 0; color: var(--deco-text); font-size: clamp(1.2rem, 2.5vw, 2rem); line-height: 1.15; letter-spacing: -0.03em; }
382
- .deco-kicker { margin: 0; color: var(--deco-primary); font-size: .82rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
382
+ .deco-kicker { margin: 0; color: var(--usk-primary-ink, var(--deco-primary)); font-size: .82rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
383
383
  .deco-subtitle, .deco-copy { margin: 0; color: var(--deco-text-muted); line-height: 1.65; }
384
384
  .deco-text-muted { color: var(--deco-text-muted); }
385
385
  .deco-divider { width: 100%; height: 1px; border: 0; background: var(--deco-border); }
@@ -513,7 +513,7 @@
513
513
  Utilities
514
514
  ========================================================= */
515
515
 
516
- .deco-text-primary { color: var(--deco-primary); } .deco-text-secondary { color: var(--deco-secondary); } .deco-text-accent { color: var(--deco-accent); } .deco-text-success { color: var(--deco-success); } .deco-text-warning { color: var(--deco-warning); } .deco-text-danger { color: var(--deco-danger); }
516
+ .deco-text-primary { color: var(--usk-primary-ink, var(--deco-primary)); } .deco-text-secondary { color: var(--deco-secondary); } .deco-text-accent { color: var(--usk-accent-ink, var(--deco-accent)); } .deco-text-success { color: var(--deco-success); } .deco-text-warning { color: var(--deco-warning); } .deco-text-danger { color: var(--deco-danger); }
517
517
  .deco-bg-primary { background: var(--deco-primary); color: var(--deco-on-primary); } .deco-bg-secondary { background: var(--deco-secondary); color: var(--deco-on-secondary); }
518
518
  .deco-border { border: 1px solid var(--deco-border); } .deco-rounded { border-radius: var(--deco-radius-md); } .deco-rounded-lg { border-radius: var(--deco-radius-lg); } .deco-rounded-xl { border-radius: var(--deco-radius-xl); } .deco-pill { border-radius: var(--deco-radius-pill); }
519
519
  .deco-sr-only, .deco-visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
@@ -621,7 +621,7 @@
621
621
  .deco-button.deco-button-outline-heavy,
622
622
  .deco-button-outline-heavy {
623
623
  background: transparent;
624
- color: var(--deco-primary);
624
+ color: var(--usk-primary-ink, var(--deco-primary));
625
625
  border-style: solid;
626
626
  border-width: 2px;
627
627
  border-color: var(--deco-primary);
@@ -691,7 +691,7 @@
691
691
 
692
692
  .deco-eyebrow {
693
693
  margin: 0;
694
- color: var(--deco-primary);
694
+ color: var(--usk-primary-ink, var(--deco-primary));
695
695
  font-family: var(--deco-font-heading);
696
696
  font-size: .76rem;
697
697
  font-weight: 900;
@@ -767,7 +767,7 @@
767
767
  .deco-nav-link { border-radius: 0; text-transform: uppercase; letter-spacing: .08em; }
768
768
  .deco-input, .deco-textarea, .deco-select { border-radius: 0; }
769
769
  .deco-card-media, .deco-media-scrim, .deco-feature-strip, .deco-callout-bar { border-radius: 0; border-style: double; border-width: 3px; }
770
- .deco-icon-medallion, .deco-badge-seal { border-style: double; border-width: 4px; background: transparent; color: var(--deco-primary); box-shadow: 0 0 0 .25rem rgb(var(--deco-primary-rgb) / .07); }
770
+ .deco-icon-medallion, .deco-badge-seal { border-style: double; border-width: 4px; background: transparent; color: var(--usk-primary-ink, var(--deco-primary)); box-shadow: 0 0 0 .25rem rgb(var(--deco-primary-rgb) / .07); }
771
771
  .deco-feature-item { text-align: center; grid-template-columns: 1fr; justify-items: center; }
772
772
  .deco-card-accent-edge { border-inline-start-width: 3px; }
773
773
 
@@ -943,7 +943,7 @@
943
943
  .deco-button-primary { background: linear-gradient(135deg, var(--deco-primary), var(--deco-success)); color: var(--deco-on-primary); border-color: var(--deco-border); }
944
944
  .deco-button-secondary { background: linear-gradient(135deg, var(--deco-secondary), var(--deco-warning)); color: var(--deco-on-secondary); border-color: var(--deco-border); }
945
945
  .deco-button-danger { background: linear-gradient(135deg, var(--deco-danger), rgb(var(--deco-danger-rgb) / .72)); color: var(--deco-on-danger); border-color: var(--deco-border); }
946
- .deco-button-ghost { background: transparent; color: var(--deco-primary); border-color: transparent; }
946
+ .deco-button-ghost { background: transparent; color: var(--usk-primary-ink, var(--deco-primary)); border-color: transparent; }
947
947
  }
948
948
 
949
949
  @layer ui-style-kit.art_deco {
@@ -393,7 +393,7 @@
393
393
  .bau-title, .bau-heading, .bau-kicker, .bau-button, .bau-badge, .bau-nav-link { font-family: var(--bau-font-heading); }
394
394
  .bau-title { margin: 0; color: var(--bau-text); font-size: clamp(2.35rem, 6vw, 4.65rem); font-stretch: condensed; font-weight: 950; line-height: .94; letter-spacing: -0.075em; text-transform: uppercase; }
395
395
  .bau-heading { margin: 0; color: var(--bau-text); font-size: clamp(1.15rem, 2.4vw, 2rem); font-stretch: condensed; font-weight: 950; line-height: 1.05; letter-spacing: .02em; text-transform: uppercase; }
396
- .bau-kicker { margin: 0; color: var(--bau-primary); font-size: .82rem; font-weight: 950; letter-spacing: .16em; text-transform: uppercase; }
396
+ .bau-kicker { margin: 0; color: var(--usk-primary-ink, var(--bau-primary)); font-size: .82rem; font-weight: 950; letter-spacing: .16em; text-transform: uppercase; }
397
397
  .bau-subtitle, .bau-copy { margin: 0; color: var(--bau-text-muted); line-height: 1.65; }
398
398
  .bau-text-muted { color: var(--bau-text-muted); }
399
399
  .bau-divider { width: 100%; height: var(--bau-rule-width); border: 0; background: var(--bau-text); }
@@ -540,7 +540,7 @@
540
540
  Utilities
541
541
  ========================================================= */
542
542
 
543
- .bau-text-primary { color: var(--bau-primary); } .bau-text-secondary { color: var(--bau-secondary); } .bau-text-accent { color: var(--bau-accent); } .bau-text-success { color: var(--bau-success); } .bau-text-warning { color: var(--bau-warning); } .bau-text-danger { color: var(--bau-danger); }
543
+ .bau-text-primary { color: var(--usk-primary-ink, var(--bau-primary)); } .bau-text-secondary { color: var(--bau-secondary); } .bau-text-accent { color: var(--usk-accent-ink, var(--bau-accent)); } .bau-text-success { color: var(--bau-success); } .bau-text-warning { color: var(--bau-warning); } .bau-text-danger { color: var(--bau-danger); }
544
544
  .bau-bg-primary { background: var(--bau-primary); color: var(--bau-on-primary); } .bau-bg-secondary { background: var(--bau-secondary); color: var(--bau-on-secondary); }
545
545
  .bau-border { border: 2px solid var(--bau-border); } .bau-rounded { border-radius: var(--bau-radius-md); } .bau-rounded-lg { border-radius: var(--bau-radius-lg); } .bau-rounded-xl { border-radius: var(--bau-radius-xl); } .bau-pill { border-radius: var(--bau-radius-pill); }
546
546
  .bau-sr-only, .bau-visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
@@ -653,7 +653,7 @@
653
653
  .bau-button.bau-button-outline-heavy,
654
654
  .bau-button-outline-heavy {
655
655
  background: transparent;
656
- color: var(--bau-primary);
656
+ color: var(--usk-primary-ink, var(--bau-primary));
657
657
  border-style: solid;
658
658
  border-width: 2px;
659
659
  border-color: var(--bau-primary);
@@ -725,7 +725,7 @@
725
725
 
726
726
  .bau-eyebrow {
727
727
  margin: 0;
728
- color: var(--bau-primary);
728
+ color: var(--usk-primary-ink, var(--bau-primary));
729
729
  font-family: var(--bau-font-heading);
730
730
  font-size: .76rem;
731
731
  font-weight: 900;
@@ -941,7 +941,7 @@
941
941
  .bau-button-primary { background: var(--bau-primary); color: var(--bau-on-primary); border-color: var(--bau-primary); }
942
942
  .bau-button-secondary { background: var(--bau-secondary); color: var(--bau-on-secondary); border-color: var(--bau-secondary); }
943
943
  .bau-button-danger { background: var(--bau-danger); color: var(--bau-on-danger); border-color: var(--bau-danger); }
944
- .bau-button-ghost { background: transparent; color: var(--bau-primary); border-color: transparent; }
944
+ .bau-button-ghost { background: transparent; color: var(--usk-primary-ink, var(--bau-primary)); border-color: transparent; }
945
945
  }
946
946
 
947
947
  @layer ui-style-kit.bauhaus {
@@ -970,7 +970,7 @@
970
970
  [data-ui="bauhaus"][data-mode] .bau-sheet svg { display:block; flex:0 0 auto }
971
971
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-panel { background:var(--bau-surface); border:2px solid var(--bau-border); border-radius:0; box-shadow:none; min-height:0; overflow:hidden; padding:14px }
972
972
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-panel>header { align-items:center; border-bottom:2px solid currentColor; display:flex; justify-content:space-between; margin-bottom:10px; padding-bottom:6px }
973
- [data-ui="bauhaus"][data-mode] .bau-sheet .bau-panel>header>svg { color:var(--bau-primary); height:18px; width:18px }
973
+ [data-ui="bauhaus"][data-mode] .bau-sheet .bau-panel>header>svg { color:var(--usk-primary-ink, var(--bau-primary)); height:18px; width:18px }
974
974
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-sidebar { background:var(--bau-workshop-rail-bg); border-right:3px solid var(--bau-workshop-rail-text); color:var(--bau-workshop-rail-text); display:flex; flex-direction:column; height:100%; overflow:hidden; padding:24px 0 14px }
975
975
  [data-ui="bauhaus"][data-mode] .bau-sheet[data-mode="light"] .bau-sidebar { border-right-color:var(--bau-on-warning) }
976
976
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-brand { align-items:center; display:flex; gap:10px; padding:0 18px 24px }
@@ -1005,9 +1005,9 @@
1005
1005
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-bottom-grid { grid-template-columns:5.6fr 2.05fr 4.15fr }
1006
1006
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-hero { background:var(--bau-surface); padding:0; position:relative }
1007
1007
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-hero-copy { left:34px; position:absolute; top:48px; z-index:2 }
1008
- [data-ui="bauhaus"][data-mode] .bau-sheet .bau-eyebrow { color:var(--bau-primary); font-family:var(--bau-font-heading); font-size:12px; font-weight:700; letter-spacing:0 }
1008
+ [data-ui="bauhaus"][data-mode] .bau-sheet .bau-eyebrow { color:var(--usk-primary-ink, var(--bau-primary)); font-family:var(--bau-font-heading); font-size:12px; font-weight:700; letter-spacing:0 }
1009
1009
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-hero h1 { font-family:var(--bau-font-heading); font-size:57px; font-weight:800; letter-spacing:0; line-height:0.83; margin:14px 0 17px; max-width:490px; text-transform:uppercase }
1010
- [data-ui="bauhaus"][data-mode] .bau-sheet .bau-hero h1 span { color:var(--bau-primary); font-size:37px; letter-spacing:0 }
1010
+ [data-ui="bauhaus"][data-mode] .bau-sheet .bau-hero h1 span { color:var(--usk-primary-ink, var(--bau-primary)); font-size:37px; letter-spacing:0 }
1011
1011
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-hero p { font-size:12px; font-weight:600; letter-spacing:0; max-width:350px }
1012
1012
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-inline-actions { display:flex; gap:8px; margin-top:24px }
1013
1013
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-button { align-items:center; background:var(--bau-surface); border:2px solid var(--bau-border); border-radius:0; display:inline-flex; font-family:var(--bau-font-heading); font-size:12px; font-weight:700; gap:7px; justify-content:center; letter-spacing:0; min-height:35px; padding:0 15px; text-transform:uppercase; transition:background-color 100ms linear,color 100ms linear,transform 100ms linear }
@@ -1017,7 +1017,7 @@
1017
1017
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-button.is-hover { background:var(--bau-primary-hover); transform:translate(-2px,-2px) }
1018
1018
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-button.is-secondary { background:transparent; border-color:var(--bau-border); color:var(--bau-text) }
1019
1019
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-button.is-danger { background:var(--bau-danger); border-color:var(--bau-danger); color:var(--bau-on-primary) }
1020
- [data-ui="bauhaus"][data-mode] .bau-sheet .bau-button.is-ghost { background:transparent; border-color:transparent; color:var(--bau-primary) }
1020
+ [data-ui="bauhaus"][data-mode] .bau-sheet .bau-button.is-ghost { background:transparent; border-color:transparent; color:var(--usk-primary-ink, var(--bau-primary)) }
1021
1021
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-button:disabled { background:var(--bau-surface-soft); border-color:var(--bau-surface-soft); color:var(--bau-on-primary); cursor:not-allowed; opacity:0.7 }
1022
1022
  [data-ui="bauhaus"][data-mode] .bau-sheet[data-mode="dark"] .bau-button:disabled { background:var(--bau-surface-soft); border-color:var(--bau-surface-soft); color:var(--bau-text-muted) }
1023
1023
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-actions { display:grid; gap:6px; grid-template-rows:auto repeat(7,1fr) }
@@ -1072,7 +1072,7 @@
1072
1072
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-input-icon.is-end>button svg { height:12px; width:12px }
1073
1073
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-field input[type="color"] { padding:2px }
1074
1074
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-file input { height:27px; opacity:0; position:absolute; top:13px; z-index:2 }
1075
- [data-ui="bauhaus"][data-mode] .bau-sheet .bau-file>span:last-child { align-items:center; background:var(--bau-surface); border:1px dashed var(--bau-border); color:var(--bau-primary); display:flex; font-size:12px; font-weight:700; gap:5px; height:27px; justify-content:center; text-transform:uppercase }
1075
+ [data-ui="bauhaus"][data-mode] .bau-sheet .bau-file>span:last-child { align-items:center; background:var(--bau-surface); border:1px dashed var(--bau-border); color:var(--usk-primary-ink, var(--bau-primary)); display:flex; font-size:12px; font-weight:700; gap:5px; height:27px; justify-content:center; text-transform:uppercase }
1076
1076
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-file>span:last-child svg { height:12px; width:12px }
1077
1077
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-choices fieldset { border:0; margin:0 0 7px; padding:0 }
1078
1078
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-choices legend { font-size:12px; font-weight:800; margin-bottom:4px }
@@ -1118,7 +1118,7 @@
1118
1118
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-tooltip-panel [role="tooltip"] { background:var(--bau-workshop-rail-bg); border:2px solid var(--bau-warning); bottom:9px; color:var(--bau-on-primary); font-size:12px; left:39px; line-height:1.45; padding:8px; position:absolute; width:105px }
1119
1119
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-loading { align-items:center; display:flex; flex-wrap:wrap; gap:.75rem }
1120
1120
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-loading>header { flex:1 0 100% }
1121
- [data-ui="bauhaus"][data-mode] .bau-sheet .bau-spinner { color:var(--bau-primary); height:31px; width:31px }
1121
+ [data-ui="bauhaus"][data-mode] .bau-sheet .bau-spinner { color:var(--usk-primary-ink, var(--bau-primary)); height:31px; width:31px }
1122
1122
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-spin { animation:bau-spin 1s linear infinite }
1123
1123
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-skeleton { display:grid; gap:5px }
1124
1124
  [data-ui="bauhaus"][data-mode] .bau-sheet .bau-skeleton span { animation:bau-workshop-pulse 1.5s steps(2,end) infinite; background:var(--bau-border); display:block; height:7px }
@@ -1285,7 +1285,7 @@
1285
1285
  [data-ui="bauhaus"][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) { box-shadow: none; border-color: var(--bau-border); }
1286
1286
  [data-ui="bauhaus"][data-mode] :where(dialog) { background: var(--bau-surface-strong); color: var(--bau-text); border: 2px solid var(--bau-border); box-shadow: .5rem .5rem 0 var(--bau-warning); }
1287
1287
  .bau-spinner, [data-ui="bauhaus"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) {
1288
- display: inline-block; flex: 0 0 auto; inline-size: 1.75rem; block-size: 1.75rem; border: 2px solid currentColor; border-block-start-color: transparent; border-radius: 50%; background: none; color: var(--bau-primary); box-shadow: none; clip-path: none; animation: bau-spin 1s linear infinite;
1288
+ display: inline-block; flex: 0 0 auto; inline-size: 1.75rem; block-size: 1.75rem; border: 2px solid currentColor; border-block-start-color: transparent; border-radius: 50%; background: none; color: var(--usk-primary-ink, var(--bau-primary)); box-shadow: none; clip-path: none; animation: bau-spin 1s linear infinite;
1289
1289
  }
1290
1290
  .bau-spinner-sm { inline-size: 1rem; block-size: 1rem; }
1291
1291
  .bau-spinner-lg { inline-size: 2.5rem; block-size: 2.5rem; }
package/styles/bento.css CHANGED
@@ -396,7 +396,7 @@
396
396
  .bento-title, .bento-heading, .bento-kicker, .bento-button, .bento-badge, .bento-nav-link { font-family: var(--bento-font-heading); }
397
397
  .bento-title { margin: 0; color: var(--bento-text); font-size: clamp(2.1rem, 5.5vw, 3.9rem); font-weight: 800; line-height: 1.02; letter-spacing: -.045em; }
398
398
  .bento-heading { margin: 0; color: var(--bento-text); font-size: clamp(1.25rem, 2.75vw, 2.1rem); font-weight: 800; line-height: 1.15; letter-spacing: -.025em; }
399
- .bento-kicker { margin: 0; color: var(--bento-primary); font-size: .82rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
399
+ .bento-kicker { margin: 0; color: var(--usk-primary-ink, var(--bento-primary)); font-size: .82rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
400
400
  .bento-subtitle, .bento-copy { margin: 0; color: var(--bento-text-muted); line-height: 1.55; }
401
401
  .bento-text-muted { color: var(--bento-text-muted); }
402
402
  .bento-divider { width: 100%; height: 1px; border: 0; background: var(--bento-border); }
@@ -436,10 +436,10 @@
436
436
  .bento-button:active, .bento-icon-button:active, .bento-button[aria-pressed="true"], .bento-icon-button[aria-pressed="true"], .bento-button.is-active, .bento-icon-button.is-active { transform: translateY(1px); box-shadow: inset 0 2px 6px rgb(var(--bento-text-rgb) / .14); }
437
437
  .bento-button-primary { background: var(--bento-primary); color: var(--bento-on-primary); border-color: var(--bento-primary); }
438
438
  .bento-button-primary:hover { background: var(--bento-primary-hover); border-color: var(--bento-primary-hover); }
439
- .bento-button-secondary { background: rgb(var(--bento-surface-strong-rgb) / var(--bento-panel-alpha)); color: var(--bento-primary); border-color: rgb(var(--bento-primary-rgb) / .32); box-shadow: none; }
439
+ .bento-button-secondary { background: rgb(var(--bento-surface-strong-rgb) / var(--bento-panel-alpha)); color: var(--usk-primary-ink, var(--bento-primary)); border-color: rgb(var(--bento-primary-rgb) / .32); box-shadow: none; }
440
440
  .bento-button-secondary:hover { background: rgb(var(--bento-primary-rgb) / .06); border-color: rgb(var(--bento-primary-rgb) / .52); }
441
441
  .bento-button-danger { background: var(--bento-danger); color: var(--bento-on-danger); border-color: var(--bento-danger); }
442
- .bento-button-ghost { background: transparent; color: var(--bento-primary); border-color: transparent; box-shadow: none; }
442
+ .bento-button-ghost { background: transparent; color: var(--usk-primary-ink, var(--bento-primary)); border-color: transparent; box-shadow: none; }
443
443
  .bento-icon-button { width: 2.75rem; padding: 0; border-radius: var(--bento-control-radius); }
444
444
  .bento-button:disabled, .bento-icon-button:disabled, .bento-disabled { opacity: .55; cursor: not-allowed; transform: none; }
445
445
 
@@ -491,7 +491,7 @@
491
491
 
492
492
  .bento-badge { display: inline-flex; align-items: center; gap: var(--bento-space-1); min-height: 1.75rem; padding: .38rem .72rem; background: var(--bento-tile-secondary-bg); color: var(--bento-text); border: 1px solid var(--bento-tile-edge); border-radius: var(--bento-radius-sm); box-shadow: inset 0 1px 0 rgb(var(--bento-surface-strong-rgb) / .62); font-size: .8125rem; font-weight: 800; line-height: 1; }
493
493
  .bento-badge-primary { background: var(--bento-primary); color: var(--bento-on-primary); border-color: var(--bento-primary); }
494
- .bento-badge-secondary { background: rgb(var(--bento-primary-rgb) / .10); color: var(--bento-primary); border-color: transparent; }
494
+ .bento-badge-secondary { background: rgb(var(--bento-primary-rgb) / .10); color: var(--usk-primary-ink, var(--bento-primary)); border-color: transparent; }
495
495
  .bento-badge-success { background: rgb(var(--bento-success-rgb) / .14); color: var(--bento-success); border-color: transparent; }
496
496
  .bento-badge-warning { background: rgb(var(--bento-warning-rgb) / .14); color: var(--bento-warning); border-color: transparent; }
497
497
  .bento-badge-danger { background: rgb(var(--bento-danger-rgb) / .14); color: var(--bento-danger); border-color: transparent; }
@@ -531,7 +531,7 @@
531
531
  Utilities
532
532
  ========================================================= */
533
533
 
534
- .bento-text-primary { color: var(--bento-primary); } .bento-text-secondary { color: var(--bento-secondary); } .bento-text-accent { color: var(--bento-accent); } .bento-text-success { color: var(--bento-success); } .bento-text-warning { color: var(--bento-warning); } .bento-text-danger { color: var(--bento-danger); }
534
+ .bento-text-primary { color: var(--usk-primary-ink, var(--bento-primary)); } .bento-text-secondary { color: var(--bento-secondary); } .bento-text-accent { color: var(--usk-accent-ink, var(--bento-accent)); } .bento-text-success { color: var(--bento-success); } .bento-text-warning { color: var(--bento-warning); } .bento-text-danger { color: var(--bento-danger); }
535
535
  .bento-bg-primary { background: var(--bento-primary); color: var(--bento-on-primary); } .bento-bg-secondary { background: var(--bento-secondary); color: var(--bento-on-secondary); }
536
536
  .bento-border { border: 1px solid var(--bento-border); } .bento-rounded { border-radius: var(--bento-radius-md); } .bento-rounded-lg { border-radius: var(--bento-radius-lg); } .bento-rounded-xl { border-radius: var(--bento-radius-xl); } .bento-pill { border-radius: var(--bento-radius-pill); }
537
537
  .bento-sr-only, .bento-visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
@@ -558,7 +558,7 @@
558
558
  grid-row: auto;
559
559
  }
560
560
  .bento-stat { display: grid; gap: .25rem; }
561
- .bento-stat-value { color: var(--bento-primary); font-size: clamp(2rem, 4vw, 3rem); font-weight: 950; line-height: 1; }
561
+ .bento-stat-value { color: var(--usk-primary-ink, var(--bento-primary)); font-size: clamp(2rem, 4vw, 3rem); font-weight: 950; line-height: 1; }
562
562
  .bento-stat-label { color: var(--bento-text-muted); font-weight: 750; overflow-wrap: normal; word-break: normal; }
563
563
 
564
564
  @container (min-width: 34rem) {
@@ -666,7 +666,7 @@
666
666
  .bento-button.bento-button-outline-heavy,
667
667
  .bento-button-outline-heavy {
668
668
  background: transparent;
669
- color: var(--bento-primary);
669
+ color: var(--usk-primary-ink, var(--bento-primary));
670
670
  border-style: solid;
671
671
  border-width: 2px;
672
672
  border-color: var(--bento-primary);
@@ -736,7 +736,7 @@
736
736
 
737
737
  .bento-eyebrow {
738
738
  margin: 0;
739
- color: var(--bento-primary);
739
+ color: var(--usk-primary-ink, var(--bento-primary));
740
740
  font-family: var(--bento-font-heading);
741
741
  font-size: .76rem;
742
742
  font-weight: 900;
@@ -785,7 +785,7 @@
785
785
  .bento-card-feature { background: var(--bento-tile-accent-bg); border-radius: var(--bento-tile-radius); }
786
786
  .bento-icon-medallion {
787
787
  background: rgb(var(--bento-primary-rgb) / .10);
788
- color: var(--bento-primary);
788
+ color: var(--usk-primary-ink, var(--bento-primary));
789
789
  border: 1px solid rgb(var(--bento-primary-rgb) / .20);
790
790
  border-radius: var(--bento-radius-md);
791
791
  box-shadow: var(--bento-shadow-sm);
@@ -808,7 +808,7 @@
808
808
  }
809
809
  .bento-button.bento-button-outline-heavy, .bento-button-outline-heavy {
810
810
  background: rgb(var(--bento-surface-strong-rgb) / var(--bento-panel-alpha));
811
- color: var(--bento-primary);
811
+ color: var(--usk-primary-ink, var(--bento-primary));
812
812
  border-width: 1px;
813
813
  border-color: rgb(var(--bento-primary-rgb) / .32);
814
814
  border-radius: var(--bento-control-radius);
@@ -999,7 +999,7 @@
999
999
  .bento-button-primary { background: var(--bento-primary); color: var(--bento-on-primary); border-color: var(--bento-primary); }
1000
1000
  .bento-button-secondary { background: var(--bento-secondary); color: var(--bento-on-secondary); border-color: var(--bento-secondary); }
1001
1001
  .bento-button-danger { background: var(--bento-danger); color: var(--bento-on-danger); border-color: var(--bento-danger); }
1002
- .bento-button-ghost { background: transparent; color: var(--bento-primary); border-color: transparent; }
1002
+ .bento-button-ghost { background: transparent; color: var(--usk-primary-ink, var(--bento-primary)); border-color: transparent; }
1003
1003
  }
1004
1004
 
1005
1005
  @layer ui-style-kit.bento {
@@ -1064,7 +1064,7 @@
1064
1064
  }
1065
1065
 
1066
1066
  [data-ui=bento][data-mode] .bento-panel > header { align-items: center; display: flex; justify-content: space-between; margin-bottom: 11px; }
1067
- [data-ui=bento][data-mode] .bento-panel > header > svg { color: var(--bento-mosaic-primary); height: 17px; width: 17px; }
1067
+ [data-ui=bento][data-mode] .bento-panel > header > svg { color: var(--usk-primary-ink, var(--bento-mosaic-primary)); height: 17px; width: 17px; }
1068
1068
 
1069
1069
  [data-ui=bento][data-mode] .bento-sidebar {
1070
1070
  background: var(--bento-mosaic-panel);
@@ -1086,7 +1086,7 @@
1086
1086
  background: var(--bento-mosaic-primary-soft);
1087
1087
  border: 1px solid var(--bento-mosaic-primary);
1088
1088
  border-radius: 8px;
1089
- color: var(--bento-mosaic-primary);
1089
+ color: var(--usk-primary-ink, var(--bento-mosaic-primary));
1090
1090
  display: flex;
1091
1091
  height: 30px;
1092
1092
  justify-content: center;
@@ -1188,9 +1188,9 @@
1188
1188
  [data-ui=bento][data-mode] .bento-hero { background: var(--bento-mosaic-primary-soft); border-color: var(--bento-border); padding: 0; position: relative; }
1189
1189
  [data-ui=bento][data-mode] .bento-sheet[data-mode="dark"] .bento-hero { background: var(--bento-mosaic-primary-soft); border-color: var(--bento-border); }
1190
1190
  [data-ui=bento][data-mode] .bento-hero-copy { left: 40px; position: absolute; top: 55px; z-index: 2; }
1191
- [data-ui=bento][data-mode] .bento-eyebrow { color: var(--bento-mosaic-primary); font-size: 12px; font-weight: 800; letter-spacing: 0; }
1191
+ [data-ui=bento][data-mode] .bento-eyebrow { color: var(--usk-primary-ink, var(--bento-mosaic-primary)); font-size: 12px; font-weight: 800; letter-spacing: 0; }
1192
1192
  [data-ui=bento][data-mode] .bento-hero h1 { font-size: 50px; font-weight: 850; letter-spacing: 0; line-height: 1.08; margin: 11px 0 14px; }
1193
- [data-ui=bento][data-mode] .bento-hero h1 span { color: var(--bento-mosaic-primary); }
1193
+ [data-ui=bento][data-mode] .bento-hero h1 span { color: var(--usk-primary-ink, var(--bento-mosaic-primary)); }
1194
1194
  [data-ui=bento][data-mode] .bento-hero p { color: var(--bento-mosaic-muted); font-size: 13px; max-width: 270px; }
1195
1195
  [data-ui=bento][data-mode] .bento-inline-actions { display: flex; gap: 10px; margin-top: 20px; }
1196
1196
  [data-ui=bento][data-mode] .bento-hero-art { height: 345px; object-fit: contain; object-position: center; position: absolute; right: -30px; top: 20px; transform: rotate(-3deg); width: 420px; z-index: 1; }
@@ -1218,10 +1218,10 @@
1218
1218
  [data-ui=bento][data-mode] .bento-button.is-hover,
1219
1219
  [data-ui=bento][data-mode] .bento-button.is-busy { background: var(--bento-mosaic-primary); border-color: var(--bento-mosaic-primary); color: var(--bento-on-primary); }
1220
1220
  [data-ui=bento][data-mode] .bento-button.is-hover { background: var(--bento-mosaic-primary-hover); box-shadow: 0 8px 18px var(--bento-mosaic-primary); }
1221
- [data-ui=bento][data-mode] .bento-button.is-secondary { background: transparent; border-color: var(--bento-mosaic-primary); color: var(--bento-mosaic-primary); }
1221
+ [data-ui=bento][data-mode] .bento-button.is-secondary { background: transparent; border-color: var(--bento-mosaic-primary); color: var(--usk-primary-ink, var(--bento-mosaic-primary)); }
1222
1222
  [data-ui=bento][data-mode] .bento-sheet[data-mode="dark"] .bento-button.is-secondary { border-color: var(--bento-border); color: var(--bento-link); }
1223
1223
  [data-ui=bento][data-mode] .bento-button.is-danger { background: var(--bento-mosaic-danger-soft); border-color: var(--bento-mosaic-danger); color: var(--bento-mosaic-danger); }
1224
- [data-ui=bento][data-mode] .bento-button.is-ghost { background: transparent; border-color: transparent; color: var(--bento-mosaic-primary); }
1224
+ [data-ui=bento][data-mode] .bento-button.is-ghost { background: transparent; border-color: transparent; color: var(--usk-primary-ink, var(--bento-mosaic-primary)); }
1225
1225
  [data-ui=bento][data-mode] .bento-button:disabled { color: var(--bento-mosaic-faint); cursor: not-allowed; opacity: 0.62; }
1226
1226
 
1227
1227
  [data-ui=bento][data-mode] .bento-actions { display: grid; gap: 5px; grid-template-rows: auto repeat(7, 1fr); }
@@ -1302,7 +1302,7 @@
1302
1302
  [data-ui=bento][data-mode] .bento-input-icon.is-end > button svg { height: 12px; width: 12px; }
1303
1303
  [data-ui=bento][data-mode] .bento-field input[type="color"] { padding: 2px; }
1304
1304
  [data-ui=bento][data-mode] .bento-file input { height: 26px; opacity: 0; position: absolute; top: 12px; z-index: 2; }
1305
- [data-ui=bento][data-mode] .bento-file > span:last-child { align-items: center; background: var(--bento-mosaic-panel-soft); border: 1px dashed var(--bento-mosaic-line-strong); border-radius: 6px; color: var(--bento-mosaic-primary); display: flex; font-size: 12px; font-weight: 750; gap: 5px; height: 26px; justify-content: center; }
1305
+ [data-ui=bento][data-mode] .bento-file > span:last-child { align-items: center; background: var(--bento-mosaic-panel-soft); border: 1px dashed var(--bento-mosaic-line-strong); border-radius: 6px; color: var(--usk-primary-ink, var(--bento-mosaic-primary)); display: flex; font-size: 12px; font-weight: 750; gap: 5px; height: 26px; justify-content: center; }
1306
1306
  [data-ui=bento][data-mode] .bento-file > span:last-child svg { height: 12px; width: 12px; }
1307
1307
 
1308
1308
  [data-ui=bento][data-mode] .bento-choices fieldset { border: 0; margin: 0 0 7px; padding: 0; }
@@ -1327,10 +1327,10 @@
1327
1327
 
1328
1328
  [data-ui=bento][data-mode] .bento-segment { background: var(--bento-mosaic-panel-soft); border: 1px solid var(--bento-mosaic-line); border-radius: 7px; display: grid; grid-template-columns: repeat(3, 1fr); padding: 2px; }
1329
1329
  [data-ui=bento][data-mode] .bento-segment button { background: transparent; border: 0; border-radius: 5px; color: var(--bento-mosaic-muted); font-size: 12px; min-height: 24px; }
1330
- [data-ui=bento][data-mode] .bento-segment button.is-active { background: var(--bento-mosaic-panel-raised); box-shadow: 0 2px 8px rgba(24, 35, 72, 0.1); color: var(--bento-mosaic-primary); font-weight: 800; }
1330
+ [data-ui=bento][data-mode] .bento-segment button.is-active { background: var(--bento-mosaic-panel-raised); box-shadow: 0 2px 8px rgba(24, 35, 72, 0.1); color: var(--usk-primary-ink, var(--bento-mosaic-primary)); font-weight: 800; }
1331
1331
 
1332
1332
  [data-ui=bento][data-mode] .bento-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 11px; }
1333
- [data-ui=bento][data-mode] .bento-status { align-items: center; background: var(--bento-mosaic-primary-soft); border: 1px solid var(--bento-mosaic-primary); border-radius: 5px; color: var(--bento-mosaic-primary); display: inline-flex; font-size: 12px; font-weight: 800; min-height: 22px; padding: 0 8px; white-space: nowrap; }
1333
+ [data-ui=bento][data-mode] .bento-status { align-items: center; background: var(--bento-mosaic-primary-soft); border: 1px solid var(--bento-mosaic-primary); border-radius: 5px; color: var(--usk-primary-ink, var(--bento-mosaic-primary)); display: inline-flex; font-size: 12px; font-weight: 800; min-height: 22px; padding: 0 8px; white-space: nowrap; }
1334
1334
  [data-ui=bento][data-mode] .bento-status.is-violet { background: var(--bento-mosaic-violet-soft); color: var(--bento-mosaic-violet); }
1335
1335
  [data-ui=bento][data-mode] .bento-status.is-success { background: var(--bento-mosaic-success-soft); color: var(--bento-mosaic-success); }
1336
1336
  [data-ui=bento][data-mode] .bento-status.is-warning { background: var(--bento-mosaic-warning-soft); color: var(--bento-mosaic-warning); }
@@ -1361,13 +1361,13 @@
1361
1361
  [data-ui=bento][data-mode] .bento-tooltip > header,
1362
1362
  [data-ui=bento][data-mode] .bento-loading > header { margin-bottom: 7px; }
1363
1363
  [data-ui=bento][data-mode] .bento-tooltip { overflow: visible; position: relative; z-index: 4; }
1364
- [data-ui=bento][data-mode] .bento-tooltip > button { align-items: center; background: var(--bento-mosaic-primary-soft); border: 0; border-radius: 50%; color: var(--bento-mosaic-primary); display: flex; height: 23px; justify-content: center; width: 23px; }
1364
+ [data-ui=bento][data-mode] .bento-tooltip > button { align-items: center; background: var(--bento-mosaic-primary-soft); border: 0; border-radius: 50%; color: var(--usk-primary-ink, var(--bento-mosaic-primary)); display: flex; height: 23px; justify-content: center; width: 23px; }
1365
1365
  [data-ui=bento][data-mode] .bento-tooltip > button svg { height: 13px; width: 13px; }
1366
1366
  [data-ui=bento][data-mode] .bento-tooltip [role="tooltip"] { background: var(--bento-tooltip-bg); border: 1px solid var(--bento-border); border-radius: 7px; bottom: 11px; color: var(--bento-on-primary); font-size: 12px; left: 41px; line-height: 1.5; padding: 9px; position: absolute; width: 102px; }
1367
1367
 
1368
1368
  [data-ui=bento][data-mode] .bento-loading { align-items: center; display: grid; grid-template-columns: 40px 1fr; grid-template-rows: auto 1fr; }
1369
1369
  [data-ui=bento][data-mode] .bento-loading > header { width: 100%; }
1370
- [data-ui=bento][data-mode] .bento-spinner { color: var(--bento-mosaic-primary); height: 31px; width: 31px; }
1370
+ [data-ui=bento][data-mode] .bento-spinner { color: var(--usk-primary-ink, var(--bento-mosaic-primary)); height: 31px; width: 31px; }
1371
1371
  [data-ui=bento][data-mode] .bento-spin { animation: bento-mosaic-spin 1s linear infinite; }
1372
1372
  @keyframes bento-mosaic-spin { to { transform: rotate(360deg); } }
1373
1373
  [data-ui=bento][data-mode] .bento-skeleton { display: grid; gap: 5px; }
@@ -1407,11 +1407,11 @@
1407
1407
  [data-ui=bento][data-mode] .bento-table-panel > footer { align-items: center; color: var(--bento-mosaic-muted); display: flex; font-size: 12px; justify-content: space-between; padding-top: 9px; }
1408
1408
  [data-ui=bento][data-mode] .bento-table-panel > footer nav { display: flex; gap: 4px; }
1409
1409
  [data-ui=bento][data-mode] .bento-table-panel > footer nav button { align-items: center; background: var(--bento-mosaic-panel-soft); border: 1px solid var(--bento-mosaic-line); border-radius: 6px; display: flex; font-size: 12px; height: 26px; justify-content: center; padding: 0; width: 26px; }
1410
- [data-ui=bento][data-mode] .bento-table-panel > footer nav button.is-active { background: var(--bento-mosaic-primary-soft); border-color: var(--bento-mosaic-primary); color: var(--bento-mosaic-primary); font-weight: 800; }
1410
+ [data-ui=bento][data-mode] .bento-table-panel > footer nav button.is-active { background: var(--bento-mosaic-primary-soft); border-color: var(--bento-mosaic-primary); color: var(--usk-primary-ink, var(--bento-mosaic-primary)); font-weight: 800; }
1411
1411
 
1412
1412
  [data-ui=bento][data-mode] .bento-service-card { display: flex; flex-direction: column; }
1413
1413
  [data-ui=bento][data-mode] .bento-service-card > header { align-items: center; justify-content: flex-start; }
1414
- [data-ui=bento][data-mode] .bento-service-icon { align-items: center; background: var(--bento-mosaic-primary-soft); border: 1px solid var(--bento-mosaic-primary); border-radius: 9px; color: var(--bento-mosaic-primary); display: flex; height: 38px; justify-content: center; width: 38px; }
1414
+ [data-ui=bento][data-mode] .bento-service-icon { align-items: center; background: var(--bento-mosaic-primary-soft); border: 1px solid var(--bento-mosaic-primary); border-radius: 9px; color: var(--usk-primary-ink, var(--bento-mosaic-primary)); display: flex; height: 38px; justify-content: center; width: 38px; }
1415
1415
  [data-ui=bento][data-mode] .bento-service-icon svg { height: 22px; width: 22px; }
1416
1416
  [data-ui=bento][data-mode] .bento-service-card > header > div { align-items: center; display: flex; flex-wrap: wrap; gap: 5px; }
1417
1417
  [data-ui=bento][data-mode] .bento-service-card > header .bento-status { min-height: 18px; padding-inline: 5px; }
@@ -1424,7 +1424,7 @@
1424
1424
  [data-ui=bento][data-mode] .bento-listbox { background: var(--bento-mosaic-panel-soft); border: 1px solid var(--bento-mosaic-line); border-radius: 8px; display: grid; margin-bottom: 8px; overflow: hidden; }
1425
1425
  [data-ui=bento][data-mode] .bento-listbox button { align-items: center; background: transparent; border: 0; border-bottom: 1px solid var(--bento-mosaic-line); display: flex; font-size: 12px; justify-content: space-between; min-height: 27px; padding: 0 8px; text-align: left; }
1426
1426
  [data-ui=bento][data-mode] .bento-listbox button:last-child { border-bottom: 0; }
1427
- [data-ui=bento][data-mode] .bento-listbox button[aria-selected="true"] { color: var(--bento-mosaic-primary); font-weight: 800; }
1427
+ [data-ui=bento][data-mode] .bento-listbox button[aria-selected="true"] { color: var(--usk-primary-ink, var(--bento-mosaic-primary)); font-weight: 800; }
1428
1428
  [data-ui=bento][data-mode] .bento-listbox button svg { height: 12px; width: 12px; }
1429
1429
  [data-ui=bento][data-mode] .bento-service-card details { color: var(--bento-mosaic-muted); font-size: 12px; margin-bottom: 8px; }
1430
1430
  [data-ui=bento][data-mode] .bento-service-card summary { align-items: center; color: var(--bento-mosaic-text); cursor: pointer; display: flex; font-weight: 800; justify-content: space-between; list-style: none; }
@@ -1444,7 +1444,7 @@
1444
1444
  [data-ui=bento][data-mode] .bento-dialog-surface dialog:not([open]) { display: none; }
1445
1445
  [data-ui=bento][data-mode] .bento-dialog-close { background: transparent; border: 0; color: var(--bento-mosaic-muted); padding: 0; position: absolute; right: 13px; top: 13px; }
1446
1446
  [data-ui=bento][data-mode] .bento-dialog-close svg { height: 15px; width: 15px; }
1447
- [data-ui=bento][data-mode] .bento-dialog-icon { align-items: center; background: var(--bento-mosaic-primary-soft); border-radius: 9px; color: var(--bento-mosaic-primary); display: flex; height: 38px; justify-content: center; margin-bottom: 13px; width: 38px; }
1447
+ [data-ui=bento][data-mode] .bento-dialog-icon { align-items: center; background: var(--bento-mosaic-primary-soft); border-radius: 9px; color: var(--usk-primary-ink, var(--bento-mosaic-primary)); display: flex; height: 38px; justify-content: center; margin-bottom: 13px; width: 38px; }
1448
1448
  [data-ui=bento][data-mode] .bento-dialog-icon svg { height: 21px; width: 21px; }
1449
1449
  [data-ui=bento][data-mode] .bento-dialog-surface h2 { font-size: 15px; }
1450
1450
  [data-ui=bento][data-mode] .bento-dialog-surface p { color: var(--bento-mosaic-muted); font-size: 12px; margin: 9px 0 18px; }
@@ -1675,7 +1675,8 @@
1675
1675
  [data-ui=bento][data-mode] .bento-loading-spinner,
1676
1676
  [data-ui=bento][data-mode] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]),
1677
1677
  [data-ui=bento][data-mode] .bento-sheet .bento-spinner { border: 2px solid currentColor; border-top-color: transparent; background: transparent; clip-path: none; border-radius: 50%; box-shadow: none; animation: bento-mosaic-spin 1s linear infinite; width: 28px; height: 28px; inline-size: 28px; block-size: 28px; flex: 0 0 auto; }
1678
- [data-ui=bento][data-mode] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) { color: var(--bento-spinner-stroke); }
1678
+ /** Keeps semantic spinner paint aligned with the prefixed readable ink treatment. */
1679
+ [data-ui=bento][data-mode] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) { color: var(--usk-primary-ink, var(--bento-spinner-stroke)); }
1679
1680
  [data-ui=bento][data-mode] .bento-spinner-sm { width: 16px; height: 16px; inline-size: 16px; block-size: 16px; }
1680
1681
  [data-ui=bento][data-mode] .bento-spinner-lg { width: 40px; height: 40px; inline-size: 40px; block-size: 40px; }
1681
1682
  /** Keeps native busy controls on the same Soft Mosaic ring as authored button aliases. */
@@ -472,7 +472,7 @@
472
472
 
473
473
  .brutal-title { margin: 0; font-size: clamp(2rem, 6vw, 4.25rem); line-height: 0.95; letter-spacing: -0.04em; color: var(--brutal-text); text-shadow: 4px 4px 0 var(--brutal-accent); }
474
474
  .brutal-heading { margin: 0; font-size: clamp(1.25rem, 3vw, 2rem); line-height: 1.05; letter-spacing: -0.02em; }
475
- .brutal-kicker { margin: 0; color: var(--brutal-primary); font-size: 0.85rem; font-weight: 900; letter-spacing: 0.12em; }
475
+ .brutal-kicker { margin: 0; color: var(--usk-primary-ink, var(--brutal-primary)); font-size: 0.85rem; font-weight: 900; letter-spacing: 0.12em; }
476
476
  .brutal-subtitle, .brutal-copy { margin: 0; color: var(--brutal-text-muted); line-height: 1.6; }
477
477
  .brutal-text-muted { color: var(--brutal-text-muted); }
478
478
 
@@ -556,7 +556,7 @@
556
556
  .brutal-table-wrap { overflow: auto; box-shadow: 8px 8px 0 var(--brutal-primary); }
557
557
  .brutal-table { width: 100%; border-collapse: collapse; } .brutal-table th, .brutal-table td { padding: 0.9rem 1rem; border: 2px solid var(--brutal-border); text-align: left; } .brutal-table th { background: var(--brutal-primary); color: var(--brutal-on-primary); text-transform: uppercase; }
558
558
 
559
- .brutal-text-primary { color: var(--brutal-primary); } .brutal-text-secondary { color: var(--brutal-secondary); } .brutal-text-accent { color: var(--brutal-accent); } .brutal-text-success { color: var(--brutal-success); } .brutal-text-warning { color: var(--brutal-warning); } .brutal-text-danger { color: var(--brutal-danger); }
559
+ .brutal-text-primary { color: var(--usk-primary-ink, var(--brutal-primary)); } .brutal-text-secondary { color: var(--brutal-secondary); } .brutal-text-accent { color: var(--usk-accent-ink, var(--brutal-accent)); } .brutal-text-success { color: var(--brutal-success); } .brutal-text-warning { color: var(--brutal-warning); } .brutal-text-danger { color: var(--brutal-danger); }
560
560
  .brutal-bg-primary { background: var(--brutal-primary); color: var(--brutal-on-primary); } .brutal-bg-secondary { background: var(--brutal-secondary); color: var(--brutal-on-secondary); }
561
561
 
562
562
  [data-ui="brutalism"] :focus-visible { outline: 4px solid var(--brutal-focus); outline-offset: 3px; }
@@ -630,7 +630,7 @@
630
630
  .brutal-button.brutal-button-outline-heavy,
631
631
  .brutal-button-outline-heavy {
632
632
  background: transparent;
633
- color: var(--brutal-primary);
633
+ color: var(--usk-primary-ink, var(--brutal-primary));
634
634
  border-style: solid;
635
635
  border-width: 2px;
636
636
  border-color: var(--brutal-primary);
@@ -700,7 +700,7 @@
700
700
 
701
701
  .brutal-eyebrow {
702
702
  margin: 0;
703
- color: var(--brutal-primary);
703
+ color: var(--usk-primary-ink, var(--brutal-primary));
704
704
  font-family: var(--brutal-font-heading);
705
705
  font-size: .76rem;
706
706
  font-weight: 900;
@@ -893,7 +893,7 @@
893
893
  .brutal-button-primary { background: var(--brutal-primary); color: var(--brutal-on-primary); border-color: var(--brutal-primary); }
894
894
  .brutal-button-secondary { background: var(--brutal-secondary); color: var(--brutal-on-secondary); border-color: var(--brutal-secondary); }
895
895
  .brutal-button-danger { background: var(--brutal-danger); color: var(--brutal-on-danger); border-color: var(--brutal-danger); }
896
- .brutal-button-ghost { background: transparent; color: var(--brutal-primary); border-color: transparent; }
896
+ .brutal-button-ghost { background: transparent; color: var(--usk-primary-ink, var(--brutal-primary)); border-color: transparent; }
897
897
  }
898
898
 
899
899
  @layer ui-style-kit.brutalism {