softui-css 1.4.0 → 1.6.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/dist/softui.css CHANGED
@@ -814,7 +814,7 @@ a.sui-btn-warning:visited {
814
814
  }
815
815
 
816
816
  .sui-table tbody tr:hover {
817
- background: var(--sui-bg);
817
+ background: rgba(91, 84, 224, 0.04);
818
818
  }
819
819
 
820
820
  /* Table inside card — inherit card's surface */
@@ -1094,14 +1094,15 @@ a.sui-btn-warning:visited {
1094
1094
  Modal / Dialog
1095
1095
  =========================================== */
1096
1096
  .sui-modal-backdrop {
1097
+ --sui-modal-blur: 6px;
1097
1098
  position: fixed;
1098
1099
  top: 0;
1099
1100
  left: 0;
1100
1101
  width: 100%;
1101
1102
  height: 100%;
1102
1103
  background: rgba(0, 0, 0, 0.3);
1103
- backdrop-filter: blur(6px);
1104
- -webkit-backdrop-filter: blur(6px);
1104
+ backdrop-filter: blur(var(--sui-modal-blur));
1105
+ -webkit-backdrop-filter: blur(var(--sui-modal-blur));
1105
1106
  display: flex;
1106
1107
  align-items: center;
1107
1108
  justify-content: center;
@@ -1116,10 +1117,16 @@ a.sui-btn-warning:visited {
1116
1117
  visibility: visible;
1117
1118
  }
1118
1119
 
1120
+ .sui-modal-blur-none { --sui-modal-blur: 0px; }
1121
+ .sui-modal-blur-sm { --sui-modal-blur: 3px; }
1122
+ .sui-modal-blur-md { --sui-modal-blur: 6px; }
1123
+ .sui-modal-blur-lg { --sui-modal-blur: 12px; }
1124
+ .sui-modal-blur-xl { --sui-modal-blur: 20px; }
1125
+
1119
1126
  .sui-modal {
1120
1127
  background: var(--sui-bg);
1121
1128
  border-radius: var(--sui-radius-lg);
1122
- box-shadow: var(--sui-shadow-raised-lg);
1129
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1);
1123
1130
  width: 90%;
1124
1131
  max-width: 520px;
1125
1132
  max-height: 85vh;
@@ -1946,6 +1953,49 @@ a.sui-btn-warning:visited {
1946
1953
  justify-content: center;
1947
1954
  }
1948
1955
 
1956
+ /* ===========================================
1957
+ Cards — Empty State
1958
+ =========================================== */
1959
+ .sui-card-empty {
1960
+ display: flex;
1961
+ flex-direction: column;
1962
+ align-items: center;
1963
+ justify-content: center;
1964
+ text-align: center;
1965
+ padding: 40px 24px;
1966
+ }
1967
+
1968
+ .sui-card-empty-icon {
1969
+ width: 48px;
1970
+ height: 48px;
1971
+ color: var(--sui-text-light);
1972
+ margin-bottom: 12px;
1973
+ }
1974
+
1975
+ .sui-card-empty-icon svg {
1976
+ width: 100%;
1977
+ height: 100%;
1978
+ stroke: currentColor;
1979
+ fill: none;
1980
+ stroke-width: 1.5;
1981
+ stroke-linecap: round;
1982
+ stroke-linejoin: round;
1983
+ }
1984
+
1985
+ .sui-card-empty-title {
1986
+ font-size: 16px;
1987
+ font-weight: 600;
1988
+ color: var(--sui-text);
1989
+ margin-bottom: 4px;
1990
+ }
1991
+
1992
+ .sui-card-empty-text {
1993
+ font-size: 13px;
1994
+ color: var(--sui-text-muted);
1995
+ margin-bottom: 16px;
1996
+ max-width: 280px;
1997
+ }
1998
+
1949
1999
  /* ===========================================
1950
2000
  Cards — Hoverable
1951
2001
  =========================================== */
@@ -2030,6 +2080,185 @@ a.sui-btn-warning:visited {
2030
2080
  padding-right: 22px;
2031
2081
  }
2032
2082
 
2083
+ /* --- Number Input --- */
2084
+ .sui-number-input {
2085
+ display: inline-flex;
2086
+ align-items: center;
2087
+ }
2088
+
2089
+ .sui-number-input .sui-input {
2090
+ text-align: center;
2091
+ border-radius: 0;
2092
+ -moz-appearance: textfield;
2093
+ width: 64px;
2094
+ }
2095
+
2096
+ .sui-number-input .sui-input::-webkit-inner-spin-button,
2097
+ .sui-number-input .sui-input::-webkit-outer-spin-button {
2098
+ -webkit-appearance: none;
2099
+ margin: 0;
2100
+ }
2101
+
2102
+ .sui-number-input-btn {
2103
+ display: flex;
2104
+ align-items: center;
2105
+ justify-content: center;
2106
+ width: 42px;
2107
+ align-self: stretch;
2108
+ border: none;
2109
+ background: var(--sui-bg);
2110
+ box-shadow: var(--sui-shadow-raised-sm);
2111
+ color: var(--sui-text);
2112
+ font-size: 18px;
2113
+ font-weight: 600;
2114
+ cursor: pointer;
2115
+ transition: var(--sui-transition);
2116
+ padding: 0;
2117
+ line-height: 1;
2118
+ }
2119
+
2120
+ .sui-number-input-btn:first-child {
2121
+ border-radius: var(--sui-radius-sm) 0 0 var(--sui-radius-sm);
2122
+ }
2123
+
2124
+ .sui-number-input-btn:last-child {
2125
+ border-radius: 0 var(--sui-radius-sm) var(--sui-radius-sm) 0;
2126
+ }
2127
+
2128
+ .sui-number-input-btn:hover {
2129
+ box-shadow: var(--sui-shadow-raised);
2130
+ }
2131
+
2132
+ .sui-number-input-btn:active {
2133
+ box-shadow: var(--sui-shadow-inset-sm);
2134
+ }
2135
+
2136
+ .sui-number-input-sm .sui-input {
2137
+ height: 30px;
2138
+ font-size: 13px;
2139
+ width: 50px;
2140
+ }
2141
+
2142
+ .sui-number-input-sm .sui-number-input-btn {
2143
+ width: 30px;
2144
+ height: 30px;
2145
+ font-size: 14px;
2146
+ }
2147
+
2148
+ .sui-number-input-lg .sui-input {
2149
+ height: 46px;
2150
+ font-size: 18px;
2151
+ width: 80px;
2152
+ }
2153
+
2154
+ .sui-number-input-lg .sui-number-input-btn {
2155
+ width: 46px;
2156
+ height: 46px;
2157
+ font-size: 22px;
2158
+ }
2159
+
2160
+ /* --- Password Input --- */
2161
+ .sui-password-input {
2162
+ position: relative;
2163
+ }
2164
+
2165
+ .sui-password-input .sui-input {
2166
+ padding-right: 40px;
2167
+ width: 100%;
2168
+ }
2169
+
2170
+ .sui-password-input .sui-password-toggle {
2171
+ position: absolute;
2172
+ right: 10px;
2173
+ top: 50%;
2174
+ transform: translateY(-50%);
2175
+ width: 20px;
2176
+ height: 20px;
2177
+ border: none;
2178
+ background: none;
2179
+ padding: 0;
2180
+ cursor: pointer;
2181
+ color: var(--sui-text-muted);
2182
+ z-index: 1;
2183
+ display: flex;
2184
+ align-items: center;
2185
+ justify-content: center;
2186
+ }
2187
+
2188
+ .sui-password-toggle svg {
2189
+ width: 18px;
2190
+ height: 18px;
2191
+ stroke: currentColor;
2192
+ fill: none;
2193
+ stroke-width: 2;
2194
+ stroke-linecap: round;
2195
+ stroke-linejoin: round;
2196
+ }
2197
+
2198
+ .sui-password-toggle:hover {
2199
+ color: var(--sui-text);
2200
+ }
2201
+
2202
+ .sui-password-rules {
2203
+ display: flex;
2204
+ flex-direction: column;
2205
+ gap: 4px;
2206
+ }
2207
+
2208
+ .sui-password-rule {
2209
+ display: flex;
2210
+ align-items: center;
2211
+ gap: 6px;
2212
+ font-size: 12px;
2213
+ color: var(--sui-text-muted);
2214
+ transition: color 0.2s ease;
2215
+ }
2216
+
2217
+ .sui-password-rule.valid {
2218
+ color: var(--sui-success);
2219
+ }
2220
+
2221
+
2222
+ /* --- Tags Input --- */
2223
+ .sui-tags-input {
2224
+ display: flex;
2225
+ flex-wrap: wrap;
2226
+ align-items: center;
2227
+ gap: 6px;
2228
+ padding: 6px 10px;
2229
+ background: var(--sui-bg);
2230
+ box-shadow: var(--sui-shadow-inset-sm);
2231
+ border-radius: var(--sui-radius-sm);
2232
+ min-height: 38px;
2233
+ cursor: text;
2234
+ transition: var(--sui-transition);
2235
+ }
2236
+
2237
+ .sui-tags-input:focus-within {
2238
+ box-shadow: var(--sui-shadow-inset-sm), 0 0 0 2px var(--sui-primary);
2239
+ }
2240
+
2241
+ .sui-tags-input .sui-chip {
2242
+ margin: 0;
2243
+ font-size: 12px;
2244
+ }
2245
+
2246
+ .sui-tags-input-field {
2247
+ border: none;
2248
+ background: none;
2249
+ outline: none;
2250
+ font-size: 14px;
2251
+ font-family: var(--sui-font);
2252
+ color: var(--sui-text);
2253
+ flex: 1;
2254
+ min-width: 80px;
2255
+ padding: 2px 0;
2256
+ }
2257
+
2258
+ .sui-tags-input-field::placeholder {
2259
+ color: var(--sui-text-light);
2260
+ }
2261
+
2033
2262
  /* ===========================================
2034
2263
  Toggles — Sizes
2035
2264
  =========================================== */
@@ -2393,6 +2622,15 @@ a.sui-btn-warning:visited {
2393
2622
  =========================================== */
2394
2623
  .sui-table-inset {
2395
2624
  box-shadow: var(--sui-shadow-inset);
2625
+ overflow: hidden;
2626
+ }
2627
+
2628
+ .sui-table-inset tbody tr:hover {
2629
+ background: none;
2630
+ }
2631
+
2632
+ .sui-table-inset tbody tr:hover td {
2633
+ background: rgba(91, 84, 224, 0.04);
2396
2634
  }
2397
2635
 
2398
2636
  /* ===========================================
@@ -4364,6 +4602,10 @@ a.sui-btn-warning:visited {
4364
4602
  padding: 2px 0;
4365
4603
  }
4366
4604
 
4605
+ .sui-command-group[hidden] {
4606
+ display: none;
4607
+ }
4608
+
4367
4609
  .sui-command-group-label {
4368
4610
  padding: 8px 10px 4px;
4369
4611
  font-size: 11px;
@@ -4373,6 +4615,10 @@ a.sui-btn-warning:visited {
4373
4615
  letter-spacing: 0.5px;
4374
4616
  }
4375
4617
 
4618
+ .sui-command-item[hidden] {
4619
+ display: none;
4620
+ }
4621
+
4376
4622
  .sui-command-item {
4377
4623
  display: flex;
4378
4624
  align-items: center;
@@ -4384,12 +4630,13 @@ a.sui-btn-warning:visited {
4384
4630
  color: var(--sui-text);
4385
4631
  background: transparent;
4386
4632
  border: none;
4387
- border-radius: var(--sui-radius-xs);
4633
+ border-radius: var(--sui-radius-sm);
4388
4634
  cursor: pointer;
4389
4635
  text-align: left;
4390
4636
  transition: var(--sui-transition);
4391
4637
  line-height: 1.4;
4392
4638
  gap: 10px;
4639
+ text-decoration: none;
4393
4640
  }
4394
4641
 
4395
4642
  .sui-command-item:hover,
@@ -4835,26 +5082,25 @@ a.sui-btn-warning:visited {
4835
5082
  Custom Scrollbar (global)
4836
5083
  =========================================== */
4837
5084
  * {
4838
- scrollbar-width: thin;
4839
- scrollbar-color: var(--sui-text-light) var(--sui-bg-dark);
4840
5085
  }
4841
- *::-webkit-scrollbar {
4842
- width: 8px;
4843
- height: 8px;
5086
+ ::-webkit-scrollbar {
5087
+ width: 6px;
5088
+ height: 6px;
4844
5089
  }
4845
- *::-webkit-scrollbar-track {
4846
- background: var(--sui-bg-dark);
4847
- border-radius: var(--sui-radius-full);
5090
+ ::-webkit-scrollbar-track {
5091
+ background: transparent;
4848
5092
  }
4849
- *::-webkit-scrollbar-thumb {
5093
+ ::-webkit-scrollbar-thumb {
4850
5094
  background: var(--sui-text-light);
4851
- border-radius: var(--sui-radius-full);
5095
+ border-radius: 3px;
5096
+ border: 1px solid transparent;
5097
+ background-clip: content-box;
4852
5098
  }
4853
- *::-webkit-scrollbar-thumb:hover {
5099
+ ::-webkit-scrollbar-thumb:hover {
4854
5100
  background: var(--sui-text-muted);
4855
5101
  }
4856
- *::-webkit-scrollbar-corner {
4857
- background: transparent;
5102
+ ::-webkit-scrollbar-corner {
5103
+ display: none;
4858
5104
  }
4859
5105
 
4860
5106
  /* ===========================================
@@ -8959,6 +9205,14 @@ a.sui-btn-warning:visited {
8959
9205
  }
8960
9206
 
8961
9207
  /* Inset style */
9208
+ .sui-rating-raised {
9209
+ background: var(--sui-bg);
9210
+ box-shadow: var(--sui-shadow-raised-sm);
9211
+ border-radius: var(--sui-radius);
9212
+ padding: 6px 10px;
9213
+ gap: 4px;
9214
+ }
9215
+
8962
9216
  .sui-rating-inset {
8963
9217
  background: var(--sui-bg);
8964
9218
  box-shadow: var(--sui-shadow-inset-sm);
@@ -8966,3 +9220,2383 @@ a.sui-btn-warning:visited {
8966
9220
  padding: 6px 10px;
8967
9221
  gap: 4px;
8968
9222
  }
9223
+
9224
+ /* =========================================
9225
+ Chat Bubble
9226
+ ========================================= */
9227
+ .sui-chat {
9228
+ display: flex;
9229
+ flex-direction: column;
9230
+ gap: 12px;
9231
+ }
9232
+
9233
+ .sui-chat-message {
9234
+ display: flex;
9235
+ align-items: flex-end;
9236
+ gap: 8px;
9237
+ max-width: 75%;
9238
+ }
9239
+
9240
+ .sui-chat-message-sent {
9241
+ align-self: flex-end;
9242
+ flex-direction: row-reverse;
9243
+ }
9244
+
9245
+ .sui-chat-message-received {
9246
+ align-self: flex-start;
9247
+ }
9248
+
9249
+ .sui-chat-avatar {
9250
+ width: 32px;
9251
+ height: 32px;
9252
+ border-radius: 50%;
9253
+ flex-shrink: 0;
9254
+ display: flex;
9255
+ align-items: center;
9256
+ justify-content: center;
9257
+ font-size: 13px;
9258
+ font-weight: 700;
9259
+ background: var(--sui-bg);
9260
+ box-shadow: var(--sui-shadow-raised-sm);
9261
+ color: var(--sui-text-muted);
9262
+ }
9263
+
9264
+ .sui-chat-bubble {
9265
+ padding: 10px 14px;
9266
+ border-radius: var(--sui-radius);
9267
+ font-size: 14px;
9268
+ line-height: 1.5;
9269
+ color: var(--sui-text);
9270
+ position: relative;
9271
+ }
9272
+
9273
+ .sui-chat-message-received .sui-chat-bubble {
9274
+ background: var(--sui-bg);
9275
+ box-shadow: var(--sui-shadow-raised-sm);
9276
+ border-bottom-left-radius: 4px;
9277
+ }
9278
+
9279
+ .sui-chat-message-sent .sui-chat-bubble {
9280
+ background: var(--sui-primary);
9281
+ color: #fff;
9282
+ box-shadow: var(--sui-shadow-raised-sm);
9283
+ border-bottom-right-radius: 4px;
9284
+ }
9285
+
9286
+ .sui-chat-meta {
9287
+ display: flex;
9288
+ align-items: center;
9289
+ gap: 6px;
9290
+ font-size: 11px;
9291
+ color: var(--sui-text-muted);
9292
+ margin-top: 4px;
9293
+ padding: 0 4px;
9294
+ }
9295
+
9296
+ .sui-chat-message-sent .sui-chat-meta {
9297
+ justify-content: flex-end;
9298
+ }
9299
+
9300
+ .sui-chat-status {
9301
+ display: inline-flex;
9302
+ font-size: 11px;
9303
+ }
9304
+
9305
+ .sui-chat-status-sent { color: var(--sui-text-muted); }
9306
+ .sui-chat-status-delivered { color: var(--sui-text-muted); }
9307
+ .sui-chat-status-read { color: var(--sui-primary); }
9308
+
9309
+ /* Grouped — no avatar, tighter spacing */
9310
+ .sui-chat-grouped {
9311
+ gap: 4px;
9312
+ }
9313
+
9314
+ .sui-chat-grouped .sui-chat-avatar {
9315
+ visibility: hidden;
9316
+ }
9317
+
9318
+ .sui-chat-grouped .sui-chat-message-received .sui-chat-bubble {
9319
+ border-bottom-left-radius: 4px;
9320
+ border-top-left-radius: 4px;
9321
+ }
9322
+
9323
+ .sui-chat-grouped .sui-chat-message-sent .sui-chat-bubble {
9324
+ border-bottom-right-radius: 4px;
9325
+ border-top-right-radius: 4px;
9326
+ }
9327
+
9328
+ .sui-chat-grouped .sui-chat-message:first-child .sui-chat-avatar {
9329
+ visibility: visible;
9330
+ }
9331
+
9332
+ .sui-chat-grouped .sui-chat-message-received:first-child .sui-chat-bubble {
9333
+ border-top-left-radius: var(--sui-radius);
9334
+ }
9335
+
9336
+ .sui-chat-grouped .sui-chat-message-sent:first-child .sui-chat-bubble {
9337
+ border-top-right-radius: var(--sui-radius);
9338
+ }
9339
+
9340
+ .sui-chat-grouped .sui-chat-message:last-child .sui-chat-bubble {
9341
+ border-bottom-left-radius: var(--sui-radius);
9342
+ border-bottom-right-radius: var(--sui-radius);
9343
+ }
9344
+
9345
+ /* Color variants — sent bubble */
9346
+ .sui-chat-success .sui-chat-message-sent .sui-chat-bubble { background: var(--sui-success); }
9347
+ .sui-chat-danger .sui-chat-message-sent .sui-chat-bubble { background: var(--sui-danger); }
9348
+ .sui-chat-warning .sui-chat-message-sent .sui-chat-bubble { background: var(--sui-warning); color: var(--sui-text); }
9349
+ .sui-chat-info .sui-chat-message-sent .sui-chat-bubble { background: var(--sui-info); }
9350
+
9351
+ /* Inset — both pressed-in; sent uses tinted background */
9352
+ .sui-chat-inset .sui-chat-message-received .sui-chat-bubble {
9353
+ box-shadow: var(--sui-shadow-inset-sm);
9354
+ }
9355
+
9356
+ .sui-chat-inset .sui-chat-message-sent .sui-chat-bubble {
9357
+ background: rgba(91, 84, 224, 0.15);
9358
+ color: var(--sui-text);
9359
+ box-shadow: var(--sui-shadow-inset-sm);
9360
+ }
9361
+
9362
+ .sui-chat-inset.sui-chat-success .sui-chat-message-sent .sui-chat-bubble {
9363
+ background: rgba(45, 206, 137, 0.15);
9364
+ color: var(--sui-text);
9365
+ }
9366
+
9367
+ .sui-chat-inset.sui-chat-danger .sui-chat-message-sent .sui-chat-bubble {
9368
+ background: rgba(231, 76, 111, 0.15);
9369
+ color: var(--sui-text);
9370
+ }
9371
+
9372
+ .sui-chat-inset.sui-chat-warning .sui-chat-message-sent .sui-chat-bubble {
9373
+ background: rgba(245, 166, 35, 0.15);
9374
+ color: var(--sui-text);
9375
+ }
9376
+
9377
+ .sui-chat-inset.sui-chat-info .sui-chat-message-sent .sui-chat-bubble {
9378
+ background: rgba(54, 163, 247, 0.15);
9379
+ color: var(--sui-text);
9380
+ }
9381
+
9382
+ /* =========================================
9383
+ Color Picker
9384
+ ========================================= */
9385
+ .sui-color-picker {
9386
+ display: inline-flex;
9387
+ flex-wrap: wrap;
9388
+ gap: 8px;
9389
+ }
9390
+
9391
+ .sui-color-swatch {
9392
+ width: 36px;
9393
+ height: 36px;
9394
+ border-radius: var(--sui-radius-sm);
9395
+ border: 2px solid transparent;
9396
+ cursor: pointer;
9397
+ box-shadow: var(--sui-shadow-raised-sm);
9398
+ transition: var(--sui-transition);
9399
+ position: relative;
9400
+ }
9401
+
9402
+ .sui-color-swatch:hover {
9403
+ transform: translateY(-2px);
9404
+ box-shadow: var(--sui-shadow-raised);
9405
+ }
9406
+
9407
+ .sui-color-swatch.active {
9408
+ border-color: var(--sui-text);
9409
+ box-shadow: var(--sui-shadow-raised);
9410
+ }
9411
+
9412
+ .sui-color-swatch.active::after {
9413
+ content: "";
9414
+ position: absolute;
9415
+ top: 50%;
9416
+ left: 50%;
9417
+ transform: translate(-50%, -60%) rotate(45deg);
9418
+ width: 6px;
9419
+ height: 10px;
9420
+ border: 2px solid #fff;
9421
+ border-top: none;
9422
+ border-left: none;
9423
+ }
9424
+
9425
+ /* Sizes */
9426
+ .sui-color-picker-sm .sui-color-swatch {
9427
+ width: 24px;
9428
+ height: 24px;
9429
+ }
9430
+
9431
+ .sui-color-picker-sm .sui-color-swatch.active::after {
9432
+ width: 4px;
9433
+ height: 8px;
9434
+ }
9435
+
9436
+ .sui-color-picker-lg .sui-color-swatch {
9437
+ width: 48px;
9438
+ height: 48px;
9439
+ }
9440
+
9441
+ .sui-color-picker-lg .sui-color-swatch.active::after {
9442
+ width: 8px;
9443
+ height: 14px;
9444
+ }
9445
+
9446
+ /* With label */
9447
+ .sui-color-picker-labeled {
9448
+ gap: 12px;
9449
+ }
9450
+
9451
+ .sui-color-picker-labeled .sui-color-item {
9452
+ display: flex;
9453
+ flex-direction: column;
9454
+ align-items: center;
9455
+ gap: 4px;
9456
+ }
9457
+
9458
+ .sui-color-picker-labeled .sui-color-label {
9459
+ font-size: 11px;
9460
+ color: var(--sui-text-muted);
9461
+ font-weight: 500;
9462
+ text-transform: uppercase;
9463
+ letter-spacing: 0.3px;
9464
+ }
9465
+
9466
+ /* Palette rows */
9467
+ .sui-color-palette {
9468
+ display: flex;
9469
+ flex-direction: column;
9470
+ gap: 8px;
9471
+ }
9472
+
9473
+ .sui-color-palette-row {
9474
+ display: flex;
9475
+ gap: 4px;
9476
+ }
9477
+
9478
+ .sui-color-palette-row .sui-color-swatch {
9479
+ border-radius: 4px;
9480
+ box-shadow: none;
9481
+ border: none;
9482
+ width: 32px;
9483
+ height: 32px;
9484
+ }
9485
+
9486
+ .sui-color-palette-row .sui-color-swatch:first-child {
9487
+ border-radius: var(--sui-radius-sm) 4px 4px var(--sui-radius-sm);
9488
+ }
9489
+
9490
+ .sui-color-palette-row .sui-color-swatch:last-child {
9491
+ border-radius: 4px var(--sui-radius-sm) var(--sui-radius-sm) 4px;
9492
+ }
9493
+
9494
+ .sui-color-palette-row .sui-color-swatch:hover {
9495
+ transform: scale(1.15);
9496
+ z-index: 1;
9497
+ box-shadow: var(--sui-shadow-raised-sm);
9498
+ }
9499
+
9500
+ .sui-color-palette-label {
9501
+ font-size: 12px;
9502
+ font-weight: 600;
9503
+ color: var(--sui-text-muted);
9504
+ min-width: 60px;
9505
+ display: flex;
9506
+ align-items: center;
9507
+ }
9508
+
9509
+ /* Native input */
9510
+ .sui-color-input {
9511
+ display: inline-flex;
9512
+ align-items: center;
9513
+ gap: 10px;
9514
+ background: var(--sui-bg);
9515
+ box-shadow: var(--sui-shadow-raised-sm);
9516
+ border-radius: var(--sui-radius);
9517
+ padding: 8px 12px;
9518
+ }
9519
+
9520
+ .sui-color-input input[type="color"] {
9521
+ -webkit-appearance: none;
9522
+ appearance: none;
9523
+ width: 36px;
9524
+ height: 36px;
9525
+ border: none;
9526
+ border-radius: var(--sui-radius-sm);
9527
+ cursor: pointer;
9528
+ padding: 0;
9529
+ background: none;
9530
+ box-shadow: var(--sui-shadow-inset-sm);
9531
+ }
9532
+
9533
+ .sui-color-input input[type="color"]::-webkit-color-swatch-wrapper {
9534
+ padding: 2px;
9535
+ }
9536
+
9537
+ .sui-color-input input[type="color"]::-webkit-color-swatch {
9538
+ border: none;
9539
+ border-radius: 4px;
9540
+ }
9541
+
9542
+ .sui-color-input input[type="color"]::-moz-color-swatch {
9543
+ border: none;
9544
+ border-radius: 4px;
9545
+ }
9546
+
9547
+ .sui-color-input-value {
9548
+ font-size: 14px;
9549
+ font-weight: 600;
9550
+ color: var(--sui-text);
9551
+ font-family: var(--sui-font-mono);
9552
+ text-transform: uppercase;
9553
+ }
9554
+
9555
+ .sui-color-input-label {
9556
+ font-size: 12px;
9557
+ color: var(--sui-text-muted);
9558
+ }
9559
+
9560
+ /* Preview */
9561
+ .sui-color-preview {
9562
+ display: inline-flex;
9563
+ align-items: center;
9564
+ gap: 12px;
9565
+ background: var(--sui-bg);
9566
+ box-shadow: var(--sui-shadow-raised-sm);
9567
+ border-radius: var(--sui-radius);
9568
+ padding: 12px 16px;
9569
+ }
9570
+
9571
+ .sui-color-preview-swatch {
9572
+ width: 48px;
9573
+ height: 48px;
9574
+ border-radius: var(--sui-radius-sm);
9575
+ box-shadow: var(--sui-shadow-inset-sm);
9576
+ flex-shrink: 0;
9577
+ }
9578
+
9579
+ .sui-color-preview-info {
9580
+ display: flex;
9581
+ flex-direction: column;
9582
+ gap: 2px;
9583
+ }
9584
+
9585
+ .sui-color-preview-hex {
9586
+ font-size: 16px;
9587
+ font-weight: 700;
9588
+ color: var(--sui-text);
9589
+ font-family: var(--sui-font-mono);
9590
+ text-transform: uppercase;
9591
+ }
9592
+
9593
+ .sui-color-preview-name {
9594
+ font-size: 12px;
9595
+ color: var(--sui-text-muted);
9596
+ }
9597
+
9598
+ /* Inset container */
9599
+ .sui-color-picker-raised {
9600
+ background: var(--sui-bg);
9601
+ box-shadow: var(--sui-shadow-raised-sm);
9602
+ border-radius: var(--sui-radius);
9603
+ padding: 12px;
9604
+ }
9605
+
9606
+ .sui-color-picker-inset {
9607
+ background: var(--sui-bg);
9608
+ box-shadow: var(--sui-shadow-inset-sm);
9609
+ border-radius: var(--sui-radius);
9610
+ padding: 12px;
9611
+ }
9612
+
9613
+ .sui-color-picker-inset .sui-color-swatch {
9614
+ box-shadow: var(--sui-shadow-raised-sm);
9615
+ }
9616
+
9617
+ /* Spectrum picker */
9618
+ .sui-color-spectrum {
9619
+ display: inline-flex;
9620
+ flex-direction: column;
9621
+ gap: 12px;
9622
+ background: var(--sui-bg);
9623
+ box-shadow: var(--sui-shadow-raised);
9624
+ border-radius: var(--sui-radius-lg);
9625
+ padding: 16px;
9626
+ width: 280px;
9627
+ }
9628
+
9629
+ .sui-color-spectrum-canvas {
9630
+ position: relative;
9631
+ width: 100%;
9632
+ height: 180px;
9633
+ border-radius: var(--sui-radius-sm);
9634
+ overflow: hidden;
9635
+ cursor: crosshair;
9636
+ box-shadow: var(--sui-shadow-inset-sm);
9637
+ }
9638
+
9639
+ .sui-color-spectrum-canvas canvas {
9640
+ width: 100%;
9641
+ height: 100%;
9642
+ display: block;
9643
+ }
9644
+
9645
+ .sui-color-spectrum-cursor {
9646
+ position: absolute;
9647
+ width: 14px;
9648
+ height: 14px;
9649
+ border: 2px solid #fff;
9650
+ border-radius: 50%;
9651
+ box-shadow: 0 0 0 1px rgba(0,0,0,0.3), 0 2px 4px rgba(0,0,0,0.3);
9652
+ pointer-events: none;
9653
+ transform: translate(-50%, -50%);
9654
+ top: 0;
9655
+ left: 100%;
9656
+ }
9657
+
9658
+ .sui-color-spectrum-hue {
9659
+ position: relative;
9660
+ width: 100%;
9661
+ height: 14px;
9662
+ border-radius: 7px;
9663
+ background: linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00);
9664
+ cursor: pointer;
9665
+ box-shadow: var(--sui-shadow-inset-sm);
9666
+ }
9667
+
9668
+ .sui-color-spectrum-hue-cursor {
9669
+ position: absolute;
9670
+ width: 18px;
9671
+ height: 18px;
9672
+ border: 2px solid #fff;
9673
+ border-radius: 50%;
9674
+ box-shadow: 0 0 0 1px rgba(0,0,0,0.2), 0 2px 4px rgba(0,0,0,0.2);
9675
+ pointer-events: none;
9676
+ transform: translate(-50%, -50%);
9677
+ top: 50%;
9678
+ left: 0;
9679
+ background: #f00;
9680
+ }
9681
+
9682
+ .sui-color-spectrum-footer {
9683
+ display: flex;
9684
+ align-items: center;
9685
+ gap: 10px;
9686
+ }
9687
+
9688
+ .sui-color-spectrum-preview {
9689
+ width: 40px;
9690
+ height: 40px;
9691
+ border-radius: var(--sui-radius-sm);
9692
+ box-shadow: var(--sui-shadow-inset-sm);
9693
+ flex-shrink: 0;
9694
+ }
9695
+
9696
+ .sui-color-spectrum-values {
9697
+ flex: 1;
9698
+ display: flex;
9699
+ flex-direction: column;
9700
+ gap: 6px;
9701
+ }
9702
+
9703
+ .sui-color-spectrum-hex {
9704
+ display: flex;
9705
+ align-items: center;
9706
+ gap: 6px;
9707
+ }
9708
+
9709
+ .sui-color-spectrum-hex label {
9710
+ font-size: 11px;
9711
+ font-weight: 600;
9712
+ color: var(--sui-text-muted);
9713
+ text-transform: uppercase;
9714
+ }
9715
+
9716
+ .sui-color-spectrum-hex input {
9717
+ flex: 1;
9718
+ background: var(--sui-bg);
9719
+ box-shadow: var(--sui-shadow-inset-sm);
9720
+ border: none;
9721
+ border-radius: var(--sui-radius-sm);
9722
+ padding: 6px 8px;
9723
+ font-size: 13px;
9724
+ font-family: var(--sui-font-mono);
9725
+ font-weight: 600;
9726
+ color: var(--sui-text);
9727
+ text-transform: uppercase;
9728
+ outline: none;
9729
+ width: 100%;
9730
+ }
9731
+
9732
+ .sui-color-spectrum-hex input:focus {
9733
+ box-shadow: var(--sui-shadow-inset-sm), 0 0 0 2px var(--sui-primary);
9734
+ }
9735
+
9736
+ .sui-color-spectrum-rgb {
9737
+ display: flex;
9738
+ gap: 6px;
9739
+ }
9740
+
9741
+ .sui-color-spectrum-rgb-field {
9742
+ display: flex;
9743
+ flex-direction: column;
9744
+ align-items: center;
9745
+ gap: 2px;
9746
+ flex: 1;
9747
+ }
9748
+
9749
+ .sui-color-spectrum-rgb-field input {
9750
+ width: 100%;
9751
+ background: var(--sui-bg);
9752
+ box-shadow: var(--sui-shadow-inset-sm);
9753
+ border: none;
9754
+ border-radius: var(--sui-radius-sm);
9755
+ padding: 5px 4px;
9756
+ font-size: 12px;
9757
+ font-family: var(--sui-font-mono);
9758
+ font-weight: 600;
9759
+ color: var(--sui-text);
9760
+ text-align: center;
9761
+ outline: none;
9762
+ }
9763
+
9764
+ .sui-color-spectrum-rgb-field input:focus {
9765
+ box-shadow: var(--sui-shadow-inset-sm), 0 0 0 2px var(--sui-primary);
9766
+ }
9767
+
9768
+ .sui-color-spectrum-rgb-field input::-webkit-inner-spin-button,
9769
+ .sui-color-spectrum-rgb-field input::-webkit-outer-spin-button {
9770
+ -webkit-appearance: none;
9771
+ margin: 0;
9772
+ }
9773
+
9774
+ .sui-color-spectrum-rgb-field input[type="number"] {
9775
+ -moz-appearance: textfield;
9776
+ }
9777
+
9778
+ /* =========================================
9779
+ File Upload
9780
+ ========================================= */
9781
+ .sui-file-upload {
9782
+ display: flex;
9783
+ flex-direction: column;
9784
+ align-items: center;
9785
+ justify-content: center;
9786
+ gap: 8px;
9787
+ padding: 32px 24px;
9788
+ border: 2px dashed var(--sui-bg-dark);
9789
+ border-radius: var(--sui-radius-lg);
9790
+ background: var(--sui-bg);
9791
+ text-align: center;
9792
+ cursor: pointer;
9793
+ transition: var(--sui-transition);
9794
+ position: relative;
9795
+ }
9796
+
9797
+ .sui-file-upload:hover {
9798
+ border-color: var(--sui-primary);
9799
+ box-shadow: var(--sui-shadow-raised-sm);
9800
+ }
9801
+
9802
+ .sui-file-upload.sui-file-upload-dragover {
9803
+ border-color: var(--sui-primary);
9804
+ background: rgba(91, 84, 224, 0.05);
9805
+ box-shadow: var(--sui-shadow-raised-sm);
9806
+ }
9807
+
9808
+ .sui-file-upload input[type="file"] {
9809
+ position: absolute;
9810
+ inset: 0;
9811
+ width: 100%;
9812
+ height: 100%;
9813
+ opacity: 0;
9814
+ cursor: pointer;
9815
+ }
9816
+
9817
+ .sui-file-upload-icon {
9818
+ width: 40px;
9819
+ height: 40px;
9820
+ color: var(--sui-text-muted);
9821
+ }
9822
+
9823
+ .sui-file-upload-icon svg {
9824
+ width: 100%;
9825
+ height: 100%;
9826
+ stroke: currentColor;
9827
+ fill: none;
9828
+ stroke-width: 1.5;
9829
+ stroke-linecap: round;
9830
+ stroke-linejoin: round;
9831
+ }
9832
+
9833
+ .sui-file-upload-text {
9834
+ font-size: 14px;
9835
+ color: var(--sui-text-muted);
9836
+ line-height: 1.4;
9837
+ }
9838
+
9839
+ .sui-file-upload-text strong {
9840
+ color: var(--sui-primary);
9841
+ font-weight: 600;
9842
+ }
9843
+
9844
+ .sui-file-upload-hint {
9845
+ font-size: 12px;
9846
+ color: var(--sui-text-light);
9847
+ }
9848
+
9849
+ .sui-file-upload-btn {
9850
+ margin-top: 4px;
9851
+ }
9852
+
9853
+ /* File list */
9854
+ .sui-file-list {
9855
+ display: flex;
9856
+ flex-direction: column;
9857
+ gap: 8px;
9858
+ width: 100%;
9859
+ }
9860
+
9861
+ .sui-file-item {
9862
+ display: flex;
9863
+ align-items: center;
9864
+ gap: 10px;
9865
+ padding: 10px 12px;
9866
+ background: var(--sui-bg);
9867
+ box-shadow: var(--sui-shadow-raised-sm);
9868
+ border-radius: var(--sui-radius);
9869
+ }
9870
+
9871
+ .sui-file-item-icon {
9872
+ width: 32px;
9873
+ height: 32px;
9874
+ display: flex;
9875
+ align-items: center;
9876
+ justify-content: center;
9877
+ border-radius: var(--sui-radius-sm);
9878
+ background: rgba(91, 84, 224, 0.1);
9879
+ flex-shrink: 0;
9880
+ }
9881
+
9882
+ .sui-file-item-icon svg {
9883
+ width: 16px;
9884
+ height: 16px;
9885
+ stroke: var(--sui-primary);
9886
+ fill: none;
9887
+ stroke-width: 2;
9888
+ stroke-linecap: round;
9889
+ stroke-linejoin: round;
9890
+ }
9891
+
9892
+ .sui-file-item-icon-image { background: rgba(54, 163, 247, 0.1); }
9893
+ .sui-file-item-icon-image svg { stroke: var(--sui-info); }
9894
+
9895
+ .sui-file-item-icon-pdf { background: rgba(231, 76, 111, 0.1); }
9896
+ .sui-file-item-icon-pdf svg { stroke: var(--sui-danger); }
9897
+
9898
+ .sui-file-item-icon-video { background: rgba(91, 84, 224, 0.1); }
9899
+ .sui-file-item-icon-video svg { stroke: var(--sui-primary); }
9900
+
9901
+ .sui-file-item-icon-audio { background: rgba(245, 166, 35, 0.1); }
9902
+ .sui-file-item-icon-audio svg { stroke: var(--sui-warning); }
9903
+
9904
+ .sui-file-item-icon-code { background: rgba(45, 206, 137, 0.1); }
9905
+ .sui-file-item-icon-code svg { stroke: var(--sui-success); }
9906
+
9907
+ .sui-file-item-icon-archive { background: rgba(108, 117, 125, 0.1); }
9908
+ .sui-file-item-icon-archive svg { stroke: #6C757D; }
9909
+
9910
+ .sui-file-item-icon-spreadsheet { background: rgba(45, 206, 137, 0.1); }
9911
+ .sui-file-item-icon-spreadsheet svg { stroke: var(--sui-success); }
9912
+
9913
+ .sui-file-item-info {
9914
+ flex: 1;
9915
+ min-width: 0;
9916
+ }
9917
+
9918
+ .sui-file-item-name {
9919
+ font-size: 13px;
9920
+ font-weight: 600;
9921
+ color: var(--sui-text);
9922
+ white-space: nowrap;
9923
+ overflow: hidden;
9924
+ text-overflow: ellipsis;
9925
+ }
9926
+
9927
+ .sui-file-item-size {
9928
+ font-size: 11px;
9929
+ color: var(--sui-text-muted);
9930
+ }
9931
+
9932
+ .sui-file-item-remove {
9933
+ width: 24px;
9934
+ height: 24px;
9935
+ display: flex;
9936
+ align-items: center;
9937
+ justify-content: center;
9938
+ border: none;
9939
+ background: none;
9940
+ color: var(--sui-text-muted);
9941
+ cursor: pointer;
9942
+ border-radius: 50%;
9943
+ transition: var(--sui-transition);
9944
+ flex-shrink: 0;
9945
+ font-size: 16px;
9946
+ line-height: 1;
9947
+ }
9948
+
9949
+ .sui-file-item-remove:hover {
9950
+ color: var(--sui-danger);
9951
+ background: rgba(231, 76, 111, 0.1);
9952
+ }
9953
+
9954
+ /* With progress */
9955
+ .sui-file-item-progress {
9956
+ width: 100%;
9957
+ }
9958
+
9959
+ .sui-file-item-progress .sui-progress {
9960
+ margin-top: 6px;
9961
+ }
9962
+
9963
+ .sui-file-item-status {
9964
+ font-size: 11px;
9965
+ font-weight: 500;
9966
+ }
9967
+
9968
+ .sui-file-item-status-uploading { color: var(--sui-primary); }
9969
+ .sui-file-item-status-complete { color: var(--sui-success); font-weight: 700; }
9970
+ .sui-file-item-status-error { color: var(--sui-danger); font-weight: 700; }
9971
+
9972
+ /* Wrap container */
9973
+ .sui-file-upload-wrap {
9974
+ display: flex;
9975
+ flex-direction: column;
9976
+ gap: 12px;
9977
+ }
9978
+
9979
+ /* Preview thumbnails */
9980
+ .sui-file-preview-grid {
9981
+ display: flex;
9982
+ flex-wrap: wrap;
9983
+ gap: 10px;
9984
+ width: 100%;
9985
+ }
9986
+
9987
+ .sui-file-preview-item {
9988
+ position: relative;
9989
+ width: 80px;
9990
+ height: 80px;
9991
+ border-radius: var(--sui-radius-sm);
9992
+ overflow: hidden;
9993
+ box-shadow: var(--sui-shadow-raised-sm);
9994
+ }
9995
+
9996
+ .sui-file-preview-item img {
9997
+ width: 100%;
9998
+ height: 100%;
9999
+ object-fit: cover;
10000
+ display: block;
10001
+ }
10002
+
10003
+ .sui-file-preview-item-remove {
10004
+ position: absolute;
10005
+ top: 4px;
10006
+ right: 4px;
10007
+ width: 20px;
10008
+ height: 20px;
10009
+ display: flex;
10010
+ align-items: center;
10011
+ justify-content: center;
10012
+ border: none;
10013
+ background: rgba(0,0,0,0.6);
10014
+ color: #fff;
10015
+ cursor: pointer;
10016
+ border-radius: 50%;
10017
+ font-size: 12px;
10018
+ line-height: 1;
10019
+ transition: var(--sui-transition);
10020
+ }
10021
+
10022
+ .sui-file-preview-item-remove:hover {
10023
+ background: var(--sui-danger);
10024
+ }
10025
+
10026
+ /* Compact */
10027
+ .sui-file-upload-compact {
10028
+ flex-direction: row;
10029
+ padding: 12px 16px;
10030
+ gap: 12px;
10031
+ }
10032
+
10033
+ .sui-file-upload-compact .sui-file-upload-icon {
10034
+ width: 28px;
10035
+ height: 28px;
10036
+ }
10037
+
10038
+ .sui-file-upload-compact .sui-file-upload-text {
10039
+ font-size: 13px;
10040
+ }
10041
+
10042
+ /* Inset */
10043
+ .sui-file-upload-inset {
10044
+ border: none;
10045
+ box-shadow: var(--sui-shadow-inset-sm);
10046
+ }
10047
+
10048
+ .sui-file-upload-inset:hover {
10049
+ box-shadow: var(--sui-shadow-inset-sm), 0 0 0 2px var(--sui-primary);
10050
+ }
10051
+
10052
+ .sui-file-upload-inset.sui-file-upload-dragover {
10053
+ box-shadow: var(--sui-shadow-inset-sm), 0 0 0 2px var(--sui-primary);
10054
+ }
10055
+
10056
+ /* =========================================
10057
+ Radial Progress
10058
+ ========================================= */
10059
+ .sui-radial {
10060
+ position: relative;
10061
+ display: inline-flex;
10062
+ align-items: center;
10063
+ justify-content: center;
10064
+ width: 100px;
10065
+ height: 100px;
10066
+ }
10067
+
10068
+ .sui-radial svg {
10069
+ width: 100%;
10070
+ height: 100%;
10071
+ transform: rotate(-90deg);
10072
+ }
10073
+
10074
+ .sui-radial-track {
10075
+ fill: none;
10076
+ stroke: var(--sui-bg-dark);
10077
+ stroke-width: 8;
10078
+ }
10079
+
10080
+ .sui-radial-fill {
10081
+ fill: none;
10082
+ stroke: var(--sui-primary);
10083
+ stroke-width: 8;
10084
+ stroke-linecap: round;
10085
+ stroke-dasharray: 251.2;
10086
+ stroke-dashoffset: 251.2;
10087
+ transition: stroke-dashoffset 0.6s ease;
10088
+ }
10089
+
10090
+ .sui-radial-value {
10091
+ position: absolute;
10092
+ top: 50%;
10093
+ left: 50%;
10094
+ transform: translate(-50%, -50%);
10095
+ font-size: 20px;
10096
+ font-weight: 700;
10097
+ color: var(--sui-text);
10098
+ line-height: 1;
10099
+ }
10100
+
10101
+ .sui-radial-label {
10102
+ position: absolute;
10103
+ top: 50%;
10104
+ left: 50%;
10105
+ transform: translate(-50%, -50%);
10106
+ display: flex;
10107
+ flex-direction: column;
10108
+ align-items: center;
10109
+ gap: 2px;
10110
+ line-height: 1;
10111
+ }
10112
+
10113
+ .sui-radial-label .sui-radial-value {
10114
+ position: static;
10115
+ transform: none;
10116
+ }
10117
+
10118
+ .sui-radial-label-text {
10119
+ font-size: 11px;
10120
+ color: var(--sui-text-muted);
10121
+ font-weight: 500;
10122
+ }
10123
+
10124
+ /* Sizes */
10125
+ .sui-radial-sm {
10126
+ width: 64px;
10127
+ height: 64px;
10128
+ }
10129
+
10130
+ .sui-radial-sm .sui-radial-track,
10131
+ .sui-radial-sm .sui-radial-fill {
10132
+ stroke-width: 6;
10133
+ }
10134
+
10135
+ .sui-radial-sm .sui-radial-fill {
10136
+ stroke-dasharray: 163.4;
10137
+ stroke-dashoffset: 163.4;
10138
+ }
10139
+
10140
+ .sui-radial-sm .sui-radial-value {
10141
+ font-size: 14px;
10142
+ }
10143
+
10144
+ .sui-radial-sm .sui-radial-label-text {
10145
+ font-size: 9px;
10146
+ }
10147
+
10148
+ .sui-radial-lg {
10149
+ width: 140px;
10150
+ height: 140px;
10151
+ }
10152
+
10153
+ .sui-radial-lg .sui-radial-track,
10154
+ .sui-radial-lg .sui-radial-fill {
10155
+ stroke-width: 10;
10156
+ }
10157
+
10158
+ .sui-radial-lg .sui-radial-fill {
10159
+ stroke-dasharray: 345.6;
10160
+ stroke-dashoffset: 345.6;
10161
+ }
10162
+
10163
+ .sui-radial-lg .sui-radial-value {
10164
+ font-size: 28px;
10165
+ }
10166
+
10167
+ .sui-radial-lg .sui-radial-label-text {
10168
+ font-size: 13px;
10169
+ }
10170
+
10171
+ /* Colors */
10172
+ .sui-radial-success .sui-radial-fill { stroke: var(--sui-success); }
10173
+ .sui-radial-danger .sui-radial-fill { stroke: var(--sui-danger); }
10174
+ .sui-radial-warning .sui-radial-fill { stroke: var(--sui-warning); }
10175
+ .sui-radial-info .sui-radial-fill { stroke: var(--sui-info); }
10176
+
10177
+ /* Animated */
10178
+ .sui-radial-animated .sui-radial-fill {
10179
+ transition: stroke-dashoffset 1.2s cubic-bezier(0.4, 0, 0.2, 1);
10180
+ }
10181
+
10182
+ /* Inset — inner circle is pressed in */
10183
+ .sui-radial-inset .sui-radial-track {
10184
+ stroke: none;
10185
+ }
10186
+
10187
+ .sui-radial-inset::before {
10188
+ content: "";
10189
+ position: absolute;
10190
+ top: 12%;
10191
+ left: 12%;
10192
+ width: 76%;
10193
+ height: 76%;
10194
+ border-radius: 50%;
10195
+ background: var(--sui-bg);
10196
+ box-shadow: var(--sui-shadow-inset-sm);
10197
+ }
10198
+
10199
+ /* =========================================
10200
+ Dock
10201
+ ========================================= */
10202
+ .sui-dock {
10203
+ display: inline-flex;
10204
+ align-items: flex-end;
10205
+ gap: 4px;
10206
+ padding: 8px 12px;
10207
+ background: var(--sui-bg);
10208
+ border-radius: var(--sui-radius-lg);
10209
+ box-shadow: var(--sui-shadow-raised);
10210
+ }
10211
+
10212
+ .sui-dock-item {
10213
+ width: 40px;
10214
+ height: 40px;
10215
+ display: flex;
10216
+ align-items: center;
10217
+ justify-content: center;
10218
+ border-radius: var(--sui-radius-sm);
10219
+ background: var(--sui-bg);
10220
+ box-shadow: var(--sui-shadow-raised-sm);
10221
+ cursor: pointer;
10222
+ transition: transform 0.2s cubic-bezier(0.2, 0, 0, 1), width 0.2s cubic-bezier(0.2, 0, 0, 1), height 0.2s cubic-bezier(0.2, 0, 0, 1);
10223
+ position: relative;
10224
+ flex-shrink: 0;
10225
+ border: none;
10226
+ padding: 0;
10227
+ font: inherit;
10228
+ outline: none;
10229
+ }
10230
+
10231
+ .sui-dock-item svg {
10232
+ width: 22px;
10233
+ height: 22px;
10234
+ stroke: var(--sui-text-muted);
10235
+ fill: none;
10236
+ stroke-width: 1.5;
10237
+ stroke-linecap: round;
10238
+ stroke-linejoin: round;
10239
+ transition: width 0.2s cubic-bezier(0.2, 0, 0, 1), height 0.2s cubic-bezier(0.2, 0, 0, 1);
10240
+ }
10241
+
10242
+ .sui-dock-item:hover {
10243
+ box-shadow: var(--sui-shadow-raised);
10244
+ }
10245
+
10246
+ /* Tooltip label */
10247
+ .sui-dock-item[data-label]::after {
10248
+ content: attr(data-label);
10249
+ position: absolute;
10250
+ bottom: calc(100% + 8px);
10251
+ left: 50%;
10252
+ transform: translateX(-50%) scale(0.8);
10253
+ background: var(--sui-text);
10254
+ color: var(--sui-bg);
10255
+ font-size: 11px;
10256
+ font-weight: 600;
10257
+ padding: 4px 8px;
10258
+ border-radius: var(--sui-radius-sm);
10259
+ white-space: nowrap;
10260
+ opacity: 0;
10261
+ pointer-events: none;
10262
+ transition: opacity 0.15s ease, transform 0.15s ease;
10263
+ }
10264
+
10265
+ .sui-dock-item[data-label]:hover::after {
10266
+ opacity: 1;
10267
+ transform: translateX(-50%) scale(1);
10268
+ }
10269
+
10270
+ /* Vertical */
10271
+ .sui-dock-vertical {
10272
+ flex-direction: column;
10273
+ align-items: flex-start;
10274
+ padding: 12px 8px;
10275
+ }
10276
+
10277
+ .sui-dock-vertical .sui-dock-item[data-label]::after {
10278
+ bottom: auto;
10279
+ left: calc(100% + 8px);
10280
+ top: 50%;
10281
+ transform: translateY(-50%) scale(0.8);
10282
+ }
10283
+
10284
+ .sui-dock-vertical .sui-dock-item[data-label]:hover::after {
10285
+ transform: translateY(-50%) scale(1);
10286
+ }
10287
+
10288
+ /* Sizes */
10289
+ .sui-dock-sm .sui-dock-item {
10290
+ width: 32px;
10291
+ height: 32px;
10292
+ }
10293
+
10294
+ .sui-dock-sm .sui-dock-item svg {
10295
+ width: 16px;
10296
+ height: 16px;
10297
+ }
10298
+
10299
+ .sui-dock-lg .sui-dock-item {
10300
+ width: 52px;
10301
+ height: 52px;
10302
+ }
10303
+
10304
+ .sui-dock-lg .sui-dock-item svg {
10305
+ width: 28px;
10306
+ height: 28px;
10307
+ }
10308
+
10309
+ /* Colors */
10310
+ .sui-dock-dark {
10311
+ background: #1B1D2A;
10312
+ box-shadow: none;
10313
+ }
10314
+
10315
+ .sui-dock-dark .sui-dock-item {
10316
+ background: rgba(255, 255, 255, 0.1);
10317
+ box-shadow: none;
10318
+ }
10319
+
10320
+ .sui-dock-dark .sui-dock-item svg {
10321
+ stroke: rgba(255, 255, 255, 0.8);
10322
+ }
10323
+
10324
+ .sui-dock-dark .sui-dock-item:hover {
10325
+ background: rgba(255, 255, 255, 0.2);
10326
+ box-shadow: none;
10327
+ }
10328
+
10329
+ .sui-dock-primary {
10330
+ background: var(--sui-primary);
10331
+ box-shadow: none;
10332
+ }
10333
+
10334
+ .sui-dock-primary .sui-dock-item {
10335
+ background: rgba(255, 255, 255, 0.15);
10336
+ box-shadow: none;
10337
+ }
10338
+
10339
+ .sui-dock-primary .sui-dock-item svg {
10340
+ stroke: rgba(255, 255, 255, 0.9);
10341
+ }
10342
+
10343
+ .sui-dock-primary .sui-dock-item:hover {
10344
+ background: rgba(255, 255, 255, 0.25);
10345
+ box-shadow: none;
10346
+ }
10347
+
10348
+ /* Icon-only scale — button stays fixed, SVG grows */
10349
+ .sui-dock-icon-scale .sui-dock-item {
10350
+ transition: none;
10351
+ }
10352
+
10353
+ .sui-dock-icon-scale .sui-dock-item svg {
10354
+ transition: transform 0.2s cubic-bezier(0.2, 0, 0, 1);
10355
+ }
10356
+
10357
+ /* No scale */
10358
+ .sui-dock-no-scale .sui-dock-item {
10359
+ transition: none;
10360
+ }
10361
+
10362
+ /* Ghost — no tray background */
10363
+ .sui-dock-ghost {
10364
+ background: none;
10365
+ box-shadow: none;
10366
+ padding: 0;
10367
+ }
10368
+
10369
+ /* Inset */
10370
+ .sui-dock-inset {
10371
+ box-shadow: var(--sui-shadow-inset);
10372
+ }
10373
+
10374
+ .sui-dock-inset .sui-dock-item {
10375
+ box-shadow: var(--sui-shadow-raised-sm);
10376
+ }
10377
+
10378
+ /* =========================================
10379
+ Swap
10380
+ ========================================= */
10381
+ .sui-swap {
10382
+ display: inline-flex;
10383
+ align-items: center;
10384
+ justify-content: center;
10385
+ cursor: pointer;
10386
+ position: relative;
10387
+ width: 40px;
10388
+ height: 40px;
10389
+ border: none;
10390
+ background: none;
10391
+ padding: 0;
10392
+ font: inherit;
10393
+ outline: none;
10394
+ color: var(--sui-text);
10395
+ }
10396
+
10397
+ .sui-swap-on,
10398
+ .sui-swap-off {
10399
+ display: flex;
10400
+ align-items: center;
10401
+ justify-content: center;
10402
+ transition: opacity 0.3s ease, transform 0.3s ease;
10403
+ }
10404
+
10405
+ .sui-swap-on {
10406
+ position: absolute;
10407
+ opacity: 0;
10408
+ transform: scale(0);
10409
+ }
10410
+
10411
+ .sui-swap-off {
10412
+ opacity: 1;
10413
+ transform: scale(1);
10414
+ }
10415
+
10416
+ .sui-swap.active .sui-swap-on {
10417
+ opacity: 1;
10418
+ transform: scale(1);
10419
+ }
10420
+
10421
+ .sui-swap.active .sui-swap-off {
10422
+ opacity: 0;
10423
+ transform: scale(0);
10424
+ }
10425
+
10426
+ .sui-swap svg {
10427
+ width: 24px;
10428
+ height: 24px;
10429
+ stroke: currentColor;
10430
+ fill: none;
10431
+ stroke-width: 2;
10432
+ stroke-linecap: round;
10433
+ stroke-linejoin: round;
10434
+ }
10435
+
10436
+ /* Rotate */
10437
+ .sui-swap-rotate .sui-swap-on {
10438
+ transform: rotate(-180deg) scale(0);
10439
+ }
10440
+
10441
+ .sui-swap-rotate .sui-swap-off {
10442
+ transform: rotate(0deg) scale(1);
10443
+ }
10444
+
10445
+ .sui-swap-rotate.active .sui-swap-on {
10446
+ transform: rotate(0deg) scale(1);
10447
+ }
10448
+
10449
+ .sui-swap-rotate.active .sui-swap-off {
10450
+ transform: rotate(180deg) scale(0);
10451
+ }
10452
+
10453
+ /* Flip */
10454
+ .sui-swap-flip {
10455
+ perspective: 200px;
10456
+ }
10457
+
10458
+ .sui-swap-flip .sui-swap-on,
10459
+ .sui-swap-flip .sui-swap-off {
10460
+ backface-visibility: hidden;
10461
+ transition: transform 0.4s ease;
10462
+ transform-style: preserve-3d;
10463
+ }
10464
+
10465
+ .sui-swap-flip .sui-swap-on {
10466
+ transform: rotateY(180deg);
10467
+ opacity: 1;
10468
+ }
10469
+
10470
+ .sui-swap-flip .sui-swap-off {
10471
+ transform: rotateY(0deg);
10472
+ opacity: 1;
10473
+ }
10474
+
10475
+ .sui-swap-flip.active .sui-swap-on {
10476
+ transform: rotateY(0deg);
10477
+ }
10478
+
10479
+ .sui-swap-flip.active .sui-swap-off {
10480
+ transform: rotateY(-180deg);
10481
+ }
10482
+
10483
+ /* Fade */
10484
+ .sui-swap-fade .sui-swap-on {
10485
+ transform: none;
10486
+ opacity: 0;
10487
+ }
10488
+
10489
+ .sui-swap-fade .sui-swap-off {
10490
+ transform: none;
10491
+ opacity: 1;
10492
+ }
10493
+
10494
+ .sui-swap-fade.active .sui-swap-on {
10495
+ opacity: 1;
10496
+ }
10497
+
10498
+ .sui-swap-fade.active .sui-swap-off {
10499
+ opacity: 0;
10500
+ }
10501
+
10502
+ /* Slide */
10503
+ .sui-swap-slide {
10504
+ overflow: hidden;
10505
+ }
10506
+
10507
+ .sui-swap-slide .sui-swap-on,
10508
+ .sui-swap-slide .sui-swap-off {
10509
+ position: absolute;
10510
+ top: 0;
10511
+ left: 0;
10512
+ width: 100%;
10513
+ height: 100%;
10514
+ opacity: 1;
10515
+ }
10516
+
10517
+ .sui-swap-slide .sui-swap-off {
10518
+ transform: translateY(0);
10519
+ }
10520
+
10521
+ .sui-swap-slide .sui-swap-on {
10522
+ transform: translateY(-100%);
10523
+ }
10524
+
10525
+ .sui-swap-slide.active .sui-swap-on {
10526
+ transform: translateY(0);
10527
+ }
10528
+
10529
+ .sui-swap-slide.active .sui-swap-off {
10530
+ transform: translateY(100%);
10531
+ }
10532
+
10533
+ /* Text swap */
10534
+ .sui-swap-text {
10535
+ width: auto;
10536
+ height: auto;
10537
+ font-weight: 600;
10538
+ font-size: 14px;
10539
+ }
10540
+
10541
+ .sui-swap-text .sui-swap-on,
10542
+ .sui-swap-text .sui-swap-off {
10543
+ padding: 4px 8px;
10544
+ }
10545
+
10546
+ /* Cycle — multi-state swap */
10547
+ .sui-swap-cycle .sui-swap-state {
10548
+ display: flex;
10549
+ align-items: center;
10550
+ justify-content: center;
10551
+ position: absolute;
10552
+ opacity: 0;
10553
+ transform: scale(0);
10554
+ transition: opacity 0.3s ease, transform 0.3s ease;
10555
+ }
10556
+
10557
+ .sui-swap-cycle .sui-swap-state.active {
10558
+ opacity: 1;
10559
+ transform: scale(1);
10560
+ position: relative;
10561
+ }
10562
+
10563
+ .sui-swap-cycle.sui-swap-rotate .sui-swap-state {
10564
+ transform: rotate(-180deg) scale(0);
10565
+ }
10566
+
10567
+ .sui-swap-cycle.sui-swap-rotate .sui-swap-state.active {
10568
+ transform: rotate(0deg) scale(1);
10569
+ }
10570
+
10571
+ .sui-swap-cycle.sui-swap-fade .sui-swap-state {
10572
+ transform: none;
10573
+ }
10574
+
10575
+ .sui-swap-cycle.sui-swap-fade .sui-swap-state.active {
10576
+ transform: none;
10577
+ }
10578
+
10579
+ .sui-swap-cycle.sui-swap-slide {
10580
+ overflow: hidden;
10581
+ }
10582
+
10583
+ .sui-swap-cycle.sui-swap-slide .sui-swap-state {
10584
+ position: absolute;
10585
+ top: 0;
10586
+ left: 0;
10587
+ width: 100%;
10588
+ height: 100%;
10589
+ transform: translateY(-100%);
10590
+ opacity: 1;
10591
+ }
10592
+
10593
+ .sui-swap-cycle.sui-swap-slide .sui-swap-state.active {
10594
+ transform: translateY(0);
10595
+ }
10596
+
10597
+ .sui-swap-slide-x {
10598
+ overflow: hidden;
10599
+ }
10600
+
10601
+ .sui-swap-slide-x .sui-swap-on,
10602
+ .sui-swap-slide-x .sui-swap-off,
10603
+ .sui-swap-cycle.sui-swap-slide-x .sui-swap-state {
10604
+ position: absolute;
10605
+ top: 0;
10606
+ left: 0;
10607
+ width: 100%;
10608
+ height: 100%;
10609
+ opacity: 1;
10610
+ }
10611
+
10612
+ .sui-swap-slide-x .sui-swap-off,
10613
+ .sui-swap-cycle.sui-swap-slide-x .sui-swap-state.active {
10614
+ transform: translateX(0);
10615
+ }
10616
+
10617
+ .sui-swap-slide-x .sui-swap-on,
10618
+ .sui-swap-cycle.sui-swap-slide-x .sui-swap-state {
10619
+ transform: translateX(-100%);
10620
+ }
10621
+
10622
+ .sui-swap-slide-x.active .sui-swap-on {
10623
+ transform: translateX(0);
10624
+ }
10625
+
10626
+ .sui-swap-slide-x.active .sui-swap-off {
10627
+ transform: translateX(100%);
10628
+ }
10629
+
10630
+ /* Sizes */
10631
+ .sui-swap-sm { width: 28px; height: 28px; }
10632
+ .sui-swap-sm svg { width: 16px; height: 16px; }
10633
+
10634
+ .sui-swap-lg { width: 52px; height: 52px; }
10635
+ .sui-swap-lg svg { width: 32px; height: 32px; }
10636
+
10637
+ /* Inset */
10638
+ .sui-swap-raised {
10639
+ background: var(--sui-bg);
10640
+ box-shadow: var(--sui-shadow-raised-sm);
10641
+ border-radius: var(--sui-radius-sm);
10642
+ padding: 8px;
10643
+ width: auto;
10644
+ height: auto;
10645
+ }
10646
+
10647
+ .sui-swap-inset {
10648
+ background: var(--sui-bg);
10649
+ box-shadow: var(--sui-shadow-inset-sm);
10650
+ border-radius: var(--sui-radius-sm);
10651
+ padding: 8px;
10652
+ width: auto;
10653
+ height: auto;
10654
+ }
10655
+
10656
+ .sui-color-spectrum-rgb-field label {
10657
+ font-size: 10px;
10658
+ font-weight: 600;
10659
+ color: var(--sui-text-muted);
10660
+ text-transform: uppercase;
10661
+ }
10662
+
10663
+ /* =========================================
10664
+ Tree View
10665
+ ========================================= */
10666
+ .sui-tree {
10667
+ display: flex;
10668
+ flex-direction: column;
10669
+ font-size: 14px;
10670
+ }
10671
+
10672
+ .sui-tree-item {
10673
+ display: flex;
10674
+ flex-direction: column;
10675
+ }
10676
+
10677
+ .sui-tree-label {
10678
+ display: flex;
10679
+ align-items: center;
10680
+ gap: 6px;
10681
+ padding: 5px 8px;
10682
+ border-radius: var(--sui-radius-sm);
10683
+ cursor: pointer;
10684
+ color: var(--sui-text);
10685
+ font-weight: 500;
10686
+ transition: background 0.15s ease;
10687
+ user-select: none;
10688
+ }
10689
+
10690
+ .sui-tree-label:hover {
10691
+ background: rgba(91, 84, 224, 0.06);
10692
+ }
10693
+
10694
+ .sui-tree-label.active {
10695
+ background: rgba(91, 84, 224, 0.1);
10696
+ color: var(--sui-primary);
10697
+ }
10698
+
10699
+ .sui-tree-toggle {
10700
+ width: 16px;
10701
+ height: 16px;
10702
+ display: flex;
10703
+ align-items: center;
10704
+ justify-content: center;
10705
+ flex-shrink: 0;
10706
+ transition: transform 0.2s ease;
10707
+ }
10708
+
10709
+ .sui-tree-toggle svg {
10710
+ width: 12px;
10711
+ height: 12px;
10712
+ stroke: var(--sui-text-muted);
10713
+ fill: none;
10714
+ stroke-width: 2;
10715
+ stroke-linecap: round;
10716
+ stroke-linejoin: round;
10717
+ }
10718
+
10719
+ .sui-tree-item.expanded > .sui-tree-label .sui-tree-toggle {
10720
+ transform: rotate(90deg);
10721
+ }
10722
+
10723
+ .sui-tree-toggle-spacer {
10724
+ width: 16px;
10725
+ flex-shrink: 0;
10726
+ }
10727
+
10728
+ .sui-tree-icon {
10729
+ width: 16px;
10730
+ height: 16px;
10731
+ display: flex;
10732
+ align-items: center;
10733
+ justify-content: center;
10734
+ flex-shrink: 0;
10735
+ }
10736
+
10737
+ .sui-tree-icon svg {
10738
+ width: 16px;
10739
+ height: 16px;
10740
+ stroke: var(--sui-text-muted);
10741
+ fill: none;
10742
+ stroke-width: 2;
10743
+ stroke-linecap: round;
10744
+ stroke-linejoin: round;
10745
+ }
10746
+
10747
+ .sui-tree-item.expanded > .sui-tree-label .sui-tree-icon svg {
10748
+ stroke: var(--sui-primary);
10749
+ }
10750
+
10751
+ .sui-tree-text {
10752
+ flex: 1;
10753
+ line-height: 1.4;
10754
+ }
10755
+
10756
+ .sui-tree-children {
10757
+ display: none;
10758
+ padding-left: 22px;
10759
+ }
10760
+
10761
+ .sui-tree-item.expanded > .sui-tree-children {
10762
+ display: flex;
10763
+ flex-direction: column;
10764
+ }
10765
+
10766
+ /* With guide lines */
10767
+ .sui-tree-lines .sui-tree-children {
10768
+ margin-left: 7px;
10769
+ padding-left: 15px;
10770
+ border-left: 1px solid var(--sui-bg-dark);
10771
+ }
10772
+
10773
+ /* With checkboxes */
10774
+ .sui-tree-label .sui-checkbox {
10775
+ margin: 0;
10776
+ font-size: inherit;
10777
+ }
10778
+
10779
+ /* Sizes */
10780
+ .sui-tree-sm .sui-tree-label {
10781
+ padding: 3px 6px;
10782
+ font-size: 13px;
10783
+ gap: 4px;
10784
+ }
10785
+
10786
+ .sui-tree-sm .sui-tree-toggle,
10787
+ .sui-tree-sm .sui-tree-icon {
10788
+ width: 14px;
10789
+ height: 14px;
10790
+ }
10791
+
10792
+ .sui-tree-sm .sui-tree-toggle svg,
10793
+ .sui-tree-sm .sui-tree-icon svg {
10794
+ width: 12px;
10795
+ height: 12px;
10796
+ }
10797
+
10798
+ .sui-tree-sm .sui-tree-children {
10799
+ padding-left: 18px;
10800
+ }
10801
+
10802
+ .sui-tree-lg .sui-tree-label {
10803
+ padding: 7px 10px;
10804
+ font-size: 15px;
10805
+ gap: 8px;
10806
+ }
10807
+
10808
+ .sui-tree-lg .sui-tree-toggle,
10809
+ .sui-tree-lg .sui-tree-icon {
10810
+ width: 18px;
10811
+ height: 18px;
10812
+ }
10813
+
10814
+ .sui-tree-lg .sui-tree-toggle svg,
10815
+ .sui-tree-lg .sui-tree-icon svg {
10816
+ width: 16px;
10817
+ height: 16px;
10818
+ }
10819
+
10820
+ .sui-tree-lg .sui-tree-children {
10821
+ padding-left: 26px;
10822
+ }
10823
+
10824
+ /* Inset container */
10825
+ /* Raised container */
10826
+ .sui-tree-raised {
10827
+ background: var(--sui-bg);
10828
+ box-shadow: var(--sui-shadow-raised-sm);
10829
+ border-radius: var(--sui-radius);
10830
+ padding: 10px;
10831
+ }
10832
+
10833
+ /* Inset container */
10834
+ .sui-tree-inset {
10835
+ background: var(--sui-bg);
10836
+ box-shadow: var(--sui-shadow-inset-sm);
10837
+ border-radius: var(--sui-radius);
10838
+ padding: 10px;
10839
+ }
10840
+
10841
+ /* =========================================
10842
+ Speed Dial / FAB
10843
+ ========================================= */
10844
+ .sui-speed-dial {
10845
+ position: fixed;
10846
+ z-index: 900;
10847
+ display: flex;
10848
+ flex-direction: column-reverse;
10849
+ align-items: center;
10850
+ gap: 12px;
10851
+ }
10852
+
10853
+ /* Relative mode for demos */
10854
+ .sui-speed-dial-relative {
10855
+ position: relative;
10856
+ }
10857
+
10858
+ /* Positions */
10859
+ .sui-speed-dial-br { bottom: 24px; right: 24px; }
10860
+ .sui-speed-dial-bl { bottom: 24px; left: 24px; }
10861
+ .sui-speed-dial-tr { top: 24px; right: 24px; }
10862
+ .sui-speed-dial-tl { top: 24px; left: 24px; }
10863
+
10864
+ /* Trigger button */
10865
+ .sui-speed-dial-trigger {
10866
+ width: 52px;
10867
+ height: 52px;
10868
+ border-radius: 50%;
10869
+ border: none;
10870
+ background: var(--sui-primary);
10871
+ color: #fff;
10872
+ display: flex;
10873
+ align-items: center;
10874
+ justify-content: center;
10875
+ cursor: pointer;
10876
+ box-shadow: 0 4px 14px rgba(91, 84, 224, 0.4);
10877
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease;
10878
+ padding: 0;
10879
+ font: inherit;
10880
+ outline: none;
10881
+ z-index: 1;
10882
+ }
10883
+
10884
+ .sui-speed-dial-trigger svg {
10885
+ width: 24px;
10886
+ height: 24px;
10887
+ stroke: currentColor;
10888
+ fill: none;
10889
+ stroke-width: 2;
10890
+ stroke-linecap: round;
10891
+ stroke-linejoin: round;
10892
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
10893
+ }
10894
+
10895
+ .sui-speed-dial-trigger:hover {
10896
+ box-shadow: 0 6px 20px rgba(91, 84, 224, 0.5);
10897
+ transform: scale(1.05);
10898
+ }
10899
+
10900
+ .sui-speed-dial.open .sui-speed-dial-trigger svg {
10901
+ transform: rotate(45deg);
10902
+ }
10903
+
10904
+ /* Actions container */
10905
+ .sui-speed-dial-actions {
10906
+ display: flex;
10907
+ flex-direction: column-reverse;
10908
+ align-items: center;
10909
+ gap: 10px;
10910
+ opacity: 0;
10911
+ transform: translateY(10px) scale(0.8);
10912
+ pointer-events: none;
10913
+ transition: opacity 0.25s ease, transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
10914
+ }
10915
+
10916
+ .sui-speed-dial.open .sui-speed-dial-actions {
10917
+ opacity: 1;
10918
+ transform: translateY(0) scale(1);
10919
+ pointer-events: auto;
10920
+ }
10921
+
10922
+ /* Individual action */
10923
+ .sui-speed-dial-action {
10924
+ width: 40px;
10925
+ height: 40px;
10926
+ border-radius: 50%;
10927
+ border: none;
10928
+ background: var(--sui-bg);
10929
+ box-shadow: var(--sui-shadow-raised-sm);
10930
+ color: var(--sui-text);
10931
+ display: flex;
10932
+ align-items: center;
10933
+ justify-content: center;
10934
+ cursor: pointer;
10935
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
10936
+ padding: 0;
10937
+ font: inherit;
10938
+ outline: none;
10939
+ position: relative;
10940
+ }
10941
+
10942
+ .sui-speed-dial-action svg {
10943
+ width: 18px;
10944
+ height: 18px;
10945
+ stroke: currentColor;
10946
+ fill: none;
10947
+ stroke-width: 2;
10948
+ stroke-linecap: round;
10949
+ stroke-linejoin: round;
10950
+ }
10951
+
10952
+ .sui-speed-dial-action:hover {
10953
+ transform: scale(1.1);
10954
+ box-shadow: var(--sui-shadow-raised);
10955
+ }
10956
+
10957
+ /* Staggered animation */
10958
+ .sui-speed-dial.open .sui-speed-dial-action:nth-child(1) { transition-delay: 0.03s; }
10959
+ .sui-speed-dial.open .sui-speed-dial-action:nth-child(2) { transition-delay: 0.06s; }
10960
+ .sui-speed-dial.open .sui-speed-dial-action:nth-child(3) { transition-delay: 0.09s; }
10961
+ .sui-speed-dial.open .sui-speed-dial-action:nth-child(4) { transition-delay: 0.12s; }
10962
+ .sui-speed-dial.open .sui-speed-dial-action:nth-child(5) { transition-delay: 0.15s; }
10963
+
10964
+ /* Labels */
10965
+ .sui-speed-dial-action[data-label]::before {
10966
+ content: attr(data-label);
10967
+ position: absolute;
10968
+ right: calc(100% + 10px);
10969
+ top: 50%;
10970
+ transform: translateY(-50%) scale(0.8);
10971
+ background: var(--sui-text);
10972
+ color: var(--sui-bg);
10973
+ font-size: 12px;
10974
+ font-weight: 600;
10975
+ padding: 4px 10px;
10976
+ border-radius: var(--sui-radius-sm);
10977
+ white-space: nowrap;
10978
+ opacity: 0;
10979
+ pointer-events: none;
10980
+ transition: opacity 0.15s ease, transform 0.15s ease;
10981
+ }
10982
+
10983
+ .sui-speed-dial-action[data-label]:hover::before {
10984
+ opacity: 1;
10985
+ transform: translateY(-50%) scale(1);
10986
+ }
10987
+
10988
+ /* Left-side labels (for right-positioned dials) */
10989
+ .sui-speed-dial-bl .sui-speed-dial-action[data-label]::before,
10990
+ .sui-speed-dial-tl .sui-speed-dial-action[data-label]::before {
10991
+ right: auto;
10992
+ left: calc(100% + 10px);
10993
+ }
10994
+
10995
+ /* Direction: down */
10996
+ .sui-speed-dial-down {
10997
+ flex-direction: column;
10998
+ }
10999
+
11000
+ .sui-speed-dial-down .sui-speed-dial-actions {
11001
+ flex-direction: column;
11002
+ transform: translateY(-10px) scale(0.8);
11003
+ }
11004
+
11005
+ .sui-speed-dial-down.open .sui-speed-dial-actions {
11006
+ transform: translateY(0) scale(1);
11007
+ }
11008
+
11009
+ /* Direction: left */
11010
+ .sui-speed-dial-left {
11011
+ flex-direction: row-reverse;
11012
+ }
11013
+
11014
+ .sui-speed-dial-left .sui-speed-dial-actions {
11015
+ flex-direction: row-reverse;
11016
+ transform: translateX(-10px) scale(0.8);
11017
+ }
11018
+
11019
+ .sui-speed-dial-left.open .sui-speed-dial-actions {
11020
+ transform: translateX(0) scale(1);
11021
+ }
11022
+
11023
+ .sui-speed-dial-left .sui-speed-dial-action[data-label]::before {
11024
+ right: auto;
11025
+ left: auto;
11026
+ top: auto;
11027
+ bottom: calc(100% + 10px);
11028
+ left: 50%;
11029
+ transform: translateX(-50%) scale(0.8);
11030
+ }
11031
+
11032
+ .sui-speed-dial-left .sui-speed-dial-action[data-label]:hover::before {
11033
+ transform: translateX(-50%) scale(1);
11034
+ }
11035
+
11036
+ /* Direction: right */
11037
+ .sui-speed-dial-right {
11038
+ flex-direction: row;
11039
+ }
11040
+
11041
+ .sui-speed-dial-right .sui-speed-dial-actions {
11042
+ flex-direction: row;
11043
+ transform: translateX(10px) scale(0.8);
11044
+ }
11045
+
11046
+ .sui-speed-dial-right.open .sui-speed-dial-actions {
11047
+ transform: translateX(0) scale(1);
11048
+ }
11049
+
11050
+ .sui-speed-dial-right .sui-speed-dial-action[data-label]::before {
11051
+ right: auto;
11052
+ left: auto;
11053
+ top: auto;
11054
+ bottom: calc(100% + 10px);
11055
+ left: 50%;
11056
+ transform: translateX(-50%) scale(0.8);
11057
+ }
11058
+
11059
+ .sui-speed-dial-right .sui-speed-dial-action[data-label]:hover::before {
11060
+ transform: translateX(-50%) scale(1);
11061
+ }
11062
+
11063
+ /* Color variants */
11064
+ .sui-speed-dial-success .sui-speed-dial-trigger {
11065
+ background: var(--sui-success);
11066
+ box-shadow: 0 4px 14px rgba(45, 206, 137, 0.4);
11067
+ }
11068
+
11069
+ .sui-speed-dial-danger .sui-speed-dial-trigger {
11070
+ background: var(--sui-danger);
11071
+ box-shadow: 0 4px 14px rgba(231, 76, 111, 0.4);
11072
+ }
11073
+
11074
+ /* Sizes */
11075
+ .sui-speed-dial-sm .sui-speed-dial-trigger {
11076
+ width: 42px;
11077
+ height: 42px;
11078
+ }
11079
+
11080
+ .sui-speed-dial-sm .sui-speed-dial-trigger svg {
11081
+ width: 20px;
11082
+ height: 20px;
11083
+ }
11084
+
11085
+ .sui-speed-dial-sm .sui-speed-dial-action {
11086
+ width: 34px;
11087
+ height: 34px;
11088
+ }
11089
+
11090
+ .sui-speed-dial-sm .sui-speed-dial-action svg {
11091
+ width: 15px;
11092
+ height: 15px;
11093
+ }
11094
+
11095
+ .sui-speed-dial-lg .sui-speed-dial-trigger {
11096
+ width: 62px;
11097
+ height: 62px;
11098
+ }
11099
+
11100
+ .sui-speed-dial-lg .sui-speed-dial-trigger svg {
11101
+ width: 28px;
11102
+ height: 28px;
11103
+ }
11104
+
11105
+ .sui-speed-dial-lg .sui-speed-dial-action {
11106
+ width: 48px;
11107
+ height: 48px;
11108
+ }
11109
+
11110
+ .sui-speed-dial-lg .sui-speed-dial-action svg {
11111
+ width: 22px;
11112
+ height: 22px;
11113
+ }
11114
+
11115
+ /* =========================================
11116
+ Image Lightbox
11117
+ ========================================= */
11118
+
11119
+ /* Thumbnail trigger */
11120
+ .sui-lightbox-thumb {
11121
+ cursor: pointer;
11122
+ border-radius: var(--sui-radius-sm);
11123
+ overflow: hidden;
11124
+ box-shadow: var(--sui-shadow-raised-sm);
11125
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
11126
+ display: inline-block;
11127
+ }
11128
+
11129
+ .sui-lightbox-thumb:hover {
11130
+ transform: translateY(-2px);
11131
+ box-shadow: var(--sui-shadow-raised);
11132
+ }
11133
+
11134
+ .sui-lightbox-thumb img {
11135
+ display: block;
11136
+ width: 100%;
11137
+ height: 100%;
11138
+ object-fit: cover;
11139
+ }
11140
+
11141
+ /* Grid layout */
11142
+ .sui-lightbox-grid {
11143
+ display: grid;
11144
+ grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
11145
+ gap: 12px;
11146
+ }
11147
+
11148
+ .sui-lightbox-grid .sui-lightbox-thumb {
11149
+ aspect-ratio: 4/3;
11150
+ }
11151
+
11152
+ /* Filmstrip — horizontal scroll */
11153
+ .sui-lightbox-filmstrip {
11154
+ display: flex;
11155
+ gap: 10px;
11156
+ overflow-x: auto;
11157
+ padding-bottom: 8px;
11158
+ }
11159
+
11160
+ .sui-lightbox-filmstrip .sui-lightbox-thumb {
11161
+ flex-shrink: 0;
11162
+ width: 160px;
11163
+ height: 110px;
11164
+ }
11165
+
11166
+ /* Vertical gallery — main image + side thumbnails */
11167
+ .sui-lightbox-vertical {
11168
+ display: flex;
11169
+ gap: 12px;
11170
+ }
11171
+
11172
+ .sui-lightbox-vertical-main {
11173
+ flex: 1;
11174
+ border-radius: var(--sui-radius-sm);
11175
+ overflow: hidden;
11176
+ box-shadow: var(--sui-shadow-raised-sm);
11177
+ cursor: pointer;
11178
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
11179
+ }
11180
+
11181
+ .sui-lightbox-vertical-main:hover {
11182
+ transform: translateY(-2px);
11183
+ box-shadow: var(--sui-shadow-raised);
11184
+ }
11185
+
11186
+ .sui-lightbox-vertical-main img {
11187
+ width: 100%;
11188
+ height: 100%;
11189
+ object-fit: cover;
11190
+ display: block;
11191
+ }
11192
+
11193
+ .sui-lightbox-vertical-strip {
11194
+ display: flex;
11195
+ flex-direction: column;
11196
+ gap: 8px;
11197
+ width: 82px;
11198
+ flex-shrink: 0;
11199
+ overflow-y: auto;
11200
+ overflow-x: hidden;
11201
+ }
11202
+
11203
+ .sui-lightbox-vertical-strip .sui-lightbox-thumb {
11204
+ width: 72px;
11205
+ height: 54px;
11206
+ flex-shrink: 0;
11207
+ opacity: 0.6;
11208
+ transition: opacity 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
11209
+ }
11210
+
11211
+ .sui-lightbox-vertical-strip .sui-lightbox-thumb:hover,
11212
+ .sui-lightbox-vertical-strip .sui-lightbox-thumb.active {
11213
+ opacity: 1;
11214
+ }
11215
+
11216
+ /* Inset container */
11217
+ .sui-lightbox-inset {
11218
+ background: var(--sui-bg);
11219
+ box-shadow: var(--sui-shadow-inset-sm);
11220
+ border-radius: var(--sui-radius);
11221
+ padding: 12px;
11222
+ }
11223
+
11224
+ /* Overlay */
11225
+ .sui-lightbox-overlay {
11226
+ position: fixed;
11227
+ inset: 0;
11228
+ z-index: 1100;
11229
+ background: rgba(0, 0, 0, 0.85);
11230
+ backdrop-filter: blur(8px);
11231
+ -webkit-backdrop-filter: blur(8px);
11232
+ display: flex;
11233
+ align-items: center;
11234
+ justify-content: center;
11235
+ flex-direction: column;
11236
+ opacity: 0;
11237
+ visibility: hidden;
11238
+ transition: opacity 0.3s ease, visibility 0.3s ease;
11239
+ }
11240
+
11241
+ .sui-lightbox-overlay.open {
11242
+ opacity: 1;
11243
+ visibility: visible;
11244
+ }
11245
+
11246
+ /* Main image */
11247
+ .sui-lightbox-overlay img {
11248
+ max-width: 90vw;
11249
+ max-height: 80vh;
11250
+ object-fit: contain;
11251
+ border-radius: var(--sui-radius);
11252
+ box-shadow: 0 8px 40px rgba(0, 0, 0, 0.4);
11253
+ transform: scale(0.95);
11254
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
11255
+ }
11256
+
11257
+ .sui-lightbox-overlay.open img {
11258
+ transform: scale(1);
11259
+ }
11260
+
11261
+ /* Zoomed */
11262
+ .sui-lightbox-overlay.zoomed img {
11263
+ max-width: none;
11264
+ max-height: none;
11265
+ cursor: zoom-out;
11266
+ transform: scale(1.5);
11267
+ }
11268
+
11269
+ .sui-lightbox-overlay:not(.zoomed) img {
11270
+ cursor: zoom-in;
11271
+ }
11272
+
11273
+ /* Close button */
11274
+ .sui-lightbox-close {
11275
+ position: absolute;
11276
+ top: 16px;
11277
+ right: 16px;
11278
+ width: 40px;
11279
+ height: 40px;
11280
+ border: none;
11281
+ background: rgba(255, 255, 255, 0.1);
11282
+ color: #fff;
11283
+ border-radius: 50%;
11284
+ display: flex;
11285
+ align-items: center;
11286
+ justify-content: center;
11287
+ cursor: pointer;
11288
+ font-size: 20px;
11289
+ transition: background 0.2s ease;
11290
+ padding: 0;
11291
+ z-index: 1;
11292
+ }
11293
+
11294
+ .sui-lightbox-close:hover {
11295
+ background: rgba(255, 255, 255, 0.2);
11296
+ }
11297
+
11298
+ /* Navigation arrows */
11299
+ .sui-lightbox-prev,
11300
+ .sui-lightbox-next {
11301
+ position: absolute;
11302
+ top: 50%;
11303
+ transform: translateY(-50%);
11304
+ width: 44px;
11305
+ height: 44px;
11306
+ border: none;
11307
+ background: rgba(255, 255, 255, 0.1);
11308
+ color: #fff;
11309
+ border-radius: 50%;
11310
+ display: flex;
11311
+ align-items: center;
11312
+ justify-content: center;
11313
+ cursor: pointer;
11314
+ transition: background 0.2s ease;
11315
+ padding: 0;
11316
+ }
11317
+
11318
+ .sui-lightbox-prev { left: 16px; }
11319
+ .sui-lightbox-next { right: 16px; }
11320
+
11321
+ .sui-lightbox-prev:hover,
11322
+ .sui-lightbox-next:hover {
11323
+ background: rgba(255, 255, 255, 0.2);
11324
+ }
11325
+
11326
+ .sui-lightbox-prev svg,
11327
+ .sui-lightbox-next svg {
11328
+ width: 20px;
11329
+ height: 20px;
11330
+ stroke: currentColor;
11331
+ fill: none;
11332
+ stroke-width: 2;
11333
+ stroke-linecap: round;
11334
+ stroke-linejoin: round;
11335
+ }
11336
+
11337
+ /* Caption */
11338
+ .sui-lightbox-caption {
11339
+ color: rgba(255, 255, 255, 0.8);
11340
+ font-size: 14px;
11341
+ text-align: center;
11342
+ margin-top: 12px;
11343
+ max-width: 600px;
11344
+ }
11345
+
11346
+ /* Counter */
11347
+ .sui-lightbox-counter {
11348
+ position: absolute;
11349
+ top: 20px;
11350
+ left: 20px;
11351
+ color: rgba(255, 255, 255, 0.6);
11352
+ font-size: 13px;
11353
+ font-weight: 600;
11354
+ }
11355
+
11356
+ /* =========================================
11357
+ Loading Overlay
11358
+ ========================================= */
11359
+ .sui-loading-overlay {
11360
+ position: absolute;
11361
+ inset: 0;
11362
+ display: flex;
11363
+ flex-direction: column;
11364
+ align-items: center;
11365
+ justify-content: center;
11366
+ gap: 12px;
11367
+ background: rgba(var(--sui-bg-rgb, 230, 232, 240), 0.8);
11368
+ border-radius: inherit;
11369
+ z-index: 10;
11370
+ opacity: 0;
11371
+ visibility: hidden;
11372
+ transition: opacity 0.25s ease, visibility 0.25s ease;
11373
+ }
11374
+
11375
+ .sui-loading-overlay.active {
11376
+ opacity: 1;
11377
+ visibility: visible;
11378
+ }
11379
+
11380
+ .sui-loading-overlay-text {
11381
+ font-size: 13px;
11382
+ font-weight: 600;
11383
+ color: var(--sui-text-muted);
11384
+ }
11385
+
11386
+ /* Blur variant */
11387
+ .sui-loading-blur {
11388
+ backdrop-filter: blur(4px);
11389
+ -webkit-backdrop-filter: blur(4px);
11390
+ background: rgba(var(--sui-bg-rgb, 230, 232, 240), 0.5);
11391
+ }
11392
+
11393
+ /* Fullscreen */
11394
+ .sui-loading-fullscreen {
11395
+ position: fixed;
11396
+ inset: 0;
11397
+ border-radius: 0;
11398
+ z-index: 1200;
11399
+ }
11400
+
11401
+ /* Dark mode support */
11402
+ [data-theme="dark"] .sui-loading-overlay {
11403
+ background: rgba(27, 29, 42, 0.8);
11404
+ }
11405
+
11406
+ [data-theme="dark"] .sui-loading-blur {
11407
+ background: rgba(27, 29, 42, 0.5);
11408
+ }
11409
+
11410
+ /* =========================================
11411
+ Diff — Image Compare Slider
11412
+ ========================================= */
11413
+ .sui-diff {
11414
+ position: relative;
11415
+ overflow: hidden;
11416
+ border-radius: var(--sui-radius);
11417
+ box-shadow: var(--sui-shadow-raised-sm);
11418
+ cursor: ew-resize;
11419
+ user-select: none;
11420
+ }
11421
+
11422
+ .sui-diff .sui-diff-after {
11423
+ display: block;
11424
+ width: 100%;
11425
+ height: auto;
11426
+ }
11427
+
11428
+ .sui-diff .sui-diff-before {
11429
+ position: absolute;
11430
+ top: 0;
11431
+ left: 0;
11432
+ width: 100%;
11433
+ height: 100%;
11434
+ object-fit: cover;
11435
+ object-position: left;
11436
+ z-index: 1;
11437
+ clip-path: inset(0 50% 0 0);
11438
+ }
11439
+
11440
+ .sui-diff-handle {
11441
+ position: absolute;
11442
+ top: 0;
11443
+ bottom: 0;
11444
+ left: 50%;
11445
+ width: 3px;
11446
+ background: #fff;
11447
+ z-index: 2;
11448
+ transform: translateX(-50%);
11449
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.3);
11450
+ }
11451
+
11452
+ .sui-diff-handle::before {
11453
+ content: "";
11454
+ position: absolute;
11455
+ top: 50%;
11456
+ left: 50%;
11457
+ transform: translate(-50%, -50%);
11458
+ width: 32px;
11459
+ height: 32px;
11460
+ border-radius: 50%;
11461
+ background: #fff;
11462
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
11463
+ }
11464
+
11465
+ .sui-diff-handle-arrows {
11466
+ position: absolute;
11467
+ top: 50%;
11468
+ left: 50%;
11469
+ transform: translate(-50%, -50%);
11470
+ display: flex;
11471
+ align-items: center;
11472
+ gap: 4px;
11473
+ z-index: 1;
11474
+ }
11475
+
11476
+ .sui-diff-handle-arrows svg {
11477
+ width: 8px;
11478
+ height: 12px;
11479
+ fill: var(--sui-text-muted);
11480
+ }
11481
+
11482
+ /* Labels */
11483
+ .sui-diff-label-before,
11484
+ .sui-diff-label-after {
11485
+ position: absolute;
11486
+ bottom: 12px;
11487
+ font-size: 12px;
11488
+ font-weight: 600;
11489
+ color: #fff;
11490
+ background: rgba(0, 0, 0, 0.5);
11491
+ padding: 4px 10px;
11492
+ border-radius: var(--sui-radius-sm);
11493
+ z-index: 3;
11494
+ }
11495
+
11496
+ .sui-diff-label-before {
11497
+ left: 12px;
11498
+ }
11499
+
11500
+ .sui-diff-label-after {
11501
+ right: 12px;
11502
+ }
11503
+
11504
+ /* Vertical mode */
11505
+ .sui-diff-vertical {
11506
+ cursor: ns-resize;
11507
+ }
11508
+
11509
+ .sui-diff-vertical .sui-diff-before {
11510
+ width: 100%;
11511
+ height: 100%;
11512
+ object-fit: cover;
11513
+ object-position: top;
11514
+ clip-path: inset(0 0 50% 0);
11515
+ }
11516
+
11517
+ .sui-diff-vertical .sui-diff-handle {
11518
+ top: 50%;
11519
+ left: 0;
11520
+ right: 0;
11521
+ bottom: auto;
11522
+ width: 100%;
11523
+ height: 3px;
11524
+ transform: translateY(-50%);
11525
+ }
11526
+
11527
+ .sui-diff-vertical .sui-diff-handle-arrows {
11528
+ flex-direction: column;
11529
+ gap: 4px;
11530
+ }
11531
+
11532
+ .sui-diff-vertical .sui-diff-handle-arrows svg {
11533
+ width: 12px;
11534
+ height: 8px;
11535
+ }
11536
+
11537
+ /* =========================================
11538
+ Stack
11539
+ ========================================= */
11540
+ .sui-stack {
11541
+ position: relative;
11542
+ display: inline-flex;
11543
+ }
11544
+
11545
+ .sui-stack > * {
11546
+ transition: transform 0.3s ease, box-shadow 0.3s ease, opacity 0.3s ease;
11547
+ }
11548
+
11549
+ .sui-stack {
11550
+ padding-bottom: 24px;
11551
+ padding-right: 24px;
11552
+ }
11553
+
11554
+ .sui-stack > *:not(:first-child) {
11555
+ position: absolute;
11556
+ top: 0;
11557
+ left: 0;
11558
+ }
11559
+
11560
+ /* Default — offset down-right */
11561
+ .sui-stack > *:nth-child(2) { transform: translate(12px, 12px); z-index: -1; opacity: 0.75; }
11562
+ .sui-stack > *:nth-child(3) { transform: translate(24px, 24px); z-index: -2; opacity: 0.5; }
11563
+ .sui-stack > *:nth-child(4) { transform: translate(36px, 36px); z-index: -3; opacity: 0.3; }
11564
+
11565
+ /* Fanned — wider rotation for visibility */
11566
+ .sui-stack-fanned > *:nth-child(1) { transform: rotate(-5deg); z-index: 3; }
11567
+ .sui-stack-fanned > *:nth-child(2) { transform: rotate(0deg) translate(10px, 4px); z-index: 2; opacity: 0.8; }
11568
+ .sui-stack-fanned > *:nth-child(3) { transform: rotate(5deg) translate(20px, 8px); z-index: 1; opacity: 0.6; }
11569
+ .sui-stack-fanned > *:nth-child(4) { transform: rotate(10deg) translate(30px, 12px); z-index: 0; opacity: 0.4; }
11570
+
11571
+ /* Offset up-left */
11572
+ .sui-stack-up > *:nth-child(2) { transform: translate(-8px, -8px); }
11573
+ .sui-stack-up > *:nth-child(3) { transform: translate(-16px, -16px); }
11574
+ .sui-stack-up > *:nth-child(4) { transform: translate(-24px, -24px); }
11575
+
11576
+ /* Offset right only */
11577
+ .sui-stack-right > *:nth-child(2) { transform: translateX(8px); }
11578
+ .sui-stack-right > *:nth-child(3) { transform: translateX(16px); }
11579
+ .sui-stack-right > *:nth-child(4) { transform: translateX(24px); }
11580
+
11581
+ /* Spread on hover — controlled by --sui-stack-gap and --sui-stack-spread */
11582
+ .sui-stack-hover {
11583
+ --sui-stack-gap: 180px;
11584
+ --sui-stack-spread: 0.6;
11585
+ }
11586
+
11587
+ .sui-stack-spread-xs { --sui-stack-spread: 0.15; }
11588
+ .sui-stack-spread-sm { --sui-stack-spread: 0.3; }
11589
+ .sui-stack-spread-md { --sui-stack-spread: 0.6; }
11590
+ .sui-stack-spread-lg { --sui-stack-spread: 0.85; }
11591
+ .sui-stack-spread-full { --sui-stack-spread: 1; }
11592
+
11593
+ .sui-stack-hover:hover > *:nth-child(1) { transform: translate(calc(var(--sui-stack-gap) * var(--sui-stack-spread) * -1), 0); z-index: 3; opacity: 1; }
11594
+ .sui-stack-hover:hover > *:nth-child(2) { transform: translate(0, 0); z-index: 2; opacity: 1; }
11595
+ .sui-stack-hover:hover > *:nth-child(3) { transform: translate(calc(var(--sui-stack-gap) * var(--sui-stack-spread)), 0); z-index: 1; opacity: 1; }
11596
+ .sui-stack-hover:hover > *:nth-child(4) { transform: translate(calc(var(--sui-stack-gap) * var(--sui-stack-spread) * 2), 0); z-index: 0; opacity: 1; }
11597
+
11598
+ .sui-stack-hover.sui-stack-fanned:hover > *:nth-child(1) { transform: rotate(-6deg) translate(calc(var(--sui-stack-gap) * var(--sui-stack-spread) * -0.9), calc(var(--sui-stack-spread) * -10px)); opacity: 1; }
11599
+ .sui-stack-hover.sui-stack-fanned:hover > *:nth-child(2) { transform: rotate(0deg) translate(0, 0); opacity: 1; }
11600
+ .sui-stack-hover.sui-stack-fanned:hover > *:nth-child(3) { transform: rotate(6deg) translate(calc(var(--sui-stack-gap) * var(--sui-stack-spread) * 0.9), calc(var(--sui-stack-spread) * -10px)); opacity: 1; }
11601
+ .sui-stack-hover.sui-stack-fanned:hover > *:nth-child(4) { transform: rotate(10deg) translate(calc(var(--sui-stack-gap) * var(--sui-stack-spread) * 1.8), calc(var(--sui-stack-spread) * -20px)); opacity: 1; }
11602
+