ui-style-kit-css 2.3.0 → 2.4.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 (120) hide show
  1. package/CHANGELOG.md +40 -2
  2. package/CONTRIBUTING.md +8 -1
  3. package/README.md +91 -42
  4. package/STYLE-MAP.md +9 -5
  5. package/dist/assets/bauhaus-barlow-OFL.txt +93 -0
  6. package/dist/assets/bauhaus-barlow-semibold.ttf +0 -0
  7. package/dist/assets/bauhaus-barlow.ttf +0 -0
  8. package/dist/assets/bauhaus-condensed-OFL.txt +93 -0
  9. package/dist/assets/bauhaus-condensed-bold.ttf +0 -0
  10. package/dist/assets/bauhaus-condensed-extrabold.ttf +0 -0
  11. package/dist/assets/bento-manrope-OFL.txt +93 -0
  12. package/dist/assets/bento-manrope.ttf +0 -0
  13. package/dist/assets/clay-grain.png +0 -0
  14. package/dist/assets/clay-rounded-OFL.txt +93 -0
  15. package/dist/assets/clay-rounded.ttf +0 -0
  16. package/dist/assets/neo-noir-corner-dark.png +0 -0
  17. package/dist/assets/neo-noir-corner-light.png +0 -0
  18. package/dist/assets/neo-noir-texture-dark.png +0 -0
  19. package/dist/assets/neo-noir-texture-light.png +0 -0
  20. package/dist/assets/organic-display-OFL.txt +93 -0
  21. package/dist/assets/organic-display.ttf +0 -0
  22. package/dist/assets/organic-icons-LICENSE.txt +21 -0
  23. package/dist/assets/organic-sans-OFL.txt +93 -0
  24. package/dist/assets/organic-sans.ttf +0 -0
  25. package/dist/ui-style-kit.css +47483 -15117
  26. package/dist/ui-style-kit.min.css +2 -2
  27. package/dist/ui-style-kit.visual.css +47344 -15106
  28. package/dist/ui-style-kit.visual.min.css +2 -2
  29. package/dist/ui-style-kit.with-bridge.css +47510 -15134
  30. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  31. package/dist/visual/art-deco.css +2821 -279
  32. package/dist/visual/bauhaus.css +2 -4692
  33. package/dist/visual/bento.css +2 -4708
  34. package/dist/visual/brutalism.css +812 -224
  35. package/dist/visual/clay.css +2 -4786
  36. package/dist/visual/cyberpunk.css +2238 -267
  37. package/dist/visual/data-terminal.css +1671 -293
  38. package/dist/visual/editorial-luxe.css +1889 -243
  39. package/dist/visual/industrial-utility.css +2717 -255
  40. package/dist/visual/maximalist.css +1768 -447
  41. package/dist/visual/minimal-saas.css +1076 -382
  42. package/dist/visual/neo-noir.css +2 -4787
  43. package/dist/visual/neumorphism.css +1266 -388
  44. package/dist/visual/organic-modern.css +2 -4764
  45. package/dist/visual/paper-editorial.css +2551 -276
  46. package/dist/visual/retro-glass.css +2235 -319
  47. package/dist/visual/retrofuturism.css +1460 -382
  48. package/dist/visual/tactile.css +2251 -443
  49. package/dist/visual/technical-blueprint.css +2207 -285
  50. package/dist/visual/y2k.css +1481 -294
  51. package/docs/ART-DECO.md +80 -0
  52. package/docs/BAUHAUS.md +152 -0
  53. package/docs/BENTO.md +121 -0
  54. package/docs/CLAY.md +127 -0
  55. package/docs/DEMO-SHOWCASE.md +65 -0
  56. package/docs/ECOSYSTEM.md +4 -4
  57. package/docs/EDITORIAL-LUX.md +75 -0
  58. package/docs/INDUSTRIAL-UTILITY.md +131 -0
  59. package/docs/NATIVE-ELEMENTS.md +23 -17
  60. package/docs/NEO-NOIR.md +94 -0
  61. package/docs/ORGANIC-MODERN.md +91 -0
  62. package/docs/PAPER-EDITORIAL.md +63 -0
  63. package/docs/PUBLISHING.md +31 -10
  64. package/docs/RELEASE-2.4.0.md +88 -0
  65. package/docs/RETRO-GLASS.md +105 -0
  66. package/docs/STYLE-GUIDE.md +40 -25
  67. package/docs/TACTILE.md +38 -0
  68. package/docs/TECHNICAL-BLUEPRINT.md +60 -0
  69. package/docs/TOKENS.md +80 -3
  70. package/docs/superpowers/plans/2026-09-04-library-wide-theme-fallback-and-fidelity.md +331 -0
  71. package/docs/superpowers/specs/2026-09-04-library-wide-theme-fallback-and-fidelity-design.md +113 -0
  72. package/manifest.json +618 -27
  73. package/package.json +18 -10
  74. package/styles/art-deco.css +1397 -12
  75. package/styles/assets/bauhaus-barlow-OFL.txt +93 -0
  76. package/styles/assets/bauhaus-barlow-semibold.ttf +0 -0
  77. package/styles/assets/bauhaus-barlow.ttf +0 -0
  78. package/styles/assets/bauhaus-condensed-OFL.txt +93 -0
  79. package/styles/assets/bauhaus-condensed-bold.ttf +0 -0
  80. package/styles/assets/bauhaus-condensed-extrabold.ttf +0 -0
  81. package/styles/assets/bento-manrope-OFL.txt +93 -0
  82. package/styles/assets/bento-manrope.ttf +0 -0
  83. package/styles/assets/clay-grain.png +0 -0
  84. package/styles/assets/clay-rounded-OFL.txt +93 -0
  85. package/styles/assets/clay-rounded.ttf +0 -0
  86. package/styles/assets/neo-noir-corner-dark.png +0 -0
  87. package/styles/assets/neo-noir-corner-light.png +0 -0
  88. package/styles/assets/neo-noir-texture-dark.png +0 -0
  89. package/styles/assets/neo-noir-texture-light.png +0 -0
  90. package/styles/assets/organic-display-OFL.txt +93 -0
  91. package/styles/assets/organic-display.ttf +0 -0
  92. package/styles/assets/organic-icons-LICENSE.txt +21 -0
  93. package/styles/assets/organic-sans-OFL.txt +93 -0
  94. package/styles/assets/organic-sans.ttf +0 -0
  95. package/styles/bauhaus.css +878 -107
  96. package/styles/bento.css +1176 -108
  97. package/styles/brutalism.css +262 -11
  98. package/styles/clay.css +1303 -68
  99. package/styles/compat-layout.css +1 -2
  100. package/styles/components.css +105 -34
  101. package/styles/content-overflow.css +11 -5
  102. package/styles/cyberpunk.css +1852 -47
  103. package/styles/data-terminal.css +1116 -12
  104. package/styles/editorial-luxe.css +576 -12
  105. package/styles/industrial-utility.css +1771 -12
  106. package/styles/interactive-surface-bridge.css +30 -20
  107. package/styles/interactive-surface-theme.css +21 -11
  108. package/styles/maximalist.css +1214 -132
  109. package/styles/minimal-saas.css +459 -88
  110. package/styles/native-elements.css +347 -171
  111. package/styles/neo-noir.css +656 -14
  112. package/styles/neumorphism.css +1018 -146
  113. package/styles/organic-modern.css +688 -18
  114. package/styles/paper-editorial.css +1048 -12
  115. package/styles/retro-glass.css +635 -46
  116. package/styles/retrofuturism.css +944 -56
  117. package/styles/tactile.css +1810 -108
  118. package/styles/technical-blueprint.css +668 -17
  119. package/styles/theme-colors.css +2 -2
  120. package/styles/y2k.css +950 -42
@@ -47,6 +47,29 @@
47
47
 
48
48
  [data-ui="brutalism"][data-mode="light"] {
49
49
  color-scheme: light;
50
+ --brutal-fallback-bg-rgb: 245 247 250;
51
+ --brutal-fallback-surface-rgb: 255 255 255;
52
+ --brutal-fallback-surface-strong-rgb: 252 252 253;
53
+ --brutal-fallback-surface-soft-rgb: 232 235 240;
54
+ --brutal-fallback-text-rgb: 17 36 59;
55
+ --brutal-fallback-text-muted-rgb: 90 104 119;
56
+ --brutal-fallback-border-rgb: 200 207 217;
57
+ --brutal-fallback-primary-rgb: 13 59 102;
58
+ --brutal-fallback-primary-hover-rgb: 11 49 85;
59
+ --brutal-fallback-primary-text-rgb: 255 255 255;
60
+ --brutal-fallback-secondary-rgb: 214 43 43;
61
+ --brutal-fallback-secondary-hover-rgb: 178 35 35;
62
+ --brutal-fallback-secondary-text-rgb: 255 255 255;
63
+ --brutal-fallback-accent-rgb: 233 90 90;
64
+ --brutal-fallback-accent-text-rgb: 0 0 0;
65
+ --brutal-fallback-success-rgb: 47 125 84;
66
+ --brutal-fallback-success-text-rgb: 255 255 255;
67
+ --brutal-fallback-warning-rgb: 164 106 0;
68
+ --brutal-fallback-warning-text-rgb: 0 0 0;
69
+ --brutal-fallback-danger-rgb: 198 40 40;
70
+ --brutal-fallback-danger-text-rgb: 255 255 255;
71
+ --brutal-fallback-link-rgb: 11 49 85;
72
+ --brutal-fallback-focus-rgb: 214 43 43;
50
73
  --brutal-panel-alpha: 0.92;
51
74
  --brutal-panel-strong-alpha: 0.98;
52
75
  --brutal-panel-soft-alpha: 0.74;
@@ -58,6 +81,29 @@
58
81
 
59
82
  [data-ui="brutalism"][data-mode="dark"] {
60
83
  color-scheme: dark;
84
+ --brutal-fallback-bg-rgb: 8 17 28;
85
+ --brutal-fallback-surface-rgb: 16 32 48;
86
+ --brutal-fallback-surface-strong-rgb: 24 49 73;
87
+ --brutal-fallback-surface-soft-rgb: 11 23 36;
88
+ --brutal-fallback-text-rgb: 243 247 251;
89
+ --brutal-fallback-text-muted-rgb: 188 200 213;
90
+ --brutal-fallback-border-rgb: 71 96 121;
91
+ --brutal-fallback-primary-rgb: 108 169 227;
92
+ --brutal-fallback-primary-hover-rgb: 147 193 237;
93
+ --brutal-fallback-primary-text-rgb: 0 0 0;
94
+ --brutal-fallback-secondary-rgb: 255 106 106;
95
+ --brutal-fallback-secondary-hover-rgb: 255 146 146;
96
+ --brutal-fallback-secondary-text-rgb: 0 0 0;
97
+ --brutal-fallback-accent-rgb: 255 154 154;
98
+ --brutal-fallback-accent-text-rgb: 0 0 0;
99
+ --brutal-fallback-success-rgb: 143 223 182;
100
+ --brutal-fallback-success-text-rgb: 0 0 0;
101
+ --brutal-fallback-warning-rgb: 255 210 122;
102
+ --brutal-fallback-warning-text-rgb: 0 0 0;
103
+ --brutal-fallback-danger-rgb: 255 143 143;
104
+ --brutal-fallback-danger-text-rgb: 0 0 0;
105
+ --brutal-fallback-link-rgb: 165 203 241;
106
+ --brutal-fallback-focus-rgb: 255 106 106;
61
107
  --brutal-panel-alpha: 0.82;
62
108
  --brutal-panel-strong-alpha: 0.94;
63
109
  --brutal-panel-soft-alpha: 0.58;
@@ -69,6 +115,29 @@
69
115
 
70
116
  [data-ui="brutalism"][data-mode="contrast"] {
71
117
  color-scheme: dark;
118
+ --brutal-fallback-bg-rgb: 0 0 0;
119
+ --brutal-fallback-surface-rgb: 6 16 26;
120
+ --brutal-fallback-surface-strong-rgb: 10 29 48;
121
+ --brutal-fallback-surface-soft-rgb: 0 0 0;
122
+ --brutal-fallback-text-rgb: 255 255 255;
123
+ --brutal-fallback-text-muted-rgb: 238 244 255;
124
+ --brutal-fallback-border-rgb: 255 255 255;
125
+ --brutal-fallback-primary-rgb: 102 181 255;
126
+ --brutal-fallback-primary-hover-rgb: 255 255 255;
127
+ --brutal-fallback-primary-text-rgb: 0 0 0;
128
+ --brutal-fallback-secondary-rgb: 255 102 102;
129
+ --brutal-fallback-secondary-hover-rgb: 255 255 255;
130
+ --brutal-fallback-secondary-text-rgb: 0 0 0;
131
+ --brutal-fallback-accent-rgb: 255 170 170;
132
+ --brutal-fallback-accent-text-rgb: 0 0 0;
133
+ --brutal-fallback-success-rgb: 0 255 144;
134
+ --brutal-fallback-success-text-rgb: 0 0 0;
135
+ --brutal-fallback-warning-rgb: 255 212 0;
136
+ --brutal-fallback-warning-text-rgb: 0 0 0;
137
+ --brutal-fallback-danger-rgb: 255 92 92;
138
+ --brutal-fallback-danger-text-rgb: 0 0 0;
139
+ --brutal-fallback-link-rgb: 140 198 255;
140
+ --brutal-fallback-focus-rgb: 255 255 255;
72
141
  --brutal-panel-alpha: 1;
73
142
  --brutal-panel-strong-alpha: 1;
74
143
  --brutal-panel-soft-alpha: 0.92;
@@ -78,8 +147,8 @@
78
147
  --brutal-grid-alpha: 0.18;
79
148
  }
80
149
 
150
+ /** Preserves direct aliases for static extraction when a scheme is selected. */
81
151
  [data-ui="brutalism"][data-theme][data-mode] {
82
- /* Shared scheme aliases preserve the existing prefixed token API. */
83
152
  --brutal-bg-rgb: var(--usk-bg-rgb);
84
153
  --brutal-surface-rgb: var(--usk-surface-rgb);
85
154
  --brutal-surface-strong-rgb: var(--usk-surface-strong-rgb);
@@ -94,15 +163,43 @@
94
163
  --brutal-secondary-hover-rgb: var(--usk-secondary-hover-rgb);
95
164
  --brutal-secondary-text-rgb: var(--usk-secondary-text-rgb);
96
165
  --brutal-accent-rgb: var(--usk-accent-rgb);
97
- --brutal-success-rgb: var(--usk-success-rgb);
98
- --brutal-warning-rgb: var(--usk-warning-rgb);
99
- --brutal-danger-rgb: var(--usk-danger-rgb);
100
- --brutal-link-rgb: var(--usk-link-rgb);
101
166
  --brutal-accent-text-rgb: var(--usk-accent-text-rgb);
167
+ --brutal-success-rgb: var(--usk-success-rgb);
102
168
  --brutal-success-text-rgb: var(--usk-success-text-rgb);
169
+ --brutal-warning-rgb: var(--usk-warning-rgb);
103
170
  --brutal-warning-text-rgb: var(--usk-warning-text-rgb);
171
+ --brutal-danger-rgb: var(--usk-danger-rgb);
104
172
  --brutal-danger-text-rgb: var(--usk-danger-text-rgb);
173
+ --brutal-link-rgb: var(--usk-link-rgb);
105
174
  --brutal-focus-rgb: var(--usk-focus-rgb);
175
+ }
176
+
177
+ [data-ui="brutalism"][data-mode] {
178
+ --usk-native-bg: var(--brutal-bg);
179
+ /* Explicit schemes win; reference colors are used only when no scheme exists. */
180
+ --brutal-bg-rgb: var(--usk-bg-rgb, var(--brutal-fallback-bg-rgb));
181
+ --brutal-surface-rgb: var(--usk-surface-rgb, var(--brutal-fallback-surface-rgb));
182
+ --brutal-surface-strong-rgb: var(--usk-surface-strong-rgb, var(--brutal-fallback-surface-strong-rgb));
183
+ --brutal-surface-soft-rgb: var(--usk-surface-soft-rgb, var(--brutal-fallback-surface-soft-rgb));
184
+ --brutal-text-rgb: var(--usk-text-rgb, var(--brutal-fallback-text-rgb));
185
+ --brutal-text-muted-rgb: var(--usk-text-muted-rgb, var(--brutal-fallback-text-muted-rgb));
186
+ --brutal-border-rgb: var(--usk-border-rgb, var(--brutal-fallback-border-rgb));
187
+ --brutal-primary-rgb: var(--usk-primary-rgb, var(--brutal-fallback-primary-rgb));
188
+ --brutal-primary-hover-rgb: var(--usk-primary-hover-rgb, var(--brutal-fallback-primary-hover-rgb));
189
+ --brutal-primary-text-rgb: var(--usk-primary-text-rgb, var(--brutal-fallback-primary-text-rgb));
190
+ --brutal-secondary-rgb: var(--usk-secondary-rgb, var(--brutal-fallback-secondary-rgb));
191
+ --brutal-secondary-hover-rgb: var(--usk-secondary-hover-rgb, var(--brutal-fallback-secondary-hover-rgb));
192
+ --brutal-secondary-text-rgb: var(--usk-secondary-text-rgb, var(--brutal-fallback-secondary-text-rgb));
193
+ --brutal-accent-rgb: var(--usk-accent-rgb, var(--brutal-fallback-accent-rgb));
194
+ --brutal-accent-text-rgb: var(--usk-accent-text-rgb, var(--brutal-fallback-accent-text-rgb));
195
+ --brutal-success-rgb: var(--usk-success-rgb, var(--brutal-fallback-success-rgb));
196
+ --brutal-success-text-rgb: var(--usk-success-text-rgb, var(--brutal-fallback-success-text-rgb));
197
+ --brutal-warning-rgb: var(--usk-warning-rgb, var(--brutal-fallback-warning-rgb));
198
+ --brutal-warning-text-rgb: var(--usk-warning-text-rgb, var(--brutal-fallback-warning-text-rgb));
199
+ --brutal-danger-rgb: var(--usk-danger-rgb, var(--brutal-fallback-danger-rgb));
200
+ --brutal-danger-text-rgb: var(--usk-danger-text-rgb, var(--brutal-fallback-danger-text-rgb));
201
+ --brutal-link-rgb: var(--usk-link-rgb, var(--brutal-fallback-link-rgb));
202
+ --brutal-focus-rgb: var(--usk-focus-rgb, var(--brutal-fallback-focus-rgb));
106
203
  /* Native fallback selectors inherit visual identity through shared tokens. */
107
204
  --usk-native-surface: var(--brutal-surface);
108
205
  --usk-native-surface-strong: var(--brutal-surface-strong);
@@ -133,6 +230,57 @@
133
230
  --usk-native-border-width: 1px;
134
231
  --usk-native-field-gap: .5rem;
135
232
  --usk-native-panel-padding: var(--brutal-space-5);
233
+ --usk-native-control-min-block-size: 3rem;
234
+ --usk-native-control-padding-block: .74rem;
235
+ --usk-native-control-padding-inline: 1rem;
236
+ --usk-native-subcontrol-padding-block: .58rem;
237
+ --usk-native-subcontrol-padding-inline: .8rem;
238
+ --usk-native-choice-size: 1.55rem;
239
+ --usk-native-choice-background: var(--brutal-control-bg);
240
+ --usk-native-choice-border: 2px solid var(--brutal-border);
241
+ --usk-native-checkbox-radius: 0;
242
+ --usk-native-radio-radius: 0;
243
+ --usk-native-choice-shadow: 4px 4px 0 var(--brutal-border);
244
+ --usk-native-choice-checked-background: var(--brutal-primary);
245
+ --usk-native-choice-mark-color: var(--brutal-on-primary);
246
+ --usk-native-select-indicator-image: linear-gradient(48deg, transparent 50%, var(--brutal-primary) 50%), linear-gradient(132deg, var(--brutal-primary) 50%, transparent 50%);
247
+ --usk-native-select-indicator-size: 0.42000000000000004rem 0.42000000000000004rem, 0.42000000000000004rem 0.42000000000000004rem;
248
+ --usk-native-select-indicator-position: calc(100% - 1.24rem) 50%, calc(100% - 0.8999999999999999rem) 50%;
249
+ --usk-native-select-padding-inline-end: 2.7rem;
250
+ --usk-native-range-track-size: .8rem;
251
+ --usk-native-range-track-background: var(--brutal-surface-soft);
252
+ --usk-native-range-track-border: 2px solid var(--brutal-border);
253
+ --usk-native-range-track-radius: 0;
254
+ --usk-native-range-track-shadow: 4px 4px 0 var(--brutal-border);
255
+ --usk-native-range-progress-background: var(--brutal-primary);
256
+ --usk-native-range-thumb-size: 1.45rem;
257
+ --usk-native-range-thumb-background: var(--brutal-surface-strong);
258
+ --usk-native-range-thumb-border: 2px solid var(--brutal-border);
259
+ --usk-native-range-thumb-radius: 0;
260
+ --usk-native-range-thumb-shadow: 4px 4px 0 var(--brutal-border);
261
+ --usk-native-progress-size: .95rem;
262
+ --usk-native-progress-track-background: var(--brutal-surface-soft);
263
+ --usk-native-progress-track-border: 2px solid var(--brutal-border);
264
+ --usk-native-progress-track-radius: 0;
265
+ --usk-native-progress-track-shadow: 4px 4px 0 var(--brutal-border);
266
+ --usk-native-progress-value-background: var(--brutal-primary);
267
+ --usk-native-progress-value-radius: 0;
268
+ --usk-native-progress-value-shadow: 4px 4px 0 var(--brutal-border);
269
+ --usk-native-meter-optimum-background: var(--brutal-success);
270
+ --usk-native-meter-suboptimum-background: var(--brutal-warning);
271
+ --usk-native-meter-critical-background: var(--brutal-danger);
272
+ --usk-native-file-button-background: var(--brutal-primary);
273
+ --usk-native-file-button-border: 2px solid var(--brutal-border);
274
+ --usk-native-file-button-radius: 0;
275
+ --usk-native-file-button-shadow: 4px 4px 0 var(--brutal-border);
276
+ --usk-native-color-swatch-border: 2px solid var(--brutal-border);
277
+ --usk-native-color-swatch-radius: 0;
278
+ --usk-native-indicator-opacity: 0.82;
279
+ --usk-native-indicator-filter: none;
280
+ --usk-native-scrollbar-size: 1rem;
281
+ --usk-native-scrollbar-track: var(--brutal-surface-soft);
282
+ --usk-native-scrollbar-thumb: var(--brutal-primary);
283
+ --usk-native-scrollbar-radius: 0;
136
284
  --usk-native-border-width: 3px;
137
285
  --usk-native-radius-sm: var(--brutal-radius-xs);
138
286
  --usk-native-radius: var(--brutal-radius-sm);
@@ -182,7 +330,7 @@
182
330
  }
183
331
 
184
332
  @supports (color: color-mix(in srgb, black, white)) {
185
- [data-ui="brutalism"][data-theme][data-mode] { --brutal-border: color-mix(in srgb, rgb(var(--brutal-border-rgb) / max(var(--brutal-border-alpha), var(--usk-border-min-alpha))), var(--brutal-text) var(--usk-border-text-mix)); }
333
+ [data-ui="brutalism"][data-mode] { --brutal-border: color-mix(in srgb, rgb(var(--brutal-border-rgb) / max(var(--brutal-border-alpha), var(--usk-border-min-alpha))), var(--brutal-text) var(--usk-border-text-mix)); }
186
334
  }
187
335
 
188
336
  /* =========================================================
@@ -274,7 +422,7 @@
274
422
  [data-ui="brutalism"] *::before,
275
423
  [data-ui="brutalism"] *::after { box-sizing: border-box; }
276
424
 
277
- [data-ui="brutalism"][data-theme][data-mode] { background: var(--brutal-theme-bg); background-size: var(--brutal-theme-bg-size); }
425
+ [data-ui="brutalism"][data-mode] { background: var(--brutal-theme-bg); background-size: var(--brutal-theme-bg-size); }
278
426
 
279
427
  [data-ui="brutalism"] a { color: var(--brutal-link); text-decoration-thickness: 0.14em; text-underline-offset: 0.16em; font-weight: 800; }
280
428
  [data-ui="brutalism"] ::selection { background: var(--brutal-primary); color: var(--brutal-on-primary); }
@@ -368,7 +516,7 @@
368
516
  /* Theme-responsive component defaults */
369
517
  .brutal-card, .brutal-panel { background: var(--brutal-card-bg); }
370
518
  .brutal-toolbar, .brutal-table-wrap { background: var(--brutal-control-bg); }
371
- .brutal-button:not(.brutal-button-primary):not(.brutal-button-secondary):not(.brutal-button-danger):not(.brutal-button-ghost), .brutal-icon-button { background: var(--brutal-control-bg); }
519
+ .brutal-button:not(.brutal-button-primary):not(.brutal-button-secondary):not(.brutal-button-danger):not(.brutal-button-warning):not(.brutal-button-ghost), .brutal-icon-button { background: var(--brutal-control-bg); }
372
520
  .brutal-button, .brutal-icon-button, .brutal-badge, .brutal-nav-link { font-family: var(--brutal-font-control); }
373
521
 
374
522
 
@@ -518,7 +666,6 @@
518
666
  .brutal-feature-strip {
519
667
  display: grid;
520
668
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
521
- overflow: hidden;
522
669
  background: var(--brutal-card-bg);
523
670
  color: var(--brutal-text);
524
671
  border: 1px solid var(--brutal-border);
@@ -607,6 +754,7 @@
607
754
  /* Filled and framed actions keep blunt cuts, heavy borders, and hard displacement. */
608
755
  .brutal-button.brutal-button-cut, .brutal-button-cut {
609
756
  inline-size: min(100%, 14rem);
757
+ min-block-size: 2.75rem;
610
758
  min-inline-size: 6rem;
611
759
  max-inline-size: 100%;
612
760
  justify-self: start;
@@ -626,12 +774,12 @@
626
774
  border-radius: 0;
627
775
  box-shadow: .38rem .38rem 0 var(--brutal-text);
628
776
  }
629
- [data-ui="brutalism"][data-theme][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
777
+ [data-ui="brutalism"][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
630
778
  border: 3px solid var(--brutal-text);
631
779
  border-radius: 0;
632
780
  box-shadow: .26rem .26rem 0 var(--brutal-text);
633
781
  }
634
- [data-ui="brutalism"][data-theme][data-mode] :where(dialog) {
782
+ [data-ui="brutalism"][data-mode] :where(dialog) {
635
783
  border: 3px solid var(--brutal-text);
636
784
  border-radius: 0;
637
785
  box-shadow: .48rem .48rem 0 var(--brutal-text);
@@ -642,6 +790,84 @@
642
790
  border: .18em solid currentColor; border-block-start-color: transparent; border-radius: 0; background: transparent; box-shadow: .12em .12em 0 currentColor; clip-path: inset(0); animation: brutal-spin .64s steps(4, end) infinite;
643
791
  }
644
792
 
793
+ /**
794
+ * Reasserts Brutalism as a dense control surface of numbered, full-bleed
795
+ * modules, blunt controls, and mechanical segmented instrumentation.
796
+ */
797
+ [data-ui="brutalism"][data-mode] {
798
+ --usk-native-font-control: var(--brutal-font-mono);
799
+ --usk-native-control-min-block-size: 2.7rem;
800
+ --usk-native-control-padding-block: .5rem;
801
+ --usk-native-control-padding-inline: .72rem;
802
+ --usk-native-border-width: 4px;
803
+ --usk-native-radius-sm: 0;
804
+ --usk-native-radius: 0;
805
+ --usk-native-radius-lg: 0;
806
+ --usk-native-shadow: .32rem .32rem 0 var(--brutal-text);
807
+ --usk-native-shadow-md: .48rem .48rem 0 var(--brutal-primary);
808
+ --usk-native-focus-ring: 0 0 0 2px var(--brutal-surface-strong), 0 0 0 6px var(--brutal-warning);
809
+ --usk-native-subcontrol-padding-block: .34rem;
810
+ --usk-native-subcontrol-padding-inline: .52rem;
811
+ --usk-native-choice-size: 1.18rem;
812
+ --usk-native-choice-background: var(--brutal-surface-strong);
813
+ --usk-native-choice-border: 3px solid var(--brutal-text);
814
+ --usk-native-checkbox-radius: 0;
815
+ --usk-native-radio-radius: 0;
816
+ --usk-native-choice-shadow: .12rem .12rem 0 var(--brutal-primary);
817
+ --usk-native-choice-checked-background: var(--brutal-primary);
818
+ --usk-native-choice-mark-color: var(--brutal-on-primary);
819
+ --usk-native-select-indicator-image: linear-gradient(45deg, transparent 38%, var(--brutal-warning) 39% 61%, transparent 62%), linear-gradient(135deg, var(--brutal-warning) 0 50%, transparent 51%);
820
+ --usk-native-select-indicator-size: .7rem .7rem, .7rem .7rem;
821
+ --usk-native-select-indicator-position: calc(100% - 1.38rem) 50%, calc(100% - .92rem) 50%;
822
+ --usk-native-select-padding-inline-end: 2.85rem;
823
+ --usk-native-range-track-size: .92rem;
824
+ --usk-native-range-track-background: repeating-linear-gradient(90deg, var(--brutal-surface-soft) 0 1.05rem, var(--brutal-text) 1.05rem calc(1.05rem + 3px));
825
+ --usk-native-range-track-border: 3px solid var(--brutal-text);
826
+ --usk-native-range-track-radius: 0;
827
+ --usk-native-range-track-shadow: inset 0 0 0 2px var(--brutal-surface-strong);
828
+ --usk-native-range-progress-background: repeating-linear-gradient(90deg, var(--brutal-primary) 0 .9rem, var(--brutal-warning) .9rem 1.05rem);
829
+ --usk-native-range-thumb-size: 1.24rem;
830
+ --usk-native-range-thumb-background: var(--brutal-text);
831
+ --usk-native-range-thumb-border: 3px solid var(--brutal-warning);
832
+ --usk-native-range-thumb-radius: 0;
833
+ --usk-native-range-thumb-shadow: .14rem .14rem 0 var(--brutal-primary);
834
+ --usk-native-progress-size: 1.22rem;
835
+ --usk-native-progress-track-background: repeating-linear-gradient(90deg, var(--brutal-surface-strong) 0 1rem, var(--brutal-text) 1rem calc(1rem + 3px));
836
+ --usk-native-progress-track-border: 3px solid var(--brutal-text);
837
+ --usk-native-progress-track-radius: 0;
838
+ --usk-native-progress-track-shadow: inset 0 0 0 2px var(--brutal-surface-soft);
839
+ --usk-native-progress-value-background: repeating-linear-gradient(90deg, var(--brutal-primary) 0 .82rem, var(--brutal-warning) .82rem 1rem);
840
+ --usk-native-progress-value-radius: 0;
841
+ --usk-native-progress-value-shadow: inset -3px 0 0 var(--brutal-text);
842
+ --usk-native-scrollbar-size: 1.25rem;
843
+ --usk-native-scrollbar-track: repeating-linear-gradient(0deg, var(--brutal-surface-soft) 0 .7rem, var(--brutal-text) .7rem calc(.7rem + 2px));
844
+ --usk-native-scrollbar-thumb: var(--brutal-primary);
845
+ --usk-native-scrollbar-radius: 0;
846
+ }
847
+
848
+ .brutal-title { margin-block: .75rem; font-weight: 1000; letter-spacing: max(.032em, .5px); }
849
+ .brutal-label { font-size: .68rem; font-weight: 900; }
850
+ .brutal-button { min-height: 2.7rem; padding: .5rem .72rem; background: var(--brutal-primary); border-radius: 0 .08rem 0 0; box-shadow: .32rem .32rem 0 var(--brutal-text); font-weight: 900; }
851
+ .brutal-input { min-height: 2.55rem; padding: .46rem .64rem; border-radius: 0 0 .06rem 0; }
852
+ .brutal-card { padding: .88rem; background: var(--brutal-card-bg); border: 4px solid var(--brutal-text); border-radius: 0; box-shadow: .42rem .42rem 0 var(--brutal-primary); }
853
+ .brutal-well { background: repeating-linear-gradient(0deg, rgb(var(--brutal-text-rgb) / .08) 0 2px, transparent 2px .65rem), var(--brutal-surface-soft); border: 3px solid var(--brutal-text); box-shadow: inset .5rem 0 0 var(--brutal-warning); }
854
+ .brutal-badge { min-height: 1.55rem; padding: .15rem .42rem; border-radius: 0; }
855
+ .brutal-alert { background: var(--brutal-surface-strong); border: 4px solid var(--brutal-text); border-radius: 0; box-shadow: .28rem .28rem 0 var(--brutal-warning); }
856
+ .brutal-progress { height: 1.22rem; background: repeating-linear-gradient(90deg, var(--brutal-surface-strong) 0 1rem, var(--brutal-text) 1rem calc(1rem + 3px)); }
857
+ .brutal-table-wrap { background: var(--brutal-surface-strong); border-radius: 0; box-shadow: .32rem .32rem 0 var(--brutal-primary); }
858
+ .brutal-table th { padding: .48rem .62rem; background: var(--brutal-text); font-weight: 950; }
859
+ .brutal-table td { padding: .46rem .6rem; }
860
+
861
+ .brutal-nav, .brutal-panel, .brutal-toolbar, .brutal-tooltip,
862
+ [data-ui="brutalism"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]),
863
+ .brutal-card-service, .brutal-feature-strip, .brutal-callout-bar {
864
+ border: 4px solid var(--brutal-text);
865
+ border-radius: 0;
866
+ box-shadow: .34rem .34rem 0 var(--brutal-primary);
867
+ }
868
+ .brutal-nav-link { border-inline-start: 3px solid var(--brutal-text); }
869
+ .brutal-progress-bar { background: repeating-linear-gradient(90deg, var(--brutal-primary) 0 .82rem, var(--brutal-warning) .82rem 1rem); }
870
+
645
871
  @media (prefers-reduced-motion: reduce) {
646
872
  [data-ui="brutalism"] *, [data-ui="brutalism"] *::before, [data-ui="brutalism"] *::after { scroll-behavior: auto !important; transition-duration: 1ms !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; }
647
873
  }
@@ -658,3 +884,28 @@
658
884
  [data-ui="brutalism"] a { color: #000 !important; text-decoration: underline; }
659
885
  }
660
886
  }
887
+
888
+ @layer ui-style-kit.brutalism {
889
+ /* Keeps semantic field states above preset-specific material paint. */
890
+ .brutal-input[aria-invalid="true"], .brutal-textarea[aria-invalid="true"], .brutal-select[aria-invalid="true"] { border-color: var(--brutal-danger); box-shadow: 3px 3px 0 rgb(var(--brutal-danger-rgb) / .38); }
891
+ .brutal-input[readonly], .brutal-textarea[readonly] { border-style: dashed; filter: saturate(.72); opacity: .78; }
892
+ /* Restores semantic action paint after identity-specific geometry. */
893
+ .brutal-button-primary { background: var(--brutal-primary); color: var(--brutal-on-primary); border-color: var(--brutal-primary); }
894
+ .brutal-button-secondary { background: var(--brutal-secondary); color: var(--brutal-on-secondary); border-color: var(--brutal-secondary); }
895
+ .brutal-button-danger { background: var(--brutal-danger); color: var(--brutal-on-danger); border-color: var(--brutal-danger); }
896
+ .brutal-button-ghost { background: transparent; color: var(--brutal-primary); border-color: transparent; }
897
+ }
898
+
899
+ @layer ui-style-kit.brutalism {
900
+ /* Shared annotation fidelity: readable display rhythm and appropriately scaled text icons. */
901
+ .brutal-feature-item > .brutal-icon-medallion { font-size: 1.5rem; line-height: 1; }
902
+ .brutal-callout-bar > .brutal-icon-medallion { min-inline-size: 4.5rem; min-block-size: 4.5rem; font-size: 2rem; font-weight: 800; line-height: 1; }
903
+ /** Warning actions inherit preset geometry and use the paired semantic warning colors. */
904
+ [data-ui="brutalism"][data-mode] .brutal-button.brutal-button-warning {
905
+ background: var(--brutal-warning);
906
+ color: var(--brutal-on-warning);
907
+ border-color: var(--brutal-warning);
908
+ text-shadow: none;
909
+ }
910
+
911
+ }