softui-css 1.10.0 → 1.12.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.
package/README.md CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  | Feature | Description |
34
34
  |---|---|
35
- | **65+ Components** | Buttons, Cards, Modals, Tables, Tabs, Calendar, Charts, Pricing, and more |
35
+ | **68+ Components** | Buttons, Cards, Modals, Tables, Tabs, Calendar, Charts, Pricing, and more |
36
36
  | **Dark Mode** | Add `data-theme="dark"` and everything adapts |
37
37
  | **Zero Dependencies** | Pure CSS + vanilla JS. No build step required |
38
38
  | **CSS Variables** | Fully customizable via custom properties |
package/dist/softui.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! SoftUI v1.10.0 — A Neumorphic CSS Library */
1
+ /*! SoftUI v1.12.0 — A Neumorphic CSS Library */
2
2
 
3
3
  /* ===========================================
4
4
  CSS Variables / Tokens
@@ -157,6 +157,7 @@ a:focus-visible {
157
157
  box-shadow: var(--sui-shadow-raised);
158
158
  cursor: pointer;
159
159
  transition: var(--sui-transition);
160
+ -webkit-user-select: none;
160
161
  user-select: none;
161
162
  white-space: nowrap;
162
163
  line-height: 1.4;
@@ -729,6 +730,7 @@ a.sui-btn-warning:visited {
729
730
  cursor: pointer;
730
731
  font-size: 14px;
731
732
  color: var(--sui-text);
733
+ -webkit-user-select: none;
732
734
  user-select: none;
733
735
  }
734
736
 
@@ -786,6 +788,7 @@ a.sui-btn-warning:visited {
786
788
  cursor: pointer;
787
789
  font-size: 14px;
788
790
  color: var(--sui-text);
791
+ -webkit-user-select: none;
789
792
  user-select: none;
790
793
  }
791
794
 
@@ -1122,20 +1125,20 @@ a.sui-btn-warning:visited {
1122
1125
  .sui-mb-2 { margin-bottom: 8px; } .sui-mb-3 { margin-bottom: 16px; }
1123
1126
  .sui-mb-4 { margin-bottom: 24px; } .sui-mb-5 { margin-bottom: 48px; }
1124
1127
 
1125
- .sui-ml-0 { margin-left: 0; } .sui-ml-1 { margin-left: 4px; }
1126
- .sui-ml-2 { margin-left: 8px; } .sui-ml-3 { margin-left: 16px; }
1127
- .sui-ml-4 { margin-left: 24px; } .sui-ml-5 { margin-left: 48px; }
1128
+ .sui-ml-0 { margin-inline-start: 0; } .sui-ml-1 { margin-inline-start: 4px; }
1129
+ .sui-ml-2 { margin-inline-start: 8px; } .sui-ml-3 { margin-inline-start: 16px; }
1130
+ .sui-ml-4 { margin-inline-start: 24px; } .sui-ml-5 { margin-inline-start: 48px; }
1128
1131
 
1129
- .sui-mr-0 { margin-right: 0; } .sui-mr-1 { margin-right: 4px; }
1130
- .sui-mr-2 { margin-right: 8px; } .sui-mr-3 { margin-right: 16px; }
1131
- .sui-mr-4 { margin-right: 24px; } .sui-mr-5 { margin-right: 48px; }
1132
+ .sui-mr-0 { margin-inline-end: 0; } .sui-mr-1 { margin-inline-end: 4px; }
1133
+ .sui-mr-2 { margin-inline-end: 8px; } .sui-mr-3 { margin-inline-end: 16px; }
1134
+ .sui-mr-4 { margin-inline-end: 24px; } .sui-mr-5 { margin-inline-end: 48px; }
1132
1135
 
1133
1136
  /* ===========================================
1134
1137
  Utility: Text
1135
1138
  =========================================== */
1136
1139
  .sui-text-center { text-align: center; }
1137
- .sui-text-left { text-align: left; }
1138
- .sui-text-right { text-align: right; }
1140
+ .sui-text-left { text-align: start; }
1141
+ .sui-text-right { text-align: end; }
1139
1142
 
1140
1143
  .sui-text-muted { color: var(--sui-text-muted); }
1141
1144
  .sui-text-primary { color: var(--sui-primary); }
@@ -1566,6 +1569,7 @@ a.sui-btn-warning:visited {
1566
1569
  transition: var(--sui-transition);
1567
1570
  text-decoration: none;
1568
1571
  line-height: 1;
1572
+ -webkit-user-select: none;
1569
1573
  user-select: none;
1570
1574
  }
1571
1575
 
@@ -1774,6 +1778,7 @@ a.sui-btn-warning:visited {
1774
1778
  border-radius: 8px;
1775
1779
  cursor: pointer;
1776
1780
  transition: var(--sui-transition);
1781
+ -webkit-user-select: none;
1777
1782
  user-select: none;
1778
1783
  line-height: 1.4;
1779
1784
  }
@@ -2503,6 +2508,109 @@ a.sui-btn-warning:visited {
2503
2508
  background: var(--sui-danger);
2504
2509
  }
2505
2510
 
2511
+ /* ===========================================
2512
+ Radio Card / Checkbox Card
2513
+ =========================================== */
2514
+ .sui-radio-card,
2515
+ .sui-checkbox-card {
2516
+ position: relative;
2517
+ display: block;
2518
+ cursor: pointer;
2519
+ }
2520
+
2521
+ .sui-radio-card input,
2522
+ .sui-checkbox-card input {
2523
+ position: absolute;
2524
+ opacity: 0;
2525
+ width: 0;
2526
+ height: 0;
2527
+ }
2528
+
2529
+ .sui-radio-card .sui-radio-card-content,
2530
+ .sui-checkbox-card .sui-checkbox-card-content {
2531
+ display: flex;
2532
+ align-items: flex-start;
2533
+ gap: 14px;
2534
+ padding: 16px 20px;
2535
+ background: var(--sui-bg);
2536
+ border-radius: var(--sui-radius-sm);
2537
+ box-shadow: var(--sui-shadow-raised-sm);
2538
+ transition: box-shadow var(--sui-transition-fast), transform var(--sui-transition-fast);
2539
+ }
2540
+
2541
+ .sui-radio-card:hover .sui-radio-card-content,
2542
+ .sui-checkbox-card:hover .sui-checkbox-card-content {
2543
+ transform: translateY(-2px);
2544
+ box-shadow: var(--sui-shadow-raised);
2545
+ }
2546
+
2547
+ .sui-radio-card input:checked ~ .sui-radio-card-content,
2548
+ .sui-checkbox-card input:checked ~ .sui-checkbox-card-content {
2549
+ box-shadow: 0 0 0 2px var(--sui-primary), var(--sui-shadow-raised-sm);
2550
+ }
2551
+
2552
+ /* Check indicator */
2553
+ .sui-radio-card .sui-radio-card-content::before,
2554
+ .sui-checkbox-card .sui-checkbox-card-content::before {
2555
+ content: '';
2556
+ width: 20px;
2557
+ height: 20px;
2558
+ flex-shrink: 0;
2559
+ border-radius: 50%;
2560
+ box-shadow: var(--sui-shadow-inset-sm);
2561
+ background: var(--sui-bg);
2562
+ background-repeat: no-repeat;
2563
+ background-position: center;
2564
+ transition: background-color var(--sui-transition-fast), box-shadow var(--sui-transition-fast);
2565
+ margin-top: 2px;
2566
+ }
2567
+
2568
+ .sui-checkbox-card .sui-checkbox-card-content::before {
2569
+ border-radius: var(--sui-radius-xs);
2570
+ }
2571
+
2572
+ .sui-radio-card input:checked ~ .sui-radio-card-content::before {
2573
+ background-color: var(--sui-primary);
2574
+ box-shadow: none;
2575
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Ccircle cx='5' cy='5' r='3' fill='%23fff'/%3E%3C/svg%3E");
2576
+ background-size: 10px;
2577
+ }
2578
+
2579
+ .sui-checkbox-card input:checked ~ .sui-checkbox-card-content::before {
2580
+ background-color: var(--sui-primary);
2581
+ box-shadow: none;
2582
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
2583
+ background-size: 11px;
2584
+ }
2585
+
2586
+ .sui-radio-card input:focus-visible ~ .sui-radio-card-content,
2587
+ .sui-checkbox-card input:focus-visible ~ .sui-checkbox-card-content {
2588
+ outline: 2px solid var(--sui-primary);
2589
+ outline-offset: 2px;
2590
+ }
2591
+
2592
+ .sui-radio-card input:disabled ~ .sui-radio-card-content,
2593
+ .sui-checkbox-card input:disabled ~ .sui-checkbox-card-content {
2594
+ opacity: 0.5;
2595
+ cursor: not-allowed;
2596
+ transform: none;
2597
+ }
2598
+
2599
+ /* Card body text */
2600
+ .sui-radio-card-title,
2601
+ .sui-checkbox-card-title {
2602
+ font-weight: 600;
2603
+ font-size: 14px;
2604
+ color: var(--sui-text);
2605
+ margin-bottom: 2px;
2606
+ }
2607
+
2608
+ .sui-radio-card-desc,
2609
+ .sui-checkbox-card-desc {
2610
+ font-size: 13px;
2611
+ color: var(--sui-text-muted);
2612
+ }
2613
+
2506
2614
  /* ===========================================
2507
2615
  Badges — Positioned (notification dot)
2508
2616
  =========================================== */
@@ -2920,6 +3028,7 @@ select.sui-datatable-filter {
2920
3028
  /* Sortable headers */
2921
3029
  .sui-datatable .sui-table th[data-sort] {
2922
3030
  cursor: pointer;
3031
+ -webkit-user-select: none;
2923
3032
  user-select: none;
2924
3033
  position: relative;
2925
3034
  padding-right: 28px;
@@ -3041,6 +3150,7 @@ select.sui-datatable-filter {
3041
3150
  border-radius: var(--sui-radius-xs);
3042
3151
  box-shadow: var(--sui-shadow-raised-sm);
3043
3152
  cursor: grab;
3153
+ -webkit-user-select: none;
3044
3154
  user-select: none;
3045
3155
  font-size: 14px;
3046
3156
  color: var(--sui-text);
@@ -3144,6 +3254,7 @@ select.sui-datatable-filter {
3144
3254
  font-size: 13px;
3145
3255
  color: var(--sui-text);
3146
3256
  cursor: grab;
3257
+ -webkit-user-select: none;
3147
3258
  user-select: none;
3148
3259
  transition: box-shadow var(--sui-transition-fast), opacity var(--sui-transition-fast);
3149
3260
  }
@@ -4180,6 +4291,7 @@ select.sui-datatable-filter {
4180
4291
  border-radius: var(--sui-radius);
4181
4292
  box-shadow: var(--sui-shadow-raised);
4182
4293
  width: 296px;
4294
+ -webkit-user-select: none;
4183
4295
  user-select: none;
4184
4296
  }
4185
4297
 
@@ -4470,6 +4582,7 @@ select.sui-datatable-filter {
4470
4582
  background: var(--sui-bg);
4471
4583
  border-radius: var(--sui-radius);
4472
4584
  box-shadow: var(--sui-shadow-raised);
4585
+ -webkit-user-select: none;
4473
4586
  user-select: none;
4474
4587
  }
4475
4588
 
@@ -5225,6 +5338,7 @@ select.sui-datatable-filter {
5225
5338
  justify-content: center;
5226
5339
  background: var(--sui-bg-dark);
5227
5340
  transition: background var(--sui-transition-fast);
5341
+ -webkit-user-select: none;
5228
5342
  user-select: none;
5229
5343
  touch-action: none;
5230
5344
  }
@@ -5745,17 +5859,17 @@ select.sui-datatable-filter {
5745
5859
  /* ===========================================
5746
5860
  Layout — Offsets
5747
5861
  =========================================== */
5748
- .sui-offset-1 { margin-left: 8.333333%; }
5749
- .sui-offset-2 { margin-left: 16.666667%; }
5750
- .sui-offset-3 { margin-left: 25%; }
5751
- .sui-offset-4 { margin-left: 33.333333%; }
5752
- .sui-offset-5 { margin-left: 41.666667%; }
5753
- .sui-offset-6 { margin-left: 50%; }
5754
- .sui-offset-7 { margin-left: 58.333333%; }
5755
- .sui-offset-8 { margin-left: 66.666667%; }
5756
- .sui-offset-9 { margin-left: 75%; }
5757
- .sui-offset-10 { margin-left: 83.333333%; }
5758
- .sui-offset-11 { margin-left: 91.666667%; }
5862
+ .sui-offset-1 { margin-inline-start: 8.333333%; }
5863
+ .sui-offset-2 { margin-inline-start: 16.666667%; }
5864
+ .sui-offset-3 { margin-inline-start: 25%; }
5865
+ .sui-offset-4 { margin-inline-start: 33.333333%; }
5866
+ .sui-offset-5 { margin-inline-start: 41.666667%; }
5867
+ .sui-offset-6 { margin-inline-start: 50%; }
5868
+ .sui-offset-7 { margin-inline-start: 58.333333%; }
5869
+ .sui-offset-8 { margin-inline-start: 66.666667%; }
5870
+ .sui-offset-9 { margin-inline-start: 75%; }
5871
+ .sui-offset-10 { margin-inline-start: 83.333333%; }
5872
+ .sui-offset-11 { margin-inline-start: 91.666667%; }
5759
5873
 
5760
5874
  /* ===========================================
5761
5875
  Flex Utilities
@@ -5901,8 +6015,8 @@ select.sui-datatable-filter {
5901
6015
  .sui-select-all { user-select: all !important; }
5902
6016
 
5903
6017
  /* Auto margins */
5904
- .sui-ms-auto { margin-left: auto !important; }
5905
- .sui-me-auto { margin-right: auto !important; }
6018
+ .sui-ms-auto { margin-inline-start: auto !important; }
6019
+ .sui-me-auto { margin-inline-end: auto !important; }
5906
6020
  .sui-mx-auto { margin-left: auto !important; margin-right: auto !important; }
5907
6021
 
5908
6022
  /* ===========================================
@@ -6250,6 +6364,7 @@ select.sui-datatable-filter {
6250
6364
  box-shadow: var(--sui-shadow-raised-sm), inset 0 -2px 0 rgba(0,0,0,0.08);
6251
6365
  line-height: 1;
6252
6366
  white-space: nowrap;
6367
+ -webkit-user-select: none;
6253
6368
  user-select: none;
6254
6369
  vertical-align: baseline;
6255
6370
  }
@@ -6304,6 +6419,7 @@ select.sui-datatable-filter {
6304
6419
  font-size: 11px;
6305
6420
  color: var(--sui-text-muted);
6306
6421
  font-weight: 500;
6422
+ -webkit-user-select: none;
6307
6423
  user-select: none;
6308
6424
  }
6309
6425
 
@@ -6312,7 +6428,6 @@ select.sui-datatable-filter {
6312
6428
  =========================================== */
6313
6429
  .sui-scroll-area {
6314
6430
  overflow: auto;
6315
- overflow: overlay;
6316
6431
  scrollbar-width: thin;
6317
6432
  scrollbar-color: var(--sui-bg-dark) transparent;
6318
6433
  }
@@ -6988,6 +7103,39 @@ select.sui-datatable-filter {
6988
7103
  .sui-sheet-backdrop.sui-sheet-static.sui-sheet-shake .sui-sheet-top { transform: translateY(8px); }
6989
7104
  .sui-sheet-backdrop.sui-sheet-static.sui-sheet-shake .sui-sheet-bottom { transform: translateY(-8px); }
6990
7105
 
7106
+ /* Drawer (bottom sheet with drag handle) */
7107
+ .sui-drawer .sui-sheet-bottom {
7108
+ height: auto;
7109
+ max-height: 85vh;
7110
+ transition: transform var(--sui-transition-base) ease;
7111
+ }
7112
+
7113
+ .sui-drawer-handle {
7114
+ display: flex;
7115
+ justify-content: center;
7116
+ padding: 10px 0 6px;
7117
+ cursor: grab;
7118
+ }
7119
+
7120
+ .sui-drawer-handle::after {
7121
+ content: '';
7122
+ width: 36px;
7123
+ height: 4px;
7124
+ border-radius: var(--sui-radius-full);
7125
+ background: var(--sui-bg-dark);
7126
+ }
7127
+
7128
+ .sui-drawer-handle:active { cursor: grabbing; }
7129
+
7130
+ /* Drawer snap points */
7131
+ .sui-drawer .sui-sheet-bottom.sui-drawer-snap-half {
7132
+ height: 50vh;
7133
+ }
7134
+
7135
+ .sui-drawer .sui-sheet-bottom.sui-drawer-snap-full {
7136
+ height: 85vh;
7137
+ }
7138
+
6991
7139
  /* ==============================
6992
7140
  Popover
6993
7141
  ============================== */
@@ -7600,6 +7748,7 @@ select.sui-datatable-filter {
7600
7748
  border-radius: var(--sui-radius-sm);
7601
7749
  box-shadow: var(--sui-shadow-inset);
7602
7750
  transition: var(--sui-transition);
7751
+ -webkit-user-select: none;
7603
7752
  user-select: none;
7604
7753
  }
7605
7754
 
@@ -7755,6 +7904,7 @@ select.sui-datatable-filter {
7755
7904
  cursor: pointer;
7756
7905
  transition: var(--sui-transition);
7757
7906
  white-space: nowrap;
7907
+ -webkit-user-select: none;
7758
7908
  user-select: none;
7759
7909
  line-height: 1.4;
7760
7910
  }
@@ -8079,6 +8229,7 @@ select.sui-datatable-filter {
8079
8229
  text-align: right;
8080
8230
  min-width: 28px;
8081
8231
  padding-bottom: 28px;
8232
+ -webkit-user-select: none;
8082
8233
  user-select: none;
8083
8234
  }
8084
8235
 
@@ -11001,6 +11152,7 @@ select.sui-datatable-filter {
11001
11152
  color: var(--sui-text);
11002
11153
  font-weight: 500;
11003
11154
  transition: background 0.15s ease;
11155
+ -webkit-user-select: none;
11004
11156
  user-select: none;
11005
11157
  }
11006
11158
 
@@ -11733,6 +11885,7 @@ select.sui-datatable-filter {
11733
11885
  border-radius: var(--sui-radius);
11734
11886
  box-shadow: var(--sui-shadow-raised-sm);
11735
11887
  cursor: ew-resize;
11888
+ -webkit-user-select: none;
11736
11889
  user-select: none;
11737
11890
  }
11738
11891
 
@@ -13015,6 +13168,80 @@ select.sui-datatable-filter {
13015
13168
  }
13016
13169
 
13017
13170
 
13171
+ /* ===========================================
13172
+ RTL (Right-to-Left) Support
13173
+ =========================================== */
13174
+
13175
+ /* Navbar brand spacing */
13176
+ [dir="rtl"] .sui-navbar-brand { margin-right: auto; margin-left: 0; }
13177
+
13178
+ /* Sheet slide direction */
13179
+ [dir="rtl"] .sui-sheet-right { right: auto; left: 0; transform: translateX(-100%); }
13180
+ [dir="rtl"] .sui-sheet-backdrop.sui-sheet-open .sui-sheet-right { transform: translateX(0); }
13181
+ [dir="rtl"] .sui-sheet-left { left: auto; right: 0; transform: translateX(100%); }
13182
+ [dir="rtl"] .sui-sheet-backdrop.sui-sheet-open .sui-sheet-left { transform: translateX(0); }
13183
+
13184
+ /* Carousel controls */
13185
+ [dir="rtl"] .sui-carousel-prev { left: auto; right: 0; }
13186
+ [dir="rtl"] .sui-carousel-next { right: auto; left: 0; }
13187
+
13188
+ /* Lightbox controls */
13189
+ [dir="rtl"] .sui-lightbox-prev { left: auto; right: 16px; }
13190
+ [dir="rtl"] .sui-lightbox-next { right: auto; left: 16px; }
13191
+
13192
+ /* Breadcrumb separator */
13193
+ [dir="rtl"] .sui-breadcrumb-item + .sui-breadcrumb-item { padding-left: 0; padding-right: 24px; }
13194
+ [dir="rtl"] .sui-breadcrumb-item + .sui-breadcrumb-item::before { padding-right: 0; padding-left: 12px; }
13195
+
13196
+ /* Dropdown toggle arrow */
13197
+ [dir="rtl"] .sui-dropdown-toggle::after { margin-left: 0; margin-right: 6px; }
13198
+
13199
+ /* Sidebar */
13200
+ [dir="rtl"] .sui-sidebar-bordered { border-right: none; border-left: 1px solid var(--sui-bg-dark); }
13201
+
13202
+ /* Speed dial corners */
13203
+ [dir="rtl"] .sui-speed-dial-br { right: auto; left: 24px; }
13204
+ [dir="rtl"] .sui-speed-dial-bl { left: auto; right: 24px; }
13205
+ [dir="rtl"] .sui-speed-dial-tr { right: auto; left: 24px; }
13206
+ [dir="rtl"] .sui-speed-dial-tl { left: auto; right: 24px; }
13207
+
13208
+ /* Avatar status dot */
13209
+ [dir="rtl"] .sui-avatar-status::after { right: auto; left: 1px; }
13210
+
13211
+ /* Select arrow */
13212
+ [dir="rtl"] .sui-select { background-position: left 16px center; padding-right: 16px; padding-left: 40px; }
13213
+ [dir="rtl"] .sui-styled-select-trigger { flex-direction: row-reverse; }
13214
+
13215
+ /* Accordion chevron */
13216
+ [dir="rtl"] .sui-accordion-header::after { margin-left: 0; margin-right: auto; }
13217
+
13218
+ /* Stepper connector */
13219
+ [dir="rtl"] .sui-step-connector { transform: scaleX(-1); }
13220
+
13221
+ /* Timeline */
13222
+ [dir="rtl"] .sui-timeline-separator { margin-right: 0; margin-left: 16px; }
13223
+
13224
+ /* ===========================================
13225
+ Mask (clip-path shapes)
13226
+ =========================================== */
13227
+ .sui-mask {
13228
+ -webkit-clip-path: var(--sui-mask);
13229
+ clip-path: var(--sui-mask);
13230
+ }
13231
+
13232
+ .sui-mask-circle { --sui-mask: circle(50%); }
13233
+ .sui-mask-squircle { --sui-mask: polygon(50% 0%, 66% 0%, 78% 1%, 87% 4%, 93% 8%, 97% 14%, 99% 22%, 100% 34%, 100% 50%, 100% 66%, 99% 78%, 97% 86%, 93% 92%, 87% 96%, 78% 99%, 66% 100%, 50% 100%, 34% 100%, 22% 99%, 13% 96%, 7% 92%, 3% 86%, 1% 78%, 0% 66%, 0% 50%, 0% 34%, 1% 22%, 3% 14%, 7% 8%, 13% 4%, 22% 1%, 34% 0%); }
13234
+ .sui-mask-heart { --sui-mask: polygon(50% 15%, 43% 6%, 35% 1%, 25% 0%, 15% 3%, 7% 10%, 2% 20%, 0% 32%, 2% 44%, 8% 55%, 16% 65%, 26% 76%, 37% 86%, 50% 100%, 63% 86%, 74% 76%, 84% 65%, 92% 55%, 98% 44%, 100% 32%, 98% 20%, 93% 10%, 85% 3%, 75% 0%, 65% 1%, 57% 6%); }
13235
+ .sui-mask-star { --sui-mask: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%); }
13236
+ .sui-mask-diamond { --sui-mask: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); }
13237
+ .sui-mask-hexagon { --sui-mask: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%); }
13238
+ .sui-mask-triangle { --sui-mask: polygon(50% 0%, 100% 100%, 0% 100%); }
13239
+ .sui-mask-pentagon { --sui-mask: polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%); }
13240
+ .sui-mask-octagon { --sui-mask: polygon(29% 0%, 71% 0%, 100% 29%, 100% 71%, 71% 100%, 29% 100%, 0% 71%, 0% 29%); }
13241
+ .sui-mask-cross { --sui-mask: polygon(33% 0%, 67% 0%, 67% 33%, 100% 33%, 100% 67%, 67% 67%, 67% 100%, 33% 100%, 33% 67%, 0% 67%, 0% 33%, 33% 33%); }
13242
+ .sui-mask-shield { --sui-mask: polygon(50% 0%, 100% 12%, 100% 65%, 50% 100%, 0% 65%, 0% 12%); }
13243
+ .sui-mask-parallelogram { --sui-mask: polygon(20% 0%, 100% 0%, 80% 100%, 0% 100%); }
13244
+
13018
13245
  /* ===========================================
13019
13246
  Reduced Motion
13020
13247
  =========================================== */
@@ -13027,4 +13254,46 @@ select.sui-datatable-filter {
13027
13254
  }
13028
13255
  }
13029
13256
 
13257
+ /* ===========================================
13258
+ Print Styles
13259
+ =========================================== */
13260
+ @media print {
13261
+ body {
13262
+ background: #fff !important;
13263
+ color: #000 !important;
13264
+ }
13265
+
13266
+ .sui-navbar, .sui-sidebar, .sui-dock, .sui-speed-dial,
13267
+ .sui-modal-backdrop, .sui-sheet-backdrop, .sui-toast-container,
13268
+ .sui-tour-overlay, .sui-tour-tooltip, .sui-command-dialog,
13269
+ .sui-tooltip, .sui-popover-content, .sui-dropdown-menu,
13270
+ .sui-context-menu {
13271
+ display: none !important;
13272
+ }
13273
+
13274
+ *, *::before, *::after {
13275
+ box-shadow: none !important;
13276
+ text-shadow: none !important;
13277
+ }
13278
+
13279
+ .sui-card, .sui-stat, .sui-alert, .sui-table {
13280
+ border: 1px solid #ddd !important;
13281
+ break-inside: avoid;
13282
+ }
13283
+
13284
+ .sui-btn {
13285
+ border: 1px solid #999 !important;
13286
+ }
13287
+
13288
+ a[href]::after {
13289
+ content: " (" attr(href) ")";
13290
+ font-size: 0.85em;
13291
+ color: #666;
13292
+ }
13293
+
13294
+ a.sui-btn::after, a.sui-navbar-link::after, a.sui-page-link::after {
13295
+ content: none;
13296
+ }
13297
+ }
13298
+
13030
13299