ui-style-kit-css 2.3.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/CHANGELOG.md +57 -2
  2. package/CONTRIBUTING.md +8 -1
  3. package/README.md +102 -44
  4. package/STYLE-MAP.md +14 -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 +47898 -15121
  26. package/dist/ui-style-kit.min.css +2 -2
  27. package/dist/ui-style-kit.visual.css +47771 -15122
  28. package/dist/ui-style-kit.visual.min.css +2 -2
  29. package/dist/ui-style-kit.with-bridge.css +47932 -15145
  30. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  31. package/dist/visual/art-deco.css +3247 -295
  32. package/dist/visual/bauhaus.css +2 -4692
  33. package/dist/visual/bento.css +2 -4708
  34. package/dist/visual/brutalism.css +1229 -231
  35. package/dist/visual/clay.css +2 -4786
  36. package/dist/visual/cyberpunk.css +2663 -282
  37. package/dist/visual/data-terminal.css +2064 -276
  38. package/dist/visual/editorial-luxe.css +2315 -259
  39. package/dist/visual/industrial-utility.css +3142 -270
  40. package/dist/visual/maximalist.css +2185 -454
  41. package/dist/visual/minimal-saas.css +1503 -398
  42. package/dist/visual/neo-noir.css +2 -4787
  43. package/dist/visual/neumorphism.css +1690 -402
  44. package/dist/visual/organic-modern.css +2 -4764
  45. package/dist/visual/paper-editorial.css +2977 -292
  46. package/dist/visual/retro-glass.css +2625 -299
  47. package/dist/visual/retrofuturism.css +1885 -397
  48. package/dist/visual/tactile.css +2716 -498
  49. package/dist/visual/technical-blueprint.css +2599 -267
  50. package/dist/visual/y2k.css +1906 -309
  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/COLOR-THEMES.md +63 -0
  56. package/docs/DEMO-SHOWCASE.md +65 -0
  57. package/docs/ECOSYSTEM.md +4 -4
  58. package/docs/EDITORIAL-LUX.md +75 -0
  59. package/docs/INDUSTRIAL-UTILITY.md +131 -0
  60. package/docs/NATIVE-ELEMENTS.md +23 -17
  61. package/docs/NEO-NOIR.md +94 -0
  62. package/docs/ORGANIC-MODERN.md +91 -0
  63. package/docs/PAPER-EDITORIAL.md +63 -0
  64. package/docs/PUBLISHING.md +31 -10
  65. package/docs/RELEASE-2.4.0.md +88 -0
  66. package/docs/RELEASE-2.4.1.md +35 -0
  67. package/docs/RETRO-GLASS.md +105 -0
  68. package/docs/STYLE-GUIDE.md +41 -26
  69. package/docs/TACTILE.md +38 -0
  70. package/docs/TECHNICAL-BLUEPRINT.md +60 -0
  71. package/docs/TOKENS.md +80 -3
  72. package/docs/superpowers/plans/2026-09-04-library-wide-theme-fallback-and-fidelity.md +331 -0
  73. package/docs/superpowers/specs/2026-09-04-library-wide-theme-fallback-and-fidelity-design.md +113 -0
  74. package/manifest.json +624 -28
  75. package/package.json +20 -11
  76. package/styles/art-deco.css +1402 -17
  77. package/styles/assets/bauhaus-barlow-OFL.txt +93 -0
  78. package/styles/assets/bauhaus-barlow-semibold.ttf +0 -0
  79. package/styles/assets/bauhaus-barlow.ttf +0 -0
  80. package/styles/assets/bauhaus-condensed-OFL.txt +93 -0
  81. package/styles/assets/bauhaus-condensed-bold.ttf +0 -0
  82. package/styles/assets/bauhaus-condensed-extrabold.ttf +0 -0
  83. package/styles/assets/bento-manrope-OFL.txt +93 -0
  84. package/styles/assets/bento-manrope.ttf +0 -0
  85. package/styles/assets/clay-grain.png +0 -0
  86. package/styles/assets/clay-rounded-OFL.txt +93 -0
  87. package/styles/assets/clay-rounded.ttf +0 -0
  88. package/styles/assets/neo-noir-corner-dark.png +0 -0
  89. package/styles/assets/neo-noir-corner-light.png +0 -0
  90. package/styles/assets/neo-noir-texture-dark.png +0 -0
  91. package/styles/assets/neo-noir-texture-light.png +0 -0
  92. package/styles/assets/organic-display-OFL.txt +93 -0
  93. package/styles/assets/organic-display.ttf +0 -0
  94. package/styles/assets/organic-icons-LICENSE.txt +21 -0
  95. package/styles/assets/organic-sans-OFL.txt +93 -0
  96. package/styles/assets/organic-sans.ttf +0 -0
  97. package/styles/bauhaus.css +881 -110
  98. package/styles/bento.css +1182 -113
  99. package/styles/brutalism.css +266 -15
  100. package/styles/clay.css +1307 -72
  101. package/styles/compat-layout.css +1 -2
  102. package/styles/components.css +107 -36
  103. package/styles/content-overflow.css +11 -5
  104. package/styles/cyberpunk.css +1856 -51
  105. package/styles/data-terminal.css +1122 -18
  106. package/styles/editorial-luxe.css +581 -17
  107. package/styles/industrial-utility.css +1775 -16
  108. package/styles/interactive-surface-bridge.css +30 -20
  109. package/styles/interactive-surface-theme.css +21 -11
  110. package/styles/maximalist.css +1215 -133
  111. package/styles/minimal-saas.css +465 -93
  112. package/styles/native-elements.css +347 -171
  113. package/styles/neo-noir.css +661 -19
  114. package/styles/neumorphism.css +1021 -149
  115. package/styles/organic-modern.css +693 -23
  116. package/styles/paper-editorial.css +1053 -17
  117. package/styles/retro-glass.css +639 -50
  118. package/styles/retrofuturism.css +948 -60
  119. package/styles/tactile.css +1813 -111
  120. package/styles/technical-blueprint.css +673 -22
  121. package/styles/theme-colors.css +412 -2
  122. package/styles/y2k.css +954 -46
@@ -7,7 +7,8 @@
7
7
  ========================================================= */
8
8
 
9
9
  @layer ui-style-kit.native_elements {
10
- [data-ui][data-theme][data-mode] {
10
+ [data-ui][data-mode] {
11
+ --usk-native-bg: rgb(var(--usk-bg-rgb));
11
12
  --usk-native-surface: rgb(var(--usk-surface-rgb));
12
13
  --usk-native-surface-strong: rgb(var(--usk-surface-strong-rgb));
13
14
  --usk-native-surface-soft: rgb(var(--usk-surface-soft-rgb));
@@ -44,6 +45,52 @@
44
45
  --usk-native-thumb: var(--usk-native-surface-strong);
45
46
  --usk-native-thumb-border: var(--usk-native-primary);
46
47
  --usk-native-indicator: var(--usk-native-primary);
48
+ --usk-native-choice-size: 1.5rem;
49
+ --usk-native-choice-background: var(--usk-native-control-bg);
50
+ --usk-native-choice-border: var(--usk-native-border-width) solid var(--usk-native-border);
51
+ --usk-native-checkbox-radius: .3rem;
52
+ --usk-native-radio-radius: 50%;
53
+ --usk-native-choice-shadow: none;
54
+ --usk-native-choice-checked-background: var(--usk-native-primary);
55
+ --usk-native-choice-mark-color: var(--usk-native-on-primary);
56
+ --usk-native-select-indicator-image: linear-gradient(45deg, transparent 50%, var(--usk-native-indicator) 50%), linear-gradient(135deg, var(--usk-native-indicator) 50%, transparent 50%);
57
+ --usk-native-select-indicator-size: .42rem .42rem, .42rem .42rem;
58
+ --usk-native-select-indicator-position: calc(100% - 1.15rem) 50%, calc(100% - .85rem) 50%;
59
+ --usk-native-select-padding-inline-end: 2.5rem;
60
+ --usk-native-range-track-size: .45rem;
61
+ --usk-native-range-track-background: var(--usk-native-track);
62
+ --usk-native-range-track-border: 0 solid transparent;
63
+ --usk-native-range-track-radius: 999px;
64
+ --usk-native-range-track-shadow: none;
65
+ --usk-native-range-progress-background: var(--usk-native-track-fill);
66
+ --usk-native-range-thumb-size: 1.2rem;
67
+ --usk-native-range-thumb-background: var(--usk-native-thumb);
68
+ --usk-native-range-thumb-border: var(--usk-native-border-width) solid var(--usk-native-thumb-border);
69
+ --usk-native-range-thumb-radius: 50%;
70
+ --usk-native-range-thumb-shadow: var(--usk-native-shadow);
71
+ --usk-native-progress-size: .9rem;
72
+ --usk-native-progress-track-background: var(--usk-native-track);
73
+ --usk-native-progress-track-border: 0 solid transparent;
74
+ --usk-native-progress-track-radius: 999px;
75
+ --usk-native-progress-track-shadow: none;
76
+ --usk-native-progress-value-background: var(--usk-native-track-fill);
77
+ --usk-native-progress-value-radius: inherit;
78
+ --usk-native-progress-value-shadow: none;
79
+ --usk-native-meter-optimum-background: var(--usk-native-success);
80
+ --usk-native-meter-suboptimum-background: var(--usk-native-warning);
81
+ --usk-native-meter-critical-background: var(--usk-native-danger);
82
+ --usk-native-file-button-background: var(--usk-native-primary);
83
+ --usk-native-file-button-border: var(--usk-native-border-width) solid var(--usk-native-primary);
84
+ --usk-native-file-button-radius: var(--usk-native-radius-sm);
85
+ --usk-native-file-button-shadow: var(--usk-native-shadow);
86
+ --usk-native-color-swatch-border: 0 solid transparent;
87
+ --usk-native-color-swatch-radius: calc(var(--usk-native-radius-sm) / 1.5);
88
+ --usk-native-indicator-opacity: .78;
89
+ --usk-native-indicator-filter: none;
90
+ --usk-native-scrollbar-size: .75rem;
91
+ --usk-native-scrollbar-track: var(--usk-native-track);
92
+ --usk-native-scrollbar-thumb: var(--usk-native-thumb-border);
93
+ --usk-native-scrollbar-radius: 999px;
47
94
  --usk-native-shadow: none;
48
95
  --usk-native-shadow-md: var(--usk-native-shadow);
49
96
  --usk-native-focus-ring: 0 0 0 3px rgb(var(--usk-focus-rgb) / .28);
@@ -51,7 +98,7 @@
51
98
  --usk-motion-easing: cubic-bezier(0.2, 0, 0.2, 1);
52
99
 
53
100
  /* Shared semantic values are fully typed so optional companion and third-party consumers can use them directly. */
54
- --ui-color-bg: rgb(var(--usk-bg-rgb));
101
+ --ui-color-bg: var(--usk-native-bg);
55
102
  --ui-color-surface: var(--usk-native-surface-strong);
56
103
  --ui-color-text: var(--usk-native-text);
57
104
  --ui-color-muted: var(--usk-native-text-muted);
@@ -65,7 +112,7 @@
65
112
  --ui-motion-easing: var(--usk-motion-easing);
66
113
  }
67
114
 
68
- [data-ui][data-theme][data-mode] :where(h1, h2, h3, h4, h5, h6) {
115
+ [data-ui][data-mode] :where(h1, h2, h3, h4, h5, h6) {
69
116
  color: var(--usk-native-text);
70
117
  font-family: var(--usk-native-font-heading);
71
118
  line-height: 1.15;
@@ -73,42 +120,42 @@
73
120
  }
74
121
 
75
122
  @supports (text-wrap: balance) {
76
- [data-ui][data-theme][data-mode] :where(h1, h2, h3, h4, h5, h6) { text-wrap: balance; }
123
+ [data-ui][data-mode] :where(h1, h2, h3, h4, h5, h6) { text-wrap: balance; }
77
124
  }
78
125
 
79
- [data-ui][data-theme][data-mode] :where(hgroup) {
126
+ [data-ui][data-mode] :where(hgroup) {
80
127
  display: grid;
81
128
  gap: .35rem;
82
129
  margin-block: 0 1rem;
83
130
  }
84
131
 
85
- [data-ui][data-theme][data-mode] :where(h1) { font-size: clamp(2rem, 5vw, 3.5rem); }
86
- [data-ui][data-theme][data-mode] :where(h2) { font-size: clamp(1.55rem, 3vw, 2.35rem); }
87
- [data-ui][data-theme][data-mode] :where(h3) { font-size: clamp(1.25rem, 2vw, 1.65rem); }
132
+ [data-ui][data-mode] :where(h1) { font-size: clamp(2rem, 5vw, 3.5rem); }
133
+ [data-ui][data-mode] :where(h2) { font-size: clamp(1.55rem, 3vw, 2.35rem); }
134
+ [data-ui][data-mode] :where(h3) { font-size: clamp(1.25rem, 2vw, 1.65rem); }
88
135
 
89
- [data-ui][data-theme][data-mode] :where(p) {
136
+ [data-ui][data-mode] :where(p) {
90
137
  margin: 0 0 1rem;
91
138
  color: var(--usk-native-text-muted);
92
139
  line-height: 1.7;
93
140
  }
94
141
 
95
- [data-ui][data-theme][data-mode] :where(a) {
142
+ [data-ui][data-mode] :where(a) {
96
143
  color: var(--usk-native-link);
97
144
  text-decoration-thickness: .08em;
98
145
  text-underline-offset: .18em;
99
146
  }
100
147
 
101
- [data-ui][data-theme][data-mode] :where(a:hover) { color: var(--usk-native-primary-hover); }
148
+ [data-ui][data-mode] :where(a:hover) { color: var(--usk-primary-ink, var(--usk-native-primary-hover)); }
102
149
 
103
- [data-ui][data-theme][data-mode] :where(ul, ol, menu) {
150
+ [data-ui][data-mode] :where(ul, ol, menu) {
104
151
  margin: 0 0 1rem;
105
152
  padding-left: 1.35rem;
106
153
  color: var(--usk-native-text-muted);
107
154
  }
108
155
 
109
- [data-ui][data-theme][data-mode] :where(li) { margin-block: .25rem; }
156
+ [data-ui][data-mode] :where(li) { margin-block: .25rem; }
110
157
 
111
- [data-ui][data-theme][data-mode] :where(blockquote) {
158
+ [data-ui][data-mode] :where(blockquote) {
112
159
  margin: 1.25rem 0;
113
160
  padding: 1rem 1.25rem;
114
161
  color: var(--usk-native-text);
@@ -117,7 +164,7 @@
117
164
  border-radius: var(--usk-native-radius);
118
165
  }
119
166
 
120
- [data-ui][data-theme][data-mode] :where(code, kbd, samp) {
167
+ [data-ui][data-mode] :where(code, kbd, samp) {
121
168
  padding: .15em .35em;
122
169
  color: var(--usk-native-text);
123
170
  background: var(--usk-native-surface-soft);
@@ -127,7 +174,7 @@
127
174
  font-size: .92em;
128
175
  }
129
176
 
130
- [data-ui][data-theme][data-mode] :where(pre) {
177
+ [data-ui][data-mode] :where(pre) {
131
178
  overflow: auto;
132
179
  margin: 1rem 0;
133
180
  padding: 1rem;
@@ -137,57 +184,88 @@
137
184
  border-radius: var(--usk-native-radius);
138
185
  }
139
186
 
140
- [data-ui][data-theme][data-mode] :where(pre code) {
187
+ [data-ui][data-mode] :where(pre code) {
141
188
  display: block;
142
189
  padding: 0;
143
190
  background: transparent;
144
191
  border: 0;
145
192
  }
146
193
 
147
- [data-ui][data-theme][data-mode] :where(hr) {
194
+ [data-ui][data-mode] :where(hr) {
148
195
  height: 1px;
149
196
  margin: 2rem 0;
150
197
  background: var(--usk-native-border);
151
198
  border: 0;
152
199
  }
153
200
 
154
- [data-ui][data-theme][data-mode] :where(mark) {
201
+ [data-ui][data-mode] :where(mark) {
155
202
  padding-inline: .15em;
156
203
  color: var(--usk-native-text);
157
204
  background: rgb(var(--usk-warning-rgb) / .32);
158
205
  border-radius: .2em;
159
206
  }
160
207
 
161
- [data-ui][data-theme][data-mode] :where(small, sub, sup, rt, rp) { color: var(--usk-native-text-muted); }
162
- [data-ui][data-theme][data-mode] :where(rt, rp) { font-size: .72em; }
208
+ [data-ui][data-mode] :where(small, sub, sup, rt, rp) { color: var(--usk-native-text-muted); }
209
+ [data-ui][data-mode] :where(rt, rp) { font-size: .72em; }
163
210
 
164
- [data-ui][data-theme][data-mode] :where(abbr[title]) {
211
+ [data-ui][data-mode] :where(abbr[title]) {
165
212
  text-decoration: underline dotted var(--usk-native-primary);
166
213
  text-underline-offset: .18em;
167
214
  cursor: help;
168
215
  }
169
216
 
170
- [data-ui][data-theme][data-mode] :where(img, picture, video, canvas, svg, iframe, audio, object, embed, math) {
217
+ [data-ui][data-mode] :where(img, picture, video, canvas, svg, iframe, audio, object, embed, math) {
171
218
  max-width: 100%;
172
219
  }
173
220
 
174
- [data-ui][data-theme][data-mode] :where(img, video, canvas, svg, iframe) { height: auto; }
221
+ [data-ui][data-mode] :where(img, video, canvas, svg, iframe) { height: auto; }
175
222
 
176
- [data-ui][data-theme][data-mode] :where(figure) { margin: 1.25rem 0; }
223
+ /** Native playback retains browser accessibility while inheriting preset material and geometry. */
224
+ [data-ui][data-mode] audio[controls] {
225
+ display: block;
226
+ box-sizing: border-box;
227
+ inline-size: 100%;
228
+ min-inline-size: 0;
229
+ block-size: 60px;
230
+ padding: 3px;
231
+ background: var(--usk-native-control-bg);
232
+ color: var(--usk-native-text);
233
+ border: var(--usk-native-border-width) solid var(--usk-native-border);
234
+ border-radius: var(--usk-native-radius);
235
+ box-shadow: var(--usk-native-shadow);
236
+ accent-color: var(--usk-native-primary);
237
+ color-scheme: light;
238
+ }
239
+ [data-ui][data-mode="dark"] audio[controls],
240
+ [data-ui][data-mode="contrast"] audio[controls] { color-scheme: dark; }
241
+ [data-ui][data-mode] audio[controls]::-webkit-media-controls-enclosure {
242
+ border-radius: var(--usk-native-radius);
243
+ background: transparent;
244
+ }
245
+ [data-ui][data-mode] audio[controls]::-webkit-media-controls-panel {
246
+ background: var(--usk-native-control-bg);
247
+ color: var(--usk-native-text);
248
+ }
249
+ [data-ui][data-mode] audio[controls]:focus-visible {
250
+ outline: 2px solid var(--usk-native-focus);
251
+ outline-offset: 2px;
252
+ }
177
253
 
178
- [data-ui][data-theme][data-mode] :where(figcaption) {
254
+ [data-ui][data-mode] :where(figure) { margin: 1.25rem 0; }
255
+
256
+ [data-ui][data-mode] :where(figcaption) {
179
257
  margin-top: .5rem;
180
258
  color: var(--usk-native-text-muted);
181
259
  font-size: .9rem;
182
260
  }
183
261
 
184
- [data-ui][data-theme][data-mode] :where(form) {
262
+ [data-ui][data-mode] :where(form) {
185
263
  display: grid;
186
264
  gap: var(--usk-native-field-gap);
187
265
  min-inline-size: 0;
188
266
  }
189
267
 
190
- [data-ui][data-theme][data-mode] :where(fieldset) {
268
+ [data-ui][data-mode] :where(fieldset) {
191
269
  display: grid;
192
270
  gap: .9rem;
193
271
  min-inline-size: 0;
@@ -198,30 +276,30 @@
198
276
  border-radius: var(--usk-native-radius);
199
277
  }
200
278
 
201
- [data-ui][data-theme][data-mode] :where(legend) {
279
+ [data-ui][data-mode] :where(legend) {
202
280
  padding-inline: .35rem;
203
281
  color: var(--usk-native-text);
204
282
  font-weight: 900;
205
283
  }
206
284
 
207
- [data-ui][data-theme][data-mode] :where(label) {
285
+ [data-ui][data-mode] :where(label) {
208
286
  color: var(--usk-native-text);
209
287
  font-weight: 750;
210
288
  }
211
289
 
212
- [data-ui][data-theme][data-mode] :where(label:has(input), label:has(select), label:has(textarea)) {
290
+ [data-ui][data-mode] :where(label:has(input), label:has(select), label:has(textarea)) {
213
291
  display: grid;
214
292
  gap: var(--usk-native-field-gap);
215
293
  align-content: start;
216
294
  }
217
295
 
218
- [data-ui][data-theme][data-mode] :where(label:has(input[type="checkbox"]), label:has(input[type="radio"])) {
296
+ [data-ui][data-mode] :where(label:has(input[type="checkbox"]), label:has(input[type="radio"])) {
219
297
  display: inline-flex;
220
298
  gap: var(--usk-native-field-gap);
221
299
  align-items: center;
222
300
  }
223
301
 
224
- [data-ui][data-theme][data-mode] :where(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="button"]):not([type="submit"]):not([type="reset"]), textarea, select) {
302
+ [data-ui][data-mode] :where(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="button"]):not([type="submit"]):not([type="reset"]), textarea, select) {
225
303
  width: 100%;
226
304
  min-block-size: var(--usk-native-control-min-block-size);
227
305
  padding: var(--usk-native-control-padding-block) var(--usk-native-control-padding-inline);
@@ -232,24 +310,44 @@
232
310
  font: inherit;
233
311
  }
234
312
 
235
- [data-ui][data-theme][data-mode] :where(input, textarea, select, button) {
313
+ [data-ui][data-mode] :where(input, textarea, select, button) {
236
314
  color-scheme: inherit;
237
315
  accent-color: var(--usk-native-primary);
238
316
  }
239
317
 
240
- [data-ui][data-theme][data-mode] :where(input, textarea)::placeholder {
318
+ [data-ui][data-mode] :where(input, textarea)::placeholder {
241
319
  color: var(--usk-native-text-muted);
242
320
  opacity: .78;
243
321
  }
244
322
 
245
- [data-ui][data-theme][data-mode] :where(textarea) {
323
+ [data-ui][data-mode] :where(textarea) {
246
324
  min-height: 7rem;
247
325
  resize: vertical;
248
326
  }
249
327
 
250
- [data-ui][data-theme][data-mode] :where(input, textarea, select, button) { font: inherit; }
328
+ [data-ui][data-mode] :where(input, textarea, select, button) { font: inherit; }
251
329
 
252
- [data-ui][data-theme][data-mode] :where(button, input[type="button"], input[type="submit"], input[type="reset"]) {
330
+ [data-ui][data-mode] :where(select:not([multiple])) {
331
+ -webkit-appearance: none;
332
+ appearance: none;
333
+ padding-inline-end: var(--usk-native-select-padding-inline-end);
334
+ background-image: var(--usk-native-select-indicator-image);
335
+ background-repeat: no-repeat;
336
+ background-position: var(--usk-native-select-indicator-position);
337
+ background-size: var(--usk-native-select-indicator-size);
338
+ }
339
+
340
+ [data-ui][data-mode] :where(select[multiple]) {
341
+ padding-inline-end: var(--usk-native-control-padding-inline);
342
+ background-image: none;
343
+ }
344
+
345
+ [dir="rtl"] [data-ui][data-mode] :where(select:not([multiple])),
346
+ [data-ui][data-mode][dir="rtl"] :where(select:not([multiple])) {
347
+ --usk-native-select-indicator-position: 1.15rem 50%, .85rem 50%;
348
+ }
349
+
350
+ [data-ui][data-mode] :where(button, input[type="button"], input[type="submit"], input[type="reset"]) {
253
351
  -webkit-appearance: none;
254
352
  appearance: none;
255
353
  box-sizing: border-box;
@@ -258,7 +356,7 @@
258
356
  font: inherit;
259
357
  }
260
358
 
261
- [data-ui][data-theme][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
359
+ [data-ui][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
262
360
  color: var(--usk-native-on-primary);
263
361
  background: var(--usk-native-primary);
264
362
  border: var(--usk-native-border-width) solid var(--usk-native-primary);
@@ -269,29 +367,56 @@
269
367
  }
270
368
 
271
369
  /* Busy controls reserve a stable lane for the preset-owned spinner glyph. */
272
- [data-ui][data-theme][data-mode] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"]) {
370
+ [data-ui][data-mode] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"]) {
273
371
  display: inline-flex;
274
372
  align-items: center;
275
373
  justify-content: center;
276
374
  gap: .55rem;
277
375
  }
278
376
 
279
- [data-ui][data-theme][data-mode] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after {
377
+ [data-ui][data-mode] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after {
280
378
  flex: 0 0 1em;
281
379
  }
282
380
 
283
- [data-ui][data-theme][data-mode] :where(button:not([class]):hover, input[type="button"]:not([class]):hover, input[type="submit"]:not([class]):hover, input[type="reset"]:not([class]):hover) {
381
+ [data-ui][data-mode] :where(button:not([class]):hover, input[type="button"]:not([class]):hover, input[type="submit"]:not([class]):hover, input[type="reset"]:not([class]):hover) {
284
382
  background: var(--usk-native-primary-hover);
285
383
  border-color: var(--usk-native-primary-hover);
286
384
  }
287
385
 
288
- [data-ui][data-theme][data-mode] :where(input[type="checkbox"], input[type="radio"]) {
289
- inline-size: 1.5rem;
290
- block-size: 1.5rem;
386
+ [data-ui][data-mode] :where(input[type="checkbox"], input[type="radio"]) {
387
+ -webkit-appearance: none;
388
+ appearance: none;
389
+ inline-size: var(--usk-native-choice-size);
390
+ block-size: var(--usk-native-choice-size);
391
+ background: var(--usk-native-choice-background);
392
+ border: var(--usk-native-choice-border);
393
+ box-shadow: var(--usk-native-choice-shadow);
291
394
  accent-color: var(--usk-native-primary);
292
395
  }
293
396
 
294
- [data-ui][data-theme][data-mode] :where(input[type="range"]) {
397
+ [data-ui][data-mode] :where(input[type="checkbox"]) { border-radius: var(--usk-native-checkbox-radius); }
398
+ [data-ui][data-mode] :where(input[type="radio"]) { border-radius: var(--usk-native-radio-radius); }
399
+
400
+ [data-ui][data-mode] :where(input[type="checkbox"]:checked) {
401
+ background-color: var(--usk-native-choice-checked-background);
402
+ background-image: linear-gradient(135deg, transparent 42%, var(--usk-native-choice-mark-color) 42% 56%, transparent 56%), linear-gradient(45deg, transparent 54%, var(--usk-native-choice-mark-color) 54% 68%, transparent 68%);
403
+ }
404
+
405
+ [data-ui][data-mode] :where(input[type="checkbox"]:hover:not(:disabled), input[type="radio"]:hover:not(:disabled)) {
406
+ border-color: var(--usk-native-primary);
407
+ filter: brightness(1.04);
408
+ }
409
+
410
+ [data-ui][data-mode] :where(input[type="checkbox"]:active:not(:disabled), input[type="radio"]:active:not(:disabled)) {
411
+ filter: brightness(.94);
412
+ transform: scale(.94);
413
+ }
414
+
415
+ [data-ui][data-mode] :where(input[type="radio"]:checked) {
416
+ background: radial-gradient(circle, var(--usk-native-choice-mark-color) 0 31%, transparent 34%), var(--usk-native-choice-checked-background);
417
+ }
418
+
419
+ [data-ui][data-mode] :where(input[type="range"]) {
295
420
  -webkit-appearance: none;
296
421
  appearance: none;
297
422
  width: 100%;
@@ -300,40 +425,50 @@
300
425
  accent-color: var(--usk-native-primary);
301
426
  }
302
427
 
303
- [data-ui][data-theme][data-mode] :where(input[type="range"])::-webkit-slider-runnable-track {
304
- block-size: .45rem;
305
- background: var(--usk-native-track);
306
- border-radius: 999px;
428
+ [data-ui][data-mode] :where(input[type="range"])::-webkit-slider-runnable-track {
429
+ block-size: var(--usk-native-range-track-size);
430
+ background: var(--usk-native-range-track-background);
431
+ border: var(--usk-native-range-track-border);
432
+ border-radius: var(--usk-native-range-track-radius);
433
+ box-shadow: var(--usk-native-range-track-shadow);
307
434
  }
308
435
 
309
- [data-ui][data-theme][data-mode] :where(input[type="range"])::-moz-range-track {
310
- block-size: .45rem;
311
- background: var(--usk-native-track);
312
- border-radius: 999px;
436
+ [data-ui][data-mode] :where(input[type="range"])::-moz-range-track {
437
+ block-size: var(--usk-native-range-track-size);
438
+ background: var(--usk-native-range-track-background);
439
+ border: var(--usk-native-range-track-border);
440
+ border-radius: var(--usk-native-range-track-radius);
441
+ box-shadow: var(--usk-native-range-track-shadow);
313
442
  }
314
443
 
315
- [data-ui][data-theme][data-mode] :where(input[type="range"])::-webkit-slider-thumb {
444
+ [data-ui][data-mode] :where(input[type="range"])::-moz-range-progress {
445
+ block-size: var(--usk-native-range-track-size);
446
+ background: var(--usk-native-range-progress-background);
447
+ border-radius: var(--usk-native-range-track-radius);
448
+ }
449
+
450
+ [data-ui][data-mode] :where(input[type="range"])::-webkit-slider-thumb {
316
451
  -webkit-appearance: none;
317
452
  appearance: none;
318
- inline-size: 1.2rem;
319
- block-size: 1.2rem;
320
- margin-block-start: -.38rem;
321
- background: var(--usk-native-thumb);
322
- border: var(--usk-native-border-width) solid var(--usk-native-thumb-border);
323
- border-radius: 999px;
324
- box-shadow: var(--usk-native-shadow);
453
+ inline-size: var(--usk-native-range-thumb-size);
454
+ block-size: var(--usk-native-range-thumb-size);
455
+ margin-block-start: calc((var(--usk-native-range-track-size) - var(--usk-native-range-thumb-size)) / 2);
456
+ background: var(--usk-native-range-thumb-background);
457
+ border: var(--usk-native-range-thumb-border);
458
+ border-radius: var(--usk-native-range-thumb-radius);
459
+ box-shadow: var(--usk-native-range-thumb-shadow);
325
460
  }
326
461
 
327
- [data-ui][data-theme][data-mode] :where(input[type="range"])::-moz-range-thumb {
328
- inline-size: 1.2rem;
329
- block-size: 1.2rem;
330
- background: var(--usk-native-thumb);
331
- border: var(--usk-native-border-width) solid var(--usk-native-thumb-border);
332
- border-radius: 999px;
333
- box-shadow: var(--usk-native-shadow);
462
+ [data-ui][data-mode] :where(input[type="range"])::-moz-range-thumb {
463
+ inline-size: var(--usk-native-range-thumb-size);
464
+ block-size: var(--usk-native-range-thumb-size);
465
+ background: var(--usk-native-range-thumb-background);
466
+ border: var(--usk-native-range-thumb-border);
467
+ border-radius: var(--usk-native-range-thumb-radius);
468
+ box-shadow: var(--usk-native-range-thumb-shadow);
334
469
  }
335
470
 
336
- [data-ui][data-theme][data-mode] :where(input[type="color"]) {
471
+ [data-ui][data-mode] :where(input[type="color"]) {
337
472
  inline-size: 3rem;
338
473
  block-size: 2.4rem;
339
474
  padding: .2rem;
@@ -342,84 +477,86 @@
342
477
  border-radius: var(--usk-native-radius-sm);
343
478
  }
344
479
 
345
- [data-ui][data-theme][data-mode] :where(input[type="color"])::-webkit-color-swatch-wrapper {
480
+ [data-ui][data-mode] :where(input[type="color"])::-webkit-color-swatch-wrapper {
346
481
  padding: 0;
347
482
  }
348
483
 
349
- [data-ui][data-theme][data-mode] :where(input[type="color"])::-webkit-color-swatch {
350
- border: 0;
351
- border-radius: calc(var(--usk-native-radius-sm) / 1.5);
484
+ [data-ui][data-mode] :where(input[type="color"])::-webkit-color-swatch {
485
+ border: var(--usk-native-color-swatch-border);
486
+ border-radius: var(--usk-native-color-swatch-radius);
352
487
  }
353
488
 
354
- [data-ui][data-theme][data-mode] :where(input[type="color"])::-moz-color-swatch {
355
- border: 0;
356
- border-radius: calc(var(--usk-native-radius-sm) / 1.5);
489
+ [data-ui][data-mode] :where(input[type="color"])::-moz-color-swatch {
490
+ border: var(--usk-native-color-swatch-border);
491
+ border-radius: var(--usk-native-color-swatch-radius);
357
492
  }
358
493
 
359
- [data-ui][data-theme][data-mode] :where(input[type="file"]) { color: var(--usk-native-text-muted); }
494
+ [data-ui][data-mode] :where(input[type="file"]) { color: var(--usk-native-text-muted); }
360
495
 
361
496
  /* Keep pseudo-elements outside :where() because engines reject them inside selector-list arguments. */
362
- [data-ui][data-theme][data-mode] :where(input[type="file"])::file-selector-button,
363
- [data-ui][data-theme][data-mode] :where(input[type="file"])::-webkit-file-upload-button {
497
+ [data-ui][data-mode] :where(input[type="file"])::file-selector-button,
498
+ [data-ui][data-mode] :where(input[type="file"])::-webkit-file-upload-button {
364
499
  margin-inline-end: .75rem;
365
500
  padding: var(--usk-native-subcontrol-padding-block) var(--usk-native-subcontrol-padding-inline);
366
501
  color: var(--usk-native-on-primary);
367
- background: var(--usk-native-primary);
368
- border: var(--usk-native-border-width) solid var(--usk-native-primary);
369
- border-radius: var(--usk-native-radius-sm);
502
+ background: var(--usk-native-file-button-background);
503
+ border: var(--usk-native-file-button-border);
504
+ border-radius: var(--usk-native-file-button-radius);
505
+ box-shadow: var(--usk-native-file-button-shadow);
370
506
  font-weight: 800;
371
507
  cursor: pointer;
372
508
  }
373
509
 
374
- [data-ui][data-theme][data-mode] :where(input[type="file"]:hover)::file-selector-button,
375
- [data-ui][data-theme][data-mode] :where(input[type="file"]:hover)::-webkit-file-upload-button {
510
+ [data-ui][data-mode] :where(input[type="file"]:hover)::file-selector-button,
511
+ [data-ui][data-mode] :where(input[type="file"]:hover)::-webkit-file-upload-button {
376
512
  background: var(--usk-native-primary-hover);
377
513
  border-color: var(--usk-native-primary-hover);
378
514
  }
379
515
 
380
- [data-ui][data-theme][data-mode] :where(input[type="file"]:focus-visible)::file-selector-button,
381
- [data-ui][data-theme][data-mode] :where(input[type="file"]:focus-visible)::-webkit-file-upload-button {
516
+ [data-ui][data-mode] :where(input[type="file"]:focus-visible)::file-selector-button,
517
+ [data-ui][data-mode] :where(input[type="file"]:focus-visible)::-webkit-file-upload-button {
382
518
  box-shadow: var(--usk-native-focus-ring);
383
519
  }
384
520
 
385
- [data-ui][data-theme][data-mode] :where(input[type="file"]:active)::file-selector-button,
386
- [data-ui][data-theme][data-mode] :where(input[type="file"]:active)::-webkit-file-upload-button {
521
+ [data-ui][data-mode] :where(input[type="file"]:active)::file-selector-button,
522
+ [data-ui][data-mode] :where(input[type="file"]:active)::-webkit-file-upload-button {
387
523
  filter: brightness(.96);
388
524
  }
389
525
 
390
- [data-ui][data-theme][data-mode] :where(input[type="file"]:disabled)::file-selector-button,
391
- [data-ui][data-theme][data-mode] :where(input[type="file"]:disabled)::-webkit-file-upload-button {
526
+ [data-ui][data-mode] :where(input[type="file"]:disabled)::file-selector-button,
527
+ [data-ui][data-mode] :where(input[type="file"]:disabled)::-webkit-file-upload-button {
392
528
  color: var(--usk-native-text-muted);
393
529
  background: var(--usk-native-surface-soft);
394
530
  border-color: var(--usk-native-border);
395
531
  cursor: not-allowed;
396
532
  }
397
533
 
398
- [data-ui][data-theme][data-mode] :where(input:read-only:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="button"]):not([type="submit"]):not([type="reset"]), textarea:read-only) {
534
+ [data-ui][data-mode] :where(input:read-only:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="button"]):not([type="submit"]):not([type="reset"]), textarea:read-only) {
399
535
  background: var(--usk-native-surface-soft);
400
536
  }
401
537
 
402
- [data-ui][data-theme][data-mode] :where(input:required, textarea:required, select:required) {
538
+ [data-ui][data-mode] :where(input:required, textarea:required, select:required) {
403
539
  box-shadow: inset .22rem 0 0 var(--usk-native-indicator);
404
540
  }
405
541
 
406
- [data-ui][data-theme][data-mode] :where(input:user-valid, textarea:user-valid, select:user-valid, .is-valid) {
542
+ [data-ui][data-mode] :where(input:user-valid, textarea:user-valid, select:user-valid, .is-valid) {
407
543
  border-color: var(--usk-native-success);
408
544
  }
409
545
 
410
- [data-ui][data-theme][data-mode] :where(input:user-invalid, textarea:user-invalid, select:user-invalid, [aria-invalid="true"], .is-invalid) {
546
+ [data-ui][data-mode] :where(input:user-invalid, textarea:user-invalid, select:user-invalid, [aria-invalid="true"], .is-invalid) {
411
547
  border-color: var(--usk-native-danger);
412
548
  }
413
549
 
414
- [data-ui][data-theme][data-mode] :where(input[type="checkbox"]:indeterminate, input[type="radio"]:indeterminate) {
550
+ [data-ui][data-mode] :where(input[type="checkbox"]:indeterminate, input[type="radio"]:indeterminate) {
551
+ background: linear-gradient(var(--usk-native-choice-mark-color), var(--usk-native-choice-mark-color)) center / 58% .15rem no-repeat var(--usk-native-choice-checked-background);
415
552
  accent-color: var(--usk-native-warning);
416
553
  }
417
554
 
418
- [data-ui][data-theme][data-mode] :where(button:active, input[type="button"]:active, input[type="submit"]:active, input[type="reset"]:active) {
555
+ [data-ui][data-mode] :where(button:active, input[type="button"]:active, input[type="submit"]:active, input[type="reset"]:active) {
419
556
  filter: brightness(.96);
420
557
  }
421
558
 
422
- [data-ui][data-theme][data-mode] :where(input:disabled, textarea:disabled, select:disabled, button:disabled, [aria-disabled="true"]) {
559
+ [data-ui][data-mode] :where(input:disabled, textarea:disabled, select:disabled, button:disabled, [aria-disabled="true"]) {
423
560
  color: var(--usk-native-text-muted);
424
561
  background: var(--usk-native-surface-soft);
425
562
  border-color: var(--usk-native-border);
@@ -428,37 +565,36 @@
428
565
  cursor: not-allowed;
429
566
  }
430
567
 
431
- [data-ui][data-theme][data-mode] :where(table) {
568
+ [data-ui][data-mode] :where(table) {
432
569
  width: 100%;
433
570
  margin: 1rem 0;
434
- overflow: hidden;
435
571
  background: var(--usk-native-surface);
436
572
  border: var(--usk-native-border-width) solid var(--usk-native-border);
437
573
  border-radius: var(--usk-native-radius);
438
574
  border-collapse: collapse;
439
575
  }
440
576
 
441
- [data-ui][data-theme][data-mode] :where(caption) {
577
+ [data-ui][data-mode] :where(caption) {
442
578
  caption-side: bottom;
443
579
  padding: .75rem;
444
580
  color: var(--usk-native-text-muted);
445
581
  font-size: .9rem;
446
582
  }
447
583
 
448
- [data-ui][data-theme][data-mode] :where(th, td) {
584
+ [data-ui][data-mode] :where(th, td) {
449
585
  padding: .8rem .9rem;
450
586
  text-align: left;
451
587
  border-bottom: var(--usk-native-border-width) solid var(--usk-native-border);
452
588
  }
453
589
 
454
- [data-ui][data-theme][data-mode] :where(th) {
590
+ [data-ui][data-mode] :where(th) {
455
591
  color: var(--usk-native-text);
456
592
  background: var(--usk-native-surface-soft);
457
593
  }
458
594
 
459
- [data-ui][data-theme][data-mode] :where(td) { color: var(--usk-native-text-muted); }
595
+ [data-ui][data-mode] :where(td) { color: var(--usk-native-text-muted); }
460
596
 
461
- [data-ui][data-theme][data-mode] :where(details) {
597
+ [data-ui][data-mode] :where(details) {
462
598
  margin: 1rem 0;
463
599
  padding: .9rem 1rem;
464
600
  color: var(--usk-native-text);
@@ -467,13 +603,13 @@
467
603
  border-radius: var(--usk-native-radius);
468
604
  }
469
605
 
470
- [data-ui][data-theme][data-mode] :where(summary) {
606
+ [data-ui][data-mode] :where(summary) {
471
607
  color: var(--usk-native-text);
472
608
  font-weight: 900;
473
609
  cursor: pointer;
474
610
  }
475
611
 
476
- [data-ui][data-theme][data-mode] :where(dialog) {
612
+ [data-ui][data-mode] :where(dialog) {
477
613
  max-width: min(92vw, 42rem);
478
614
  padding: 0;
479
615
  color: var(--usk-native-text);
@@ -483,47 +619,68 @@
483
619
  box-shadow: var(--usk-native-shadow-md), 0 30px 80px rgb(0 0 0 / .42);
484
620
  }
485
621
 
486
- [data-ui][data-theme][data-mode] :where(dialog p) { color: inherit; }
622
+ [data-ui][data-mode] :where(dialog p) { color: inherit; }
487
623
 
488
- [data-ui][data-theme][data-mode] :where(dialog)::backdrop { background: rgb(0 0 0 / .62); }
624
+ [data-ui][data-mode] :where(dialog)::backdrop { background: rgb(0 0 0 / .62); }
489
625
 
490
- [data-ui][data-theme][data-mode] :where(progress, meter) {
626
+ [data-ui][data-mode] :where(progress, meter) {
627
+ -webkit-appearance: none;
628
+ appearance: none;
491
629
  width: 100%;
492
- min-height: .9rem;
630
+ min-height: var(--usk-native-progress-size);
493
631
  accent-color: var(--usk-native-primary);
494
632
  }
495
633
 
496
- [data-ui][data-theme][data-mode] :where(progress, meter)::-webkit-progress-bar,
497
- [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-bar {
498
- background: var(--usk-native-track);
499
- border-radius: 999px;
634
+ [data-ui][data-mode] :where(progress:not([value])) {
635
+ background: repeating-linear-gradient(115deg, var(--usk-native-progress-track-background) 0 .5rem, var(--usk-native-progress-value-background) .5rem 1rem);
636
+ background-size: 200% 100%;
637
+ border: var(--usk-native-progress-track-border);
638
+ border-radius: var(--usk-native-progress-track-radius);
639
+ box-shadow: var(--usk-native-progress-track-shadow);
640
+ animation: usk-native-progress-indeterminate 1.2s linear infinite;
641
+ }
642
+
643
+ @keyframes usk-native-progress-indeterminate {
644
+ to { background-position: -2rem 0; }
645
+ }
646
+
647
+ [data-ui][data-mode] :where(progress, meter)::-webkit-progress-bar,
648
+ [data-ui][data-mode] :where(meter)::-webkit-meter-bar {
649
+ background: var(--usk-native-progress-track-background);
650
+ border: var(--usk-native-progress-track-border);
651
+ border-radius: var(--usk-native-progress-track-radius);
652
+ box-shadow: var(--usk-native-progress-track-shadow);
500
653
  }
501
654
 
502
- [data-ui][data-theme][data-mode] :where(progress)::-webkit-progress-value,
503
- [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-optimum-value {
504
- background: var(--usk-native-track-fill);
505
- border-radius: inherit;
655
+ [data-ui][data-mode] :where(progress)::-webkit-progress-value,
656
+ [data-ui][data-mode] :where(meter)::-webkit-meter-optimum-value {
657
+ background: var(--usk-native-progress-value-background);
658
+ border-radius: var(--usk-native-progress-value-radius);
659
+ box-shadow: var(--usk-native-progress-value-shadow);
506
660
  }
507
661
 
508
- [data-ui][data-theme][data-mode] :where(progress)::-moz-progress-bar,
509
- [data-ui][data-theme][data-mode] :where(meter)::-moz-meter-bar {
510
- background: var(--usk-native-track-fill);
511
- border-radius: 999px;
662
+ [data-ui][data-mode] :where(progress)::-moz-progress-bar,
663
+ [data-ui][data-mode] :where(meter)::-moz-meter-bar {
664
+ background: var(--usk-native-progress-value-background);
665
+ border-radius: var(--usk-native-progress-value-radius);
666
+ box-shadow: var(--usk-native-progress-value-shadow);
512
667
  }
513
668
 
514
- [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-suboptimum-value {
515
- background: var(--usk-native-warning);
669
+ [data-ui][data-mode] :where(meter)::-webkit-meter-optimum-value { background: var(--usk-native-meter-optimum-background); }
670
+
671
+ [data-ui][data-mode] :where(meter)::-webkit-meter-suboptimum-value {
672
+ background: var(--usk-native-meter-suboptimum-background);
516
673
  }
517
674
 
518
- [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-even-less-good-value {
519
- background: var(--usk-native-danger);
675
+ [data-ui][data-mode] :where(meter)::-webkit-meter-even-less-good-value {
676
+ background: var(--usk-native-meter-critical-background);
520
677
  }
521
678
 
522
- [data-ui][data-theme][data-mode] :where(main, section, header, footer, nav, article, aside, address) {
679
+ [data-ui][data-mode] :where(main, section, header, footer, nav, article, aside, address) {
523
680
  color: var(--usk-native-text);
524
681
  }
525
682
 
526
- [data-ui][data-theme][data-mode] :where(article, aside) {
683
+ [data-ui][data-mode] :where(article, aside) {
527
684
  padding: var(--usk-native-panel-padding);
528
685
  color: var(--usk-native-text);
529
686
  background: var(--usk-native-card-bg);
@@ -532,113 +689,132 @@
532
689
  box-shadow: var(--usk-native-shadow);
533
690
  }
534
691
 
535
- [data-ui][data-theme][data-mode] :where(dl) {
692
+ [data-ui][data-mode] :where(dl) {
536
693
  margin: 0 0 1rem;
537
694
  color: var(--usk-native-text-muted);
538
695
  }
539
696
 
540
- [data-ui][data-theme][data-mode] :where(dt) {
697
+ [data-ui][data-mode] :where(dt) {
541
698
  color: var(--usk-native-text);
542
699
  font-weight: 900;
543
700
  }
544
701
 
545
- [data-ui][data-theme][data-mode] :where(dd) { margin: .25rem 0 .75rem 1.25rem; }
546
- [data-ui][data-theme][data-mode] :where(strong, b) { color: var(--usk-native-text); font-weight: 900; }
547
- [data-ui][data-theme][data-mode] :where(u) { text-decoration-color: var(--usk-native-primary); text-decoration-thickness: .08em; text-underline-offset: .16em; }
548
- [data-ui][data-theme][data-mode] :where(bdi, bdo) { color: var(--usk-native-text); unicode-bidi: isolate; }
549
- [data-ui][data-theme][data-mode] :where(em, i, cite, var, q) { color: var(--usk-native-text); }
550
- [data-ui][data-theme][data-mode] :where(ins) { color: var(--usk-native-text); text-decoration-color: var(--usk-native-success); }
551
- [data-ui][data-theme][data-mode] :where(del, s) { color: var(--usk-native-text); text-decoration-color: var(--usk-native-danger); }
552
- [data-ui][data-theme][data-mode] :where(output) { color: var(--usk-native-text); font-weight: 800; }
553
- [data-ui][data-theme][data-mode] :where(optgroup, option) { color: var(--usk-native-text); background: var(--usk-native-surface); }
554
- [data-ui][data-theme][data-mode] :where(time, data, dfn, ruby) { color: var(--usk-native-text); }
555
- [data-ui][data-theme][data-mode] :where(search) { display: block; color: var(--usk-native-text); }
556
- [data-ui][data-theme][data-mode] :where(selectedcontent) { color: var(--usk-native-text); }
557
- [data-ui][data-theme][data-mode] :where(datalist) { display: none; }
558
-
559
- [data-ui][data-theme][data-mode] :where(summary, li)::marker {
702
+ [data-ui][data-mode] :where(dd) { margin: .25rem 0 .75rem 1.25rem; }
703
+ [data-ui][data-mode] :where(strong, b) { color: var(--usk-native-text); font-weight: 900; }
704
+ [data-ui][data-mode] :where(u) { text-decoration-color: var(--usk-native-primary); text-decoration-thickness: .08em; text-underline-offset: .16em; }
705
+ [data-ui][data-mode] :where(bdi, bdo) { color: var(--usk-native-text); unicode-bidi: isolate; }
706
+ [data-ui][data-mode] :where(em, i, cite, var, q) { color: var(--usk-native-text); }
707
+ [data-ui][data-mode] :where(ins) { color: var(--usk-native-text); text-decoration-color: var(--usk-native-success); }
708
+ [data-ui][data-mode] :where(del, s) { color: var(--usk-native-text); text-decoration-color: var(--usk-native-danger); }
709
+ [data-ui][data-mode] :where(output) { color: var(--usk-native-text); font-weight: 800; }
710
+ [data-ui][data-mode] :where(optgroup, option) { color: var(--usk-native-text); background: var(--usk-native-surface); }
711
+ [data-ui][data-mode] :where(time, data, dfn, ruby) { color: var(--usk-native-text); }
712
+ [data-ui][data-mode] :where(search) { display: block; color: var(--usk-native-text); }
713
+ [data-ui][data-mode] :where(selectedcontent) { color: var(--usk-native-text); }
714
+ [data-ui][data-mode] :where(datalist) { display: none; }
715
+
716
+ [data-ui][data-mode] :where(summary, li)::marker {
560
717
  color: var(--usk-native-indicator);
561
718
  }
562
719
 
563
- [data-ui][data-theme][data-mode] :where(input[type="date"], input[type="datetime-local"], input[type="month"], input[type="time"], input[type="week"])::-webkit-calendar-picker-indicator {
564
- opacity: .78;
720
+ [data-ui][data-mode] :where(input[type="date"], input[type="datetime-local"], input[type="month"], input[type="time"], input[type="week"])::-webkit-calendar-picker-indicator {
721
+ opacity: var(--usk-native-indicator-opacity);
722
+ filter: var(--usk-native-indicator-filter);
565
723
  accent-color: var(--usk-native-indicator);
566
724
  }
567
725
 
568
- [data-ui][data-theme][data-mode] :where(input[type="search"])::-webkit-search-cancel-button {
726
+ [data-ui][data-mode] :where(input[type="search"])::-webkit-search-cancel-button {
569
727
  accent-color: var(--usk-native-indicator);
570
728
  }
571
729
 
572
- [data-ui][data-theme][data-mode] :where(input[type="number"])::-webkit-inner-spin-button,
573
- [data-ui][data-theme][data-mode] :where(input[type="number"])::-webkit-outer-spin-button {
730
+ [data-ui][data-mode] :where(input[type="number"])::-webkit-inner-spin-button,
731
+ [data-ui][data-mode] :where(input[type="number"])::-webkit-outer-spin-button {
574
732
  opacity: .72;
575
733
  }
576
734
 
577
- [data-ui][data-theme][data-mode] :where(select)::picker-icon {
735
+ [data-ui][data-mode] :where(select)::picker-icon {
578
736
  color: var(--usk-native-indicator);
737
+ opacity: var(--usk-native-indicator-opacity);
738
+ filter: var(--usk-native-indicator-filter);
579
739
  }
580
740
 
581
- [data-ui][data-theme][data-mode] :where(:focus-visible) {
741
+ [data-ui][data-mode] :where(:focus-visible) {
582
742
  outline: 3px solid var(--usk-native-focus);
583
743
  outline-offset: 3px;
584
744
  box-shadow: var(--usk-native-focus-ring);
585
745
  }
586
746
 
587
- [data-ui][data-theme][data-mode] :where(:target) {
747
+ [data-ui][data-mode] :where(:target) {
588
748
  scroll-margin-top: 6rem;
589
749
  outline: 3px solid var(--usk-native-focus);
590
750
  outline-offset: .35rem;
591
751
  }
592
752
 
593
- [data-ui][data-theme][data-mode] :where([aria-current="page"]) { font-weight: 900; }
594
- [data-ui][data-theme][data-mode] :where([aria-busy="true"]) { cursor: progress; }
595
- [data-ui][data-theme][data-mode] :where([hidden]) { display: none !important; }
596
- [data-ui][data-theme][data-mode] ::selection { color: var(--usk-native-on-primary); background: var(--usk-native-primary); }
597
- [data-ui][data-theme][data-mode] ::-webkit-scrollbar { inline-size: .75rem; block-size: .75rem; }
598
- [data-ui][data-theme][data-mode] ::-webkit-scrollbar-track { background: var(--usk-native-track); }
599
- [data-ui][data-theme][data-mode] ::-webkit-scrollbar-thumb { background: var(--usk-native-thumb-border); border-radius: 999px; }
753
+ [data-ui][data-mode] :where([aria-current="page"]) { font-weight: 900; }
754
+ [data-ui][data-mode] :where([aria-busy="true"]) { cursor: progress; }
755
+ [data-ui][data-mode] :where([hidden]) { display: none !important; }
756
+ [data-ui][data-mode] ::selection { color: var(--usk-native-on-primary); background: var(--usk-native-primary); }
757
+ [data-ui][data-mode] ::-webkit-scrollbar { inline-size: var(--usk-native-scrollbar-size); block-size: var(--usk-native-scrollbar-size); }
758
+ [data-ui][data-mode] ::-webkit-scrollbar-track { background: var(--usk-native-scrollbar-track); }
759
+ [data-ui][data-mode] ::-webkit-scrollbar-thumb { background: var(--usk-native-scrollbar-thumb); border-radius: var(--usk-native-scrollbar-radius); }
600
760
 
601
761
  @supports (color: color-mix(in srgb, black, white)) {
602
- [data-ui][data-theme][data-mode] {
762
+ [data-ui][data-mode] {
603
763
  --usk-native-track: color-mix(in srgb, var(--usk-native-border) 50%, transparent);
604
764
  }
605
765
 
606
- [data-ui][data-theme][data-mode] :where(code, kbd, samp) {
766
+ [data-ui][data-mode] :where(code, kbd, samp) {
607
767
  border-color: color-mix(in srgb, var(--usk-native-border) 62%, transparent);
608
768
  }
609
769
 
610
- [data-ui][data-theme][data-mode] :where(mark) {
770
+ [data-ui][data-mode] :where(mark) {
611
771
  background: color-mix(in srgb, var(--usk-native-warning) 32%, transparent);
612
772
  }
613
773
 
614
- [data-ui][data-theme][data-mode] :where(fieldset) {
774
+ [data-ui][data-mode] :where(fieldset) {
615
775
  background: color-mix(in srgb, var(--usk-native-card-bg) 88%, transparent);
616
776
  }
617
777
 
618
- [data-ui][data-theme][data-mode] :where(input:disabled, textarea:disabled, select:disabled, button:disabled, [aria-disabled="true"]) {
778
+ [data-ui][data-mode] :where(input:disabled, textarea:disabled, select:disabled, button:disabled, [aria-disabled="true"]) {
619
779
  background: color-mix(in srgb, var(--usk-native-surface-soft) 72%, transparent);
620
780
  }
621
781
 
622
- [data-ui][data-theme][data-mode] :where(th) {
782
+ [data-ui][data-mode] :where(th) {
623
783
  background: color-mix(in srgb, var(--usk-native-primary) 10%, transparent);
624
784
  }
625
785
  }
626
786
 
627
787
  @media (prefers-reduced-motion: reduce) {
628
- [data-ui][data-theme][data-mode] :where(input[type="file"])::file-selector-button,
629
- [data-ui][data-theme][data-mode] :where(input[type="file"])::-webkit-file-upload-button {
788
+ [data-ui][data-mode] :where(input[type="file"])::file-selector-button,
789
+ [data-ui][data-mode] :where(input[type="file"])::-webkit-file-upload-button {
630
790
  transition-duration: 1ms !important;
631
791
  }
792
+
793
+ [data-ui][data-mode] :where(progress:not([value])) {
794
+ animation: none;
795
+ }
796
+ }
797
+
798
+ [data-ui][data-theme][data-mode="contrast"] :where(input[type="range"])::-webkit-slider-runnable-track,
799
+ [data-ui][data-theme][data-mode="contrast"] :where(input[type="range"])::-webkit-slider-thumb,
800
+ [data-ui][data-theme][data-mode="contrast"] :where(input[type="range"])::-moz-range-track,
801
+ [data-ui][data-theme][data-mode="contrast"] :where(input[type="range"])::-moz-range-thumb,
802
+ [data-ui][data-theme][data-mode="contrast"] :where(progress, meter),
803
+ [data-ui][data-theme][data-mode="contrast"] :where(progress, meter)::-webkit-progress-bar,
804
+ [data-ui][data-theme][data-mode="contrast"] :where(progress)::-webkit-progress-value,
805
+ [data-ui][data-theme][data-mode="contrast"] :where(progress)::-moz-progress-bar {
806
+ box-shadow: none;
807
+ filter: none;
632
808
  }
633
809
 
634
810
  @media (forced-colors: active) {
635
811
  @supports (forced-color-adjust: auto) {
636
- [data-ui][data-theme][data-mode] :where(input, textarea, select, button, progress, meter) {
812
+ [data-ui][data-mode] :where(input, textarea, select, button, progress, meter) {
637
813
  forced-color-adjust: auto;
638
814
  }
639
815
  }
640
816
 
641
- [data-ui][data-theme][data-mode] :where(input:user-invalid, textarea:user-invalid, select:user-invalid, [aria-invalid="true"], .is-invalid) {
817
+ [data-ui][data-mode] :where(input:user-invalid, textarea:user-invalid, select:user-invalid, [aria-invalid="true"], .is-invalid) {
642
818
  border-color: Mark;
643
819
  }
644
820
  }