ui-style-kit-css 2.6.1 → 2.7.0

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 (58) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +13 -12
  3. package/dist/ui-style-kit.css +481 -95
  4. package/dist/ui-style-kit.min.css +2 -2
  5. package/dist/ui-style-kit.visual.css +481 -95
  6. package/dist/ui-style-kit.visual.min.css +2 -2
  7. package/dist/ui-style-kit.with-bridge.css +481 -95
  8. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  9. package/dist/visual/art-deco.css +322 -12
  10. package/dist/visual/bauhaus.css +2 -2
  11. package/dist/visual/bento.css +2 -2
  12. package/dist/visual/brutalism.css +318 -8
  13. package/dist/visual/clay.css +2 -2
  14. package/dist/visual/cyberpunk.css +327 -10
  15. package/dist/visual/data-terminal.css +319 -9
  16. package/dist/visual/editorial-luxe.css +319 -9
  17. package/dist/visual/industrial-utility.css +323 -8
  18. package/dist/visual/maximalist.css +320 -9
  19. package/dist/visual/minimal-saas.css +317 -7
  20. package/dist/visual/neo-noir.css +2 -2
  21. package/dist/visual/neumorphism.css +319 -9
  22. package/dist/visual/organic-modern.css +2 -2
  23. package/dist/visual/paper-editorial.css +358 -8
  24. package/dist/visual/retro-glass.css +326 -8
  25. package/dist/visual/retrofuturism.css +320 -10
  26. package/dist/visual/tactile.css +327 -15
  27. package/dist/visual/technical-blueprint.css +320 -10
  28. package/dist/visual/y2k.css +319 -9
  29. package/docs/COMPONENT-SPACING.md +154 -0
  30. package/docs/ECOSYSTEM.md +2 -2
  31. package/docs/PUBLISHING.md +7 -7
  32. package/docs/RELEASE-2.7.0.md +21 -0
  33. package/manifest.json +9 -1
  34. package/package.json +2 -2
  35. package/styles/art-deco.css +8 -8
  36. package/styles/bauhaus.css +4 -3
  37. package/styles/bento.css +17 -10
  38. package/styles/brutalism.css +4 -3
  39. package/styles/clay.css +6 -4
  40. package/styles/clean-defaults.css +20 -0
  41. package/styles/component-composition.css +63 -0
  42. package/styles/components.css +262 -2
  43. package/styles/cyberpunk.css +12 -5
  44. package/styles/data-terminal.css +6 -4
  45. package/styles/editorial-luxe.css +7 -4
  46. package/styles/industrial-utility.css +10 -3
  47. package/styles/maximalist.css +7 -4
  48. package/styles/minimal-saas.css +3 -2
  49. package/styles/native-elements.css +32 -2
  50. package/styles/neo-noir.css +7 -5
  51. package/styles/neumorphism.css +5 -4
  52. package/styles/organic-modern.css +3 -3
  53. package/styles/paper-editorial.css +39 -3
  54. package/styles/retro-glass.css +9 -3
  55. package/styles/retrofuturism.css +7 -5
  56. package/styles/tactile.css +16 -6
  57. package/styles/technical-blueprint.css +8 -5
  58. package/styles/y2k.css +5 -4
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * UI Style Kit CSS v2.6.1
2
+ * UI Style Kit CSS v2.7.0
3
3
  * CSS theme and UI style preset library.
4
4
  * License: MIT
5
5
  */
@@ -2408,8 +2408,11 @@
2408
2408
  [data-ui][data-mode] :where(input[type="radio"]) { border-radius: var(--usk-native-radio-radius); }
2409
2409
 
2410
2410
  [data-ui][data-mode] :where(input[type="checkbox"]:checked) {
2411
- background-color: var(--usk-native-choice-checked-background);
2412
- 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%);
2411
+ /* The final background layer accepts both solid and gradient preset fills. */
2412
+ background:
2413
+ linear-gradient(45deg, transparent 38%, var(--usk-native-choice-mark-color) 38% 62%, transparent 62%) 24% 62% / 32% 36% no-repeat,
2414
+ linear-gradient(135deg, transparent 40%, var(--usk-native-choice-mark-color) 40% 60%, transparent 60%) 68% 43% / 52% 58% no-repeat,
2415
+ var(--usk-native-choice-checked-background);
2413
2416
  }
2414
2417
 
2415
2418
  [data-ui][data-mode] :where(input[type="checkbox"]:hover:not(:disabled), input[type="radio"]:hover:not(:disabled)) {
@@ -2830,6 +2833,33 @@
2830
2833
  }
2831
2834
  }
2832
2835
 
2836
+ /** Choice-state paint follows preset geometry, including presets with material surface tokens. */
2837
+ @layer ui-style-kit.clean_defaults {
2838
+ /** Disabled choices remain recognizable without relying on faded opacity alone. */
2839
+ [data-ui][data-mode] :where(input[type="radio"]:disabled) {
2840
+ background: var(--usk-native-bg);
2841
+ border-color: var(--usk-native-text-muted);
2842
+ border-style: dashed;
2843
+ opacity: .7;
2844
+ }
2845
+ @supports (color: color-mix(in srgb, black, white)) {
2846
+ [data-ui][data-mode] :where(input[type="radio"]:disabled) {
2847
+ background: color-mix(in srgb, var(--usk-native-text-muted) 24%, var(--usk-native-bg));
2848
+ }
2849
+ }
2850
+ [data-ui][data-mode] :where(input[type="radio"]:disabled:checked) {
2851
+ background: radial-gradient(circle, var(--usk-native-text-muted) 0 31%, transparent 34%), var(--usk-native-bg);
2852
+ }
2853
+
2854
+
2855
+ @media (forced-colors: active) {
2856
+ [data-ui][data-mode] :where(input[type="radio"]:disabled) {
2857
+ border-color: GrayText;
2858
+ background: Canvas;
2859
+ }
2860
+ }
2861
+ }
2862
+
2833
2863
 
2834
2864
  /* styles/components.css */
2835
2865
  /* =========================================================
@@ -4174,7 +4204,7 @@
4174
4204
  :where(.saas-tabs, .bento-tabs, .max-tabs, .bau-tabs, .tactile-tabs, .neo-tabs, .retro-tabs, .brutal-tabs, .cyber-tabs, .y2k-tabs, .rg-tabs, .luxe-tabs, .organic-tabs, .utility-tabs, .blueprint-tabs, .deco-tabs, .clay-tabs, .terminal-tabs, .paper-tabs, .noir-tabs), :where([data-ui="y2k"]) :where(.usk-tabs), :where([data-ui="y2k"]) :where(.ui-tabs) { display: grid; gap: .75rem; }
4175
4205
  :where(.saas-tab-list, .bento-tab-list, .max-tab-list, .bau-tab-list, .tactile-tab-list, .neo-tab-list, .retro-tab-list, .brutal-tab-list, .cyber-tab-list, .y2k-tab-list, .rg-tab-list, .luxe-tab-list, .organic-tab-list, .utility-tab-list, .blueprint-tab-list, .deco-tab-list, .clay-tab-list, .terminal-tab-list, .paper-tab-list, .noir-tab-list), :where([data-ui="y2k"]) :where(.usk-tab-list), :where([data-ui="y2k"]) :where(.ui-tab-list) { display: flex; flex-wrap: wrap; gap: .25rem; border-block-end: var(--usk-native-border-width) solid var(--usk-native-border); }
4176
4206
  :where(.saas-tab, .bento-tab, .max-tab, .bau-tab, .tactile-tab, .neo-tab, .retro-tab, .brutal-tab, .cyber-tab, .y2k-tab, .rg-tab, .luxe-tab, .organic-tab, .utility-tab, .blueprint-tab, .deco-tab, .clay-tab, .terminal-tab, .paper-tab, .noir-tab), :where([data-ui="y2k"]) :where(.usk-tab), :where([data-ui="y2k"]) :where(.ui-tab) { min-block-size: 44px; padding: .6rem .9rem; color: var(--usk-native-text-muted); background: transparent; border: 0; border-block-end: calc(var(--usk-native-border-width) * 2) solid transparent; font: inherit; cursor: pointer; }
4177
- :where(.saas-tab[aria-selected="true"], .bento-tab[aria-selected="true"], .max-tab[aria-selected="true"], .bau-tab[aria-selected="true"], .tactile-tab[aria-selected="true"], .neo-tab[aria-selected="true"], .retro-tab[aria-selected="true"], .brutal-tab[aria-selected="true"], .cyber-tab[aria-selected="true"], .y2k-tab[aria-selected="true"], .rg-tab[aria-selected="true"], .luxe-tab[aria-selected="true"], .organic-tab[aria-selected="true"], .utility-tab[aria-selected="true"], .blueprint-tab[aria-selected="true"], .deco-tab[aria-selected="true"], .clay-tab[aria-selected="true"], .terminal-tab[aria-selected="true"], .paper-tab[aria-selected="true"], .noir-tab[aria-selected="true"]), :where([data-ui="y2k"]) :where(.usk-tab[aria-selected="true"]), :where([data-ui="y2k"]) :where(.ui-tab[aria-selected="true"]) { color: var(--usk-primary-ink, var(--usk-native-primary)); border-block-end-color: var(--usk-native-primary); }
4207
+ :where(.saas-tab[aria-selected="true"], .bento-tab[aria-selected="true"], .max-tab[aria-selected="true"], .bau-tab[aria-selected="true"], .tactile-tab[aria-selected="true"], .neo-tab[aria-selected="true"], .retro-tab[aria-selected="true"], .brutal-tab[aria-selected="true"], .cyber-tab[aria-selected="true"], .y2k-tab[aria-selected="true"], .rg-tab[aria-selected="true"], .luxe-tab[aria-selected="true"], .organic-tab[aria-selected="true"], .utility-tab[aria-selected="true"], .blueprint-tab[aria-selected="true"], .deco-tab[aria-selected="true"], .clay-tab[aria-selected="true"], .terminal-tab[aria-selected="true"], .paper-tab[aria-selected="true"], .noir-tab[aria-selected="true"]), :where([data-ui="y2k"]) :where(.usk-tab[aria-selected="true"]), :where([data-ui="y2k"]) :where(.ui-tab[aria-selected="true"]) { color: var(--usk-native-text); border-block-end-color: var(--usk-native-primary); }
4178
4208
  :where(.saas-tab-panel, .bento-tab-panel, .max-tab-panel, .bau-tab-panel, .tactile-tab-panel, .neo-tab-panel, .retro-tab-panel, .brutal-tab-panel, .cyber-tab-panel, .y2k-tab-panel, .rg-tab-panel, .luxe-tab-panel, .organic-tab-panel, .utility-tab-panel, .blueprint-tab-panel, .deco-tab-panel, .clay-tab-panel, .terminal-tab-panel, .paper-tab-panel, .noir-tab-panel), :where([data-ui="y2k"]) :where(.usk-tab-panel), :where([data-ui="y2k"]) :where(.ui-tab-panel) { padding-block: .75rem; color: var(--usk-native-text); }
4179
4209
 
4180
4210
  :where(.saas-pagination, .saas-breadcrumb-list, .saas-chip-group, .saas-avatar-group, .bento-pagination, .bento-breadcrumb-list, .bento-chip-group, .bento-avatar-group, .max-pagination, .max-breadcrumb-list, .max-chip-group, .max-avatar-group, .bau-pagination, .bau-breadcrumb-list, .bau-chip-group, .bau-avatar-group, .tactile-pagination, .tactile-breadcrumb-list, .tactile-chip-group, .tactile-avatar-group, .neo-pagination, .neo-breadcrumb-list, .neo-chip-group, .neo-avatar-group, .retro-pagination, .retro-breadcrumb-list, .retro-chip-group, .retro-avatar-group, .brutal-pagination, .brutal-breadcrumb-list, .brutal-chip-group, .brutal-avatar-group, .cyber-pagination, .cyber-breadcrumb-list, .cyber-chip-group, .cyber-avatar-group, .y2k-pagination, .y2k-breadcrumb-list, .y2k-chip-group, .y2k-avatar-group, .rg-pagination, .rg-breadcrumb-list, .rg-chip-group, .rg-avatar-group, .luxe-pagination, .luxe-breadcrumb-list, .luxe-chip-group, .luxe-avatar-group, .organic-pagination, .organic-breadcrumb-list, .organic-chip-group, .organic-avatar-group, .utility-pagination, .utility-breadcrumb-list, .utility-chip-group, .utility-avatar-group, .blueprint-pagination, .blueprint-breadcrumb-list, .blueprint-chip-group, .blueprint-avatar-group, .deco-pagination, .deco-breadcrumb-list, .deco-chip-group, .deco-avatar-group, .clay-pagination, .clay-breadcrumb-list, .clay-chip-group, .clay-avatar-group, .terminal-pagination, .terminal-breadcrumb-list, .terminal-chip-group, .terminal-avatar-group, .paper-pagination, .paper-breadcrumb-list, .paper-chip-group, .paper-avatar-group, .noir-pagination, .noir-breadcrumb-list, .noir-chip-group, .noir-avatar-group), :where([data-ui="y2k"]) :where(.usk-pagination,.usk-breadcrumb-list,.usk-chip-group,.usk-avatar-group), :where([data-ui="y2k"]) :where(.ui-pagination,.ui-breadcrumb-list,.ui-chip-group,.ui-avatar-group) { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 0; padding: 0; list-style: none; }
@@ -4196,7 +4226,7 @@
4196
4226
  @media (prefers-reduced-motion: reduce) { :where(.saas-skeleton, .bento-skeleton, .max-skeleton, .bau-skeleton, .tactile-skeleton, .neo-skeleton, .retro-skeleton, .brutal-skeleton, .cyber-skeleton, .y2k-skeleton, .rg-skeleton, .luxe-skeleton, .organic-skeleton, .utility-skeleton, .blueprint-skeleton, .deco-skeleton, .clay-skeleton, .terminal-skeleton, .paper-skeleton, .noir-skeleton), :where([data-ui="y2k"]) :where(.usk-skeleton), :where([data-ui="y2k"]) :where(.ui-skeleton) { animation: none; } }
4197
4227
 
4198
4228
  :where(.saas-empty-state, .bento-empty-state, .max-empty-state, .bau-empty-state, .tactile-empty-state, .neo-empty-state, .retro-empty-state, .brutal-empty-state, .cyber-empty-state, .y2k-empty-state, .rg-empty-state, .luxe-empty-state, .organic-empty-state, .utility-empty-state, .blueprint-empty-state, .deco-empty-state, .clay-empty-state, .terminal-empty-state, .paper-empty-state, .noir-empty-state), :where([data-ui="y2k"]) :where(.usk-empty-state), :where([data-ui="y2k"]) :where(.ui-empty-state) { display: grid; justify-items: center; gap: .75rem; max-inline-size: 42rem; padding: clamp(1.25rem, 4vw, 3rem); color: var(--usk-native-text); background: var(--usk-native-surface); border: var(--usk-native-border-width) solid var(--usk-native-border); border-radius: var(--usk-native-radius); text-align: center; }
4199
- :where(.saas-empty-state-icon, .bento-empty-state-icon, .max-empty-state-icon, .bau-empty-state-icon, .tactile-empty-state-icon, .neo-empty-state-icon, .retro-empty-state-icon, .brutal-empty-state-icon, .cyber-empty-state-icon, .y2k-empty-state-icon, .rg-empty-state-icon, .luxe-empty-state-icon, .organic-empty-state-icon, .utility-empty-state-icon, .blueprint-empty-state-icon, .deco-empty-state-icon, .clay-empty-state-icon, .terminal-empty-state-icon, .paper-empty-state-icon, .noir-empty-state-icon), :where([data-ui="y2k"]) :where(.usk-empty-state-icon), :where([data-ui="y2k"]) :where(.ui-empty-state-icon) { display: grid; place-items: center; color: var(--usk-primary-ink, var(--usk-native-primary)); }
4229
+ :where(.saas-empty-state-icon, .bento-empty-state-icon, .max-empty-state-icon, .bau-empty-state-icon, .tactile-empty-state-icon, .neo-empty-state-icon, .retro-empty-state-icon, .brutal-empty-state-icon, .cyber-empty-state-icon, .y2k-empty-state-icon, .rg-empty-state-icon, .luxe-empty-state-icon, .organic-empty-state-icon, .utility-empty-state-icon, .blueprint-empty-state-icon, .deco-empty-state-icon, .clay-empty-state-icon, .terminal-empty-state-icon, .paper-empty-state-icon, .noir-empty-state-icon), :where([data-ui="y2k"]) :where(.usk-empty-state-icon), :where([data-ui="y2k"]) :where(.ui-empty-state-icon) { display: grid; place-items: center; color: var(--usk-native-link); }
4200
4230
  :where(.saas-empty-state-title, .saas-toast-title, .bento-empty-state-title, .bento-toast-title, .max-empty-state-title, .max-toast-title, .bau-empty-state-title, .bau-toast-title, .tactile-empty-state-title, .tactile-toast-title, .neo-empty-state-title, .neo-toast-title, .retro-empty-state-title, .retro-toast-title, .brutal-empty-state-title, .brutal-toast-title, .cyber-empty-state-title, .cyber-toast-title, .y2k-empty-state-title, .y2k-toast-title, .rg-empty-state-title, .rg-toast-title, .luxe-empty-state-title, .luxe-toast-title, .organic-empty-state-title, .organic-toast-title, .utility-empty-state-title, .utility-toast-title, .blueprint-empty-state-title, .blueprint-toast-title, .deco-empty-state-title, .deco-toast-title, .clay-empty-state-title, .clay-toast-title, .terminal-empty-state-title, .terminal-toast-title, .paper-empty-state-title, .paper-toast-title, .noir-empty-state-title, .noir-toast-title), :where([data-ui="y2k"]) :where(.usk-empty-state-title,.usk-toast-title), :where([data-ui="y2k"]) :where(.ui-empty-state-title,.ui-toast-title) { margin: 0; color: var(--usk-native-text); font-weight: 750; }
4201
4231
  :where(.saas-empty-state-body, .saas-toast-body, .saas-metric-detail, .bento-empty-state-body, .bento-toast-body, .bento-metric-detail, .max-empty-state-body, .max-toast-body, .max-metric-detail, .bau-empty-state-body, .bau-toast-body, .bau-metric-detail, .tactile-empty-state-body, .tactile-toast-body, .tactile-metric-detail, .neo-empty-state-body, .neo-toast-body, .neo-metric-detail, .retro-empty-state-body, .retro-toast-body, .retro-metric-detail, .brutal-empty-state-body, .brutal-toast-body, .brutal-metric-detail, .cyber-empty-state-body, .cyber-toast-body, .cyber-metric-detail, .y2k-empty-state-body, .y2k-toast-body, .y2k-metric-detail, .rg-empty-state-body, .rg-toast-body, .rg-metric-detail, .luxe-empty-state-body, .luxe-toast-body, .luxe-metric-detail, .organic-empty-state-body, .organic-toast-body, .organic-metric-detail, .utility-empty-state-body, .utility-toast-body, .utility-metric-detail, .blueprint-empty-state-body, .blueprint-toast-body, .blueprint-metric-detail, .deco-empty-state-body, .deco-toast-body, .deco-metric-detail, .clay-empty-state-body, .clay-toast-body, .clay-metric-detail, .terminal-empty-state-body, .terminal-toast-body, .terminal-metric-detail, .paper-empty-state-body, .paper-toast-body, .paper-metric-detail, .noir-empty-state-body, .noir-toast-body, .noir-metric-detail), :where([data-ui="y2k"]) :where(.usk-empty-state-body,.usk-toast-body,.usk-metric-detail), :where([data-ui="y2k"]) :where(.ui-empty-state-body,.ui-toast-body,.ui-metric-detail) { margin: 0; color: var(--usk-native-text-muted); }
4202
4232
  :where(.saas-empty-state-actions, .saas-toast-actions, .bento-empty-state-actions, .bento-toast-actions, .max-empty-state-actions, .max-toast-actions, .bau-empty-state-actions, .bau-toast-actions, .tactile-empty-state-actions, .tactile-toast-actions, .neo-empty-state-actions, .neo-toast-actions, .retro-empty-state-actions, .retro-toast-actions, .brutal-empty-state-actions, .brutal-toast-actions, .cyber-empty-state-actions, .cyber-toast-actions, .y2k-empty-state-actions, .y2k-toast-actions, .rg-empty-state-actions, .rg-toast-actions, .luxe-empty-state-actions, .luxe-toast-actions, .organic-empty-state-actions, .organic-toast-actions, .utility-empty-state-actions, .utility-toast-actions, .blueprint-empty-state-actions, .blueprint-toast-actions, .deco-empty-state-actions, .deco-toast-actions, .clay-empty-state-actions, .clay-toast-actions, .terminal-empty-state-actions, .terminal-toast-actions, .paper-empty-state-actions, .paper-toast-actions, .noir-empty-state-actions, .noir-toast-actions), :where([data-ui="y2k"]) :where(.usk-empty-state-actions,.usk-toast-actions), :where([data-ui="y2k"]) :where(.ui-empty-state-actions,.ui-toast-actions) { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; }
@@ -4245,6 +4275,266 @@
4245
4275
  :where(.saas-file-upload, .bento-file-upload, .max-file-upload, .bau-file-upload, .tactile-file-upload, .neo-file-upload, .retro-file-upload, .brutal-file-upload, .cyber-file-upload, .y2k-file-upload, .rg-file-upload, .luxe-file-upload, .organic-file-upload, .utility-file-upload, .blueprint-file-upload, .deco-file-upload, .clay-file-upload, .terminal-file-upload, .paper-file-upload, .noir-file-upload), :where([data-ui="y2k"]) :where(.usk-file-upload), :where([data-ui="y2k"]) :where(.ui-file-upload) { display: grid; gap: .75rem; }
4246
4276
  :where(.saas-dropzone, .bento-dropzone, .max-dropzone, .bau-dropzone, .tactile-dropzone, .neo-dropzone, .retro-dropzone, .brutal-dropzone, .cyber-dropzone, .y2k-dropzone, .rg-dropzone, .luxe-dropzone, .organic-dropzone, .utility-dropzone, .blueprint-dropzone, .deco-dropzone, .clay-dropzone, .terminal-dropzone, .paper-dropzone, .noir-dropzone), :where([data-ui="y2k"]) :where(.usk-dropzone), :where([data-ui="y2k"]) :where(.ui-dropzone) { display: grid; place-items: center; gap: .5rem; min-block-size: 8rem; padding: 1.25rem; color: var(--usk-native-text-muted); background: var(--usk-native-surface-soft); border: calc(var(--usk-native-border-width) * 2) dashed var(--usk-native-border); border-radius: var(--usk-native-radius); text-align: center; }
4247
4277
  :where(.saas-dropzone[data-drag-active="true"], .bento-dropzone[data-drag-active="true"], .max-dropzone[data-drag-active="true"], .bau-dropzone[data-drag-active="true"], .tactile-dropzone[data-drag-active="true"], .neo-dropzone[data-drag-active="true"], .retro-dropzone[data-drag-active="true"], .brutal-dropzone[data-drag-active="true"], .cyber-dropzone[data-drag-active="true"], .y2k-dropzone[data-drag-active="true"], .rg-dropzone[data-drag-active="true"], .luxe-dropzone[data-drag-active="true"], .organic-dropzone[data-drag-active="true"], .utility-dropzone[data-drag-active="true"], .blueprint-dropzone[data-drag-active="true"], .deco-dropzone[data-drag-active="true"], .clay-dropzone[data-drag-active="true"], .terminal-dropzone[data-drag-active="true"], .paper-dropzone[data-drag-active="true"], .noir-dropzone[data-drag-active="true"]), :where([data-ui="y2k"]) :where(.usk-dropzone[data-drag-active="true"]), :where([data-ui="y2k"]) :where(.ui-dropzone[data-drag-active="true"]) { color: var(--usk-primary-ink, var(--usk-native-primary)); border-color: var(--usk-native-primary); }
4278
+ }
4279
+ @layer ui-style-kit.clean_defaults {
4280
+ /** Empty-state symbols remain prominent independently of each preset's body font. */
4281
+ [data-ui][data-mode] :where(.saas-empty-state-icon, .bento-empty-state-icon, .max-empty-state-icon, .bau-empty-state-icon, .tactile-empty-state-icon, .neo-empty-state-icon, .retro-empty-state-icon, .brutal-empty-state-icon, .cyber-empty-state-icon, .y2k-empty-state-icon, .rg-empty-state-icon, .luxe-empty-state-icon, .organic-empty-state-icon, .utility-empty-state-icon, .blueprint-empty-state-icon, .deco-empty-state-icon, .clay-empty-state-icon, .terminal-empty-state-icon, .paper-empty-state-icon, .noir-empty-state-icon), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-empty-state-icon), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-empty-state-icon) {
4282
+ display: grid;
4283
+ place-items: center;
4284
+ font-size: var(--usk-empty-state-icon-size, 2.75rem);
4285
+ line-height: 1;
4286
+ min-inline-size: 1em;
4287
+ min-block-size: 1em;
4288
+ margin: 0;
4289
+ padding: 0;
4290
+ }
4291
+
4292
+ /** Thin progress tracks own their inset; the fill never inherits element spacing. */
4293
+ [data-ui][data-mode] :where(.saas-progress, .bento-progress, .max-progress, .bau-progress, .tactile-progress, .neo-progress, .retro-progress, .brutal-progress, .cyber-progress, .y2k-progress, .rg-progress, .luxe-progress, .organic-progress, .utility-progress, .blueprint-progress, .deco-progress, .clay-progress, .terminal-progress, .paper-progress, .noir-progress), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-progress), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-progress) {
4294
+ box-sizing: border-box;
4295
+ display: flex;
4296
+ align-items: center;
4297
+ min-inline-size: 0;
4298
+ max-inline-size: 100%;
4299
+ margin: 0;
4300
+ padding: 0;
4301
+ }
4302
+ [data-ui][data-mode] :where(.saas-progress-bar, .bento-progress-bar, .max-progress-bar, .bau-progress-bar, .tactile-progress-bar, .neo-progress-bar, .retro-progress-bar, .brutal-progress-bar, .cyber-progress-bar, .y2k-progress-bar, .rg-progress-bar, .luxe-progress-bar, .organic-progress-bar, .utility-progress-bar, .blueprint-progress-bar, .deco-progress-bar, .clay-progress-bar, .terminal-progress-bar, .paper-progress-bar, .noir-progress-bar), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-progress-bar), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-progress-bar) {
4303
+ box-sizing: border-box;
4304
+ flex: 0 1 auto;
4305
+ align-self: center;
4306
+ min-inline-size: 0;
4307
+ min-block-size: 0;
4308
+ max-inline-size: 100%;
4309
+ block-size: 100%;
4310
+ margin: 0;
4311
+ padding: 0;
4312
+ }
4313
+
4314
+ /** Status surfaces keep their signal after preset material and border shorthands. */
4315
+
4316
+ [data-ui][data-mode] :where(.saas-alert-success, .bento-alert-success, .max-alert-success, .bau-alert-success, .tactile-alert-success, .neo-alert-success, .retro-alert-success, .brutal-alert-success, .cyber-alert-success, .y2k-alert-success, .rg-alert-success, .luxe-alert-success, .organic-alert-success, .utility-alert-success, .blueprint-alert-success, .deco-alert-success, .clay-alert-success, .terminal-alert-success, .paper-alert-success, .noir-alert-success), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="success"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="success"])) {
4317
+ --usk-message-tone: var(--usk-native-success);
4318
+ background: var(--usk-message-tone);
4319
+ color: var(--usk-native-on-success);
4320
+ border-color: var(--usk-message-tone);
4321
+ }
4322
+ [data-ui][data-mode] :where(.saas-alert-success, .bento-alert-success, .max-alert-success, .bau-alert-success, .tactile-alert-success, .neo-alert-success, .retro-alert-success, .brutal-alert-success, .cyber-alert-success, .y2k-alert-success, .rg-alert-success, .luxe-alert-success, .organic-alert-success, .utility-alert-success, .blueprint-alert-success, .deco-alert-success, .clay-alert-success, .terminal-alert-success, .paper-alert-success, .noir-alert-success) :where(.saas-alert-title, .bento-alert-title, .max-alert-title, .bau-alert-title, .tactile-alert-title, .neo-alert-title, .retro-alert-title, .brutal-alert-title, .cyber-alert-title, .y2k-alert-title, .rg-alert-title, .luxe-alert-title, .organic-alert-title, .utility-alert-title, .blueprint-alert-title, .deco-alert-title, .clay-alert-title, .terminal-alert-title, .paper-alert-title, .noir-alert-title), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="success"])) :where(.usk-alert-title), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="success"])) :where(.ui-alert-title) {
4323
+ color: inherit;
4324
+ text-shadow: none;
4325
+ }
4326
+ [data-ui][data-mode] :where(.saas-alert-success, .bento-alert-success, .max-alert-success, .bau-alert-success, .tactile-alert-success, .neo-alert-success, .retro-alert-success, .brutal-alert-success, .cyber-alert-success, .y2k-alert-success, .rg-alert-success, .luxe-alert-success, .organic-alert-success, .utility-alert-success, .blueprint-alert-success, .deco-alert-success, .clay-alert-success, .terminal-alert-success, .paper-alert-success, .noir-alert-success) :where(.saas-alert-body, .bento-alert-body, .max-alert-body, .bau-alert-body, .tactile-alert-body, .neo-alert-body, .retro-alert-body, .brutal-alert-body, .cyber-alert-body, .y2k-alert-body, .rg-alert-body, .luxe-alert-body, .organic-alert-body, .utility-alert-body, .blueprint-alert-body, .deco-alert-body, .clay-alert-body, .terminal-alert-body, .paper-alert-body, .noir-alert-body), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="success"])) :where(.usk-alert-body), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="success"])) :where(.ui-alert-body) {
4327
+ color: inherit;
4328
+ }
4329
+ @supports (color: color-mix(in srgb, #000, #fff)) {
4330
+ [data-ui][data-mode] :where(.saas-alert-success, .bento-alert-success, .max-alert-success, .bau-alert-success, .tactile-alert-success, .neo-alert-success, .retro-alert-success, .brutal-alert-success, .cyber-alert-success, .y2k-alert-success, .rg-alert-success, .luxe-alert-success, .organic-alert-success, .utility-alert-success, .blueprint-alert-success, .deco-alert-success, .clay-alert-success, .terminal-alert-success, .paper-alert-success, .noir-alert-success), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="success"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="success"])) {
4331
+ background: color-mix(in srgb, var(--usk-message-tone) 18%, var(--usk-native-bg));
4332
+ color: var(--usk-native-text);
4333
+ }
4334
+ }
4335
+
4336
+ [data-ui][data-mode] :where(.saas-alert-warning, .bento-alert-warning, .max-alert-warning, .bau-alert-warning, .tactile-alert-warning, .neo-alert-warning, .retro-alert-warning, .brutal-alert-warning, .cyber-alert-warning, .y2k-alert-warning, .rg-alert-warning, .luxe-alert-warning, .organic-alert-warning, .utility-alert-warning, .blueprint-alert-warning, .deco-alert-warning, .clay-alert-warning, .terminal-alert-warning, .paper-alert-warning, .noir-alert-warning), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="warning"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="warning"])) {
4337
+ --usk-message-tone: var(--usk-native-warning);
4338
+ background: var(--usk-message-tone);
4339
+ color: var(--usk-native-on-warning);
4340
+ border-color: var(--usk-message-tone);
4341
+ }
4342
+ [data-ui][data-mode] :where(.saas-alert-warning, .bento-alert-warning, .max-alert-warning, .bau-alert-warning, .tactile-alert-warning, .neo-alert-warning, .retro-alert-warning, .brutal-alert-warning, .cyber-alert-warning, .y2k-alert-warning, .rg-alert-warning, .luxe-alert-warning, .organic-alert-warning, .utility-alert-warning, .blueprint-alert-warning, .deco-alert-warning, .clay-alert-warning, .terminal-alert-warning, .paper-alert-warning, .noir-alert-warning) :where(.saas-alert-title, .bento-alert-title, .max-alert-title, .bau-alert-title, .tactile-alert-title, .neo-alert-title, .retro-alert-title, .brutal-alert-title, .cyber-alert-title, .y2k-alert-title, .rg-alert-title, .luxe-alert-title, .organic-alert-title, .utility-alert-title, .blueprint-alert-title, .deco-alert-title, .clay-alert-title, .terminal-alert-title, .paper-alert-title, .noir-alert-title), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="warning"])) :where(.usk-alert-title), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="warning"])) :where(.ui-alert-title) {
4343
+ color: inherit;
4344
+ text-shadow: none;
4345
+ }
4346
+ [data-ui][data-mode] :where(.saas-alert-warning, .bento-alert-warning, .max-alert-warning, .bau-alert-warning, .tactile-alert-warning, .neo-alert-warning, .retro-alert-warning, .brutal-alert-warning, .cyber-alert-warning, .y2k-alert-warning, .rg-alert-warning, .luxe-alert-warning, .organic-alert-warning, .utility-alert-warning, .blueprint-alert-warning, .deco-alert-warning, .clay-alert-warning, .terminal-alert-warning, .paper-alert-warning, .noir-alert-warning) :where(.saas-alert-body, .bento-alert-body, .max-alert-body, .bau-alert-body, .tactile-alert-body, .neo-alert-body, .retro-alert-body, .brutal-alert-body, .cyber-alert-body, .y2k-alert-body, .rg-alert-body, .luxe-alert-body, .organic-alert-body, .utility-alert-body, .blueprint-alert-body, .deco-alert-body, .clay-alert-body, .terminal-alert-body, .paper-alert-body, .noir-alert-body), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="warning"])) :where(.usk-alert-body), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="warning"])) :where(.ui-alert-body) {
4347
+ color: inherit;
4348
+ }
4349
+ @supports (color: color-mix(in srgb, #000, #fff)) {
4350
+ [data-ui][data-mode] :where(.saas-alert-warning, .bento-alert-warning, .max-alert-warning, .bau-alert-warning, .tactile-alert-warning, .neo-alert-warning, .retro-alert-warning, .brutal-alert-warning, .cyber-alert-warning, .y2k-alert-warning, .rg-alert-warning, .luxe-alert-warning, .organic-alert-warning, .utility-alert-warning, .blueprint-alert-warning, .deco-alert-warning, .clay-alert-warning, .terminal-alert-warning, .paper-alert-warning, .noir-alert-warning), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="warning"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="warning"])) {
4351
+ background: color-mix(in srgb, var(--usk-message-tone) 18%, var(--usk-native-bg));
4352
+ color: var(--usk-native-text);
4353
+ }
4354
+ }
4355
+
4356
+ [data-ui][data-mode] :where(.saas-alert-danger, .bento-alert-danger, .max-alert-danger, .bau-alert-danger, .tactile-alert-danger, .neo-alert-danger, .retro-alert-danger, .brutal-alert-danger, .cyber-alert-danger, .y2k-alert-danger, .rg-alert-danger, .luxe-alert-danger, .organic-alert-danger, .utility-alert-danger, .blueprint-alert-danger, .deco-alert-danger, .clay-alert-danger, .terminal-alert-danger, .paper-alert-danger, .noir-alert-danger), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="danger"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="danger"])) {
4357
+ --usk-message-tone: var(--usk-native-danger);
4358
+ background: var(--usk-message-tone);
4359
+ color: var(--usk-native-on-danger);
4360
+ border-color: var(--usk-message-tone);
4361
+ }
4362
+ [data-ui][data-mode] :where(.saas-alert-danger, .bento-alert-danger, .max-alert-danger, .bau-alert-danger, .tactile-alert-danger, .neo-alert-danger, .retro-alert-danger, .brutal-alert-danger, .cyber-alert-danger, .y2k-alert-danger, .rg-alert-danger, .luxe-alert-danger, .organic-alert-danger, .utility-alert-danger, .blueprint-alert-danger, .deco-alert-danger, .clay-alert-danger, .terminal-alert-danger, .paper-alert-danger, .noir-alert-danger) :where(.saas-alert-title, .bento-alert-title, .max-alert-title, .bau-alert-title, .tactile-alert-title, .neo-alert-title, .retro-alert-title, .brutal-alert-title, .cyber-alert-title, .y2k-alert-title, .rg-alert-title, .luxe-alert-title, .organic-alert-title, .utility-alert-title, .blueprint-alert-title, .deco-alert-title, .clay-alert-title, .terminal-alert-title, .paper-alert-title, .noir-alert-title), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="danger"])) :where(.usk-alert-title), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="danger"])) :where(.ui-alert-title) {
4363
+ color: inherit;
4364
+ text-shadow: none;
4365
+ }
4366
+ [data-ui][data-mode] :where(.saas-alert-danger, .bento-alert-danger, .max-alert-danger, .bau-alert-danger, .tactile-alert-danger, .neo-alert-danger, .retro-alert-danger, .brutal-alert-danger, .cyber-alert-danger, .y2k-alert-danger, .rg-alert-danger, .luxe-alert-danger, .organic-alert-danger, .utility-alert-danger, .blueprint-alert-danger, .deco-alert-danger, .clay-alert-danger, .terminal-alert-danger, .paper-alert-danger, .noir-alert-danger) :where(.saas-alert-body, .bento-alert-body, .max-alert-body, .bau-alert-body, .tactile-alert-body, .neo-alert-body, .retro-alert-body, .brutal-alert-body, .cyber-alert-body, .y2k-alert-body, .rg-alert-body, .luxe-alert-body, .organic-alert-body, .utility-alert-body, .blueprint-alert-body, .deco-alert-body, .clay-alert-body, .terminal-alert-body, .paper-alert-body, .noir-alert-body), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="danger"])) :where(.usk-alert-body), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="danger"])) :where(.ui-alert-body) {
4367
+ color: inherit;
4368
+ }
4369
+ @supports (color: color-mix(in srgb, #000, #fff)) {
4370
+ [data-ui][data-mode] :where(.saas-alert-danger, .bento-alert-danger, .max-alert-danger, .bau-alert-danger, .tactile-alert-danger, .neo-alert-danger, .retro-alert-danger, .brutal-alert-danger, .cyber-alert-danger, .y2k-alert-danger, .rg-alert-danger, .luxe-alert-danger, .organic-alert-danger, .utility-alert-danger, .blueprint-alert-danger, .deco-alert-danger, .clay-alert-danger, .terminal-alert-danger, .paper-alert-danger, .noir-alert-danger), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-alert:where([data-ui-variant="danger"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-alert:where([data-ui-variant="danger"])) {
4371
+ background: color-mix(in srgb, var(--usk-message-tone) 18%, var(--usk-native-bg));
4372
+ color: var(--usk-native-text);
4373
+ }
4374
+ }
4375
+
4376
+ /** Compact status and selection frames provide a readable inset around their text. */
4377
+ [data-ui][data-mode] :where(.saas-chip, .saas-tab, .saas-segment, .bento-chip, .bento-tab, .bento-segment, .max-chip, .max-tab, .max-segment, .bau-chip, .bau-tab, .bau-segment, .tactile-chip, .tactile-tab, .tactile-segment, .neo-chip, .neo-tab, .neo-segment, .retro-chip, .retro-tab, .retro-segment, .brutal-chip, .brutal-tab, .brutal-segment, .cyber-chip, .cyber-tab, .cyber-segment, .y2k-chip, .y2k-tab, .y2k-segment, .rg-chip, .rg-tab, .rg-segment, .luxe-chip, .luxe-tab, .luxe-segment, .organic-chip, .organic-tab, .organic-segment, .utility-chip, .utility-tab, .utility-segment, .blueprint-chip, .blueprint-tab, .blueprint-segment, .deco-chip, .deco-tab, .deco-segment, .clay-chip, .clay-tab, .clay-segment, .terminal-chip, .terminal-tab, .terminal-segment, .paper-chip, .paper-tab, .paper-segment, .noir-chip, .noir-tab, .noir-segment), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-chip,.usk-tab,.usk-segment), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-chip,.ui-tab,.ui-segment) {
4378
+ box-sizing: border-box;
4379
+ padding-block: var(--usk-compact-content-padding-block, .35rem);
4380
+ padding-inline: var(--usk-compact-content-padding-inline, .65rem);
4381
+ }
4382
+
4383
+ /** Public component frames shrink within their parent instead of adding an outer inset. */
4384
+ [data-ui][data-mode] :where(.saas-tabs, .saas-tab-list, .saas-tab-panel, .saas-toast-stack, .saas-toast, .saas-popover, .saas-menu, .saas-segmented-control, .bento-tabs, .bento-tab-list, .bento-tab-panel, .bento-toast-stack, .bento-toast, .bento-popover, .bento-menu, .bento-segmented-control, .max-tabs, .max-tab-list, .max-tab-panel, .max-toast-stack, .max-toast, .max-popover, .max-menu, .max-segmented-control, .bau-tabs, .bau-tab-list, .bau-tab-panel, .bau-toast-stack, .bau-toast, .bau-popover, .bau-menu, .bau-segmented-control, .tactile-tabs, .tactile-tab-list, .tactile-tab-panel, .tactile-toast-stack, .tactile-toast, .tactile-popover, .tactile-menu, .tactile-segmented-control, .neo-tabs, .neo-tab-list, .neo-tab-panel, .neo-toast-stack, .neo-toast, .neo-popover, .neo-menu, .neo-segmented-control, .retro-tabs, .retro-tab-list, .retro-tab-panel, .retro-toast-stack, .retro-toast, .retro-popover, .retro-menu, .retro-segmented-control, .brutal-tabs, .brutal-tab-list, .brutal-tab-panel, .brutal-toast-stack, .brutal-toast, .brutal-popover, .brutal-menu, .brutal-segmented-control, .cyber-tabs, .cyber-tab-list, .cyber-tab-panel, .cyber-toast-stack, .cyber-toast, .cyber-popover, .cyber-menu, .cyber-segmented-control, .y2k-tabs, .y2k-tab-list, .y2k-tab-panel, .y2k-toast-stack, .y2k-toast, .y2k-popover, .y2k-menu, .y2k-segmented-control, .rg-tabs, .rg-tab-list, .rg-tab-panel, .rg-toast-stack, .rg-toast, .rg-popover, .rg-menu, .rg-segmented-control, .luxe-tabs, .luxe-tab-list, .luxe-tab-panel, .luxe-toast-stack, .luxe-toast, .luxe-popover, .luxe-menu, .luxe-segmented-control, .organic-tabs, .organic-tab-list, .organic-tab-panel, .organic-toast-stack, .organic-toast, .organic-popover, .organic-menu, .organic-segmented-control, .utility-tabs, .utility-tab-list, .utility-tab-panel, .utility-toast-stack, .utility-toast, .utility-popover, .utility-menu, .utility-segmented-control, .blueprint-tabs, .blueprint-tab-list, .blueprint-tab-panel, .blueprint-toast-stack, .blueprint-toast, .blueprint-popover, .blueprint-menu, .blueprint-segmented-control, .deco-tabs, .deco-tab-list, .deco-tab-panel, .deco-toast-stack, .deco-toast, .deco-popover, .deco-menu, .deco-segmented-control, .clay-tabs, .clay-tab-list, .clay-tab-panel, .clay-toast-stack, .clay-toast, .clay-popover, .clay-menu, .clay-segmented-control, .terminal-tabs, .terminal-tab-list, .terminal-tab-panel, .terminal-toast-stack, .terminal-toast, .terminal-popover, .terminal-menu, .terminal-segmented-control, .paper-tabs, .paper-tab-list, .paper-tab-panel, .paper-toast-stack, .paper-toast, .paper-popover, .paper-menu, .paper-segmented-control, .noir-tabs, .noir-tab-list, .noir-tab-panel, .noir-toast-stack, .noir-toast, .noir-popover, .noir-menu, .noir-segmented-control), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-tabs,.usk-tab-list,.usk-tab-panel,.usk-toast-stack,.usk-toast,.usk-popover,.usk-menu,.usk-segmented-control), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-tabs,.ui-tab-list,.ui-tab-panel,.ui-toast-stack,.ui-toast,.ui-popover,.ui-menu,.ui-segmented-control) {
4385
+ box-sizing: border-box;
4386
+ min-inline-size: 0;
4387
+ max-inline-size: 100%;
4388
+ margin-inline: 0;
4389
+ }
4390
+
4391
+ /** Overlay frames retain their content inset after the native element-spacing floor. */
4392
+ [data-ui][data-mode] :where(.saas-popover, .saas-menu, .saas-listbox, .bento-popover, .bento-menu, .bento-listbox, .max-popover, .max-menu, .max-listbox, .bau-popover, .bau-menu, .bau-listbox, .tactile-popover, .tactile-menu, .tactile-listbox, .neo-popover, .neo-menu, .neo-listbox, .retro-popover, .retro-menu, .retro-listbox, .brutal-popover, .brutal-menu, .brutal-listbox, .cyber-popover, .cyber-menu, .cyber-listbox, .y2k-popover, .y2k-menu, .y2k-listbox, .rg-popover, .rg-menu, .rg-listbox, .luxe-popover, .luxe-menu, .luxe-listbox, .organic-popover, .organic-menu, .organic-listbox, .utility-popover, .utility-menu, .utility-listbox, .blueprint-popover, .blueprint-menu, .blueprint-listbox, .deco-popover, .deco-menu, .deco-listbox, .clay-popover, .clay-menu, .clay-listbox, .terminal-popover, .terminal-menu, .terminal-listbox, .paper-popover, .paper-menu, .paper-listbox, .noir-popover, .noir-menu, .noir-listbox), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-popover,.usk-menu,.usk-listbox), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-popover,.ui-menu,.ui-listbox) {
4393
+ box-sizing: border-box;
4394
+ min-inline-size: 0;
4395
+ max-inline-size: 100%;
4396
+ padding: var(--usk-overlay-padding, .5rem);
4397
+ }
4398
+ [data-ui][data-mode] :where(.saas-menu-item, .saas-listbox-option, .bento-menu-item, .bento-listbox-option, .max-menu-item, .max-listbox-option, .bau-menu-item, .bau-listbox-option, .tactile-menu-item, .tactile-listbox-option, .neo-menu-item, .neo-listbox-option, .retro-menu-item, .retro-listbox-option, .brutal-menu-item, .brutal-listbox-option, .cyber-menu-item, .cyber-listbox-option, .y2k-menu-item, .y2k-listbox-option, .rg-menu-item, .rg-listbox-option, .luxe-menu-item, .luxe-listbox-option, .organic-menu-item, .organic-listbox-option, .utility-menu-item, .utility-listbox-option, .blueprint-menu-item, .blueprint-listbox-option, .deco-menu-item, .deco-listbox-option, .clay-menu-item, .clay-listbox-option, .terminal-menu-item, .terminal-listbox-option, .paper-menu-item, .paper-listbox-option, .noir-menu-item, .noir-listbox-option), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-menu-item,.usk-listbox-option), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-menu-item,.ui-listbox-option) {
4399
+ box-sizing: border-box;
4400
+ min-inline-size: 0;
4401
+ max-inline-size: 100%;
4402
+ padding-block: var(--usk-option-padding-block, .55rem);
4403
+ padding-inline: var(--usk-option-padding-inline, .7rem);
4404
+ }
4405
+
4406
+ /** A typed tab root stacks its header and panel; legacy direct-button bars keep their own layout. */
4407
+ [data-ui][data-mode] :where(.saas-tabs:has(> .saas-tab-list), .bento-tabs:has(> .bento-tab-list), .max-tabs:has(> .max-tab-list), .bau-tabs:has(> .bau-tab-list), .tactile-tabs:has(> .tactile-tab-list), .neo-tabs:has(> .neo-tab-list), .retro-tabs:has(> .retro-tab-list), .brutal-tabs:has(> .brutal-tab-list), .cyber-tabs:has(> .cyber-tab-list), .y2k-tabs:has(> .y2k-tab-list), .rg-tabs:has(> .rg-tab-list), .luxe-tabs:has(> .luxe-tab-list), .organic-tabs:has(> .organic-tab-list), .utility-tabs:has(> .utility-tab-list), .blueprint-tabs:has(> .blueprint-tab-list), .deco-tabs:has(> .deco-tab-list), .clay-tabs:has(> .clay-tab-list), .terminal-tabs:has(> .terminal-tab-list), .paper-tabs:has(> .paper-tab-list), .noir-tabs:has(> .noir-tab-list)), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-tabs:has(>.usk-tab-list)), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-tabs:has(>.ui-tab-list)) {
4408
+ display: grid;
4409
+ grid-template-columns: minmax(0, 1fr);
4410
+ grid-auto-flow: row;
4411
+ }
4412
+
4413
+ /** A direct toast title owns the full row; words are never squeezed into a side column. */
4414
+ [data-ui][data-mode] :where(.saas-toast:has(> strong), .bento-toast:has(> strong), .max-toast:has(> strong), .bau-toast:has(> strong), .tactile-toast:has(> strong), .neo-toast:has(> strong), .retro-toast:has(> strong), .brutal-toast:has(> strong), .cyber-toast:has(> strong), .y2k-toast:has(> strong), .rg-toast:has(> strong), .luxe-toast:has(> strong), .organic-toast:has(> strong), .utility-toast:has(> strong), .blueprint-toast:has(> strong), .deco-toast:has(> strong), .clay-toast:has(> strong), .terminal-toast:has(> strong), .paper-toast:has(> strong), .noir-toast:has(> strong)), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-toast:has(>strong)), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-toast:has(>strong)) {
4415
+ display: grid;
4416
+ grid-template-columns: minmax(0, 1fr);
4417
+ gap: .5rem;
4418
+ padding: var(--usk-toast-padding, 1rem);
4419
+ }
4420
+ [data-ui][data-mode] :where(.saas-toast-title, .saas-toast-body, .saas-toast-actions, .bento-toast-title, .bento-toast-body, .bento-toast-actions, .max-toast-title, .max-toast-body, .max-toast-actions, .bau-toast-title, .bau-toast-body, .bau-toast-actions, .tactile-toast-title, .tactile-toast-body, .tactile-toast-actions, .neo-toast-title, .neo-toast-body, .neo-toast-actions, .retro-toast-title, .retro-toast-body, .retro-toast-actions, .brutal-toast-title, .brutal-toast-body, .brutal-toast-actions, .cyber-toast-title, .cyber-toast-body, .cyber-toast-actions, .y2k-toast-title, .y2k-toast-body, .y2k-toast-actions, .rg-toast-title, .rg-toast-body, .rg-toast-actions, .luxe-toast-title, .luxe-toast-body, .luxe-toast-actions, .organic-toast-title, .organic-toast-body, .organic-toast-actions, .utility-toast-title, .utility-toast-body, .utility-toast-actions, .blueprint-toast-title, .blueprint-toast-body, .blueprint-toast-actions, .deco-toast-title, .deco-toast-body, .deco-toast-actions, .clay-toast-title, .clay-toast-body, .clay-toast-actions, .terminal-toast-title, .terminal-toast-body, .terminal-toast-actions, .paper-toast-title, .paper-toast-body, .paper-toast-actions, .noir-toast-title, .noir-toast-body, .noir-toast-actions), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-toast-title,.usk-toast-body,.usk-toast-actions), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-toast-title,.ui-toast-body,.ui-toast-actions) {
4421
+ grid-column: 1 / -1;
4422
+ grid-row: auto;
4423
+ min-inline-size: 0;
4424
+ inline-size: auto;
4425
+ max-inline-size: 100%;
4426
+ margin: 0;
4427
+ overflow-wrap: normal;
4428
+ word-break: normal;
4429
+ white-space: normal;
4430
+ hyphens: none;
4431
+ }
4432
+ /** Switch faces have one inset owner and remain centered at either end of the track. */
4433
+ [data-ui][data-mode] :where(.saas-switch-track, .bento-switch-track, .max-switch-track, .bau-switch-track, .tactile-switch-track, .neo-switch-track, .retro-switch-track, .brutal-switch-track, .cyber-switch-track, .y2k-switch-track, .rg-switch-track, .luxe-switch-track, .organic-switch-track, .utility-switch-track, .blueprint-switch-track, .deco-switch-track, .clay-switch-track, .terminal-switch-track, .paper-switch-track, .noir-switch-track), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-switch-track), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-switch-track) {
4434
+ box-sizing: border-box;
4435
+ position: relative;
4436
+ display: inline-flex;
4437
+ flex: 0 0 auto;
4438
+ min-inline-size: 2.75rem;
4439
+ min-block-size: 1.625rem;
4440
+ padding: 0;
4441
+ }
4442
+ [data-ui][data-mode] :where(.saas-switch-thumb, .bento-switch-thumb, .max-switch-thumb, .bau-switch-thumb, .tactile-switch-thumb, .neo-switch-thumb, .retro-switch-thumb, .brutal-switch-thumb, .cyber-switch-thumb, .y2k-switch-thumb, .rg-switch-thumb, .luxe-switch-thumb, .organic-switch-thumb, .utility-switch-thumb, .blueprint-switch-thumb, .deco-switch-thumb, .clay-switch-thumb, .terminal-switch-thumb, .paper-switch-thumb, .noir-switch-thumb), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-switch-thumb), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-switch-thumb) {
4443
+ box-sizing: border-box;
4444
+ display: block;
4445
+ position: absolute;
4446
+ inset-block-start: 50%;
4447
+ inset-block-end: auto;
4448
+ inset-inline-start: .125rem;
4449
+ inset-inline-end: auto;
4450
+ inline-size: var(--usk-switch-thumb-size, 1.125rem);
4451
+ block-size: var(--usk-switch-thumb-size, 1.125rem);
4452
+ min-inline-size: 0;
4453
+ min-block-size: 0;
4454
+ margin: 0;
4455
+ padding: 0;
4456
+ translate: none;
4457
+ transform: translateY(-50%);
4458
+ }
4459
+ [data-ui][data-mode] :where(.saas-switch input:checked + .saas-switch-track .saas-switch-thumb, .bento-switch input:checked + .bento-switch-track .bento-switch-thumb, .max-switch input:checked + .max-switch-track .max-switch-thumb, .bau-switch input:checked + .bau-switch-track .bau-switch-thumb, .tactile-switch input:checked + .tactile-switch-track .tactile-switch-thumb, .neo-switch input:checked + .neo-switch-track .neo-switch-thumb, .retro-switch input:checked + .retro-switch-track .retro-switch-thumb, .brutal-switch input:checked + .brutal-switch-track .brutal-switch-thumb, .cyber-switch input:checked + .cyber-switch-track .cyber-switch-thumb, .y2k-switch input:checked + .y2k-switch-track .y2k-switch-thumb, .rg-switch input:checked + .rg-switch-track .rg-switch-thumb, .luxe-switch input:checked + .luxe-switch-track .luxe-switch-thumb, .organic-switch input:checked + .organic-switch-track .organic-switch-thumb, .utility-switch input:checked + .utility-switch-track .utility-switch-thumb, .blueprint-switch input:checked + .blueprint-switch-track .blueprint-switch-thumb, .deco-switch input:checked + .deco-switch-track .deco-switch-thumb, .clay-switch input:checked + .clay-switch-track .clay-switch-thumb, .terminal-switch input:checked + .terminal-switch-track .terminal-switch-thumb, .paper-switch input:checked + .paper-switch-track .paper-switch-thumb, .noir-switch input:checked + .noir-switch-track .noir-switch-thumb), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-switch input:checked+.usk-switch-track .usk-switch-thumb), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-switch input:checked+.ui-switch-track .ui-switch-thumb) {
4460
+ inset-inline-start: auto;
4461
+ inset-inline-end: .125rem;
4462
+ transform: translateY(-50%);
4463
+ }
4464
+
4465
+ /** A drawn check retains preset ink while Art Deco keeps its own enamel marker. */
4466
+ [data-ui][data-mode]:where(:not([data-ui="art-deco"])) :where(.saas-check input:checked + .saas-check-control, .bento-check input:checked + .bento-check-control, .max-check input:checked + .max-check-control, .bau-check input:checked + .bau-check-control, .tactile-check input:checked + .tactile-check-control, .neo-check input:checked + .neo-check-control, .retro-check input:checked + .retro-check-control, .brutal-check input:checked + .brutal-check-control, .cyber-check input:checked + .cyber-check-control, .y2k-check input:checked + .y2k-check-control, .rg-check input:checked + .rg-check-control, .luxe-check input:checked + .luxe-check-control, .organic-check input:checked + .organic-check-control, .utility-check input:checked + .utility-check-control, .blueprint-check input:checked + .blueprint-check-control, .deco-check input:checked + .deco-check-control, .clay-check input:checked + .clay-check-control, .terminal-check input:checked + .terminal-check-control, .paper-check input:checked + .paper-check-control, .noir-check input:checked + .noir-check-control)::after, [data-ui]:where([data-ui="y2k"])[data-mode]:where(:not([data-ui="art-deco"])) :where(.usk-check input:checked+.usk-check-control)::after, [data-ui]:where([data-ui="y2k"])[data-mode]:where(:not([data-ui="art-deco"])) :where(.ui-check input:checked+.ui-check-control)::after {
4467
+ content: "";
4468
+ position: static;
4469
+ inset: auto;
4470
+ clip-path: none;
4471
+ translate: none;
4472
+ display: block;
4473
+ box-sizing: border-box;
4474
+ inline-size: .35em;
4475
+ block-size: .65em;
4476
+ margin: 0 0 .15em;
4477
+ padding: 0;
4478
+ border: solid var(--usk-native-choice-mark-color);
4479
+ border-width: 0 max(2px, var(--usk-native-border-width)) max(2px, var(--usk-native-border-width)) 0;
4480
+ border-radius: 0;
4481
+ background: none;
4482
+ box-shadow: none;
4483
+ transform: rotate(45deg);
4484
+ }
4485
+
4486
+ /** Tooltip tone is independent of its position and keeps each preset's silhouette. */
4487
+ [data-ui][data-mode] :where(.saas-tooltip-primary, .bento-tooltip-primary, .max-tooltip-primary, .bau-tooltip-primary, .tactile-tooltip-primary, .neo-tooltip-primary, .retro-tooltip-primary, .brutal-tooltip-primary, .cyber-tooltip-primary, .y2k-tooltip-primary, .rg-tooltip-primary, .luxe-tooltip-primary, .organic-tooltip-primary, .utility-tooltip-primary, .blueprint-tooltip-primary, .deco-tooltip-primary, .clay-tooltip-primary, .terminal-tooltip-primary, .paper-tooltip-primary, .noir-tooltip-primary), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-tooltip:where([data-ui-variant="primary"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-tooltip:where([data-ui-variant="primary"])) {
4488
+ background: var(--usk-native-primary);
4489
+ color: var(--usk-native-on-primary);
4490
+ border-color: var(--usk-native-primary);
4491
+ border-style: solid;
4492
+ }
4493
+ [data-ui][data-mode] :where(.saas-tooltip-secondary, .bento-tooltip-secondary, .max-tooltip-secondary, .bau-tooltip-secondary, .tactile-tooltip-secondary, .neo-tooltip-secondary, .retro-tooltip-secondary, .brutal-tooltip-secondary, .cyber-tooltip-secondary, .y2k-tooltip-secondary, .rg-tooltip-secondary, .luxe-tooltip-secondary, .organic-tooltip-secondary, .utility-tooltip-secondary, .blueprint-tooltip-secondary, .deco-tooltip-secondary, .clay-tooltip-secondary, .terminal-tooltip-secondary, .paper-tooltip-secondary, .noir-tooltip-secondary), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-tooltip:where([data-ui-variant="secondary"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-tooltip:where([data-ui-variant="secondary"])) {
4494
+ background: var(--usk-native-surface);
4495
+ color: var(--usk-native-text);
4496
+ border: max(1px, var(--usk-native-border-width)) dashed var(--usk-native-primary);
4497
+ }
4498
+ [data-ui][data-mode] :where(.saas-tooltip-accent, .bento-tooltip-accent, .max-tooltip-accent, .bau-tooltip-accent, .tactile-tooltip-accent, .neo-tooltip-accent, .retro-tooltip-accent, .brutal-tooltip-accent, .cyber-tooltip-accent, .y2k-tooltip-accent, .rg-tooltip-accent, .luxe-tooltip-accent, .organic-tooltip-accent, .utility-tooltip-accent, .blueprint-tooltip-accent, .deco-tooltip-accent, .clay-tooltip-accent, .terminal-tooltip-accent, .paper-tooltip-accent, .noir-tooltip-accent), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-tooltip:where([data-ui-variant="accent"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-tooltip:where([data-ui-variant="accent"])) {
4499
+ background: var(--usk-native-accent);
4500
+ color: var(--usk-native-on-accent);
4501
+ border: 3px double var(--usk-native-accent);
4502
+ }
4503
+
4504
+ /** Secondary actions have a framed supporting surface rather than ghost paint. */
4505
+ [data-ui][data-mode] :where(.saas-button-secondary, .bento-button-secondary, .max-button-secondary, .bau-button-secondary, .tactile-button-secondary, .neo-button-secondary, .retro-button-secondary, .brutal-button-secondary, .cyber-button-secondary, .y2k-button-secondary, .rg-button-secondary, .luxe-button-secondary, .organic-button-secondary, .utility-button-secondary, .blueprint-button-secondary, .deco-button-secondary, .clay-button-secondary, .terminal-button-secondary, .paper-button-secondary, .noir-button-secondary), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-button:where([data-ui-variant="secondary"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-button:where([data-ui-variant="secondary"])) {
4506
+ background: var(--usk-native-secondary);
4507
+ color: var(--usk-native-on-secondary);
4508
+ border-color: var(--usk-native-primary);
4509
+ }
4510
+
4511
+ /** Status badges retain an inset without changing seal or medallion dimensions. */
4512
+ [data-ui][data-mode] :where(.saas-badge, .bento-badge, .max-badge, .bau-badge, .tactile-badge, .neo-badge, .retro-badge, .brutal-badge, .cyber-badge, .y2k-badge, .rg-badge, .luxe-badge, .organic-badge, .utility-badge, .blueprint-badge, .deco-badge, .clay-badge, .terminal-badge, .paper-badge, .noir-badge), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-badge), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-badge) {
4513
+ padding-block: var(--usk-badge-padding-block, .22rem);
4514
+ padding-inline: var(--usk-badge-padding-inline, .6rem);
4515
+ }
4516
+
4517
+ /** Warning actions and statuses use paired amber/orange roles while retaining opaque text. */
4518
+ [data-ui][data-mode] :where(.saas-button-warning, .saas-badge-warning, .bento-button-warning, .bento-badge-warning, .max-button-warning, .max-badge-warning, .bau-button-warning, .bau-badge-warning, .tactile-button-warning, .tactile-badge-warning, .neo-button-warning, .neo-badge-warning, .retro-button-warning, .retro-badge-warning, .brutal-button-warning, .brutal-badge-warning, .cyber-button-warning, .cyber-badge-warning, .y2k-button-warning, .y2k-badge-warning, .rg-button-warning, .rg-badge-warning, .luxe-button-warning, .luxe-badge-warning, .organic-button-warning, .organic-badge-warning, .utility-button-warning, .utility-badge-warning, .blueprint-button-warning, .blueprint-badge-warning, .deco-button-warning, .deco-badge-warning, .clay-button-warning, .clay-badge-warning, .terminal-button-warning, .terminal-badge-warning, .paper-button-warning, .paper-badge-warning, .noir-button-warning, .noir-badge-warning), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-button:where([data-ui-variant="warning"]),.usk-badge:where([data-ui-variant="warning"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-button:where([data-ui-variant="warning"]),.ui-badge:where([data-ui-variant="warning"])) {
4519
+ background: var(--usk-native-warning);
4520
+ color: var(--usk-native-on-warning);
4521
+ border-color: var(--usk-native-warning);
4522
+ text-shadow: none;
4523
+ }
4524
+ @media (prefers-reduced-motion: no-preference) {
4525
+ [data-ui][data-mode] :where(.saas-button-warning, .saas-badge-warning, .bento-button-warning, .bento-badge-warning, .max-button-warning, .max-badge-warning, .bau-button-warning, .bau-badge-warning, .tactile-button-warning, .tactile-badge-warning, .neo-button-warning, .neo-badge-warning, .retro-button-warning, .retro-badge-warning, .brutal-button-warning, .brutal-badge-warning, .cyber-button-warning, .cyber-badge-warning, .y2k-button-warning, .y2k-badge-warning, .rg-button-warning, .rg-badge-warning, .luxe-button-warning, .luxe-badge-warning, .organic-button-warning, .organic-badge-warning, .utility-button-warning, .utility-badge-warning, .blueprint-button-warning, .blueprint-badge-warning, .deco-button-warning, .deco-badge-warning, .clay-button-warning, .clay-badge-warning, .terminal-button-warning, .terminal-badge-warning, .paper-button-warning, .paper-badge-warning, .noir-button-warning, .noir-badge-warning), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-button:where([data-ui-variant="warning"]),.usk-badge:where([data-ui-variant="warning"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-button:where([data-ui-variant="warning"]),.ui-badge:where([data-ui-variant="warning"])) {
4526
+ animation: usk-warning-attention var(--usk-warning-attention-duration, 1.8s) ease-in-out infinite;
4527
+ }
4528
+ }
4529
+ @media (prefers-reduced-motion: reduce) {
4530
+ [data-ui][data-mode] :where(.saas-button-warning, .saas-badge-warning, .bento-button-warning, .bento-badge-warning, .max-button-warning, .max-badge-warning, .bau-button-warning, .bau-badge-warning, .tactile-button-warning, .tactile-badge-warning, .neo-button-warning, .neo-badge-warning, .retro-button-warning, .retro-badge-warning, .brutal-button-warning, .brutal-badge-warning, .cyber-button-warning, .cyber-badge-warning, .y2k-button-warning, .y2k-badge-warning, .rg-button-warning, .rg-badge-warning, .luxe-button-warning, .luxe-badge-warning, .organic-button-warning, .organic-badge-warning, .utility-button-warning, .utility-badge-warning, .blueprint-button-warning, .blueprint-badge-warning, .deco-button-warning, .deco-badge-warning, .clay-button-warning, .clay-badge-warning, .terminal-button-warning, .terminal-badge-warning, .paper-button-warning, .paper-badge-warning, .noir-button-warning, .noir-badge-warning), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.usk-button:where([data-ui-variant="warning"]),.usk-badge:where([data-ui-variant="warning"])), [data-ui]:where([data-ui="y2k"])[data-mode] :where(.ui-button:where([data-ui-variant="warning"]),.ui-badge:where([data-ui-variant="warning"])) {
4531
+ animation: none;
4532
+ }
4533
+ }
4534
+ @keyframes usk-warning-attention {
4535
+ 50% { filter: brightness(1.16); }
4536
+ }
4537
+
4248
4538
  }
4249
4539
  /* END GENERATED 2.2 PRESET COMPONENT FOUNDATIONS */
4250
4540
 
@@ -4300,6 +4590,26 @@
4300
4590
  }
4301
4591
 
4302
4592
  @layer ui-style-kit.clean_defaults {
4593
+ /** Inline hyperlinks and their labels must not inherit the control spacing floor. */
4594
+ [data-ui][data-mode] :where(a:not([class]), a[data-link-presentation="inline"], a[data-link-presentation="inline"] > .usk-link__label, a[data-link-presentation="inline"] > .usk-link__icon) {
4595
+ display: inline;
4596
+ min-block-size: 0;
4597
+ min-inline-size: 0;
4598
+ margin: 0;
4599
+ padding: 0;
4600
+ border: 0;
4601
+ border-radius: 0;
4602
+ background: transparent;
4603
+ box-shadow: none;
4604
+ }
4605
+
4606
+ /** Explicit control links preserve a wrapping, aligned action composition. */
4607
+ [data-ui][data-mode] :where(a[data-link-presentation="control"]) {
4608
+ display: inline-flex;
4609
+ align-items: center;
4610
+ gap: var(--usk-link-gap, .5rem);
4611
+ }
4612
+
4303
4613
  /** Keeps semantic state paint paired when a preset also owns broad anchor or input rules. */
4304
4614
  [data-ui][data-mode] :where(
4305
4615
  [class~="usk-pagination-link"][aria-current="page"],
@@ -4803,7 +5113,7 @@
4803
5113
  --usk-native-range-track-shadow: inset 0 3px #ffffff8c;
4804
5114
  --usk-native-range-progress-background: var(--y2k-primary);
4805
5115
  --usk-native-range-thumb-size: 1.55rem;
4806
- --usk-native-range-thumb-background: var(--y2k-surface-strong);
5116
+ --usk-native-range-thumb-background: var(--usk-native-primary);
4807
5117
  --usk-native-range-thumb-border: 1px solid var(--y2k-border);
4808
5118
  --usk-native-range-thumb-radius: 50%;
4809
5119
  --usk-native-range-thumb-shadow: inset 0 3px #ffffff8c;
@@ -5261,7 +5571,7 @@
5261
5571
  background: var(--y2k-card-bg);
5262
5572
  }
5263
5573
 
5264
- .y2k-toolbar, .y2k-table-wrap, .y2k-button:not(.y2k-button-primary):not(.y2k-button-secondary):not(.y2k-button-danger):not(.y2k-button-warning):not(.y2k-button-ghost), .y2k-icon-button, :where([data-ui="y2k"]) .usk-toolbar, :where([data-ui="y2k"]) .usk-table-wrap, :where([data-ui="y2k"]) .usk-button:not(.usk-button:where([data-ui-variant="primary"])):not(.usk-button:where([data-ui-variant="secondary"])):not(.usk-button:where([data-ui-variant="danger"])):not(.usk-button:where([data-ui-variant="warning"])):not(.usk-button:where([data-ui-variant="ghost"])), :where([data-ui="y2k"]) .usk-icon-button, :where([data-ui="y2k"]) .ui-toolbar, :where([data-ui="y2k"]) .ui-table-wrap, :where([data-ui="y2k"]) .ui-button:not(.ui-button:where([data-ui-variant="primary"])):not(.ui-button:where([data-ui-variant="secondary"])):not(.ui-button:where([data-ui-variant="danger"])):not(.ui-button:where([data-ui-variant="warning"])):not(.ui-button:where([data-ui-variant="ghost"])), :where([data-ui="y2k"]) .ui-icon-button {
5574
+ .y2k-toolbar, .y2k-table-wrap, .y2k-button:where(:not([data-ui-variant])):not(.y2k-button-primary):not(.y2k-button-secondary):not(.y2k-button-danger):not(.y2k-button-warning):not(.y2k-button-ghost), .y2k-icon-button, :where([data-ui="y2k"]) .usk-toolbar, :where([data-ui="y2k"]) .usk-table-wrap, :where([data-ui="y2k"]) .usk-button:where(:not([data-ui-variant])):not(.usk-button:where([data-ui-variant="primary"])):not(.usk-button:where([data-ui-variant="secondary"])):not(.usk-button:where([data-ui-variant="danger"])):not(.usk-button:where([data-ui-variant="warning"])):not(.usk-button:where([data-ui-variant="ghost"])), :where([data-ui="y2k"]) .usk-icon-button, :where([data-ui="y2k"]) .ui-toolbar, :where([data-ui="y2k"]) .ui-table-wrap, :where([data-ui="y2k"]) .ui-button:where(:not([data-ui-variant])):not(.ui-button:where([data-ui-variant="primary"])):not(.ui-button:where([data-ui-variant="secondary"])):not(.ui-button:where([data-ui-variant="danger"])):not(.ui-button:where([data-ui-variant="warning"])):not(.ui-button:where([data-ui-variant="ghost"])), :where([data-ui="y2k"]) .ui-icon-button {
5265
5575
  background: var(--y2k-control-bg);
5266
5576
  }
5267
5577
 
@@ -5633,7 +5943,7 @@
5633
5943
  --usk-native-range-track-shadow: inset 1px 1px 0 rgb(var(--y2k-text-rgb) / .28);
5634
5944
  --usk-native-range-progress-background: repeating-linear-gradient(90deg, var(--y2k-primary) 0 .4rem, var(--y2k-surface) .4rem .48rem);
5635
5945
  --usk-native-range-thumb-size: 1.12rem;
5636
- --usk-native-range-thumb-background: linear-gradient(135deg, var(--y2k-surface-strong), var(--y2k-surface-soft));
5946
+ --usk-native-range-thumb-background: var(--usk-native-primary);
5637
5947
  --usk-native-range-thumb-border: 1px outset var(--y2k-border);
5638
5948
  --usk-native-range-thumb-radius: 0;
5639
5949
  --usk-native-range-thumb-shadow: 1px 1px 0 rgb(var(--y2k-text-rgb) / .24);
@@ -5904,7 +6214,7 @@
5904
6214
  --usk-native-range-track-shadow: var(--y2k-bevel-recessed);
5905
6215
  --usk-native-range-progress-background: repeating-linear-gradient(90deg, var(--y2k-primary) 0 .5rem, var(--y2k-surface) .5rem .5625rem);
5906
6216
  --usk-native-range-thumb-size: .875rem;
5907
- --usk-native-range-thumb-background: var(--y2k-surface);
6217
+ --usk-native-range-thumb-background: var(--usk-native-primary);
5908
6218
  --usk-native-range-thumb-border: 1px outset var(--y2k-border);
5909
6219
  --usk-native-range-thumb-radius: 0;
5910
6220
  --usk-native-range-thumb-shadow: var(--y2k-bevel-raised);
@@ -0,0 +1,154 @@
1
+ # Shared component spacing and structural composition
2
+
3
+ UI Style Kit owns component appearance and internal geometry. Layout Style CSS
4
+ owns page arrangement, measures, gutters and section rhythm. Interactive Surface
5
+ CSS owns state feedback. React exposes those contracts without another paint layer.
6
+
7
+ ## Choose the existing owner
8
+
9
+ | Need | Public configuration |
10
+ | --- | --- |
11
+ | Paragraph hyperlink | A classless native anchor, or `data-link-presentation="inline"` on a classed anchor |
12
+ | Aligned navigation action | `data-link-presentation="control"`; use the navigation component for current-page semantics |
13
+ | Card content inset | `data-card-spacing="flush\|compact\|normal\|comfortable"` on `.usk-card` or `.ui-card` |
14
+ | Structural shell, article or aside | `data-ui-structure="neutral"` with the optional component-composition stylesheet |
15
+ | Wider content lane | Layout `.ly-wrapper--content`, `--wide`, `--workspace`, `--full` or `--breakout` |
16
+ | Screen gutter | Layout `--ly-wrapper-gutter`; the wrapper incorporates the device safe area |
17
+ | Section block spacing | Layout `.ly-section`, `--compact` or `--flush` |
18
+ | Centering or wrapping actions | Layout center/cluster primitives and their public alignment/gap options |
19
+
20
+ React candidates expose `Link presentation`, `Card spacing`, `Layout.Wrapper
21
+ measure`, and `Layout.Section spacing`. Undecorated Layout article/aside semantics
22
+ carry the neutral structural hook. Existing wrapper and section APIs require no
23
+ new Layout release.
24
+
25
+ ## Inline links
26
+
27
+ ```html
28
+ <p>Read <a href="/guide">the guide</a>, then continue.</p>
29
+ <a class="usk-link" data-link-presentation="inline" href="/guide">
30
+ <span class="usk-link__label">A long wrapping guide title</span>
31
+ </a>
32
+ ```
33
+
34
+ The link and label have no independent margin, padding, border or control fill.
35
+ Focus and theme colors remain available. Omitting the presentation attribute on
36
+ an existing classed link retains its preset defaults. Control presentation adds
37
+ inline alignment and uses `--usk-link-gap`; it does not turn navigation into a
38
+ button action or replace the application's accessible name.
39
+
40
+ ## Card density
41
+
42
+ ```html
43
+ <div class="usk-card" data-card-spacing="comfortable">
44
+ <article data-ui-structure="neutral">Structural content inside one card.</article>
45
+ </div>
46
+ ```
47
+
48
+ | Density | Default inset | Optional token |
49
+ | --- | --- | --- |
50
+ | flush | 0 | No inset |
51
+ | compact | .75rem | `--usk-card-padding-compact` |
52
+ | normal | 1rem | `--usk-card-padding-normal` |
53
+ | comfortable | `clamp(1.25rem, 2.5vw, 2rem)` | `--usk-card-padding-comfortable` |
54
+
55
+ Omitting density preserves the preset's card inset. Configure the density token
56
+ at an application boundary when product composition needs another measure;
57
+ avoid descendant `.usk-card` padding overrides. Compound card regions remain
58
+ available for media and content composition.
59
+
60
+ Native article/aside decoration remains the default. Neutral structure is an
61
+ explicit opt-in, so existing standalone semantic panels retain their appearance.
62
+ The same hook is available on div, main, section, header, footer and navigation
63
+ boundaries to prevent the element floor from accumulating through a nested shell.
64
+ Layout's later structural layer continues to own configured gutters and section
65
+ padding. React's neutral Layout article/aside treatment is automatic; other
66
+ neutral shell boundaries remain explicit native data attributes.
67
+
68
+ ## Compact components and feedback
69
+
70
+ Empty-state symbols use `--usk-empty-state-icon-size` (default `2.75rem`) so
71
+ compact preset typography does not reduce the illustration to body-text size.
72
+ Chip, tab and segment frames use `--usk-compact-content-padding-block` (`.35rem`)
73
+ and `--usk-compact-content-padding-inline` (`.65rem`). Status badges use
74
+ `--usk-badge-padding-block` (`.22rem`) and `--usk-badge-padding-inline` (`.6rem`).
75
+ These are frame insets; compound labels and icons do not add another inset.
76
+ Popover, menu and listbox frames use `--usk-overlay-padding` (`.5rem`);
77
+ menu items and listbox options use `--usk-option-padding-block` (`.55rem`)
78
+ and `--usk-option-padding-inline` (`.7rem`) to keep their text clear of edges.
79
+
80
+ Progress tracks and fills do not inherit the element-spacing floor. Switch
81
+ thumbs use `--usk-switch-thumb-size` (`1.125rem`) and remain centered inside the
82
+ track at either end. Presets continue to supply their silhouettes and materials;
83
+ native slider thumbs use the preset's action color.
84
+
85
+ A toast with a direct title places that title above its content, across the full
86
+ available row. Title and body text wrap at word boundaries rather than splitting
87
+ letters into a narrow side column. The toast owns its content inset through
88
+ `--usk-toast-padding` (`1rem`). Page columns and the surrounding card layout remain
89
+ Layout Style CSS or application responsibilities.
90
+
91
+ Tooltip tone and placement are independent:
92
+
93
+ ```html
94
+ <span class="usk-tooltip" data-ui-variant="primary" role="tooltip">Primary tip</span>
95
+ <span class="usk-tooltip" data-ui-variant="secondary" role="tooltip">Context cue</span>
96
+ <span class="usk-tooltip" data-ui-variant="accent" role="tooltip">Action hint</span>
97
+ ```
98
+
99
+ Primary uses the paired action fill and ink. Secondary uses an outlined context
100
+ treatment, and accent uses a double edge and the paired accent colors. Existing
101
+ unqualified tooltips keep their preset defaults. Advanced prefixed markup can
102
+ combine, for example, `saas-tooltip saas-tooltip-right saas-tooltip-secondary`.
103
+
104
+ Secondary buttons use paired secondary fill and ink to remain distinct from ghost
105
+ actions. Warning buttons and badges use the warm warning palette and a slow
106
+ brightness pulse; text stays opaque. `--usk-warning-attention-duration` defaults
107
+ to `1.8s`. Reduced-motion users receive the static warm treatment. Disabled radios
108
+ use muted paint and a dashed edge; forced-color mode retains system colors.
109
+
110
+ These contracts are covered by `tests/e2e/demo-annotation-regressions.spec.js`.
111
+
112
+ Status messages retain success, warning and danger tints after preset material
113
+ rules. Titles and body copy use the same readable message ink. Status color
114
+ remains in the surface tint, leading edge and symbol; title hierarchy comes from
115
+ the preset's weight and typography. Small titles do not need text shadows or
116
+ outlines to compensate for a low-contrast foreground.
117
+ Browsers without `color-mix()` retain solid status fills with paired readable
118
+ foregrounds; the tinted treatment is a guarded enhancement.
119
+
120
+ Icon tiles pair their ink with the painted face, including inverted theme
121
+ materials and translucent plates. Metallic rims remain decorative around a
122
+ stable glyph surface. Busy indicators retain preset geometry while using visible
123
+ paint against the actual button face; palette accent fill alone is insufficient
124
+ for a small moving mark. The shared coverage is in
125
+ `tests/e2e/feedback-visibility.spec.js`.
126
+
127
+ Paper Editorial message symbols occupy a fixed 24px lane and stay centered
128
+ against the full message, including wrapped copy. Text and optional dismiss
129
+ buttons occupy separate grid columns. Native loader hooks must retain the active
130
+ preset's geometry, paint and animation, including decorative pseudo-elements.
131
+ These contracts are covered by `tests/e2e/feedback-layout.spec.js`.
132
+
133
+ ## Migration and validation
134
+
135
+ The inline link and component-label fixes correct the global element spacing
136
+ floor. Optional component composition also owns modal auto margins, avatar
137
+ fallback centering and chip-label containment. Edge drawers retain their
138
+ placement contract. These contracts have focused browser regressions in
139
+ `tests/e2e/css-ownership-composition.spec.js`.
140
+
141
+ Consumer migrations must be checked against the exact packed candidate artifacts.
142
+ An unchanged published dependency pin does not mean these candidate contracts
143
+ are present in that installed release. Publish UI Style Kit before adopting the
144
+ React/consumer release pair; temporary tarball references belong only in ignored
145
+ integration fixtures.
146
+
147
+ ## React variant attributes and prefixed classes
148
+
149
+ React buttons may combine a semantic class, a preset class and
150
+ `data-ui-variant`. Legacy neutral-only paint rules exclude attribute-selected
151
+ variants through `:where(:not([data-ui-variant]))`. This keeps their specificity
152
+ stable while allowing the selected primary, secondary, danger or ghost surface
153
+ to retain its paired foreground and decoration. The mixed-class regression
154
+ checks all presets, palettes, modes and pressed states.