ui-style-kit-css 2.0.3 → 2.1.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 (43) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +81 -15
  3. package/STYLE-MAP.md +9 -1
  4. package/dist/ui-style-kit.css +10563 -4496
  5. package/dist/ui-style-kit.min.css +7 -1
  6. package/dist/ui-style-kit.visual.css +11125 -0
  7. package/dist/ui-style-kit.visual.min.css +7 -0
  8. package/dist/ui-style-kit.with-bridge.css +10567 -4499
  9. package/dist/ui-style-kit.with-bridge.min.css +7 -1
  10. package/dist/visual/bauhaus.css +2948 -0
  11. package/dist/visual/bento.css +2967 -0
  12. package/dist/visual/brutalism.css +2731 -0
  13. package/dist/visual/cyberpunk.css +2757 -0
  14. package/dist/visual/maximalist.css +2955 -0
  15. package/dist/visual/minimal-saas.css +2946 -0
  16. package/dist/visual/neumorphism.css +2952 -0
  17. package/dist/visual/retro-glass.css +2768 -0
  18. package/dist/visual/retrofuturism.css +2939 -0
  19. package/dist/visual/tactile.css +2933 -0
  20. package/dist/visual/y2k.css +2729 -0
  21. package/docs/ECOSYSTEM.md +59 -0
  22. package/docs/NATIVE-ELEMENTS.md +52 -0
  23. package/docs/PUBLISHING.md +19 -4
  24. package/docs/TOKENS.md +13 -0
  25. package/manifest.json +436 -0
  26. package/package.json +33 -4
  27. package/styles/bauhaus.css +1 -0
  28. package/styles/bento.css +1 -0
  29. package/styles/brutalism.css +6 -5
  30. package/styles/compat-layout.css +88 -0
  31. package/styles/components.css +671 -0
  32. package/styles/content-overflow.css +292 -0
  33. package/styles/cyberpunk.css +3 -2
  34. package/styles/interactive-surface-bridge.css +5 -3
  35. package/styles/interactive-surface-theme.css +114 -0
  36. package/styles/maximalist.css +2 -1
  37. package/styles/minimal-saas.css +1 -0
  38. package/styles/native-elements.css +213 -10
  39. package/styles/neumorphism.css +1 -0
  40. package/styles/retro-glass.css +3 -2
  41. package/styles/retrofuturism.css +1 -0
  42. package/styles/tactile.css +1 -0
  43. package/styles/y2k.css +3 -2
@@ -34,8 +34,16 @@
34
34
  --usk-native-border-width: 1px;
35
35
  --usk-native-field-gap: .5rem;
36
36
  --usk-native-panel-padding: 1rem;
37
+ --usk-native-control-min-block-size: 2.75rem;
37
38
  --usk-native-control-padding-block: .72rem;
38
39
  --usk-native-control-padding-inline: .95rem;
40
+ --usk-native-subcontrol-padding-block: .55rem;
41
+ --usk-native-subcontrol-padding-inline: .8rem;
42
+ --usk-native-track: color-mix(in srgb, var(--usk-native-border) 50%, transparent);
43
+ --usk-native-track-fill: var(--usk-native-primary);
44
+ --usk-native-thumb: var(--usk-native-surface-strong);
45
+ --usk-native-thumb-border: var(--usk-native-primary);
46
+ --usk-native-indicator: var(--usk-native-primary);
39
47
  --usk-native-shadow: none;
40
48
  --usk-native-shadow-md: var(--usk-native-shadow);
41
49
  --usk-native-focus-ring: 0 0 0 3px rgb(var(--usk-focus-rgb) / .28);
@@ -49,6 +57,12 @@
49
57
  text-wrap: balance;
50
58
  }
51
59
 
60
+ [data-ui][data-theme][data-mode] :where(hgroup) {
61
+ display: grid;
62
+ gap: .35rem;
63
+ margin-block: 0 1rem;
64
+ }
65
+
52
66
  [data-ui][data-theme][data-mode] :where(h1) { font-size: clamp(2rem, 5vw, 3.5rem); }
53
67
  [data-ui][data-theme][data-mode] :where(h2) { font-size: clamp(1.55rem, 3vw, 2.35rem); }
54
68
  [data-ui][data-theme][data-mode] :where(h3) { font-size: clamp(1.25rem, 2vw, 1.65rem); }
@@ -148,6 +162,12 @@
148
162
  font-size: .9rem;
149
163
  }
150
164
 
165
+ [data-ui][data-theme][data-mode] :where(form) {
166
+ display: grid;
167
+ gap: var(--usk-native-field-gap);
168
+ min-inline-size: 0;
169
+ }
170
+
151
171
  [data-ui][data-theme][data-mode] :where(fieldset) {
152
172
  display: grid;
153
173
  gap: .9rem;
@@ -184,7 +204,7 @@
184
204
 
185
205
  [data-ui][data-theme][data-mode] :where(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]), textarea, select) {
186
206
  width: 100%;
187
- min-height: 2.75rem;
207
+ min-block-size: var(--usk-native-control-min-block-size);
188
208
  padding: var(--usk-native-control-padding-block) var(--usk-native-control-padding-inline);
189
209
  color: var(--usk-native-text);
190
210
  background: var(--usk-native-control-bg);
@@ -193,6 +213,16 @@
193
213
  font: inherit;
194
214
  }
195
215
 
216
+ [data-ui][data-theme][data-mode] :where(input, textarea, select, button) {
217
+ color-scheme: inherit;
218
+ accent-color: var(--usk-native-primary);
219
+ }
220
+
221
+ [data-ui][data-theme][data-mode] :where(input, textarea)::placeholder {
222
+ color: var(--usk-native-text-muted);
223
+ opacity: .78;
224
+ }
225
+
196
226
  [data-ui][data-theme][data-mode] :where(textarea) {
197
227
  min-height: 7rem;
198
228
  resize: vertical;
@@ -201,7 +231,7 @@
201
231
  [data-ui][data-theme][data-mode] :where(input, textarea, select, button) { font: inherit; }
202
232
 
203
233
  [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])) {
204
- min-height: 2.75rem;
234
+ min-block-size: var(--usk-native-control-min-block-size);
205
235
  padding: .7rem 1rem;
206
236
  color: var(--usk-native-on-primary);
207
237
  background: var(--usk-native-primary);
@@ -218,16 +248,53 @@
218
248
  }
219
249
 
220
250
  [data-ui][data-theme][data-mode] :where(input[type="checkbox"], input[type="radio"]) {
221
- inline-size: 1.1rem;
222
- block-size: 1.1rem;
251
+ inline-size: 1.5rem;
252
+ block-size: 1.5rem;
223
253
  accent-color: var(--usk-native-primary);
224
254
  }
225
255
 
226
256
  [data-ui][data-theme][data-mode] :where(input[type="range"]) {
257
+ -webkit-appearance: none;
258
+ appearance: none;
227
259
  width: 100%;
260
+ min-block-size: 1.5rem;
261
+ background: transparent;
228
262
  accent-color: var(--usk-native-primary);
229
263
  }
230
264
 
265
+ [data-ui][data-theme][data-mode] :where(input[type="range"])::-webkit-slider-runnable-track {
266
+ block-size: .45rem;
267
+ background: var(--usk-native-track);
268
+ border-radius: 999px;
269
+ }
270
+
271
+ [data-ui][data-theme][data-mode] :where(input[type="range"])::-moz-range-track {
272
+ block-size: .45rem;
273
+ background: var(--usk-native-track);
274
+ border-radius: 999px;
275
+ }
276
+
277
+ [data-ui][data-theme][data-mode] :where(input[type="range"])::-webkit-slider-thumb {
278
+ -webkit-appearance: none;
279
+ appearance: none;
280
+ inline-size: 1.2rem;
281
+ block-size: 1.2rem;
282
+ margin-block-start: -.38rem;
283
+ background: var(--usk-native-thumb);
284
+ border: var(--usk-native-border-width) solid var(--usk-native-thumb-border);
285
+ border-radius: 999px;
286
+ box-shadow: var(--usk-native-shadow);
287
+ }
288
+
289
+ [data-ui][data-theme][data-mode] :where(input[type="range"])::-moz-range-thumb {
290
+ inline-size: 1.2rem;
291
+ block-size: 1.2rem;
292
+ background: var(--usk-native-thumb);
293
+ border: var(--usk-native-border-width) solid var(--usk-native-thumb-border);
294
+ border-radius: 999px;
295
+ box-shadow: var(--usk-native-shadow);
296
+ }
297
+
231
298
  [data-ui][data-theme][data-mode] :where(input[type="color"]) {
232
299
  inline-size: 3rem;
233
300
  block-size: 2.4rem;
@@ -237,11 +304,27 @@
237
304
  border-radius: var(--usk-native-radius-sm);
238
305
  }
239
306
 
307
+ [data-ui][data-theme][data-mode] :where(input[type="color"])::-webkit-color-swatch-wrapper {
308
+ padding: 0;
309
+ }
310
+
311
+ [data-ui][data-theme][data-mode] :where(input[type="color"])::-webkit-color-swatch {
312
+ border: 0;
313
+ border-radius: calc(var(--usk-native-radius-sm) / 1.5);
314
+ }
315
+
316
+ [data-ui][data-theme][data-mode] :where(input[type="color"])::-moz-color-swatch {
317
+ border: 0;
318
+ border-radius: calc(var(--usk-native-radius-sm) / 1.5);
319
+ }
320
+
240
321
  [data-ui][data-theme][data-mode] :where(input[type="file"]) { color: var(--usk-native-text-muted); }
241
322
 
242
- [data-ui][data-theme][data-mode] :where(input[type="file"]::file-selector-button) {
323
+ /* Keep pseudo-elements outside :where() because engines reject them inside selector-list arguments. */
324
+ [data-ui][data-theme][data-mode] :where(input[type="file"])::file-selector-button,
325
+ [data-ui][data-theme][data-mode] :where(input[type="file"])::-webkit-file-upload-button {
243
326
  margin-inline-end: .75rem;
244
- padding: .55rem .8rem;
327
+ padding: var(--usk-native-subcontrol-padding-block) var(--usk-native-subcontrol-padding-inline);
245
328
  color: var(--usk-native-on-primary);
246
329
  background: var(--usk-native-primary);
247
330
  border: var(--usk-native-border-width) solid var(--usk-native-primary);
@@ -250,15 +333,63 @@
250
333
  cursor: pointer;
251
334
  }
252
335
 
253
- [data-ui][data-theme][data-mode] :where(input:disabled, textarea:disabled, select:disabled, button:disabled, [aria-disabled="true"]) {
254
- opacity: .55;
336
+ [data-ui][data-theme][data-mode] :where(input[type="file"]:hover)::file-selector-button,
337
+ [data-ui][data-theme][data-mode] :where(input[type="file"]:hover)::-webkit-file-upload-button {
338
+ background: var(--usk-native-primary-hover);
339
+ border-color: var(--usk-native-primary-hover);
340
+ }
341
+
342
+ [data-ui][data-theme][data-mode] :where(input[type="file"]:focus-visible)::file-selector-button,
343
+ [data-ui][data-theme][data-mode] :where(input[type="file"]:focus-visible)::-webkit-file-upload-button {
344
+ box-shadow: var(--usk-native-focus-ring);
345
+ }
346
+
347
+ [data-ui][data-theme][data-mode] :where(input[type="file"]:active)::file-selector-button,
348
+ [data-ui][data-theme][data-mode] :where(input[type="file"]:active)::-webkit-file-upload-button {
349
+ filter: brightness(.96);
350
+ }
351
+
352
+ [data-ui][data-theme][data-mode] :where(input[type="file"]:disabled)::file-selector-button,
353
+ [data-ui][data-theme][data-mode] :where(input[type="file"]:disabled)::-webkit-file-upload-button {
354
+ color: var(--usk-native-text-muted);
355
+ background: var(--usk-native-surface-soft);
356
+ border-color: var(--usk-native-border);
255
357
  cursor: not-allowed;
256
358
  }
257
359
 
258
- [data-ui][data-theme][data-mode] :where(input:invalid, textarea:invalid, select:invalid, [aria-invalid="true"]) {
360
+ [data-ui][data-theme][data-mode] :where(input:read-only, textarea:read-only) {
361
+ background: var(--usk-native-surface-soft);
362
+ }
363
+
364
+ [data-ui][data-theme][data-mode] :where(input:required, textarea:required, select:required) {
365
+ box-shadow: inset .22rem 0 0 var(--usk-native-indicator);
366
+ }
367
+
368
+ [data-ui][data-theme][data-mode] :where(input:user-valid, textarea:user-valid, select:user-valid, .is-valid) {
369
+ border-color: var(--usk-native-success);
370
+ }
371
+
372
+ [data-ui][data-theme][data-mode] :where(input:user-invalid, textarea:user-invalid, select:user-invalid, [aria-invalid="true"], .is-invalid) {
259
373
  border-color: var(--usk-native-danger);
260
374
  }
261
375
 
376
+ [data-ui][data-theme][data-mode] :where(input[type="checkbox"]:indeterminate, input[type="radio"]:indeterminate) {
377
+ accent-color: var(--usk-native-warning);
378
+ }
379
+
380
+ [data-ui][data-theme][data-mode] :where(button:active, input[type="button"]:active, input[type="submit"]:active, input[type="reset"]:active) {
381
+ filter: brightness(.96);
382
+ }
383
+
384
+ [data-ui][data-theme][data-mode] :where(input:disabled, textarea:disabled, select:disabled, button:disabled, [aria-disabled="true"]) {
385
+ color: var(--usk-native-text-muted);
386
+ background: color-mix(in srgb, var(--usk-native-surface-soft) 72%, transparent);
387
+ border-color: var(--usk-native-border);
388
+ box-shadow: none;
389
+ opacity: .55;
390
+ cursor: not-allowed;
391
+ }
392
+
262
393
  [data-ui][data-theme][data-mode] :where(table) {
263
394
  width: 100%;
264
395
  margin: 1rem 0;
@@ -314,7 +445,7 @@
314
445
  box-shadow: var(--usk-native-shadow-md), 0 30px 80px rgb(0 0 0 / .42);
315
446
  }
316
447
 
317
- [data-ui][data-theme][data-mode] :where(dialog::backdrop) { background: rgb(0 0 0 / .62); }
448
+ [data-ui][data-theme][data-mode] :where(dialog)::backdrop { background: rgb(0 0 0 / .62); }
318
449
 
319
450
  [data-ui][data-theme][data-mode] :where(progress, meter) {
320
451
  width: 100%;
@@ -322,6 +453,32 @@
322
453
  accent-color: var(--usk-native-primary);
323
454
  }
324
455
 
456
+ [data-ui][data-theme][data-mode] :where(progress, meter)::-webkit-progress-bar,
457
+ [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-bar {
458
+ background: var(--usk-native-track);
459
+ border-radius: 999px;
460
+ }
461
+
462
+ [data-ui][data-theme][data-mode] :where(progress)::-webkit-progress-value,
463
+ [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-optimum-value {
464
+ background: var(--usk-native-track-fill);
465
+ border-radius: inherit;
466
+ }
467
+
468
+ [data-ui][data-theme][data-mode] :where(progress)::-moz-progress-bar,
469
+ [data-ui][data-theme][data-mode] :where(meter)::-moz-meter-bar {
470
+ background: var(--usk-native-track-fill);
471
+ border-radius: 999px;
472
+ }
473
+
474
+ [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-suboptimum-value {
475
+ background: var(--usk-native-warning);
476
+ }
477
+
478
+ [data-ui][data-theme][data-mode] :where(meter)::-webkit-meter-even-less-good-value {
479
+ background: var(--usk-native-danger);
480
+ }
481
+
325
482
  [data-ui][data-theme][data-mode] :where(main, section, header, footer, nav, article, aside, address) {
326
483
  color: var(--usk-native-text);
327
484
  }
@@ -347,6 +504,8 @@
347
504
 
348
505
  [data-ui][data-theme][data-mode] :where(dd) { margin: .25rem 0 .75rem 1.25rem; }
349
506
  [data-ui][data-theme][data-mode] :where(strong, b) { color: var(--usk-native-text); font-weight: 900; }
507
+ [data-ui][data-theme][data-mode] :where(u) { text-decoration-color: var(--usk-native-primary); text-decoration-thickness: .08em; text-underline-offset: .16em; }
508
+ [data-ui][data-theme][data-mode] :where(bdi, bdo) { color: var(--usk-native-text); unicode-bidi: isolate; }
350
509
  [data-ui][data-theme][data-mode] :where(em, i, cite, var, q) { color: var(--usk-native-text); }
351
510
  [data-ui][data-theme][data-mode] :where(ins) { color: var(--usk-native-text); text-decoration-color: var(--usk-native-success); }
352
511
  [data-ui][data-theme][data-mode] :where(del, s) { color: var(--usk-native-text); text-decoration-color: var(--usk-native-danger); }
@@ -354,6 +513,30 @@
354
513
  [data-ui][data-theme][data-mode] :where(optgroup, option) { color: var(--usk-native-text); background: var(--usk-native-surface); }
355
514
  [data-ui][data-theme][data-mode] :where(time, data, dfn, ruby) { color: var(--usk-native-text); }
356
515
  [data-ui][data-theme][data-mode] :where(search) { display: block; color: var(--usk-native-text); }
516
+ [data-ui][data-theme][data-mode] :where(selectedcontent) { color: var(--usk-native-text); }
517
+ [data-ui][data-theme][data-mode] :where(datalist) { display: none; }
518
+
519
+ [data-ui][data-theme][data-mode] :where(summary, li)::marker {
520
+ color: var(--usk-native-indicator);
521
+ }
522
+
523
+ [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 {
524
+ opacity: .78;
525
+ accent-color: var(--usk-native-indicator);
526
+ }
527
+
528
+ [data-ui][data-theme][data-mode] :where(input[type="search"])::-webkit-search-cancel-button {
529
+ accent-color: var(--usk-native-indicator);
530
+ }
531
+
532
+ [data-ui][data-theme][data-mode] :where(input[type="number"])::-webkit-inner-spin-button,
533
+ [data-ui][data-theme][data-mode] :where(input[type="number"])::-webkit-outer-spin-button {
534
+ opacity: .72;
535
+ }
536
+
537
+ [data-ui][data-theme][data-mode] :where(select)::picker-icon {
538
+ color: var(--usk-native-indicator);
539
+ }
357
540
 
358
541
  [data-ui][data-theme][data-mode] :where(:focus-visible) {
359
542
  outline: 3px solid var(--usk-native-focus);
@@ -371,4 +554,24 @@
371
554
  [data-ui][data-theme][data-mode] :where([aria-busy="true"]) { cursor: progress; }
372
555
  [data-ui][data-theme][data-mode] :where([hidden]) { display: none !important; }
373
556
  [data-ui][data-theme][data-mode] ::selection { color: var(--usk-native-on-primary); background: var(--usk-native-primary); }
557
+ [data-ui][data-theme][data-mode] ::-webkit-scrollbar { inline-size: .75rem; block-size: .75rem; }
558
+ [data-ui][data-theme][data-mode] ::-webkit-scrollbar-track { background: var(--usk-native-track); }
559
+ [data-ui][data-theme][data-mode] ::-webkit-scrollbar-thumb { background: var(--usk-native-thumb-border); border-radius: 999px; }
560
+
561
+ @media (prefers-reduced-motion: reduce) {
562
+ [data-ui][data-theme][data-mode] :where(input[type="file"])::file-selector-button,
563
+ [data-ui][data-theme][data-mode] :where(input[type="file"])::-webkit-file-upload-button {
564
+ transition-duration: 1ms !important;
565
+ }
566
+ }
567
+
568
+ @media (forced-colors: active) {
569
+ [data-ui][data-theme][data-mode] :where(input, textarea, select, button, progress, meter) {
570
+ forced-color-adjust: auto;
571
+ }
572
+
573
+ [data-ui][data-theme][data-mode] :where(input:user-invalid, textarea:user-invalid, select:user-invalid, [aria-invalid="true"], .is-invalid) {
574
+ border-color: Mark;
575
+ }
576
+ }
374
577
  }
@@ -13,6 +13,7 @@
13
13
 
14
14
  @import url("./theme-colors.css");
15
15
  @import url("./native-elements.css");
16
+ @import url("./content-overflow.css");
16
17
 
17
18
  @layer ui-style-kit.neumorphism {
18
19
  :root {
@@ -14,6 +14,7 @@
14
14
 
15
15
  @import url("./theme-colors.css");
16
16
  @import url("./native-elements.css");
17
+ @import url("./content-overflow.css");
17
18
 
18
19
  @layer ui-style-kit.retro_glass {
19
20
  :root {
@@ -276,11 +277,11 @@
276
277
  .rg-inset, .rg-well { background: linear-gradient(180deg, rgb(0 0 0 / .08), rgb(255 255 255 / .04)), var(--rg-surface-soft); border: 1px solid rgb(var(--rg-border-rgb) / .36); border-radius: var(--rg-radius-lg); box-shadow: inset 0 8px 22px rgb(0 0 0 / .16); -webkit-backdrop-filter: blur(12px) saturate(140%); backdrop-filter: blur(12px) saturate(140%); } .rg-well { padding: var(--rg-space-5); }
277
278
 
278
279
  .rg-button, .rg-icon-button { appearance: none; display: inline-flex; align-items: center; justify-content: center; gap: var(--rg-space-2); min-height: 2.85rem; padding: .75rem 1.1rem; background: linear-gradient(135deg, rgb(255 255 255 / .24), rgb(255 255 255 / .04)), var(--rg-surface); color: var(--rg-text); border: 1px solid rgb(var(--rg-border-rgb) / .56); border-top-color: rgb(255 255 255 / .32); border-radius: var(--rg-radius-md); box-shadow: var(--rg-shadow-sm); -webkit-backdrop-filter: blur(14px) saturate(150%); backdrop-filter: blur(14px) saturate(150%); font: inherit; font-family: var(--rg-font-display); font-weight: 900; letter-spacing: .08em; cursor: pointer; text-decoration: none; transition: transform var(--rg-transition-fast), box-shadow var(--rg-transition-fast), background var(--rg-transition-fast), border-color var(--rg-transition-fast); }
279
- .rg-button:hover, .rg-icon-button:hover { transform: translateY(-2px); border-color: rgb(var(--rg-primary-rgb) / .68); box-shadow: var(--rg-shadow-md), 0 0 24px var(--rg-glow-primary); } .rg-button:active, .rg-icon-button:active, .rg-button.is-active, .rg-button[aria-pressed="true"] { transform: translateY(1px); box-shadow: inset 0 8px 18px rgb(0 0 0 / .18), 0 0 18px var(--rg-glow-primary); } .rg-button-primary { background: linear-gradient(135deg, rgb(255 255 255 / .22), rgb(255 255 255 / .04)), var(--rg-primary); color: var(--rg-on-primary); border-color: rgb(var(--rg-primary-rgb) / .72); } .rg-button-primary:hover { background: var(--rg-primary-hover); } .rg-button-secondary { background: linear-gradient(135deg, rgb(255 255 255 / .22), rgb(255 255 255 / .04)), var(--rg-secondary); color: var(--rg-on-secondary); border-color: rgb(var(--rg-secondary-rgb) / .72); } .rg-button-secondary:hover { background: var(--rg-secondary-hover); } .rg-button-danger { background: var(--rg-danger); color: #fff; } .rg-icon-button { width: 2.85rem; padding: 0; }
280
+ .rg-button:hover, .rg-icon-button:hover { transform: translateY(-2px); border-color: rgb(var(--rg-primary-rgb) / .68); box-shadow: var(--rg-shadow-md), 0 0 24px var(--rg-glow-primary); } .rg-button:active, .rg-icon-button:active, .rg-button.is-active, .rg-button[aria-pressed="true"] { transform: translateY(1px); box-shadow: inset 0 8px 18px rgb(0 0 0 / .18), 0 0 18px var(--rg-glow-primary); } .rg-button-primary { background: linear-gradient(135deg, rgb(255 255 255 / .22), rgb(255 255 255 / .04)), var(--rg-primary); color: var(--rg-on-primary); border-color: rgb(var(--rg-primary-rgb) / .72); } .rg-button-primary:hover { background: var(--rg-primary-hover); } .rg-button-secondary { background: linear-gradient(135deg, rgb(255 255 255 / .22), rgb(255 255 255 / .04)), var(--rg-secondary); color: var(--rg-on-secondary); border-color: rgb(var(--rg-secondary-rgb) / .72); } .rg-button-secondary:hover { background: var(--rg-secondary-hover); } .rg-button-danger { background: var(--rg-danger); color: var(--rg-on-danger); } .rg-icon-button { width: 2.85rem; padding: 0; }
280
281
 
281
282
  .rg-field { display: flex; flex-direction: column; gap: var(--rg-space-2); } .rg-label { font-family: var(--rg-font-heading); text-transform: uppercase; letter-spacing: .12em; font-weight: 900; font-size: .8rem; } .rg-input, .rg-textarea, .rg-select { width: 100%; min-height: 2.9rem; padding: .8rem 1rem; background: linear-gradient(180deg, rgb(255 255 255 / .06), rgb(0 0 0 / .08)), var(--rg-surface-soft); color: var(--rg-text); border: 1px solid rgb(var(--rg-border-rgb) / .44); border-radius: var(--rg-radius-md); box-shadow: inset 0 8px 18px rgb(0 0 0 / .14); font: inherit; outline: none; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } .rg-textarea { min-height: 8rem; resize: vertical; } .rg-input:focus, .rg-textarea:focus, .rg-select:focus { border-color: var(--rg-focus); box-shadow: inset 0 8px 18px rgb(0 0 0 / .14), 0 0 0 3px rgb(var(--rg-focus-rgb) / .24), 0 0 26px rgb(var(--rg-focus-rgb) / .22); } .rg-help-text { color: var(--rg-text-muted); font-size: .9rem; }
282
283
 
283
- .rg-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: .35rem .75rem; background: linear-gradient(135deg, rgb(255 255 255 / .2), rgb(255 255 255 / .04)), var(--rg-surface); color: var(--rg-text); border: 1px solid rgb(var(--rg-border-rgb) / .5); border-radius: var(--rg-radius-pill); box-shadow: var(--rg-shadow-sm); font-size: .78rem; font-weight: 900; letter-spacing: .08em; -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); } .rg-badge-primary { background: var(--rg-primary); color: var(--rg-on-primary); } .rg-badge-secondary { background: var(--rg-secondary); color: var(--rg-on-secondary); } .rg-badge-success { background: var(--rg-success); color: #fff; } .rg-badge-warning { background: var(--rg-warning); color: #111; } .rg-badge-danger { background: var(--rg-danger); color: #fff; }
284
+ .rg-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: .35rem .75rem; background: linear-gradient(135deg, rgb(255 255 255 / .2), rgb(255 255 255 / .04)), var(--rg-surface); color: var(--rg-text); border: 1px solid rgb(var(--rg-border-rgb) / .5); border-radius: var(--rg-radius-pill); box-shadow: var(--rg-shadow-sm); font-size: .78rem; font-weight: 900; letter-spacing: .08em; -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); } .rg-badge-primary { background: var(--rg-primary); color: var(--rg-on-primary); } .rg-badge-secondary { background: var(--rg-secondary); color: var(--rg-on-secondary); } .rg-badge-success { background: var(--rg-success); color: var(--rg-on-success); } .rg-badge-warning { background: var(--rg-warning); color: var(--rg-on-warning); } .rg-badge-danger { background: var(--rg-danger); color: var(--rg-on-danger); }
284
285
  .rg-nav { display: flex; flex-wrap: wrap; gap: var(--rg-space-2); padding: var(--rg-space-2); background: linear-gradient(135deg, rgb(255 255 255 / .18), rgb(255 255 255 / .04)), var(--rg-surface); border: 1px solid var(--rg-border); border-radius: var(--rg-radius-xl); box-shadow: var(--rg-shadow-md), 0 0 24px var(--rg-glow-primary); -webkit-backdrop-filter: blur(18px) saturate(150%); backdrop-filter: blur(18px) saturate(150%); } .rg-nav-link { display: inline-flex; min-height: 2.5rem; align-items: center; padding: .65rem 1rem; color: var(--rg-text-muted); border: 1px solid transparent; border-radius: var(--rg-radius-pill); text-decoration: none; font-weight: 900; letter-spacing: .08em; } .rg-nav-link:hover { color: var(--rg-text); background: rgb(255 255 255 / .1); border-color: rgb(var(--rg-primary-rgb) / .36); } .rg-nav-link.is-active, .rg-nav-link[aria-current="page"] { background: var(--rg-primary); color: var(--rg-on-primary); box-shadow: 0 0 22px var(--rg-glow-primary); }
285
286
  /* Tooltips use compact contrast surfaces that stay readable across theme modes. */
286
287
  .rg-tooltip, [data-ui="retro-glass"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) { display: inline-flex; align-items: center; gap: .45rem; max-inline-size: 16rem; padding: .62rem .88rem; background: linear-gradient(135deg, rgb(255 255 255 / .28), rgb(255 255 255 / .06)), var(--rg-surface); color: var(--rg-text); border: 1px solid rgb(255 255 255 / .34); border-radius: 38% 62% 48% 52% / 52% 42% 58% 48%; box-shadow: var(--rg-shadow-md), 0 0 1.25rem var(--rg-glow-primary); -webkit-backdrop-filter: blur(14px) saturate(145%); backdrop-filter: blur(14px) saturate(145%); font-size: .82rem; font-weight: 900; line-height: 1.3; letter-spacing: .04em; }
@@ -13,6 +13,7 @@
13
13
 
14
14
  @import url("./theme-colors.css");
15
15
  @import url("./native-elements.css");
16
+ @import url("./content-overflow.css");
16
17
 
17
18
  @layer ui-style-kit.retrofuturism {
18
19
  :root {
@@ -13,6 +13,7 @@
13
13
 
14
14
  @import url("./theme-colors.css");
15
15
  @import url("./native-elements.css");
16
+ @import url("./content-overflow.css");
16
17
 
17
18
  @layer ui-style-kit.tactile {
18
19
  :root {
package/styles/y2k.css CHANGED
@@ -14,6 +14,7 @@
14
14
 
15
15
  @import url("./theme-colors.css");
16
16
  @import url("./native-elements.css");
17
+ @import url("./content-overflow.css");
17
18
 
18
19
  @layer ui-style-kit.y2k {
19
20
  :root {
@@ -275,11 +276,11 @@
275
276
 
276
277
  .y2k-button, .y2k-icon-button { appearance: none; display: inline-flex; align-items: center; justify-content: center; gap: var(--y2k-space-2); min-height: 2.85rem; padding: .75rem 1.15rem; background: linear-gradient(180deg, rgb(255 255 255 / .42), rgb(255 255 255 / .08)), var(--y2k-surface-strong); color: var(--y2k-text); border: 1px solid rgb(255 255 255 / .42); border-radius: var(--y2k-radius-pill); box-shadow: var(--y2k-shadow-sm), inset 0 1px 0 rgb(255 255 255 / .5); font: inherit; font-family: var(--y2k-font-display); font-weight: 900; letter-spacing: .02em; cursor: pointer; text-decoration: none; transition: transform var(--y2k-transition-fast), box-shadow var(--y2k-transition-fast), background var(--y2k-transition-fast); }
277
278
  .y2k-button:hover, .y2k-icon-button:hover { transform: translateY(-2px); box-shadow: var(--y2k-shadow-md), 0 0 26px var(--y2k-glow-accent); } .y2k-button:active, .y2k-icon-button:active, .y2k-button.is-active, .y2k-button[aria-pressed="true"] { transform: translateY(1px) scale(.99); box-shadow: inset 0 8px 16px rgb(0 0 0 / .14); }
278
- .y2k-button-primary { background: linear-gradient(180deg, rgb(255 255 255 / .46), rgb(255 255 255 / .08)), var(--y2k-primary); color: var(--y2k-on-primary); } .y2k-button-primary:hover { background: linear-gradient(180deg, rgb(255 255 255 / .5), rgb(255 255 255 / .1)), var(--y2k-primary-hover); } .y2k-button-secondary { background: linear-gradient(180deg, rgb(255 255 255 / .46), rgb(255 255 255 / .08)), var(--y2k-secondary); color: var(--y2k-on-secondary); } .y2k-button-secondary:hover { background: var(--y2k-secondary-hover); } .y2k-button-danger { background: var(--y2k-danger); color: #fff; } .y2k-icon-button { width: 2.85rem; padding: 0; }
279
+ .y2k-button-primary { background: linear-gradient(180deg, rgb(255 255 255 / .46), rgb(255 255 255 / .08)), var(--y2k-primary); color: var(--y2k-on-primary); } .y2k-button-primary:hover { background: linear-gradient(180deg, rgb(255 255 255 / .5), rgb(255 255 255 / .1)), var(--y2k-primary-hover); } .y2k-button-secondary { background: linear-gradient(180deg, rgb(255 255 255 / .46), rgb(255 255 255 / .08)), var(--y2k-secondary); color: var(--y2k-on-secondary); } .y2k-button-secondary:hover { background: var(--y2k-secondary-hover); } .y2k-button-danger { background: var(--y2k-danger); color: var(--y2k-on-danger); } .y2k-icon-button { width: 2.85rem; padding: 0; }
279
280
 
280
281
  .y2k-field { display: flex; flex-direction: column; gap: var(--y2k-space-2); } .y2k-label { font-weight: 900; letter-spacing: .04em; } .y2k-input, .y2k-textarea, .y2k-select { width: 100%; min-height: 2.9rem; padding: .8rem 1rem; background: linear-gradient(180deg, rgb(255 255 255 / .22), rgb(0 0 0 / .05)), var(--y2k-surface-soft); color: var(--y2k-text); border: 1px solid rgb(255 255 255 / .38); border-radius: var(--y2k-radius-lg); box-shadow: inset 0 6px 14px rgb(0 0 0 / .12); font: inherit; outline: none; } .y2k-textarea { min-height: 8rem; resize: vertical; } .y2k-input:focus, .y2k-textarea:focus, .y2k-select:focus { border-color: var(--y2k-focus); box-shadow: inset 0 6px 14px rgb(0 0 0 / .12), 0 0 0 3px rgb(var(--y2k-focus-rgb) / .25), 0 0 24px rgb(var(--y2k-focus-rgb) / .22); } .y2k-help-text { color: var(--y2k-text-muted); font-size: .9rem; }
281
282
 
282
- .y2k-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: .35rem .8rem; background: linear-gradient(180deg, rgb(255 255 255 / .4), rgb(255 255 255 / .08)), var(--y2k-surface-strong); color: var(--y2k-text); border: 1px solid rgb(255 255 255 / .42); border-radius: var(--y2k-radius-pill); box-shadow: var(--y2k-shadow-sm); font-size: .78rem; font-weight: 900; } .y2k-badge-primary { background: var(--y2k-primary); color: var(--y2k-on-primary); } .y2k-badge-secondary { background: var(--y2k-secondary); color: var(--y2k-on-secondary); } .y2k-badge-success { background: var(--y2k-success); color: #fff; } .y2k-badge-warning { background: var(--y2k-warning); color: #111; } .y2k-badge-danger { background: var(--y2k-danger); color: #fff; }
283
+ .y2k-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: .35rem .8rem; background: linear-gradient(180deg, rgb(255 255 255 / .4), rgb(255 255 255 / .08)), var(--y2k-surface-strong); color: var(--y2k-text); border: 1px solid rgb(255 255 255 / .42); border-radius: var(--y2k-radius-pill); box-shadow: var(--y2k-shadow-sm); font-size: .78rem; font-weight: 900; } .y2k-badge-primary { background: var(--y2k-primary); color: var(--y2k-on-primary); } .y2k-badge-secondary { background: var(--y2k-secondary); color: var(--y2k-on-secondary); } .y2k-badge-success { background: var(--y2k-success); color: var(--y2k-on-success); } .y2k-badge-warning { background: var(--y2k-warning); color: var(--y2k-on-warning); } .y2k-badge-danger { background: var(--y2k-danger); color: var(--y2k-on-danger); }
283
284
  .y2k-nav { display: flex; flex-wrap: wrap; gap: var(--y2k-space-2); padding: var(--y2k-space-2); background: linear-gradient(180deg, rgb(255 255 255 / .38), rgb(255 255 255 / .08)), var(--y2k-surface); border: 1px solid rgb(255 255 255 / .42); border-radius: var(--y2k-radius-pill); box-shadow: var(--y2k-shadow-md); } .y2k-nav-link { display: inline-flex; min-height: 2.5rem; align-items: center; padding: .65rem 1rem; color: var(--y2k-text-muted); border-radius: var(--y2k-radius-pill); text-decoration: none; font-weight: 900; } .y2k-nav-link:hover { color: var(--y2k-text); background: rgb(255 255 255 / .16); } .y2k-nav-link.is-active, .y2k-nav-link[aria-current="page"] { background: var(--y2k-primary); color: var(--y2k-on-primary); box-shadow: 0 0 20px var(--y2k-glow-primary); }
284
285
  /* Tooltips use compact contrast surfaces that stay readable across theme modes. */
285
286
  .y2k-tooltip, [data-ui="y2k"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) { display: inline-flex; align-items: center; gap: .45rem; max-inline-size: 16rem; padding: .62rem .9rem; background: radial-gradient(circle at 28% 18%, rgb(255 255 255 / .76), transparent 26%), linear-gradient(135deg, var(--y2k-primary), var(--y2k-secondary)); color: var(--y2k-on-primary); border: 1px solid rgb(255 255 255 / .54); border-radius: var(--y2k-radius-pill); box-shadow: var(--y2k-shadow-md), 0 0 1.1rem var(--y2k-glow-primary); font-size: .82rem; font-weight: 900; line-height: 1.3; }