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="editorial-luxe"][data-mode="light"] {
44
44
  color-scheme: light;
45
+ --luxe-fallback-bg-rgb: 250 244 234;
46
+ --luxe-fallback-surface-rgb: 255 253 249;
47
+ --luxe-fallback-surface-strong-rgb: 255 255 255;
48
+ --luxe-fallback-surface-soft-rgb: 239 228 207;
49
+ --luxe-fallback-text-rgb: 42 31 26;
50
+ --luxe-fallback-text-muted-rgb: 109 92 84;
51
+ --luxe-fallback-border-rgb: 212 192 166;
52
+ --luxe-fallback-primary-rgb: 107 15 26;
53
+ --luxe-fallback-primary-hover-rgb: 91 13 22;
54
+ --luxe-fallback-primary-text-rgb: 255 255 255;
55
+ --luxe-fallback-secondary-rgb: 17 17 17;
56
+ --luxe-fallback-secondary-hover-rgb: 0 0 0;
57
+ --luxe-fallback-secondary-text-rgb: 255 255 255;
58
+ --luxe-fallback-accent-rgb: 201 154 70;
59
+ --luxe-fallback-accent-text-rgb: 0 0 0;
60
+ --luxe-fallback-success-rgb: 47 125 84;
61
+ --luxe-fallback-success-text-rgb: 255 255 255;
62
+ --luxe-fallback-warning-rgb: 160 107 19;
63
+ --luxe-fallback-warning-text-rgb: 0 0 0;
64
+ --luxe-fallback-danger-rgb: 178 60 60;
65
+ --luxe-fallback-danger-text-rgb: 255 255 255;
66
+ --luxe-fallback-link-rgb: 91 13 22;
67
+ --luxe-fallback-focus-rgb: 201 154 70;
45
68
  --luxe-panel-alpha: .98;
46
69
  --luxe-panel-soft-alpha: .78;
47
70
  --luxe-border-alpha: .58;
@@ -51,6 +74,29 @@
51
74
 
52
75
  [data-ui="editorial-luxe"][data-mode="dark"] {
53
76
  color-scheme: dark;
77
+ --luxe-fallback-bg-rgb: 19 13 10;
78
+ --luxe-fallback-surface-rgb: 33 24 20;
79
+ --luxe-fallback-surface-strong-rgb: 50 36 30;
80
+ --luxe-fallback-surface-soft-rgb: 25 18 15;
81
+ --luxe-fallback-text-rgb: 251 245 236;
82
+ --luxe-fallback-text-muted-rgb: 211 195 183;
83
+ --luxe-fallback-border-rgb: 106 82 62;
84
+ --luxe-fallback-primary-rgb: 201 138 93;
85
+ --luxe-fallback-primary-hover-rgb: 224 169 126;
86
+ --luxe-fallback-primary-text-rgb: 0 0 0;
87
+ --luxe-fallback-secondary-rgb: 246 235 215;
88
+ --luxe-fallback-secondary-hover-rgb: 255 248 235;
89
+ --luxe-fallback-secondary-text-rgb: 0 0 0;
90
+ --luxe-fallback-accent-rgb: 231 184 95;
91
+ --luxe-fallback-accent-text-rgb: 0 0 0;
92
+ --luxe-fallback-success-rgb: 152 224 182;
93
+ --luxe-fallback-success-text-rgb: 0 0 0;
94
+ --luxe-fallback-warning-rgb: 255 210 122;
95
+ --luxe-fallback-warning-text-rgb: 0 0 0;
96
+ --luxe-fallback-danger-rgb: 255 160 154;
97
+ --luxe-fallback-danger-text-rgb: 0 0 0;
98
+ --luxe-fallback-link-rgb: 240 200 125;
99
+ --luxe-fallback-focus-rgb: 231 184 95;
54
100
  --luxe-panel-alpha: .92;
55
101
  --luxe-panel-soft-alpha: .64;
56
102
  --luxe-border-alpha: .52;
@@ -60,6 +106,29 @@
60
106
 
61
107
  [data-ui="editorial-luxe"][data-mode="contrast"] {
62
108
  color-scheme: dark;
109
+ --luxe-fallback-bg-rgb: 0 0 0;
110
+ --luxe-fallback-surface-rgb: 15 10 7;
111
+ --luxe-fallback-surface-strong-rgb: 28 18 13;
112
+ --luxe-fallback-surface-soft-rgb: 0 0 0;
113
+ --luxe-fallback-text-rgb: 255 255 255;
114
+ --luxe-fallback-text-muted-rgb: 255 245 232;
115
+ --luxe-fallback-border-rgb: 255 255 255;
116
+ --luxe-fallback-primary-rgb: 200 138 54;
117
+ --luxe-fallback-primary-hover-rgb: 255 255 255;
118
+ --luxe-fallback-primary-text-rgb: 0 0 0;
119
+ --luxe-fallback-secondary-rgb: 255 243 217;
120
+ --luxe-fallback-secondary-hover-rgb: 255 255 255;
121
+ --luxe-fallback-secondary-text-rgb: 0 0 0;
122
+ --luxe-fallback-accent-rgb: 255 211 107;
123
+ --luxe-fallback-accent-text-rgb: 0 0 0;
124
+ --luxe-fallback-success-rgb: 0 255 144;
125
+ --luxe-fallback-success-text-rgb: 0 0 0;
126
+ --luxe-fallback-warning-rgb: 255 212 0;
127
+ --luxe-fallback-warning-text-rgb: 0 0 0;
128
+ --luxe-fallback-danger-rgb: 255 107 107;
129
+ --luxe-fallback-danger-text-rgb: 0 0 0;
130
+ --luxe-fallback-link-rgb: 255 211 107;
131
+ --luxe-fallback-focus-rgb: 255 255 255;
63
132
  --luxe-panel-alpha: 1;
64
133
  --luxe-panel-soft-alpha: .92;
65
134
  --luxe-border-alpha: 1;
@@ -67,8 +136,8 @@
67
136
  --luxe-focus-alpha: .72;
68
137
  }
69
138
 
139
+ /** Preserves direct aliases for static extraction when a scheme is selected. */
70
140
  [data-ui="editorial-luxe"][data-theme][data-mode] {
71
- /* Shared scheme aliases preserve the existing prefixed token API. */
72
141
  --luxe-bg-rgb: var(--usk-bg-rgb);
73
142
  --luxe-surface-rgb: var(--usk-surface-rgb);
74
143
  --luxe-surface-strong-rgb: var(--usk-surface-strong-rgb);
@@ -83,15 +152,43 @@
83
152
  --luxe-secondary-hover-rgb: var(--usk-secondary-hover-rgb);
84
153
  --luxe-secondary-text-rgb: var(--usk-secondary-text-rgb);
85
154
  --luxe-accent-rgb: var(--usk-accent-rgb);
86
- --luxe-success-rgb: var(--usk-success-rgb);
87
- --luxe-warning-rgb: var(--usk-warning-rgb);
88
- --luxe-danger-rgb: var(--usk-danger-rgb);
89
- --luxe-link-rgb: var(--usk-link-rgb);
90
155
  --luxe-accent-text-rgb: var(--usk-accent-text-rgb);
156
+ --luxe-success-rgb: var(--usk-success-rgb);
91
157
  --luxe-success-text-rgb: var(--usk-success-text-rgb);
158
+ --luxe-warning-rgb: var(--usk-warning-rgb);
92
159
  --luxe-warning-text-rgb: var(--usk-warning-text-rgb);
160
+ --luxe-danger-rgb: var(--usk-danger-rgb);
93
161
  --luxe-danger-text-rgb: var(--usk-danger-text-rgb);
162
+ --luxe-link-rgb: var(--usk-link-rgb);
94
163
  --luxe-focus-rgb: var(--usk-focus-rgb);
164
+ }
165
+
166
+ [data-ui="editorial-luxe"][data-mode] {
167
+ --usk-native-bg: var(--luxe-bg);
168
+ /* Explicit schemes win; reference colors are used only when no scheme exists. */
169
+ --luxe-bg-rgb: var(--usk-bg-rgb, var(--luxe-fallback-bg-rgb));
170
+ --luxe-surface-rgb: var(--usk-surface-rgb, var(--luxe-fallback-surface-rgb));
171
+ --luxe-surface-strong-rgb: var(--usk-surface-strong-rgb, var(--luxe-fallback-surface-strong-rgb));
172
+ --luxe-surface-soft-rgb: var(--usk-surface-soft-rgb, var(--luxe-fallback-surface-soft-rgb));
173
+ --luxe-text-rgb: var(--usk-text-rgb, var(--luxe-fallback-text-rgb));
174
+ --luxe-text-muted-rgb: var(--usk-text-muted-rgb, var(--luxe-fallback-text-muted-rgb));
175
+ --luxe-border-rgb: var(--usk-border-rgb, var(--luxe-fallback-border-rgb));
176
+ --luxe-primary-rgb: var(--usk-primary-rgb, var(--luxe-fallback-primary-rgb));
177
+ --luxe-primary-hover-rgb: var(--usk-primary-hover-rgb, var(--luxe-fallback-primary-hover-rgb));
178
+ --luxe-primary-text-rgb: var(--usk-primary-text-rgb, var(--luxe-fallback-primary-text-rgb));
179
+ --luxe-secondary-rgb: var(--usk-secondary-rgb, var(--luxe-fallback-secondary-rgb));
180
+ --luxe-secondary-hover-rgb: var(--usk-secondary-hover-rgb, var(--luxe-fallback-secondary-hover-rgb));
181
+ --luxe-secondary-text-rgb: var(--usk-secondary-text-rgb, var(--luxe-fallback-secondary-text-rgb));
182
+ --luxe-accent-rgb: var(--usk-accent-rgb, var(--luxe-fallback-accent-rgb));
183
+ --luxe-accent-text-rgb: var(--usk-accent-text-rgb, var(--luxe-fallback-accent-text-rgb));
184
+ --luxe-success-rgb: var(--usk-success-rgb, var(--luxe-fallback-success-rgb));
185
+ --luxe-success-text-rgb: var(--usk-success-text-rgb, var(--luxe-fallback-success-text-rgb));
186
+ --luxe-warning-rgb: var(--usk-warning-rgb, var(--luxe-fallback-warning-rgb));
187
+ --luxe-warning-text-rgb: var(--usk-warning-text-rgb, var(--luxe-fallback-warning-text-rgb));
188
+ --luxe-danger-rgb: var(--usk-danger-rgb, var(--luxe-fallback-danger-rgb));
189
+ --luxe-danger-text-rgb: var(--usk-danger-text-rgb, var(--luxe-fallback-danger-text-rgb));
190
+ --luxe-link-rgb: var(--usk-link-rgb, var(--luxe-fallback-link-rgb));
191
+ --luxe-focus-rgb: var(--usk-focus-rgb, var(--luxe-fallback-focus-rgb));
95
192
  /* Native fallback selectors inherit visual identity through shared tokens. */
96
193
  --usk-native-surface: var(--luxe-surface);
97
194
  --usk-native-surface-strong: var(--luxe-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(--luxe-space-5);
222
+ --usk-native-control-min-block-size: 2.75rem;
223
+ --usk-native-control-padding-block: .74rem;
224
+ --usk-native-control-padding-inline: 1rem;
225
+ --usk-native-subcontrol-padding-block: .58rem;
226
+ --usk-native-subcontrol-padding-inline: .8rem;
227
+ --usk-native-choice-size: 1.35rem;
228
+ --usk-native-choice-background: var(--luxe-control-bg);
229
+ --usk-native-choice-border: 1px solid var(--luxe-border);
230
+ --usk-native-checkbox-radius: 0;
231
+ --usk-native-radio-radius: 50%;
232
+ --usk-native-choice-shadow: none;
233
+ --usk-native-choice-checked-background: var(--luxe-primary);
234
+ --usk-native-choice-mark-color: var(--luxe-on-primary);
235
+ --usk-native-select-indicator-image: linear-gradient(60deg, transparent 50%, var(--luxe-primary) 50%), linear-gradient(120deg, var(--luxe-primary) 50%, transparent 50%);
236
+ --usk-native-select-indicator-size: 0.38rem 0.38rem, 0.38rem 0.38rem;
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: 1px;
240
+ --usk-native-range-track-background: var(--luxe-surface-soft);
241
+ --usk-native-range-track-border: 1px solid var(--luxe-border);
242
+ --usk-native-range-track-radius: 0;
243
+ --usk-native-range-track-shadow: none;
244
+ --usk-native-range-progress-background: var(--luxe-primary);
245
+ --usk-native-range-thumb-size: .85rem;
246
+ --usk-native-range-thumb-background: var(--luxe-surface-strong);
247
+ --usk-native-range-thumb-border: 1px solid var(--luxe-border);
248
+ --usk-native-range-thumb-radius: 50%;
249
+ --usk-native-range-thumb-shadow: none;
250
+ --usk-native-progress-size: .28rem;
251
+ --usk-native-progress-track-background: var(--luxe-surface-soft);
252
+ --usk-native-progress-track-border: 1px solid var(--luxe-border);
253
+ --usk-native-progress-track-radius: 0;
254
+ --usk-native-progress-track-shadow: none;
255
+ --usk-native-progress-value-background: var(--luxe-primary);
256
+ --usk-native-progress-value-radius: 0;
257
+ --usk-native-progress-value-shadow: none;
258
+ --usk-native-meter-optimum-background: var(--luxe-success);
259
+ --usk-native-meter-suboptimum-background: var(--luxe-warning);
260
+ --usk-native-meter-critical-background: var(--luxe-danger);
261
+ --usk-native-file-button-background: var(--luxe-primary);
262
+ --usk-native-file-button-border: 1px solid var(--luxe-border);
263
+ --usk-native-file-button-radius: 0;
264
+ --usk-native-file-button-shadow: none;
265
+ --usk-native-color-swatch-border: 1px solid var(--luxe-border);
266
+ --usk-native-color-swatch-radius: 0;
267
+ --usk-native-indicator-opacity: 0.77;
268
+ --usk-native-indicator-filter: none;
269
+ --usk-native-scrollbar-size: .55rem;
270
+ --usk-native-scrollbar-track: var(--luxe-surface-soft);
271
+ --usk-native-scrollbar-thumb: var(--luxe-primary);
272
+ --usk-native-scrollbar-radius: 0;
125
273
  --luxe-bg: rgb(var(--luxe-bg-rgb));
126
274
  --luxe-surface: rgb(var(--luxe-surface-rgb) / var(--luxe-panel-alpha));
127
275
  --luxe-surface-strong: rgb(var(--luxe-surface-strong-rgb) / var(--luxe-panel-alpha));
@@ -162,7 +310,7 @@
162
310
  }
163
311
 
164
312
  @supports (color: color-mix(in srgb, black, white)) {
165
- [data-ui="editorial-luxe"][data-theme][data-mode] { --luxe-border: color-mix(in srgb, rgb(var(--luxe-border-rgb) / max(var(--luxe-border-alpha), var(--usk-border-min-alpha))), var(--luxe-text) var(--usk-border-text-mix)); }
313
+ [data-ui="editorial-luxe"][data-mode] { --luxe-border: color-mix(in srgb, rgb(var(--luxe-border-rgb) / max(var(--luxe-border-alpha), var(--usk-border-min-alpha))), var(--luxe-text) var(--usk-border-text-mix)); }
166
314
  }
167
315
 
168
316
 
@@ -214,7 +362,7 @@
214
362
  [data-ui="editorial-luxe"] *::before,
215
363
  [data-ui="editorial-luxe"] *::after { box-sizing: border-box; }
216
364
 
217
- [data-ui="editorial-luxe"][data-theme][data-mode] { background: var(--luxe-theme-bg); background-size: var(--luxe-theme-bg-size); }
365
+ [data-ui="editorial-luxe"][data-mode] { background: var(--luxe-theme-bg); background-size: var(--luxe-theme-bg-size); }
218
366
 
219
367
  .luxe-page { min-height: 100vh; padding: clamp(1rem, 4vw, 3rem); }
220
368
  .luxe-container { width: min(100% - 2rem, 1200px); margin-inline: auto; }
@@ -281,7 +429,7 @@
281
429
  /* Theme-responsive component defaults */
282
430
  .luxe-card, .luxe-panel { background: var(--luxe-card-bg); }
283
431
  .luxe-toolbar, .luxe-table-wrap { background: var(--luxe-control-bg); }
284
- .luxe-button:not(.luxe-button-primary):not(.luxe-button-secondary):not(.luxe-button-danger):not(.luxe-button-ghost), .luxe-icon-button { background: var(--luxe-control-bg); }
432
+ .luxe-button:not(.luxe-button-primary):not(.luxe-button-secondary):not(.luxe-button-danger):not(.luxe-button-warning):not(.luxe-button-ghost), .luxe-icon-button { background: var(--luxe-control-bg); }
285
433
  .luxe-button, .luxe-icon-button, .luxe-badge, .luxe-nav-link { font-family: var(--luxe-font-control); }
286
434
 
287
435
 
@@ -509,7 +657,6 @@
509
657
  .luxe-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(--luxe-card-bg);
514
661
  color: var(--luxe-text);
515
662
  border: 1px solid var(--luxe-border);
@@ -608,7 +755,7 @@
608
755
  --luxe-radius-xl: .65rem;
609
756
  }
610
757
  [data-ui="editorial-luxe"] { font-family: var(--luxe-font-body); }
611
- [data-ui="editorial-luxe"][data-theme][data-mode] {
758
+ [data-ui="editorial-luxe"][data-mode] {
612
759
  --luxe-theme-bg: linear-gradient(90deg, rgb(var(--luxe-border-rgb) / .09) 1px, transparent 1px) 0 0 / 22rem 100%, linear-gradient(180deg, rgb(var(--luxe-primary-rgb) / .035), transparent 22rem), var(--luxe-bg);
613
760
  --luxe-card-bg: linear-gradient(180deg, rgb(var(--luxe-surface-strong-rgb) / var(--luxe-panel-alpha)), rgb(var(--luxe-surface-rgb) / var(--luxe-panel-alpha)));
614
761
  }
@@ -631,6 +778,7 @@
631
778
 
632
779
  /* Filled and framed actions share a slim bookplate and editorial reading edge. */
633
780
  .luxe-button.luxe-button-cut, .luxe-button-cut {
781
+ min-block-size: 2.75rem;
634
782
  min-inline-size: 6rem;
635
783
  max-inline-size: 100%;
636
784
  justify-self: start;
@@ -650,12 +798,12 @@
650
798
  border-radius: 0;
651
799
  box-shadow: 0 .2rem 0 rgb(var(--luxe-text-rgb) / .12);
652
800
  }
653
- [data-ui="editorial-luxe"][data-theme][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
801
+ [data-ui="editorial-luxe"][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
654
802
  border: 3px double var(--luxe-primary);
655
803
  border-radius: 0;
656
804
  box-shadow: 0 .18rem 0 rgb(var(--luxe-text-rgb) / .14);
657
805
  }
658
- [data-ui="editorial-luxe"][data-theme][data-mode] :where(dialog) {
806
+ [data-ui="editorial-luxe"][data-mode] :where(dialog) {
659
807
  border: 3px double var(--luxe-border);
660
808
  border-radius: 0;
661
809
  box-shadow: 0 .28rem 0 rgb(var(--luxe-text-rgb) / .16), 0 1rem 2rem rgb(var(--luxe-text-rgb) / .16);
@@ -669,6 +817,132 @@
669
817
  border: .08em double currentColor; border-radius: 0; background: linear-gradient(90deg, transparent 35%, currentColor 35% 65%, transparent 65%); box-shadow: inset 0 0 0 .05em currentColor; clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); animation: luxe-spin 1.12s steps(4, end) infinite;
670
818
  }
671
819
 
820
+ /**
821
+ * Preserves Editorial Luxe's couture restraint with Didone hierarchy, long
822
+ * rules, exact editorial spacing, and quiet layered paper-like surfaces.
823
+ */
824
+ [data-ui="editorial-luxe"][data-mode] {
825
+ --usk-native-font-control: var(--luxe-font-heading);
826
+ --usk-native-control-min-block-size: 2.5rem;
827
+ --usk-native-control-padding-block: .62rem;
828
+ --usk-native-control-padding-inline: 1.45rem;
829
+ --usk-native-border-width: 1px;
830
+ --usk-native-radius-sm: .02rem;
831
+ --usk-native-radius: .03rem;
832
+ --usk-native-radius-lg: .04rem;
833
+ --usk-native-shadow: inset 0 -1px 0 rgb(var(--luxe-border-rgb) / .54);
834
+ --usk-native-shadow-md: inset 0 0 0 1px rgb(var(--luxe-border-rgb) / .38), inset 0 0 0 4px var(--luxe-surface-strong);
835
+ --usk-native-focus-ring: 0 0 0 1px var(--luxe-warning), 0 0 0 4px rgb(var(--luxe-primary-rgb) / .34);
836
+ --usk-native-subcontrol-padding-block: .39rem;
837
+ --usk-native-subcontrol-padding-inline: .92rem;
838
+ --usk-native-choice-size: 1.08rem;
839
+ --usk-native-choice-background: var(--luxe-control-bg);
840
+ --usk-native-choice-border: 1px solid var(--luxe-border);
841
+ --usk-native-checkbox-radius: 0;
842
+ --usk-native-radio-radius: 50%;
843
+ --usk-native-choice-shadow: inset 0 0 0 2px var(--luxe-surface-strong);
844
+ --usk-native-choice-checked-background: var(--luxe-success);
845
+ --usk-native-choice-mark-color: var(--luxe-on-primary);
846
+ --usk-native-select-indicator-image: linear-gradient(55deg, transparent 48%, var(--luxe-warning) 49% 51%, transparent 52%), linear-gradient(125deg, transparent 48%, var(--luxe-warning) 49% 51%, transparent 52%);
847
+ --usk-native-select-indicator-size: .4rem .5rem, .4rem .5rem;
848
+ --usk-native-select-indicator-position: calc(100% - 1.28rem) 50%, calc(100% - .96rem) 50%;
849
+ --usk-native-select-padding-inline-end: 2.82rem;
850
+ --usk-native-range-track-size: 1px;
851
+ --usk-native-range-track-background: linear-gradient(90deg, var(--luxe-border), rgb(var(--luxe-warning-rgb) / .62), var(--luxe-border));
852
+ --usk-native-range-track-border: 0 solid transparent;
853
+ --usk-native-range-track-radius: 0;
854
+ --usk-native-range-track-shadow: 0 1px 0 var(--luxe-surface-strong);
855
+ --usk-native-range-progress-background: linear-gradient(90deg, var(--luxe-success), var(--luxe-warning));
856
+ --usk-native-range-thumb-size: .82rem;
857
+ --usk-native-range-thumb-background: var(--luxe-warning);
858
+ --usk-native-range-thumb-border: 1px solid var(--luxe-border);
859
+ --usk-native-range-thumb-radius: 50%;
860
+ --usk-native-range-thumb-shadow: 0 0 0 2px var(--luxe-surface-strong);
861
+ --usk-native-progress-size: .22rem;
862
+ --usk-native-progress-track-background: rgb(var(--luxe-border-rgb) / .24);
863
+ --usk-native-progress-track-border: 0 solid transparent;
864
+ --usk-native-progress-track-radius: 0;
865
+ --usk-native-progress-track-shadow: inset 0 1px 0 rgb(var(--luxe-surface-strong-rgb) / .68);
866
+ --usk-native-progress-value-background: linear-gradient(90deg, var(--luxe-success), var(--luxe-warning));
867
+ --usk-native-progress-value-radius: 0;
868
+ --usk-native-progress-value-shadow: 1px 0 0 var(--luxe-border);
869
+ --usk-native-scrollbar-size: .42rem;
870
+ --usk-native-scrollbar-track: var(--luxe-surface-soft);
871
+ --usk-native-scrollbar-thumb: linear-gradient(180deg, var(--luxe-warning), var(--luxe-border));
872
+ --usk-native-scrollbar-radius: 0;
873
+ --usk-native-card-bg: var(--luxe-surface);
874
+ --usk-native-control-bg: var(--luxe-surface-soft);
875
+ }
876
+
877
+ @supports (color: color-mix(in srgb, black, white)) {
878
+ [data-ui="editorial-luxe"][data-mode] {
879
+ --usk-native-card-bg: linear-gradient(90deg, var(--luxe-surface) 0 48%, color-mix(in srgb, var(--luxe-surface) 48%, var(--luxe-primary)) 48% 100%);
880
+ --usk-native-control-bg: linear-gradient(180deg, color-mix(in srgb, var(--luxe-surface-soft) 55%, var(--luxe-primary)), var(--luxe-surface-soft));
881
+ }
882
+ }
883
+
884
+ .luxe-title { margin-block: .75rem; font-weight: 500; letter-spacing: max(.02em, .5px); }
885
+ .luxe-label { font-size: .64rem; font-weight: 600; }
886
+ .luxe-button { min-height: 2.5rem; padding: .62rem 1.45rem; background: var(--luxe-primary); border-radius: .02rem; box-shadow: inset 0 -1px 0 rgb(var(--luxe-border-rgb) / .54); font-weight: 600; }
887
+ .luxe-input { min-height: 2.45rem; padding: .55rem .95rem; border-radius: 0; }
888
+ .luxe-card { padding: 1.75rem; background: linear-gradient(180deg, rgb(var(--luxe-surface-strong-rgb) / .66), transparent), var(--luxe-card-bg); border: 1px solid var(--luxe-border); border-radius: .02rem; box-shadow: inset 0 0 0 1px rgb(var(--luxe-border-rgb) / .28), inset 0 0 0 4px var(--luxe-surface-strong); }
889
+ .luxe-well { background: linear-gradient(90deg, transparent 0 49.8%, rgb(var(--luxe-border-rgb) / .22) 49.8% 50.2%, transparent 50.2%), var(--luxe-surface-soft); border: 1px solid var(--luxe-border); box-shadow: inset 0 0 0 4px var(--luxe-surface-strong); }
890
+ .luxe-badge { min-height: 1.42rem; padding: .16rem .74rem; border-radius: 50%; }
891
+ .luxe-alert { background: linear-gradient(90deg, rgb(var(--luxe-primary-rgb) / .08), transparent 36%), var(--luxe-card-bg); border: 1px solid var(--luxe-border); border-radius: 0; box-shadow: inset 0 0 0 4px var(--luxe-surface-strong); }
892
+ .luxe-progress { height: .22rem; background: rgb(var(--luxe-border-rgb) / .24); }
893
+ .luxe-table-wrap { background: linear-gradient(180deg, rgb(var(--luxe-surface-strong-rgb) / .62), transparent), var(--luxe-card-bg); border-radius: 0; box-shadow: inset 0 0 0 1px rgb(var(--luxe-border-rgb) / .3); }
894
+ .luxe-table th { padding: .56rem 1rem; background: transparent; font-weight: 600; }
895
+ .luxe-table td { padding: .58rem 1rem; }
896
+
897
+ .luxe-nav, .luxe-panel, .luxe-toolbar, .luxe-tooltip,
898
+ [data-ui="editorial-luxe"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]),
899
+ .luxe-card-service, .luxe-feature-strip, .luxe-callout-bar {
900
+ border: 1px solid var(--luxe-border);
901
+ border-radius: 0;
902
+ box-shadow: inset 0 0 0 4px var(--luxe-surface-strong);
903
+ }
904
+ .luxe-nav { border-inline: 0; border-block-width: 1px 3px; border-block-style: solid double; }
905
+ .luxe-card-service, .luxe-feature-item { border-block-start: 3px double var(--luxe-border); }
906
+ .luxe-callout-bar { border-block: 3px double var(--luxe-border); border-inline: 0; }
907
+ .luxe-tooltip-arrow { transform: rotate(45deg); }
908
+ .luxe-progress-bar { background: linear-gradient(90deg, var(--luxe-success), var(--luxe-warning)); }
909
+ .luxe-card { border-radius: .02rem; }
910
+
911
+ /* A neutral ink wash and fine column rules preserve the restrained couture page. */
912
+ [data-ui="editorial-luxe"][data-mode] {
913
+ --usk-native-card-bg: linear-gradient(rgb(var(--luxe-text-rgb) / .12), rgb(var(--luxe-text-rgb) / .12)), var(--luxe-surface);
914
+ }
915
+ .luxe-panel,
916
+ .luxe-card-service,
917
+ .luxe-feature-strip,
918
+ .luxe-callout-bar {
919
+ background:
920
+ linear-gradient(
921
+ 90deg,
922
+ transparent 0 58%,
923
+ rgb(var(--luxe-border-rgb) / .32) 58% calc(58% + 1px),
924
+ transparent calc(58% + 1px)
925
+ ),
926
+ linear-gradient(rgb(var(--luxe-text-rgb) / .12), rgb(var(--luxe-text-rgb) / .12)),
927
+ var(--luxe-card-bg);
928
+ }
929
+ .luxe-feature-strip {
930
+ background:
931
+ linear-gradient(
932
+ 90deg,
933
+ transparent 0 33.333%,
934
+ rgb(var(--luxe-border-rgb) / .32) 33.333% calc(33.333% + 1px),
935
+ transparent calc(33.333% + 1px) 66.666%,
936
+ rgb(var(--luxe-border-rgb) / .32) 66.666% calc(66.666% + 1px),
937
+ transparent calc(66.666% + 1px)
938
+ ),
939
+ linear-gradient(rgb(var(--luxe-text-rgb) / .12), rgb(var(--luxe-text-rgb) / .12)),
940
+ var(--luxe-card-bg);
941
+ }
942
+ [data-ui="editorial-luxe"][data-mode] :where(fieldset, article, aside) {
943
+ background: linear-gradient(90deg, transparent 0 48%, rgb(var(--luxe-border-rgb) / .26) 48% calc(48% + 1px), transparent calc(48% + 1px)), linear-gradient(rgb(var(--luxe-text-rgb) / .12), rgb(var(--luxe-text-rgb) / .12)), var(--luxe-surface);
944
+ }
945
+
672
946
  @media (prefers-reduced-motion: reduce) {
673
947
  [data-ui="editorial-luxe"] *, [data-ui="editorial-luxe"] *::before, [data-ui="editorial-luxe"] *::after { scroll-behavior: auto !important; transition-duration: 1ms !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; }
674
948
  }
@@ -685,3 +959,293 @@
685
959
  [data-ui="editorial-luxe"] a { color: #000 !important; text-decoration: underline; }
686
960
  }
687
961
  }
962
+
963
+ @layer ui-style-kit.editorial_luxe {
964
+ /* Keeps semantic field states above preset-specific material paint. */
965
+ .luxe-input[aria-invalid="true"], .luxe-textarea[aria-invalid="true"], .luxe-select[aria-invalid="true"] { border-color: var(--luxe-danger); box-shadow: 0 0 0 2px rgb(var(--luxe-danger-rgb) / .18); }
966
+ .luxe-input[readonly], .luxe-textarea[readonly] { border-style: dashed; filter: saturate(.72); opacity: .78; }
967
+ /* Restores semantic action paint after identity-specific geometry. */
968
+ .luxe-button-primary { background: var(--luxe-primary); color: var(--luxe-on-primary); border-color: var(--luxe-primary); }
969
+ .luxe-button-secondary { background: var(--luxe-surface); color: var(--luxe-text); border-color: var(--luxe-border); }
970
+ .luxe-button-danger { background: var(--luxe-danger); color: var(--luxe-on-danger); border-color: var(--luxe-danger); }
971
+ .luxe-button-ghost { background: transparent; color: var(--luxe-primary); border-color: transparent; }
972
+ }
973
+
974
+ @layer ui-style-kit.editorial_luxe {
975
+ /* Shared annotation fidelity: readable display rhythm and appropriately scaled text icons. */
976
+ .luxe-feature-item > .luxe-icon-medallion { font-size: 1.5rem; line-height: 1; }
977
+ .luxe-callout-bar > .luxe-icon-medallion { min-inline-size: 4.5rem; min-block-size: 4.5rem; font-size: 2rem; font-weight: 800; line-height: 1; }
978
+ }
979
+
980
+ @layer ui-style-kit.editorial_luxe {
981
+ /**
982
+ * Maps Editorial Lux's retained couture specimen onto the shared paint tokens.
983
+ * Keeps dark pigments distinct from accessible small-text status foregrounds.
984
+ */
985
+ [data-ui="editorial-luxe"][data-mode="light"] {
986
+ --luxe-fallback-bg-rgb: 248 245 239;
987
+ --luxe-fallback-surface-rgb: 248 245 239;
988
+ --luxe-fallback-surface-strong-rgb: 255 253 250;
989
+ --luxe-fallback-surface-soft-rgb: 222 219 212;
990
+ --luxe-fallback-text-rgb: 17 20 19;
991
+ --luxe-fallback-text-muted-rgb: 99 96 90;
992
+ --luxe-fallback-border-rgb: 112 109 101;
993
+ --luxe-fallback-primary-rgb: 18 50 41;
994
+ --luxe-fallback-primary-hover-rgb: 39 72 61;
995
+ --luxe-fallback-primary-text-rgb: 244 240 232;
996
+ --luxe-fallback-secondary-rgb: 17 20 19;
997
+ --luxe-fallback-secondary-text-rgb: 244 240 232;
998
+ --luxe-fallback-accent-rgb: 165 130 70;
999
+ --luxe-fallback-accent-text-rgb: 17 20 19;
1000
+ --luxe-fallback-success-rgb: 18 50 41;
1001
+ --luxe-fallback-success-text-rgb: 244 240 232;
1002
+ --luxe-fallback-warning-rgb: 130 94 35;
1003
+ --luxe-fallback-warning-text-rgb: 255 255 255;
1004
+ --luxe-fallback-danger-rgb: 125 17 19;
1005
+ --luxe-fallback-danger-text-rgb: 255 255 255;
1006
+ --luxe-fallback-link-rgb: 125 17 19;
1007
+ --luxe-fallback-focus-rgb: 130 94 35;
1008
+ --luxe-status-success: rgb(var(--usk-success-rgb, 18 50 41));
1009
+ --luxe-status-danger: rgb(var(--usk-danger-rgb, 125 17 19));
1010
+ }
1011
+ [data-ui="editorial-luxe"][data-mode="dark"] {
1012
+ --luxe-fallback-bg-rgb: 14 17 16;
1013
+ --luxe-fallback-surface-rgb: 14 17 16;
1014
+ --luxe-fallback-surface-strong-rgb: 18 22 21;
1015
+ --luxe-fallback-surface-soft-rgb: 48 50 48;
1016
+ --luxe-fallback-text-rgb: 232 223 210;
1017
+ --luxe-fallback-text-muted-rgb: 172 163 151;
1018
+ --luxe-fallback-border-rgb: 149 130 92;
1019
+ --luxe-fallback-primary-rgb: 24 56 46;
1020
+ --luxe-fallback-primary-hover-rgb: 40 73 62;
1021
+ --luxe-fallback-primary-text-rgb: 232 223 210;
1022
+ --luxe-fallback-secondary-rgb: 232 223 210;
1023
+ --luxe-fallback-secondary-text-rgb: 17 20 19;
1024
+ --luxe-fallback-accent-rgb: 195 164 106;
1025
+ --luxe-fallback-accent-text-rgb: 17 20 19;
1026
+ --luxe-fallback-success-rgb: 24 56 46;
1027
+ --luxe-fallback-success-text-rgb: 232 223 210;
1028
+ --luxe-fallback-warning-rgb: 195 164 106;
1029
+ --luxe-fallback-warning-text-rgb: 17 20 19;
1030
+ --luxe-fallback-danger-rgb: 141 27 28;
1031
+ --luxe-fallback-danger-text-rgb: 255 255 255;
1032
+ --luxe-fallback-link-rgb: 232 223 210;
1033
+ --luxe-fallback-focus-rgb: 195 164 106;
1034
+ --luxe-status-success: rgb(var(--usk-success-rgb, 151 196 172));
1035
+ --luxe-status-danger: rgb(var(--usk-danger-rgb, 239 151 152));
1036
+ }
1037
+ [data-ui="editorial-luxe"][data-mode="contrast"] {
1038
+ --luxe-status-success: var(--luxe-success);
1039
+ --luxe-status-danger: var(--luxe-danger);
1040
+ }
1041
+ [data-ui="editorial-luxe"][data-mode] {
1042
+ --luxe-font-display: Didot, "Bodoni MT", "Times New Roman", serif;
1043
+ --luxe-font-heading: var(--luxe-font-display);
1044
+ --luxe-font-body: "Iowan Old Style", Georgia, serif;
1045
+ --luxe-font-control: "Arial Narrow", "Liberation Sans Narrow", Arial, sans-serif;
1046
+ --luxe-brass: rgb(var(--usk-accent-rgb, 165 130 70));
1047
+ --luxe-brass-light: rgb(var(--usk-accent-rgb, 196 166 109));
1048
+ --luxe-on-brass: rgb(var(--usk-accent-text-rgb, 17 20 19));
1049
+ --luxe-rule-soft: rgb(var(--luxe-border-rgb) / .35);
1050
+ --luxe-card-bg: var(--luxe-surface);
1051
+ --luxe-control-bg: transparent;
1052
+ --luxe-radius-xs: 0;
1053
+ --luxe-radius-sm: 0;
1054
+ --luxe-radius-md: 0;
1055
+ --luxe-radius-lg: 0;
1056
+ --usk-native-font-control: var(--luxe-font-control);
1057
+ --usk-native-card-bg: var(--luxe-surface);
1058
+ --usk-native-control-bg: transparent;
1059
+ --usk-native-shadow: none;
1060
+ --usk-native-shadow-md: none;
1061
+ --usk-native-control-min-block-size: 2.125rem;
1062
+ --usk-native-control-padding-block: .375rem;
1063
+ --usk-native-control-padding-inline: .75rem;
1064
+ --usk-native-range-track-background: var(--luxe-border);
1065
+ --usk-native-range-progress-background: var(--luxe-border);
1066
+ --usk-native-range-thumb-background: var(--luxe-brass-light);
1067
+ --usk-native-range-thumb-border: 1px solid var(--luxe-brass);
1068
+ --usk-native-progress-value-background: var(--luxe-primary);
1069
+ --usk-native-choice-checked-background: var(--luxe-primary);
1070
+ }
1071
+ .luxe-sheet { position: relative; padding: 32px; border: 4px double var(--luxe-border); outline: 1px solid var(--luxe-rule-soft); outline-offset: -12px; color: var(--luxe-text); background: var(--luxe-surface); font-family: var(--luxe-font-body); }
1072
+ .luxe-sheet *, .luxe-sheet *::before, .luxe-sheet *::after { box-sizing: border-box; letter-spacing: 0; }
1073
+ [data-ui="editorial-luxe"][data-mode] .luxe-sheet :where(article, aside, section, figure, fieldset) { border: 0; border-radius: 0; padding: 0; background: transparent; box-shadow: none; }
1074
+ .luxe-masthead { display: flex; align-items: start; justify-content: space-between; gap: 24px; padding-bottom: 16px; border-bottom: 1px solid var(--luxe-border); }
1075
+ .luxe-masthead .luxe-kicker { color: var(--luxe-text-muted); }
1076
+ /** Establishes a readable numeral-first hierarchy inside the fixed seal geometry. */
1077
+ .luxe-badge-seal > strong { font-size: 28px; line-height: 1; }
1078
+ .luxe-badge-seal > small { font-size: 12px; line-height: 1.25; }
1079
+ [data-ui="editorial-luxe"][data-mode] .luxe-masthead-title { margin: 0; font-family: var(--luxe-font-display); font-size: 76px; font-weight: 400; line-height: 1; text-transform: uppercase; letter-spacing: 0; }
1080
+ .luxe-collection-rail { display: grid; align-content: start; gap: 24px; }
1081
+ .luxe-collection-rail ol { list-style: none; margin: 0; padding: 0; counter-reset: collection; }
1082
+ .luxe-collection-rail li { counter-increment: collection; display: flex; gap: 16px; align-items: center; margin-bottom: 12px; font-family: var(--luxe-font-control); }
1083
+ .luxe-collection-rail li::before { content: counter(collection, decimal-leading-zero); font: 10px var(--luxe-font-mono); color: var(--luxe-text-muted); }
1084
+ .luxe-portrait { aspect-ratio: 388 / 434; overflow: hidden; border: 1px solid var(--luxe-border); }
1085
+ .luxe-portrait img { display: block; width: 100%; height: 100%; object-fit: cover; }
1086
+ .luxe-story { display: flex; flex-direction: column; align-items: start; gap: 20px; }
1087
+ [data-ui="editorial-luxe"][data-mode] .luxe-story-title { margin: 0; font: 400 62px/.96 var(--luxe-font-display); letter-spacing: 0; text-transform: uppercase; }
1088
+ .luxe-byline { margin: auto 0 0; font: 10px/1.5 var(--luxe-font-control); text-transform: uppercase; }
1089
+ .luxe-deck { margin: 0; max-width: 34ch; font: 15px/1.5 var(--luxe-font-body); }
1090
+ .luxe-colophon { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px; padding-top: 20px; border-top: 1px solid var(--luxe-border); font-size: 11px; }
1091
+ [data-ui="editorial-luxe"][data-mode] .luxe-section-title { display: flex; align-items: center; gap: 16px; margin: 0 0 20px; font: 12px/1.4 var(--luxe-font-control); text-transform: uppercase; }
1092
+ .luxe-section-title::after { content: ""; height: 1px; flex: 1; background: var(--luxe-border); }
1093
+ .luxe-section-number { font: 10px var(--luxe-font-mono); color: var(--luxe-status-danger); }
1094
+ .luxe-sheet .luxe-label { margin: 0; color: var(--luxe-text-muted); font: 10px/1.4 var(--luxe-font-control); text-transform: uppercase; }
1095
+ .luxe-button, .luxe-icon-button { min-height: 34px; padding: 8px 16px; border: 1px solid var(--luxe-border); border-radius: 0; clip-path: none; box-shadow: none; font-family: var(--luxe-font-control); font-weight: 400; }
1096
+ .luxe-sheet .luxe-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-size: 11px; line-height: 1.35; text-transform: uppercase; white-space: nowrap; }
1097
+ .luxe-button-primary { color: var(--luxe-on-primary); background: var(--luxe-primary); border-color: var(--luxe-primary); }
1098
+ .luxe-button-secondary, .luxe-button-ghost { color: var(--luxe-text); background: transparent; border-color: var(--luxe-border); }
1099
+ .luxe-button-danger { color: var(--luxe-on-danger); background: var(--luxe-danger); border-color: var(--luxe-danger); }
1100
+ .luxe-button::before { content: none; }
1101
+ .luxe-button:hover:not(:disabled) { box-shadow: inset 0 0 0 1px var(--luxe-brass); }
1102
+ .luxe-button:active, .luxe-button.is-pressed { transform: none; box-shadow: inset 0 0 0 1px var(--luxe-brass); }
1103
+ .luxe-button:disabled { color: var(--luxe-text-muted); background: var(--luxe-surface-soft); border-color: var(--luxe-rule-soft); box-shadow: none; opacity: .65; }
1104
+ .luxe-input, .luxe-select, .luxe-textarea { min-height: 34px; padding: 8px 10px; color: var(--luxe-text); background-color: transparent; border: 1px solid var(--luxe-border); border-radius: 0; box-shadow: none; }
1105
+ .luxe-sheet :is(.luxe-input, .luxe-select, .luxe-textarea) { width: 100%; min-width: 0; font: 12px/1.4 var(--luxe-font-body); }
1106
+ .luxe-textarea { resize: vertical; }
1107
+ .luxe-input.luxe-input-valid { border-color: var(--luxe-status-success); box-shadow: inset 2px 0 var(--luxe-status-success); }
1108
+ .luxe-input[aria-invalid="true"] { border-color: var(--luxe-status-danger); box-shadow: inset 2px 0 var(--luxe-status-danger); }
1109
+ .luxe-help-error { color: var(--luxe-status-danger); font-size: 12px; }
1110
+ .luxe-file-upload { position: relative; display: grid; }
1111
+ .luxe-file-upload input { position: absolute; inset: 0; opacity: 0; width: 100%; cursor: pointer; }
1112
+ .luxe-file-drop { display: grid; align-content: center; justify-items: center; gap: 16px; min-height: 160px; padding: 16px; border: 1px solid var(--luxe-border); color: var(--luxe-text); text-align: center; font: 11px/1.5 var(--luxe-font-control); text-transform: uppercase; }
1113
+ .luxe-file-drop svg { width: 36px; height: 36px; stroke-width: 1; }
1114
+ .luxe-file-upload:focus-within, .luxe-switch-segment:focus-within { outline: 2px solid var(--luxe-focus); outline-offset: 3px; }
1115
+ .luxe-select-panel { border: 1px solid var(--luxe-border); padding: 4px; }
1116
+ .luxe-option { display: block; width: 100%; min-height: 34px; padding: 8px 10px; border: 0; border-radius: 0; box-shadow: none; color: var(--luxe-text); background: transparent; font: 11px var(--luxe-font-control); text-align: left; text-transform: uppercase; }
1117
+ .luxe-option[aria-selected="true"] { color: var(--luxe-on-danger); background: var(--luxe-danger); }
1118
+ .luxe-check, .luxe-radio { min-height: 32px; gap: 8px; font: 11px var(--luxe-font-control); }
1119
+ .luxe-sheet :is(.luxe-check, .luxe-radio) { display: flex; margin: 0; }
1120
+ .luxe-check-control, .luxe-radio-control { width: 16px; height: 16px; min-width: 16px; border: 1px solid var(--luxe-border); background: transparent; box-shadow: none; }
1121
+ .luxe-check input:checked + .luxe-check-control, .luxe-radio input:checked + .luxe-radio-control { background: var(--luxe-primary); color: var(--luxe-on-primary); border-color: var(--luxe-border); }
1122
+ /** A geometric check avoids font-dependent baseline and glyph overshoot. */
1123
+ .luxe-check input:checked + .luxe-check-control::after { content: ""; display: block; width: 4px; height: 8px; border: solid currentColor; border-width: 0 2px 2px 0; transform: translateY(-1px) rotate(45deg); }
1124
+ .luxe-switch-segment { position: relative; display: inline-grid; grid-template-columns: repeat(2, 1fr); width: 140px; min-height: 36px; border: 1px solid var(--luxe-border); cursor: pointer; }
1125
+ .luxe-switch-segment input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; }
1126
+ .luxe-switch-segment span { display: grid; place-items: center; min-height: 34px; font: 11px var(--luxe-font-control); text-transform: uppercase; }
1127
+ .luxe-switch-segment input:not(:checked) ~ span:first-of-type, .luxe-switch-segment input:checked ~ span:last-of-type { color: var(--luxe-on-primary); background: var(--luxe-primary); }
1128
+ .luxe-range { appearance: none; width: 100%; height: 28px; padding: 0; margin: 0; border: 0; background: transparent; }
1129
+ .luxe-range::-webkit-slider-runnable-track { height: 1px; background: var(--luxe-border); }
1130
+ .luxe-range::-webkit-slider-thumb { appearance: none; width: 16px; height: 16px; margin-top: -7px; border: 1px solid var(--luxe-brass); border-radius: 50%; background: var(--luxe-brass-light); }
1131
+ .luxe-range::-moz-range-track { height: 1px; background: var(--luxe-border); }
1132
+ .luxe-range::-moz-range-thumb { width: 14px; height: 14px; border: 1px solid var(--luxe-brass); border-radius: 50%; background: var(--luxe-brass-light); }
1133
+ .luxe-range-scale { position: relative; display: flex; justify-content: space-between; color: var(--luxe-text-muted); font: 10px var(--luxe-font-mono); }
1134
+ .luxe-range-scale::before { content: ""; position: absolute; inset: -18px 0 auto; height: 6px; background: repeating-linear-gradient(90deg, var(--luxe-rule-soft) 0 1px, transparent 1px 12.5%); pointer-events: none; }
1135
+ .luxe-progress { height: 8px; border: 0; background: var(--luxe-surface-soft); border-radius: 0; }
1136
+ .luxe-progress-bar { display: block; height: 100%; background: var(--luxe-primary); }
1137
+ .luxe-segmented-progress { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; height: 5px; }
1138
+ .luxe-segmented-progress i { background: var(--luxe-surface-soft); }
1139
+ .luxe-segmented-progress .is-done { background: var(--luxe-brass); }
1140
+ .luxe-meter { position: relative; height: 8px; background: linear-gradient(90deg, var(--luxe-danger) 0 25%, var(--luxe-brass) 25% 66%, var(--luxe-surface-soft) 66%); }
1141
+ .luxe-meter::after { content: ""; position: absolute; left: clamp(0%, calc(var(--luxe-value, 80) * 1%), 100%); top: -5px; width: 3px; height: 18px; background: var(--luxe-status-success); }
1142
+ .luxe-alert { display: flex; align-items: center; gap: 8px; padding: 8px; border: 1px solid var(--luxe-status-success); background: transparent; box-shadow: none; font: 12px/1.45 var(--luxe-font-body); }
1143
+ .luxe-alert > div { flex: 1; min-width: 0; }
1144
+ .luxe-alert-mark, .luxe-alert-close { flex-shrink: 0; }
1145
+ .luxe-alert-success { --luxe-alert-color: var(--luxe-status-success); --luxe-alert-fill: var(--luxe-success); --luxe-alert-ink: var(--luxe-on-success); }
1146
+ .luxe-sheet .luxe-alert-warning { --luxe-alert-color: var(--luxe-warning); --luxe-alert-fill: var(--luxe-warning); --luxe-alert-ink: var(--luxe-on-warning); border-color: var(--luxe-warning); }
1147
+ .luxe-sheet .luxe-alert-danger { --luxe-alert-color: var(--luxe-status-danger); --luxe-alert-fill: var(--luxe-danger); --luxe-alert-ink: var(--luxe-on-danger); border-color: var(--luxe-status-danger); }
1148
+ .luxe-alert strong { display: block; color: var(--luxe-alert-color); font: 600 10px/1.4 var(--luxe-font-control); text-transform: uppercase; }
1149
+ .luxe-alert-mark { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; color: var(--luxe-alert-ink); background: var(--luxe-alert-fill); }
1150
+ .luxe-alert-mark svg { width: 16px; height: 16px; }
1151
+ .luxe-alert-mark > span { display: grid; place-items: center; width: 100%; height: 100%; line-height: 1; }
1152
+ .luxe-alert-mark svg { display: block; }
1153
+ /** Darkened warning pigment preserves a light foreground across theme palettes. */
1154
+ .luxe-badge-warning { background: #624315; color: #fff; }
1155
+ .luxe-alert-warning .luxe-alert-mark { background: #624315; color: #fff; }
1156
+ @supports (color: color-mix(in srgb, #fff, #000)) {
1157
+ .luxe-badge-warning { background: color-mix(in srgb, var(--luxe-warning) 45%, #000); }
1158
+ .luxe-alert-warning .luxe-alert-mark { background: color-mix(in srgb, var(--luxe-warning) 45%, #000); }
1159
+ }
1160
+ .luxe-alert-close { display: grid; place-items: center; min-height: 24px; width: 24px; padding: 0; border: 0; background: transparent; box-shadow: none; color: var(--luxe-text-muted); }
1161
+ .luxe-alert-close svg { width: 16px; height: 16px; }
1162
+ .luxe-tabs { border: 0; }
1163
+ .luxe-tab-list { display: flex; border-bottom: 1px solid var(--luxe-border); }
1164
+ .luxe-tab { flex: 1; min-width: 0; min-height: 34px; padding: 8px; border: 1px solid transparent; border-radius: 0; box-shadow: none; color: var(--luxe-text); background: transparent; font: 11px var(--luxe-font-control); text-transform: uppercase; }
1165
+ .luxe-tab[aria-selected="true"] { border-color: var(--luxe-border); border-bottom-color: var(--luxe-surface); }
1166
+ .luxe-tab-panel { padding: 20px 0; font-size: 13px; line-height: 1.5; }
1167
+ .luxe-table-wrap { overflow-x: auto; background: transparent; border: 0; box-shadow: none; }
1168
+ .luxe-sheet .luxe-table { border: 0; font: 12px/1.4 var(--luxe-font-body); }
1169
+ .luxe-table th { background: transparent; border-block: 1px solid var(--luxe-border); color: var(--luxe-text); font: 10px var(--luxe-font-control); text-transform: uppercase; }
1170
+ .luxe-table td { border-bottom: 1px solid var(--luxe-rule-soft); }
1171
+ .luxe-sheet .luxe-table :is(th, td) { padding: 8px 6px; white-space: nowrap; }
1172
+ .luxe-badge-medallion { display: inline-grid; place-items: center; width: 48px; height: 48px; padding: 4px; border: 4px double var(--luxe-brass-light); border-radius: 50%; color: var(--luxe-on-primary); background: var(--luxe-primary); font: 10px var(--luxe-font-control); text-transform: uppercase; }
1173
+ .luxe-badge-medallion.luxe-badge-danger { color: var(--luxe-on-danger); background: var(--luxe-danger); }
1174
+ .luxe-badge-brass { color: var(--luxe-on-brass); background: var(--luxe-brass-light); }
1175
+ .luxe-pagination { display: inline-flex; }
1176
+ .luxe-pagination button { width: 32px; min-height: 34px; padding: 4px; border: 1px solid var(--luxe-rule-soft); border-radius: 0; box-shadow: none; color: var(--luxe-text); background: transparent; font: 11px var(--luxe-font-mono); }
1177
+ .luxe-pagination button[aria-current="page"] { color: var(--luxe-on-primary); background: var(--luxe-primary); }
1178
+ .luxe-stepper { display: inline-grid; grid-template-columns: 36px 64px 36px; border: 1px solid var(--luxe-border); }
1179
+ .luxe-stepper :is(button, output) { display: grid; place-items: center; min-height: 34px; padding: 0; border: 0; border-radius: 0; box-shadow: none; color: var(--luxe-text); background: transparent; font: 12px var(--luxe-font-mono); }
1180
+ .luxe-stepper output { border-inline: 1px solid var(--luxe-rule-soft); }
1181
+ .luxe-stepper svg, .luxe-pagination svg { width: 16px; height: 16px; }
1182
+ .luxe-tooltip, [data-ui="editorial-luxe"] :where(.ui-tooltip, [role="tooltip"]) { position: relative; color: var(--luxe-on-primary); background: var(--luxe-primary); border: 0; box-shadow: none; padding: 16px; font: 12px/1.5 var(--luxe-font-body); }
1183
+ .luxe-tooltip::after { content: ""; position: absolute; bottom: -7px; left: 24px; width: 14px; height: 14px; rotate: 45deg; background: var(--luxe-primary); }
1184
+ .luxe-dialog { max-width: 520px; padding: 16px; border: 3px double var(--luxe-border); border-radius: 0; color: var(--luxe-text); background: var(--luxe-surface-strong); box-shadow: none; text-align: center; }
1185
+ .luxe-sheet .luxe-dialog { padding: 12px; border: 3px double var(--luxe-border); background: var(--luxe-surface-strong); }
1186
+ dialog.luxe-dialog:not([open]) { display: none; }
1187
+ dialog.luxe-dialog[open] { position: fixed; inset: 0; margin: auto; width: min(520px, calc(100% - 32px)); }
1188
+ .luxe-dialog::backdrop { background: rgb(0 0 0 / .6); }
1189
+ .luxe-dialog-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; margin-top: 12px; }
1190
+ .luxe-details { border-top: 1px solid var(--luxe-border); font-size: 12px; }
1191
+ .luxe-details summary { padding: 12px 0; font-family: var(--luxe-font-control); }
1192
+ [data-ui="editorial-luxe"][data-mode] details.luxe-details { border: 0; border-top: 1px solid var(--luxe-border); padding: 0; background: transparent; box-shadow: none; }
1193
+ .luxe-skeleton { display: grid; gap: 8px; }
1194
+ .luxe-skeleton i { height: 6px; background: var(--luxe-surface-soft); animation: luxe-pulse 1.7s ease-in-out infinite; }
1195
+ .luxe-skeleton i:nth-child(2) { width: 76%; }
1196
+ /** Counter-rotating fine rings echo the engraved medallion and double-rule frame. */
1197
+ .luxe-spinner, .luxe-loading-spinner, [data-ui="editorial-luxe"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) { position: relative; flex-shrink: 0; width: 28px; height: 28px; inline-size: 28px; block-size: 28px; border: 2px solid var(--luxe-rule-soft); border-top-color: var(--luxe-brass); border-bottom-color: var(--luxe-brass); border-radius: 50%; background: none; box-shadow: none; clip-path: none; animation: luxe-spin 1800ms linear infinite; }
1198
+ .luxe-spinner::before, .luxe-loading-spinner::before, [data-ui="editorial-luxe"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner])::before { content: ""; position: absolute; inset: 4px; border: 1px solid transparent; border-inline-color: var(--luxe-text); border-radius: 50%; animation: luxe-counter-spin 1200ms linear infinite; }
1199
+ .luxe-spinner-sm { width: 18px; height: 18px; inline-size: 18px; block-size: 18px; }
1200
+ .luxe-spinner-lg { width: 40px; height: 40px; inline-size: 40px; block-size: 40px; }
1201
+ .luxe-spinner-sm::before { inset: 2px; }
1202
+ .luxe-button[aria-busy="true"]::after, [data-ui="editorial-luxe"] :where(button[aria-busy="true"])::after { flex: 0 0 12px; width: 12px; height: 12px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; background: none; box-shadow: none; clip-path: none; animation: luxe-spin 900ms linear infinite; }
1203
+ .luxe-sheet [hidden] { display: none !important; }
1204
+ .luxe-sheet :is(button, a, input, select, textarea, [tabindex]):focus-visible { outline: 2px solid var(--luxe-focus); outline-offset: 3px; }
1205
+ /* Shared semantic and native surfaces retain the same flat, ruled material. */
1206
+ .luxe-card, .luxe-panel, .luxe-toolbar, .luxe-well, .luxe-card-service, .luxe-feature-strip, .luxe-callout-bar { background: var(--luxe-surface); border: 1px solid var(--luxe-border); border-radius: 0; box-shadow: none; }
1207
+ [data-ui="editorial-luxe"][data-mode] :where(fieldset, article, aside) { background: var(--luxe-surface); }
1208
+ @keyframes luxe-pulse { 50% { opacity: .45; } }
1209
+ @keyframes luxe-counter-spin { to { transform: rotate(-360deg); } }
1210
+ @media (prefers-reduced-motion: reduce) {
1211
+ .luxe-spinner, .luxe-loading-spinner, .luxe-spinner::before, .luxe-loading-spinner::before, [data-ui="editorial-luxe"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]), [data-ui="editorial-luxe"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner])::before { animation: none !important; }
1212
+ .luxe-spinner, .luxe-skeleton i, .luxe-button[aria-busy="true"]::after, [data-ui="editorial-luxe"] :where(.ui-spinner, button[aria-busy="true"])::after { animation: none !important; }
1213
+ }
1214
+ @media (pointer: coarse) {
1215
+ .luxe-sheet :is(button, .luxe-input, .luxe-select, .luxe-check, .luxe-radio, .luxe-switch-segment, .luxe-range, .luxe-file-drop) { min-height: 44px; }
1216
+ .luxe-sheet .luxe-alert-close, .luxe-sheet .luxe-pagination button { width: 44px; }
1217
+ .luxe-sheet .luxe-stepper { grid-template-columns: 44px 64px 44px; }
1218
+ }
1219
+ /** Warning actions inherit preset geometry and use the paired semantic warning colors. */
1220
+ [data-ui="editorial-luxe"][data-mode] .luxe-button.luxe-button-warning {
1221
+ background: var(--luxe-warning);
1222
+ color: var(--luxe-on-warning);
1223
+ border-color: var(--luxe-warning);
1224
+ text-shadow: none;
1225
+ }
1226
+
1227
+ /** Keeps small contrast-mode danger actions on their AA foreground token. */
1228
+ [data-ui="editorial-luxe"][data-theme][data-mode="contrast"] .luxe-button.luxe-button-danger {
1229
+ background: #ff5270;
1230
+ color: rgb(var(--usk-danger-text-rgb, 0 0 0));
1231
+ border-color: #ff5270;
1232
+ text-shadow: none;
1233
+ }
1234
+
1235
+ }
1236
+
1237
+ @layer ui-style-kit.presets {
1238
+ /**
1239
+ * Preserves Editorial Lux's numeral-first seal hierarchy after shared seal
1240
+ * normalization runs in the preset layer.
1241
+ */
1242
+ [data-ui="editorial-luxe"][data-mode] .luxe-badge-seal > strong {
1243
+ font-size: 28px;
1244
+ line-height: 1;
1245
+ }
1246
+
1247
+ [data-ui="editorial-luxe"][data-mode] .luxe-badge-seal > small {
1248
+ font-size: 12px;
1249
+ line-height: 1.25;
1250
+ }
1251
+ }