ui-style-kit-css 2.2.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 (63) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +100 -31
  3. package/STYLE-MAP.md +19 -0
  4. package/dist/ui-style-kit.css +18417 -1704
  5. package/dist/ui-style-kit.min.css +2 -2
  6. package/dist/ui-style-kit.visual.css +17709 -1446
  7. package/dist/ui-style-kit.visual.min.css +2 -2
  8. package/dist/ui-style-kit.with-bridge.css +18425 -1706
  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 +1809 -78
  12. package/dist/visual/bento.css +1825 -97
  13. package/dist/visual/brutalism.css +1774 -35
  14. package/dist/visual/clay.css +4789 -0
  15. package/dist/visual/cyberpunk.css +1765 -35
  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 +1771 -37
  20. package/dist/visual/minimal-saas.css +1801 -78
  21. package/dist/visual/neo-noir.css +4790 -0
  22. package/dist/visual/neumorphism.css +1807 -78
  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 +1786 -36
  26. package/dist/visual/retrofuturism.css +1759 -36
  27. package/dist/visual/tactile.css +1760 -36
  28. package/dist/visual/technical-blueprint.css +4791 -0
  29. package/dist/visual/y2k.css +1767 -35
  30. package/docs/ECOSYSTEM.md +8 -4
  31. package/docs/PUBLISHING.md +14 -10
  32. package/docs/STYLE-GUIDE.md +53 -13
  33. package/docs/TOKENS.md +10 -1
  34. package/docs/superpowers/plans/2026-08-29-preset-identity-system-refinement.md +649 -0
  35. package/docs/superpowers/specs/2026-08-29-preset-identity-system-refinement-design.md +212 -0
  36. package/manifest.json +160 -2
  37. package/package.json +63 -6
  38. package/styles/art-deco.css +683 -0
  39. package/styles/bauhaus.css +237 -3
  40. package/styles/bento.css +266 -7
  41. package/styles/brutalism.css +235 -3
  42. package/styles/clay.css +692 -0
  43. package/styles/components.css +608 -14
  44. package/styles/content-overflow.css +423 -4
  45. package/styles/cyberpunk.css +234 -3
  46. package/styles/data-terminal.css +691 -0
  47. package/styles/editorial-luxe.css +687 -0
  48. package/styles/industrial-utility.css +690 -0
  49. package/styles/interactive-surface-bridge.css +11 -5
  50. package/styles/interactive-surface-theme.css +11 -3
  51. package/styles/maximalist.css +238 -4
  52. package/styles/minimal-saas.css +234 -3
  53. package/styles/native-elements.css +64 -12
  54. package/styles/neo-noir.css +690 -0
  55. package/styles/neumorphism.css +234 -3
  56. package/styles/organic-modern.css +683 -0
  57. package/styles/paper-editorial.css +688 -0
  58. package/styles/retro-glass.css +242 -3
  59. package/styles/retrofuturism.css +233 -3
  60. package/styles/tactile.css +235 -3
  61. package/styles/technical-blueprint.css +686 -0
  62. package/styles/theme-colors.css +796 -5
  63. package/styles/y2k.css +237 -3
@@ -1,6 +1,6 @@
1
1
  /* =========================================================
2
2
  UI Style Kit CSS — Bauhaus / Swiss Modern 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
  --bau-fg: var(--bau-text);
132
132
  --bau-surface-fg: var(--bau-text);
133
133
  --bau-muted: var(--bau-text-muted);
134
- --bau-border: rgb(var(--bau-border-rgb) / var(--bau-border-alpha));
134
+ --bau-border: rgb(var(--bau-border-rgb) / max(var(--bau-border-alpha), var(--usk-border-min-alpha)));
135
135
  --bau-control-fg: var(--bau-text);
136
136
  --bau-primary: rgb(var(--bau-primary-rgb));
137
137
  --bau-primary-hover: rgb(var(--bau-primary-hover-rgb));
@@ -161,6 +161,10 @@
161
161
  --bau-spinner-accent: var(--bau-accent);
162
162
  }
163
163
 
164
+ @supports (color: color-mix(in srgb, black, white)) {
165
+ [data-ui="bauhaus"][data-theme][data-mode] { --bau-border: color-mix(in srgb, rgb(var(--bau-border-rgb) / max(var(--bau-border-alpha), var(--usk-border-min-alpha))), var(--bau-text) var(--usk-border-text-mix)); }
166
+ }
167
+
164
168
 
165
169
 
166
170
 
@@ -404,6 +408,236 @@
404
408
  @keyframes bau-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
+ .bau-card-media {
418
+ display: block;
419
+ inline-size: 100%;
420
+ aspect-ratio: 16 / 9;
421
+ object-fit: cover;
422
+ border: 1px solid rgb(var(--bau-border-rgb) / .72);
423
+ border-radius: var(--bau-radius-lg);
424
+ }
425
+
426
+ .bau-card-service {
427
+ position: relative;
428
+ display: grid;
429
+ gap: var(--bau-space-3);
430
+ align-content: start;
431
+ text-align: center;
432
+ overflow: visible;
433
+ }
434
+ .bau-card-service > .bau-icon-medallion {
435
+ justify-self: center;
436
+ margin-block-start: -2.15rem;
437
+ position: relative;
438
+ z-index: 2;
439
+ }
440
+ .bau-card-service > .bau-card-media + .bau-icon-medallion { margin-block-start: -2.15rem; }
441
+
442
+ .bau-card-feature {
443
+ display: grid;
444
+ grid-template-columns: auto minmax(0, 1fr);
445
+ gap: var(--bau-space-4);
446
+ align-items: start;
447
+ }
448
+
449
+ .bau-card-accent-edge {
450
+ border-inline-start: .35rem solid var(--bau-primary);
451
+ }
452
+
453
+ .bau-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(--bau-primary);
461
+ color: var(--bau-on-primary);
462
+ border: 2px solid rgb(var(--bau-border-rgb) / .82);
463
+ border-radius: 50%;
464
+ line-height: 1;
465
+ }
466
+ .bau-icon-medallion > :where(svg, img) { inline-size: 100%; block-size: 100%; object-fit: contain; }
467
+
468
+ .bau-button.bau-button-cut,
469
+ .bau-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
+ .bau-button.bau-button-cut:focus-visible,
474
+ .bau-button-cut:focus-visible { outline-offset: -3px; }
475
+
476
+ .bau-button.bau-button-outline-heavy,
477
+ .bau-button-outline-heavy {
478
+ background: transparent;
479
+ color: var(--bau-primary);
480
+ border-style: solid;
481
+ border-width: 2px;
482
+ border-color: var(--bau-primary);
483
+ box-shadow: none;
484
+ }
485
+ .bau-button.bau-button-outline-heavy:hover,
486
+ .bau-button-outline-heavy:hover {
487
+ background: var(--bau-primary);
488
+ color: var(--bau-on-primary);
489
+ border-color: var(--bau-primary-hover);
490
+ }
491
+
492
+ .bau-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(--bau-surface-strong);
501
+ color: var(--bau-text);
502
+ border: 2px solid var(--bau-primary);
503
+ border-radius: 50%;
504
+ text-align: center;
505
+ font-family: var(--bau-font-heading);
506
+ font-size: .72rem;
507
+ font-weight: 900;
508
+ line-height: 1.05;
509
+ letter-spacing: .04em;
510
+ }
511
+
512
+ .bau-feature-strip {
513
+ display: grid;
514
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
515
+ overflow: hidden;
516
+ background: var(--bau-card-bg);
517
+ color: var(--bau-text);
518
+ border: 1px solid var(--bau-border);
519
+ border-radius: var(--bau-radius-lg);
520
+ }
521
+
522
+ .bau-feature-item {
523
+ display: grid;
524
+ grid-template-columns: auto minmax(0, 1fr);
525
+ align-items: center;
526
+ gap: var(--bau-space-3);
527
+ min-inline-size: 0;
528
+ padding: var(--bau-space-4);
529
+ border-inline-end: 1px solid rgb(var(--bau-border-rgb) / .62);
530
+ }
531
+ .bau-feature-item:last-child { border-inline-end: 0; }
532
+ .bau-feature-item > :where(p, small) { margin: 0; color: var(--bau-text-muted); }
533
+
534
+ .bau-callout-bar {
535
+ display: grid;
536
+ grid-template-columns: auto minmax(0, 1fr) auto;
537
+ align-items: center;
538
+ gap: var(--bau-space-4);
539
+ padding: var(--bau-space-4) var(--bau-space-5);
540
+ background: var(--bau-card-bg);
541
+ color: var(--bau-text);
542
+ border: 1px solid var(--bau-border);
543
+ border-radius: var(--bau-radius-lg);
544
+ }
545
+ .bau-callout-bar > :where(p, div) { min-inline-size: 0; }
546
+ .bau-callout-bar > :where(.bau-button, a, button):last-child { justify-self: end; }
547
+
548
+ .bau-eyebrow {
549
+ margin: 0;
550
+ color: var(--bau-primary);
551
+ font-family: var(--bau-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
+ .bau-media-scrim {
560
+ position: relative;
561
+ overflow: hidden;
562
+ isolation: isolate;
563
+ min-block-size: 12rem;
564
+ background: var(--bau-surface-soft);
565
+ border: 1px solid var(--bau-border);
566
+ border-radius: var(--bau-radius-lg);
567
+ }
568
+ .bau-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
+ .bau-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
+ .bau-media-scrim > :where(figcaption, [data-media-caption]) * {
585
+ color: inherit;
586
+ }
587
+
588
+ @media (max-width: 42rem) {
589
+ .bau-callout-bar { grid-template-columns: 1fr; align-items: start; }
590
+ .bau-callout-bar > :where(.bau-button, a, button):last-child { justify-self: stretch; }
591
+ .bau-feature-item { border-inline-end: 0; border-block-end: 1px solid rgb(var(--bau-border-rgb) / .62); }
592
+ .bau-feature-item:last-child { border-block-end: 0; }
593
+ }
594
+
595
+ .bau-card-service, .bau-card-feature, .bau-feature-strip, .bau-callout-bar, .bau-media-scrim { border-radius: 0; border-width: 2px; }
596
+ .bau-icon-medallion, .bau-badge-seal { border-radius: 0; border-width: 2px; box-shadow: .3rem .3rem 0 var(--bau-text); }
597
+ .bau-card-accent-edge { border-inline-start-width: .5rem; }
598
+ .bau-button-cut { clip-path: polygon(.55rem 0, 100% 0, calc(100% - .55rem) 100%, 0 100%); }
599
+
600
+ /* Filled and framed actions oppose their cuts to preserve asymmetric composition. */
601
+ .bau-button.bau-button-cut, .bau-button-cut {
602
+ inline-size: min(100%, 12rem);
603
+ min-inline-size: 6rem;
604
+ max-inline-size: 100%;
605
+ justify-self: start;
606
+ justify-content: center;
607
+ clip-path: polygon(.7rem 0, 100% 0, calc(100% - .45rem) 100%, 0 100%);
608
+ }
609
+ .bau-button.bau-button-outline-heavy, .bau-button-outline-heavy {
610
+ border-width: 2px;
611
+ border-radius: 0;
612
+ clip-path: polygon(0 0, calc(100% - .7rem) 0, 100% 100%, .45rem 100%);
613
+ box-shadow: inset .32rem 0 0 rgb(var(--bau-primary-rgb) / .24);
614
+ }
615
+
616
+ /* Marketing and native surfaces keep hard edges and one asymmetric primary rail. */
617
+ .bau-card-service, .bau-media-scrim, .bau-feature-strip, .bau-callout-bar, .bau-well {
618
+ border: 2px solid var(--bau-border);
619
+ border-inline-start-width: .48rem;
620
+ border-inline-start-color: var(--bau-primary);
621
+ border-radius: 0;
622
+ box-shadow: none;
623
+ }
624
+ [data-ui="bauhaus"][data-theme][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
625
+ border: 2px solid var(--bau-primary);
626
+ border-radius: 0;
627
+ box-shadow: .22rem .22rem 0 rgb(var(--bau-text-rgb) / .72);
628
+ }
629
+ [data-ui="bauhaus"][data-theme][data-mode] :where(dialog) {
630
+ border: 2px solid var(--bau-border);
631
+ border-inline-start-width: .48rem;
632
+ border-radius: 0;
633
+ box-shadow: .4rem .4rem 0 rgb(var(--bau-text-rgb) / .32);
634
+ }
635
+
636
+ /* Busy indicators use a hard-edged four-field Bauhaus composition. */
637
+ .bau-button[aria-busy="true"]::after, .bau-icon-button[aria-busy="true"]::after, [data-ui="bauhaus"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after {
638
+ border: .12em double currentColor; border-radius: 0; background: conic-gradient(currentColor 0 25%, transparent 0 50%, currentColor 0 75%, transparent 0); box-shadow: none; clip-path: inset(0); animation: bau-spin .78s steps(4, end) infinite;
639
+ }
640
+
407
641
  @media (prefers-reduced-motion: reduce) {
408
642
  [data-ui="bauhaus"] *, [data-ui="bauhaus"] *::before, [data-ui="bauhaus"] *::after { scroll-behavior: auto !important; transition-duration: 1ms !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; }
409
643
  }
@@ -411,7 +645,7 @@
411
645
  [data-ui="bauhaus"] { --bau-border-alpha: 1; --bau-focus-alpha: .75; }
412
646
  }
413
647
  @media (forced-colors: active) {
414
- [data-ui="bauhaus"] * { forced-color-adjust: auto; }
648
+ @supports (forced-color-adjust: auto) { [data-ui="bauhaus"] * { forced-color-adjust: auto; } }
415
649
  [data-ui="bauhaus"] :where(:focus-visible) { outline: 3px solid CanvasText; }
416
650
  }
417
651
  @media print {
package/styles/bento.css CHANGED
@@ -1,6 +1,6 @@
1
1
  /* =========================================================
2
2
  UI Style Kit CSS — Bento UI 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
  --bento-fg: var(--bento-text);
132
132
  --bento-surface-fg: var(--bento-text);
133
133
  --bento-muted: var(--bento-text-muted);
134
- --bento-border: rgb(var(--bento-border-rgb) / var(--bento-border-alpha));
134
+ --bento-border: rgb(var(--bento-border-rgb) / max(var(--bento-border-alpha), var(--usk-border-min-alpha)));
135
135
  --bento-control-fg: var(--bento-text);
136
136
  --bento-primary: rgb(var(--bento-primary-rgb));
137
137
  --bento-primary-hover: rgb(var(--bento-primary-hover-rgb));
@@ -161,6 +161,10 @@
161
161
  --bento-spinner-accent: var(--bento-accent);
162
162
  }
163
163
 
164
+ @supports (color: color-mix(in srgb, black, white)) {
165
+ [data-ui="bento"][data-theme][data-mode] { --bento-border: color-mix(in srgb, rgb(var(--bento-border-rgb) / max(var(--bento-border-alpha), var(--usk-border-min-alpha))), var(--bento-text) var(--usk-border-text-mix)); }
166
+ }
167
+
164
168
 
165
169
 
166
170
 
@@ -370,11 +374,32 @@
370
374
  .bento-skip-link:focus { transform: translateY(0); }
371
375
 
372
376
  /* Bento-specific layout helpers */
373
- .bento-grid-feature { display: grid; grid-template-columns: repeat(6, 1fr); grid-auto-rows: minmax(8rem, auto); gap: var(--bento-space-5); }
377
+ .bento-grid-feature {
378
+ container-type: inline-size;
379
+ display: grid;
380
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
381
+ grid-auto-rows: minmax(9rem, auto);
382
+ gap: var(--bento-space-5);
383
+ }
374
384
  .bento-tile { min-height: 12rem; padding: var(--bento-space-6); background: linear-gradient(135deg, rgb(var(--bento-primary-rgb) / .1), transparent 48%), var(--bento-surface); border: 1px solid var(--bento-border); border-radius: var(--bento-radius-xl); box-shadow: 0 16px 40px rgb(0 0 0 / var(--bento-shadow-alpha)); }
375
- .bento-tile-lg { grid-column: span 4; grid-row: span 2; } .bento-tile-md { grid-column: span 3; } .bento-tile-sm { grid-column: span 2; }
376
- .bento-stat { display: grid; gap: .25rem; } .bento-stat-value { color: var(--bento-primary); font-size: clamp(2rem, 4vw, 3rem); font-weight: 950; line-height: 1; } .bento-stat-label { color: var(--bento-text-muted); font-weight: 750; }
377
- @media (max-width: 760px) { .bento-grid-feature { grid-template-columns: 1fr; } .bento-tile-lg, .bento-tile-md, .bento-tile-sm { grid-column: auto; grid-row: auto; } }
385
+ .bento-tile,
386
+ .bento-tile-lg,
387
+ .bento-tile-md,
388
+ .bento-tile-sm {
389
+ min-inline-size: 0;
390
+ grid-column: auto;
391
+ grid-row: auto;
392
+ }
393
+ .bento-stat { display: grid; gap: .25rem; }
394
+ .bento-stat-value { color: var(--bento-primary); font-size: clamp(2rem, 4vw, 3rem); font-weight: 950; line-height: 1; }
395
+ .bento-stat-label { color: var(--bento-text-muted); font-weight: 750; overflow-wrap: normal; word-break: normal; }
396
+
397
+ @container (min-width: 34rem) {
398
+ .bento-tile-lg {
399
+ grid-column: span 2;
400
+ grid-row: span 2;
401
+ }
402
+ }
378
403
 
379
404
  /* Spinner geometry follows the bento preset's compact tile language. */
380
405
  .bento-spinner, .bento-loading-spinner, [data-ui="bento"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) {
@@ -406,6 +431,240 @@
406
431
  @keyframes bento-spin { to { transform: rotate(360deg); } }
407
432
 
408
433
 
434
+
435
+ /* =========================================================
436
+ Marketing / Commercial Component Modifiers
437
+ Reusable visual patterns derived from service-oriented brand systems.
438
+ ========================================================= */
439
+
440
+ .bento-card-media {
441
+ display: block;
442
+ inline-size: 100%;
443
+ aspect-ratio: 16 / 9;
444
+ object-fit: cover;
445
+ border: 1px solid rgb(var(--bento-border-rgb) / .72);
446
+ border-radius: var(--bento-radius-lg);
447
+ }
448
+
449
+ .bento-card-service {
450
+ position: relative;
451
+ display: grid;
452
+ gap: var(--bento-space-3);
453
+ align-content: start;
454
+ text-align: center;
455
+ overflow: visible;
456
+ }
457
+ .bento-card-service > .bento-icon-medallion {
458
+ justify-self: center;
459
+ margin-block-start: -2.15rem;
460
+ position: relative;
461
+ z-index: 2;
462
+ }
463
+ .bento-card-service > .bento-card-media + .bento-icon-medallion { margin-block-start: -2.15rem; }
464
+
465
+ .bento-card-feature {
466
+ display: grid;
467
+ grid-template-columns: auto minmax(0, 1fr);
468
+ gap: var(--bento-space-4);
469
+ align-items: start;
470
+ }
471
+
472
+ .bento-card-accent-edge {
473
+ border-inline-start: .35rem solid var(--bento-primary);
474
+ }
475
+
476
+ .bento-icon-medallion {
477
+ display: inline-grid;
478
+ place-items: center;
479
+ inline-size: 3.75rem;
480
+ block-size: 3.75rem;
481
+ flex: 0 0 auto;
482
+ padding: .7rem;
483
+ background: var(--bento-primary);
484
+ color: var(--bento-on-primary);
485
+ border: 2px solid rgb(var(--bento-border-rgb) / .82);
486
+ border-radius: 50%;
487
+ line-height: 1;
488
+ }
489
+ .bento-icon-medallion > :where(svg, img) { inline-size: 100%; block-size: 100%; object-fit: contain; }
490
+
491
+ .bento-button.bento-button-cut,
492
+ .bento-button-cut {
493
+ border-radius: 0;
494
+ clip-path: polygon(.6rem 0, 100% 0, 100% calc(100% - .6rem), calc(100% - .6rem) 100%, 0 100%, 0 .6rem);
495
+ }
496
+ .bento-button.bento-button-cut:focus-visible,
497
+ .bento-button-cut:focus-visible { outline-offset: -3px; }
498
+
499
+ .bento-button.bento-button-outline-heavy,
500
+ .bento-button-outline-heavy {
501
+ background: transparent;
502
+ color: var(--bento-primary);
503
+ border-style: solid;
504
+ border-width: 2px;
505
+ border-color: var(--bento-primary);
506
+ box-shadow: none;
507
+ }
508
+ .bento-button.bento-button-outline-heavy:hover,
509
+ .bento-button-outline-heavy:hover {
510
+ background: var(--bento-primary);
511
+ color: var(--bento-on-primary);
512
+ border-color: var(--bento-primary-hover);
513
+ }
514
+
515
+ .bento-badge-seal {
516
+ display: inline-grid;
517
+ place-items: center;
518
+ align-content: center;
519
+ inline-size: 5rem;
520
+ min-inline-size: 5rem;
521
+ aspect-ratio: 1;
522
+ padding: .65rem;
523
+ background: var(--bento-surface-strong);
524
+ color: var(--bento-text);
525
+ border: 2px solid var(--bento-primary);
526
+ border-radius: 50%;
527
+ text-align: center;
528
+ font-family: var(--bento-font-heading);
529
+ font-size: .72rem;
530
+ font-weight: 900;
531
+ line-height: 1.05;
532
+ letter-spacing: .04em;
533
+ }
534
+
535
+ .bento-feature-strip {
536
+ display: grid;
537
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
538
+ overflow: hidden;
539
+ background: var(--bento-card-bg);
540
+ color: var(--bento-text);
541
+ border: 1px solid var(--bento-border);
542
+ border-radius: var(--bento-radius-lg);
543
+ }
544
+
545
+ .bento-feature-item {
546
+ display: grid;
547
+ grid-template-columns: auto minmax(0, 1fr);
548
+ align-items: center;
549
+ gap: var(--bento-space-3);
550
+ min-inline-size: 0;
551
+ padding: var(--bento-space-4);
552
+ border-inline-end: 1px solid rgb(var(--bento-border-rgb) / .62);
553
+ }
554
+ .bento-feature-item:last-child { border-inline-end: 0; }
555
+ .bento-feature-item > :where(p, small) { margin: 0; color: var(--bento-text-muted); }
556
+
557
+ .bento-callout-bar {
558
+ display: grid;
559
+ grid-template-columns: auto minmax(0, 1fr) auto;
560
+ align-items: center;
561
+ gap: var(--bento-space-4);
562
+ padding: var(--bento-space-4) var(--bento-space-5);
563
+ background: var(--bento-card-bg);
564
+ color: var(--bento-text);
565
+ border: 1px solid var(--bento-border);
566
+ border-radius: var(--bento-radius-lg);
567
+ }
568
+ .bento-callout-bar > :where(p, div) { min-inline-size: 0; }
569
+ .bento-callout-bar > :where(.bento-button, a, button):last-child { justify-self: end; }
570
+
571
+ .bento-eyebrow {
572
+ margin: 0;
573
+ color: var(--bento-primary);
574
+ font-family: var(--bento-font-heading);
575
+ font-size: .76rem;
576
+ font-weight: 900;
577
+ line-height: 1.2;
578
+ letter-spacing: .14em;
579
+ text-transform: uppercase;
580
+ }
581
+
582
+ .bento-media-scrim {
583
+ position: relative;
584
+ overflow: hidden;
585
+ isolation: isolate;
586
+ min-block-size: 12rem;
587
+ background: var(--bento-surface-soft);
588
+ border: 1px solid var(--bento-border);
589
+ border-radius: var(--bento-radius-lg);
590
+ }
591
+ .bento-media-scrim > :where(img, picture, video) {
592
+ display: block;
593
+ inline-size: 100%;
594
+ block-size: 100%;
595
+ min-block-size: inherit;
596
+ object-fit: cover;
597
+ }
598
+ .bento-media-scrim > :where(figcaption, [data-media-caption]) {
599
+ position: absolute;
600
+ z-index: 1;
601
+ inset-inline: 0;
602
+ inset-block-end: 0;
603
+ padding: clamp(1rem, 4vw, 2rem);
604
+ color: #fff;
605
+ background: linear-gradient(to top, rgb(0 0 0 / .9), rgb(0 0 0 / .58) 56%, transparent);
606
+ }
607
+ .bento-media-scrim > :where(figcaption, [data-media-caption]) * {
608
+ color: inherit;
609
+ }
610
+
611
+ @media (max-width: 42rem) {
612
+ .bento-callout-bar { grid-template-columns: 1fr; align-items: start; }
613
+ .bento-callout-bar > :where(.bento-button, a, button):last-child { justify-self: stretch; }
614
+ .bento-feature-item { border-inline-end: 0; border-block-end: 1px solid rgb(var(--bento-border-rgb) / .62); }
615
+ .bento-feature-item:last-child { border-block-end: 0; }
616
+ }
617
+
618
+ .bento-card-service, .bento-card-feature { border-radius: var(--bento-radius-xl); }
619
+ .bento-icon-medallion { border-radius: 32%; box-shadow: 0 .8rem 1.8rem rgb(0 0 0 / .16); }
620
+ .bento-feature-strip { gap: var(--bento-space-3); padding: var(--bento-space-3); }
621
+ .bento-feature-item { border: 1px solid var(--bento-border); border-radius: var(--bento-radius-lg); }
622
+
623
+ /* Filled and framed actions behave as bounded tiles with matching stepped corners. */
624
+ .bento-button.bento-button-cut, .bento-button-cut {
625
+ inline-size: min(100%, 14rem);
626
+ min-inline-size: 6rem;
627
+ max-inline-size: 100%;
628
+ justify-self: center;
629
+ justify-content: center;
630
+ clip-path: polygon(0 0, calc(100% - .65rem) 0, 100% .65rem, 100% calc(100% - .65rem), calc(100% - .65rem) 100%, 0 100%);
631
+ }
632
+ .bento-button.bento-button-outline-heavy, .bento-button-outline-heavy {
633
+ border-width: 2px;
634
+ border-radius: 0;
635
+ clip-path: polygon(0 .5rem, .5rem 0, 100% 0, 100% calc(100% - .5rem), calc(100% - .5rem) 100%, 0 100%);
636
+ box-shadow: inset 0 0 0 1px rgb(var(--bento-surface-strong-rgb) / .82);
637
+ }
638
+
639
+ /* Cards, strips, and native surfaces use nested tile framing instead of pills. */
640
+ .bento-card-service, .bento-media-scrim, .bento-feature-strip, .bento-callout-bar {
641
+ border: 1px solid var(--bento-border);
642
+ border-radius: var(--bento-radius-xl);
643
+ box-shadow: inset 0 0 0 1px rgb(var(--bento-surface-strong-rgb) / .62), 0 .75rem 1.5rem rgb(var(--bento-text-rgb) / .1);
644
+ }
645
+ .bento-grid-feature {
646
+ padding: var(--bento-space-3);
647
+ background: rgb(var(--bento-surface-rgb) / .36);
648
+ border: 1px solid var(--bento-border);
649
+ border-radius: var(--bento-radius-xl);
650
+ box-shadow: inset 0 0 0 1px rgb(var(--bento-surface-strong-rgb) / .6);
651
+ }
652
+ [data-ui="bento"][data-theme][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
653
+ border: 2px solid var(--bento-primary);
654
+ border-radius: var(--bento-radius-sm);
655
+ box-shadow: inset 0 0 0 1px rgb(var(--bento-surface-strong-rgb) / .68);
656
+ }
657
+ [data-ui="bento"][data-theme][data-mode] :where(dialog) {
658
+ border: 1px solid var(--bento-border);
659
+ border-radius: var(--bento-radius-xl);
660
+ box-shadow: inset 0 0 0 1px rgb(var(--bento-surface-strong-rgb) / .64), 0 1rem 2.2rem rgb(var(--bento-text-rgb) / .18);
661
+ }
662
+
663
+ /* Busy indicators rotate as compact stepped tiles. */
664
+ .bento-button[aria-busy="true"]::after, .bento-icon-button[aria-busy="true"]::after, [data-ui="bento"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after {
665
+ border: .12em solid currentColor; border-radius: .18em; background: conic-gradient(currentColor 0 25%, transparent 0 50%, currentColor 0 75%, transparent 0); box-shadow: inset 0 0 0 .12em rgb(var(--bento-surface-rgb) / .72); clip-path: inset(0 round .18em); animation: bento-spin .86s steps(4, end) infinite;
666
+ }
667
+
409
668
  @media (prefers-reduced-motion: reduce) {
410
669
  [data-ui="bento"] *, [data-ui="bento"] *::before, [data-ui="bento"] *::after { scroll-behavior: auto !important; transition-duration: 1ms !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; }
411
670
  }
@@ -413,7 +672,7 @@
413
672
  [data-ui="bento"] { --bento-border-alpha: 1; --bento-focus-alpha: .75; }
414
673
  }
415
674
  @media (forced-colors: active) {
416
- [data-ui="bento"] * { forced-color-adjust: auto; }
675
+ @supports (forced-color-adjust: auto) { [data-ui="bento"] * { forced-color-adjust: auto; } }
417
676
  [data-ui="bento"] :where(:focus-visible) { outline: 3px solid CanvasText; }
418
677
  }
419
678
  @media print {