ui-style-kit-css 2.2.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 (122) hide show
  1. package/CHANGELOG.md +77 -1
  2. package/CONTRIBUTING.md +8 -1
  3. package/README.md +171 -53
  4. package/STYLE-MAP.md +28 -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 +55604 -6525
  26. package/dist/ui-style-kit.min.css +2 -2
  27. package/dist/ui-style-kit.visual.css +55443 -6942
  28. package/dist/ui-style-kit.visual.min.css +2 -2
  29. package/dist/ui-style-kit.with-bridge.css +55646 -6551
  30. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  31. package/dist/visual/art-deco.css +7318 -0
  32. package/dist/visual/bauhaus.css +2 -2961
  33. package/dist/visual/bento.css +2 -2980
  34. package/dist/visual/brutalism.css +2679 -352
  35. package/dist/visual/clay.css +5 -0
  36. package/dist/visual/cyberpunk.css +4482 -781
  37. package/dist/visual/data-terminal.css +6182 -0
  38. package/dist/visual/editorial-luxe.css +6450 -0
  39. package/dist/visual/industrial-utility.css +7259 -0
  40. package/dist/visual/maximalist.css +4080 -1025
  41. package/dist/visual/minimal-saas.css +3305 -888
  42. package/dist/visual/neo-noir.css +5 -0
  43. package/dist/visual/neumorphism.css +3582 -975
  44. package/dist/visual/organic-modern.css +5 -0
  45. package/dist/visual/paper-editorial.css +7074 -0
  46. package/dist/visual/retro-glass.css +4426 -760
  47. package/dist/visual/retrofuturism.css +3676 -875
  48. package/dist/visual/tactile.css +4568 -1036
  49. package/dist/visual/technical-blueprint.css +6713 -0
  50. package/dist/visual/y2k.css +3672 -753
  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 +9 -5
  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 +36 -11
  64. package/docs/RELEASE-2.4.0.md +88 -0
  65. package/docs/RETRO-GLASS.md +105 -0
  66. package/docs/STYLE-GUIDE.md +68 -13
  67. package/docs/TACTILE.md +38 -0
  68. package/docs/TECHNICAL-BLUEPRINT.md +60 -0
  69. package/docs/TOKENS.md +90 -4
  70. package/docs/superpowers/plans/2026-08-29-preset-identity-system-refinement.md +649 -0
  71. package/docs/superpowers/plans/2026-09-04-library-wide-theme-fallback-and-fidelity.md +331 -0
  72. package/docs/superpowers/specs/2026-08-29-preset-identity-system-refinement-design.md +212 -0
  73. package/docs/superpowers/specs/2026-09-04-library-wide-theme-fallback-and-fidelity-design.md +113 -0
  74. package/manifest.json +769 -20
  75. package/package.json +79 -14
  76. package/styles/art-deco.css +2068 -0
  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 +1092 -87
  98. package/styles/bento.css +1413 -86
  99. package/styles/brutalism.css +493 -10
  100. package/styles/clay.css +1927 -0
  101. package/styles/compat-layout.css +1 -2
  102. package/styles/components.css +698 -33
  103. package/styles/content-overflow.css +434 -9
  104. package/styles/cyberpunk.css +2082 -46
  105. package/styles/data-terminal.css +1795 -0
  106. package/styles/editorial-luxe.css +1251 -0
  107. package/styles/industrial-utility.css +2449 -0
  108. package/styles/interactive-surface-bridge.css +40 -24
  109. package/styles/interactive-surface-theme.css +31 -13
  110. package/styles/maximalist.css +1410 -94
  111. package/styles/minimal-saas.css +675 -73
  112. package/styles/native-elements.css +396 -168
  113. package/styles/neo-noir.css +1332 -0
  114. package/styles/neumorphism.css +1155 -52
  115. package/styles/organic-modern.css +1353 -0
  116. package/styles/paper-editorial.css +1724 -0
  117. package/styles/retro-glass.css +870 -42
  118. package/styles/retrofuturism.css +1173 -55
  119. package/styles/tactile.css +2018 -84
  120. package/styles/technical-blueprint.css +1337 -0
  121. package/styles/theme-colors.css +796 -5
  122. package/styles/y2k.css +1182 -40
@@ -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));
@@ -39,11 +40,57 @@
39
40
  --usk-native-control-padding-inline: .95rem;
40
41
  --usk-native-subcontrol-padding-block: .55rem;
41
42
  --usk-native-subcontrol-padding-inline: .8rem;
42
- --usk-native-track: color-mix(in srgb, var(--usk-native-border) 50%, transparent);
43
+ --usk-native-track: var(--usk-native-border);
43
44
  --usk-native-track-fill: var(--usk-native-primary);
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,47 +112,50 @@
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;
72
119
  margin: 0 0 .65em;
73
- text-wrap: balance;
74
120
  }
75
121
 
76
- [data-ui][data-theme][data-mode] :where(hgroup) {
122
+ @supports (text-wrap: balance) {
123
+ [data-ui][data-mode] :where(h1, h2, h3, h4, h5, h6) { text-wrap: balance; }
124
+ }
125
+
126
+ [data-ui][data-mode] :where(hgroup) {
77
127
  display: grid;
78
128
  gap: .35rem;
79
129
  margin-block: 0 1rem;
80
130
  }
81
131
 
82
- [data-ui][data-theme][data-mode] :where(h1) { font-size: clamp(2rem, 5vw, 3.5rem); }
83
- [data-ui][data-theme][data-mode] :where(h2) { font-size: clamp(1.55rem, 3vw, 2.35rem); }
84
- [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); }
85
135
 
86
- [data-ui][data-theme][data-mode] :where(p) {
136
+ [data-ui][data-mode] :where(p) {
87
137
  margin: 0 0 1rem;
88
138
  color: var(--usk-native-text-muted);
89
139
  line-height: 1.7;
90
140
  }
91
141
 
92
- [data-ui][data-theme][data-mode] :where(a) {
142
+ [data-ui][data-mode] :where(a) {
93
143
  color: var(--usk-native-link);
94
144
  text-decoration-thickness: .08em;
95
145
  text-underline-offset: .18em;
96
146
  }
97
147
 
98
- [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-native-primary-hover); }
99
149
 
100
- [data-ui][data-theme][data-mode] :where(ul, ol, menu) {
150
+ [data-ui][data-mode] :where(ul, ol, menu) {
101
151
  margin: 0 0 1rem;
102
152
  padding-left: 1.35rem;
103
153
  color: var(--usk-native-text-muted);
104
154
  }
105
155
 
106
- [data-ui][data-theme][data-mode] :where(li) { margin-block: .25rem; }
156
+ [data-ui][data-mode] :where(li) { margin-block: .25rem; }
107
157
 
108
- [data-ui][data-theme][data-mode] :where(blockquote) {
158
+ [data-ui][data-mode] :where(blockquote) {
109
159
  margin: 1.25rem 0;
110
160
  padding: 1rem 1.25rem;
111
161
  color: var(--usk-native-text);
@@ -114,17 +164,17 @@
114
164
  border-radius: var(--usk-native-radius);
115
165
  }
116
166
 
117
- [data-ui][data-theme][data-mode] :where(code, kbd, samp) {
167
+ [data-ui][data-mode] :where(code, kbd, samp) {
118
168
  padding: .15em .35em;
119
169
  color: var(--usk-native-text);
120
170
  background: var(--usk-native-surface-soft);
121
- border: var(--usk-native-border-width) solid color-mix(in srgb, var(--usk-native-border) 62%, transparent);
171
+ border: var(--usk-native-border-width) solid var(--usk-native-border);
122
172
  border-radius: var(--usk-native-radius-sm);
123
173
  font-family: var(--usk-native-font-mono);
124
174
  font-size: .92em;
125
175
  }
126
176
 
127
- [data-ui][data-theme][data-mode] :where(pre) {
177
+ [data-ui][data-mode] :where(pre) {
128
178
  overflow: auto;
129
179
  margin: 1rem 0;
130
180
  padding: 1rem;
@@ -134,91 +184,122 @@
134
184
  border-radius: var(--usk-native-radius);
135
185
  }
136
186
 
137
- [data-ui][data-theme][data-mode] :where(pre code) {
187
+ [data-ui][data-mode] :where(pre code) {
138
188
  display: block;
139
189
  padding: 0;
140
190
  background: transparent;
141
191
  border: 0;
142
192
  }
143
193
 
144
- [data-ui][data-theme][data-mode] :where(hr) {
194
+ [data-ui][data-mode] :where(hr) {
145
195
  height: 1px;
146
196
  margin: 2rem 0;
147
197
  background: var(--usk-native-border);
148
198
  border: 0;
149
199
  }
150
200
 
151
- [data-ui][data-theme][data-mode] :where(mark) {
201
+ [data-ui][data-mode] :where(mark) {
152
202
  padding-inline: .15em;
153
203
  color: var(--usk-native-text);
154
- background: color-mix(in srgb, var(--usk-native-warning) 32%, transparent);
204
+ background: rgb(var(--usk-warning-rgb) / .32);
155
205
  border-radius: .2em;
156
206
  }
157
207
 
158
- [data-ui][data-theme][data-mode] :where(small, sub, sup, rt, rp) { color: var(--usk-native-text-muted); }
159
- [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; }
160
210
 
161
- [data-ui][data-theme][data-mode] :where(abbr[title]) {
211
+ [data-ui][data-mode] :where(abbr[title]) {
162
212
  text-decoration: underline dotted var(--usk-native-primary);
163
213
  text-underline-offset: .18em;
164
214
  cursor: help;
165
215
  }
166
216
 
167
- [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) {
168
218
  max-width: 100%;
169
219
  }
170
220
 
171
- [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; }
172
222
 
173
- [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
+ }
253
+
254
+ [data-ui][data-mode] :where(figure) { margin: 1.25rem 0; }
174
255
 
175
- [data-ui][data-theme][data-mode] :where(figcaption) {
256
+ [data-ui][data-mode] :where(figcaption) {
176
257
  margin-top: .5rem;
177
258
  color: var(--usk-native-text-muted);
178
259
  font-size: .9rem;
179
260
  }
180
261
 
181
- [data-ui][data-theme][data-mode] :where(form) {
262
+ [data-ui][data-mode] :where(form) {
182
263
  display: grid;
183
264
  gap: var(--usk-native-field-gap);
184
265
  min-inline-size: 0;
185
266
  }
186
267
 
187
- [data-ui][data-theme][data-mode] :where(fieldset) {
268
+ [data-ui][data-mode] :where(fieldset) {
188
269
  display: grid;
189
270
  gap: .9rem;
190
271
  min-inline-size: 0;
191
272
  margin: 0 0 1rem;
192
273
  padding: var(--usk-native-panel-padding);
193
- background: color-mix(in srgb, var(--usk-native-card-bg) 88%, transparent);
274
+ background: var(--usk-native-card-bg);
194
275
  border: var(--usk-native-border-width) solid var(--usk-native-border);
195
276
  border-radius: var(--usk-native-radius);
196
277
  }
197
278
 
198
- [data-ui][data-theme][data-mode] :where(legend) {
279
+ [data-ui][data-mode] :where(legend) {
199
280
  padding-inline: .35rem;
200
281
  color: var(--usk-native-text);
201
282
  font-weight: 900;
202
283
  }
203
284
 
204
- [data-ui][data-theme][data-mode] :where(label) {
285
+ [data-ui][data-mode] :where(label) {
205
286
  color: var(--usk-native-text);
206
287
  font-weight: 750;
207
288
  }
208
289
 
209
- [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)) {
210
291
  display: grid;
211
292
  gap: var(--usk-native-field-gap);
212
293
  align-content: start;
213
294
  }
214
295
 
215
- [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"])) {
216
297
  display: inline-flex;
217
298
  gap: var(--usk-native-field-gap);
218
299
  align-items: center;
219
300
  }
220
301
 
221
- [data-ui][data-theme][data-mode] :where(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]), 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) {
222
303
  width: 100%;
223
304
  min-block-size: var(--usk-native-control-min-block-size);
224
305
  padding: var(--usk-native-control-padding-block) var(--usk-native-control-padding-inline);
@@ -229,26 +310,53 @@
229
310
  font: inherit;
230
311
  }
231
312
 
232
- [data-ui][data-theme][data-mode] :where(input, textarea, select, button) {
313
+ [data-ui][data-mode] :where(input, textarea, select, button) {
233
314
  color-scheme: inherit;
234
315
  accent-color: var(--usk-native-primary);
235
316
  }
236
317
 
237
- [data-ui][data-theme][data-mode] :where(input, textarea)::placeholder {
318
+ [data-ui][data-mode] :where(input, textarea)::placeholder {
238
319
  color: var(--usk-native-text-muted);
239
320
  opacity: .78;
240
321
  }
241
322
 
242
- [data-ui][data-theme][data-mode] :where(textarea) {
323
+ [data-ui][data-mode] :where(textarea) {
243
324
  min-height: 7rem;
244
325
  resize: vertical;
245
326
  }
246
327
 
247
- [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; }
248
329
 
249
- [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])) {
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"]) {
351
+ -webkit-appearance: none;
352
+ appearance: none;
353
+ box-sizing: border-box;
250
354
  min-block-size: var(--usk-native-control-min-block-size);
251
355
  padding: .7rem 1rem;
356
+ font: inherit;
357
+ }
358
+
359
+ [data-ui][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
252
360
  color: var(--usk-native-on-primary);
253
361
  background: var(--usk-native-primary);
254
362
  border: var(--usk-native-border-width) solid var(--usk-native-primary);
@@ -258,18 +366,57 @@
258
366
  cursor: pointer;
259
367
  }
260
368
 
261
- [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) {
369
+ /* Busy controls reserve a stable lane for the preset-owned spinner glyph. */
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"]) {
371
+ display: inline-flex;
372
+ align-items: center;
373
+ justify-content: center;
374
+ gap: .55rem;
375
+ }
376
+
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 {
378
+ flex: 0 0 1em;
379
+ }
380
+
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) {
262
382
  background: var(--usk-native-primary-hover);
263
383
  border-color: var(--usk-native-primary-hover);
264
384
  }
265
385
 
266
- [data-ui][data-theme][data-mode] :where(input[type="checkbox"], input[type="radio"]) {
267
- inline-size: 1.5rem;
268
- 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);
269
394
  accent-color: var(--usk-native-primary);
270
395
  }
271
396
 
272
- [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"]) {
273
420
  -webkit-appearance: none;
274
421
  appearance: none;
275
422
  width: 100%;
@@ -278,40 +425,50 @@
278
425
  accent-color: var(--usk-native-primary);
279
426
  }
280
427
 
281
- [data-ui][data-theme][data-mode] :where(input[type="range"])::-webkit-slider-runnable-track {
282
- block-size: .45rem;
283
- background: var(--usk-native-track);
284
- 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);
285
434
  }
286
435
 
287
- [data-ui][data-theme][data-mode] :where(input[type="range"])::-moz-range-track {
288
- block-size: .45rem;
289
- background: var(--usk-native-track);
290
- 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);
291
442
  }
292
443
 
293
- [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 {
294
451
  -webkit-appearance: none;
295
452
  appearance: none;
296
- inline-size: 1.2rem;
297
- block-size: 1.2rem;
298
- margin-block-start: -.38rem;
299
- background: var(--usk-native-thumb);
300
- border: var(--usk-native-border-width) solid var(--usk-native-thumb-border);
301
- border-radius: 999px;
302
- 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);
303
460
  }
304
461
 
305
- [data-ui][data-theme][data-mode] :where(input[type="range"])::-moz-range-thumb {
306
- inline-size: 1.2rem;
307
- block-size: 1.2rem;
308
- background: var(--usk-native-thumb);
309
- border: var(--usk-native-border-width) solid var(--usk-native-thumb-border);
310
- border-radius: 999px;
311
- 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);
312
469
  }
313
470
 
314
- [data-ui][data-theme][data-mode] :where(input[type="color"]) {
471
+ [data-ui][data-mode] :where(input[type="color"]) {
315
472
  inline-size: 3rem;
316
473
  block-size: 2.4rem;
317
474
  padding: .2rem;
@@ -320,123 +477,124 @@
320
477
  border-radius: var(--usk-native-radius-sm);
321
478
  }
322
479
 
323
- [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 {
324
481
  padding: 0;
325
482
  }
326
483
 
327
- [data-ui][data-theme][data-mode] :where(input[type="color"])::-webkit-color-swatch {
328
- border: 0;
329
- 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);
330
487
  }
331
488
 
332
- [data-ui][data-theme][data-mode] :where(input[type="color"])::-moz-color-swatch {
333
- border: 0;
334
- 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);
335
492
  }
336
493
 
337
- [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); }
338
495
 
339
496
  /* Keep pseudo-elements outside :where() because engines reject them inside selector-list arguments. */
340
- [data-ui][data-theme][data-mode] :where(input[type="file"])::file-selector-button,
341
- [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 {
342
499
  margin-inline-end: .75rem;
343
500
  padding: var(--usk-native-subcontrol-padding-block) var(--usk-native-subcontrol-padding-inline);
344
501
  color: var(--usk-native-on-primary);
345
- background: var(--usk-native-primary);
346
- border: var(--usk-native-border-width) solid var(--usk-native-primary);
347
- 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);
348
506
  font-weight: 800;
349
507
  cursor: pointer;
350
508
  }
351
509
 
352
- [data-ui][data-theme][data-mode] :where(input[type="file"]:hover)::file-selector-button,
353
- [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 {
354
512
  background: var(--usk-native-primary-hover);
355
513
  border-color: var(--usk-native-primary-hover);
356
514
  }
357
515
 
358
- [data-ui][data-theme][data-mode] :where(input[type="file"]:focus-visible)::file-selector-button,
359
- [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 {
360
518
  box-shadow: var(--usk-native-focus-ring);
361
519
  }
362
520
 
363
- [data-ui][data-theme][data-mode] :where(input[type="file"]:active)::file-selector-button,
364
- [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 {
365
523
  filter: brightness(.96);
366
524
  }
367
525
 
368
- [data-ui][data-theme][data-mode] :where(input[type="file"]:disabled)::file-selector-button,
369
- [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 {
370
528
  color: var(--usk-native-text-muted);
371
529
  background: var(--usk-native-surface-soft);
372
530
  border-color: var(--usk-native-border);
373
531
  cursor: not-allowed;
374
532
  }
375
533
 
376
- [data-ui][data-theme][data-mode] :where(input:read-only, 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) {
377
535
  background: var(--usk-native-surface-soft);
378
536
  }
379
537
 
380
- [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) {
381
539
  box-shadow: inset .22rem 0 0 var(--usk-native-indicator);
382
540
  }
383
541
 
384
- [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) {
385
543
  border-color: var(--usk-native-success);
386
544
  }
387
545
 
388
- [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) {
389
547
  border-color: var(--usk-native-danger);
390
548
  }
391
549
 
392
- [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);
393
552
  accent-color: var(--usk-native-warning);
394
553
  }
395
554
 
396
- [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) {
397
556
  filter: brightness(.96);
398
557
  }
399
558
 
400
- [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"]) {
401
560
  color: var(--usk-native-text-muted);
402
- background: color-mix(in srgb, var(--usk-native-surface-soft) 72%, transparent);
561
+ background: var(--usk-native-surface-soft);
403
562
  border-color: var(--usk-native-border);
404
563
  box-shadow: none;
405
564
  opacity: .55;
406
565
  cursor: not-allowed;
407
566
  }
408
567
 
409
- [data-ui][data-theme][data-mode] :where(table) {
568
+ [data-ui][data-mode] :where(table) {
410
569
  width: 100%;
411
570
  margin: 1rem 0;
412
- overflow: hidden;
413
571
  background: var(--usk-native-surface);
414
572
  border: var(--usk-native-border-width) solid var(--usk-native-border);
415
573
  border-radius: var(--usk-native-radius);
416
574
  border-collapse: collapse;
417
575
  }
418
576
 
419
- [data-ui][data-theme][data-mode] :where(caption) {
577
+ [data-ui][data-mode] :where(caption) {
420
578
  caption-side: bottom;
421
579
  padding: .75rem;
422
580
  color: var(--usk-native-text-muted);
423
581
  font-size: .9rem;
424
582
  }
425
583
 
426
- [data-ui][data-theme][data-mode] :where(th, td) {
584
+ [data-ui][data-mode] :where(th, td) {
427
585
  padding: .8rem .9rem;
428
586
  text-align: left;
429
587
  border-bottom: var(--usk-native-border-width) solid var(--usk-native-border);
430
588
  }
431
589
 
432
- [data-ui][data-theme][data-mode] :where(th) {
590
+ [data-ui][data-mode] :where(th) {
433
591
  color: var(--usk-native-text);
434
- background: color-mix(in srgb, var(--usk-native-primary) 10%, transparent);
592
+ background: var(--usk-native-surface-soft);
435
593
  }
436
594
 
437
- [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); }
438
596
 
439
- [data-ui][data-theme][data-mode] :where(details) {
597
+ [data-ui][data-mode] :where(details) {
440
598
  margin: 1rem 0;
441
599
  padding: .9rem 1rem;
442
600
  color: var(--usk-native-text);
@@ -445,13 +603,13 @@
445
603
  border-radius: var(--usk-native-radius);
446
604
  }
447
605
 
448
- [data-ui][data-theme][data-mode] :where(summary) {
606
+ [data-ui][data-mode] :where(summary) {
449
607
  color: var(--usk-native-text);
450
608
  font-weight: 900;
451
609
  cursor: pointer;
452
610
  }
453
611
 
454
- [data-ui][data-theme][data-mode] :where(dialog) {
612
+ [data-ui][data-mode] :where(dialog) {
455
613
  max-width: min(92vw, 42rem);
456
614
  padding: 0;
457
615
  color: var(--usk-native-text);
@@ -461,45 +619,68 @@
461
619
  box-shadow: var(--usk-native-shadow-md), 0 30px 80px rgb(0 0 0 / .42);
462
620
  }
463
621
 
464
- [data-ui][data-theme][data-mode] :where(dialog)::backdrop { background: rgb(0 0 0 / .62); }
622
+ [data-ui][data-mode] :where(dialog p) { color: inherit; }
465
623
 
466
- [data-ui][data-theme][data-mode] :where(progress, meter) {
624
+ [data-ui][data-mode] :where(dialog)::backdrop { background: rgb(0 0 0 / .62); }
625
+
626
+ [data-ui][data-mode] :where(progress, meter) {
627
+ -webkit-appearance: none;
628
+ appearance: none;
467
629
  width: 100%;
468
- min-height: .9rem;
630
+ min-height: var(--usk-native-progress-size);
469
631
  accent-color: var(--usk-native-primary);
470
632
  }
471
633
 
472
- [data-ui][data-theme][data-mode] :where(progress, meter)::-webkit-progress-bar,
473
- [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-bar {
474
- background: var(--usk-native-track);
475
- 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; }
476
645
  }
477
646
 
478
- [data-ui][data-theme][data-mode] :where(progress)::-webkit-progress-value,
479
- [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-optimum-value {
480
- background: var(--usk-native-track-fill);
481
- border-radius: inherit;
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);
482
653
  }
483
654
 
484
- [data-ui][data-theme][data-mode] :where(progress)::-moz-progress-bar,
485
- [data-ui][data-theme][data-mode] :where(meter)::-moz-meter-bar {
486
- background: var(--usk-native-track-fill);
487
- border-radius: 999px;
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);
488
660
  }
489
661
 
490
- [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-suboptimum-value {
491
- background: var(--usk-native-warning);
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);
492
667
  }
493
668
 
494
- [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-even-less-good-value {
495
- background: var(--usk-native-danger);
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);
673
+ }
674
+
675
+ [data-ui][data-mode] :where(meter)::-webkit-meter-even-less-good-value {
676
+ background: var(--usk-native-meter-critical-background);
496
677
  }
497
678
 
498
- [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) {
499
680
  color: var(--usk-native-text);
500
681
  }
501
682
 
502
- [data-ui][data-theme][data-mode] :where(article, aside) {
683
+ [data-ui][data-mode] :where(article, aside) {
503
684
  padding: var(--usk-native-panel-padding);
504
685
  color: var(--usk-native-text);
505
686
  background: var(--usk-native-card-bg);
@@ -508,85 +689,132 @@
508
689
  box-shadow: var(--usk-native-shadow);
509
690
  }
510
691
 
511
- [data-ui][data-theme][data-mode] :where(dl) {
692
+ [data-ui][data-mode] :where(dl) {
512
693
  margin: 0 0 1rem;
513
694
  color: var(--usk-native-text-muted);
514
695
  }
515
696
 
516
- [data-ui][data-theme][data-mode] :where(dt) {
697
+ [data-ui][data-mode] :where(dt) {
517
698
  color: var(--usk-native-text);
518
699
  font-weight: 900;
519
700
  }
520
701
 
521
- [data-ui][data-theme][data-mode] :where(dd) { margin: .25rem 0 .75rem 1.25rem; }
522
- [data-ui][data-theme][data-mode] :where(strong, b) { color: var(--usk-native-text); font-weight: 900; }
523
- [data-ui][data-theme][data-mode] :where(u) { text-decoration-color: var(--usk-native-primary); text-decoration-thickness: .08em; text-underline-offset: .16em; }
524
- [data-ui][data-theme][data-mode] :where(bdi, bdo) { color: var(--usk-native-text); unicode-bidi: isolate; }
525
- [data-ui][data-theme][data-mode] :where(em, i, cite, var, q) { color: var(--usk-native-text); }
526
- [data-ui][data-theme][data-mode] :where(ins) { color: var(--usk-native-text); text-decoration-color: var(--usk-native-success); }
527
- [data-ui][data-theme][data-mode] :where(del, s) { color: var(--usk-native-text); text-decoration-color: var(--usk-native-danger); }
528
- [data-ui][data-theme][data-mode] :where(output) { color: var(--usk-native-text); font-weight: 800; }
529
- [data-ui][data-theme][data-mode] :where(optgroup, option) { color: var(--usk-native-text); background: var(--usk-native-surface); }
530
- [data-ui][data-theme][data-mode] :where(time, data, dfn, ruby) { color: var(--usk-native-text); }
531
- [data-ui][data-theme][data-mode] :where(search) { display: block; color: var(--usk-native-text); }
532
- [data-ui][data-theme][data-mode] :where(selectedcontent) { color: var(--usk-native-text); }
533
- [data-ui][data-theme][data-mode] :where(datalist) { display: none; }
534
-
535
- [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 {
536
717
  color: var(--usk-native-indicator);
537
718
  }
538
719
 
539
- [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 {
540
- 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);
541
723
  accent-color: var(--usk-native-indicator);
542
724
  }
543
725
 
544
- [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 {
545
727
  accent-color: var(--usk-native-indicator);
546
728
  }
547
729
 
548
- [data-ui][data-theme][data-mode] :where(input[type="number"])::-webkit-inner-spin-button,
549
- [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 {
550
732
  opacity: .72;
551
733
  }
552
734
 
553
- [data-ui][data-theme][data-mode] :where(select)::picker-icon {
735
+ [data-ui][data-mode] :where(select)::picker-icon {
554
736
  color: var(--usk-native-indicator);
737
+ opacity: var(--usk-native-indicator-opacity);
738
+ filter: var(--usk-native-indicator-filter);
555
739
  }
556
740
 
557
- [data-ui][data-theme][data-mode] :where(:focus-visible) {
741
+ [data-ui][data-mode] :where(:focus-visible) {
558
742
  outline: 3px solid var(--usk-native-focus);
559
743
  outline-offset: 3px;
560
744
  box-shadow: var(--usk-native-focus-ring);
561
745
  }
562
746
 
563
- [data-ui][data-theme][data-mode] :where(:target) {
747
+ [data-ui][data-mode] :where(:target) {
564
748
  scroll-margin-top: 6rem;
565
749
  outline: 3px solid var(--usk-native-focus);
566
750
  outline-offset: .35rem;
567
751
  }
568
752
 
569
- [data-ui][data-theme][data-mode] :where([aria-current="page"]) { font-weight: 900; }
570
- [data-ui][data-theme][data-mode] :where([aria-busy="true"]) { cursor: progress; }
571
- [data-ui][data-theme][data-mode] :where([hidden]) { display: none !important; }
572
- [data-ui][data-theme][data-mode] ::selection { color: var(--usk-native-on-primary); background: var(--usk-native-primary); }
573
- [data-ui][data-theme][data-mode] ::-webkit-scrollbar { inline-size: .75rem; block-size: .75rem; }
574
- [data-ui][data-theme][data-mode] ::-webkit-scrollbar-track { background: var(--usk-native-track); }
575
- [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); }
760
+
761
+ @supports (color: color-mix(in srgb, black, white)) {
762
+ [data-ui][data-mode] {
763
+ --usk-native-track: color-mix(in srgb, var(--usk-native-border) 50%, transparent);
764
+ }
765
+
766
+ [data-ui][data-mode] :where(code, kbd, samp) {
767
+ border-color: color-mix(in srgb, var(--usk-native-border) 62%, transparent);
768
+ }
769
+
770
+ [data-ui][data-mode] :where(mark) {
771
+ background: color-mix(in srgb, var(--usk-native-warning) 32%, transparent);
772
+ }
773
+
774
+ [data-ui][data-mode] :where(fieldset) {
775
+ background: color-mix(in srgb, var(--usk-native-card-bg) 88%, transparent);
776
+ }
777
+
778
+ [data-ui][data-mode] :where(input:disabled, textarea:disabled, select:disabled, button:disabled, [aria-disabled="true"]) {
779
+ background: color-mix(in srgb, var(--usk-native-surface-soft) 72%, transparent);
780
+ }
781
+
782
+ [data-ui][data-mode] :where(th) {
783
+ background: color-mix(in srgb, var(--usk-native-primary) 10%, transparent);
784
+ }
785
+ }
576
786
 
577
787
  @media (prefers-reduced-motion: reduce) {
578
- [data-ui][data-theme][data-mode] :where(input[type="file"])::file-selector-button,
579
- [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 {
580
790
  transition-duration: 1ms !important;
581
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;
582
808
  }
583
809
 
584
810
  @media (forced-colors: active) {
585
- [data-ui][data-theme][data-mode] :where(input, textarea, select, button, progress, meter) {
586
- forced-color-adjust: auto;
811
+ @supports (forced-color-adjust: auto) {
812
+ [data-ui][data-mode] :where(input, textarea, select, button, progress, meter) {
813
+ forced-color-adjust: auto;
814
+ }
587
815
  }
588
816
 
589
- [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) {
590
818
  border-color: Mark;
591
819
  }
592
820
  }