ui-style-kit-css 2.1.0 → 2.3.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 (64) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +169 -54
  3. package/STYLE-MAP.md +55 -0
  4. package/dist/ui-style-kit.css +23744 -7015
  5. package/dist/ui-style-kit.min.css +2 -2
  6. package/dist/ui-style-kit.visual.css +22948 -6669
  7. package/dist/ui-style-kit.visual.min.css +2 -2
  8. package/dist/ui-style-kit.with-bridge.css +23941 -7205
  9. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  10. package/dist/visual/art-deco.css +4776 -0
  11. package/dist/visual/bauhaus.css +1894 -147
  12. package/dist/visual/bento.css +1910 -166
  13. package/dist/visual/brutalism.css +1853 -98
  14. package/dist/visual/clay.css +4789 -0
  15. package/dist/visual/cyberpunk.css +1840 -94
  16. package/dist/visual/data-terminal.css +4804 -0
  17. package/dist/visual/editorial-luxe.css +4804 -0
  18. package/dist/visual/industrial-utility.css +4797 -0
  19. package/dist/visual/maximalist.css +1862 -112
  20. package/dist/visual/minimal-saas.css +1886 -147
  21. package/dist/visual/neo-noir.css +4790 -0
  22. package/dist/visual/neumorphism.css +1896 -151
  23. package/dist/visual/organic-modern.css +4767 -0
  24. package/dist/visual/paper-editorial.css +4799 -0
  25. package/dist/visual/retro-glass.css +1859 -93
  26. package/dist/visual/retrofuturism.css +1852 -113
  27. package/dist/visual/tactile.css +1851 -111
  28. package/dist/visual/technical-blueprint.css +4791 -0
  29. package/dist/visual/y2k.css +1840 -92
  30. package/docs/BRIDGE-MIGRATION.md +20 -0
  31. package/docs/ECOSYSTEM.md +39 -4
  32. package/docs/PUBLISHING.md +38 -13
  33. package/docs/STYLE-GUIDE.md +53 -13
  34. package/docs/TOKENS.md +50 -1
  35. package/docs/superpowers/plans/2026-08-29-preset-identity-system-refinement.md +649 -0
  36. package/docs/superpowers/specs/2026-08-29-preset-identity-system-refinement-design.md +212 -0
  37. package/manifest.json +482 -2
  38. package/package.json +77 -7
  39. package/styles/art-deco.css +683 -0
  40. package/styles/bauhaus.css +237 -3
  41. package/styles/bento.css +266 -7
  42. package/styles/brutalism.css +235 -3
  43. package/styles/clay.css +692 -0
  44. package/styles/components.css +608 -14
  45. package/styles/content-overflow.css +423 -4
  46. package/styles/cyberpunk.css +234 -3
  47. package/styles/data-terminal.css +691 -0
  48. package/styles/editorial-luxe.css +687 -0
  49. package/styles/industrial-utility.css +690 -0
  50. package/styles/interactive-surface-bridge.css +17 -10
  51. package/styles/interactive-surface-theme.css +17 -8
  52. package/styles/maximalist.css +238 -4
  53. package/styles/minimal-saas.css +234 -3
  54. package/styles/native-elements.css +80 -12
  55. package/styles/neo-noir.css +690 -0
  56. package/styles/neumorphism.css +234 -3
  57. package/styles/organic-modern.css +683 -0
  58. package/styles/paper-editorial.css +688 -0
  59. package/styles/retro-glass.css +242 -3
  60. package/styles/retrofuturism.css +233 -3
  61. package/styles/tactile.css +235 -3
  62. package/styles/technical-blueprint.css +686 -0
  63. package/styles/theme-colors.css +796 -5
  64. package/styles/y2k.css +237 -3
@@ -1,6 +1,6 @@
1
1
  /* =========================================================
2
2
  UI Style Kit CSS — Skeuomorphic / Tactile Theme System
3
- Includes 10 color schemes, light/dark/contrast modes,
3
+ Includes 20 color schemes, light/dark/contrast modes,
4
4
  component classes, native element coverage, and CSS-only
5
5
  accessibility presentation helpers.
6
6
 
@@ -131,7 +131,7 @@
131
131
  --tactile-fg: var(--tactile-text);
132
132
  --tactile-surface-fg: var(--tactile-text);
133
133
  --tactile-muted: var(--tactile-text-muted);
134
- --tactile-border: rgb(var(--tactile-border-rgb) / var(--tactile-border-alpha));
134
+ --tactile-border: rgb(var(--tactile-border-rgb) / max(var(--tactile-border-alpha), var(--usk-border-min-alpha)));
135
135
  --tactile-control-fg: var(--tactile-text);
136
136
  --tactile-primary: rgb(var(--tactile-primary-rgb));
137
137
  --tactile-primary-hover: rgb(var(--tactile-primary-hover-rgb));
@@ -161,6 +161,10 @@
161
161
  --tactile-spinner-accent: var(--tactile-accent);
162
162
  }
163
163
 
164
+ @supports (color: color-mix(in srgb, black, white)) {
165
+ [data-ui="tactile"][data-theme][data-mode] { --tactile-border: color-mix(in srgb, rgb(var(--tactile-border-rgb) / max(var(--tactile-border-alpha), var(--usk-border-min-alpha))), var(--tactile-text) var(--usk-border-text-mix)); }
166
+ }
167
+
164
168
 
165
169
 
166
170
 
@@ -404,6 +408,234 @@
404
408
  @keyframes tactile-spin { to { transform: rotate(360deg); } }
405
409
 
406
410
 
411
+
412
+ /* =========================================================
413
+ Marketing / Commercial Component Modifiers
414
+ Reusable visual patterns derived from service-oriented brand systems.
415
+ ========================================================= */
416
+
417
+ .tactile-card-media {
418
+ display: block;
419
+ inline-size: 100%;
420
+ aspect-ratio: 16 / 9;
421
+ object-fit: cover;
422
+ border: 1px solid rgb(var(--tactile-border-rgb) / .72);
423
+ border-radius: var(--tactile-radius-lg);
424
+ }
425
+
426
+ .tactile-card-service {
427
+ position: relative;
428
+ display: grid;
429
+ gap: var(--tactile-space-3);
430
+ align-content: start;
431
+ text-align: center;
432
+ overflow: visible;
433
+ }
434
+ .tactile-card-service > .tactile-icon-medallion {
435
+ justify-self: center;
436
+ margin-block-start: -2.15rem;
437
+ position: relative;
438
+ z-index: 2;
439
+ }
440
+ .tactile-card-service > .tactile-card-media + .tactile-icon-medallion { margin-block-start: -2.15rem; }
441
+
442
+ .tactile-card-feature {
443
+ display: grid;
444
+ grid-template-columns: auto minmax(0, 1fr);
445
+ gap: var(--tactile-space-4);
446
+ align-items: start;
447
+ }
448
+
449
+ .tactile-card-accent-edge {
450
+ border-inline-start: .35rem solid var(--tactile-primary);
451
+ }
452
+
453
+ .tactile-icon-medallion {
454
+ display: inline-grid;
455
+ place-items: center;
456
+ inline-size: 3.75rem;
457
+ block-size: 3.75rem;
458
+ flex: 0 0 auto;
459
+ padding: .7rem;
460
+ background: var(--tactile-primary);
461
+ color: var(--tactile-on-primary);
462
+ border: 2px solid rgb(var(--tactile-border-rgb) / .82);
463
+ border-radius: 50%;
464
+ line-height: 1;
465
+ }
466
+ .tactile-icon-medallion > :where(svg, img) { inline-size: 100%; block-size: 100%; object-fit: contain; }
467
+
468
+ .tactile-button.tactile-button-cut,
469
+ .tactile-button-cut {
470
+ border-radius: 0;
471
+ clip-path: polygon(.6rem 0, 100% 0, 100% calc(100% - .6rem), calc(100% - .6rem) 100%, 0 100%, 0 .6rem);
472
+ }
473
+ .tactile-button.tactile-button-cut:focus-visible,
474
+ .tactile-button-cut:focus-visible { outline-offset: -3px; }
475
+
476
+ .tactile-button.tactile-button-outline-heavy,
477
+ .tactile-button-outline-heavy {
478
+ background: transparent;
479
+ color: var(--tactile-primary);
480
+ border-style: solid;
481
+ border-width: 2px;
482
+ border-color: var(--tactile-primary);
483
+ box-shadow: none;
484
+ }
485
+ .tactile-button.tactile-button-outline-heavy:hover,
486
+ .tactile-button-outline-heavy:hover {
487
+ background: var(--tactile-primary);
488
+ color: var(--tactile-on-primary);
489
+ border-color: var(--tactile-primary-hover);
490
+ }
491
+
492
+ .tactile-badge-seal {
493
+ display: inline-grid;
494
+ place-items: center;
495
+ align-content: center;
496
+ inline-size: 5rem;
497
+ min-inline-size: 5rem;
498
+ aspect-ratio: 1;
499
+ padding: .65rem;
500
+ background: var(--tactile-surface-strong);
501
+ color: var(--tactile-text);
502
+ border: 2px solid var(--tactile-primary);
503
+ border-radius: 50%;
504
+ text-align: center;
505
+ font-family: var(--tactile-font-heading);
506
+ font-size: .72rem;
507
+ font-weight: 900;
508
+ line-height: 1.05;
509
+ letter-spacing: .04em;
510
+ }
511
+
512
+ .tactile-feature-strip {
513
+ display: grid;
514
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
515
+ overflow: hidden;
516
+ background: var(--tactile-card-bg);
517
+ color: var(--tactile-text);
518
+ border: 1px solid var(--tactile-border);
519
+ border-radius: var(--tactile-radius-lg);
520
+ }
521
+
522
+ .tactile-feature-item {
523
+ display: grid;
524
+ grid-template-columns: auto minmax(0, 1fr);
525
+ align-items: center;
526
+ gap: var(--tactile-space-3);
527
+ min-inline-size: 0;
528
+ padding: var(--tactile-space-4);
529
+ border-inline-end: 1px solid rgb(var(--tactile-border-rgb) / .62);
530
+ }
531
+ .tactile-feature-item:last-child { border-inline-end: 0; }
532
+ .tactile-feature-item > :where(p, small) { margin: 0; color: var(--tactile-text-muted); }
533
+
534
+ .tactile-callout-bar {
535
+ display: grid;
536
+ grid-template-columns: auto minmax(0, 1fr) auto;
537
+ align-items: center;
538
+ gap: var(--tactile-space-4);
539
+ padding: var(--tactile-space-4) var(--tactile-space-5);
540
+ background: var(--tactile-card-bg);
541
+ color: var(--tactile-text);
542
+ border: 1px solid var(--tactile-border);
543
+ border-radius: var(--tactile-radius-lg);
544
+ }
545
+ .tactile-callout-bar > :where(p, div) { min-inline-size: 0; }
546
+ .tactile-callout-bar > :where(.tactile-button, a, button):last-child { justify-self: end; }
547
+
548
+ .tactile-eyebrow {
549
+ margin: 0;
550
+ color: var(--tactile-primary);
551
+ font-family: var(--tactile-font-heading);
552
+ font-size: .76rem;
553
+ font-weight: 900;
554
+ line-height: 1.2;
555
+ letter-spacing: .14em;
556
+ text-transform: uppercase;
557
+ }
558
+
559
+ .tactile-media-scrim {
560
+ position: relative;
561
+ overflow: hidden;
562
+ isolation: isolate;
563
+ min-block-size: 12rem;
564
+ background: var(--tactile-surface-soft);
565
+ border: 1px solid var(--tactile-border);
566
+ border-radius: var(--tactile-radius-lg);
567
+ }
568
+ .tactile-media-scrim > :where(img, picture, video) {
569
+ display: block;
570
+ inline-size: 100%;
571
+ block-size: 100%;
572
+ min-block-size: inherit;
573
+ object-fit: cover;
574
+ }
575
+ .tactile-media-scrim > :where(figcaption, [data-media-caption]) {
576
+ position: absolute;
577
+ z-index: 1;
578
+ inset-inline: 0;
579
+ inset-block-end: 0;
580
+ padding: clamp(1rem, 4vw, 2rem);
581
+ color: #fff;
582
+ background: linear-gradient(to top, rgb(0 0 0 / .9), rgb(0 0 0 / .58) 56%, transparent);
583
+ }
584
+ .tactile-media-scrim > :where(figcaption, [data-media-caption]) * {
585
+ color: inherit;
586
+ }
587
+
588
+ @media (max-width: 42rem) {
589
+ .tactile-callout-bar { grid-template-columns: 1fr; align-items: start; }
590
+ .tactile-callout-bar > :where(.tactile-button, a, button):last-child { justify-self: stretch; }
591
+ .tactile-feature-item { border-inline-end: 0; border-block-end: 1px solid rgb(var(--tactile-border-rgb) / .62); }
592
+ .tactile-feature-item:last-child { border-block-end: 0; }
593
+ }
594
+
595
+ .tactile-card-service, .tactile-card-feature, .tactile-feature-strip, .tactile-callout-bar { box-shadow: 0 .75rem 1.6rem rgb(0 0 0 / .22), inset 0 1px 0 rgb(255 255 255 / .28); }
596
+ .tactile-icon-medallion, .tactile-badge-seal { background: linear-gradient(145deg, rgb(255 255 255 / .22), rgb(0 0 0 / .08)), var(--tactile-primary); box-shadow: inset 0 1px 0 rgb(255 255 255 / .4), 0 .45rem .85rem rgb(0 0 0 / .22); }
597
+ .tactile-button-outline-heavy { box-shadow: inset 0 1px 0 rgb(255 255 255 / .24), 0 .35rem .7rem rgb(0 0 0 / .18); }
598
+
599
+ /* Filled and framed actions share a shallow keycap chamfer and physical depth. */
600
+ .tactile-button.tactile-button-cut, .tactile-button-cut {
601
+ min-inline-size: 6rem;
602
+ max-inline-size: 100%;
603
+ justify-self: center;
604
+ justify-content: center;
605
+ clip-path: polygon(.38rem 0, calc(100% - .38rem) 0, 100% .38rem, 100% calc(100% - .38rem), calc(100% - .38rem) 100%, .38rem 100%, 0 calc(100% - .38rem), 0 .38rem);
606
+ }
607
+ .tactile-button.tactile-button-outline-heavy, .tactile-button-outline-heavy {
608
+ border-width: 2px;
609
+ border-radius: 0;
610
+ clip-path: polygon(.28rem 0, calc(100% - .28rem) 0, 100% .28rem, 100% calc(100% - .28rem), calc(100% - .28rem) 100%, .28rem 100%, 0 calc(100% - .28rem), 0 .28rem);
611
+ box-shadow: inset 0 2px 0 rgb(var(--tactile-surface-strong-rgb) / .72), 0 .38rem .72rem rgb(var(--tactile-text-rgb) / .2);
612
+ }
613
+
614
+ /* Marketing and native surfaces use the same bevel highlight and physical depth. */
615
+ .tactile-card-service, .tactile-media-scrim, .tactile-feature-strip, .tactile-callout-bar, .tactile-well {
616
+ background: linear-gradient(145deg, rgb(var(--tactile-surface-strong-rgb) / .78), rgb(var(--tactile-surface-rgb) / .72));
617
+ border: 1px solid var(--tactile-border);
618
+ border-radius: var(--tactile-radius-lg);
619
+ box-shadow: inset 0 2px 0 rgb(var(--tactile-surface-strong-rgb) / .78), 0 .65rem 1.25rem rgb(var(--tactile-text-rgb) / .2);
620
+ }
621
+ [data-ui="tactile"][data-theme][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
622
+ border: 1px solid var(--tactile-primary);
623
+ border-radius: var(--tactile-radius-md);
624
+ box-shadow: inset 0 2px 0 rgb(var(--tactile-surface-strong-rgb) / .8), 0 .34rem .68rem rgb(var(--tactile-text-rgb) / .2);
625
+ }
626
+ [data-ui="tactile"][data-theme][data-mode] :where(dialog) {
627
+ background-color: var(--tactile-surface);
628
+ background-image: linear-gradient(145deg, rgb(var(--tactile-surface-strong-rgb) / .84), rgb(var(--tactile-surface-rgb) / .78));
629
+ border: 1px solid var(--tactile-border);
630
+ border-radius: var(--tactile-radius-lg);
631
+ box-shadow: inset 0 2px 0 rgb(var(--tactile-surface-strong-rgb) / .78), 0 1rem 2rem rgb(var(--tactile-text-rgb) / .24);
632
+ }
633
+
634
+ /* Busy indicators preserve the bevel and pressed-depth cues of tactile controls. */
635
+ .tactile-button[aria-busy="true"]::after, .tactile-icon-button[aria-busy="true"]::after, [data-ui="tactile"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after {
636
+ border: .12em solid currentColor; border-radius: 50%; background: linear-gradient(145deg, rgb(255 255 255 / .35), transparent 48%); box-shadow: inset .1em .1em .18em rgb(0 0 0 / .3), inset -.08em -.08em .15em rgb(255 255 255 / .32), 0 .08em .16em rgb(0 0 0 / .22); clip-path: circle(50%); animation: tactile-spin .88s cubic-bezier(.2, .8, .2, 1) infinite;
637
+ }
638
+
407
639
  @media (prefers-reduced-motion: reduce) {
408
640
  [data-ui="tactile"] *, [data-ui="tactile"] *::before, [data-ui="tactile"] *::after { scroll-behavior: auto !important; transition-duration: 1ms !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; }
409
641
  }
@@ -411,7 +643,7 @@
411
643
  [data-ui="tactile"] { --tactile-border-alpha: 1; --tactile-focus-alpha: .75; }
412
644
  }
413
645
  @media (forced-colors: active) {
414
- [data-ui="tactile"] * { forced-color-adjust: auto; }
646
+ @supports (forced-color-adjust: auto) { [data-ui="tactile"] * { forced-color-adjust: auto; } }
415
647
  [data-ui="tactile"] :where(:focus-visible) { outline: 3px solid CanvasText; }
416
648
  }
417
649
  @media print {