ui-style-kit-css 2.6.1 → 2.7.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 (60) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +13 -12
  3. package/dist/ui-style-kit.css +1185 -1335
  4. package/dist/ui-style-kit.min.css +2 -2
  5. package/dist/ui-style-kit.visual.css +1185 -1335
  6. package/dist/ui-style-kit.visual.min.css +2 -2
  7. package/dist/ui-style-kit.with-bridge.css +1185 -1335
  8. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  9. package/dist/visual/art-deco.css +455 -717
  10. package/dist/visual/bauhaus.css +2 -2
  11. package/dist/visual/bento.css +2 -2
  12. package/dist/visual/brutalism.css +411 -678
  13. package/dist/visual/clay.css +2 -2
  14. package/dist/visual/cyberpunk.css +430 -690
  15. package/dist/visual/data-terminal.css +426 -693
  16. package/dist/visual/editorial-luxe.css +429 -696
  17. package/dist/visual/industrial-utility.css +437 -699
  18. package/dist/visual/maximalist.css +434 -700
  19. package/dist/visual/minimal-saas.css +421 -684
  20. package/dist/visual/neo-noir.css +2 -2
  21. package/dist/visual/neumorphism.css +422 -689
  22. package/dist/visual/organic-modern.css +2 -2
  23. package/dist/visual/paper-editorial.css +484 -711
  24. package/dist/visual/retro-glass.css +435 -689
  25. package/dist/visual/retrofuturism.css +423 -690
  26. package/dist/visual/tactile.css +433 -698
  27. package/dist/visual/technical-blueprint.css +437 -700
  28. package/dist/visual/y2k.css +445 -692
  29. package/docs/COMPONENT-SPACING.md +154 -0
  30. package/docs/DEMO-SHOWCASE.md +16 -0
  31. package/docs/ECOSYSTEM.md +2 -2
  32. package/docs/PUBLISHING.md +7 -7
  33. package/docs/RELEASE-2.7.0.md +21 -0
  34. package/docs/RELEASE-2.7.1.md +21 -0
  35. package/manifest.json +9 -1
  36. package/package.json +2 -2
  37. package/styles/art-deco.css +18 -9
  38. package/styles/bauhaus.css +8 -5
  39. package/styles/bento.css +27 -16
  40. package/styles/brutalism.css +8 -5
  41. package/styles/clay.css +17 -10
  42. package/styles/clean-defaults.css +20 -0
  43. package/styles/component-composition.css +63 -0
  44. package/styles/components.css +262 -2
  45. package/styles/cyberpunk.css +21 -10
  46. package/styles/data-terminal.css +9 -5
  47. package/styles/editorial-luxe.css +9 -5
  48. package/styles/industrial-utility.css +17 -8
  49. package/styles/maximalist.css +10 -5
  50. package/styles/minimal-saas.css +9 -4
  51. package/styles/native-elements.css +32 -2
  52. package/styles/neo-noir.css +18 -9
  53. package/styles/neumorphism.css +13 -7
  54. package/styles/organic-modern.css +4 -4
  55. package/styles/paper-editorial.css +45 -7
  56. package/styles/retro-glass.css +16 -6
  57. package/styles/retrofuturism.css +10 -7
  58. package/styles/tactile.css +22 -9
  59. package/styles/technical-blueprint.css +14 -7
  60. package/styles/y2k.css +34 -14
@@ -264,7 +264,7 @@
264
264
  --usk-native-range-track-shadow: 0 0 .55rem rgb(var(--cyber-primary-rgb) / .16);
265
265
  --usk-native-range-progress-background: var(--cyber-primary);
266
266
  --usk-native-range-thumb-size: 1.25rem;
267
- --usk-native-range-thumb-background: var(--cyber-surface-strong);
267
+ --usk-native-range-thumb-background: var(--usk-native-primary);
268
268
  --usk-native-range-thumb-border: 1px solid var(--cyber-border);
269
269
  --usk-native-range-thumb-radius: .1rem;
270
270
  --usk-native-range-thumb-shadow: 0 0 .55rem rgb(var(--cyber-primary-rgb) / .22);
@@ -427,7 +427,8 @@
427
427
  }
428
428
  [data-ui="cyberpunk"] *, [data-ui="cyberpunk"] *::before, [data-ui="cyberpunk"] *::after { box-sizing: border-box; }
429
429
  [data-ui="cyberpunk"][data-mode] { background: var(--cyber-theme-bg); background-size: var(--cyber-theme-bg-size); }
430
- [data-ui="cyberpunk"] a { color: var(--cyber-link); text-decoration-color: rgb(var(--cyber-primary-rgb) / 0.6); text-underline-offset: 0.18em; }
430
+ /** Inline-link ink must not override the foreground paired with an action surface. */
431
+ [data-ui="cyberpunk"] a:where(:not(.cyber-button):not(.cyber-icon-button)) { color: var(--cyber-link); text-decoration-color: rgb(var(--cyber-primary-rgb) / 0.6); text-underline-offset: 0.18em; }
431
432
  [data-ui="cyberpunk"] ::selection { background: var(--cyber-primary); color: var(--cyber-on-primary); }
432
433
 
433
434
  .cyber-page { position: relative; min-height: 100vh; padding: clamp(1rem, 4vw, 3rem); }
@@ -477,7 +478,9 @@
477
478
  /* Theme-responsive component defaults */
478
479
  .cyber-card, .cyber-panel { background: var(--cyber-card-bg); }
479
480
  .cyber-toolbar, .cyber-table-wrap { background: var(--cyber-control-bg); }
480
- .cyber-button:not(.cyber-button-primary):not(.cyber-button-secondary):not(.cyber-button-danger):not(.cyber-button-warning):not(.cyber-button-ghost), .cyber-icon-button { background: var(--cyber-control-bg); }
481
+ /** Semantic variant attributes take precedence over the legacy neutral-control fallback. */
482
+ /** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
483
+ .cyber-button:where(:not([data-ui-variant])):not(.cyber-button-primary):not(.cyber-button-secondary):not(.cyber-button-danger):not(.cyber-button-warning):not(.cyber-button-ghost):not(.cyber-button-outline-heavy), .cyber-icon-button { background: var(--cyber-control-bg); }
481
484
  .cyber-button, .cyber-icon-button, .cyber-badge, .cyber-nav-link { font-family: var(--cyber-font-control); }
482
485
 
483
486
  /* Spinner geometry follows the cyberpunk preset's clipped neon readouts. */
@@ -579,7 +582,7 @@
579
582
  .cyber-button.cyber-button-outline-heavy,
580
583
  .cyber-button-outline-heavy {
581
584
  background: transparent;
582
- color: var(--usk-primary-ink, var(--cyber-primary));
585
+ color: var(--usk-primary-ink, var(--cyber-text));
583
586
  border-style: solid;
584
587
  border-width: 2px;
585
588
  border-color: var(--cyber-primary);
@@ -775,7 +778,7 @@
775
778
  --usk-native-range-track-shadow: 0 0 .7rem rgb(var(--cyber-primary-rgb) / .4);
776
779
  --usk-native-range-progress-background: linear-gradient(90deg, var(--cyber-primary), var(--cyber-accent));
777
780
  --usk-native-range-thumb-size: 1.3rem;
778
- --usk-native-range-thumb-background: linear-gradient(135deg, var(--cyber-surface-strong), var(--cyber-primary));
781
+ --usk-native-range-thumb-background: var(--usk-native-primary);
779
782
  --usk-native-range-thumb-border: 2px solid var(--cyber-accent);
780
783
  --usk-native-range-thumb-radius: 28%;
781
784
  --usk-native-range-thumb-shadow: 0 0 .85rem rgb(var(--cyber-accent-rgb) / .5);
@@ -798,7 +801,8 @@
798
801
  .cyber-card, .cyber-panel { padding: 1.08rem; background: var(--cyber-card-bg); border: 2px solid var(--cyber-primary); border-radius: 0; box-shadow: inset .24rem 0 0 rgb(var(--cyber-accent-rgb) / .26), 0 0 1.2rem rgb(var(--cyber-primary-rgb) / .24); clip-path: polygon(.6rem 0, 100% 0, 100% calc(100% - .6rem), calc(100% - .6rem) 100%, 0 100%, 0 .6rem); }
799
802
  .cyber-well, .cyber-inset { padding: .82rem; background: var(--cyber-control-bg); border: 1px solid var(--cyber-accent); border-radius: 0; box-shadow: inset 0 0 .8rem rgb(var(--cyber-primary-rgb) / .18); clip-path: polygon(.42rem 0, 100% 0, 100% calc(100% - .42rem), calc(100% - .42rem) 100%, 0 100%, 0 .42rem); }
800
803
  .cyber-button, .cyber-icon-button { min-height: 2.85rem; padding: .66rem 1.08rem; background: linear-gradient(135deg, rgb(var(--cyber-primary-rgb) / .2), transparent), var(--cyber-control-bg); border: 2px solid var(--cyber-primary); border-radius: 0; box-shadow: inset .2rem 0 0 rgb(var(--cyber-accent-rgb) / .38), 0 0 .75rem rgb(var(--cyber-primary-rgb) / .32); font-weight: 850; clip-path: polygon(.5rem 0, 100% 0, 100% calc(100% - .5rem), calc(100% - .5rem) 100%, 0 100%, 0 .5rem); }
801
- .cyber-button:active, .cyber-button[aria-pressed="true"], .cyber-button.is-active { transform: translateY(1px); background: linear-gradient(135deg, var(--cyber-primary), var(--cyber-accent)); box-shadow: inset 0 0 .6rem rgb(var(--cyber-text-rgb) / .24); }
804
+ /** Press feedback retains each variant's paired fill and foreground. */
805
+ .cyber-button:active, .cyber-button[aria-pressed="true"], .cyber-button.is-active { transform: translateY(1px); box-shadow: inset 0 0 .6rem rgb(var(--cyber-text-rgb) / .24); }
802
806
  .cyber-input, .cyber-textarea, .cyber-select { min-height: 2.55rem; padding: .54rem .82rem; background: var(--cyber-control-bg); border: 1px solid var(--cyber-primary); border-radius: 0; box-shadow: inset .18rem 0 0 rgb(var(--cyber-accent-rgb) / .3); clip-path: polygon(.34rem 0, 100% 0, 100% calc(100% - .34rem), calc(100% - .34rem) 100%, 0 100%, 0 .34rem); }
803
807
  .cyber-nav, .cyber-toolbar { border: 2px solid var(--cyber-primary); border-radius: 0; box-shadow: inset 0 -.18rem 0 rgb(var(--cyber-accent-rgb) / .28); }
804
808
  .cyber-nav-link { border-radius: 0; clip-path: polygon(.35rem 0, 100% 0, calc(100% - .35rem) 100%, 0 100%); }
@@ -902,7 +906,7 @@
902
906
  --usk-native-range-track-shadow: 0 0 .45rem rgb(var(--cyber-primary-rgb) / .16);
903
907
  --usk-native-range-progress-background: var(--cyber-primary);
904
908
  --usk-native-range-thumb-size: 1.25rem;
905
- --usk-native-range-thumb-background: var(--cyber-surface-strong);
909
+ --usk-native-range-thumb-background: var(--usk-native-primary);
906
910
  --usk-native-range-thumb-border: 1px solid var(--cyber-primary);
907
911
  --usk-native-range-thumb-radius: .08rem;
908
912
  --usk-native-range-thumb-shadow: 0 0 .55rem rgb(var(--cyber-primary-rgb) / .24);
@@ -1045,7 +1049,7 @@
1045
1049
  .cyber-button:hover,
1046
1050
  .cyber-icon-button:hover {
1047
1051
  border-color: var(--cyber-primary);
1048
- color: var(--usk-primary-ink, var(--cyber-primary));
1052
+ color: var(--usk-primary-ink, var(--cyber-text));
1049
1053
  box-shadow: 0 0 .75rem rgb(var(--cyber-primary-rgb) / .2);
1050
1054
  }
1051
1055
 
@@ -1616,7 +1620,8 @@
1616
1620
  border-color: transparent;
1617
1621
  background-color: transparent;
1618
1622
  background-image: none;
1619
- color: var(--usk-primary-ink, var(--cyber-primary));
1623
+ /** Unfilled native controls use readable surface ink rather than neon fill pigment. */
1624
+ color: var(--usk-primary-ink, var(--cyber-text));
1620
1625
  box-shadow: none;
1621
1626
  }
1622
1627
 
@@ -1625,7 +1630,8 @@
1625
1630
  border-color: var(--cyber-danger);
1626
1631
  background-color: rgb(var(--cyber-danger-rgb) / .12);
1627
1632
  background-image: linear-gradient(135deg, rgb(var(--cyber-danger-rgb) / .16), transparent 62%);
1628
- color: var(--cyber-danger);
1633
+ /** The signal tint is decorative; its label uses the contrasting surface foreground. */
1634
+ color: var(--cyber-text);
1629
1635
  box-shadow: var(--cyber-template-danger-glow);
1630
1636
  }
1631
1637
 
@@ -2411,3 +2417,8 @@
2411
2417
  font-weight: 800;
2412
2418
  line-height: 1;
2413
2419
  }
2420
+
2421
+ @layer ui-style-kit.cyberpunk {
2422
+ /** Console content scrolls inside its frame instead of expanding a narrow parent. */
2423
+ .cyber-console { box-sizing: border-box; min-inline-size: 0; max-inline-size: 100%; margin-inline: 0; overflow-x: auto; }
2424
+ }
@@ -251,7 +251,7 @@
251
251
  --usk-native-range-track-shadow: 0 0 9px var(--terminal-primary);
252
252
  --usk-native-range-progress-background: var(--terminal-primary);
253
253
  --usk-native-range-thumb-size: 1.1rem;
254
- --usk-native-range-thumb-background: var(--terminal-surface-strong);
254
+ --usk-native-range-thumb-background: var(--usk-native-primary);
255
255
  --usk-native-range-thumb-border: 1px solid var(--terminal-border);
256
256
  --usk-native-range-thumb-radius: 0;
257
257
  --usk-native-range-thumb-shadow: 0 0 9px var(--terminal-primary);
@@ -437,7 +437,10 @@
437
437
  /* Theme-responsive component defaults */
438
438
  .terminal-card, .terminal-panel { background: var(--terminal-card-bg); }
439
439
  .terminal-toolbar, .terminal-table-wrap { background: var(--terminal-control-bg); }
440
- .terminal-button:not(.terminal-button-primary):not(.terminal-button-secondary):not(.terminal-button-danger):not(.terminal-button-warning):not(.terminal-button-ghost):not(.is-active):not([aria-pressed="true"]),
440
+ /** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
441
+ /** Native press state bypasses the neutral fallback just like persistent pressed hooks. */
442
+ /** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
443
+ .terminal-button:where(:not([data-ui-variant])):not(.terminal-button-primary):not(.terminal-button-secondary):not(.terminal-button-danger):not(.terminal-button-warning):not(.terminal-button-ghost):not(.terminal-button-outline-heavy):not(.is-active):not([aria-pressed="true"]):not(:active),
441
444
  .terminal-icon-button:not(.is-active):not([aria-pressed="true"]) { background: var(--terminal-control-bg); }
442
445
  .terminal-button, .terminal-icon-button, .terminal-badge, .terminal-nav-link { font-family: var(--terminal-font-control); }
443
446
 
@@ -630,7 +633,7 @@
630
633
  .terminal-button.terminal-button-outline-heavy,
631
634
  .terminal-button-outline-heavy {
632
635
  background: transparent;
633
- color: var(--usk-primary-ink, var(--terminal-primary));
636
+ color: var(--usk-primary-ink, var(--terminal-text));
634
637
  border-style: solid;
635
638
  border-width: 2px;
636
639
  border-color: var(--terminal-primary);
@@ -873,7 +876,7 @@
873
876
  --usk-native-range-track-shadow: none;
874
877
  --usk-native-range-progress-background: linear-gradient(90deg, var(--terminal-success), var(--terminal-warning), var(--terminal-danger));
875
878
  --usk-native-range-thumb-size: .9rem;
876
- --usk-native-range-thumb-background: var(--terminal-text);
879
+ --usk-native-range-thumb-background: var(--usk-native-primary);
877
880
  --usk-native-range-thumb-border: 1px solid var(--terminal-surface);
878
881
  --usk-native-range-thumb-radius: 0;
879
882
  --usk-native-range-thumb-shadow: 0 0 0 1px var(--terminal-primary);
@@ -1691,7 +1694,8 @@
1691
1694
  --usk-native-range-track-shadow: none;
1692
1695
  --usk-native-range-progress-background: linear-gradient(var(--terminal-primary), var(--terminal-primary));
1693
1696
  --usk-native-range-thumb-size: .75rem;
1694
- --usk-native-range-thumb-background: var(--terminal-surface);
1697
+ /** Paired signal hues keep the compact terminal thumb visible. */
1698
+ --usk-native-range-thumb-background: linear-gradient(135deg, var(--terminal-primary), var(--terminal-accent));
1695
1699
  --usk-native-range-thumb-border: 2px solid var(--terminal-text);
1696
1700
  --usk-native-range-thumb-radius: 0;
1697
1701
  --usk-native-range-thumb-shadow: none;
@@ -251,7 +251,7 @@
251
251
  --usk-native-range-track-shadow: none;
252
252
  --usk-native-range-progress-background: var(--luxe-primary);
253
253
  --usk-native-range-thumb-size: .85rem;
254
- --usk-native-range-thumb-background: var(--luxe-surface-strong);
254
+ --usk-native-range-thumb-background: var(--usk-native-primary);
255
255
  --usk-native-range-thumb-border: 1px solid var(--luxe-border);
256
256
  --usk-native-range-thumb-radius: 50%;
257
257
  --usk-native-range-thumb-shadow: none;
@@ -437,7 +437,9 @@
437
437
  /* Theme-responsive component defaults */
438
438
  .luxe-card, .luxe-panel { background: var(--luxe-card-bg); }
439
439
  .luxe-toolbar, .luxe-table-wrap { background: var(--luxe-control-bg); }
440
- .luxe-button:not(.luxe-button-primary):not(.luxe-button-secondary):not(.luxe-button-danger):not(.luxe-button-warning):not(.luxe-button-ghost), .luxe-icon-button { background: var(--luxe-control-bg); }
440
+ /** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
441
+ /** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
442
+ .luxe-button:where(:not([data-ui-variant])):not(.luxe-button-primary):not(.luxe-button-secondary):not(.luxe-button-danger):not(.luxe-button-warning):not(.luxe-button-ghost):not(.luxe-button-outline-heavy), .luxe-icon-button { background: var(--luxe-control-bg); }
441
443
  .luxe-button, .luxe-icon-button, .luxe-badge, .luxe-nav-link { font-family: var(--luxe-font-control); }
442
444
 
443
445
 
@@ -629,7 +631,7 @@
629
631
  .luxe-button.luxe-button-outline-heavy,
630
632
  .luxe-button-outline-heavy {
631
633
  background: transparent;
632
- color: var(--usk-primary-ink, var(--luxe-primary));
634
+ color: var(--usk-primary-ink, var(--luxe-text));
633
635
  border-style: solid;
634
636
  border-width: 2px;
635
637
  border-color: var(--luxe-primary);
@@ -779,7 +781,8 @@
779
781
  .luxe-nav-link[aria-current="page"], .luxe-nav-link.is-active { color: var(--luxe-text); background: transparent; box-shadow: inset 0 -2px 0 var(--luxe-primary); }
780
782
  .luxe-input, .luxe-textarea, .luxe-select { border-radius: var(--luxe-radius-sm); background: transparent; }
781
783
  .luxe-card-media, .luxe-media-scrim, .luxe-feature-strip, .luxe-callout-bar { border-radius: var(--luxe-radius-md); }
782
- .luxe-icon-medallion { background: var(--luxe-surface-strong); color: var(--usk-primary-ink, var(--luxe-primary)); border: 1px solid var(--luxe-primary); box-shadow: none; }
784
+ /** The unfilled medallion uses surface-readable link ink in native palettes. */
785
+ .luxe-icon-medallion { background: var(--luxe-surface-strong); color: var(--usk-primary-ink, var(--luxe-link)); border: 1px solid var(--luxe-primary); box-shadow: none; }
783
786
  .luxe-badge-seal { border-style: double; border-width: 4px; background: transparent; font-family: var(--luxe-font-display); }
784
787
  .luxe-feature-item { align-items: start; }
785
788
  .luxe-card-accent-edge { border-inline-start-width: 1px; box-shadow: inset .2rem 0 0 rgb(var(--luxe-primary-rgb) / .2); }
@@ -862,7 +865,7 @@
862
865
  --usk-native-range-track-shadow: 0 1px 0 var(--luxe-surface-strong);
863
866
  --usk-native-range-progress-background: linear-gradient(90deg, var(--luxe-success), var(--luxe-warning));
864
867
  --usk-native-range-thumb-size: .82rem;
865
- --usk-native-range-thumb-background: var(--luxe-warning);
868
+ --usk-native-range-thumb-background: var(--usk-native-primary);
866
869
  --usk-native-range-thumb-border: 1px solid var(--luxe-border);
867
870
  --usk-native-range-thumb-radius: 50%;
868
871
  --usk-native-range-thumb-shadow: 0 0 0 2px var(--luxe-surface-strong);
@@ -1071,6 +1074,7 @@
1071
1074
  --usk-native-control-padding-inline: .75rem;
1072
1075
  --usk-native-range-track-background: var(--luxe-border);
1073
1076
  --usk-native-range-progress-background: var(--luxe-border);
1077
+ /** Brass keeps the editorial thumb visible against its inked rule. */
1074
1078
  --usk-native-range-thumb-background: var(--luxe-brass-light);
1075
1079
  --usk-native-range-thumb-border: 1px solid var(--luxe-brass);
1076
1080
  --usk-native-progress-value-background: var(--luxe-primary);
@@ -251,7 +251,7 @@
251
251
  --usk-native-range-track-shadow: 2px 2px 0 rgb(0 0 0 / .3);
252
252
  --usk-native-range-progress-background: var(--utility-primary);
253
253
  --usk-native-range-thumb-size: 1.25rem;
254
- --usk-native-range-thumb-background: var(--utility-surface-strong);
254
+ --usk-native-range-thumb-background: var(--usk-native-primary);
255
255
  --usk-native-range-thumb-border: 2px solid var(--utility-border);
256
256
  --usk-native-range-thumb-radius: .08rem;
257
257
  --usk-native-range-thumb-shadow: 2px 2px 0 rgb(0 0 0 / .3);
@@ -437,7 +437,9 @@
437
437
  /* Theme-responsive component defaults */
438
438
  .utility-card, .utility-panel { background: var(--utility-card-bg); }
439
439
  .utility-toolbar, .utility-table-wrap { background: var(--utility-control-bg); }
440
- .utility-button:not(.utility-button-primary):not(.utility-button-secondary):not(.utility-button-danger):not(.utility-button-warning):not(.utility-button-ghost):not(.utility-button-guarded), .utility-icon-button { background: var(--utility-control-bg); }
440
+ /** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
441
+ /** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
442
+ .utility-button:where(:not([data-ui-variant])):not(.utility-button-primary):not(.utility-button-secondary):not(.utility-button-danger):not(.utility-button-warning):not(.utility-button-ghost):not(.utility-button-outline-heavy):not(.utility-button-guarded), .utility-icon-button { background: var(--utility-control-bg); }
441
443
  .utility-button, .utility-icon-button, .utility-badge, .utility-nav-link { font-family: var(--utility-font-control); }
442
444
 
443
445
 
@@ -629,7 +631,7 @@
629
631
  .utility-button.utility-button-outline-heavy,
630
632
  .utility-button-outline-heavy {
631
633
  background: transparent;
632
- color: var(--usk-primary-ink, var(--utility-primary));
634
+ color: var(--usk-primary-ink, var(--utility-text));
633
635
  border-style: solid;
634
636
  border-width: 2px;
635
637
  border-color: var(--utility-primary);
@@ -865,7 +867,7 @@
865
867
  --usk-native-range-track-shadow: inset 0 2px 3px rgb(var(--utility-text-rgb) / .3);
866
868
  --usk-native-range-progress-background: linear-gradient(90deg, var(--utility-success), var(--utility-primary));
867
869
  --usk-native-range-thumb-size: 1.26rem;
868
- --usk-native-range-thumb-background: linear-gradient(90deg, var(--utility-surface), var(--utility-surface-strong), var(--utility-surface));
870
+ --usk-native-range-thumb-background: var(--usk-native-primary);
869
871
  --usk-native-range-thumb-border: 2px outset var(--utility-border);
870
872
  --usk-native-range-thumb-radius: .1rem;
871
873
  --usk-native-range-thumb-shadow: 1px 2px 0 rgb(var(--utility-text-rgb) / .3);
@@ -943,7 +945,8 @@
943
945
  @media print {
944
946
  [data-ui="industrial-utility"] { background: #fff !important; color: #000 !important; }
945
947
  [data-ui="industrial-utility"] * { box-shadow: none !important; text-shadow: none !important; }
946
- [data-ui="industrial-utility"] a { color: #000 !important; text-decoration: underline; }
948
+ /** Inline-link ink must not override the foreground paired with an action surface. */
949
+ [data-ui="industrial-utility"] a { color: #000 !important; text-decoration: underline; }
947
950
  }
948
951
  }
949
952
 
@@ -1095,15 +1098,15 @@
1095
1098
  outline-offset: 2px;
1096
1099
  }
1097
1100
 
1098
- [data-ui="industrial-utility"] a {
1101
+ [data-ui="industrial-utility"] a:where(:not(.utility-button):not(.utility-icon-button):not(.utility-nav-link)) {
1099
1102
  color: var(--utility-material-lamp-blue);
1100
1103
  font-weight: 700;
1101
1104
  text-decoration-thickness: 1px;
1102
1105
  text-underline-offset: 3px;
1103
1106
  }
1104
1107
 
1105
- [data-ui="industrial-utility"] a:hover,
1106
- [data-ui="industrial-utility"] a.is-hover {
1108
+ [data-ui="industrial-utility"] a:where(:not(.utility-button):not(.utility-icon-button):not(.utility-nav-link)):hover,
1109
+ [data-ui="industrial-utility"] a:where(:not(.utility-button):not(.utility-icon-button):not(.utility-nav-link)).is-hover {
1107
1110
  color: var(--utility-material-warning);
1108
1111
  }
1109
1112
 
@@ -2300,6 +2303,12 @@ div.utility-dialog { display: block; }
2300
2303
  animation: utility-spin .8s steps(8, end) infinite;
2301
2304
  }
2302
2305
 
2306
+ /** Native standalone rotors use the same base size as the current classed rotor. */
2307
+ [data-ui="industrial-utility"] :where(.loading-spinner, [data-loading-spinner]) {
2308
+ inline-size: 20px;
2309
+ block-size: 20px;
2310
+ }
2311
+
2303
2312
  .utility-button.is-loading::before,
2304
2313
  .utility-button[aria-busy="true"]:not(.is-loading)::after {
2305
2314
  inline-size: 14px;
@@ -251,7 +251,7 @@
251
251
  --usk-native-range-track-shadow: .22rem .22rem 0 var(--max-ink);
252
252
  --usk-native-range-progress-background: var(--max-warning);
253
253
  --usk-native-range-thumb-size: 1.62rem;
254
- --usk-native-range-thumb-background: var(--max-warning);
254
+ --usk-native-range-thumb-background: var(--usk-native-primary);
255
255
  --usk-native-range-thumb-border: 3px solid var(--max-ink);
256
256
  --usk-native-range-thumb-radius: 50%;
257
257
  --usk-native-range-thumb-shadow: .18rem .18rem 0 rgb(var(--max-secondary-rgb) / .8);
@@ -440,7 +440,8 @@
440
440
  .max-button:hover, .max-icon-button:hover { transform: translate(-2px, -2px); border-color: var(--max-ink); box-shadow: .4rem .4rem 0 rgb(var(--max-secondary-rgb) / .76); }
441
441
  .max-button:active, .max-icon-button:active, .max-button[aria-pressed="true"], .max-icon-button[aria-pressed="true"], .max-button.is-active, .max-icon-button.is-active { transform: translate(.12rem, .12rem); box-shadow: .12rem .12rem 0 var(--max-ink); }
442
442
  .max-button-primary { background: var(--max-poster-fill); color: var(--max-on-primary); border-color: var(--max-ink); }
443
- .max-button-primary:hover { background: linear-gradient(110deg, var(--max-primary-hover), var(--max-danger), var(--max-accent)); border-color: var(--max-ink); }
443
+ /** A single foreground can span only gradient stops from its paired color role. */
444
+ .max-button-primary:hover { background: linear-gradient(110deg, var(--max-primary-hover), var(--max-primary)); border-color: var(--max-ink); }
444
445
  .max-button-secondary { background: var(--max-secondary); color: var(--max-on-secondary); border-color: var(--max-secondary); }
445
446
  .max-button-secondary:hover { background: var(--max-secondary-hover); border-color: var(--max-secondary-hover); }
446
447
  .max-button-danger { background: var(--max-danger); color: var(--max-on-danger); border-color: var(--max-ink); }
@@ -451,7 +452,9 @@
451
452
  /* Theme-responsive component defaults */
452
453
  .max-card, .max-panel { background: var(--max-card-bg); }
453
454
  .max-toolbar, .max-table-wrap { background: var(--max-control-bg); }
454
- .max-button:not(.max-button-primary):not(.max-button-secondary):not(.max-button-danger):not(.max-button-warning):not(.max-button-ghost):not(.max-button-outline-heavy), .max-icon-button { background: var(--max-control-bg); }
455
+ /** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
456
+ /** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
457
+ .max-button:where(:not([data-ui-variant])):not(.max-button-primary):not(.max-button-secondary):not(.max-button-danger):not(.max-button-warning):not(.max-button-ghost):not(.max-button-outline-heavy), .max-icon-button { background: var(--max-control-bg); }
455
458
  .max-button, .max-icon-button, .max-badge, .max-nav-link { font-family: var(--max-font-control); }
456
459
 
457
460
 
@@ -865,7 +868,7 @@
865
868
  --usk-native-range-track-shadow: .2rem .2rem 0 var(--max-ink);
866
869
  --usk-native-range-progress-background: linear-gradient(90deg, var(--max-success), var(--max-warning), var(--max-danger), var(--max-accent));
867
870
  --usk-native-range-thumb-size: 1.78rem;
868
- --usk-native-range-thumb-background: conic-gradient(var(--max-warning), var(--max-primary), var(--max-accent), var(--max-warning));
871
+ --usk-native-range-thumb-background: var(--usk-native-primary);
869
872
  --usk-native-range-thumb-border: 3px solid var(--max-ink);
870
873
  --usk-native-range-thumb-radius: 42% 58% 46% 54%;
871
874
  --usk-native-range-thumb-shadow: .16rem .16rem 0 var(--max-ink), .28rem .28rem 0 rgb(var(--max-secondary-rgb) / .62);
@@ -1080,7 +1083,7 @@
1080
1083
  --usk-native-range-track-radius: 0;
1081
1084
  --usk-native-range-track-shadow: 3px 3px 0 var(--max-ink);
1082
1085
  --usk-native-range-progress-background: var(--max-warning);
1083
- --usk-native-range-thumb-background: var(--max-accent);
1086
+ --usk-native-range-thumb-background: var(--usk-native-primary);
1084
1087
  --usk-native-range-thumb-border: 3px solid var(--max-ink);
1085
1088
  --usk-native-range-thumb-radius: 50%;
1086
1089
  --usk-native-range-thumb-shadow: 2px 2px 0 var(--max-ink);
@@ -1371,6 +1374,8 @@
1371
1374
  border-width: .12em;
1372
1375
  flex-shrink: 0;
1373
1376
  clip-path: none;
1377
+ /* A busy wedge follows its button ink; the standalone loader keeps accent paint. */
1378
+ background: conic-gradient(currentColor 0 28%, transparent 28% 100%);
1374
1379
  }
1375
1380
 
1376
1381
  .max-nav {
@@ -254,7 +254,7 @@
254
254
  --usk-native-range-track-shadow: none;
255
255
  --usk-native-range-progress-background: var(--saas-primary);
256
256
  --usk-native-range-thumb-size: .95rem;
257
- --usk-native-range-thumb-background: var(--saas-primary);
257
+ --usk-native-range-thumb-background: var(--usk-native-primary);
258
258
  --usk-native-range-thumb-border: 2px solid var(--saas-surface-strong);
259
259
  --usk-native-range-thumb-radius: 50%;
260
260
  --usk-native-range-thumb-shadow: 0 .2rem .5rem rgb(var(--saas-text-rgb) / .12);
@@ -430,7 +430,10 @@
430
430
  font: inherit; font-weight: 700; line-height: 1; text-decoration: none; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; user-select: none;
431
431
  transition: color var(--saas-transition-fast), background var(--saas-transition-fast), border-color var(--saas-transition-fast), box-shadow var(--saas-transition-fast), transform var(--saas-transition-fast);
432
432
  }
433
- .saas-button:hover, .saas-icon-button:hover { transform: none; border-color: rgb(var(--saas-primary-rgb) / .48); background: var(--saas-surface-soft); }
433
+ /** Neutral hover paint must not replace a filled variant's paired background. */
434
+ .saas-button:hover, .saas-icon-button:hover { transform: none; border-color: rgb(var(--saas-primary-rgb) / .48); }
435
+ .saas-button:where(:not(.saas-button-primary):not(.saas-button-danger):not(.saas-button-warning)):hover,
436
+ .saas-icon-button:hover { background: var(--saas-surface-soft); color: var(--saas-text); }
434
437
  .saas-button:active, .saas-icon-button:active, .saas-button[aria-pressed="true"], .saas-icon-button[aria-pressed="true"], .saas-button.is-active, .saas-icon-button.is-active { transform: translateY(1px); box-shadow: inset 0 1px 2px rgb(var(--saas-text-rgb) / .12); }
435
438
  .saas-button-primary { background: linear-gradient(135deg, var(--saas-primary), var(--saas-brand-2)); color: var(--saas-on-primary); border-color: var(--saas-primary); }
436
439
  .saas-button-primary:hover { background: linear-gradient(135deg, var(--saas-brand-2), var(--saas-primary)); border-color: var(--saas-primary-hover); }
@@ -444,7 +447,9 @@
444
447
  /* Theme-responsive component defaults */
445
448
  .saas-card, .saas-panel { background: var(--saas-card-bg); }
446
449
  .saas-toolbar, .saas-table-wrap { background: var(--saas-control-bg); }
447
- .saas-button:not(.saas-button-primary):not(.saas-button-secondary):not(.saas-button-danger):not(.saas-button-warning):not(.saas-button-ghost), .saas-icon-button { background: var(--saas-control-bg); }
450
+ /** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
451
+ /** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
452
+ .saas-button:where(:not([data-ui-variant])):not(.saas-button-primary):not(.saas-button-secondary):not(.saas-button-danger):not(.saas-button-warning):not(.saas-button-ghost):not(.saas-button-outline-heavy), .saas-icon-button { background: var(--saas-control-bg); }
448
453
  .saas-button, .saas-icon-button, .saas-badge, .saas-nav-link { font-family: var(--saas-font-control); }
449
454
 
450
455
 
@@ -651,7 +656,7 @@
651
656
  .saas-button.saas-button-outline-heavy,
652
657
  .saas-button-outline-heavy {
653
658
  background: transparent;
654
- color: var(--usk-primary-ink, var(--saas-primary));
659
+ color: var(--usk-primary-ink, var(--saas-text));
655
660
  border-style: solid;
656
661
  border-width: 2px;
657
662
  border-color: var(--saas-primary);
@@ -405,8 +405,11 @@
405
405
  [data-ui][data-mode] :where(input[type="radio"]) { border-radius: var(--usk-native-radio-radius); }
406
406
 
407
407
  [data-ui][data-mode] :where(input[type="checkbox"]:checked) {
408
- background-color: var(--usk-native-choice-checked-background);
409
- background-image: linear-gradient(135deg, transparent 42%, var(--usk-native-choice-mark-color) 42% 56%, transparent 56%), linear-gradient(45deg, transparent 54%, var(--usk-native-choice-mark-color) 54% 68%, transparent 68%);
408
+ /* The final background layer accepts both solid and gradient preset fills. */
409
+ background:
410
+ linear-gradient(45deg, transparent 38%, var(--usk-native-choice-mark-color) 38% 62%, transparent 62%) 24% 62% / 32% 36% no-repeat,
411
+ linear-gradient(135deg, transparent 40%, var(--usk-native-choice-mark-color) 40% 60%, transparent 60%) 68% 43% / 52% 58% no-repeat,
412
+ var(--usk-native-choice-checked-background);
410
413
  }
411
414
 
412
415
  [data-ui][data-mode] :where(input[type="checkbox"]:hover:not(:disabled), input[type="radio"]:hover:not(:disabled)) {
@@ -826,3 +829,30 @@
826
829
  }
827
830
  }
828
831
  }
832
+
833
+ /** Choice-state paint follows preset geometry, including presets with material surface tokens. */
834
+ @layer ui-style-kit.clean_defaults {
835
+ /** Disabled choices remain recognizable without relying on faded opacity alone. */
836
+ [data-ui][data-mode] :where(input[type="radio"]:disabled) {
837
+ background: var(--usk-native-bg);
838
+ border-color: var(--usk-native-text-muted);
839
+ border-style: dashed;
840
+ opacity: .7;
841
+ }
842
+ @supports (color: color-mix(in srgb, black, white)) {
843
+ [data-ui][data-mode] :where(input[type="radio"]:disabled) {
844
+ background: color-mix(in srgb, var(--usk-native-text-muted) 24%, var(--usk-native-bg));
845
+ }
846
+ }
847
+ [data-ui][data-mode] :where(input[type="radio"]:disabled:checked) {
848
+ background: radial-gradient(circle, var(--usk-native-text-muted) 0 31%, transparent 34%), var(--usk-native-bg);
849
+ }
850
+
851
+
852
+ @media (forced-colors: active) {
853
+ [data-ui][data-mode] :where(input[type="radio"]:disabled) {
854
+ border-color: GrayText;
855
+ background: Canvas;
856
+ }
857
+ }
858
+ }
@@ -251,7 +251,7 @@
251
251
  --usk-native-range-track-shadow: 0 0 12px var(--noir-primary);
252
252
  --usk-native-range-progress-background: var(--noir-primary);
253
253
  --usk-native-range-thumb-size: 1.35rem;
254
- --usk-native-range-thumb-background: var(--noir-surface-strong);
254
+ --usk-native-range-thumb-background: var(--usk-native-primary);
255
255
  --usk-native-range-thumb-border: 1px solid var(--noir-border);
256
256
  --usk-native-range-thumb-radius: 44% 56%;
257
257
  --usk-native-range-thumb-shadow: 0 0 12px var(--noir-primary);
@@ -437,7 +437,8 @@
437
437
  /* Theme-responsive component defaults */
438
438
  .noir-card, .noir-panel { background: var(--noir-card-bg); }
439
439
  .noir-toolbar, .noir-table-wrap { background: var(--noir-control-bg); }
440
- .noir-button:where(:not(.noir-button-primary):not(.noir-button-secondary):not(.noir-button-danger):not(.noir-button-warning):not(.noir-button-ghost)), .noir-icon-button { background: var(--noir-control-bg); }
440
+ /** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
441
+ .noir-button:where(:not(.noir-button-primary):not(.noir-button-secondary):not(.noir-button-danger):not(.noir-button-warning):not(.noir-button-ghost):not(.noir-button-outline-heavy)), .noir-icon-button { background: var(--noir-control-bg); }
441
442
  .noir-button, .noir-icon-button, .noir-badge, .noir-nav-link { font-family: var(--noir-font-control); }
442
443
 
443
444
 
@@ -629,17 +630,20 @@
629
630
  .noir-button.noir-button-outline-heavy,
630
631
  .noir-button-outline-heavy {
631
632
  background: transparent;
632
- color: var(--usk-primary-ink, var(--noir-primary));
633
+ color: var(--usk-primary-ink, var(--noir-text));
633
634
  border-style: solid;
634
635
  border-width: 2px;
635
636
  border-color: var(--noir-primary);
636
637
  box-shadow: none;
637
638
  }
639
+ /** Outlined hover paints the skewed face together with its on-primary label. */
638
640
  .noir-button.noir-button-outline-heavy:hover,
639
641
  .noir-button-outline-heavy:hover {
640
- background: var(--noir-primary);
642
+ background: transparent;
641
643
  color: var(--noir-on-primary);
642
644
  border-color: var(--noir-primary-hover);
645
+ --noir-action-fill: var(--noir-primary);
646
+ --noir-action-line: var(--noir-primary-hover);
643
647
  }
644
648
 
645
649
  .noir-badge-seal {
@@ -778,7 +782,8 @@
778
782
  .noir-input, .noir-textarea, .noir-select { background: rgb(var(--noir-surface-strong-rgb) / .68); }
779
783
  .noir-card-media { border-color: rgb(var(--noir-primary-rgb) / .25); }
780
784
  .noir-media-scrim > :where(figcaption, [data-media-caption]) { background: linear-gradient(to top, rgb(0 0 0 / .96), rgb(var(--noir-primary-rgb) / .18) 54%, transparent); }
781
- .noir-icon-medallion { background: transparent; color: var(--usk-primary-ink, var(--noir-primary)); border-color: var(--noir-primary); box-shadow: 0 0 1.2rem rgb(var(--noir-primary-rgb) / .18); }
785
+ /** The outlined tile uses link ink rather than its luminous border fill as text. */
786
+ .noir-icon-medallion { background: transparent; color: var(--usk-primary-ink, var(--noir-link)); border-color: var(--noir-primary); box-shadow: 0 0 1.2rem rgb(var(--noir-primary-rgb) / .18); }
782
787
  .noir-badge-seal { background: transparent; border-color: var(--noir-primary); }
783
788
  .noir-card-accent-edge { border-inline-start-color: var(--noir-primary); }
784
789
  [data-ui="neo-noir"][data-mode="contrast"] :where(.noir-surface, .noir-card, .noir-panel, .noir-toolbar, .noir-table-wrap, .noir-icon-medallion) { box-shadow: none; text-shadow: none; }
@@ -866,7 +871,7 @@
866
871
  --usk-native-range-track-shadow: 0 0 .62rem rgb(var(--noir-warning-rgb) / .34);
867
872
  --usk-native-range-progress-background: linear-gradient(90deg, var(--noir-warning), var(--noir-primary));
868
873
  --usk-native-range-thumb-size: 1.26rem;
869
- --usk-native-range-thumb-background: linear-gradient(135deg, var(--noir-warning), var(--noir-surface-strong));
874
+ --usk-native-range-thumb-background: var(--usk-native-primary);
870
875
  --usk-native-range-thumb-border: 1px solid var(--noir-warning);
871
876
  --usk-native-range-thumb-radius: 0 .18rem 0 .18rem;
872
877
  --usk-native-range-thumb-shadow: -.2rem 0 .62rem rgb(var(--noir-focus-rgb) / .42);
@@ -1030,7 +1035,7 @@
1030
1035
  --usk-native-checkbox-radius: 0; --usk-native-radio-radius: 50%;
1031
1036
  --usk-native-range-track-background: var(--noir-border);
1032
1037
  --usk-native-range-track-shadow: none; --usk-native-range-track-radius: 0;
1033
- --usk-native-range-thumb-background: var(--noir-primary);
1038
+ --usk-native-range-thumb-background: var(--usk-native-primary);
1034
1039
  --usk-native-range-thumb-shadow: none;
1035
1040
  --usk-native-progress-track-background: var(--noir-surface-soft);
1036
1041
  --usk-native-progress-track-shadow: none; --usk-native-progress-track-radius: 0;
@@ -1068,7 +1073,8 @@
1068
1073
  }
1069
1074
  .noir-button::before { content: ""; position: absolute; inset: 0 8px; z-index: -1; border: 1px solid var(--noir-action-line); background: var(--noir-action-fill); transform: skewX(-16deg); }
1070
1075
  .noir-button-primary { --noir-action-fill: var(--noir-primary); --noir-action-line: var(--noir-warning); color: var(--noir-on-primary); }
1071
- .noir-button-secondary { --noir-action-line: var(--noir-secondary); }
1076
+ /** The skewed face must paint the same secondary fill as its paired foreground. */
1077
+ .noir-button-secondary { --noir-action-fill: var(--noir-secondary); --noir-action-line: var(--noir-secondary); }
1072
1078
  .noir-button-outline, .noir-button-ghost { --noir-action-fill: var(--noir-surface); color: var(--noir-text); }
1073
1079
  .noir-button-danger { --noir-action-line: var(--noir-danger); color: var(--noir-danger); }
1074
1080
  .noir-button:hover, .noir-button[data-noir-state="hover"] { background: transparent; color: var(--noir-text); box-shadow: none; transform: none; filter: none; }
@@ -1298,7 +1304,10 @@
1298
1304
  [data-ui="neo-noir"][data-mode="contrast"] { --noir-grain: none; --noir-corner: none; --noir-border-alpha: 1; }
1299
1305
  /** Warning actions inherit preset geometry and use the paired semantic warning colors. */
1300
1306
  [data-ui="neo-noir"][data-mode] .noir-button.noir-button-warning {
1301
- background: var(--noir-warning);
1307
+ /** The skewed face owns the warning fill; a rectangular host fill sits behind it. */
1308
+ --noir-action-fill: var(--noir-warning);
1309
+ --noir-action-line: var(--noir-warning);
1310
+ background: transparent;
1302
1311
  color: var(--noir-on-warning);
1303
1312
  border-color: var(--noir-warning);
1304
1313
  text-shadow: none;
@@ -253,7 +253,7 @@
253
253
  --usk-native-range-track-shadow: 4px 4px 8px rgb(0 0 0 / .22);
254
254
  --usk-native-range-progress-background: var(--neo-primary);
255
255
  --usk-native-range-thumb-size: 1.45rem;
256
- --usk-native-range-thumb-background: var(--neo-surface-strong);
256
+ --usk-native-range-thumb-background: var(--usk-native-primary);
257
257
  --usk-native-range-thumb-border: 1px solid var(--neo-border);
258
258
  --usk-native-range-thumb-radius: 50%;
259
259
  --usk-native-range-thumb-shadow: 4px 4px 8px rgb(0 0 0 / .22);
@@ -441,7 +441,9 @@
441
441
  /* Theme-responsive component defaults */
442
442
  .neo-card, .neo-panel { background: var(--neo-card-bg); }
443
443
  .neo-toolbar, .neo-table-wrap { background: var(--neo-control-bg); }
444
- .neo-button:not(.neo-button-primary):not(.neo-button-secondary):not(.neo-button-danger):not(.neo-button-warning):not(.neo-button-ghost), .neo-icon-button { background: var(--neo-control-bg); }
444
+ /** Attribute-selected variants bypass the legacy neutral-only paint fallback. */
445
+ /** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
446
+ .neo-button:where(:not([data-ui-variant])):not(.neo-button-primary):not(.neo-button-secondary):not(.neo-button-danger):not(.neo-button-warning):not(.neo-button-ghost):not(.neo-button-outline-heavy), .neo-icon-button { background: var(--neo-control-bg); }
445
447
  .neo-button, .neo-icon-button, .neo-badge, .neo-nav-link { font-family: var(--neo-font-control); }
446
448
 
447
449
 
@@ -519,7 +521,8 @@
519
521
  .neo-table { width: 100%; border-collapse: collapse; }
520
522
  .neo-table th, .neo-table td { padding: .95rem 1rem; text-align: left; border-bottom: 1px solid var(--neo-border); }
521
523
  .neo-table th { color: var(--neo-text); font-size: .82rem; font-weight: 900; text-transform: uppercase; letter-spacing: .08em; background: rgb(var(--neo-primary-rgb) / .08); }
522
- .neo-table td { color: var(--neo-text-muted); }
524
+ /** Table values use surface text because the inset material can reduce muted-ink contrast. */
525
+ .neo-table td { color: var(--neo-text); }
523
526
  .neo-table tr:hover td { background: rgb(var(--neo-primary-rgb) / .045); }
524
527
 
525
528
  /* =========================================================
@@ -640,7 +643,7 @@
640
643
  --usk-native-range-track-radius: var(--neo-radius-pill);
641
644
  --usk-native-range-track-shadow: var(--neo-inset-shadow-sm);
642
645
  --usk-native-range-thumb-size: 1.65rem;
643
- --usk-native-range-thumb-background: var(--neo-material-raised);
646
+ --usk-native-range-thumb-background: var(--usk-native-primary);
644
647
  --usk-native-range-thumb-border: 1px solid var(--neo-material-edge);
645
648
  --usk-native-range-thumb-radius: 50%;
646
649
  --usk-native-range-thumb-shadow: var(--neo-button-shadow);
@@ -800,7 +803,8 @@
800
803
  .neo-button-primary,
801
804
  .neo-button-secondary,
802
805
  .neo-button-danger {
803
- background-image: linear-gradient(155deg, rgb(255 255 255 / .28), transparent 52%, rgb(0 0 0 / .08));
806
+ /** Keep the molded highlight at the edges, outside the central label lane. */
807
+ background-image: linear-gradient(155deg, rgb(255 255 255 / .28), transparent 20%, transparent 80%, rgb(0 0 0 / .08));
804
808
  }
805
809
 
806
810
  .neo-button-primary {
@@ -841,8 +845,10 @@
841
845
  box-shadow: inset .28rem .28rem .58rem rgb(0 0 0 / .34), inset -.22rem -.22rem .5rem rgb(255 255 255 / .22);
842
846
  }
843
847
 
848
+ /** Neutral defaults exclude outlined actions so their hover fill and ink remain paired. */
849
+
844
850
  .neo-button-ghost,
845
- .neo-button:not(.neo-button-primary):not(.neo-button-secondary):not(.neo-button-danger):not(.neo-button-warning):not(.neo-button-ghost),
851
+ .neo-button:where(:not([data-ui-variant])):not(.neo-button-primary):not(.neo-button-secondary):not(.neo-button-danger):not(.neo-button-warning):not(.neo-button-ghost):not(.neo-button-outline-heavy),
846
852
  .neo-icon-button {
847
853
  background-color: var(--neo-material-raised);
848
854
  background-image: linear-gradient(145deg, var(--neo-material-top-light), transparent 52%);
@@ -862,7 +868,7 @@
862
868
  .neo-button-outline-heavy {
863
869
  background-color: var(--neo-material-raised);
864
870
  background-image: linear-gradient(145deg, var(--neo-material-top-light), transparent 52%);
865
- color: var(--usk-primary-ink, var(--neo-primary));
871
+ color: var(--usk-primary-ink, var(--neo-text));
866
872
  border: 1px solid var(--neo-material-edge);
867
873
  border-radius: var(--neo-radius-md);
868
874
  box-shadow: var(--neo-button-shadow);
@@ -252,7 +252,7 @@
252
252
  --usk-native-range-track-shadow: 0 3px 8px rgb(0 0 0 / .18);
253
253
  --usk-native-range-progress-background: var(--organic-primary);
254
254
  --usk-native-range-thumb-size: 1.45rem;
255
- --usk-native-range-thumb-background: var(--organic-surface-strong);
255
+ --usk-native-range-thumb-background: var(--usk-native-primary);
256
256
  --usk-native-range-thumb-border: 1px solid var(--organic-border);
257
257
  --usk-native-range-thumb-radius: 50%;
258
258
  --usk-native-range-thumb-shadow: 0 3px 8px rgb(0 0 0 / .18);
@@ -630,7 +630,7 @@
630
630
  .organic-button.organic-button-outline-heavy,
631
631
  .organic-button-outline-heavy {
632
632
  background: transparent;
633
- color: var(--usk-primary-ink, var(--organic-primary));
633
+ color: var(--usk-primary-ink, var(--organic-text));
634
634
  border-style: solid;
635
635
  border-width: 2px;
636
636
  border-color: var(--organic-primary);
@@ -885,7 +885,7 @@
885
885
  --usk-native-range-track-shadow: none;
886
886
  --usk-native-range-progress-background: linear-gradient(90deg, var(--organic-primary), rgb(var(--organic-primary-rgb) / .72));
887
887
  --usk-native-range-thumb-size: 1.15rem;
888
- --usk-native-range-thumb-background: var(--organic-material-bg);
888
+ --usk-native-range-thumb-background: var(--usk-native-primary);
889
889
  --usk-native-range-thumb-border: 1px solid var(--organic-hairline);
890
890
  --usk-native-range-thumb-radius: 48% 52% 44% 56%;
891
891
  --usk-native-range-thumb-shadow: var(--organic-quiet-shadow);
@@ -1044,7 +1044,7 @@
1044
1044
  --usk-native-range-track-background: var(--organic-surface-soft);
1045
1045
  --usk-native-range-track-radius: 99px;
1046
1046
  --usk-native-range-track-size: 5px;
1047
- --usk-native-range-thumb-background: var(--organic-primary);
1047
+ --usk-native-range-thumb-background: var(--usk-native-primary);
1048
1048
  --usk-native-range-thumb-radius: 50%;
1049
1049
  --usk-native-range-thumb-border: 0;
1050
1050
  --usk-native-range-progress-background: var(--organic-primary);