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
@@ -42,6 +42,29 @@
42
42
 
43
43
  [data-ui="art-deco"][data-mode="light"] {
44
44
  color-scheme: light;
45
+ --deco-fallback-bg-rgb: 250 244 234;
46
+ --deco-fallback-surface-rgb: 255 253 249;
47
+ --deco-fallback-surface-strong-rgb: 255 255 255;
48
+ --deco-fallback-surface-soft-rgb: 239 228 207;
49
+ --deco-fallback-text-rgb: 42 31 26;
50
+ --deco-fallback-text-muted-rgb: 109 92 84;
51
+ --deco-fallback-border-rgb: 212 192 166;
52
+ --deco-fallback-primary-rgb: 107 15 26;
53
+ --deco-fallback-primary-hover-rgb: 91 13 22;
54
+ --deco-fallback-primary-text-rgb: 255 255 255;
55
+ --deco-fallback-secondary-rgb: 17 17 17;
56
+ --deco-fallback-secondary-hover-rgb: 0 0 0;
57
+ --deco-fallback-secondary-text-rgb: 255 255 255;
58
+ --deco-fallback-accent-rgb: 201 154 70;
59
+ --deco-fallback-accent-text-rgb: 0 0 0;
60
+ --deco-fallback-success-rgb: 47 125 84;
61
+ --deco-fallback-success-text-rgb: 255 255 255;
62
+ --deco-fallback-warning-rgb: 160 107 19;
63
+ --deco-fallback-warning-text-rgb: 0 0 0;
64
+ --deco-fallback-danger-rgb: 178 60 60;
65
+ --deco-fallback-danger-text-rgb: 255 255 255;
66
+ --deco-fallback-link-rgb: 91 13 22;
67
+ --deco-fallback-focus-rgb: 201 154 70;
45
68
  --deco-panel-alpha: .98;
46
69
  --deco-panel-soft-alpha: .78;
47
70
  --deco-border-alpha: .58;
@@ -51,6 +74,29 @@
51
74
 
52
75
  [data-ui="art-deco"][data-mode="dark"] {
53
76
  color-scheme: dark;
77
+ --deco-fallback-bg-rgb: 19 13 10;
78
+ --deco-fallback-surface-rgb: 33 24 20;
79
+ --deco-fallback-surface-strong-rgb: 50 36 30;
80
+ --deco-fallback-surface-soft-rgb: 25 18 15;
81
+ --deco-fallback-text-rgb: 251 245 236;
82
+ --deco-fallback-text-muted-rgb: 211 195 183;
83
+ --deco-fallback-border-rgb: 106 82 62;
84
+ --deco-fallback-primary-rgb: 201 138 93;
85
+ --deco-fallback-primary-hover-rgb: 224 169 126;
86
+ --deco-fallback-primary-text-rgb: 0 0 0;
87
+ --deco-fallback-secondary-rgb: 246 235 215;
88
+ --deco-fallback-secondary-hover-rgb: 255 248 235;
89
+ --deco-fallback-secondary-text-rgb: 0 0 0;
90
+ --deco-fallback-accent-rgb: 231 184 95;
91
+ --deco-fallback-accent-text-rgb: 0 0 0;
92
+ --deco-fallback-success-rgb: 152 224 182;
93
+ --deco-fallback-success-text-rgb: 0 0 0;
94
+ --deco-fallback-warning-rgb: 255 210 122;
95
+ --deco-fallback-warning-text-rgb: 0 0 0;
96
+ --deco-fallback-danger-rgb: 255 160 154;
97
+ --deco-fallback-danger-text-rgb: 0 0 0;
98
+ --deco-fallback-link-rgb: 240 200 125;
99
+ --deco-fallback-focus-rgb: 231 184 95;
54
100
  --deco-panel-alpha: .92;
55
101
  --deco-panel-soft-alpha: .64;
56
102
  --deco-border-alpha: .52;
@@ -60,6 +106,29 @@
60
106
 
61
107
  [data-ui="art-deco"][data-mode="contrast"] {
62
108
  color-scheme: dark;
109
+ --deco-fallback-bg-rgb: 0 0 0;
110
+ --deco-fallback-surface-rgb: 15 10 7;
111
+ --deco-fallback-surface-strong-rgb: 28 18 13;
112
+ --deco-fallback-surface-soft-rgb: 0 0 0;
113
+ --deco-fallback-text-rgb: 255 255 255;
114
+ --deco-fallback-text-muted-rgb: 255 245 232;
115
+ --deco-fallback-border-rgb: 255 255 255;
116
+ --deco-fallback-primary-rgb: 200 138 54;
117
+ --deco-fallback-primary-hover-rgb: 255 255 255;
118
+ --deco-fallback-primary-text-rgb: 0 0 0;
119
+ --deco-fallback-secondary-rgb: 255 243 217;
120
+ --deco-fallback-secondary-hover-rgb: 255 255 255;
121
+ --deco-fallback-secondary-text-rgb: 0 0 0;
122
+ --deco-fallback-accent-rgb: 255 211 107;
123
+ --deco-fallback-accent-text-rgb: 0 0 0;
124
+ --deco-fallback-success-rgb: 0 255 144;
125
+ --deco-fallback-success-text-rgb: 0 0 0;
126
+ --deco-fallback-warning-rgb: 255 212 0;
127
+ --deco-fallback-warning-text-rgb: 0 0 0;
128
+ --deco-fallback-danger-rgb: 255 107 107;
129
+ --deco-fallback-danger-text-rgb: 0 0 0;
130
+ --deco-fallback-link-rgb: 255 211 107;
131
+ --deco-fallback-focus-rgb: 255 255 255;
63
132
  --deco-panel-alpha: 1;
64
133
  --deco-panel-soft-alpha: .92;
65
134
  --deco-border-alpha: 1;
@@ -67,8 +136,8 @@
67
136
  --deco-focus-alpha: .72;
68
137
  }
69
138
 
139
+ /** Preserves direct aliases for static extraction when a scheme is selected. */
70
140
  [data-ui="art-deco"][data-theme][data-mode] {
71
- /* Shared scheme aliases preserve the existing prefixed token API. */
72
141
  --deco-bg-rgb: var(--usk-bg-rgb);
73
142
  --deco-surface-rgb: var(--usk-surface-rgb);
74
143
  --deco-surface-strong-rgb: var(--usk-surface-strong-rgb);
@@ -83,15 +152,43 @@
83
152
  --deco-secondary-hover-rgb: var(--usk-secondary-hover-rgb);
84
153
  --deco-secondary-text-rgb: var(--usk-secondary-text-rgb);
85
154
  --deco-accent-rgb: var(--usk-accent-rgb);
86
- --deco-success-rgb: var(--usk-success-rgb);
87
- --deco-warning-rgb: var(--usk-warning-rgb);
88
- --deco-danger-rgb: var(--usk-danger-rgb);
89
- --deco-link-rgb: var(--usk-link-rgb);
90
155
  --deco-accent-text-rgb: var(--usk-accent-text-rgb);
156
+ --deco-success-rgb: var(--usk-success-rgb);
91
157
  --deco-success-text-rgb: var(--usk-success-text-rgb);
158
+ --deco-warning-rgb: var(--usk-warning-rgb);
92
159
  --deco-warning-text-rgb: var(--usk-warning-text-rgb);
160
+ --deco-danger-rgb: var(--usk-danger-rgb);
93
161
  --deco-danger-text-rgb: var(--usk-danger-text-rgb);
162
+ --deco-link-rgb: var(--usk-link-rgb);
94
163
  --deco-focus-rgb: var(--usk-focus-rgb);
164
+ }
165
+
166
+ [data-ui="art-deco"][data-mode] {
167
+ --usk-native-bg: var(--deco-bg);
168
+ /* Explicit schemes win; reference colors are used only when no scheme exists. */
169
+ --deco-bg-rgb: var(--usk-bg-rgb, var(--deco-fallback-bg-rgb));
170
+ --deco-surface-rgb: var(--usk-surface-rgb, var(--deco-fallback-surface-rgb));
171
+ --deco-surface-strong-rgb: var(--usk-surface-strong-rgb, var(--deco-fallback-surface-strong-rgb));
172
+ --deco-surface-soft-rgb: var(--usk-surface-soft-rgb, var(--deco-fallback-surface-soft-rgb));
173
+ --deco-text-rgb: var(--usk-text-rgb, var(--deco-fallback-text-rgb));
174
+ --deco-text-muted-rgb: var(--usk-text-muted-rgb, var(--deco-fallback-text-muted-rgb));
175
+ --deco-border-rgb: var(--usk-border-rgb, var(--deco-fallback-border-rgb));
176
+ --deco-primary-rgb: var(--usk-primary-rgb, var(--deco-fallback-primary-rgb));
177
+ --deco-primary-hover-rgb: var(--usk-primary-hover-rgb, var(--deco-fallback-primary-hover-rgb));
178
+ --deco-primary-text-rgb: var(--usk-primary-text-rgb, var(--deco-fallback-primary-text-rgb));
179
+ --deco-secondary-rgb: var(--usk-secondary-rgb, var(--deco-fallback-secondary-rgb));
180
+ --deco-secondary-hover-rgb: var(--usk-secondary-hover-rgb, var(--deco-fallback-secondary-hover-rgb));
181
+ --deco-secondary-text-rgb: var(--usk-secondary-text-rgb, var(--deco-fallback-secondary-text-rgb));
182
+ --deco-accent-rgb: var(--usk-accent-rgb, var(--deco-fallback-accent-rgb));
183
+ --deco-accent-text-rgb: var(--usk-accent-text-rgb, var(--deco-fallback-accent-text-rgb));
184
+ --deco-success-rgb: var(--usk-success-rgb, var(--deco-fallback-success-rgb));
185
+ --deco-success-text-rgb: var(--usk-success-text-rgb, var(--deco-fallback-success-text-rgb));
186
+ --deco-warning-rgb: var(--usk-warning-rgb, var(--deco-fallback-warning-rgb));
187
+ --deco-warning-text-rgb: var(--usk-warning-text-rgb, var(--deco-fallback-warning-text-rgb));
188
+ --deco-danger-rgb: var(--usk-danger-rgb, var(--deco-fallback-danger-rgb));
189
+ --deco-danger-text-rgb: var(--usk-danger-text-rgb, var(--deco-fallback-danger-text-rgb));
190
+ --deco-link-rgb: var(--usk-link-rgb, var(--deco-fallback-link-rgb));
191
+ --deco-focus-rgb: var(--usk-focus-rgb, var(--deco-fallback-focus-rgb));
95
192
  /* Native fallback selectors inherit visual identity through shared tokens. */
96
193
  --usk-native-surface: var(--deco-surface);
97
194
  --usk-native-surface-strong: var(--deco-surface-strong);
@@ -122,6 +219,57 @@
122
219
  --usk-native-border-width: 1px;
123
220
  --usk-native-field-gap: .5rem;
124
221
  --usk-native-panel-padding: var(--deco-space-5);
222
+ --usk-native-control-min-block-size: 2.125rem;
223
+ --usk-native-control-padding-block: .35rem;
224
+ --usk-native-control-padding-inline: .7rem;
225
+ --usk-native-subcontrol-padding-block: .3rem;
226
+ --usk-native-subcontrol-padding-inline: .6rem;
227
+ --usk-native-choice-size: 1rem;
228
+ --usk-native-choice-background: var(--deco-control-bg);
229
+ --usk-native-choice-border: 1px solid var(--deco-border);
230
+ --usk-native-checkbox-radius: .12rem;
231
+ --usk-native-radio-radius: 50%;
232
+ --usk-native-choice-shadow: 0 0 0 2px var(--deco-surface-strong);
233
+ --usk-native-choice-checked-background: var(--deco-primary);
234
+ --usk-native-choice-mark-color: var(--deco-on-primary);
235
+ --usk-native-select-indicator-image: linear-gradient(72deg, transparent 50%, var(--deco-primary) 50%), linear-gradient(108deg, var(--deco-primary) 50%, transparent 50%);
236
+ --usk-native-select-indicator-size: 0.34rem 0.34rem, 0.34rem 0.34rem;
237
+ --usk-native-select-indicator-position: calc(100% - 1.24rem) 50%, calc(100% - 0.8999999999999999rem) 50%;
238
+ --usk-native-select-padding-inline-end: 2.7rem;
239
+ --usk-native-range-track-size: .48rem;
240
+ --usk-native-range-track-background: var(--deco-surface-soft);
241
+ --usk-native-range-track-border: 1px solid var(--deco-border);
242
+ --usk-native-range-track-radius: .08rem;
243
+ --usk-native-range-track-shadow: 0 0 0 2px var(--deco-surface-strong);
244
+ --usk-native-range-progress-background: var(--deco-primary);
245
+ --usk-native-range-thumb-size: 1.35rem;
246
+ --usk-native-range-thumb-background: var(--deco-surface-strong);
247
+ --usk-native-range-thumb-border: 1px solid var(--deco-border);
248
+ --usk-native-range-thumb-radius: 50%;
249
+ --usk-native-range-thumb-shadow: 0 0 0 2px var(--deco-surface-strong);
250
+ --usk-native-progress-size: .7rem;
251
+ --usk-native-progress-track-background: var(--deco-surface-soft);
252
+ --usk-native-progress-track-border: 1px solid var(--deco-border);
253
+ --usk-native-progress-track-radius: .08rem;
254
+ --usk-native-progress-track-shadow: 0 0 0 2px var(--deco-surface-strong);
255
+ --usk-native-progress-value-background: var(--deco-primary);
256
+ --usk-native-progress-value-radius: .08rem;
257
+ --usk-native-progress-value-shadow: 0 0 0 2px var(--deco-surface-strong);
258
+ --usk-native-meter-optimum-background: var(--deco-success);
259
+ --usk-native-meter-suboptimum-background: var(--deco-warning);
260
+ --usk-native-meter-critical-background: var(--deco-danger);
261
+ --usk-native-file-button-background: var(--deco-primary);
262
+ --usk-native-file-button-border: 1px solid var(--deco-border);
263
+ --usk-native-file-button-radius: .12rem;
264
+ --usk-native-file-button-shadow: 0 0 0 2px var(--deco-surface-strong);
265
+ --usk-native-color-swatch-border: 1px solid var(--deco-border);
266
+ --usk-native-color-swatch-radius: .12rem;
267
+ --usk-native-indicator-opacity: 0.72;
268
+ --usk-native-indicator-filter: none;
269
+ --usk-native-scrollbar-size: .7rem;
270
+ --usk-native-scrollbar-track: var(--deco-surface-soft);
271
+ --usk-native-scrollbar-thumb: var(--deco-primary);
272
+ --usk-native-scrollbar-radius: .08rem;
125
273
  --deco-bg: rgb(var(--deco-bg-rgb));
126
274
  --deco-surface: rgb(var(--deco-surface-rgb) / var(--deco-panel-alpha));
127
275
  --deco-surface-strong: rgb(var(--deco-surface-strong-rgb) / var(--deco-panel-alpha));
@@ -162,7 +310,7 @@
162
310
  }
163
311
 
164
312
  @supports (color: color-mix(in srgb, black, white)) {
165
- [data-ui="art-deco"][data-theme][data-mode] { --deco-border: color-mix(in srgb, rgb(var(--deco-border-rgb) / max(var(--deco-border-alpha), var(--usk-border-min-alpha))), var(--deco-text) var(--usk-border-text-mix)); }
313
+ [data-ui="art-deco"][data-mode] { --deco-border: color-mix(in srgb, rgb(var(--deco-border-rgb) / max(var(--deco-border-alpha), var(--usk-border-min-alpha))), var(--deco-text) var(--usk-border-text-mix)); }
166
314
  }
167
315
 
168
316
 
@@ -214,7 +362,7 @@
214
362
  [data-ui="art-deco"] *::before,
215
363
  [data-ui="art-deco"] *::after { box-sizing: border-box; }
216
364
 
217
- [data-ui="art-deco"][data-theme][data-mode] { background: var(--deco-theme-bg); background-size: var(--deco-theme-bg-size); }
365
+ [data-ui="art-deco"][data-mode] { background: var(--deco-theme-bg); background-size: var(--deco-theme-bg-size); }
218
366
 
219
367
  .deco-page { min-height: 100vh; padding: clamp(1rem, 4vw, 3rem); }
220
368
  .deco-container { width: min(100% - 2rem, 1200px); margin-inline: auto; }
@@ -281,7 +429,7 @@
281
429
  /* Theme-responsive component defaults */
282
430
  .deco-card, .deco-panel { background: var(--deco-card-bg); }
283
431
  .deco-toolbar, .deco-table-wrap { background: var(--deco-control-bg); }
284
- .deco-button:not(.deco-button-primary):not(.deco-button-secondary):not(.deco-button-danger):not(.deco-button-ghost), .deco-icon-button { background: var(--deco-control-bg); }
432
+ .deco-button:not(.deco-button-primary):not(.deco-button-secondary):not(.deco-button-danger):not(.deco-button-warning):not(.deco-button-ghost), .deco-icon-button { background: var(--deco-control-bg); }
285
433
  .deco-button, .deco-icon-button, .deco-badge, .deco-nav-link { font-family: var(--deco-font-control); }
286
434
 
287
435
 
@@ -509,7 +657,6 @@
509
657
  .deco-feature-strip {
510
658
  display: grid;
511
659
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
512
- overflow: hidden;
513
660
  background: var(--deco-card-bg);
514
661
  color: var(--deco-text);
515
662
  border: 1px solid var(--deco-border);
@@ -607,7 +754,7 @@
607
754
  --deco-radius-lg: .16rem;
608
755
  --deco-radius-xl: .2rem;
609
756
  }
610
- [data-ui="art-deco"][data-theme][data-mode] {
757
+ [data-ui="art-deco"][data-mode] {
611
758
  --deco-theme-bg: radial-gradient(circle at 50% -8%, rgb(var(--deco-primary-rgb) / .16), transparent 28rem), linear-gradient(90deg, transparent 49.8%, rgb(var(--deco-border-rgb) / .14) 50%, transparent 50.2%), var(--deco-bg);
612
759
  --deco-card-bg: linear-gradient(135deg, rgb(var(--deco-primary-rgb) / .06), rgb(var(--deco-surface-rgb) / var(--deco-panel-alpha)) 35%, rgb(var(--deco-secondary-rgb) / .05));
613
760
  }
@@ -626,6 +773,7 @@
626
773
 
627
774
  /* Filled and framed actions use mirrored chevrons and double-rule symmetry. */
628
775
  .deco-button.deco-button-cut, .deco-button-cut {
776
+ min-block-size: 2.75rem;
629
777
  inline-size: min(100%, 15rem);
630
778
  min-inline-size: 6rem;
631
779
  max-inline-size: 100%;
@@ -646,12 +794,12 @@
646
794
  border-radius: var(--deco-radius-sm);
647
795
  box-shadow: inset 0 0 0 1px rgb(var(--deco-surface-strong-rgb) / .72);
648
796
  }
649
- [data-ui="art-deco"][data-theme][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
797
+ [data-ui="art-deco"][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
650
798
  border: 3px double var(--deco-primary);
651
799
  border-radius: 0;
652
800
  box-shadow: inset 0 0 0 1px rgb(var(--deco-surface-strong-rgb) / .74);
653
801
  }
654
- [data-ui="art-deco"][data-theme][data-mode] :where(dialog) {
802
+ [data-ui="art-deco"][data-mode] :where(dialog) {
655
803
  border: 3px double var(--deco-border);
656
804
  border-radius: var(--deco-radius-sm);
657
805
  box-shadow: inset 0 0 0 1px rgb(var(--deco-surface-strong-rgb) / .74), 0 1rem 2rem rgb(var(--deco-text-rgb) / .18);
@@ -665,6 +813,111 @@
665
813
  border: .08em double currentColor; border-radius: 0; background: conic-gradient(from 45deg, currentColor 0 25%, transparent 0 50%, currentColor 0 75%, transparent 0); box-shadow: 0 0 0 .06em currentColor; clip-path: polygon(50% 0, 90% 20%, 100% 50%, 90% 80%, 50% 100%, 10% 80%, 0 50%, 10% 20%); animation: deco-spin .92s cubic-bezier(.4, 0, .2, 1) infinite;
666
814
  }
667
815
 
816
+ /**
817
+ * Extends Art Deco's stepped symmetry, metallic double keylines, fan motifs,
818
+ * and jewel-like instrumentation through the complete component vocabulary.
819
+ */
820
+ [data-ui="art-deco"][data-mode] {
821
+ --usk-native-font-control: var(--deco-font-control);
822
+ --usk-native-control-min-block-size: 2.125rem;
823
+ --usk-native-control-padding-block: .35rem;
824
+ --usk-native-control-padding-inline: .7rem;
825
+ --usk-native-border-width: 3px;
826
+ --usk-native-radius-sm: .08rem;
827
+ --usk-native-radius: .14rem;
828
+ --usk-native-radius-lg: .2rem;
829
+ --usk-native-shadow: inset 0 0 0 1px var(--deco-surface-strong), inset 0 0 0 3px var(--deco-border);
830
+ --usk-native-shadow-md: inset 0 0 0 1px var(--deco-surface-strong), inset 0 0 0 4px var(--deco-border), 0 .72rem 1.4rem rgb(var(--deco-text-rgb) / .14);
831
+ --usk-native-focus-ring: 0 0 0 1px var(--deco-surface-strong), 0 0 0 3px var(--deco-warning), 0 0 0 5px var(--deco-primary);
832
+ --usk-native-subcontrol-padding-block: .3rem;
833
+ --usk-native-subcontrol-padding-inline: .6rem;
834
+ --usk-native-choice-size: 1rem;
835
+ --usk-native-choice-background: linear-gradient(145deg, var(--deco-surface-strong), var(--deco-control-bg));
836
+ --usk-native-choice-border: 3px double var(--deco-border);
837
+ --usk-native-checkbox-radius: .06rem;
838
+ --usk-native-radio-radius: 50%;
839
+ --usk-native-choice-shadow: inset 0 0 0 1px rgb(var(--deco-warning-rgb) / .46);
840
+ --usk-native-choice-checked-background: linear-gradient(135deg, var(--deco-primary), var(--deco-success));
841
+ --usk-native-choice-mark-color: var(--deco-on-primary);
842
+ --usk-native-select-indicator-image: linear-gradient(60deg, transparent 46%, var(--deco-warning) 47% 53%, transparent 54%), linear-gradient(120deg, transparent 46%, var(--deco-warning) 47% 53%, transparent 54%);
843
+ --usk-native-select-indicator-size: .48rem .64rem, .48rem .64rem;
844
+ --usk-native-select-indicator-position: calc(100% - 1.34rem) 50%, calc(100% - .98rem) 50%;
845
+ --usk-native-select-padding-inline-end: 3rem;
846
+ --usk-native-range-track-size: .36rem;
847
+ --usk-native-range-track-background: linear-gradient(90deg, var(--deco-success), var(--deco-warning), var(--deco-danger));
848
+ --usk-native-range-track-border: 3px double var(--deco-border);
849
+ --usk-native-range-track-radius: .08rem;
850
+ --usk-native-range-track-shadow: inset 0 0 0 1px rgb(var(--deco-surface-strong-rgb) / .72);
851
+ --usk-native-range-progress-background: linear-gradient(90deg, var(--deco-primary), var(--deco-warning));
852
+ --usk-native-range-thumb-size: 1.18rem;
853
+ --usk-native-range-thumb-background: linear-gradient(135deg, var(--deco-warning), var(--deco-primary));
854
+ --usk-native-range-thumb-border: 3px double var(--deco-border);
855
+ --usk-native-range-thumb-radius: 0;
856
+ --usk-native-range-thumb-shadow: 0 0 0 2px rgb(var(--deco-surface-strong-rgb) / .72);
857
+ --usk-native-progress-size: .52rem;
858
+ --usk-native-progress-track-background: linear-gradient(90deg, rgb(var(--deco-border-rgb) / .16), rgb(var(--deco-border-rgb) / .36), rgb(var(--deco-border-rgb) / .16));
859
+ --usk-native-progress-track-border: 3px double var(--deco-border);
860
+ --usk-native-progress-track-radius: .08rem;
861
+ --usk-native-progress-track-shadow: inset 0 0 0 1px var(--deco-surface-strong);
862
+ --usk-native-progress-value-background: linear-gradient(90deg, var(--deco-success), var(--deco-primary), var(--deco-warning));
863
+ --usk-native-progress-value-radius: .04rem;
864
+ --usk-native-progress-value-shadow: inset -1px 0 0 var(--deco-surface-strong);
865
+ --usk-native-scrollbar-size: .72rem;
866
+ --usk-native-scrollbar-track: linear-gradient(90deg, var(--deco-surface-soft), var(--deco-surface-strong), var(--deco-surface-soft));
867
+ --usk-native-scrollbar-thumb: linear-gradient(180deg, var(--deco-warning), var(--deco-primary));
868
+ --usk-native-scrollbar-radius: .06rem;
869
+ }
870
+
871
+ .deco-title { margin-block: .75rem; font-weight: 500; letter-spacing: max(.08em, .5px); }
872
+ .deco-label { font-size: .67rem; font-weight: 700; }
873
+ .deco-button { min-height: 2.85rem; padding: .68rem 1.3rem; background: linear-gradient(135deg, var(--deco-primary), var(--deco-success)); border-radius: .08rem; box-shadow: inset 0 0 0 1px var(--deco-surface-strong), inset 0 0 0 3px var(--deco-border); font-weight: 700; }
874
+ .deco-input { min-height: 2.75rem; padding: .62rem 1.05rem; border-radius: 0; }
875
+ .deco-card { padding: 1.6rem; background: linear-gradient(145deg, rgb(var(--deco-warning-rgb) / .1), transparent 42%), var(--deco-card-bg); border: 3px double var(--deco-border); border-radius: .16rem; box-shadow: inset 0 0 0 1px var(--deco-surface-strong), 0 .72rem 1.4rem rgb(var(--deco-text-rgb) / .14); }
876
+ .deco-well { background: linear-gradient(135deg, transparent 0 42%, rgb(var(--deco-warning-rgb) / .12) 42% 58%, transparent 58%), var(--deco-surface-soft); border: 3px double var(--deco-border); box-shadow: inset 0 0 0 1px var(--deco-surface-strong); }
877
+ .deco-badge { min-height: 1.6rem; padding: .2rem .6rem; border-radius: .08rem; }
878
+ .deco-alert { background: linear-gradient(90deg, rgb(var(--deco-warning-rgb) / .12), transparent 28%), var(--deco-card-bg); border: 3px double var(--deco-border); border-radius: .1rem; box-shadow: inset 0 0 0 1px var(--deco-surface-strong); }
879
+ .deco-progress { height: .52rem; background: linear-gradient(90deg, rgb(var(--deco-border-rgb) / .16), rgb(var(--deco-border-rgb) / .36), rgb(var(--deco-border-rgb) / .16)); }
880
+ .deco-table-wrap { background: linear-gradient(135deg, rgb(var(--deco-warning-rgb) / .08), transparent), var(--deco-card-bg); border-radius: .12rem; box-shadow: inset 0 0 0 1px var(--deco-surface-strong), inset 0 0 0 4px var(--deco-border); }
881
+ .deco-table th { padding: .68rem .9rem; background: linear-gradient(180deg, var(--deco-primary), var(--deco-surface-strong)); font-weight: 700; }
882
+ .deco-table td { padding: .64rem .88rem; }
883
+
884
+ .deco-nav, .deco-panel, .deco-toolbar, .deco-tooltip,
885
+ [data-ui="art-deco"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]),
886
+ .deco-card-service, .deco-feature-strip, .deco-callout-bar {
887
+ border: 3px double var(--deco-border);
888
+ border-radius: .12rem;
889
+ box-shadow: inset 0 0 0 1px var(--deco-surface-strong);
890
+ }
891
+ .deco-feature-item {
892
+ border-inline-end: 3px double var(--deco-border);
893
+ background: linear-gradient(135deg, transparent 0 46%, rgb(var(--deco-warning-rgb) / .08) 46% 54%, transparent 54%);
894
+ }
895
+ .deco-feature-item:last-child { border-inline-end: 0; }
896
+ .deco-icon-medallion, .deco-badge-seal { background: conic-gradient(from 22.5deg, var(--deco-primary), var(--deco-warning), var(--deco-success), var(--deco-primary)); }
897
+ .deco-progress-bar { background: linear-gradient(90deg, var(--deco-success), var(--deco-primary), var(--deco-warning)); }
898
+
899
+ /* Symmetric jewel washes keep the stepped frame visible across broad surfaces. */
900
+ @supports (color: color-mix(in srgb, black, white)) {
901
+ .deco-panel,
902
+ .deco-card-service,
903
+ .deco-feature-strip,
904
+ .deco-callout-bar {
905
+ background:
906
+ linear-gradient(
907
+ 90deg,
908
+ color-mix(in srgb, var(--deco-surface) 72%, var(--deco-primary)) 0 18%,
909
+ transparent 36% 64%,
910
+ color-mix(in srgb, var(--deco-surface) 72%, var(--deco-warning)) 82% 100%
911
+ ),
912
+ var(--deco-card-bg);
913
+ }
914
+ [data-ui="art-deco"][data-mode] :where(fieldset, article, aside) {
915
+ background:
916
+ linear-gradient(90deg, color-mix(in srgb, var(--deco-surface) 72%, var(--deco-primary)) 0 18%, transparent 36% 64%, color-mix(in srgb, var(--deco-surface) 72%, var(--deco-warning)) 82%),
917
+ var(--deco-surface);
918
+ }
919
+ }
920
+
668
921
  @media (prefers-reduced-motion: reduce) {
669
922
  [data-ui="art-deco"] *, [data-ui="art-deco"] *::before, [data-ui="art-deco"] *::after { scroll-behavior: auto !important; transition-duration: 1ms !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; }
670
923
  }
@@ -681,3 +934,1135 @@
681
934
  [data-ui="art-deco"] a { color: #000 !important; text-decoration: underline; }
682
935
  }
683
936
  }
937
+
938
+ @layer ui-style-kit.art_deco {
939
+ /* Keeps semantic field states above preset-specific material paint. */
940
+ .deco-input[aria-invalid="true"], .deco-textarea[aria-invalid="true"], .deco-select[aria-invalid="true"] { border-color: var(--deco-danger); box-shadow: 0 0 0 2px rgb(var(--deco-danger-rgb) / .18); }
941
+ .deco-input[readonly], .deco-textarea[readonly] { border-style: dashed; filter: saturate(.72); opacity: .78; }
942
+ /* Restores semantic action paint after identity-specific geometry. */
943
+ .deco-button-primary { background: linear-gradient(135deg, var(--deco-primary), var(--deco-success)); color: var(--deco-on-primary); border-color: var(--deco-border); }
944
+ .deco-button-secondary { background: linear-gradient(135deg, var(--deco-secondary), var(--deco-warning)); color: var(--deco-on-secondary); border-color: var(--deco-border); }
945
+ .deco-button-danger { background: linear-gradient(135deg, var(--deco-danger), rgb(var(--deco-danger-rgb) / .72)); color: var(--deco-on-danger); border-color: var(--deco-border); }
946
+ .deco-button-ghost { background: transparent; color: var(--deco-primary); border-color: transparent; }
947
+ }
948
+
949
+ @layer ui-style-kit.art_deco {
950
+ /* Shared annotation fidelity: readable display rhythm and appropriately scaled text icons. */
951
+ .deco-feature-item > .deco-icon-medallion { font-size: 1.5rem; line-height: 1; }
952
+ .deco-callout-bar > .deco-icon-medallion { min-inline-size: 4.5rem; min-block-size: 4.5rem; font-size: 2rem; font-weight: 800; line-height: 1; }
953
+ }
954
+
955
+ @layer ui-style-kit.art_deco {
956
+ /**
957
+ * Recreates the Metropolitan Moderne material system with stable enamel
958
+ * surfaces and metallic keylines while semantic themes continue to own color.
959
+ */
960
+ :root {
961
+ --deco-font-display: "Bodoni MT", Didot, "Times New Roman", serif;
962
+ --deco-font-body: "Arial Narrow", "Bahnschrift Condensed", "Aptos Narrow", sans-serif;
963
+ --deco-font-control: "Arial Narrow", "Bahnschrift Condensed", "Aptos Narrow", sans-serif;
964
+ --deco-font-heading: var(--deco-font-control);
965
+ }
966
+
967
+ [data-ui="art-deco"][data-mode="light"] {
968
+ --deco-enamel-rgb: 246 242 231;
969
+ --deco-enamel-strong-rgb: 255 252 244;
970
+ --deco-enamel-soft-rgb: 232 224 201;
971
+ --deco-metal-rgb: 140 111 62;
972
+ --deco-metal-bright-rgb: 174 132 49;
973
+ --deco-label-accent: rgb(112, 82, 34);
974
+ --deco-tooltip-bg-rgb: 10 26 31;
975
+ --deco-tooltip-text-rgb: 255 247 220;
976
+ }
977
+
978
+ [data-ui="art-deco"][data-mode="dark"] {
979
+ --deco-enamel-rgb: 10 26 31;
980
+ --deco-enamel-strong-rgb: 13 30 32;
981
+ --deco-enamel-soft-rgb: 19 37 38;
982
+ --deco-metal-rgb: 140 111 62;
983
+ --deco-metal-bright-rgb: 212 175 55;
984
+ --deco-label-accent: rgb(212, 175, 55);
985
+ --deco-tooltip-bg-rgb: 10 26 31;
986
+ --deco-tooltip-text-rgb: 255 247 220;
987
+ }
988
+
989
+ [data-ui="art-deco"][data-mode="contrast"] {
990
+ --deco-enamel-rgb: 0 0 0;
991
+ --deco-enamel-strong-rgb: 10 10 10;
992
+ --deco-enamel-soft-rgb: 22 22 22;
993
+ --deco-metal-rgb: 255 255 255;
994
+ --deco-metal-bright-rgb: 255 224 95;
995
+ --deco-label-accent: rgb(255, 255, 255);
996
+ --deco-tooltip-bg-rgb: 0 0 0;
997
+ --deco-tooltip-text-rgb: 255 255 255;
998
+ }
999
+
1000
+ [data-ui="art-deco"][data-mode] {
1001
+ --deco-metal: rgb(var(--deco-metal-rgb));
1002
+ --deco-metal-bright: rgb(var(--deco-metal-bright-rgb));
1003
+ --deco-bg: rgb(var(--deco-enamel-rgb));
1004
+ --deco-surface: rgb(var(--deco-enamel-rgb) / var(--deco-panel-alpha));
1005
+ --deco-surface-strong: rgb(var(--deco-enamel-strong-rgb) / var(--deco-panel-alpha));
1006
+ --deco-surface-soft: rgb(var(--deco-enamel-soft-rgb) / var(--deco-panel-soft-alpha));
1007
+ --deco-border: var(--deco-metal);
1008
+ --deco-theme-bg:
1009
+ linear-gradient(90deg, transparent 49.92%, rgb(var(--deco-metal-rgb) / .12) 50%, transparent 50.08%),
1010
+ linear-gradient(180deg, rgb(var(--deco-enamel-strong-rgb) / .28), transparent 11rem),
1011
+ var(--deco-bg);
1012
+ --deco-card-bg:
1013
+ linear-gradient(135deg, rgb(var(--deco-metal-bright-rgb) / .055), transparent 34%),
1014
+ var(--deco-surface);
1015
+ --deco-control-bg:
1016
+ linear-gradient(180deg, rgb(var(--deco-enamel-strong-rgb) / .98), rgb(var(--deco-enamel-rgb) / .98));
1017
+ --deco-jewel-on: rgb(246 242 231);
1018
+ --deco-jewel-primary: rgb(var(--deco-primary-rgb));
1019
+ --deco-jewel-secondary: rgb(var(--deco-secondary-rgb));
1020
+ --deco-jewel-success: rgb(var(--deco-success-rgb));
1021
+ --deco-jewel-warning: rgb(var(--deco-warning-rgb));
1022
+ --deco-jewel-danger: rgb(var(--deco-danger-rgb));
1023
+ --deco-spinner-segmented-background:
1024
+ repeating-conic-gradient(from 0deg, var(--deco-metal-bright) 0 8deg, var(--deco-primary) 8deg 16deg, transparent 16deg 30deg);
1025
+ --usk-native-choice-checked-background: var(--deco-jewel-primary);
1026
+ --usk-native-choice-mark-color: var(--deco-jewel-on);
1027
+ --usk-native-range-track-background:
1028
+ linear-gradient(90deg, var(--deco-surface-soft), rgb(var(--deco-metal-rgb) / .52), var(--deco-surface-soft));
1029
+ --usk-native-range-progress-background: var(--deco-jewel-primary);
1030
+ --usk-native-range-thumb-background:
1031
+ linear-gradient(135deg, var(--deco-jewel-warning), var(--deco-jewel-primary));
1032
+ --usk-native-progress-size: .625rem;
1033
+ --usk-native-progress-value-background: var(--deco-jewel-primary);
1034
+ --usk-native-meter-optimum-background: var(--deco-jewel-success);
1035
+ --usk-native-meter-suboptimum-background: var(--deco-jewel-warning);
1036
+ --usk-native-meter-critical-background: var(--deco-jewel-danger);
1037
+ }
1038
+
1039
+ /**
1040
+ * Enhances semantic fallback colors into restrained Art Deco enamels when the
1041
+ * browser supports perceptual color mixing.
1042
+ */
1043
+ @supports (color: color-mix(in srgb, black, white)) {
1044
+ [data-ui="art-deco"][data-mode] {
1045
+ --deco-jewel-primary: color-mix(in srgb, rgb(var(--deco-primary-rgb)) 34%, rgb(15 70 66));
1046
+ --deco-jewel-secondary: color-mix(in srgb, rgb(var(--deco-secondary-rgb)) 30%, rgb(21 65 75));
1047
+ --deco-jewel-success: color-mix(in srgb, rgb(var(--deco-success-rgb)) 30%, rgb(22 67 57));
1048
+ --deco-jewel-warning: color-mix(in srgb, rgb(var(--deco-warning-rgb)) 20%, rgb(94 59 14));
1049
+ --deco-jewel-danger: color-mix(in srgb, rgb(var(--deco-danger-rgb)) 35%, rgb(90 23 23));
1050
+ }
1051
+ }
1052
+
1053
+ /**
1054
+ * Lets explicit runtime token edits render exact user-supplied action colors
1055
+ * while untouched shared themes keep the tempered Art Deco jewel paint.
1056
+ */
1057
+ [data-ui="art-deco"][data-mode][style*="--usk-primary-rgb"] {
1058
+ --deco-jewel-primary: rgb(var(--deco-primary-rgb));
1059
+ --deco-jewel-on: var(--deco-on-primary);
1060
+ }
1061
+
1062
+ .deco-title,
1063
+ .deco-heading,
1064
+ .deco-kicker,
1065
+ .deco-eyebrow,
1066
+ .deco-label,
1067
+ .deco-button,
1068
+ .deco-badge,
1069
+ .deco-tooltip,
1070
+ .deco-table th {
1071
+ font-stretch: condensed;
1072
+ text-transform: uppercase;
1073
+ }
1074
+
1075
+ .deco-kicker,
1076
+ .deco-eyebrow {
1077
+ color: var(--deco-label-accent);
1078
+ font-weight: 600;
1079
+ }
1080
+
1081
+ [data-ui="art-deco"][data-mode] .deco-media-scrim > :where(figcaption, [data-media-caption]) * {
1082
+ color: inherit;
1083
+ }
1084
+
1085
+ [data-ui="art-deco"][data-mode] :where(h2, h3, h4, h5, h6) {
1086
+ font-family: var(--deco-font-control);
1087
+ font-weight: 600;
1088
+ }
1089
+
1090
+ .deco-label { font-size: .72rem; }
1091
+
1092
+ /**
1093
+ * Keeps the specimen's display face exclusive to hero titles while section
1094
+ * labels and navigation use its narrow technical lettering.
1095
+ */
1096
+ .deco-title { font-family: var(--deco-font-display); }
1097
+
1098
+ .deco-heading {
1099
+ --demo-component-heading-size: .875rem;
1100
+ font-family: var(--deco-font-control);
1101
+ font-size: .875rem;
1102
+ font-weight: 500;
1103
+ letter-spacing: .08em;
1104
+ }
1105
+
1106
+ .deco-nav {
1107
+ gap: 0;
1108
+ padding: .2rem;
1109
+ }
1110
+
1111
+ .deco-nav-link {
1112
+ min-height: 1.875rem;
1113
+ padding: .35rem .7rem;
1114
+ border-inline-start: 1px solid rgb(var(--deco-metal-rgb) / .56);
1115
+ font-size: .75rem;
1116
+ font-weight: 500;
1117
+ line-height: 1;
1118
+ letter-spacing: .08em;
1119
+ }
1120
+
1121
+ .deco-nav-link:first-child { border-inline-start: 0; }
1122
+
1123
+ .deco-surface,
1124
+ .deco-card,
1125
+ .deco-panel,
1126
+ .deco-toolbar,
1127
+ .deco-table-wrap {
1128
+ background: var(--deco-card-bg);
1129
+ border: 3px double var(--deco-metal);
1130
+ border-radius: .125rem;
1131
+ box-shadow:
1132
+ inset 0 0 0 1px rgb(var(--deco-enamel-strong-rgb) / .94),
1133
+ inset 0 0 0 4px rgb(var(--deco-metal-rgb) / .2),
1134
+ 0 .65rem 1.35rem rgb(0 0 0 / calc(var(--deco-shadow-alpha) * .72));
1135
+ }
1136
+
1137
+ .deco-button,
1138
+ .deco-icon-button {
1139
+ border: 3px double var(--deco-metal);
1140
+ border-radius: 0;
1141
+ clip-path: polygon(
1142
+ 0 .65rem,
1143
+ .28rem .65rem,
1144
+ .28rem .3rem,
1145
+ .62rem .3rem,
1146
+ .62rem 0,
1147
+ calc(100% - .62rem) 0,
1148
+ calc(100% - .62rem) .3rem,
1149
+ calc(100% - .28rem) .3rem,
1150
+ calc(100% - .28rem) .65rem,
1151
+ 100% .65rem,
1152
+ 100% calc(100% - .65rem),
1153
+ calc(100% - .28rem) calc(100% - .65rem),
1154
+ calc(100% - .28rem) calc(100% - .3rem),
1155
+ calc(100% - .62rem) calc(100% - .3rem),
1156
+ calc(100% - .62rem) 100%,
1157
+ .62rem 100%,
1158
+ .62rem calc(100% - .3rem),
1159
+ .28rem calc(100% - .3rem),
1160
+ .28rem calc(100% - .65rem),
1161
+ 0 calc(100% - .65rem)
1162
+ );
1163
+ letter-spacing: .115em;
1164
+ }
1165
+
1166
+ .deco-badge {
1167
+ border: 3px double var(--deco-metal);
1168
+ clip-path: polygon(0 .34rem, .34rem .34rem, .34rem 0, calc(100% - .34rem) 0, calc(100% - .34rem) .34rem, 100% .34rem, 100% calc(100% - .34rem), calc(100% - .34rem) calc(100% - .34rem), calc(100% - .34rem) 100%, .34rem 100%, .34rem calc(100% - .34rem), 0 calc(100% - .34rem));
1169
+ font-weight: 700;
1170
+ letter-spacing: .07em;
1171
+ }
1172
+
1173
+ .deco-tooltip,
1174
+ [data-ui="art-deco"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) {
1175
+ min-inline-size: 8rem;
1176
+ justify-content: center;
1177
+ background: rgb(var(--deco-tooltip-bg-rgb));
1178
+ color: rgb(var(--deco-tooltip-text-rgb));
1179
+ border: 3px double var(--deco-metal);
1180
+ border-radius: 0;
1181
+ clip-path: polygon(.35rem 0, calc(100% - .35rem) 0, 100% .35rem, 100% calc(100% - .35rem), calc(100% - .35rem) 100%, .35rem 100%, 0 calc(100% - .35rem), 0 .35rem);
1182
+ box-shadow: inset 0 0 0 1px rgb(var(--deco-metal-rgb) / .34), 0 .65rem 1.25rem rgb(0 0 0 / .34);
1183
+ font-size: .75rem;
1184
+ font-weight: 500;
1185
+ letter-spacing: .055em;
1186
+ }
1187
+
1188
+ .deco-tooltip-arrow { background: var(--deco-metal-bright); }
1189
+
1190
+ .deco-spinner,
1191
+ .deco-loading-spinner,
1192
+ [data-ui="art-deco"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) {
1193
+ background: var(--deco-spinner-segmented-background);
1194
+ border: .18rem double var(--deco-metal);
1195
+ border-radius: 50%;
1196
+ clip-path: none;
1197
+ box-shadow: inset 0 0 0 .28rem var(--deco-surface-strong), 0 0 0 .1rem rgb(var(--deco-metal-rgb) / .34);
1198
+ }
1199
+
1200
+ .deco-table th,
1201
+ .deco-table td {
1202
+ border-block-end: 1px solid rgb(var(--deco-metal-rgb) / .72);
1203
+ border-inline-start: 1px solid rgb(var(--deco-metal-rgb) / .72);
1204
+ }
1205
+
1206
+ .deco-table tr > :first-child { border-inline-start: 0; }
1207
+ }
1208
+
1209
+ @layer ui-style-kit.art_deco {
1210
+ /**
1211
+ * Keeps native choices and calibrated range controls optically centered while
1212
+ * preserving their semantic foreground/background contrast pairs.
1213
+ */
1214
+ [data-ui="art-deco"][data-mode] {
1215
+ --usk-native-choice-mark-color: rgb(var(--deco-enamel-strong-rgb));
1216
+ }
1217
+
1218
+ [data-ui="art-deco"][data-mode] :where(input[type="checkbox"]:checked) {
1219
+ background-color: var(--deco-jewel-primary);
1220
+ background-image:
1221
+ linear-gradient(45deg, transparent 42%, var(--usk-native-choice-mark-color) 43% 58%, transparent 59%),
1222
+ linear-gradient(-45deg, transparent 42%, var(--usk-native-choice-mark-color) 43% 58%, transparent 59%);
1223
+ background-position: 24% 62%, 67% 42%;
1224
+ background-size: 42% 58%, 64% 58%;
1225
+ background-repeat: no-repeat;
1226
+ }
1227
+
1228
+ [data-ui="art-deco"][data-mode] :where(input[type="range"]) {
1229
+ display: block;
1230
+ block-size: 2rem;
1231
+ vertical-align: middle;
1232
+ }
1233
+
1234
+ /**
1235
+ * Includes the double keyline inside the documented thumb size so WebKit and
1236
+ * Gecko center the same faceted diamond on the calibrated range track.
1237
+ */
1238
+ [data-ui="art-deco"][data-mode] :where(input[type="range"])::-webkit-slider-thumb,
1239
+ [data-ui="art-deco"][data-mode] :where(input[type="range"])::-moz-range-thumb {
1240
+ box-sizing: border-box;
1241
+ clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
1242
+ }
1243
+
1244
+ [data-ui="art-deco"][data-mode] :where(input[type="range"])::-webkit-slider-thumb {
1245
+ margin-block-start: calc((var(--usk-native-range-track-size) - var(--usk-native-range-thumb-size)) / 2 - .1875rem);
1246
+ }
1247
+
1248
+ .deco-card-service > .deco-icon-medallion {
1249
+ background: var(--deco-jewel-primary);
1250
+ color: var(--deco-jewel-on);
1251
+ }
1252
+
1253
+ .deco-feature-item:nth-child(1) > .deco-icon-medallion {
1254
+ background: var(--deco-jewel-success);
1255
+ color: var(--deco-jewel-on);
1256
+ }
1257
+
1258
+ .deco-feature-item:nth-child(2) > .deco-icon-medallion {
1259
+ background: var(--deco-jewel-secondary);
1260
+ color: var(--deco-jewel-on);
1261
+ }
1262
+
1263
+ .deco-badge-seal {
1264
+ background: var(--deco-jewel-warning);
1265
+ color: var(--deco-jewel-on);
1266
+ }
1267
+
1268
+ /**
1269
+ * Keeps both seal label lines on the theme-checked warning foreground instead
1270
+ * of allowing generic strong and muted-copy rules to override the pairing.
1271
+ */
1272
+ .deco-badge-seal > :where(strong, small) { color: inherit; }
1273
+
1274
+ /**
1275
+ * Offers a visibly rounded utility without introducing the pill silhouette
1276
+ * reserved for badges and circular instrumentation.
1277
+ */
1278
+ .deco-rounded { border-radius: .625rem; }
1279
+
1280
+ .deco-icon-medallion,
1281
+ .deco-badge-seal {
1282
+ border-color: var(--deco-metal-bright);
1283
+ box-shadow: inset 0 0 0 1px var(--deco-surface-strong), 0 0 0 .2rem rgb(var(--deco-metal-rgb) / .22);
1284
+ }
1285
+ }
1286
+
1287
+ @layer ui-style-kit.art_deco {
1288
+ /**
1289
+ * Extends the stepped frame through form, feedback, progress, and dialog
1290
+ * primitives so classed and native controls share one coherent identity.
1291
+ */
1292
+ .deco-input,
1293
+ .deco-textarea,
1294
+ .deco-select {
1295
+ background-color: var(--deco-surface-strong);
1296
+ border: 3px double var(--deco-metal);
1297
+ border-radius: .1rem;
1298
+ box-shadow: inset 0 0 0 1px rgb(var(--deco-enamel-rgb) / .88);
1299
+ font-family: var(--deco-font-control);
1300
+ letter-spacing: .035em;
1301
+ }
1302
+
1303
+ /**
1304
+ * Aligns classed and native form controls to the document's dense desktop
1305
+ * rhythm while leaving semantic elements and keyboard focus behavior intact.
1306
+ */
1307
+ .deco-input,
1308
+ .deco-select {
1309
+ min-height: 2.125rem;
1310
+ padding: .35rem .7rem;
1311
+ font-size: .8125rem;
1312
+ font-weight: 500;
1313
+ }
1314
+
1315
+ .deco-textarea {
1316
+ min-height: 4.75rem;
1317
+ padding: .5rem .7rem;
1318
+ font-size: .8125rem;
1319
+ font-weight: 500;
1320
+ line-height: 1.35;
1321
+ }
1322
+
1323
+ .deco-check-control,
1324
+ .deco-radio-control {
1325
+ box-sizing: border-box;
1326
+ inline-size: 1rem;
1327
+ block-size: 1rem;
1328
+ }
1329
+
1330
+ [data-ui="art-deco"][data-mode] :where(
1331
+ input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
1332
+ select,
1333
+ textarea
1334
+ ) {
1335
+ font-size: .8125rem;
1336
+ font-weight: 500;
1337
+ }
1338
+
1339
+ .deco-select,
1340
+ [data-ui="art-deco"][data-mode] :where(select:not([multiple])) {
1341
+ -webkit-appearance: none;
1342
+ appearance: none;
1343
+ background-image: var(--usk-native-select-indicator-image);
1344
+ background-position: var(--usk-native-select-indicator-position);
1345
+ background-size: var(--usk-native-select-indicator-size);
1346
+ background-repeat: no-repeat;
1347
+ }
1348
+
1349
+ .deco-check-control,
1350
+ .deco-radio-control {
1351
+ background: var(--deco-surface-strong);
1352
+ border: 3px double var(--deco-metal);
1353
+ box-shadow: inset 0 0 0 1px rgb(var(--deco-enamel-rgb) / .86);
1354
+ }
1355
+
1356
+ .deco-check-control {
1357
+ position: relative;
1358
+ border-radius: .05rem;
1359
+ }
1360
+
1361
+ .deco-switch-track {
1362
+ box-sizing: border-box;
1363
+ inline-size: 2.5rem;
1364
+ block-size: 1.35rem;
1365
+ background: var(--deco-surface-soft);
1366
+ border: 3px double var(--deco-metal);
1367
+ border-radius: 0;
1368
+ clip-path: polygon(.45rem 0, calc(100% - .45rem) 0, 100% 50%, calc(100% - .45rem) 100%, .45rem 100%, 0 50%);
1369
+ box-shadow: inset 0 0 0 1px rgb(var(--deco-enamel-rgb) / .8);
1370
+ }
1371
+
1372
+ .deco-switch-thumb {
1373
+ box-sizing: border-box;
1374
+ inset-block-start: .16rem;
1375
+ inset-inline-start: .24rem;
1376
+ inline-size: .85rem;
1377
+ block-size: .85rem;
1378
+ background: var(--deco-text);
1379
+ border: 2px solid var(--deco-metal-bright);
1380
+ box-shadow: 0 0 0 1px var(--deco-surface-strong);
1381
+ }
1382
+
1383
+ .deco-switch input:checked + .deco-switch-track .deco-switch-thumb {
1384
+ inset-inline-start: calc(100% - .85rem - .24rem);
1385
+ }
1386
+
1387
+ .deco-check input:checked + .deco-check-control,
1388
+ .deco-radio input:checked + .deco-radio-control,
1389
+ .deco-switch input:checked + .deco-switch-track {
1390
+ background: var(--deco-jewel-primary);
1391
+ border-color: var(--deco-metal);
1392
+ }
1393
+
1394
+ .deco-check input:checked + .deco-check-control::after {
1395
+ content: "";
1396
+ position: absolute;
1397
+ inset-block-start: 50%;
1398
+ inset-inline-start: 50%;
1399
+ display: block;
1400
+ inline-size: .5rem;
1401
+ block-size: .3rem;
1402
+ border-block-end: 2px solid currentColor;
1403
+ border-inline-start: 2px solid currentColor;
1404
+ color: var(--deco-jewel-on);
1405
+ transform: translate(calc(-50% - 5px), calc(-62% - 5px)) rotate(-45deg);
1406
+ transform-origin: center;
1407
+ }
1408
+
1409
+ .deco-radio input:checked + .deco-radio-control::after {
1410
+ background: var(--deco-jewel-on);
1411
+ }
1412
+
1413
+ .deco-progress {
1414
+ block-size: .55rem;
1415
+ background: var(--deco-surface-soft);
1416
+ border: 3px double var(--deco-metal);
1417
+ border-radius: .1rem;
1418
+ box-shadow: inset 0 0 0 1px rgb(var(--deco-enamel-rgb) / .9);
1419
+ }
1420
+
1421
+ .deco-progress-bar {
1422
+ background: linear-gradient(90deg, var(--deco-jewel-success), var(--deco-secondary), var(--deco-jewel-primary));
1423
+ border-radius: 0;
1424
+ clip-path: polygon(0 0, calc(100% - .45rem) 0, 100% 50%, calc(100% - .45rem) 100%, 0 100%);
1425
+ }
1426
+
1427
+ .deco-alert {
1428
+ display: flex;
1429
+ flex-wrap: wrap;
1430
+ align-items: center;
1431
+ gap: .65rem;
1432
+ padding: .72rem .9rem;
1433
+ background: var(--deco-surface-strong);
1434
+ border: 3px double var(--deco-metal);
1435
+ border-radius: .1rem;
1436
+ box-shadow: inset 0 0 0 1px rgb(var(--deco-enamel-rgb) / .9);
1437
+ }
1438
+
1439
+ .deco-alert-success { border-inline-start-color: var(--deco-success); }
1440
+ .deco-alert-warning { border-inline-start-color: var(--deco-warning); }
1441
+ .deco-alert-danger { border-inline-start-color: var(--deco-danger); }
1442
+ .deco-alert-title { letter-spacing: .045em; text-transform: uppercase; }
1443
+
1444
+ [data-ui="art-deco"][data-mode] :where(fieldset) {
1445
+ background: var(--deco-surface);
1446
+ border: 3px double var(--deco-metal);
1447
+ border-radius: .125rem;
1448
+ box-shadow: inset 0 0 0 1px rgb(var(--deco-enamel-strong-rgb) / .92);
1449
+ }
1450
+
1451
+ [data-ui="art-deco"][data-mode] :where(dialog) {
1452
+ background: var(--deco-surface-strong);
1453
+ border-color: var(--deco-metal);
1454
+ clip-path: polygon(0 .7rem, .35rem .7rem, .35rem .35rem, .7rem .35rem, .7rem 0, calc(100% - .7rem) 0, calc(100% - .7rem) .35rem, calc(100% - .35rem) .35rem, calc(100% - .35rem) .7rem, 100% .7rem, 100% calc(100% - .7rem), calc(100% - .35rem) calc(100% - .7rem), calc(100% - .35rem) calc(100% - .35rem), calc(100% - .7rem) calc(100% - .35rem), calc(100% - .7rem) 100%, .7rem 100%, .7rem calc(100% - .35rem), .35rem calc(100% - .35rem), .35rem calc(100% - .7rem), 0 calc(100% - .7rem));
1455
+ }
1456
+
1457
+ .deco-card,
1458
+ .deco-panel,
1459
+ .deco-card-service,
1460
+ .deco-feature-strip,
1461
+ .deco-callout-bar,
1462
+ .deco-table-wrap,
1463
+ .deco-metric,
1464
+ [data-ui="art-deco"][data-mode] :where(article, aside, fieldset) {
1465
+ background-color: var(--deco-surface);
1466
+ background-image: none;
1467
+ }
1468
+
1469
+ .deco-card,
1470
+ .deco-panel { padding: 1.2rem; }
1471
+
1472
+ .deco-callout-bar > .deco-icon-medallion {
1473
+ background-color: var(--deco-jewel-primary);
1474
+ background-image: none;
1475
+ color: var(--deco-jewel-on);
1476
+ }
1477
+
1478
+ .deco-table th {
1479
+ background-color: var(--deco-surface-strong);
1480
+ background-image: none;
1481
+ color: var(--deco-text);
1482
+ }
1483
+
1484
+ .deco-button,
1485
+ .deco-icon-button {
1486
+ background-color: var(--deco-surface-strong);
1487
+ background-image: none;
1488
+ }
1489
+
1490
+ /**
1491
+ * Reproduces the document's long, low action silhouette without weakening
1492
+ * coarse-pointer target sizing, which is restored by the pointer media query.
1493
+ */
1494
+ .deco-button {
1495
+ min-inline-size: min(100%, 12rem);
1496
+ min-block-size: 2.125rem;
1497
+ min-height: 2.125rem;
1498
+ padding: .38rem .9rem;
1499
+ font-size: .75rem;
1500
+ font-weight: 500;
1501
+ line-height: 1;
1502
+ }
1503
+
1504
+ .deco-icon-button {
1505
+ display: inline-grid;
1506
+ place-items: center;
1507
+ inline-size: 2.25rem;
1508
+ min-inline-size: 2.25rem;
1509
+ min-block-size: 2.25rem;
1510
+ min-height: 2.25rem;
1511
+ padding: 0;
1512
+ font-size: 1rem;
1513
+ font-weight: 600;
1514
+ line-height: 1;
1515
+ text-align: center;
1516
+ text-indent: 0;
1517
+ }
1518
+
1519
+ .deco-button:not(.deco-button-primary):not(.deco-button-secondary):not(.deco-button-danger):not(.deco-button-warning):not(.deco-button-ghost),
1520
+ .deco-icon-button {
1521
+ background-color: var(--deco-surface-strong);
1522
+ background-image: none;
1523
+ }
1524
+
1525
+ .deco-button-primary {
1526
+ background-color: var(--deco-jewel-primary);
1527
+ background-image: none;
1528
+ color: var(--deco-jewel-on);
1529
+ }
1530
+
1531
+ .deco-button-secondary {
1532
+ background-color: var(--deco-jewel-secondary);
1533
+ background-image: none;
1534
+ color: var(--deco-jewel-on);
1535
+ }
1536
+
1537
+ .deco-button-danger {
1538
+ background-color: var(--deco-jewel-danger);
1539
+ background-image: none;
1540
+ color: var(--deco-jewel-on);
1541
+ }
1542
+
1543
+ .deco-button-ghost {
1544
+ background-color: transparent;
1545
+ background-image: none;
1546
+ color: var(--deco-text);
1547
+ border-color: var(--deco-metal);
1548
+ }
1549
+
1550
+ .deco-button-primary:hover { background-color: var(--deco-jewel-primary); filter: brightness(1.08); }
1551
+ .deco-button-secondary:hover { background-color: var(--deco-jewel-secondary); filter: brightness(1.08); }
1552
+ .deco-button-danger:hover { filter: brightness(1.08); }
1553
+
1554
+ .deco-button.deco-button-cut,
1555
+ .deco-button-cut,
1556
+ .deco-button.deco-button-outline-heavy,
1557
+ .deco-button-outline-heavy {
1558
+ clip-path: polygon(
1559
+ 0 .65rem,
1560
+ .28rem .65rem,
1561
+ .28rem .3rem,
1562
+ .62rem .3rem,
1563
+ .62rem 0,
1564
+ calc(100% - .62rem) 0,
1565
+ calc(100% - .62rem) .3rem,
1566
+ calc(100% - .28rem) .3rem,
1567
+ calc(100% - .28rem) .65rem,
1568
+ 100% .65rem,
1569
+ 100% calc(100% - .65rem),
1570
+ calc(100% - .28rem) calc(100% - .65rem),
1571
+ calc(100% - .28rem) calc(100% - .3rem),
1572
+ calc(100% - .62rem) calc(100% - .3rem),
1573
+ calc(100% - .62rem) 100%,
1574
+ .62rem 100%,
1575
+ .62rem calc(100% - .3rem),
1576
+ .28rem calc(100% - .3rem),
1577
+ .28rem calc(100% - .65rem),
1578
+ 0 calc(100% - .65rem)
1579
+ );
1580
+ }
1581
+
1582
+ .deco-button.deco-button-outline-heavy,
1583
+ .deco-button-outline-heavy {
1584
+ background-color: transparent;
1585
+ background-image: none;
1586
+ color: var(--deco-text);
1587
+ border-color: var(--deco-metal);
1588
+ border-style: double;
1589
+ }
1590
+
1591
+ .deco-button[aria-busy="true"]::after,
1592
+ .deco-icon-button[aria-busy="true"]::after,
1593
+ [data-ui="art-deco"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after {
1594
+ background: var(--deco-spinner-segmented-background);
1595
+ border: .1em double var(--deco-metal-bright);
1596
+ border-radius: 50%;
1597
+ box-shadow: inset 0 0 0 .18em var(--deco-surface-strong);
1598
+ clip-path: none;
1599
+ }
1600
+
1601
+ /* Preserve the stepped button geometry after busy-indicator pseudo-elements. */
1602
+ .deco-button { border-radius: .08rem; }
1603
+
1604
+ .deco-alert {
1605
+ gap: .4rem;
1606
+ padding: .3rem .65rem;
1607
+ }
1608
+
1609
+ .deco-alert-title,
1610
+ .deco-alert-body {
1611
+ font-size: .76rem;
1612
+ line-height: 1.25;
1613
+ }
1614
+
1615
+ /**
1616
+ * Matches the reference's low status chips, message strips, and ledger rows
1617
+ * while preserving semantic text and border roles.
1618
+ */
1619
+ .deco-badge {
1620
+ min-height: 1.35rem;
1621
+ padding: .1rem .5rem;
1622
+ font-size: .6875rem;
1623
+ font-weight: 500;
1624
+ line-height: 1;
1625
+ }
1626
+
1627
+ .deco-badge-primary,
1628
+ .deco-nav-link[aria-current="page"],
1629
+ .deco-nav-link.is-active {
1630
+ background: var(--deco-jewel-primary);
1631
+ color: var(--deco-jewel-on);
1632
+ border-color: var(--deco-metal);
1633
+ }
1634
+
1635
+ .deco-badge-secondary {
1636
+ background: var(--deco-jewel-secondary);
1637
+ color: var(--deco-jewel-on);
1638
+ border-color: var(--deco-metal);
1639
+ }
1640
+
1641
+ .deco-badge-success {
1642
+ background: var(--deco-jewel-success);
1643
+ color: var(--deco-jewel-on);
1644
+ border-color: var(--deco-metal);
1645
+ }
1646
+
1647
+ .deco-badge-warning {
1648
+ background: var(--deco-jewel-warning);
1649
+ color: var(--deco-jewel-on);
1650
+ border-color: var(--deco-metal);
1651
+ }
1652
+
1653
+ .deco-badge-danger {
1654
+ background: var(--deco-jewel-danger);
1655
+ color: var(--deco-jewel-on);
1656
+ border-color: var(--deco-metal);
1657
+ }
1658
+
1659
+ .deco-table th,
1660
+ .deco-table td {
1661
+ padding: .37rem .65rem;
1662
+ font-size: .75rem;
1663
+ line-height: 1.27;
1664
+ }
1665
+
1666
+ .deco-table th { font-weight: 600; }
1667
+
1668
+ [data-ui="art-deco"][data-mode] .deco-table { margin: 0; }
1669
+
1670
+ [data-ui="art-deco"][data-mode] .deco-table caption {
1671
+ padding: .45rem .65rem;
1672
+ font-size: .7rem;
1673
+ line-height: 1.2;
1674
+ }
1675
+
1676
+ /**
1677
+ * Keeps status medallions subordinate to the data they annotate and aligns
1678
+ * native instrument tracks with the slim framed component progress bars.
1679
+ */
1680
+ [data-ui="art-deco"][data-mode] :where(progress, meter) {
1681
+ block-size: var(--usk-native-progress-size);
1682
+ min-height: var(--usk-native-progress-size);
1683
+ }
1684
+
1685
+ .deco-feature-item > .deco-icon-medallion {
1686
+ inline-size: 2.5rem;
1687
+ block-size: 2.5rem;
1688
+ padding: .35rem;
1689
+ font-size: .95rem;
1690
+ }
1691
+
1692
+ .deco-card-service > .deco-icon-medallion {
1693
+ inline-size: 3.25rem;
1694
+ block-size: 3.25rem;
1695
+ padding: .45rem;
1696
+ }
1697
+
1698
+ .deco-badge-seal {
1699
+ inline-size: 3.5rem;
1700
+ min-inline-size: 3.5rem;
1701
+ block-size: 3.5rem;
1702
+ padding: .35rem;
1703
+ font-size: .65rem;
1704
+ }
1705
+
1706
+ .deco-callout-bar > .deco-icon-medallion {
1707
+ inline-size: 2.75rem;
1708
+ min-inline-size: 2.75rem;
1709
+ block-size: 2.75rem;
1710
+ min-block-size: 2.75rem;
1711
+ padding: .4rem;
1712
+ font-size: 1rem;
1713
+ }
1714
+
1715
+ /**
1716
+ * Restores accessible touch-target dimensions on coarse pointers without
1717
+ * forcing the oversized mobile geometry onto mouse and keyboard layouts.
1718
+ */
1719
+ @media (pointer: coarse) {
1720
+ [data-ui="art-deco"][data-mode] {
1721
+ --usk-native-control-min-block-size: 2.75rem;
1722
+ --usk-native-choice-size: 1.5rem;
1723
+ }
1724
+
1725
+ .deco-button,
1726
+ .deco-icon-button,
1727
+ .deco-input,
1728
+ .deco-select {
1729
+ min-block-size: 2.75rem;
1730
+ }
1731
+
1732
+ .deco-check-control,
1733
+ .deco-radio-control {
1734
+ inline-size: 1.5rem;
1735
+ block-size: 1.5rem;
1736
+ }
1737
+ }
1738
+ }
1739
+
1740
+ @layer ui-style-kit.art_deco {
1741
+ /**
1742
+ * Implements the retained 17-group element system. Reference defaults remain
1743
+ * separate from semantic aliases so changing a host palette never loses state.
1744
+ */
1745
+ [data-ui="art-deco"][data-mode="light"] {
1746
+ --deco-fallback-bg-rgb: 246 242 231;
1747
+ --deco-fallback-surface-rgb: 255 250 240;
1748
+ --deco-fallback-surface-strong-rgb: 255 250 240;
1749
+ --deco-fallback-surface-soft-rgb: 238 230 216;
1750
+ --deco-fallback-text-rgb: 10 26 31;
1751
+ --deco-fallback-text-muted-rgb: 92 92 86;
1752
+ --deco-fallback-primary-rgb: 13 35 61;
1753
+ --deco-fallback-primary-hover-rgb: 20 48 78;
1754
+ --deco-fallback-primary-text-rgb: 246 242 231;
1755
+ --deco-fallback-secondary-rgb: 15 101 88;
1756
+ --deco-fallback-secondary-hover-rgb: 12 77 71;
1757
+ --deco-fallback-secondary-text-rgb: 255 255 255;
1758
+ --deco-fallback-accent-rgb: 184 135 47;
1759
+ --deco-fallback-accent-text-rgb: 10 26 31;
1760
+ --deco-fallback-success-rgb: 15 101 88;
1761
+ --deco-fallback-success-text-rgb: 255 255 255;
1762
+ --deco-fallback-warning-rgb: 212 175 55;
1763
+ --deco-fallback-warning-text-rgb: 10 26 31;
1764
+ --deco-fallback-danger-rgb: 139 50 58;
1765
+ --deco-fallback-danger-text-rgb: 255 255 255;
1766
+ --deco-fallback-link-rgb: 15 101 88;
1767
+ --deco-fallback-focus-rgb: 15 101 88;
1768
+ --deco-reference-metal-rgb: 184 135 47;
1769
+ --deco-status-success: rgb(var(--usk-success-rgb, 15 101 88));
1770
+ --deco-status-warning: rgb(var(--usk-warning-strong-rgb, 133 79 14));
1771
+ --deco-status-danger: rgb(var(--usk-danger-rgb, 139 50 58));
1772
+ --deco-info-rgb: var(--usk-info-rgb, 36 89 120);
1773
+ }
1774
+ [data-ui="art-deco"][data-mode="dark"] {
1775
+ --deco-fallback-bg-rgb: 10 26 31;
1776
+ --deco-fallback-surface-rgb: 10 26 31;
1777
+ --deco-fallback-surface-strong-rgb: 13 32 38;
1778
+ --deco-fallback-surface-soft-rgb: 21 37 42;
1779
+ --deco-fallback-text-rgb: 246 242 231;
1780
+ --deco-fallback-text-muted-rgb: 169 163 151;
1781
+ --deco-fallback-primary-rgb: 8 26 47;
1782
+ --deco-fallback-primary-hover-rgb: 18 43 66;
1783
+ --deco-fallback-primary-text-rgb: 246 242 231;
1784
+ --deco-fallback-secondary-rgb: 20 118 107;
1785
+ --deco-fallback-secondary-hover-rgb: 15 79 75;
1786
+ --deco-fallback-secondary-text-rgb: 255 255 255;
1787
+ --deco-fallback-accent-rgb: 200 150 56;
1788
+ --deco-fallback-accent-text-rgb: 10 26 31;
1789
+ --deco-fallback-success-rgb: 20 118 107;
1790
+ --deco-fallback-success-text-rgb: 255 255 255;
1791
+ --deco-fallback-warning-rgb: 224 185 76;
1792
+ --deco-fallback-warning-text-rgb: 10 26 31;
1793
+ --deco-fallback-danger-rgb: 156 52 59;
1794
+ --deco-fallback-danger-text-rgb: 255 255 255;
1795
+ --deco-fallback-link-rgb: 110 210 188;
1796
+ --deco-fallback-focus-rgb: 224 185 76;
1797
+ --deco-reference-metal-rgb: 200 150 56;
1798
+ --deco-status-success: rgb(var(--usk-success-rgb, 110 210 188));
1799
+ --deco-status-warning: rgb(var(--usk-warning-rgb, 224 185 76));
1800
+ --deco-status-danger: rgb(var(--usk-danger-rgb, 255 145 154));
1801
+ --deco-info-rgb: var(--usk-info-rgb, 60 119 146);
1802
+ }
1803
+ [data-ui="art-deco"][data-mode="contrast"] {
1804
+ --deco-reference-metal-rgb: 255 255 255;
1805
+ --deco-status-success: var(--deco-text);
1806
+ --deco-status-warning: var(--deco-text);
1807
+ --deco-status-danger: var(--deco-text);
1808
+ --deco-info-rgb: var(--usk-primary-rgb, 0 80 150);
1809
+ }
1810
+ [data-ui="art-deco"][data-mode] {
1811
+ --deco-bg: rgb(var(--deco-bg-rgb));
1812
+ --deco-surface: rgb(var(--deco-surface-rgb));
1813
+ --deco-surface-strong: rgb(var(--deco-surface-strong-rgb));
1814
+ --deco-surface-soft: rgb(var(--deco-surface-soft-rgb));
1815
+ --deco-metal-rgb: var(--usk-accent-rgb, var(--deco-reference-metal-rgb));
1816
+ --deco-metal: rgb(var(--deco-metal-rgb));
1817
+ --deco-metal-bright: var(--deco-warning);
1818
+ --deco-border: var(--deco-metal);
1819
+ --deco-card-bg: var(--deco-surface);
1820
+ --deco-control-bg: var(--deco-surface);
1821
+ --deco-theme-bg: var(--deco-bg);
1822
+ --deco-font-display: "DejaVu Serif Condensed", "Bodoni MT", Didot, Georgia, serif;
1823
+ --deco-font-control: "Liberation Sans Narrow", "Arial Narrow", Arial, sans-serif;
1824
+ --deco-font-body: var(--deco-font-control);
1825
+ --deco-info: rgb(var(--deco-info-rgb));
1826
+ --deco-on-info: rgb(var(--usk-info-text-rgb, 255 255 255));
1827
+ --deco-step-sm: polygon(7px 0, calc(100% - 7px) 0, calc(100% - 7px) 3px, 100% 3px, 100% calc(100% - 3px), calc(100% - 7px) calc(100% - 3px), calc(100% - 7px) 100%, 7px 100%, 7px calc(100% - 3px), 0 calc(100% - 3px), 0 3px, 7px 3px);
1828
+ --deco-step-lg: polygon(13px 0, calc(100% - 13px) 0, calc(100% - 13px) 5px, calc(100% - 5px) 5px, calc(100% - 5px) 13px, 100% 13px, 100% calc(100% - 13px), calc(100% - 5px) calc(100% - 13px), calc(100% - 5px) calc(100% - 5px), calc(100% - 13px) calc(100% - 5px), calc(100% - 13px) 100%, 13px 100%, 13px calc(100% - 5px), 5px calc(100% - 5px), 5px calc(100% - 13px), 0 calc(100% - 13px), 0 13px, 5px 13px, 5px 5px, 13px 5px);
1829
+ --usk-native-choice-checked-background: var(--deco-secondary);
1830
+ --usk-native-choice-mark-color: var(--deco-on-secondary);
1831
+ --usk-native-range-progress-background: var(--deco-secondary);
1832
+ --usk-native-range-thumb-background: var(--deco-secondary);
1833
+ --usk-native-progress-value-background: var(--deco-secondary);
1834
+ }
1835
+ /** Decorative layers retain stepped borders without clipping focus or content. */
1836
+ .deco-sheet { position: relative; isolation: isolate; padding: 28px 32px; color: var(--deco-text); background: var(--deco-bg); border: 4px double var(--deco-metal); box-shadow: inset 0 0 0 4px var(--deco-bg), inset 0 0 0 5px var(--deco-metal); }
1837
+ .deco-sheet::before { content: ""; position: absolute; inset: 12px; pointer-events: none; z-index: -1; background: linear-gradient(rgb(var(--deco-metal-rgb) / .035) 1px, transparent 1px), linear-gradient(90deg, rgb(var(--deco-metal-rgb) / .035) 1px, transparent 1px); background-size: 80px 80px; }
1838
+ .deco-fan { display: block; width: 76px; height: 36px; background: repeating-conic-gradient(from 90deg at 0 0, var(--deco-metal) 0deg 1deg, transparent 1deg 10deg); clip-path: polygon(0 0, 100% 0, 0 100%); }
1839
+ /** Native element selectors must not replace display faces or compact controls. */
1840
+ [data-ui="art-deco"][data-mode] :is(.deco-masthead-title, .deco-dialog h3, .deco-dialog h4) { font-family: var(--deco-font-display); font-weight: 400; }
1841
+ [data-ui="art-deco"][data-mode] :is(.deco-section-title, .deco-label, .deco-stat-label, .deco-meta) { font-family: Arial, sans-serif; }
1842
+ [data-ui="art-deco"][data-mode] :is(.deco-option, .deco-tab, .deco-segment, .deco-chip button, .deco-alert-close, .deco-pagination button, .deco-stepper button) { min-inline-size: 0; box-shadow: none; border-radius: 0; font-weight: 400; line-height: 1.3; }
1843
+ [data-ui="art-deco"][data-mode] :is(.deco-chip button, .deco-alert-close) { padding: 0; min-height: 28px; min-block-size: 28px; border: 0; background: transparent; }
1844
+ [data-ui="art-deco"][data-mode] :is(.deco-tab, .deco-segment, .deco-option, .deco-pagination button, .deco-stepper button) { padding: 6px; }
1845
+ [data-ui="art-deco"][data-mode] :is(.deco-check, .deco-radio, .deco-switch) { display: flex; font-weight: 400; }
1846
+ .deco-progress-bar { display: block; background: linear-gradient(90deg, var(--deco-jewel-success), var(--deco-secondary), var(--deco-jewel-primary)); clip-path: none; border-radius: 0; }
1847
+ .deco-progress { height: 10px; block-size: 10px; border: 3px double var(--deco-metal); border-radius: .1rem; box-shadow: inset 0 0 0 1px rgb(var(--deco-enamel-rgb) / .9); padding: 0; }
1848
+ [data-ui="art-deco"][data-mode] .deco-empty-state { display: block; min-height: 0; min-block-size: 0; text-align: start; }
1849
+ .deco-check input:checked + .deco-check-control, .deco-radio input:checked + .deco-radio-control { box-shadow: none; }
1850
+ .deco-frame, .deco-dialog { position: relative; padding: 16px 20px; border: 0; background: var(--deco-surface); color: var(--deco-text); isolation: isolate; clip-path: var(--deco-step-lg); }
1851
+ .deco-frame::before, .deco-dialog::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: var(--deco-metal); clip-path: var(--deco-step-lg); }
1852
+ .deco-frame::after, .deco-dialog::after { content: ""; position: absolute; inset: 3px; z-index: -1; pointer-events: none; background: var(--deco-surface); border: 1px solid var(--deco-metal); clip-path: var(--deco-step-lg); }
1853
+ .deco-frame-navy, .deco-frame-navy::after { background: var(--deco-primary); color: var(--deco-on-primary); }
1854
+ [data-ui="art-deco"][data-mode] .deco-frame-navy .deco-section-title { color: var(--deco-on-primary); }
1855
+ .deco-masthead { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 20px; text-align: center; padding: 0 24px 20px; }
1856
+ .deco-masthead::before, .deco-masthead::after { content: ""; height: 1px; background: var(--deco-metal); }
1857
+ .deco-masthead-title { margin: 0; color: var(--deco-text); font: 400 48px/1.05 var(--deco-font-display); text-transform: uppercase; text-shadow: none; letter-spacing: 0; }
1858
+ .deco-monogram { display: block; position: relative; width: 40px; height: 40px; margin: 16px; border: 1px solid var(--deco-metal); transform: rotate(45deg); }
1859
+ .deco-monogram::before { content: ""; position: absolute; inset: -8px 10px; border: 1px solid var(--deco-metal); transform: rotate(-45deg); }
1860
+ .deco-stat { text-align: center; border-inline-start: 1px solid var(--deco-metal); padding: 4px 12px; }
1861
+ .deco-stat-value { display: block; font: 28px/1.2 var(--deco-font-display); }
1862
+ .deco-stat-label { display: block; margin-top: 8px; font-size: 11px; text-transform: uppercase; }
1863
+ .deco-health { width: 150px; height: 82px; position: relative; display: grid; align-content: end; justify-items: center; font: 26px var(--deco-font-display); }
1864
+ .deco-health::before { content: ""; position: absolute; inset: 0; border-radius: 100px 100px 0 0; border: 1px solid var(--deco-metal); background: conic-gradient(from 270deg at 50% 100%, var(--deco-secondary) 0deg calc(var(--deco-value, 72) * 1.8deg), var(--deco-metal) 0deg 180deg, transparent 0); -webkit-mask: radial-gradient(ellipse at bottom, transparent 60%, #000 62%); mask: radial-gradient(ellipse at bottom, transparent 60%, #000 62%); }
1865
+ .deco-health small { font: 10px var(--deco-font-control); text-transform: uppercase; }
1866
+ .deco-meta-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 4px; }
1867
+ .deco-meta { display: grid; align-content: center; justify-items: center; gap: 12px; padding: 12px; text-align: center; border-inline-end: 1px solid var(--deco-metal); font-size: 12px; }
1868
+ .deco-meta:last-child { border: 0; }
1869
+ .deco-status-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--deco-secondary); border: 1px solid var(--deco-metal); margin-inline-end: 6px; }
1870
+ .deco-performance { display: flex; align-items: end; height: 32px; gap: 4px; }
1871
+ .deco-performance i { display: block; width: 10px; height: var(--deco-bar, 10px); background: var(--deco-secondary); border: 1px solid var(--deco-metal); }
1872
+ .deco-performance i:nth-last-child(-n+2) { background: var(--deco-warning); }
1873
+ .deco-section-title { display: flex; align-items: center; gap: 12px; margin: 0 0 16px; font: 700 13px/1.3 var(--deco-font-control); text-transform: uppercase; letter-spacing: 0; }
1874
+ .deco-section-title::after { content: ""; flex: 1; height: 1px; min-width: 12px; background: var(--deco-metal); }
1875
+ .deco-number { font: 11px var(--deco-font-mono); color: var(--deco-text-muted); }
1876
+ .deco-label, .deco-kicker { font-family: var(--deco-font-control); font-size: 11px; font-weight: 600; letter-spacing: 0; text-transform: uppercase; }
1877
+ .deco-button, .deco-icon-button { position: relative; isolation: isolate; min-height: 36px; min-block-size: 36px; min-inline-size: 0; padding: 8px 14px; border: 0; border-radius: 0; clip-path: none; background: var(--deco-surface); color: var(--deco-text); box-shadow: none; font: 500 12px/1.2 var(--deco-font-control); letter-spacing: 0; text-transform: uppercase; gap: 8px; }
1878
+ .deco-button::before, .deco-icon-button::before { content: ""; position: absolute; inset: 0; z-index: 0; background: var(--deco-metal); border: 0; pointer-events: none; clip-path: polygon(evenodd, 7px 0, calc(100% - 7px) 0, calc(100% - 7px) 3px, 100% 3px, 100% calc(100% - 3px), calc(100% - 7px) calc(100% - 3px), calc(100% - 7px) 100%, 7px 100%, 7px calc(100% - 3px), 0 calc(100% - 3px), 0 3px, 7px 3px, 7px 0, 8px 1px, 8px 4px, 1px 4px, 1px calc(100% - 4px), 8px calc(100% - 4px), 8px calc(100% - 1px), calc(100% - 8px) calc(100% - 1px), calc(100% - 8px) calc(100% - 4px), calc(100% - 1px) calc(100% - 4px), calc(100% - 1px) 4px, calc(100% - 8px) 4px, calc(100% - 8px) 1px, 8px 1px, 7px 0); }
1879
+ .deco-button, .deco-icon-button { background-color: transparent; clip-path: var(--deco-step-sm); }
1880
+ .deco-button { min-inline-size: 12rem; }
1881
+ .deco-button:focus-visible, .deco-icon-button:focus-visible { outline-offset: -6px; }
1882
+ .deco-button-primary { background-color: var(--deco-jewel-primary); color: var(--deco-jewel-on); }
1883
+ .deco-button-secondary { background-color: var(--deco-jewel-secondary); color: var(--deco-jewel-on); }
1884
+ .deco-button-danger { background-color: var(--deco-jewel-danger); color: var(--deco-jewel-on); }
1885
+ [data-ui="art-deco"][data-mode] :is(.deco-button, .deco-icon-button)[aria-busy="true"] { opacity: 1; filter: none; cursor: progress; }
1886
+ .deco-button-primary:hover { background-color: var(--deco-jewel-primary); }
1887
+ .deco-button-secondary:hover { background-color: var(--deco-jewel-secondary); }
1888
+ .deco-button:is(.is-pressed, :active) { transform: translateY(2px); }
1889
+ .deco-button:disabled, .deco-icon-button:disabled { color: var(--deco-text-muted); background: var(--deco-surface-soft); opacity: .55; filter: grayscale(1); cursor: not-allowed; }
1890
+ .deco-icon-button { width: 36px; min-width: 36px; padding: 0; font-family: "Segoe UI Symbol", Arial, sans-serif; font-size: 16px; line-height: 1; }
1891
+ .deco-button-loading { display: inline-flex; align-items: center; justify-content: center; min-inline-size: 152px; }
1892
+ .deco-button[aria-busy="true"]::after, .deco-icon-button[aria-busy="true"]::after,
1893
+ [data-ui="art-deco"] :where(button[aria-busy="true"])::after { content: ""; position: static; display: inline-block; box-sizing: border-box; flex: 0 0 16px; width: 16px; height: 16px; margin: 0; background: var(--deco-spinner-segmented-background); border: 3px double var(--deco-metal); box-shadow: none; border-radius: 50%; -webkit-mask: none; mask: none; animation: deco-spin 1.4s linear infinite; }
1894
+ /** One loader silhouette across prefixed, native, and generated semantic surfaces. */
1895
+ .deco-spinner, .deco-loading-spinner, [data-ui="art-deco"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) { position: relative; display: inline-block; width: 48px; height: 48px; flex: 0 0 48px; border: 3px double var(--deco-metal); border-radius: 50%; background: var(--deco-spinner-segmented-background); box-shadow: none; clip-path: none; animation: deco-spin 1.4s linear infinite; }
1896
+ .deco-spinner::before, .deco-loading-spinner::before, [data-ui="art-deco"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner])::before { content: ""; position: absolute; inset: 0; border-radius: 50%; background: repeating-conic-gradient(var(--deco-metal) 0deg 22deg, transparent 22deg 36deg); -webkit-mask: radial-gradient(transparent 49%, #000 51%); mask: radial-gradient(transparent 49%, #000 51%); }
1897
+ .deco-spinner::after, .deco-loading-spinner::after, [data-ui="art-deco"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner])::after { content: ""; position: absolute; inset: 35%; background: var(--deco-warning); border: 1px solid var(--deco-secondary); transform: rotate(45deg); }
1898
+ .deco-spinner-sm { width: 28px; height: 28px; flex-basis: 28px; }
1899
+ .deco-spinner-lg { width: 64px; height: 64px; flex-basis: 64px; }
1900
+ .deco-input, .deco-select, .deco-textarea { border: 3px double var(--deco-metal); border-radius: .1rem; box-shadow: inset 0 0 0 1px rgb(var(--deco-enamel-rgb) / .88); padding: 5px 10px; min-height: 32px; color: var(--deco-text); background-color: var(--deco-surface); letter-spacing: 0; font-size: 12px; }
1901
+ .deco-textarea { min-height: 88px; }
1902
+ .deco-input-valid { border-inline-start: 3px double var(--deco-success); }
1903
+ .deco-input[aria-invalid="true"] { border-color: var(--deco-status-danger); border-inline-start-style: double; border-inline-start-width: 3px; box-shadow: none; }
1904
+ .deco-help-error { color: var(--deco-status-danger); font-size: 11px; }
1905
+ .deco-file-upload { position: relative; display: grid; align-content: center; justify-items: center; gap: 8px; padding: 16px; min-height: 92px; border: 1px solid var(--deco-metal); color: var(--deco-text); background: var(--deco-surface); cursor: pointer; text-align: center; font-size: 12px; }
1906
+ .deco-file { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
1907
+ .deco-file-upload:focus-within { outline: 2px solid var(--deco-focus); outline-offset: 3px; }
1908
+ .deco-select-panel { padding: 4px 0; border: 1px solid var(--deco-metal); background: var(--deco-surface); }
1909
+ .deco-option { display: flex; justify-content: space-between; gap: 8px; width: 100%; min-height: 32px; padding: 6px 12px; border: 0; background: transparent; color: var(--deco-text); font-size: 12px; text-align: start; cursor: pointer; }
1910
+ .deco-option[aria-selected="true"] { background: var(--deco-secondary); color: var(--deco-on-secondary); }
1911
+ .deco-group-label { display: block; padding: 8px 12px; font-size: 11px; font-weight: 600; text-transform: uppercase; color: var(--deco-text-muted); }
1912
+ .deco-multi { display: flex; flex-wrap: wrap; gap: 4px; min-height: 60px; padding: 8px; border: 1px solid var(--deco-metal); background: var(--deco-surface); }
1913
+ .deco-chip { display: inline-flex; align-items: center; gap: 4px; padding: 0 8px; background: var(--deco-secondary); color: var(--deco-on-secondary); border: 1px solid var(--deco-metal); font-size: 11px; }
1914
+ .deco-chip button { padding: 4px; width: 28px; height: 28px; color: inherit; background: transparent; border: 0; cursor: pointer; }
1915
+ .deco-check, .deco-radio { min-height: 32px; font-size: 12px; gap: 8px; }
1916
+ .deco-check input:checked + .deco-check-control, .deco-radio input:checked + .deco-radio-control, .deco-switch input:checked + .deco-switch-track { background: var(--deco-secondary); }
1917
+ .deco-check input:checked + .deco-check-control::after { color: var(--deco-on-secondary); }
1918
+ /** Keeps prefixed checkbox rasterization centered without generating semantic aliases. */
1919
+ :is([class="deco-check"], [class^="deco-check "], [class*=" deco-check "], [class$=" deco-check"]) input:checked + :is([class="deco-check-control"], [class^="deco-check-control "], [class*=" deco-check-control "], [class$=" deco-check-control"])::after { transform: translate(calc(-50% - 5px), calc(-62% + 4px)) rotate(-45deg); }
1920
+
1921
+ /**
1922
+ * Aligns the stroked checkbox mark with Firefox and WebKit rasterization while
1923
+ * preserving Chromium's established pixel center.
1924
+ */
1925
+ @supports (-moz-appearance: none) {
1926
+ :is([class="deco-check"], [class^="deco-check "], [class*=" deco-check "], [class$=" deco-check"]) input:checked + :is([class="deco-check-control"], [class^="deco-check-control "], [class*=" deco-check-control "], [class$=" deco-check-control"])::after {
1927
+ transform: translate(calc(-50% - 5px), calc(-62% - 5px)) rotate(-45deg);
1928
+ }
1929
+ }
1930
+
1931
+ @supports (-webkit-hyphens: none) {
1932
+ .deco-check input:checked + .deco-check-control::after {
1933
+ transform: translate(calc(-50% - 5px), calc(-62% + 3px)) rotate(-45deg);
1934
+ }
1935
+ }
1936
+ .deco-radio input:checked + .deco-radio-control::after { background: var(--deco-on-secondary); }
1937
+ .deco-switch { min-height: 32px; }
1938
+ .deco-switch-track { width: 40px; height: 22px; inline-size: 40px; block-size: 22px; border-width: 3px; }
1939
+ .deco-switch-thumb { width: 16px; height: 16px; inline-size: 16px; block-size: 16px; inset-block-start: 3px; background: var(--deco-warning); border: 1px solid var(--deco-metal); }
1940
+ .deco-switch input:checked + .deco-switch-track .deco-switch-thumb { inset-inline-start: calc(100% - 21px); }
1941
+ .deco-check:has(input:disabled), .deco-radio:has(input:disabled), .deco-switch:has(input:disabled) { opacity: .72; }
1942
+ .deco-check:focus-within, .deco-radio:focus-within, .deco-switch:focus-within { outline: 2px solid var(--deco-focus); outline-offset: 2px; }
1943
+ .deco-breadcrumb { display: flex; flex-wrap: wrap; gap: 8px; font-size: 12px; margin-block: 12px; }
1944
+ .deco-breadcrumb a { color: var(--deco-link); }
1945
+ .deco-pagination { display: flex; gap: 4px; margin-block: 12px; }
1946
+ .deco-pagination button { width: 32px; min-height: 32px; background: var(--deco-surface); color: var(--deco-text); border: 1px solid var(--deco-metal); cursor: pointer; }
1947
+ .deco-pagination [aria-current="page"] { background: var(--deco-secondary); color: var(--deco-on-secondary); }
1948
+ .deco-slider-wrap { position: relative; padding-top: 28px; }
1949
+ .deco-slider-wrap::before { content: ""; position: absolute; inset: auto 0 6px; height: 20px; pointer-events: none; background: repeating-linear-gradient(90deg, var(--deco-metal) 0 1px, transparent 1px 25%); border-inline-end: 1px solid var(--deco-metal); }
1950
+ .deco-slider-output { position: absolute; top: 0; left: clamp(22px, calc(var(--deco-value, 68) * 1%), calc(100% - 22px)); transform: translateX(-50%); width: 44px; padding: 5px; text-align: center; font: 11px var(--deco-font-mono); color: var(--deco-on-primary); background: var(--deco-primary); border: 1px solid var(--deco-metal); clip-path: var(--deco-step-sm); }
1951
+ [data-ui="art-deco"][data-mode] .deco-slider { appearance: none; width: 100%; height: 32px; margin: 0; padding: 0; background: transparent; border: 0; box-shadow: none; }
1952
+ .deco-slider::-webkit-slider-runnable-track { height: 6px; background: linear-gradient(90deg, var(--deco-secondary) calc(var(--deco-value, 68) * 1%), var(--deco-metal) 0); border: 0; }
1953
+ [data-ui="art-deco"][data-mode] .deco-slider::-webkit-slider-thumb { appearance: none; width: 18px; height: 18px; margin-top: -6px; border: 2px solid var(--deco-metal); border-radius: 0; clip-path: none; transform: rotate(45deg); background: var(--deco-secondary); }
1954
+ .deco-slider::-moz-range-track { height: 6px; background: var(--deco-metal); border: 0; }
1955
+ .deco-slider::-moz-range-progress { height: 6px; background: var(--deco-secondary); }
1956
+ [data-ui="art-deco"][data-mode] .deco-slider::-moz-range-thumb { width: 14px; height: 14px; border: 2px solid var(--deco-metal); border-radius: 0; clip-path: none; transform: rotate(45deg); background: var(--deco-secondary); }
1957
+ .deco-meter { position: relative; height: 16px; border: 1px solid var(--deco-metal); padding: 3px; background: var(--deco-surface); }
1958
+ .deco-meter::before { content: ""; display: block; height: 100%; background: linear-gradient(90deg, var(--deco-success) 0 42%, var(--deco-warning) 42% 70%, var(--deco-danger) 70%); }
1959
+ .deco-meter::after { content: ""; position: absolute; top: 0; left: clamp(0px, calc(var(--deco-value, 55) * 1%), calc(100% - 14px)); width: 14px; height: 14px; transform: rotate(45deg); border: 2px solid var(--deco-metal); background: var(--deco-secondary); }
1960
+ .deco-step-progress { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 4px; }
1961
+ .deco-step-progress i { display: block; height: 12px; background: var(--deco-surface-soft); border: 1px solid var(--deco-metal); clip-path: var(--deco-step-sm); }
1962
+ .deco-step-progress .is-done { background: var(--deco-secondary); }
1963
+ .deco-stage-list { list-style: none; margin: 0; padding: 8px 0; }
1964
+ .deco-stage { position: relative; display: grid; grid-template-columns: 38px 1fr; align-items: center; gap: 12px; min-height: 92px; font-size: 12px; }
1965
+ .deco-stage:not(:last-child)::after { content: ""; position: absolute; left: 18px; top: calc(50% + 19px); height: calc(100% - 38px); width: 1px; background: var(--deco-metal); }
1966
+ .deco-stage-number { display: grid; place-items: center; width: 30px; height: 30px; margin-left: 4px; transform: rotate(45deg); border: 1px solid var(--deco-metal); background: var(--deco-surface); }
1967
+ .deco-stage-number span { transform: rotate(-45deg); font: 10px var(--deco-font-mono); }
1968
+ .deco-stage small { display: block; margin-top: 6px; color: var(--deco-text-muted); font-size: 10px; }
1969
+ .deco-stage.is-done .deco-stage-number { background: var(--deco-secondary); color: var(--deco-on-secondary); }
1970
+ .deco-stage[aria-current="step"] .deco-stage-number { background: var(--deco-warning); color: var(--deco-on-warning); }
1971
+ .deco-tabs { border: 3px double var(--deco-metal); background: var(--deco-surface); }
1972
+ .deco-tab-list, .deco-segmented { display: flex; border: 1px solid var(--deco-metal); }
1973
+ .deco-tab, .deco-segment { flex: 1; min-width: 0; min-height: 36px; padding: 6px; background: var(--deco-surface); color: var(--deco-text); border: 0; border-inline-end: 1px solid var(--deco-metal); font-size: 11px; text-transform: uppercase; cursor: pointer; }
1974
+ .deco-tab:last-child, .deco-segment:last-child { border-inline-end: 0; }
1975
+ .deco-tab[aria-selected="true"], .deco-segment[aria-pressed="true"] { background: var(--deco-secondary); color: var(--deco-on-secondary); }
1976
+ .deco-tab-panel { padding: 12px; min-height: 70px; font-size: 12px; }
1977
+ .deco-stepper { display: inline-grid; grid-template-columns: 40px minmax(64px, 1fr) 40px; border: 1px solid var(--deco-metal); }
1978
+ .deco-stepper button, .deco-stepper output { display: grid; place-items: center; min-height: 36px; background: var(--deco-surface); color: var(--deco-text); border: 0; border-inline-end: 1px solid var(--deco-metal); padding: 4px; font: 14px var(--deco-font-mono); }
1979
+ .deco-stepper button { cursor: pointer; }
1980
+ .deco-stepper button:last-child { border: 0; }
1981
+ .deco-badge { border: 1px solid var(--deco-metal); border-radius: 0; clip-path: var(--deco-step-sm); box-shadow: none; padding: 5px 12px; font: 600 10px/1.2 var(--deco-font-control); letter-spacing: 0; }
1982
+ .deco-badge-primary { background: var(--deco-primary); color: var(--deco-on-primary); }
1983
+ .deco-badge-secondary { background: var(--deco-secondary); color: var(--deco-on-secondary); }
1984
+ .deco-badge-success { background: var(--deco-success); color: var(--deco-on-success); }
1985
+ .deco-badge-warning { background: var(--deco-warning); color: var(--deco-on-warning); }
1986
+ .deco-badge-danger { background: var(--deco-danger); color: var(--deco-on-danger); }
1987
+ .deco-badge-info { background: var(--deco-info); color: var(--deco-on-info); }
1988
+ .deco-badge-outline { background: transparent; color: var(--deco-text); }
1989
+ .deco-alert { display: flex; flex-wrap: nowrap; gap: 8px; border: 3px double var(--deco-metal); border-radius: .1rem; box-shadow: inset 0 0 0 1px rgb(var(--deco-enamel-rgb) / .9); background: var(--deco-surface); padding: 6px 10px; }
1990
+ .deco-alert-success { border-color: var(--deco-status-success); }
1991
+ .deco-alert-warning { border-color: var(--deco-status-warning); }
1992
+ .deco-alert-danger { border-color: var(--deco-status-danger); }
1993
+ .deco-alert-info { border-color: var(--deco-info); }
1994
+ .deco-alert-icon { flex: 0 0 10px; height: 10px; transform: rotate(45deg); background: currentColor; }
1995
+ .deco-alert-body { flex: 1; min-width: 0; color: var(--deco-text); }
1996
+ .deco-alert-title { font-size: 11px; letter-spacing: 0; margin-right: 6px; color: var(--deco-text); }
1997
+ .deco-alert-close { display: grid; place-items: center; flex: 0 0 28px; height: 28px; border: 0; background: transparent; color: var(--deco-text); cursor: pointer; }
1998
+ .deco-table-wrap { border: 3px double var(--deco-metal); border-radius: 0; clip-path: none; overflow-x: auto; }
1999
+ .deco-table th { background: var(--deco-primary); color: var(--deco-on-primary); font-size: 11px; letter-spacing: 0; }
2000
+ .deco-table td { font-size: 12px; }
2001
+ .deco-tooltip,
2002
+ [data-ui="art-deco"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) { position: relative; clip-path: polygon(.35rem 0, calc(100% - .35rem) 0, 100% .35rem, 100% calc(100% - .35rem), calc(100% - .35rem) 100%, .35rem 100%, 0 calc(100% - .35rem), 0 .35rem); border: 3px double var(--deco-metal); border-radius: 0; color: rgb(var(--deco-tooltip-text-rgb)); background: rgb(var(--deco-tooltip-bg-rgb)); box-shadow: none; padding: 12px; font: 12px/1.4 var(--deco-font-body); letter-spacing: 0; text-transform: none; }
2003
+ .deco-tooltip::after { content: ""; position: absolute; left: 20px; bottom: -6px; width: 10px; height: 10px; background: rgb(var(--deco-tooltip-bg-rgb)); border-right: 1px solid var(--deco-metal); border-bottom: 1px solid var(--deco-metal); transform: rotate(45deg); }
2004
+ [data-ui="art-deco"][data-mode] dialog.deco-dialog { position: fixed; margin: auto; width: min(480px, calc(100% - 32px)); max-height: calc(100% - 32px); overflow: auto; clip-path: none; }
2005
+ dialog.deco-dialog:not([open]) { display: none; }
2006
+ .deco-dialog h3, .deco-dialog h4 { margin: 16px 0 8px; font: 24px var(--deco-font-display); text-align: center; text-transform: uppercase; }
2007
+ .deco-dialog p { text-align: center; font-size: 12px; }
2008
+ .deco-dialog-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; margin-top: 20px; }
2009
+ .deco-details { border: 1px solid var(--deco-metal); padding: 8px 12px; font-size: 12px; }
2010
+ .deco-details summary { cursor: pointer; }
2011
+ .deco-skeleton { height: 8px; width: 100%; background: var(--deco-surface-soft); border-inline-start: 3px solid var(--deco-metal); }
2012
+ .deco-palette { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 8px; padding: 12px; border: 3px double var(--deco-metal); }
2013
+ .deco-swatch { display: grid; gap: 6px; text-align: center; font: 9px var(--deco-font-mono); }
2014
+ .deco-swatch i { height: 28px; border: 1px solid var(--deco-metal); background: var(--deco-swatch-color, var(--deco-primary)); }
2015
+ .deco-divider { position: relative; height: 16px; background: transparent; border-block: 1px solid var(--deco-metal); }
2016
+ .deco-divider::after { content: ""; position: absolute; top: -4px; left: calc(85% - 12px); width: 22px; height: 22px; transform: rotate(45deg); border: 1px solid var(--deco-metal); background: var(--deco-bg); }
2017
+ .deco-empty-state { padding: 8px 0; background: transparent; border: 0; font-size: 12px; color: var(--deco-text-muted); }
2018
+ [data-ui="art-deco"] :where(button, a, input, select, textarea, summary):focus-visible { outline: 2px solid var(--deco-focus); outline-offset: 3px; }
2019
+ @media (prefers-reduced-motion: reduce) {
2020
+ .deco-spinner, .deco-loading-spinner, [data-ui="art-deco"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]),
2021
+ .deco-button[aria-busy="true"]::after, .deco-icon-button[aria-busy="true"]::after, [data-ui="art-deco"] :where(button[aria-busy="true"])::after { animation: none; }
2022
+ }
2023
+ @media (pointer: coarse) {
2024
+ .deco-button, .deco-icon-button, .deco-option, .deco-tab, .deco-segment, .deco-input, .deco-select,
2025
+ .deco-stepper button, .deco-pagination button, .deco-alert-close, .deco-chip button { min-height: 44px; min-block-size: 44px; }
2026
+ .deco-icon-button, .deco-pagination button, .deco-alert-close, .deco-chip button { min-width: 44px; }
2027
+ .deco-check, .deco-radio, .deco-switch { min-height: 44px; }
2028
+ [data-ui="art-deco"][data-mode] :is(.deco-chip button, .deco-alert-close) { min-width: 44px; min-inline-size: 44px; min-height: 44px; min-block-size: 44px; }
2029
+ .deco-stepper { grid-template-columns: 44px minmax(64px, 1fr) 44px; }
2030
+ }
2031
+ /** Warning actions inherit preset geometry and use the paired semantic warning colors. */
2032
+ [data-ui="art-deco"][data-mode] .deco-button.deco-button-warning {
2033
+ background: var(--deco-warning);
2034
+ color: var(--deco-on-warning);
2035
+ border-color: var(--deco-warning);
2036
+ text-shadow: none;
2037
+ }
2038
+
2039
+ }
2040
+
2041
+ /**
2042
+ * Preserves shared annotation fixture spacing and icon weight after reference
2043
+ * overrides append their compact source rules.
2044
+ */
2045
+ [data-ui="art-deco"][data-mode] .deco-title {
2046
+ margin-block: max(.75rem, 12px);
2047
+ letter-spacing: max(.08em, .5px);
2048
+ }
2049
+
2050
+ [data-ui="art-deco"][data-mode] .deco-feature-item > .deco-icon-medallion {
2051
+ display: inline-flex;
2052
+ align-items: center;
2053
+ justify-content: center;
2054
+ font-family: "Segoe UI Symbol", Arial, sans-serif;
2055
+ font-size: 1.5rem;
2056
+ line-height: 1;
2057
+ }
2058
+
2059
+ [data-ui="art-deco"][data-mode] .deco-callout-bar > .deco-icon-medallion {
2060
+ display: inline-flex;
2061
+ align-items: center;
2062
+ justify-content: center;
2063
+ min-inline-size: 4.5rem;
2064
+ min-block-size: 4.5rem;
2065
+ font-size: 2rem;
2066
+ font-weight: 800;
2067
+ line-height: 1;
2068
+ }