klun-ui 0.4.0 → 0.5.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/styles.css CHANGED
@@ -850,6 +850,2637 @@
850
850
  --klun-radius-xl: 8px;
851
851
  }
852
852
 
853
+ /* src/styles/tokens/kk-theme.css */
854
+ :root {
855
+ --kk-primary: #409eff;
856
+ --kk-primary-dark: #337ecc;
857
+ --kk-primary-light: #79bbff;
858
+ --kk-primary-soft: #ecf5ff;
859
+ --kk-primary-plain-border: #a0cfff;
860
+ --kk-success: #67c23a;
861
+ --kk-warning: #e6a23c;
862
+ --kk-warning-soft: #fdf6ec;
863
+ --kk-warning-border: #f5dab1;
864
+ --kk-danger: #f56c6c;
865
+ --kk-danger-soft: #fef0f0;
866
+ --kk-danger-border: #fab6b6;
867
+ --kk-text-strong: #303133;
868
+ --kk-text: #606266;
869
+ --kk-text-weak: #909399;
870
+ --kk-text-placeholder: #a8abb2;
871
+ --kk-surface: #fff;
872
+ --kk-th-bg: #fff;
873
+ --kk-page-bg: #f6f8f9;
874
+ --kk-hover: #f5f7fa;
875
+ --kk-active: #ecf5ff;
876
+ --kk-border: #dcdfe6;
877
+ --kk-border-weak: #e4e7ed;
878
+ --kk-line: #ebeef5;
879
+ --kk-line-strong: #e6e6e6;
880
+ --kk-move-bg: #f4f4f5;
881
+ --kk-move-border: #e9e9eb;
882
+ --kk-avatar-bg: #c0c4cc;
883
+ --kk-title: #3c4a54;
884
+ --kk-scrollbar: rgba(144, 147, 153, 0.3);
885
+ --kk-scrollbar-hover: rgba(144, 147, 153, 0.5);
886
+ --kk-radius: 0;
887
+ --kk-control-h: 32px;
888
+ --kk-font: 14px;
889
+ --kk-font-sm: 12px;
890
+ }
891
+ :root[data-theme=dark],
892
+ .dark,
893
+ [data-theme=dark] {
894
+ --kk-text-strong: #d0d0d0;
895
+ --kk-text: #cfd3da;
896
+ --kk-text-weak: #a3a6ad;
897
+ --kk-text-placeholder: #8d9095;
898
+ --kk-surface: #1d1e1f;
899
+ --kk-th-bg: #141414;
900
+ --kk-page-bg: #141414;
901
+ --kk-hover: #262727;
902
+ --kk-active: #0c1f32;
903
+ --kk-border: #4c4d4f;
904
+ --kk-border-weak: #414243;
905
+ --kk-line: #363637;
906
+ --kk-line-strong: #414243;
907
+ --kk-danger-soft: #2b1d1d;
908
+ --kk-danger-border: #854040;
909
+ --kk-warning-soft: #292218;
910
+ --kk-warning-border: #5c4626;
911
+ --kk-primary-soft: #0c1f32;
912
+ --kk-primary-plain-border: #204f80;
913
+ --kk-move-bg: #262727;
914
+ --kk-move-border: #414243;
915
+ --kk-avatar-bg: #6c6e72;
916
+ --kk-title: #d0d0d0;
917
+ }
918
+ [data-mode=kk] {
919
+ --klun-primary-base: var(--kk-primary);
920
+ --klun-primary-dark: var(--kk-primary-dark);
921
+ --klun-primary-darkest: var(--kk-primary-dark);
922
+ --klun-primary-light: var(--kk-primary-light);
923
+ --klun-primary-lighter: var(--kk-primary-soft);
924
+ --klun-primary-lighter-2: var(--kk-primary-soft);
925
+ --klun-bg-white-0: var(--kk-surface);
926
+ --klun-bg-weak-25: var(--kk-hover);
927
+ --klun-bg-weak-50: var(--kk-hover);
928
+ --klun-bg-soft-200: var(--kk-line);
929
+ --klun-stroke-soft-200: var(--kk-border);
930
+ --klun-stroke-sub-300: var(--kk-text-placeholder);
931
+ --klun-stroke-strong-950: var(--kk-text-strong);
932
+ --klun-text-strong-950: var(--kk-text-strong);
933
+ --klun-text-main-900: var(--kk-text-strong);
934
+ --klun-text-sub-600: var(--kk-text);
935
+ --klun-text-soft-400: var(--kk-text-weak);
936
+ --klun-text-disabled-300: var(--kk-text-placeholder);
937
+ --klun-icon-strong-950: var(--kk-text-strong);
938
+ --klun-icon-sub-600: var(--kk-text);
939
+ --klun-icon-soft-400: var(--kk-text-weak);
940
+ --klun-state-error-base: var(--kk-danger);
941
+ --klun-state-error-light: var(--kk-danger-soft);
942
+ --klun-state-error-lighter: var(--kk-danger-soft);
943
+ --klun-state-success-base: var(--kk-success);
944
+ --klun-state-warning-base: var(--kk-warning);
945
+ --klun-state-information-base: var(--kk-primary);
946
+ --klun-radius-xs: 0;
947
+ --klun-radius-sm: 0;
948
+ --klun-radius-md: 0;
949
+ --klun-radius-lg: 0;
950
+ --klun-radius-xl: 0;
951
+ --klun-radius-2xl: 0;
952
+ --klun-radius-3xl: 0;
953
+ --klun-radius-4xl: 0;
954
+ --klun-radius-capsule: 0;
955
+ --klun-control-h-md: 32px;
956
+ }
957
+ [data-mode=kk] .kk-page {
958
+ display: flex;
959
+ height: 100%;
960
+ font-size: var(--kk-font);
961
+ color: var(--kk-text);
962
+ background: var(--kk-surface);
963
+ }
964
+ :where([data-mode=kk] .kk-page) :where(button) {
965
+ font: inherit;
966
+ border: 0;
967
+ background: none;
968
+ padding: 0;
969
+ cursor: pointer;
970
+ }
971
+ :where([data-mode=kk] .kk-page) :where(input, select, textarea) {
972
+ font: inherit;
973
+ }
974
+ [data-mode=kk] .kk-aside {
975
+ width: 200px;
976
+ flex-shrink: 0;
977
+ background: var(--kk-surface);
978
+ border-right: 1px solid var(--kk-line-strong);
979
+ display: flex;
980
+ flex-direction: column;
981
+ }
982
+ [data-mode=kk] .kk-aside--wide {
983
+ width: 300px;
984
+ }
985
+ [data-mode=kk] .kk-aside-head {
986
+ flex-shrink: 0;
987
+ box-sizing: border-box;
988
+ padding: 13px 15px;
989
+ }
990
+ [data-mode=kk] .kk-aside-body {
991
+ flex: 1;
992
+ min-height: 0;
993
+ overflow: auto;
994
+ padding-bottom: 8px;
995
+ }
996
+ [data-mode=kk] .kk-aside-foot {
997
+ height: 51px;
998
+ flex-shrink: 0;
999
+ box-sizing: border-box;
1000
+ padding: 0 15px;
1001
+ border-top: 1px solid var(--kk-border-weak);
1002
+ display: flex;
1003
+ align-items: center;
1004
+ }
1005
+ [data-mode=kk] .kk-aside-foot .kk-iconbtn + .kk-iconbtn {
1006
+ margin-left: 12px;
1007
+ }
1008
+ @supports not selector(::-webkit-scrollbar) {
1009
+ [data-mode=kk] * {
1010
+ scrollbar-width: thin;
1011
+ scrollbar-color: var(--kk-scrollbar) transparent;
1012
+ }
1013
+ }
1014
+ [data-mode=kk] ::-webkit-scrollbar {
1015
+ width: 6px;
1016
+ height: 6px;
1017
+ }
1018
+ [data-mode=kk] ::-webkit-scrollbar-track,
1019
+ [data-mode=kk] ::-webkit-scrollbar-corner {
1020
+ background: transparent;
1021
+ }
1022
+ [data-mode=kk] ::-webkit-scrollbar-thumb {
1023
+ background: var(--kk-scrollbar);
1024
+ border-radius: 3px;
1025
+ }
1026
+ [data-mode=kk] ::-webkit-scrollbar-thumb:hover {
1027
+ background: var(--kk-scrollbar-hover);
1028
+ }
1029
+ [data-mode=kk] .kk-input {
1030
+ width: 100%;
1031
+ height: var(--kk-control-h);
1032
+ box-sizing: border-box;
1033
+ padding: 0 11px;
1034
+ border: 1px solid var(--kk-border);
1035
+ border-radius: var(--kk-radius);
1036
+ background: var(--kk-surface);
1037
+ color: var(--kk-text);
1038
+ outline: none;
1039
+ }
1040
+ [data-mode=kk] .kk-input::placeholder {
1041
+ color: var(--kk-text-placeholder);
1042
+ }
1043
+ [data-mode=kk] .kk-input:focus {
1044
+ border-color: var(--kk-primary);
1045
+ }
1046
+ [data-mode=kk] .kk-input[disabled] {
1047
+ background: var(--kk-hover);
1048
+ color: var(--kk-text-weak);
1049
+ cursor: not-allowed;
1050
+ }
1051
+ [data-mode=kk] .kk-textarea {
1052
+ width: 100%;
1053
+ box-sizing: border-box;
1054
+ padding: 7px 11px;
1055
+ border: 1px solid var(--kk-border);
1056
+ border-radius: var(--kk-radius);
1057
+ background: var(--kk-surface);
1058
+ color: var(--kk-text);
1059
+ font-size: var(--kk-font);
1060
+ line-height: 1.5;
1061
+ outline: none;
1062
+ resize: vertical;
1063
+ }
1064
+ [data-mode=kk] .kk-textarea:focus {
1065
+ border-color: var(--kk-primary);
1066
+ }
1067
+ [data-mode=kk] .kk-node {
1068
+ height: 36px;
1069
+ display: flex;
1070
+ align-items: center;
1071
+ padding-right: 10px;
1072
+ cursor: pointer;
1073
+ white-space: nowrap;
1074
+ touch-action: none;
1075
+ }
1076
+ [data-mode=kk] .kk-node:hover {
1077
+ background: var(--kk-hover);
1078
+ }
1079
+ [data-mode=kk] .kk-node.is-active {
1080
+ background: var(--kk-active);
1081
+ }
1082
+ [data-mode=kk] .kk-node.is-dragging {
1083
+ position: relative;
1084
+ z-index: 3;
1085
+ background: var(--kk-surface);
1086
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.14);
1087
+ }
1088
+ [data-mode=kk] .kk-caret {
1089
+ display: inline-flex;
1090
+ align-items: center;
1091
+ justify-content: center;
1092
+ width: 12px;
1093
+ height: 12px;
1094
+ padding: 0 6px;
1095
+ box-sizing: content-box;
1096
+ flex-shrink: 0;
1097
+ color: #c0c4cc;
1098
+ transition: transform 0.2s;
1099
+ }
1100
+ [data-mode=kk] .kk-caret svg {
1101
+ display: block;
1102
+ width: 12px;
1103
+ height: 12px;
1104
+ }
1105
+ [data-mode=kk] .kk-caret.is-open {
1106
+ transform: rotate(90deg);
1107
+ }
1108
+ [data-mode=kk] .kk-caret.is-leaf {
1109
+ visibility: hidden;
1110
+ }
1111
+ [data-mode=kk] .kk-node-label {
1112
+ flex: 1;
1113
+ min-width: 0;
1114
+ overflow: hidden;
1115
+ text-overflow: ellipsis;
1116
+ }
1117
+ [data-mode=kk] .kk-code {
1118
+ font-size: var(--kk-font-sm);
1119
+ color: #999;
1120
+ }
1121
+ [data-mode=kk] .kk-node-do {
1122
+ display: none;
1123
+ margin-left: 10px;
1124
+ }
1125
+ [data-mode=kk] .kk-table .kk-node-do {
1126
+ display: inline-flex;
1127
+ margin-left: 0;
1128
+ gap: 6px;
1129
+ align-items: center;
1130
+ }
1131
+ [data-mode=kk] .kk-node:hover .kk-node-do,
1132
+ [data-mode=kk] .kk-node:focus-within .kk-node-do {
1133
+ display: inline-flex;
1134
+ }
1135
+ [data-mode=kk] .kk-node:hover .kk-code,
1136
+ [data-mode=kk] .kk-node:focus-within .kk-code {
1137
+ display: none;
1138
+ }
1139
+ [data-mode=kk] .kk-iconbtn {
1140
+ height: 24px;
1141
+ min-width: 36px;
1142
+ padding: 5px 11px;
1143
+ box-sizing: border-box;
1144
+ border: 1px solid transparent;
1145
+ border-radius: var(--kk-radius);
1146
+ font-size: var(--kk-font-sm);
1147
+ display: inline-flex;
1148
+ align-items: center;
1149
+ justify-content: center;
1150
+ }
1151
+ [data-mode=kk] .kk-iconbtn svg {
1152
+ width: 12px;
1153
+ height: 12px;
1154
+ }
1155
+ [data-mode=kk] .kk-iconbtn--plain {
1156
+ background: var(--kk-surface);
1157
+ border-color: var(--kk-border);
1158
+ color: var(--kk-text);
1159
+ }
1160
+ [data-mode=kk] .kk-iconbtn--primary {
1161
+ background: var(--kk-primary);
1162
+ border-color: var(--kk-primary);
1163
+ color: #fff;
1164
+ }
1165
+ [data-mode=kk] .kk-iconbtn--danger {
1166
+ background: var(--kk-danger-soft);
1167
+ border-color: var(--kk-danger-border);
1168
+ color: var(--kk-danger);
1169
+ }
1170
+ [data-mode=kk] .kk-iconbtn[disabled] {
1171
+ opacity: 0.55;
1172
+ cursor: not-allowed;
1173
+ }
1174
+ [data-mode=kk] .kk-check {
1175
+ width: 14px;
1176
+ height: 14px;
1177
+ box-sizing: border-box;
1178
+ margin-right: 8px;
1179
+ flex-shrink: 0;
1180
+ border: 1px solid var(--kk-border);
1181
+ border-radius: var(--kk-radius);
1182
+ background: var(--kk-surface);
1183
+ display: inline-flex;
1184
+ align-items: center;
1185
+ justify-content: center;
1186
+ cursor: pointer;
1187
+ }
1188
+ [data-mode=kk] .kk-check.is-on {
1189
+ background: var(--kk-primary);
1190
+ border-color: var(--kk-primary);
1191
+ }
1192
+ [data-mode=kk] .kk-check.is-on::after {
1193
+ content: "";
1194
+ width: 3px;
1195
+ height: 7px;
1196
+ border: solid #fff;
1197
+ border-width: 0 1px 1px 0;
1198
+ transform: rotate(45deg) translate(-1px, -1px);
1199
+ }
1200
+ [data-mode=kk] .kk-check.is-half {
1201
+ background: var(--kk-primary);
1202
+ border-color: var(--kk-primary);
1203
+ }
1204
+ [data-mode=kk] .kk-check.is-half::after {
1205
+ content: "";
1206
+ width: 6px;
1207
+ height: 2px;
1208
+ background: #fff;
1209
+ }
1210
+ [data-mode=kk] .kk-switch {
1211
+ width: 40px;
1212
+ height: 20px;
1213
+ box-sizing: border-box;
1214
+ border: 1px solid rgba(0, 0, 0, 0.25);
1215
+ border-radius: 10px;
1216
+ background: rgba(0, 0, 0, 0.25);
1217
+ display: inline-block;
1218
+ position: relative;
1219
+ vertical-align: middle;
1220
+ cursor: pointer;
1221
+ transition: 0.2s;
1222
+ }
1223
+ [data-mode=kk] .kk-switch.on {
1224
+ background: var(--kk-primary);
1225
+ border-color: var(--kk-primary);
1226
+ }
1227
+ [data-mode=kk] .kk-switch b {
1228
+ position: absolute;
1229
+ top: 1px;
1230
+ left: 1px;
1231
+ width: 16px;
1232
+ height: 16px;
1233
+ border-radius: 50%;
1234
+ background: #fff;
1235
+ transition: 0.2s;
1236
+ }
1237
+ [data-mode=kk] .kk-switch.on b {
1238
+ left: 21px;
1239
+ }
1240
+ [data-mode=kk] .kk-main {
1241
+ flex: 1;
1242
+ min-width: 0;
1243
+ display: flex;
1244
+ flex-direction: column;
1245
+ overflow: auto;
1246
+ background: var(--kk-surface);
1247
+ }
1248
+ [data-mode=kk] .kk-main--flow {
1249
+ display: block;
1250
+ }
1251
+ [data-mode=kk] .kk-toolbar {
1252
+ height: 50px;
1253
+ flex-shrink: 0;
1254
+ display: flex;
1255
+ align-items: center;
1256
+ justify-content: space-between;
1257
+ gap: 12px;
1258
+ padding: 0 15px;
1259
+ border-bottom: 1px solid var(--kk-line);
1260
+ }
1261
+ [data-mode=kk] .kk-tools {
1262
+ display: flex;
1263
+ align-items: center;
1264
+ gap: 10px;
1265
+ }
1266
+ [data-mode=kk] .kk-btn {
1267
+ height: var(--kk-control-h);
1268
+ padding: 8px 15px;
1269
+ box-sizing: border-box;
1270
+ border-radius: var(--kk-radius);
1271
+ display: inline-flex;
1272
+ align-items: center;
1273
+ gap: 6px;
1274
+ font-size: var(--kk-font);
1275
+ flex-shrink: 0;
1276
+ }
1277
+ [data-mode=kk] .kk-btn svg {
1278
+ width: 14px;
1279
+ height: 14px;
1280
+ }
1281
+ [data-mode=kk] .kk-btn--primary {
1282
+ background: var(--kk-primary);
1283
+ border: 1px solid var(--kk-primary);
1284
+ color: #fff;
1285
+ }
1286
+ [data-mode=kk] .kk-btn--plain {
1287
+ background: var(--kk-primary-soft);
1288
+ border: 1px solid var(--kk-primary-plain-border);
1289
+ color: var(--kk-primary);
1290
+ }
1291
+ [data-mode=kk] .kk-btn--danger {
1292
+ background: var(--kk-danger-soft);
1293
+ border: 1px solid var(--kk-danger-border);
1294
+ color: var(--kk-danger);
1295
+ }
1296
+ [data-mode=kk] .kk-btn[disabled] {
1297
+ opacity: 0.5;
1298
+ cursor: not-allowed;
1299
+ }
1300
+ [data-mode=kk] .kk-search {
1301
+ display: flex;
1302
+ align-items: center;
1303
+ gap: 8px;
1304
+ min-width: 0;
1305
+ }
1306
+ [data-mode=kk] .kk-search .kk-input {
1307
+ width: 138px;
1308
+ min-width: 0;
1309
+ }
1310
+ [data-mode=kk] .kk-body {
1311
+ flex: 1;
1312
+ overflow: auto;
1313
+ min-height: 0;
1314
+ }
1315
+ [data-mode=kk] .kk-table {
1316
+ width: 100%;
1317
+ border-collapse: separate;
1318
+ border-spacing: 0;
1319
+ table-layout: fixed;
1320
+ }
1321
+ [data-mode=kk] .kk-table .kk-check {
1322
+ margin-right: 0;
1323
+ }
1324
+ [data-mode=kk] .kk-table th {
1325
+ height: 40px;
1326
+ padding: 0 10px;
1327
+ text-align: left;
1328
+ font-size: var(--kk-font-sm);
1329
+ font-weight: 600;
1330
+ color: var(--kk-text-weak);
1331
+ background: var(--kk-th-bg);
1332
+ border-bottom: 1px solid var(--kk-line);
1333
+ white-space: nowrap;
1334
+ }
1335
+ [data-mode=kk] .kk-table td {
1336
+ height: 49px;
1337
+ padding: 0 10px;
1338
+ font-size: var(--kk-font-sm);
1339
+ color: var(--kk-text);
1340
+ border-bottom: 1px solid var(--kk-line);
1341
+ overflow: hidden;
1342
+ text-overflow: ellipsis;
1343
+ white-space: nowrap;
1344
+ }
1345
+ [data-mode=kk] .kk-avatar {
1346
+ width: 24px;
1347
+ height: 24px;
1348
+ border-radius: 50%;
1349
+ background: var(--kk-avatar-bg);
1350
+ color: #fff;
1351
+ display: inline-flex;
1352
+ align-items: center;
1353
+ justify-content: center;
1354
+ font-size: var(--kk-font-sm);
1355
+ }
1356
+ [data-mode=kk] .kk-link {
1357
+ color: var(--kk-primary);
1358
+ cursor: pointer;
1359
+ margin-right: 10px;
1360
+ }
1361
+ [data-mode=kk] .kk-link:last-child {
1362
+ margin-right: 0;
1363
+ }
1364
+ [data-mode=kk] .kk-empty {
1365
+ flex: 1;
1366
+ padding: 80px 0;
1367
+ text-align: center;
1368
+ font-size: var(--kk-font);
1369
+ color: var(--kk-text-weak);
1370
+ background: var(--kk-surface);
1371
+ }
1372
+ [data-mode=kk] .kk-empty td {
1373
+ text-align: center;
1374
+ color: var(--kk-text-placeholder);
1375
+ }
1376
+ [data-mode=kk] .kk-pager {
1377
+ height: 50px;
1378
+ flex-shrink: 0;
1379
+ display: flex;
1380
+ align-items: center;
1381
+ gap: 8px;
1382
+ padding: 0 15px;
1383
+ font-size: var(--kk-font-sm);
1384
+ color: var(--kk-text);
1385
+ }
1386
+ [data-mode=kk] .kk-pager select {
1387
+ height: 24px;
1388
+ padding: 0 4px;
1389
+ border: 1px solid var(--kk-border);
1390
+ border-radius: var(--kk-radius);
1391
+ background: var(--kk-surface);
1392
+ color: var(--kk-text);
1393
+ }
1394
+ [data-mode=kk] :where(i[class^=ri-], i[class*=" ri-"]) {
1395
+ line-height: 1;
1396
+ display: inline-flex;
1397
+ align-items: center;
1398
+ justify-content: center;
1399
+ font-style: normal;
1400
+ }
1401
+ [data-mode=kk] .kk-cards {
1402
+ display: grid;
1403
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
1404
+ gap: 12px;
1405
+ padding: 15px;
1406
+ flex-shrink: 0;
1407
+ }
1408
+ [data-mode=kk] .kk-stat {
1409
+ padding: 12px 15px;
1410
+ border: 1px solid var(--kk-border);
1411
+ border-radius: var(--kk-radius);
1412
+ background: var(--kk-surface);
1413
+ }
1414
+ [data-mode=kk] .kk-stat__label {
1415
+ font-size: 12px;
1416
+ color: var(--kk-text-weak);
1417
+ }
1418
+ [data-mode=kk] .kk-stat__value {
1419
+ margin-top: 6px;
1420
+ font-size: 20px;
1421
+ line-height: 1;
1422
+ color: var(--kk-text);
1423
+ }
1424
+ [data-mode=kk] .kk-stat__value--success {
1425
+ color: var(--kk-success);
1426
+ }
1427
+ [data-mode=kk] .kk-stat__value--danger {
1428
+ color: var(--kk-danger);
1429
+ }
1430
+ [data-mode=kk] .kk-stat__hint {
1431
+ margin-top: 6px;
1432
+ font-size: 12px;
1433
+ color: var(--kk-text-weak);
1434
+ }
1435
+ [data-mode=kk] .kk-tag {
1436
+ display: inline-flex;
1437
+ align-items: center;
1438
+ height: 22px;
1439
+ padding: 0 8px;
1440
+ border-radius: var(--kk-radius);
1441
+ border: 1px solid var(--kk-border);
1442
+ background: var(--kk-hover);
1443
+ font-size: 12px;
1444
+ color: var(--kk-text);
1445
+ }
1446
+ [data-mode=kk] .kk-tag--primary {
1447
+ border-color: var(--kk-primary-plain-border);
1448
+ background: var(--kk-primary-soft);
1449
+ color: var(--kk-primary);
1450
+ }
1451
+ [data-mode=kk] .kk-tag--success {
1452
+ border-color: #b3e19d;
1453
+ background: #f0f9eb;
1454
+ color: var(--kk-success);
1455
+ }
1456
+ [data-mode=kk] .kk-tag--danger {
1457
+ border-color: var(--kk-danger-border);
1458
+ background: var(--kk-danger-soft);
1459
+ color: var(--kk-danger);
1460
+ }
1461
+ [data-mode=kk] .kk-tag--warning {
1462
+ border-color: var(--kk-warning-border);
1463
+ background: var(--kk-warning-soft);
1464
+ color: var(--kk-warning);
1465
+ }
1466
+ [data-mode=kk] .kk-tag--purple {
1467
+ border-color: #d3adf7;
1468
+ background: #f9f0ff;
1469
+ color: #722ed1;
1470
+ }
1471
+ [data-mode=kk] .kk-tag--gray {
1472
+ color: var(--kk-text-weak);
1473
+ }
1474
+ [data-mode=kk] .kk-cell {
1475
+ display: flex;
1476
+ flex-direction: column;
1477
+ gap: 2px;
1478
+ font-size: 12px;
1479
+ }
1480
+ [data-mode=kk] .kk-ellipsis {
1481
+ max-width: 0;
1482
+ overflow: hidden;
1483
+ text-overflow: ellipsis;
1484
+ white-space: nowrap;
1485
+ }
1486
+ [data-mode=kk] .kk-tools > .kk-ellipsis {
1487
+ max-width: none;
1488
+ min-width: 0;
1489
+ flex: 1;
1490
+ }
1491
+ [data-mode=kk] .kk-table .kk-row--link {
1492
+ cursor: pointer;
1493
+ }
1494
+ [data-mode=kk] .kk-table tr.is-error td {
1495
+ color: var(--kk-danger);
1496
+ }
1497
+ [data-mode=kk] .kk-filter {
1498
+ width: 170px;
1499
+ }
1500
+ [data-mode=kk] .kk-detail {
1501
+ padding: 15px;
1502
+ }
1503
+ [data-mode=kk] .kk-scope {
1504
+ flex-wrap: wrap;
1505
+ }
1506
+ [data-mode=kk] .kk-scope__field {
1507
+ display: flex;
1508
+ flex-direction: column;
1509
+ gap: 6px;
1510
+ min-width: 170px;
1511
+ }
1512
+ [data-mode=kk] .kk-scope__field .kk-label {
1513
+ width: auto;
1514
+ padding-right: 0;
1515
+ font-size: var(--kk-font-sm);
1516
+ color: var(--kk-text-weak, #666);
1517
+ }
1518
+ [data-mode=kk] .kk-textarea--mono {
1519
+ font-family: var(--kk-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
1520
+ font-size: 11px;
1521
+ line-height: 1.5;
1522
+ }
1523
+ [data-mode=kk] .kk-message {
1524
+ display: inline-block;
1525
+ font-size: var(--kk-font-sm);
1526
+ line-height: 1.6;
1527
+ color: var(--kk-text-weak, #666);
1528
+ white-space: normal;
1529
+ word-break: break-word;
1530
+ }
1531
+ [data-mode=kk] .kk-scope__refresh {
1532
+ margin-left: auto;
1533
+ }
1534
+ [data-mode=kk] .kk-scope__hint {
1535
+ font-size: var(--kk-font-sm);
1536
+ color: var(--kk-text-weak, #909399);
1537
+ white-space: nowrap;
1538
+ }
1539
+ [data-mode=kk] .kk-banner {
1540
+ display: flex;
1541
+ flex-direction: column;
1542
+ gap: 4px;
1543
+ margin-top: 12px;
1544
+ padding: 10px 14px;
1545
+ border: 1px solid var(--kk-warning, #faad14);
1546
+ border-radius: var(--kk-radius);
1547
+ background: var(--kk-warning-soft, #fffbe6);
1548
+ color: var(--kk-text);
1549
+ font-size: var(--kk-font-sm);
1550
+ }
1551
+ [data-mode=kk] .kk-banner ul {
1552
+ margin: 0;
1553
+ padding-left: 18px;
1554
+ color: var(--kk-text-weak, #666);
1555
+ }
1556
+ [data-mode=kk] .kk-banner--danger {
1557
+ border-color: var(--kk-danger);
1558
+ background: var(--kk-danger-soft, #fff1f0);
1559
+ color: var(--kk-danger);
1560
+ }
1561
+ [data-mode=kk] .kk-summary {
1562
+ display: flex;
1563
+ flex-wrap: wrap;
1564
+ gap: 8px 18px;
1565
+ align-items: center;
1566
+ font-size: var(--kk-font-sm);
1567
+ }
1568
+ [data-mode=kk] .kk-tip--block {
1569
+ display: block;
1570
+ line-height: 1.5;
1571
+ max-width: 220px;
1572
+ overflow: hidden;
1573
+ text-overflow: ellipsis;
1574
+ white-space: nowrap;
1575
+ }
1576
+ [data-mode=kk] .kk-split {
1577
+ display: grid;
1578
+ grid-template-columns: minmax(280px, 340px) 1fr;
1579
+ gap: 15px;
1580
+ padding: 0 15px 15px;
1581
+ align-items: start;
1582
+ }
1583
+ [data-mode=kk] .kk-card {
1584
+ border: 1px solid var(--kk-border);
1585
+ border-radius: var(--kk-radius);
1586
+ background: var(--kk-surface);
1587
+ overflow: hidden;
1588
+ }
1589
+ [data-mode=kk] .kk-card__head {
1590
+ display: flex;
1591
+ align-items: center;
1592
+ justify-content: space-between;
1593
+ gap: 10px;
1594
+ padding: 12px 15px;
1595
+ border-bottom: 1px solid var(--kk-line);
1596
+ font-size: var(--kk-font);
1597
+ color: var(--kk-text);
1598
+ }
1599
+ [data-mode=kk] .kk-card__body {
1600
+ display: flex;
1601
+ flex-direction: column;
1602
+ gap: 10px;
1603
+ padding: 15px;
1604
+ font-size: var(--kk-font-sm);
1605
+ }
1606
+ [data-mode=kk] .kk-line {
1607
+ display: flex;
1608
+ align-items: center;
1609
+ justify-content: space-between;
1610
+ gap: 10px;
1611
+ }
1612
+ [data-mode=kk] .kk-perms {
1613
+ display: flex;
1614
+ flex-wrap: wrap;
1615
+ gap: 6px;
1616
+ }
1617
+ [data-mode=kk] .kk-avatar {
1618
+ width: 40px;
1619
+ height: 40px;
1620
+ flex-shrink: 0;
1621
+ display: inline-flex;
1622
+ align-items: center;
1623
+ justify-content: center;
1624
+ border-radius: 50%;
1625
+ background: var(--kk-primary-soft);
1626
+ color: var(--kk-primary);
1627
+ font-size: 14px;
1628
+ }
1629
+ [data-mode=kk] .kk-hello__title,
1630
+ [data-mode=kk] .kk-page-title {
1631
+ font-size: 16px;
1632
+ color: var(--kk-text-strong);
1633
+ }
1634
+ [data-mode=kk] .kk-page-head {
1635
+ flex-shrink: 0;
1636
+ display: flex;
1637
+ align-items: center;
1638
+ justify-content: space-between;
1639
+ gap: 12px;
1640
+ padding: 12px 15px;
1641
+ border-bottom: 1px solid var(--kk-line);
1642
+ }
1643
+ [data-mode=kk] .kk-page-head__text {
1644
+ align-items: baseline;
1645
+ gap: 10px;
1646
+ flex-wrap: wrap;
1647
+ }
1648
+ [data-mode=kk] .kk-page-sub {
1649
+ font-size: 12px;
1650
+ color: var(--kk-text-weak);
1651
+ }
1652
+ [data-mode=kk] .kk-table--slim td,
1653
+ [data-mode=kk] .kk-table--slim th {
1654
+ height: 38px;
1655
+ }
1656
+ [data-mode=kk] .kk-btn.is-disabled,
1657
+ [data-mode=kk] .kk-page-btn.is-disabled {
1658
+ opacity: 0.5;
1659
+ cursor: not-allowed;
1660
+ }
1661
+ [data-mode=kk] .kk-usage-list {
1662
+ display: flex;
1663
+ flex-direction: column;
1664
+ gap: 4px;
1665
+ }
1666
+ [data-mode=kk] .kk-field .kk-usage-list {
1667
+ gap: 6px;
1668
+ }
1669
+ [data-mode=kk] .kk-usage {
1670
+ display: inline-flex;
1671
+ align-items: center;
1672
+ gap: 6px;
1673
+ font-size: 12px;
1674
+ color: var(--kk-text-weak);
1675
+ }
1676
+ [data-mode=kk] .kk-usage__label {
1677
+ width: 12px;
1678
+ flex-shrink: 0;
1679
+ }
1680
+ [data-mode=kk] .kk-usage__track {
1681
+ flex: 1;
1682
+ min-width: 56px;
1683
+ height: 6px;
1684
+ border-radius: 3px;
1685
+ background: var(--kk-hover);
1686
+ overflow: hidden;
1687
+ }
1688
+ [data-mode=kk] .kk-usage__fill {
1689
+ display: block;
1690
+ height: 100%;
1691
+ background: var(--kk-success);
1692
+ }
1693
+ [data-mode=kk] .kk-usage__fill--warn {
1694
+ background: var(--kk-warning);
1695
+ }
1696
+ [data-mode=kk] .kk-usage__fill--danger {
1697
+ background: var(--kk-danger);
1698
+ }
1699
+ [data-mode=kk] .kk-usage__num {
1700
+ width: 30px;
1701
+ text-align: right;
1702
+ flex-shrink: 0;
1703
+ }
1704
+ [data-mode=kk] .kk-code--block {
1705
+ display: block;
1706
+ padding: 6px 8px;
1707
+ background: var(--kk-hover);
1708
+ border-radius: var(--kk-radius);
1709
+ word-break: break-all;
1710
+ }
1711
+ [data-mode=kk] .kk-code--strong {
1712
+ color: var(--kk-text);
1713
+ font-weight: 600;
1714
+ }
1715
+ [data-mode=kk] .kk-dot {
1716
+ width: 6px;
1717
+ height: 6px;
1718
+ flex-shrink: 0;
1719
+ border-radius: 50%;
1720
+ background: var(--kk-danger);
1721
+ }
1722
+ [data-mode=kk] .kk-preview {
1723
+ transition: background 0.2s ease;
1724
+ }
1725
+ [data-mode=kk] .kk-field--row {
1726
+ display: flex;
1727
+ gap: 8px;
1728
+ }
1729
+ [data-mode=kk] .kk-input--num {
1730
+ width: 88px;
1731
+ flex-shrink: 0;
1732
+ }
1733
+ [data-mode=kk] .kk-iconbtn--danger {
1734
+ color: var(--kk-danger);
1735
+ }
1736
+ [data-mode=kk] .kk-iconbtn--danger:hover {
1737
+ border-color: var(--kk-danger-border);
1738
+ background: var(--kk-danger-soft);
1739
+ }
1740
+ [data-mode=kk] .kk-page-num,
1741
+ [data-mode=kk] .kk-page-btn {
1742
+ min-width: 24px;
1743
+ height: 24px;
1744
+ padding: 0 6px;
1745
+ border-radius: var(--kk-radius);
1746
+ border: 1px solid var(--kk-border);
1747
+ background: var(--kk-surface);
1748
+ color: var(--kk-text);
1749
+ display: inline-flex;
1750
+ align-items: center;
1751
+ justify-content: center;
1752
+ }
1753
+ [data-mode=kk] .kk-page-num,
1754
+ [data-mode=kk] .kk-page-btn.is-active {
1755
+ background: var(--kk-primary);
1756
+ border-color: var(--kk-primary);
1757
+ color: #fff;
1758
+ }
1759
+ [data-mode=kk] .kk-goto {
1760
+ width: 40px;
1761
+ height: 24px;
1762
+ padding: 0 6px;
1763
+ border: 1px solid var(--kk-border);
1764
+ border-radius: var(--kk-radius);
1765
+ text-align: center;
1766
+ background: var(--kk-surface);
1767
+ color: var(--kk-text);
1768
+ }
1769
+ [data-mode=kk] .kk-move {
1770
+ width: 24px;
1771
+ height: 24px;
1772
+ box-sizing: border-box;
1773
+ margin: 0 auto;
1774
+ border: 1px solid var(--kk-move-border);
1775
+ border-radius: var(--kk-radius);
1776
+ background: var(--kk-move-bg);
1777
+ color: var(--kk-text-weak);
1778
+ display: flex;
1779
+ align-items: center;
1780
+ justify-content: center;
1781
+ cursor: move;
1782
+ touch-action: none;
1783
+ }
1784
+ [data-mode=kk] .kk-move:hover {
1785
+ color: var(--kk-text);
1786
+ border-color: #d3d4d6;
1787
+ }
1788
+ [data-mode=kk] .kk-move svg {
1789
+ width: 12px;
1790
+ height: 12px;
1791
+ }
1792
+ [data-mode=kk] .kk-col {
1793
+ float: left;
1794
+ width: 50%;
1795
+ box-sizing: border-box;
1796
+ padding: 20px;
1797
+ }
1798
+ @media (max-width: 1199px) {
1799
+ [data-mode=kk] .kk-col {
1800
+ width: 100%;
1801
+ }
1802
+ }
1803
+ [data-mode=kk] .kk-item {
1804
+ display: flex;
1805
+ margin-bottom: 18px;
1806
+ }
1807
+ [data-mode=kk] .kk-label {
1808
+ width: 80px;
1809
+ flex-shrink: 0;
1810
+ box-sizing: border-box;
1811
+ padding-right: 12px;
1812
+ font-size: var(--kk-font);
1813
+ color: var(--kk-text);
1814
+ line-height: var(--kk-control-h);
1815
+ }
1816
+ [data-mode=kk] .kk-field {
1817
+ flex: 1;
1818
+ min-width: 0;
1819
+ }
1820
+ [data-mode=kk] .kk-tip {
1821
+ font-size: var(--kk-font-sm);
1822
+ color: #999;
1823
+ line-height: var(--kk-control-h);
1824
+ }
1825
+ [data-mode=kk] .kk-title {
1826
+ margin: 0 0 30px;
1827
+ font-size: 17px;
1828
+ font-weight: 700;
1829
+ color: var(--kk-title);
1830
+ }
1831
+ [data-mode=kk] .kk-save {
1832
+ height: var(--kk-control-h);
1833
+ padding: 0 15px;
1834
+ box-sizing: border-box;
1835
+ border-radius: var(--kk-radius);
1836
+ background: var(--kk-primary);
1837
+ color: #fff;
1838
+ letter-spacing: 1px;
1839
+ display: inline-flex;
1840
+ align-items: center;
1841
+ }
1842
+ [data-mode=kk] .kk-side-btn {
1843
+ width: 100%;
1844
+ height: var(--kk-control-h);
1845
+ border-radius: var(--kk-radius);
1846
+ background: var(--kk-primary);
1847
+ color: #fff;
1848
+ font-size: var(--kk-font);
1849
+ display: inline-flex;
1850
+ align-items: center;
1851
+ justify-content: center;
1852
+ gap: 6px;
1853
+ }
1854
+ [data-mode=kk] .kk-side-btn svg {
1855
+ width: 14px;
1856
+ height: 14px;
1857
+ }
1858
+ [data-mode=kk] .kk-add {
1859
+ width: 24px;
1860
+ height: 24px;
1861
+ border-radius: 50%;
1862
+ background: var(--kk-primary);
1863
+ color: #fff;
1864
+ display: inline-flex;
1865
+ align-items: center;
1866
+ justify-content: center;
1867
+ vertical-align: middle;
1868
+ }
1869
+ [data-mode=kk] .kk-add svg {
1870
+ width: 12px;
1871
+ height: 12px;
1872
+ }
1873
+ [data-mode=kk] .kk-rgroup {
1874
+ display: inline-flex;
1875
+ height: var(--kk-control-h);
1876
+ align-items: center;
1877
+ }
1878
+ [data-mode=kk] .kk-rbtn {
1879
+ height: 30px;
1880
+ box-sizing: border-box;
1881
+ padding: 0 15px;
1882
+ font-size: var(--kk-font-sm);
1883
+ line-height: 12px;
1884
+ color: var(--kk-text);
1885
+ background: var(--kk-surface);
1886
+ border: 1px solid var(--kk-border);
1887
+ cursor: pointer;
1888
+ }
1889
+ [data-mode=kk] .kk-rbtn + .kk-rbtn {
1890
+ border-left: 0;
1891
+ }
1892
+ [data-mode=kk] .kk-rbtn:first-child {
1893
+ border-radius: var(--kk-radius) 0 0 var(--kk-radius);
1894
+ }
1895
+ [data-mode=kk] .kk-rbtn:last-child {
1896
+ border-radius: 0 var(--kk-radius) var(--kk-radius) 0;
1897
+ }
1898
+ [data-mode=kk] .kk-rbtn:hover {
1899
+ color: var(--kk-primary);
1900
+ }
1901
+ [data-mode=kk] .kk-rbtn.is-active {
1902
+ background: var(--kk-primary);
1903
+ border-color: var(--kk-primary);
1904
+ color: #fff;
1905
+ }
1906
+ [data-mode=kk] .kk-inputgroup {
1907
+ display: flex;
1908
+ }
1909
+ [data-mode=kk] .kk-prepend {
1910
+ height: var(--kk-control-h);
1911
+ box-sizing: border-box;
1912
+ padding: 0 11px;
1913
+ display: inline-flex;
1914
+ align-items: center;
1915
+ font-size: var(--kk-font);
1916
+ color: var(--kk-text-weak);
1917
+ background: var(--kk-hover);
1918
+ border: 1px solid var(--kk-border);
1919
+ border-right: 0;
1920
+ border-radius: var(--kk-radius) 0 0 var(--kk-radius);
1921
+ }
1922
+ [data-mode=kk] .kk-inputgroup .kk-input {
1923
+ border-radius: 0 var(--kk-radius) var(--kk-radius) 0;
1924
+ }
1925
+ [data-mode=kk] .kk-select {
1926
+ position: relative;
1927
+ width: 190px;
1928
+ }
1929
+ [data-mode=kk] .kk-select .kk-input {
1930
+ padding-right: 28px;
1931
+ }
1932
+ [data-mode=kk] .kk-select > svg {
1933
+ position: absolute;
1934
+ right: 10px;
1935
+ top: 10px;
1936
+ width: 12px;
1937
+ height: 12px;
1938
+ color: #c0c4cc;
1939
+ }
1940
+ [data-mode=kk] .kk-color {
1941
+ width: var(--kk-control-h);
1942
+ height: var(--kk-control-h);
1943
+ padding: 2px;
1944
+ box-sizing: border-box;
1945
+ border: 1px solid var(--kk-border);
1946
+ border-radius: var(--kk-radius);
1947
+ background: var(--kk-surface);
1948
+ cursor: pointer;
1949
+ }
1950
+ [data-mode=kk] .kk-boxrow {
1951
+ display: flex;
1952
+ align-items: center;
1953
+ height: var(--kk-control-h);
1954
+ }
1955
+ [data-mode=kk] .kk-boxline {
1956
+ display: inline-flex;
1957
+ align-items: center;
1958
+ cursor: pointer;
1959
+ }
1960
+ [data-mode=kk] .kk-boxline + .kk-boxline {
1961
+ margin-left: 30px;
1962
+ }
1963
+ [data-mode=kk] .kk-table--grid {
1964
+ border: 1px solid var(--kk-line);
1965
+ border-right: 0;
1966
+ border-bottom: 0;
1967
+ }
1968
+ [data-mode=kk] .kk-table--grid th,
1969
+ [data-mode=kk] .kk-table--grid td {
1970
+ height: 41px;
1971
+ box-sizing: border-box;
1972
+ padding: 8px 12px;
1973
+ border-right: 1px solid var(--kk-line);
1974
+ border-bottom: 1px solid var(--kk-line);
1975
+ }
1976
+ [data-mode=kk] .kk-table--grid td {
1977
+ height: 49px;
1978
+ }
1979
+ [data-mode=kk] .kk-table--grid th.kk-perm-fn,
1980
+ [data-mode=kk] .kk-table--grid td.kk-perm-fn {
1981
+ padding: 8px 0;
1982
+ text-align: center;
1983
+ }
1984
+ [data-mode=kk] .kk-table--grid td.kk-perm-fn {
1985
+ position: relative;
1986
+ }
1987
+ [data-mode=kk] .kk-perm-no {
1988
+ display: inline-block;
1989
+ line-height: 23px;
1990
+ }
1991
+ [data-mode=kk] .kk-perm-del {
1992
+ position: absolute;
1993
+ top: 50%;
1994
+ left: 50%;
1995
+ transform: translate(-50%, -50%);
1996
+ display: flex;
1997
+ align-items: center;
1998
+ justify-content: center;
1999
+ box-sizing: border-box;
2000
+ width: 24px;
2001
+ height: 24px;
2002
+ padding: 0;
2003
+ border: 1px solid var(--kk-danger-border);
2004
+ border-radius: 50%;
2005
+ background: var(--kk-danger-soft);
2006
+ color: var(--kk-danger);
2007
+ opacity: 0;
2008
+ pointer-events: none;
2009
+ }
2010
+ [data-mode=kk] .kk-perm-del svg {
2011
+ width: 12px;
2012
+ height: 12px;
2013
+ }
2014
+ [data-mode=kk] .kk-wf-header {
2015
+ height: 60px;
2016
+ flex-shrink: 0;
2017
+ box-sizing: border-box;
2018
+ padding: 13px 15px;
2019
+ background: var(--kk-surface);
2020
+ display: flex;
2021
+ align-items: center;
2022
+ justify-content: space-between;
2023
+ }
2024
+ [data-mode=kk] .kk-wf-head {
2025
+ display: flex;
2026
+ align-items: center;
2027
+ }
2028
+ [data-mode=kk] .kk-wf-back {
2029
+ display: inline-flex;
2030
+ align-items: center;
2031
+ gap: 4px;
2032
+ font-size: var(--kk-font-sm);
2033
+ color: var(--kk-text);
2034
+ }
2035
+ [data-mode=kk] .kk-wf-back svg {
2036
+ width: 14px;
2037
+ height: 14px;
2038
+ }
2039
+ [data-mode=kk] .kk-wf-divider {
2040
+ width: 1px;
2041
+ height: 18px;
2042
+ margin: 0 8px;
2043
+ background: var(--kk-border);
2044
+ }
2045
+ [data-mode=kk] .kk-wf-title {
2046
+ font-size: var(--kk-font-sm);
2047
+ color: var(--kk-text-strong);
2048
+ }
2049
+ [data-mode=kk] .kk-wf-canvas {
2050
+ flex: 1;
2051
+ min-height: 0;
2052
+ overflow: auto;
2053
+ background: var(--kk-page-bg);
2054
+ }
2055
+ [data-mode=kk] .sc-workflow-design {
2056
+ width: 100%;
2057
+ font-size: 12px;
2058
+ line-height: 1.5;
2059
+ }
2060
+ [data-mode=kk] .sc-workflow-design .box-scale {
2061
+ display: inline-block;
2062
+ position: relative;
2063
+ width: 100%;
2064
+ padding: 54.5px 0;
2065
+ align-items: flex-start;
2066
+ justify-content: center;
2067
+ flex-wrap: wrap;
2068
+ min-width: min-content;
2069
+ }
2070
+ [data-mode=kk] .sc-workflow-design .node-wrap {
2071
+ display: inline-flex;
2072
+ width: 100%;
2073
+ flex-flow: column wrap;
2074
+ justify-content: flex-start;
2075
+ align-items: center;
2076
+ padding: 0 50px;
2077
+ position: relative;
2078
+ z-index: 1;
2079
+ }
2080
+ [data-mode=kk] .sc-workflow-design .node-wrap-box {
2081
+ display: inline-flex;
2082
+ flex-direction: column;
2083
+ position: relative;
2084
+ width: 220px;
2085
+ min-height: 72px;
2086
+ flex-shrink: 0;
2087
+ background: var(--kk-surface);
2088
+ border-radius: 4px;
2089
+ cursor: pointer;
2090
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1);
2091
+ }
2092
+ [data-mode=kk] .sc-workflow-design .node-wrap-box::before {
2093
+ content: "";
2094
+ position: absolute;
2095
+ top: -12px;
2096
+ left: 50%;
2097
+ transform: translateX(-50%);
2098
+ width: 0;
2099
+ border-style: solid;
2100
+ border-width: 8px 6px 4px;
2101
+ border-color: #cacaca transparent transparent;
2102
+ background: var(--kk-page-bg);
2103
+ }
2104
+ [data-mode=kk] .sc-workflow-design .node-wrap-box.start-node::before {
2105
+ content: none;
2106
+ }
2107
+ [data-mode=kk] .sc-workflow-design .node-wrap-box .title {
2108
+ height: 24px;
2109
+ line-height: 24px;
2110
+ color: #fff;
2111
+ padding-left: 16px;
2112
+ padding-right: 30px;
2113
+ border-radius: 4px 4px 0 0;
2114
+ position: relative;
2115
+ display: flex;
2116
+ align-items: center;
2117
+ }
2118
+ [data-mode=kk] .sc-workflow-design .node-wrap-box .title .icon {
2119
+ margin-right: 5px;
2120
+ }
2121
+ [data-mode=kk] .sc-workflow-design .node-wrap-box .title .close {
2122
+ font-size: 15px;
2123
+ position: absolute;
2124
+ top: 50%;
2125
+ transform: translateY(-50%);
2126
+ right: 10px;
2127
+ display: none;
2128
+ }
2129
+ [data-mode=kk] .sc-workflow-design .node-wrap-box .content {
2130
+ position: relative;
2131
+ padding: 15px;
2132
+ }
2133
+ [data-mode=kk] .sc-workflow-design .node-wrap-box .content .placeholder {
2134
+ color: #999;
2135
+ }
2136
+ [data-mode=kk] .sc-workflow-design .node-wrap-box:hover .close {
2137
+ display: block;
2138
+ }
2139
+ [data-mode=kk] .sc-workflow-design .node-wrap-box--start .title {
2140
+ background: #576a95;
2141
+ }
2142
+ [data-mode=kk] .sc-workflow-design .node-wrap-box--approver .title {
2143
+ background: #ff943e;
2144
+ }
2145
+ [data-mode=kk] .sc-workflow-design .node-wrap-box--cc .title {
2146
+ background: #3296fa;
2147
+ }
2148
+ [data-mode=kk] .sc-workflow-design .add-node-btn-box {
2149
+ width: 240px;
2150
+ display: inline-flex;
2151
+ flex-shrink: 0;
2152
+ position: relative;
2153
+ z-index: 1;
2154
+ }
2155
+ [data-mode=kk] .sc-workflow-design .add-node-btn-box::before {
2156
+ content: "";
2157
+ position: absolute;
2158
+ inset: 0;
2159
+ z-index: -1;
2160
+ margin: auto;
2161
+ width: 2px;
2162
+ height: 100%;
2163
+ background-color: #cacaca;
2164
+ }
2165
+ [data-mode=kk] .sc-workflow-design .add-node-btn {
2166
+ user-select: none;
2167
+ width: 240px;
2168
+ padding: 20px 0 32px;
2169
+ display: flex;
2170
+ justify-content: center;
2171
+ flex-shrink: 0;
2172
+ flex-grow: 1;
2173
+ }
2174
+ [data-mode=kk] .sc-workflow-design .add-node-btn .kk-wf-add {
2175
+ width: 32px;
2176
+ height: 32px;
2177
+ padding: 0;
2178
+ box-sizing: border-box;
2179
+ border: 1px solid var(--kk-primary);
2180
+ border-radius: 50%;
2181
+ background: var(--kk-primary);
2182
+ color: #fff;
2183
+ display: inline-flex;
2184
+ align-items: center;
2185
+ justify-content: center;
2186
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
2187
+ }
2188
+ [data-mode=kk] .sc-workflow-design .add-node-btn .kk-wf-add:hover {
2189
+ background: var(--kk-primary-light);
2190
+ border-color: var(--kk-primary-light);
2191
+ }
2192
+ [data-mode=kk] .sc-workflow-design .add-node-btn .kk-wf-add svg {
2193
+ width: 14px;
2194
+ height: 14px;
2195
+ }
2196
+ [data-mode=kk] .sc-workflow-design .add-branch {
2197
+ justify-content: center;
2198
+ padding: 0 10px;
2199
+ position: absolute;
2200
+ top: -16px;
2201
+ left: 50%;
2202
+ transform: translateX(-50%);
2203
+ transform-origin: center center;
2204
+ z-index: 1;
2205
+ display: inline-flex;
2206
+ align-items: center;
2207
+ height: 28px;
2208
+ box-sizing: border-box;
2209
+ border: 1px solid #b3e19d;
2210
+ border-radius: 14px;
2211
+ background: #f0f9eb;
2212
+ color: #67c23a;
2213
+ font-size: var(--kk-font-sm);
2214
+ }
2215
+ [data-mode=kk] .sc-workflow-design .branch-wrap {
2216
+ display: inline-flex;
2217
+ width: 100%;
2218
+ }
2219
+ [data-mode=kk] .sc-workflow-design .branch-box-wrap {
2220
+ display: flex;
2221
+ flex-flow: column wrap;
2222
+ align-items: center;
2223
+ min-height: 270px;
2224
+ width: 100%;
2225
+ flex-shrink: 0;
2226
+ }
2227
+ [data-mode=kk] .sc-workflow-design .col-box {
2228
+ display: inline-flex;
2229
+ flex-direction: column;
2230
+ align-items: center;
2231
+ position: relative;
2232
+ background: var(--kk-page-bg);
2233
+ }
2234
+ [data-mode=kk] .sc-workflow-design .branch-box {
2235
+ display: flex;
2236
+ overflow: visible;
2237
+ min-height: 180px;
2238
+ height: auto;
2239
+ border-bottom: 2px solid #cccccc;
2240
+ border-top: 2px solid #cccccc;
2241
+ position: relative;
2242
+ margin-top: 15px;
2243
+ }
2244
+ [data-mode=kk] .sc-workflow-design .branch-box .col-box::before {
2245
+ content: "";
2246
+ position: absolute;
2247
+ inset: 0;
2248
+ z-index: 0;
2249
+ margin: auto;
2250
+ width: 2px;
2251
+ height: 100%;
2252
+ background-color: #cacaca;
2253
+ }
2254
+ [data-mode=kk] .sc-workflow-design .condition-node {
2255
+ display: inline-flex;
2256
+ flex-direction: column;
2257
+ min-height: 220px;
2258
+ }
2259
+ [data-mode=kk] .sc-workflow-design .condition-node-box {
2260
+ padding-top: 30px;
2261
+ padding-right: 50px;
2262
+ padding-left: 50px;
2263
+ justify-content: center;
2264
+ align-items: center;
2265
+ flex-grow: 1;
2266
+ position: relative;
2267
+ display: inline-flex;
2268
+ flex-direction: column;
2269
+ }
2270
+ [data-mode=kk] .sc-workflow-design .condition-node-box::before {
2271
+ content: "";
2272
+ position: absolute;
2273
+ inset: 0;
2274
+ margin: auto;
2275
+ width: 2px;
2276
+ height: 100%;
2277
+ background-color: #cacaca;
2278
+ }
2279
+ [data-mode=kk] .sc-workflow-design .auto-judge {
2280
+ position: relative;
2281
+ width: 220px;
2282
+ min-height: 72px;
2283
+ background: var(--kk-surface);
2284
+ border-radius: 4px;
2285
+ padding: 15px;
2286
+ cursor: pointer;
2287
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1);
2288
+ }
2289
+ [data-mode=kk] .sc-workflow-design .auto-judge::before {
2290
+ content: "";
2291
+ position: absolute;
2292
+ top: -12px;
2293
+ left: 50%;
2294
+ transform: translateX(-50%);
2295
+ width: 0;
2296
+ border-style: solid;
2297
+ border-width: 8px 6px 4px;
2298
+ border-color: #cacaca transparent transparent;
2299
+ background: var(--kk-page-bg);
2300
+ }
2301
+ [data-mode=kk] .sc-workflow-design .auto-judge .title {
2302
+ line-height: 16px;
2303
+ }
2304
+ [data-mode=kk] .sc-workflow-design .auto-judge .title .node-title {
2305
+ color: #15bc83;
2306
+ }
2307
+ [data-mode=kk] .sc-workflow-design .auto-judge .title .close {
2308
+ font-size: 15px;
2309
+ display: none;
2310
+ }
2311
+ [data-mode=kk] .sc-workflow-design .auto-judge .title .close,
2312
+ [data-mode=kk] .sc-workflow-design .auto-judge .title .priority-title {
2313
+ position: absolute;
2314
+ top: 15px;
2315
+ right: 15px;
2316
+ color: #999;
2317
+ }
2318
+ [data-mode=kk] .sc-workflow-design .auto-judge .content {
2319
+ position: relative;
2320
+ padding-top: 15px;
2321
+ }
2322
+ [data-mode=kk] .sc-workflow-design .auto-judge .content .placeholder,
2323
+ [data-mode=kk] .sc-workflow-design .auto-judge .title .placeholder {
2324
+ color: #999;
2325
+ }
2326
+ [data-mode=kk] .sc-workflow-design .auto-judge:hover .close {
2327
+ display: block;
2328
+ }
2329
+ [data-mode=kk] .sc-workflow-design .auto-judge:hover .priority-title {
2330
+ display: none;
2331
+ }
2332
+ [data-mode=kk] .sc-workflow-design .top-left-cover-line,
2333
+ [data-mode=kk] .sc-workflow-design .top-right-cover-line {
2334
+ position: absolute;
2335
+ height: 3px;
2336
+ width: 50%;
2337
+ background-color: var(--kk-page-bg);
2338
+ top: -2px;
2339
+ }
2340
+ [data-mode=kk] .sc-workflow-design .bottom-left-cover-line,
2341
+ [data-mode=kk] .sc-workflow-design .bottom-right-cover-line {
2342
+ position: absolute;
2343
+ height: 3px;
2344
+ width: 50%;
2345
+ background-color: var(--kk-page-bg);
2346
+ bottom: -2px;
2347
+ }
2348
+ [data-mode=kk] .sc-workflow-design .top-left-cover-line {
2349
+ left: -1px;
2350
+ }
2351
+ [data-mode=kk] .sc-workflow-design .top-right-cover-line {
2352
+ right: -1px;
2353
+ }
2354
+ [data-mode=kk] .sc-workflow-design .bottom-left-cover-line {
2355
+ left: -1px;
2356
+ }
2357
+ [data-mode=kk] .sc-workflow-design .bottom-right-cover-line {
2358
+ right: -1px;
2359
+ }
2360
+ [data-mode=kk] .sc-workflow-design .end-node {
2361
+ border-radius: 50%;
2362
+ font-size: 14px;
2363
+ color: rgba(25, 31, 37, 0.4);
2364
+ text-align: left;
2365
+ }
2366
+ [data-mode=kk] .sc-workflow-design .end-node-circle {
2367
+ width: 10px;
2368
+ height: 10px;
2369
+ margin: auto;
2370
+ border-radius: 50%;
2371
+ background: #dbdcdc;
2372
+ }
2373
+ [data-mode=kk] .sc-workflow-design .end-node-text {
2374
+ margin-top: 5px;
2375
+ text-align: center;
2376
+ }
2377
+ [data-mode=kk] .sc-workflow-design .auto-judge:hover .sort-left,
2378
+ [data-mode=kk] .sc-workflow-design .auto-judge:hover .sort-right {
2379
+ display: flex;
2380
+ }
2381
+ [data-mode=kk] .sc-workflow-design .auto-judge .sort-left,
2382
+ [data-mode=kk] .sc-workflow-design .auto-judge .sort-right {
2383
+ position: absolute;
2384
+ top: 0;
2385
+ bottom: 0;
2386
+ z-index: 1;
2387
+ display: none;
2388
+ justify-content: center;
2389
+ align-items: center;
2390
+ flex-direction: column;
2391
+ }
2392
+ [data-mode=kk] .sc-workflow-design .auto-judge .sort-left {
2393
+ left: 0;
2394
+ }
2395
+ [data-mode=kk] .sc-workflow-design .auto-judge .sort-right {
2396
+ right: 0;
2397
+ }
2398
+ [data-mode=kk] .sc-workflow-design .auto-judge .sort-left:hover,
2399
+ [data-mode=kk] .sc-workflow-design .auto-judge .sort-right:hover {
2400
+ background: var(--kk-hover);
2401
+ }
2402
+ [data-mode=kk] .sc-workflow-design .auto-judge .sort-left svg,
2403
+ [data-mode=kk] .sc-workflow-design .auto-judge .sort-right svg {
2404
+ width: 12px;
2405
+ height: 12px;
2406
+ color: var(--kk-text-weak);
2407
+ }
2408
+ [data-mode=kk] .sc-workflow-design .auto-judge::after {
2409
+ pointer-events: none;
2410
+ content: "";
2411
+ position: absolute;
2412
+ inset: 0;
2413
+ z-index: 2;
2414
+ border-radius: 4px;
2415
+ transition: 0.1s;
2416
+ }
2417
+ [data-mode=kk] .sc-workflow-design .auto-judge:hover::after {
2418
+ border: 1px solid #3296fa;
2419
+ box-shadow: 0 0 6px 0 rgba(50, 150, 250, 0.3);
2420
+ }
2421
+ [data-mode=kk] .sc-workflow-design .node-wrap-box::after {
2422
+ pointer-events: none;
2423
+ content: "";
2424
+ position: absolute;
2425
+ inset: 0;
2426
+ z-index: 2;
2427
+ border-radius: 4px;
2428
+ transition: 0.1s;
2429
+ }
2430
+ [data-mode=kk] .sc-workflow-design .node-wrap-box:hover::after {
2431
+ border: 1px solid #3296fa;
2432
+ box-shadow: 0 0 6px 0 rgba(50, 150, 250, 0.3);
2433
+ }
2434
+ [data-mode=kk] .sc-workflow-design .close svg {
2435
+ width: 14px;
2436
+ height: 14px;
2437
+ display: block;
2438
+ }
2439
+ [data-mode=kk] .sc-workflow-design .close {
2440
+ color: inherit;
2441
+ }
2442
+ [data-mode=kk] .add-node-popover {
2443
+ position: fixed;
2444
+ z-index: 2000;
2445
+ width: 270px;
2446
+ box-sizing: border-box;
2447
+ background: var(--kk-surface);
2448
+ border: 1px solid var(--kk-border-weak);
2449
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.12);
2450
+ }
2451
+ [data-mode=kk] .add-node-popover-body {
2452
+ padding: 12px;
2453
+ }
2454
+ [data-mode=kk] .add-node-popover-body ul {
2455
+ display: flex;
2456
+ justify-content: center;
2457
+ }
2458
+ [data-mode=kk] .add-node-popover-body li {
2459
+ display: inline-block;
2460
+ flex: 0 0 80px;
2461
+ width: 80px;
2462
+ text-align: center;
2463
+ padding: 10px 0;
2464
+ }
2465
+ [data-mode=kk] .add-node-popover-body li i {
2466
+ border: 1px solid var(--kk-border-weak);
2467
+ width: 40px;
2468
+ height: 40px;
2469
+ box-sizing: border-box;
2470
+ border-radius: 50%;
2471
+ text-align: center;
2472
+ line-height: 38px;
2473
+ font-size: 18px;
2474
+ cursor: pointer;
2475
+ display: inline-flex;
2476
+ align-items: center;
2477
+ justify-content: center;
2478
+ }
2479
+ [data-mode=kk] .add-node-popover-body li i svg {
2480
+ width: 18px;
2481
+ height: 18px;
2482
+ }
2483
+ [data-mode=kk] .add-node-popover-body li i:hover {
2484
+ border: 1px solid #3296fa;
2485
+ background: #3296fa;
2486
+ color: #fff !important;
2487
+ }
2488
+ [data-mode=kk] .add-node-popover-body li i.kk-wf-i-approver {
2489
+ color: #ff943e;
2490
+ }
2491
+ [data-mode=kk] .add-node-popover-body li i.kk-wf-i-cc {
2492
+ color: #3296fa;
2493
+ }
2494
+ [data-mode=kk] .add-node-popover-body li i.kk-wf-i-branch {
2495
+ color: #15bc83;
2496
+ }
2497
+ [data-mode=kk] .add-node-popover-body li p {
2498
+ font-size: 12px;
2499
+ margin-top: 5px;
2500
+ color: var(--kk-text);
2501
+ }
2502
+ [data-mode=kk] .add-node-popover-body li i:hover svg {
2503
+ color: #fff;
2504
+ }
2505
+ [data-mode=kk] .kk-wf-drawer .kk-label {
2506
+ width: 70px;
2507
+ }
2508
+ [data-mode=kk] .kk-wf-drawer-title {
2509
+ display: inline-flex;
2510
+ align-items: center;
2511
+ gap: 6px;
2512
+ font-size: var(--kk-font);
2513
+ color: var(--kk-text-strong);
2514
+ }
2515
+ [data-mode=kk] .kk-wf-drawer-title .kk-input {
2516
+ width: 220px;
2517
+ font-size: var(--kk-font);
2518
+ }
2519
+ [data-mode=kk] .kk-wf-pencil {
2520
+ display: inline-flex;
2521
+ color: var(--kk-primary);
2522
+ cursor: pointer;
2523
+ }
2524
+ [data-mode=kk] .kk-wf-pencil svg {
2525
+ width: 14px;
2526
+ height: 14px;
2527
+ }
2528
+ [data-mode=kk] .kk-btn--stroke {
2529
+ background: var(--kk-surface);
2530
+ border: 1px solid var(--kk-border);
2531
+ color: var(--kk-text);
2532
+ }
2533
+ [data-mode=kk] .kk-radio-group {
2534
+ display: flex;
2535
+ align-items: center;
2536
+ gap: 24px;
2537
+ height: var(--kk-control-h);
2538
+ }
2539
+ [data-mode=kk] .kk-radio {
2540
+ display: inline-flex;
2541
+ align-items: center;
2542
+ gap: 6px;
2543
+ font-size: var(--kk-font);
2544
+ color: var(--kk-text);
2545
+ cursor: pointer;
2546
+ }
2547
+ [data-mode=kk] .kk-radio__dot {
2548
+ position: relative;
2549
+ width: 14px;
2550
+ height: 14px;
2551
+ box-sizing: border-box;
2552
+ border: 1px solid var(--kk-border);
2553
+ border-radius: 50%;
2554
+ background: var(--kk-surface);
2555
+ }
2556
+ [data-mode=kk] .kk-radio.is-on .kk-radio__dot {
2557
+ border-color: var(--kk-primary);
2558
+ }
2559
+ [data-mode=kk] .kk-radio.is-on .kk-radio__dot::after {
2560
+ content: "";
2561
+ position: absolute;
2562
+ inset: 3px;
2563
+ border-radius: 50%;
2564
+ background: var(--kk-primary);
2565
+ }
2566
+ [data-mode=kk] .kk-divider {
2567
+ height: 1px;
2568
+ margin: 16px 0;
2569
+ background: var(--kk-line);
2570
+ }
2571
+ [data-mode=kk] .kk-wf-conds th {
2572
+ font-size: var(--kk-font-sm);
2573
+ font-weight: 400;
2574
+ color: var(--kk-text-weak);
2575
+ }
2576
+ [data-mode=kk] .kk-wf-conds td {
2577
+ padding: 6px 8px;
2578
+ }
2579
+ [data-mode=kk] .kk-wf-conds .kk-input {
2580
+ height: 28px;
2581
+ }
2582
+ [data-mode=kk] .kk-wf-remove {
2583
+ display: inline-flex;
2584
+ color: var(--kk-danger);
2585
+ cursor: pointer;
2586
+ }
2587
+ [data-mode=kk] .kk-wf-remove svg {
2588
+ width: 14px;
2589
+ height: 14px;
2590
+ }
2591
+ [data-mode=kk] .kk-wf-addrow {
2592
+ margin-top: 12px;
2593
+ border-radius: 14px;
2594
+ }
2595
+ [data-mode=kk] .kk-wf-drawer-foot {
2596
+ display: flex;
2597
+ gap: 10px;
2598
+ margin-top: 20px;
2599
+ }
2600
+ [data-mode=kk] .kk-wf-drawer-hint {
2601
+ font-size: var(--kk-font-sm);
2602
+ color: var(--kk-text-weak);
2603
+ line-height: 1.6;
2604
+ }
2605
+ [data-mode=kk] .kk-wf-pickbtn {
2606
+ display: inline-flex;
2607
+ align-items: center;
2608
+ gap: 4px;
2609
+ height: var(--kk-control-h);
2610
+ padding: 0 12px;
2611
+ box-sizing: border-box;
2612
+ border: 1px dashed var(--kk-border);
2613
+ border-radius: var(--kk-radius);
2614
+ background: var(--kk-surface);
2615
+ color: var(--kk-primary);
2616
+ font-size: var(--kk-font);
2617
+ }
2618
+ [data-mode=kk] .kk-wf-pickbtn:hover {
2619
+ border-color: var(--kk-primary);
2620
+ background: var(--kk-primary-soft);
2621
+ }
2622
+ [data-mode=kk] .kk-wf-pickbtn svg {
2623
+ width: 12px;
2624
+ height: 12px;
2625
+ }
2626
+ [data-mode=kk] .kk-wf-pick {
2627
+ display: flex;
2628
+ align-items: stretch;
2629
+ gap: 6px;
2630
+ height: 300px;
2631
+ }
2632
+ [data-mode=kk] .kk-wf-pick__pane {
2633
+ flex: 1;
2634
+ min-width: 0;
2635
+ display: flex;
2636
+ flex-direction: column;
2637
+ border: 1px solid var(--kk-border);
2638
+ border-radius: var(--kk-radius);
2639
+ overflow: hidden;
2640
+ }
2641
+ [data-mode=kk] .kk-wf-pick__title {
2642
+ flex-shrink: 0;
2643
+ height: 30px;
2644
+ padding: 0 8px;
2645
+ box-sizing: border-box;
2646
+ display: flex;
2647
+ align-items: center;
2648
+ background: var(--kk-hover);
2649
+ font-size: var(--kk-font-sm);
2650
+ color: var(--kk-text-weak);
2651
+ }
2652
+ [data-mode=kk] .kk-wf-pick__body {
2653
+ flex: 1;
2654
+ min-height: 0;
2655
+ overflow: auto;
2656
+ padding: 4px 0;
2657
+ }
2658
+ [data-mode=kk] .kk-wf-pick__body .kk-node {
2659
+ height: 30px;
2660
+ font-size: var(--kk-font-sm);
2661
+ }
2662
+ [data-mode=kk] .kk-wf-pick__arrow {
2663
+ display: flex;
2664
+ align-items: center;
2665
+ color: var(--kk-text-weak);
2666
+ }
2667
+ [data-mode=kk] .kk-wf-pick__arrow svg {
2668
+ width: 14px;
2669
+ height: 14px;
2670
+ }
2671
+ [data-mode=kk] .kk-wf-pick__item {
2672
+ display: flex;
2673
+ align-items: center;
2674
+ height: 28px;
2675
+ padding: 0 8px;
2676
+ font-size: var(--kk-font-sm);
2677
+ color: var(--kk-text);
2678
+ }
2679
+ [data-mode=kk] .kk-wf-pick__item .kk-node-label {
2680
+ flex: 1;
2681
+ }
2682
+ [data-mode=kk] .kk-wf-pick__remove {
2683
+ display: inline-flex;
2684
+ color: var(--kk-danger);
2685
+ cursor: pointer;
2686
+ }
2687
+ [data-mode=kk] .kk-wf-pick__remove svg {
2688
+ width: 12px;
2689
+ height: 12px;
2690
+ }
2691
+ [data-mode=kk] .kk-wf-pick--members .kk-wf-pick__pane--nav {
2692
+ flex: 0 0 130px;
2693
+ }
2694
+ [data-mode=kk] .kk-wf-pick__search {
2695
+ height: 26px;
2696
+ padding: 0 8px;
2697
+ font-size: var(--kk-font-sm);
2698
+ }
2699
+ [data-mode=kk] .kk-wf-pick__pane .kk-node {
2700
+ height: 30px;
2701
+ font-size: var(--kk-font-sm);
2702
+ }
2703
+ [data-mode=kk] .kk-wf-members {
2704
+ display: flex;
2705
+ flex-wrap: wrap;
2706
+ align-items: center;
2707
+ gap: 8px;
2708
+ }
2709
+ [data-mode=kk] .kk-wf-chip {
2710
+ display: inline-flex;
2711
+ align-items: center;
2712
+ gap: 4px;
2713
+ height: 26px;
2714
+ padding: 0 4px 0 8px;
2715
+ box-sizing: border-box;
2716
+ border: 1px solid var(--kk-border);
2717
+ border-radius: var(--kk-radius);
2718
+ background: var(--kk-hover);
2719
+ font-size: var(--kk-font-sm);
2720
+ color: var(--kk-text);
2721
+ }
2722
+ [data-mode=kk] .kk-wf-chip i {
2723
+ display: inline-flex;
2724
+ color: var(--kk-text-weak);
2725
+ cursor: pointer;
2726
+ }
2727
+ [data-mode=kk] .kk-wf-chip i:hover {
2728
+ color: var(--kk-danger);
2729
+ }
2730
+ [data-mode=kk] .kk-wf-chip svg {
2731
+ width: 12px;
2732
+ height: 12px;
2733
+ }
2734
+ [data-mode=kk] .kk-wf-mtype {
2735
+ width: 160px;
2736
+ }
2737
+ [data-mode=kk] .kk-boxtext {
2738
+ margin-left: 6px;
2739
+ font-size: var(--kk-font);
2740
+ color: var(--kk-text);
2741
+ }
2742
+ [data-mode=kk] .kk-radio-col {
2743
+ display: flex;
2744
+ flex-direction: column;
2745
+ gap: 10px;
2746
+ }
2747
+ [data-mode=kk] .kk-radio-col .kk-radio {
2748
+ font-size: var(--kk-font-sm);
2749
+ }
2750
+ [data-mode=kk] .kk-wf-json {
2751
+ margin: 0;
2752
+ max-height: 320px;
2753
+ overflow: auto;
2754
+ font-size: var(--kk-font-sm);
2755
+ line-height: 1.6;
2756
+ color: var(--kk-text);
2757
+ }
2758
+ [data-mode=kk] .klun-cascader {
2759
+ min-width: 0;
2760
+ width: 100%;
2761
+ --_h: var(--kk-control-h);
2762
+ --_px: 11px;
2763
+ --_radius: var(--kk-radius);
2764
+ }
2765
+ [data-mode=kk] .klun-cascader__column {
2766
+ min-width: 108px;
2767
+ }
2768
+ [data-mode=kk] .klun-cascader__option {
2769
+ padding: 0 8px;
2770
+ }
2771
+ [data-mode=kk] .klun-button {
2772
+ height: var(--kk-control-h);
2773
+ min-height: var(--kk-control-h);
2774
+ padding: 0 15px;
2775
+ box-sizing: border-box;
2776
+ border: 1px solid transparent;
2777
+ border-radius: var(--kk-radius);
2778
+ font-size: var(--kk-font);
2779
+ gap: 6px;
2780
+ }
2781
+ [data-mode=kk] .klun-button.klun-button--primary {
2782
+ background: var(--kk-primary);
2783
+ border-color: var(--kk-primary);
2784
+ color: #fff;
2785
+ }
2786
+ [data-mode=kk] .klun-button.klun-button--primary:hover {
2787
+ background: var(--kk-primary-light);
2788
+ border-color: var(--kk-primary-light);
2789
+ color: #fff;
2790
+ }
2791
+ [data-mode=kk] .klun-button.klun-button--neutral,
2792
+ [data-mode=kk] .klun-button.klun-button--stroke {
2793
+ background: var(--kk-surface);
2794
+ border-color: var(--kk-border);
2795
+ color: var(--kk-text);
2796
+ }
2797
+ [data-mode=kk] .klun-button.klun-button--neutral:hover,
2798
+ [data-mode=kk] .klun-button.klun-button--stroke:hover {
2799
+ background: var(--kk-primary-soft);
2800
+ border-color: var(--kk-primary-plain-border);
2801
+ color: var(--kk-primary);
2802
+ }
2803
+ [data-mode=kk] .klun-button.klun-button--error {
2804
+ background: var(--kk-danger-soft);
2805
+ border-color: var(--kk-danger-border);
2806
+ color: var(--kk-danger);
2807
+ }
2808
+ [data-mode=kk] .klun-button.klun-button--error:hover {
2809
+ background: var(--kk-danger-soft);
2810
+ border-color: var(--kk-danger);
2811
+ color: var(--kk-danger);
2812
+ }
2813
+ [data-mode=kk] .klun-button[disabled] {
2814
+ opacity: 0.5;
2815
+ cursor: not-allowed;
2816
+ }
2817
+ [data-mode=kk] .klun-modal__dialog {
2818
+ border-radius: var(--kk-radius);
2819
+ }
2820
+ [data-mode=kk] .klun-modal__header {
2821
+ padding: 16px 16px 16px;
2822
+ }
2823
+ [data-mode=kk] .klun-modal__body {
2824
+ padding: 0 16px;
2825
+ }
2826
+ [data-mode=kk] .klun-modal__footer {
2827
+ padding: 16px 16px 16px;
2828
+ border-top: 0;
2829
+ gap: 10px;
2830
+ }
2831
+ [data-mode=kk] .kk-table--grid tbody tr:hover .kk-perm-no,
2832
+ [data-mode=kk] .kk-table--grid tbody tr:focus-within .kk-perm-no {
2833
+ opacity: 0;
2834
+ }
2835
+ [data-mode=kk] .kk-table--grid tbody tr:hover .kk-perm-del,
2836
+ [data-mode=kk] .kk-table--grid tbody tr:focus-within .kk-perm-del,
2837
+ [data-mode=kk] .kk-perm-del:focus-visible {
2838
+ opacity: 1;
2839
+ pointer-events: auto;
2840
+ }
2841
+ :where([data-mode=kk]) .scui,
2842
+ .scui:where([data-mode=kk]) {
2843
+ display: flex;
2844
+ flex-direction: column;
2845
+ height: 100%;
2846
+ width: 100%;
2847
+ overflow: hidden;
2848
+ font-family:
2849
+ -apple-system,
2850
+ BlinkMacSystemFont,
2851
+ "Segoe UI",
2852
+ Roboto,
2853
+ "Helvetica Neue",
2854
+ Arial,
2855
+ "PingFang SC",
2856
+ "Hiragino Sans GB",
2857
+ "Microsoft YaHei",
2858
+ sans-serif;
2859
+ font-size: 14px;
2860
+ color: var(--scui-text);
2861
+ background: var(--scui-main-bg);
2862
+ }
2863
+ :where([data-mode=kk]) .scui *,
2864
+ :where([data-mode=kk]) .scui *::before,
2865
+ :where([data-mode=kk]) .scui *::after,
2866
+ .scui:where([data-mode=kk]) *,
2867
+ .scui:where([data-mode=kk]) *::before,
2868
+ .scui:where([data-mode=kk]) *::after {
2869
+ box-sizing: border-box;
2870
+ }
2871
+ :where([data-mode=kk] .scui, .scui:where([data-mode=kk])) :where(ul) {
2872
+ margin: 0;
2873
+ padding: 0;
2874
+ list-style: none;
2875
+ }
2876
+ :where([data-mode=kk] .scui, .scui:where([data-mode=kk])) :where(p) {
2877
+ margin: 0;
2878
+ }
2879
+ :where([data-mode=kk] .scui, .scui:where([data-mode=kk])) :where(a) {
2880
+ color: inherit;
2881
+ text-decoration: none;
2882
+ }
2883
+ :where([data-mode=kk] .scui, .scui:where([data-mode=kk])) :where(button) {
2884
+ font: inherit;
2885
+ color: inherit;
2886
+ border: 0;
2887
+ background: none;
2888
+ padding: 0;
2889
+ cursor: pointer;
2890
+ }
2891
+ :where([data-mode=kk]) .scui-wrapper {
2892
+ display: flex;
2893
+ flex: 1;
2894
+ min-height: 0;
2895
+ overflow: hidden;
2896
+ }
2897
+ :where([data-mode=kk]) .scui-rail {
2898
+ width: 65px;
2899
+ flex-shrink: 0;
2900
+ background: var(--scui-rail-bg);
2901
+ display: flex;
2902
+ flex-direction: column;
2903
+ }
2904
+ :where([data-mode=kk]) .scui-rail-top {
2905
+ height: 49px;
2906
+ flex-shrink: 0;
2907
+ }
2908
+ :where([data-mode=kk]) .scui-rail-top a {
2909
+ width: 100%;
2910
+ height: 100%;
2911
+ display: flex;
2912
+ align-items: center;
2913
+ justify-content: center;
2914
+ }
2915
+ :where([data-mode=kk]) .scui-logo {
2916
+ width: 30px;
2917
+ height: 30px;
2918
+ color: #fff;
2919
+ display: flex;
2920
+ align-items: center;
2921
+ justify-content: center;
2922
+ }
2923
+ :where([data-mode=kk]) .scui-logo svg {
2924
+ width: 30px;
2925
+ height: 30px;
2926
+ }
2927
+ :where([data-mode=kk]) .scui-rail-scroll {
2928
+ overflow: hidden auto;
2929
+ flex: 1;
2930
+ }
2931
+ :where([data-mode=kk]) .scui-rail li {
2932
+ cursor: pointer;
2933
+ width: 65px;
2934
+ height: 65px;
2935
+ color: #fff;
2936
+ text-align: center;
2937
+ display: flex;
2938
+ flex-direction: column;
2939
+ align-items: center;
2940
+ justify-content: center;
2941
+ }
2942
+ :where([data-mode=kk]) .scui-rail li p {
2943
+ margin-top: 5px;
2944
+ font-size: 12px;
2945
+ }
2946
+ :where([data-mode=kk]) .scui-rail li :is(i, svg) {
2947
+ font-size: 18px;
2948
+ width: 18px;
2949
+ height: 18px;
2950
+ flex-shrink: 0;
2951
+ }
2952
+ :where([data-mode=kk]) .scui-rail li:hover {
2953
+ background: rgba(255, 255, 255, 0.1);
2954
+ }
2955
+ :where([data-mode=kk]) .scui-rail li.active {
2956
+ background: var(--scui-primary);
2957
+ }
2958
+ :where([data-mode=kk]) .scui-rail-scroll::-webkit-scrollbar-thumb {
2959
+ background-color: rgba(255, 255, 255, 0.4);
2960
+ border-radius: var(--kk-radius);
2961
+ }
2962
+ :where([data-mode=kk]) .scui-rail-scroll::-webkit-scrollbar {
2963
+ width: 4px;
2964
+ }
2965
+ :where([data-mode=kk]) .scui-panel {
2966
+ display: flex;
2967
+ flex-direction: column;
2968
+ flex-shrink: 0;
2969
+ width: 210px;
2970
+ background: var(--scui-panel-bg);
2971
+ box-shadow: 2px 0 8px 0 rgba(29, 35, 41, 0.05);
2972
+ border-right: 1px solid var(--scui-panel-border);
2973
+ transition: width 0.3s;
2974
+ }
2975
+ :where([data-mode=kk]) .scui-panel.is-collapse {
2976
+ width: 65px;
2977
+ }
2978
+ :where([data-mode=kk]) .scui-panel-top {
2979
+ border-bottom: 1px solid var(--scui-line);
2980
+ height: 50px;
2981
+ line-height: 50px;
2982
+ flex-shrink: 0;
2983
+ overflow: hidden;
2984
+ }
2985
+ :where([data-mode=kk]) .scui-panel-top h2 {
2986
+ margin: 0;
2987
+ padding: 0 20px;
2988
+ font-size: 17px;
2989
+ font-weight: 700;
2990
+ color: var(--scui-panel-title);
2991
+ white-space: nowrap;
2992
+ }
2993
+ :where([data-mode=kk]) .scui-panel.is-collapse .scui-panel-top h2 {
2994
+ visibility: hidden;
2995
+ }
2996
+ :where([data-mode=kk]) .scui-panel-scroll {
2997
+ overflow: hidden auto;
2998
+ flex: 1;
2999
+ }
3000
+ :where([data-mode=kk]) .scui-menu-item {
3001
+ height: 56px;
3002
+ padding: 0 20px;
3003
+ line-height: 56px;
3004
+ display: flex;
3005
+ align-items: center;
3006
+ cursor: pointer;
3007
+ color: var(--scui-text);
3008
+ white-space: nowrap;
3009
+ overflow: hidden;
3010
+ }
3011
+ :where([data-mode=kk]) .scui-menu-item :is(i, svg) {
3012
+ font-size: 18px;
3013
+ width: 24px;
3014
+ height: 18px;
3015
+ line-height: 18px;
3016
+ display: inline-flex;
3017
+ align-items: center;
3018
+ justify-content: center;
3019
+ font-style: normal;
3020
+ margin-right: 5px;
3021
+ flex-shrink: 0;
3022
+ }
3023
+ :where([data-mode=kk]) .scui-menu-item:hover {
3024
+ background: var(--scui-hover);
3025
+ }
3026
+ :where([data-mode=kk]) .scui-menu-item.active {
3027
+ color: var(--scui-primary);
3028
+ background: var(--scui-hover);
3029
+ }
3030
+ :where([data-mode=kk]) .scui-menu-item .menu-tag {
3031
+ margin-left: 5px;
3032
+ background: #f56c6c;
3033
+ color: #fff;
3034
+ font-size: 12px;
3035
+ line-height: 18px;
3036
+ height: 18px;
3037
+ padding: 0 6px;
3038
+ border-radius: var(--kk-radius);
3039
+ }
3040
+ :where([data-mode=kk]) .scui-submenu-title {
3041
+ position: relative;
3042
+ padding-right: 44px;
3043
+ }
3044
+ :where([data-mode=kk]) .scui-menu-item .scui-submenu-arrow {
3045
+ position: absolute;
3046
+ right: 20px;
3047
+ top: 50%;
3048
+ width: 12px;
3049
+ height: 12px;
3050
+ margin-top: -6px;
3051
+ color: var(--scui-text-weak);
3052
+ transition: transform 0.2s;
3053
+ }
3054
+ :where([data-mode=kk]) .scui-submenu-title.is-open .scui-submenu-arrow {
3055
+ transform: rotate(180deg);
3056
+ }
3057
+ :where([data-mode=kk]) .scui-menu-child {
3058
+ height: 50px;
3059
+ line-height: 50px;
3060
+ padding: 0 20px 0 40px;
3061
+ font-size: 14px;
3062
+ }
3063
+ :where([data-mode=kk]) .scui-panel.is-collapse .scui-menu-item {
3064
+ justify-content: center;
3065
+ padding: 0;
3066
+ }
3067
+ :where([data-mode=kk]) .scui-panel.is-collapse .scui-menu-label,
3068
+ :where([data-mode=kk]) .scui-panel.is-collapse .menu-tag {
3069
+ display: none;
3070
+ }
3071
+ :where([data-mode=kk]) .scui-panel-bottom {
3072
+ border-top: 1px solid var(--scui-line);
3073
+ height: 51px;
3074
+ flex-shrink: 0;
3075
+ cursor: pointer;
3076
+ color: var(--scui-text-sub);
3077
+ display: flex;
3078
+ align-items: center;
3079
+ justify-content: center;
3080
+ }
3081
+ :where([data-mode=kk]) .scui-panel-bottom i {
3082
+ font-size: 16px;
3083
+ }
3084
+ :where([data-mode=kk]) .scui-panel-bottom:hover {
3085
+ color: var(--scui-primary);
3086
+ }
3087
+ :where([data-mode=kk]) .scui-body {
3088
+ flex: 1;
3089
+ display: flex;
3090
+ flex-direction: column;
3091
+ min-width: 0;
3092
+ }
3093
+ :where([data-mode=kk]) .scui-topbar {
3094
+ height: 50px;
3095
+ flex-shrink: 0;
3096
+ border-bottom: 1px solid var(--scui-line);
3097
+ background: var(--scui-topbar-bg);
3098
+ box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
3099
+ display: flex;
3100
+ justify-content: space-between;
3101
+ }
3102
+ :where([data-mode=kk]) .scui-topbar-left {
3103
+ display: flex;
3104
+ align-items: center;
3105
+ padding-left: 15px;
3106
+ min-width: 0;
3107
+ }
3108
+ :where([data-mode=kk]) .scui-crumbs {
3109
+ display: flex;
3110
+ align-items: center;
3111
+ font-size: 14px;
3112
+ }
3113
+ :where([data-mode=kk]) .scui-crumb {
3114
+ display: inline-flex;
3115
+ align-items: center;
3116
+ gap: 4px;
3117
+ color: var(--scui-text-sub);
3118
+ white-space: nowrap;
3119
+ }
3120
+ :where([data-mode=kk]) .scui-crumb.is-link:hover {
3121
+ color: var(--scui-primary);
3122
+ cursor: pointer;
3123
+ }
3124
+ :where([data-mode=kk]) .scui-crumb i {
3125
+ font-size: 14px;
3126
+ }
3127
+ :where([data-mode=kk]) .scui-crumb-sep {
3128
+ margin: 0 9px;
3129
+ color: var(--scui-crumb-sep);
3130
+ font-weight: 700;
3131
+ }
3132
+ :where([data-mode=kk]) .scui-topbar-right {
3133
+ display: flex;
3134
+ align-items: center;
3135
+ flex-shrink: 0;
3136
+ }
3137
+ :where([data-mode=kk]) .scui-panel-item {
3138
+ position: relative;
3139
+ height: 49px;
3140
+ padding: 0 10px;
3141
+ display: flex;
3142
+ align-items: center;
3143
+ font-size: 16px;
3144
+ }
3145
+ :where([data-mode=kk]) .scui-panel-item:hover {
3146
+ background: var(--scui-fill-hover);
3147
+ }
3148
+ :where([data-mode=kk]) .scui-panel-item sup {
3149
+ position: absolute;
3150
+ top: 6px;
3151
+ right: 1px;
3152
+ background: #f56c6c;
3153
+ color: #fff;
3154
+ font-size: 12px;
3155
+ line-height: 18px;
3156
+ height: 18px;
3157
+ padding: 0 6px;
3158
+ border-radius: var(--kk-radius);
3159
+ border: 1px solid var(--scui-topbar-bg);
3160
+ }
3161
+ :where([data-mode=kk]) .scui-user {
3162
+ height: 49px;
3163
+ padding: 0 10px;
3164
+ display: flex;
3165
+ align-items: center;
3166
+ font-size: 12px;
3167
+ color: var(--scui-text-sub);
3168
+ }
3169
+ :where([data-mode=kk]) .scui-user:hover {
3170
+ background: var(--scui-fill-hover);
3171
+ }
3172
+ :where([data-mode=kk]) .scui-avatar {
3173
+ width: 30px;
3174
+ height: 30px;
3175
+ border-radius: 50%;
3176
+ background: #c0c4cc;
3177
+ color: #fff;
3178
+ font-size: 14px;
3179
+ display: flex;
3180
+ align-items: center;
3181
+ justify-content: center;
3182
+ flex-shrink: 0;
3183
+ }
3184
+ :where([data-mode=kk]) .scui-user-name {
3185
+ margin-left: 5px;
3186
+ }
3187
+ :where([data-mode=kk]) .scui-user i {
3188
+ margin-left: 5px;
3189
+ font-size: 14px;
3190
+ }
3191
+ :where([data-mode=kk]) .scui-tags {
3192
+ height: 35px;
3193
+ flex-shrink: 0;
3194
+ background: var(--scui-topbar-bg);
3195
+ border-bottom: 1px solid var(--scui-line2);
3196
+ }
3197
+ :where([data-mode=kk]) .scui-tags ul {
3198
+ display: flex;
3199
+ overflow: hidden;
3200
+ }
3201
+ :where([data-mode=kk]) .scui-tags li {
3202
+ cursor: pointer;
3203
+ display: inline-flex;
3204
+ align-items: center;
3205
+ height: 34px;
3206
+ position: relative;
3207
+ flex-shrink: 0;
3208
+ }
3209
+ :where([data-mode=kk]) .scui-tags li::after {
3210
+ content: " ";
3211
+ width: 1px;
3212
+ height: 100%;
3213
+ position: absolute;
3214
+ right: 0;
3215
+ background-image: linear-gradient(var(--scui-topbar-bg), var(--scui-line2));
3216
+ }
3217
+ :where([data-mode=kk]) .scui-tags li:hover {
3218
+ background-color: var(--scui-hover);
3219
+ }
3220
+ :where([data-mode=kk]) .scui-tags li.active {
3221
+ background-color: var(--scui-primary);
3222
+ }
3223
+ :where([data-mode=kk]) .scui-tags li a {
3224
+ padding: 0 10px;
3225
+ width: 100%;
3226
+ height: 100%;
3227
+ color: var(--scui-text-weak);
3228
+ font-size: 12px;
3229
+ display: flex;
3230
+ align-items: center;
3231
+ }
3232
+ :where([data-mode=kk]) .scui-tags li.active a {
3233
+ color: #fff;
3234
+ }
3235
+ :where([data-mode=kk]) .scui-tags li > i {
3236
+ margin: 0 10px 0 0;
3237
+ border-radius: var(--kk-radius);
3238
+ width: 18px;
3239
+ height: 18px;
3240
+ font-size: 12px;
3241
+ display: flex;
3242
+ align-items: center;
3243
+ justify-content: center;
3244
+ color: inherit;
3245
+ }
3246
+ :where([data-mode=kk]) .scui-tags li > i:hover {
3247
+ background: rgba(0, 0, 0, 0.2);
3248
+ color: #fff;
3249
+ }
3250
+ :where([data-mode=kk]) .scui-tags li.active > i {
3251
+ color: #fff;
3252
+ }
3253
+ :where([data-mode=kk]) .scui-main {
3254
+ overflow: auto;
3255
+ background-color: var(--scui-main-bg);
3256
+ flex: 1;
3257
+ min-height: 0;
3258
+ }
3259
+ :where([data-mode=kk]) .scui-tab-backdrop {
3260
+ position: fixed;
3261
+ inset: 0;
3262
+ z-index: 998;
3263
+ }
3264
+ :where([data-mode=kk]) .scui-tab-menu {
3265
+ position: fixed;
3266
+ z-index: 999;
3267
+ min-width: 168px;
3268
+ padding: 5px 0;
3269
+ background: var(--scui-topbar-bg);
3270
+ border: 1px solid var(--scui-line-strong);
3271
+ border-radius: var(--kk-radius);
3272
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.12);
3273
+ font-size: 12px;
3274
+ color: var(--scui-text);
3275
+ }
3276
+ :where([data-mode=kk]) .scui-tab-menu__item {
3277
+ display: flex;
3278
+ align-items: center;
3279
+ gap: 8px;
3280
+ width: 100%;
3281
+ height: 30px;
3282
+ padding: 0 12px;
3283
+ border: 0;
3284
+ background: transparent;
3285
+ font: inherit;
3286
+ color: inherit;
3287
+ text-align: left;
3288
+ cursor: pointer;
3289
+ }
3290
+ :where([data-mode=kk]) .scui-tab-menu__item i {
3291
+ font-size: 14px;
3292
+ color: var(--scui-text-weak);
3293
+ }
3294
+ :where([data-mode=kk]) .scui-tab-menu__item:hover {
3295
+ background: var(--scui-hover);
3296
+ color: var(--scui-primary);
3297
+ }
3298
+ :where([data-mode=kk]) .scui-tab-menu__item:hover i {
3299
+ color: var(--scui-primary);
3300
+ }
3301
+ :where([data-mode=kk]) .scui-tab-menu__item.is-disabled {
3302
+ opacity: 0.45;
3303
+ cursor: not-allowed;
3304
+ }
3305
+ :where([data-mode=kk]).scui.is-max .scui-rail,
3306
+ :where([data-mode=kk]).scui.is-max .scui-panel {
3307
+ display: none;
3308
+ }
3309
+ :where([data-mode=kk]) .scui-gear {
3310
+ position: fixed;
3311
+ right: 0;
3312
+ bottom: 100px;
3313
+ z-index: 100;
3314
+ width: 40px;
3315
+ height: 40px;
3316
+ color: #fff;
3317
+ font-size: 18px;
3318
+ background: var(--scui-primary);
3319
+ border-radius: var(--kk-radius) 0 0 var(--kk-radius);
3320
+ display: flex;
3321
+ align-items: center;
3322
+ justify-content: center;
3323
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
3324
+ }
3325
+ :where([data-mode=kk]) .scui-gear:hover {
3326
+ filter: brightness(1.06);
3327
+ }
3328
+ :where([data-mode=kk]) .scui-mask {
3329
+ position: fixed;
3330
+ inset: 0;
3331
+ z-index: 2000;
3332
+ background: rgba(0, 0, 0, 0.4);
3333
+ display: flex;
3334
+ justify-content: flex-end;
3335
+ }
3336
+ :where([data-mode=kk]) .scui-drawer {
3337
+ width: 300px;
3338
+ height: 100%;
3339
+ display: flex;
3340
+ flex-direction: column;
3341
+ background: var(--scui-topbar-bg);
3342
+ box-shadow: -6px 0 16px rgba(0, 0, 0, 0.08);
3343
+ }
3344
+ :where([data-mode=kk]) .scui-drawer-head {
3345
+ padding: 20px 20px 12px;
3346
+ font-size: 16px;
3347
+ color: var(--scui-text);
3348
+ display: flex;
3349
+ align-items: center;
3350
+ justify-content: space-between;
3351
+ }
3352
+ :where([data-mode=kk]) .scui-drawer-head i {
3353
+ font-size: 16px;
3354
+ color: var(--scui-text-weak);
3355
+ }
3356
+ :where([data-mode=kk]) .scui-drawer-body {
3357
+ flex: 1;
3358
+ overflow: auto;
3359
+ padding: 8px 20px 20px;
3360
+ }
3361
+ :where([data-mode=kk]) .scui-field {
3362
+ margin-bottom: 22px;
3363
+ }
3364
+ :where([data-mode=kk]) .scui-field-title {
3365
+ display: block;
3366
+ font-size: 12px;
3367
+ color: var(--scui-text-weak);
3368
+ margin-bottom: 10px;
3369
+ }
3370
+ :where([data-mode=kk]) .scui-row {
3371
+ display: flex;
3372
+ align-items: center;
3373
+ justify-content: space-between;
3374
+ }
3375
+ :where([data-mode=kk]) .scui-switch {
3376
+ position: relative;
3377
+ width: 40px;
3378
+ height: 20px;
3379
+ border-radius: 10px;
3380
+ cursor: pointer;
3381
+ flex-shrink: 0;
3382
+ background: var(--scui-switch-off);
3383
+ border: 1px solid var(--scui-switch-off);
3384
+ transition: 0.2s;
3385
+ }
3386
+ :where([data-mode=kk]) .scui-switch i {
3387
+ position: absolute;
3388
+ top: 1px;
3389
+ left: 1px;
3390
+ width: 16px;
3391
+ height: 16px;
3392
+ border-radius: 50%;
3393
+ background: #fff;
3394
+ transition: 0.2s;
3395
+ }
3396
+ :where([data-mode=kk]) .scui-switch.on {
3397
+ background: var(--scui-primary);
3398
+ border-color: var(--scui-primary);
3399
+ }
3400
+ :where([data-mode=kk]) .scui-switch.on i {
3401
+ left: 21px;
3402
+ }
3403
+ :where([data-mode=kk]) .scui-swatches {
3404
+ display: flex;
3405
+ flex-wrap: wrap;
3406
+ gap: 8px;
3407
+ }
3408
+ :where([data-mode=kk]) .scui-swatch {
3409
+ width: 20px;
3410
+ height: 20px;
3411
+ border-radius: var(--kk-radius);
3412
+ cursor: pointer;
3413
+ border: 1px solid rgba(0, 0, 0, 0.06);
3414
+ }
3415
+ :where([data-mode=kk]) .scui-swatch.on {
3416
+ outline: 2px solid var(--scui-primary);
3417
+ outline-offset: 1px;
3418
+ }
3419
+ :where([data-mode=kk]) .scui-select {
3420
+ width: 100%;
3421
+ height: 32px;
3422
+ padding: 0 8px;
3423
+ border-radius: var(--kk-radius);
3424
+ border: 1px solid var(--scui-line2);
3425
+ background: var(--scui-topbar-bg);
3426
+ color: var(--scui-text);
3427
+ font: inherit;
3428
+ font-size: 13px;
3429
+ }
3430
+ :where([data-mode=kk]) .scui-drawer-foot {
3431
+ padding: 12px 20px;
3432
+ border-top: 1px solid var(--scui-line);
3433
+ display: flex;
3434
+ justify-content: flex-end;
3435
+ }
3436
+ :where([data-mode=kk]) .scui-btn {
3437
+ border: 1px solid var(--scui-line2);
3438
+ border-radius: var(--kk-radius);
3439
+ padding: 8px 15px;
3440
+ font-size: 12px;
3441
+ }
3442
+ :where([data-mode=kk]) .scui-btn:hover {
3443
+ color: var(--scui-primary);
3444
+ border-color: var(--scui-primary);
3445
+ }
3446
+ :where([data-mode=kk]) .scui,
3447
+ .scui:where([data-mode=kk]) {
3448
+ --scui-primary: #409eff;
3449
+ --scui-rail-bg: #222b45;
3450
+ --scui-panel-bg: #fff;
3451
+ --scui-panel-border: #e6e6e6;
3452
+ --scui-line: #ebeef5;
3453
+ --scui-line2: #e6e6e6;
3454
+ --scui-topbar-bg: #fff;
3455
+ --scui-main-bg: #f6f8f9;
3456
+ --scui-text: #303133;
3457
+ --scui-text-sub: #606266;
3458
+ --scui-text-weak: #999;
3459
+ --scui-panel-title: #3c4a54;
3460
+ --scui-crumb-sep: #c0c4cc;
3461
+ --scui-hover: #ecf5ff;
3462
+ --scui-fill-hover: #f5f7fa;
3463
+ --scui-switch-off: rgba(0, 0, 0, 0.25);
3464
+ }
3465
+ :where([data-mode=kk]) .scui.is-dark,
3466
+ .scui.is-dark:where([data-mode=kk]) {
3467
+ --scui-rail-bg: #141414;
3468
+ --scui-panel-bg: #1d1e1f;
3469
+ --scui-panel-border: #414243;
3470
+ --scui-line: #414243;
3471
+ --scui-line2: #414243;
3472
+ --scui-topbar-bg: #1d1e1f;
3473
+ --scui-main-bg: #141414;
3474
+ --scui-text: #d0d0d0;
3475
+ --scui-text-sub: #cfd3da;
3476
+ --scui-text-weak: #999;
3477
+ --scui-panel-title: #d0d0d0;
3478
+ --scui-crumb-sep: #6c6e72;
3479
+ --scui-hover: #0c1f32;
3480
+ --scui-fill-hover: #262727;
3481
+ --scui-switch-off: #4c4d4f;
3482
+ }
3483
+
853
3484
  /* src/styles/tokens/typography.css */
854
3485
  :root {
855
3486
  --klun-font-sans:
@@ -1895,6 +4526,154 @@ body {
1895
4526
  font-size: 20px;
1896
4527
  }
1897
4528
 
4529
+ /* src/components/buttons/Toggle.css */
4530
+ .klun-toggle {
4531
+ display: inline-flex;
4532
+ align-items: center;
4533
+ justify-content: center;
4534
+ gap: 4px;
4535
+ border: 0;
4536
+ background: transparent;
4537
+ color: var(--klun-text-sub-600);
4538
+ font: var(--klun-text-label-sm);
4539
+ cursor: pointer;
4540
+ user-select: none;
4541
+ white-space: nowrap;
4542
+ transition:
4543
+ background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease),
4544
+ color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease),
4545
+ box-shadow var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
4546
+ }
4547
+ .klun-toggle--small {
4548
+ height: 28px;
4549
+ min-width: 28px;
4550
+ padding: 0 6px;
4551
+ border-radius: var(--klun-radius-md);
4552
+ font: var(--klun-text-label-xs);
4553
+ }
4554
+ .klun-toggle--medium {
4555
+ height: 32px;
4556
+ min-width: 32px;
4557
+ padding: 0 8px;
4558
+ border-radius: var(--klun-radius-md);
4559
+ }
4560
+ .klun-toggle--large {
4561
+ height: 36px;
4562
+ min-width: 36px;
4563
+ padding: 0 10px;
4564
+ border-radius: var(--klun-radius-lg);
4565
+ }
4566
+ .klun-toggle--outline {
4567
+ box-shadow: inset 0 0 0 1px var(--klun-stroke-soft-200);
4568
+ }
4569
+ .klun-toggle:hover:not(:disabled) {
4570
+ background: var(--klun-bg-weak-50);
4571
+ color: var(--klun-text-strong-950);
4572
+ }
4573
+ .klun-toggle[aria-pressed=true] {
4574
+ background: var(--klun-bg-soft-200);
4575
+ color: var(--klun-text-strong-950);
4576
+ }
4577
+ .klun-toggle:focus-visible {
4578
+ outline: none;
4579
+ box-shadow: var(--klun-shadow-button-important-focus);
4580
+ }
4581
+ .klun-toggle:disabled {
4582
+ opacity: 0.4;
4583
+ cursor: not-allowed;
4584
+ }
4585
+ .klun-toggle i {
4586
+ font-size: 16px;
4587
+ line-height: 1;
4588
+ }
4589
+
4590
+ /* src/components/data-display/ActivityHeatmap.css */
4591
+ .klun-activity-heatmap {
4592
+ display: flex;
4593
+ flex-direction: column;
4594
+ align-items: center;
4595
+ gap: 8px;
4596
+ }
4597
+ .klun-activity-heatmap__scroll {
4598
+ max-width: 100%;
4599
+ overflow-x: auto;
4600
+ }
4601
+ .klun-activity-heatmap__svg {
4602
+ display: block;
4603
+ }
4604
+ .klun-activity-heatmap__label {
4605
+ fill: var(--klun-text-sub-600);
4606
+ }
4607
+ .klun-activity-heatmap__cell {
4608
+ transition: opacity var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
4609
+ }
4610
+ .klun-activity-heatmap__cell:hover {
4611
+ opacity: 0.75;
4612
+ }
4613
+ .klun-activity-heatmap__legend {
4614
+ display: flex;
4615
+ align-items: center;
4616
+ gap: 4px;
4617
+ font: var(--klun-text-label-xs);
4618
+ color: var(--klun-text-sub-600);
4619
+ }
4620
+ .klun-activity-heatmap__swatch {
4621
+ width: 10px;
4622
+ height: 10px;
4623
+ border-radius: 2px;
4624
+ }
4625
+
4626
+ /* src/components/data-display/ActorAvatar.css */
4627
+ .klun-actor-avatar {
4628
+ --_px: 24px;
4629
+ position: relative;
4630
+ display: inline-flex;
4631
+ flex: none;
4632
+ align-items: center;
4633
+ justify-content: center;
4634
+ width: var(--_px);
4635
+ height: var(--_px);
4636
+ overflow: hidden;
4637
+ border-radius: var(--klun-radius-pill);
4638
+ font-weight: var(--klun-font-weight-medium, 500);
4639
+ font-size: calc(var(--_px) * 0.45);
4640
+ background: var(--klun-bg-weak-50);
4641
+ color: var(--klun-text-sub-600);
4642
+ user-select: none;
4643
+ }
4644
+ .klun-actor-avatar--20 {
4645
+ --_px: 20px;
4646
+ }
4647
+ .klun-actor-avatar--24 {
4648
+ --_px: 24px;
4649
+ }
4650
+ .klun-actor-avatar--32 {
4651
+ --_px: 32px;
4652
+ }
4653
+ .klun-actor-avatar--40 {
4654
+ --_px: 40px;
4655
+ }
4656
+ .klun-actor-avatar--56 {
4657
+ --_px: 56px;
4658
+ }
4659
+ .klun-actor-avatar__img {
4660
+ width: 100%;
4661
+ height: 100%;
4662
+ object-fit: cover;
4663
+ }
4664
+ .klun-actor-avatar__emoji {
4665
+ font-size: calc(var(--_px) * 0.58);
4666
+ line-height: 1;
4667
+ }
4668
+ .klun-actor-avatar__icon {
4669
+ font-size: calc(var(--_px) * 0.55);
4670
+ line-height: 1;
4671
+ color: currentColor;
4672
+ }
4673
+ .klun-actor-avatar__initials {
4674
+ line-height: 1;
4675
+ }
4676
+
1898
4677
  /* src/components/data-display/Avatar.css */
1899
4678
  .klun-avatar {
1900
4679
  --_bg: var(--klun-bg-weak-50);
@@ -3153,22 +5932,134 @@ body {
3153
5932
  font-family: inherit;
3154
5933
  color: var(--klun-text-strong-950);
3155
5934
  }
3156
- .klun-diff--dark {
3157
- background: var(--klun-bg-strong-950);
3158
- border-color: var(--klun-bg-strong-950);
3159
- color: var(--klun-text-white-0);
5935
+ .klun-diff--dark {
5936
+ background: var(--klun-bg-strong-950);
5937
+ border-color: var(--klun-bg-strong-950);
5938
+ color: var(--klun-text-white-0);
5939
+ }
5940
+ .klun-diff--dark .klun-diff__header,
5941
+ .klun-diff--dark .klun-diff__gutter,
5942
+ .klun-diff--dark .klun-diff__code--empty,
5943
+ .klun-diff--dark .klun-diff__comment {
5944
+ background: var(--klun-bg-surface-800);
5945
+ border-color: var(--klun-bg-surface-800);
5946
+ }
5947
+ .klun-diff--dark .klun-diff__filename,
5948
+ .klun-diff--dark .klun-diff__code,
5949
+ .klun-diff--dark .klun-diff__comment {
5950
+ color: var(--klun-text-white-0);
5951
+ }
5952
+
5953
+ /* src/components/data-display/Item.css */
5954
+ .klun-item-group {
5955
+ display: flex;
5956
+ flex-direction: column;
5957
+ gap: 16px;
5958
+ width: 100%;
5959
+ }
5960
+ .klun-item {
5961
+ box-sizing: border-box;
5962
+ display: flex;
5963
+ flex-wrap: wrap;
5964
+ align-items: center;
5965
+ width: 100%;
5966
+ border-radius: var(--klun-radius-lg);
5967
+ color: var(--klun-text-strong-950);
5968
+ font: var(--klun-text-paragraph-sm);
5969
+ transition: background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
5970
+ }
5971
+ .klun-item--default {
5972
+ padding: 10px 12px;
5973
+ gap: 10px;
5974
+ }
5975
+ .klun-item--small {
5976
+ padding: 10px 12px;
5977
+ gap: 10px;
5978
+ }
5979
+ .klun-item--xsmall {
5980
+ padding: 8px 10px;
5981
+ gap: 8px;
5982
+ }
5983
+ .klun-item--outline {
5984
+ box-shadow: inset 0 0 0 1px var(--klun-stroke-soft-200);
5985
+ }
5986
+ .klun-item--muted {
5987
+ background: var(--klun-bg-weak-50);
5988
+ }
5989
+ .klun-item:focus-visible {
5990
+ outline: none;
5991
+ box-shadow: var(--klun-shadow-button-important-focus);
5992
+ }
5993
+ .klun-item__media {
5994
+ flex: none;
5995
+ display: flex;
5996
+ align-items: center;
5997
+ justify-content: center;
5998
+ gap: 8px;
5999
+ }
6000
+ .klun-item__media i {
6001
+ font-size: 16px;
6002
+ line-height: 1;
6003
+ }
6004
+ .klun-item__media[data-variant=image] {
6005
+ width: 40px;
6006
+ height: 40px;
6007
+ overflow: hidden;
6008
+ border-radius: var(--klun-radius-sm);
6009
+ }
6010
+ .klun-item__media[data-variant=image] img {
6011
+ width: 100%;
6012
+ height: 100%;
6013
+ object-fit: cover;
6014
+ }
6015
+ .klun-item--small .klun-item__media[data-variant=image] {
6016
+ width: 32px;
6017
+ height: 32px;
6018
+ }
6019
+ .klun-item--xsmall .klun-item__media[data-variant=image] {
6020
+ width: 24px;
6021
+ height: 24px;
6022
+ }
6023
+ .klun-item:has(.klun-item__description) .klun-item__media {
6024
+ align-self: flex-start;
6025
+ margin-top: 2px;
6026
+ }
6027
+ .klun-item__content {
6028
+ flex: 1;
6029
+ min-width: 0;
6030
+ display: flex;
6031
+ flex-direction: column;
6032
+ gap: 2px;
6033
+ }
6034
+ .klun-item__title {
6035
+ font: var(--klun-text-label-sm);
6036
+ color: var(--klun-text-strong-950);
6037
+ overflow: hidden;
6038
+ text-overflow: ellipsis;
6039
+ }
6040
+ .klun-item__description {
6041
+ font: var(--klun-text-paragraph-xs);
6042
+ color: var(--klun-text-sub-600);
3160
6043
  }
3161
- .klun-diff--dark .klun-diff__header,
3162
- .klun-diff--dark .klun-diff__gutter,
3163
- .klun-diff--dark .klun-diff__code--empty,
3164
- .klun-diff--dark .klun-diff__comment {
3165
- background: var(--klun-bg-surface-800);
3166
- border-color: var(--klun-bg-surface-800);
6044
+ .klun-item__actions {
6045
+ flex: none;
6046
+ display: flex;
6047
+ align-items: center;
6048
+ gap: 8px;
6049
+ margin-left: auto;
3167
6050
  }
3168
- .klun-diff--dark .klun-diff__filename,
3169
- .klun-diff--dark .klun-diff__code,
3170
- .klun-diff--dark .klun-diff__comment {
3171
- color: var(--klun-text-white-0);
6051
+ .klun-item__header,
6052
+ .klun-item__footer {
6053
+ flex-basis: 100%;
6054
+ display: flex;
6055
+ align-items: center;
6056
+ justify-content: space-between;
6057
+ gap: 8px;
6058
+ }
6059
+ .klun-item-separator {
6060
+ height: 1px;
6061
+ margin: 8px 0;
6062
+ background: var(--klun-stroke-soft-200);
3172
6063
  }
3173
6064
 
3174
6065
  /* src/components/data-display/Kanban.css */
@@ -3236,6 +6127,7 @@ body {
3236
6127
  box-shadow: var(--klun-shadow-xs, 0 1px 2px rgba(14, 18, 27, 0.06)), inset 0 0 0 1px var(--klun-stroke-soft-200);
3237
6128
  cursor: grab;
3238
6129
  transition: transform var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
6130
+ touch-action: none;
3239
6131
  }
3240
6132
  .klun-kanban__card:hover {
3241
6133
  transform: translateY(-1px);
@@ -3532,6 +6424,120 @@ body {
3532
6424
  flex: none;
3533
6425
  }
3534
6426
 
6427
+ /* src/components/data-display/ListGrid.css */
6428
+ .klun-list-grid {
6429
+ display: grid;
6430
+ width: 100%;
6431
+ min-width: 0;
6432
+ align-content: start;
6433
+ column-gap: 12px;
6434
+ }
6435
+ .klun-list-grid__header {
6436
+ grid-column: 1 / -1;
6437
+ display: grid;
6438
+ grid-template-columns: subgrid;
6439
+ align-items: center;
6440
+ height: 36px;
6441
+ position: sticky;
6442
+ top: 0;
6443
+ z-index: 1;
6444
+ background: var(--klun-bg-white-0);
6445
+ }
6446
+ .klun-list-grid__header::after {
6447
+ content: "";
6448
+ position: absolute;
6449
+ left: 0;
6450
+ right: 0;
6451
+ top: 100%;
6452
+ height: 12px;
6453
+ pointer-events: none;
6454
+ background:
6455
+ linear-gradient(
6456
+ to bottom,
6457
+ var(--klun-bg-white-0),
6458
+ transparent);
6459
+ }
6460
+ .klun-list-grid__header-cell {
6461
+ display: flex;
6462
+ min-width: 0;
6463
+ align-items: center;
6464
+ padding: 0 8px;
6465
+ font: var(--klun-text-label-xs);
6466
+ color: var(--klun-text-sub-600);
6467
+ }
6468
+ .klun-list-grid__header-cell[data-align=right] {
6469
+ justify-content: flex-end;
6470
+ }
6471
+ .klun-list-grid__sort {
6472
+ display: flex;
6473
+ align-items: center;
6474
+ gap: 2px;
6475
+ height: 24px;
6476
+ margin-left: -6px;
6477
+ padding: 0 4px 0 6px;
6478
+ border: 0;
6479
+ border-radius: var(--klun-radius-md);
6480
+ background: transparent;
6481
+ font: inherit;
6482
+ color: inherit;
6483
+ cursor: pointer;
6484
+ transition: background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease), color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
6485
+ }
6486
+ .klun-list-grid__header-cell[data-align=right] .klun-list-grid__sort {
6487
+ flex-direction: row-reverse;
6488
+ margin-left: 0;
6489
+ margin-right: -6px;
6490
+ padding: 0 6px 0 4px;
6491
+ }
6492
+ .klun-list-grid__sort:hover {
6493
+ background: var(--klun-bg-weak-50);
6494
+ color: var(--klun-text-strong-950);
6495
+ }
6496
+ .klun-list-grid__sort:focus-visible {
6497
+ outline: none;
6498
+ box-shadow: var(--klun-shadow-button-important-focus);
6499
+ }
6500
+ .klun-list-grid__header-cell[data-sorted] .klun-list-grid__sort {
6501
+ font-weight: var(--klun-font-weight-medium, 500);
6502
+ color: var(--klun-text-strong-950);
6503
+ }
6504
+ .klun-list-grid__sort-icon {
6505
+ flex: none;
6506
+ font-size: 12px;
6507
+ opacity: 0;
6508
+ transition: opacity var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
6509
+ }
6510
+ .klun-list-grid__sort:hover .klun-list-grid__sort-icon {
6511
+ opacity: 0.5;
6512
+ }
6513
+ .klun-list-grid__header-cell[data-sorted] .klun-list-grid__sort-icon {
6514
+ opacity: 1;
6515
+ }
6516
+ .klun-list-grid__body {
6517
+ grid-column: 1 / -1;
6518
+ display: grid;
6519
+ grid-template-columns: subgrid;
6520
+ align-content: start;
6521
+ }
6522
+ .klun-list-grid__row {
6523
+ grid-column: 1 / -1;
6524
+ display: grid;
6525
+ grid-template-columns: subgrid;
6526
+ align-items: center;
6527
+ height: 48px;
6528
+ transition: background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
6529
+ }
6530
+ .klun-list-grid__row:hover {
6531
+ background: var(--klun-bg-weak-50);
6532
+ }
6533
+ .klun-list-grid__cell {
6534
+ display: flex;
6535
+ min-width: 0;
6536
+ align-items: center;
6537
+ overflow: hidden;
6538
+ padding: 0 8px;
6539
+ }
6540
+
3535
6541
  /* src/components/data-display/Markdown.css */
3536
6542
  .klun-md {
3537
6543
  font: var(--klun-text-paragraph-sm);
@@ -3719,6 +6725,38 @@ body {
3719
6725
  color: var(--klun-text-soft-400);
3720
6726
  }
3721
6727
 
6728
+ /* src/components/data-display/NumberFlow.css */
6729
+ .klun-number-flow {
6730
+ display: inline-block;
6731
+ white-space: nowrap;
6732
+ font-variant-numeric: tabular-nums;
6733
+ }
6734
+ .klun-number-flow__digit {
6735
+ display: inline-block;
6736
+ height: 1em;
6737
+ overflow: hidden;
6738
+ vertical-align: var(--klun-number-flow-baseline, -0.2em);
6739
+ }
6740
+ .klun-number-flow__track {
6741
+ display: block;
6742
+ transition: transform var(--klun-number-flow-duration, var(--klun-duration-500, 0.5s)) var(--klun-ease-in-out, cubic-bezier(0.4, 0, 0.2, 1));
6743
+ }
6744
+ .klun-number-flow__num {
6745
+ display: block;
6746
+ height: 1em;
6747
+ line-height: 1;
6748
+ text-align: center;
6749
+ }
6750
+ .klun-number-flow__char,
6751
+ .klun-number-flow__affix {
6752
+ display: inline-block;
6753
+ }
6754
+ @media (prefers-reduced-motion: reduce) {
6755
+ .klun-number-flow__track {
6756
+ transition: none;
6757
+ }
6758
+ }
6759
+
3722
6760
  /* src/components/data-display/Rating.css */
3723
6761
  .klun-rating {
3724
6762
  display: inline-flex;
@@ -3740,6 +6778,49 @@ body {
3740
6778
  cursor: default;
3741
6779
  }
3742
6780
 
6781
+ /* src/components/data-display/ReactionBar.css */
6782
+ .klun-reaction-bar {
6783
+ display: flex;
6784
+ flex-wrap: wrap;
6785
+ align-items: center;
6786
+ gap: 6px;
6787
+ }
6788
+ .klun-reaction {
6789
+ display: inline-flex;
6790
+ align-items: center;
6791
+ gap: 4px;
6792
+ padding: 2px 8px;
6793
+ border: 1px solid var(--klun-stroke-soft-200);
6794
+ border-radius: var(--klun-radius-pill);
6795
+ background: var(--klun-bg-weak-50);
6796
+ color: var(--klun-text-sub-600);
6797
+ font: var(--klun-text-label-xs);
6798
+ cursor: pointer;
6799
+ transition:
6800
+ background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease),
6801
+ border-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease),
6802
+ color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
6803
+ }
6804
+ .klun-reaction:hover {
6805
+ background: var(--klun-bg-soft-200);
6806
+ }
6807
+ .klun-reaction[data-reacted] {
6808
+ border-color: var(--klun-alpha-primary-alpha-24);
6809
+ background: var(--klun-alpha-primary-alpha-10);
6810
+ color: var(--klun-primary-base);
6811
+ }
6812
+ .klun-reaction:focus-visible {
6813
+ outline: none;
6814
+ box-shadow: var(--klun-shadow-button-important-focus);
6815
+ }
6816
+ .klun-reaction__emoji {
6817
+ line-height: 1;
6818
+ }
6819
+ .klun-reaction__count {
6820
+ line-height: 16px;
6821
+ font-variant-numeric: tabular-nums;
6822
+ }
6823
+
3743
6824
  /* src/components/data-display/RelativeTime.css */
3744
6825
  .klun-relative-time {
3745
6826
  font-variant-numeric: tabular-nums;
@@ -3767,6 +6848,71 @@ body {
3767
6848
  font-size: 15px;
3768
6849
  }
3769
6850
 
6851
+ /* src/components/data-display/ShimmerText.css */
6852
+ @keyframes klun-shimmer-text-window {
6853
+ from {
6854
+ transform: translateX(-66.6666666667%);
6855
+ }
6856
+ to {
6857
+ transform: translateX(0%);
6858
+ }
6859
+ }
6860
+ @keyframes klun-shimmer-text-copy {
6861
+ from {
6862
+ transform: translateX(400%);
6863
+ }
6864
+ to {
6865
+ transform: translateX(0%);
6866
+ }
6867
+ }
6868
+ .klun-shimmer-text {
6869
+ display: inline-block;
6870
+ position: relative;
6871
+ max-width: 100%;
6872
+ overflow: hidden;
6873
+ vertical-align: bottom;
6874
+ white-space: nowrap;
6875
+ text-overflow: ellipsis;
6876
+ color: var(--klun-text-sub-600);
6877
+ }
6878
+ .klun-shimmer-text--static {
6879
+ color: inherit;
6880
+ }
6881
+ .klun-shimmer-text__window {
6882
+ position: absolute;
6883
+ top: 0;
6884
+ left: 0;
6885
+ width: 600%;
6886
+ height: 100%;
6887
+ pointer-events: none;
6888
+ user-select: none;
6889
+ mask-image:
6890
+ linear-gradient(
6891
+ 90deg,
6892
+ transparent 35%,
6893
+ black 50%,
6894
+ transparent 65%);
6895
+ mask-size: calc(100% / 3) 100%;
6896
+ mask-repeat: repeat-x;
6897
+ animation: klun-shimmer-text-window 2.5s linear infinite;
6898
+ }
6899
+ .klun-shimmer-text__copy {
6900
+ display: block;
6901
+ position: absolute;
6902
+ top: 0;
6903
+ left: 0;
6904
+ width: calc(100% / 6);
6905
+ overflow: hidden;
6906
+ text-overflow: ellipsis;
6907
+ color: var(--klun-text-strong-950);
6908
+ animation: klun-shimmer-text-copy 2.5s linear infinite;
6909
+ }
6910
+ @media (prefers-reduced-motion: reduce) {
6911
+ .klun-shimmer-text__window {
6912
+ display: none;
6913
+ }
6914
+ }
6915
+
3770
6916
  /* src/components/data-display/StatCard.css */
3771
6917
  .klun-stat-card {
3772
6918
  --_tint-bg: var(--klun-state-feature-lighter);
@@ -4135,6 +7281,12 @@ body {
4135
7281
  }
4136
7282
  .klun-table__td--util {
4137
7283
  width: 40px;
7284
+ cursor: grab;
7285
+ user-select: none;
7286
+ touch-action: none;
7287
+ }
7288
+ .klun-table__td--util:active {
7289
+ cursor: grabbing;
4138
7290
  }
4139
7291
  .klun-table__td--nowrap {
4140
7292
  white-space: nowrap;
@@ -4170,13 +7322,10 @@ body {
4170
7322
  cursor: pointer;
4171
7323
  }
4172
7324
  .klun-table__row--dragging {
4173
- opacity: 0.5;
4174
- }
4175
- .klun-table__row--dropover {
4176
- box-shadow: inset 0 2px 0 var(--klun-primary-base);
4177
- }
4178
- .klun-table__row--dropover-after {
4179
- box-shadow: inset 0 -2px 0 var(--klun-primary-base);
7325
+ position: relative;
7326
+ z-index: 2;
7327
+ background: var(--klun-bg-white-0);
7328
+ box-shadow: var(--klun-shadow-lg);
4180
7329
  }
4181
7330
  .klun-table__row--status-success {
4182
7331
  background: var(--klun-state-success-lighter, var(--klun-green-50));
@@ -5383,6 +8532,79 @@ body {
5383
8532
  padding: 2px;
5384
8533
  }
5385
8534
 
8535
+ /* src/components/feedback/BorderBeam.css */
8536
+ @keyframes klun-border-beam-rotate {
8537
+ from {
8538
+ transform: translate(-50%, -50%) rotate(0turn);
8539
+ }
8540
+ to {
8541
+ transform: translate(-50%, -50%) rotate(1turn);
8542
+ }
8543
+ }
8544
+ .klun-border-beam {
8545
+ --klun-border-beam-gradient:
8546
+ conic-gradient(
8547
+
8548
+ transparent 0deg,
8549
+ transparent 215deg,
8550
+ color-mix(in oklab, var(--klun-primary-base) 45%, white) 245deg,
8551
+ var(--klun-primary-base) 270deg,
8552
+ color-mix(in oklab, var(--klun-primary-base) 60%, black) 295deg,
8553
+ transparent 325deg,
8554
+ transparent 360deg );
8555
+ position: absolute;
8556
+ inset: 0;
8557
+ border-radius: inherit;
8558
+ padding: 1px;
8559
+ overflow: hidden;
8560
+ pointer-events: none;
8561
+ container-type: size;
8562
+ -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
8563
+ -webkit-mask-composite: xor;
8564
+ mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
8565
+ mask-composite: exclude;
8566
+ }
8567
+ .klun-border-beam__light {
8568
+ position: absolute;
8569
+ top: 50%;
8570
+ left: 50%;
8571
+ width: calc(100cqw + 100cqh);
8572
+ aspect-ratio: 1;
8573
+ background: var(--klun-border-beam-gradient);
8574
+ animation: klun-border-beam-rotate 3.2s linear infinite;
8575
+ }
8576
+ @media (prefers-reduced-motion: reduce) {
8577
+ .klun-border-beam__light {
8578
+ display: none;
8579
+ }
8580
+ .klun-border-beam {
8581
+ background:
8582
+ linear-gradient(
8583
+ 90deg,
8584
+ transparent,
8585
+ color-mix(in oklab, var(--klun-primary-base) 60%, transparent),
8586
+ transparent);
8587
+ }
8588
+ }
8589
+
8590
+ /* src/components/feedback/CapabilityBanner.css */
8591
+ .klun-capability-banner {
8592
+ display: flex;
8593
+ align-items: center;
8594
+ gap: 8px;
8595
+ padding: 8px 12px;
8596
+ border: 1px dashed var(--klun-stroke-soft-200);
8597
+ border-radius: var(--klun-radius-md);
8598
+ background: var(--klun-bg-weak-25);
8599
+ font: var(--klun-text-label-xs);
8600
+ color: var(--klun-text-sub-600);
8601
+ }
8602
+ .klun-capability-banner__icon {
8603
+ flex: none;
8604
+ font-size: 14px;
8605
+ line-height: 1;
8606
+ }
8607
+
5386
8608
  /* src/components/feedback/CircularProgress.css */
5387
8609
  .klun-circular-progress {
5388
8610
  --_fill: var(--klun-primary-base);
@@ -5419,6 +8641,16 @@ body {
5419
8641
  color: var(--klun-text-strong-950);
5420
8642
  }
5421
8643
 
8644
+ /* src/components/feedback/DotSphere.css */
8645
+ .klun-dot-sphere {
8646
+ position: absolute;
8647
+ inset: 0;
8648
+ width: 100%;
8649
+ height: 100%;
8650
+ color: var(--klun-primary-base);
8651
+ pointer-events: none;
8652
+ }
8653
+
5422
8654
  /* src/components/feedback/EmptyState.css */
5423
8655
  .klun-empty-state {
5424
8656
  display: flex;
@@ -5610,6 +8842,46 @@ body {
5610
8842
  }
5611
8843
  }
5612
8844
 
8845
+ /* src/components/feedback/NavigationProgress.css */
8846
+ .klun-navigation-progress {
8847
+ position: fixed;
8848
+ inset-inline: 0;
8849
+ height: 2px;
8850
+ overflow: hidden;
8851
+ pointer-events: none;
8852
+ opacity: 0;
8853
+ z-index: 900;
8854
+ transition: opacity var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
8855
+ }
8856
+ .klun-navigation-progress[data-position=absolute] {
8857
+ position: absolute;
8858
+ }
8859
+ .klun-navigation-progress[data-active=true] {
8860
+ opacity: 1;
8861
+ }
8862
+ .klun-navigation-progress__sweep {
8863
+ width: 33.333%;
8864
+ height: 100%;
8865
+ background: var(--klun-primary-base);
8866
+ box-shadow: 0 0 8px color-mix(in oklab, var(--klun-primary-base) 60%, transparent), 0 0 2px color-mix(in oklab, var(--klun-primary-base) 80%, transparent);
8867
+ animation: klun-navigation-progress-sweep 1.4s cubic-bezier(0.4, 0, 0.2, 1) infinite;
8868
+ }
8869
+ @keyframes klun-navigation-progress-sweep {
8870
+ 0% {
8871
+ transform: translateX(-100%);
8872
+ }
8873
+ 100% {
8874
+ transform: translateX(100%);
8875
+ }
8876
+ }
8877
+ @media (prefers-reduced-motion: reduce) {
8878
+ .klun-navigation-progress__sweep {
8879
+ width: 100%;
8880
+ opacity: 0.5;
8881
+ animation: none;
8882
+ }
8883
+ }
8884
+
5613
8885
  /* src/components/feedback/Notification.css */
5614
8886
  .klun-notification {
5615
8887
  --_tint: var(--klun-icon-sub-600);
@@ -6136,6 +9408,15 @@ body {
6136
9408
  }
6137
9409
  }
6138
9410
 
9411
+ /* src/components/feedback/UnicodeSpinner.css */
9412
+ .klun-unicode-spinner {
9413
+ display: inline-block;
9414
+ min-width: 1ch;
9415
+ text-align: center;
9416
+ font-family: var(--klun-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
9417
+ font-variant-numeric: tabular-nums;
9418
+ }
9419
+
6139
9420
  /* src/components/forms/AutoComplete.css */
6140
9421
  .klun-autocomplete {
6141
9422
  position: relative;
@@ -7350,6 +10631,156 @@ body {
7350
10631
  background: var(--klun-bg-weak-50);
7351
10632
  }
7352
10633
 
10634
+ /* src/components/forms/EmojiPicker.css */
10635
+ .klun-emoji-picker {
10636
+ display: flex;
10637
+ flex-direction: column;
10638
+ gap: 8px;
10639
+ width: 100%;
10640
+ }
10641
+ .klun-emoji-picker__search {
10642
+ flex: none;
10643
+ display: flex;
10644
+ align-items: center;
10645
+ gap: 6px;
10646
+ height: 32px;
10647
+ padding: 0 8px;
10648
+ border-radius: var(--klun-radius-md);
10649
+ background: var(--klun-bg-weak-50);
10650
+ color: var(--klun-text-soft-400);
10651
+ }
10652
+ .klun-emoji-picker__search i {
10653
+ flex: none;
10654
+ font-size: 16px;
10655
+ }
10656
+ .klun-emoji-picker__search input {
10657
+ flex: 1;
10658
+ min-width: 0;
10659
+ border: 0;
10660
+ outline: 0;
10661
+ background: transparent;
10662
+ font: var(--klun-text-paragraph-sm);
10663
+ color: var(--klun-text-strong-950);
10664
+ }
10665
+ .klun-emoji-picker__search input::placeholder {
10666
+ color: var(--klun-text-soft-400);
10667
+ }
10668
+ .klun-emoji-picker__search:focus-within {
10669
+ box-shadow: 0 0 0 1px var(--klun-alpha-primary-alpha-16);
10670
+ }
10671
+ .klun-emoji-picker__body {
10672
+ flex: 1;
10673
+ min-height: 0;
10674
+ max-height: var(--klun-emoji-picker-max-height, 264px);
10675
+ overflow-y: auto;
10676
+ display: flex;
10677
+ flex-direction: column;
10678
+ gap: 8px;
10679
+ }
10680
+ .klun-emoji-picker__group {
10681
+ display: flex;
10682
+ flex-direction: column;
10683
+ gap: 4px;
10684
+ }
10685
+ .klun-emoji-picker__group-title {
10686
+ padding: 0 2px;
10687
+ font: var(--klun-text-label-xs);
10688
+ color: var(--klun-text-soft-400);
10689
+ }
10690
+ .klun-emoji-picker__grid {
10691
+ display: grid;
10692
+ gap: 2px;
10693
+ }
10694
+ .klun-emoji-picker__cell {
10695
+ display: flex;
10696
+ align-items: center;
10697
+ justify-content: center;
10698
+ width: 100%;
10699
+ height: 32px;
10700
+ padding: 0;
10701
+ border: 0;
10702
+ border-radius: var(--klun-radius-sm);
10703
+ background: transparent;
10704
+ font-size: 18px;
10705
+ line-height: 1;
10706
+ cursor: pointer;
10707
+ transition: background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
10708
+ }
10709
+ .klun-emoji-picker__cell:hover {
10710
+ background: var(--klun-bg-weak-50);
10711
+ }
10712
+ .klun-emoji-picker__cell:focus-visible {
10713
+ outline: none;
10714
+ box-shadow: var(--klun-shadow-button-important-focus);
10715
+ }
10716
+ .klun-emoji-picker__empty {
10717
+ padding: 24px 0;
10718
+ text-align: center;
10719
+ font: var(--klun-text-paragraph-sm);
10720
+ color: var(--klun-text-soft-400);
10721
+ }
10722
+
10723
+ /* src/components/forms/Field.css */
10724
+ .klun-field-group {
10725
+ display: flex;
10726
+ flex-direction: column;
10727
+ gap: 20px;
10728
+ width: 100%;
10729
+ }
10730
+ .klun-field {
10731
+ display: flex;
10732
+ gap: 8px;
10733
+ width: 100%;
10734
+ }
10735
+ .klun-field--vertical {
10736
+ flex-direction: column;
10737
+ }
10738
+ .klun-field--vertical > * {
10739
+ width: 100%;
10740
+ }
10741
+ .klun-field--horizontal {
10742
+ flex-direction: row;
10743
+ align-items: center;
10744
+ }
10745
+ .klun-field--horizontal > .klun-field__label,
10746
+ .klun-field--horizontal > .klun-field__title {
10747
+ flex: none;
10748
+ width: var(--klun-field-label-w, 120px);
10749
+ }
10750
+ .klun-field--horizontal > :not(.klun-field__label):not(.klun-field__title) {
10751
+ flex: 1;
10752
+ min-width: 0;
10753
+ }
10754
+ .klun-field__content {
10755
+ flex: 1;
10756
+ min-width: 0;
10757
+ display: flex;
10758
+ flex-direction: column;
10759
+ gap: 2px;
10760
+ }
10761
+ .klun-field__label,
10762
+ .klun-field__title {
10763
+ font: var(--klun-text-label-sm);
10764
+ color: var(--klun-text-strong-950);
10765
+ }
10766
+ .klun-field[data-invalid] > .klun-field__label,
10767
+ .klun-field[data-invalid] > .klun-field__title,
10768
+ .klun-field[data-invalid] .klun-field__content > .klun-field__label,
10769
+ .klun-field[data-invalid] .klun-field__content > .klun-field__title {
10770
+ color: var(--klun-state-error-base);
10771
+ }
10772
+ .klun-field__description {
10773
+ font: var(--klun-text-paragraph-xs);
10774
+ color: var(--klun-text-sub-600);
10775
+ }
10776
+ .klun-field__error {
10777
+ font: var(--klun-text-paragraph-xs);
10778
+ color: var(--klun-state-error-base);
10779
+ }
10780
+ .klun-field__error:empty {
10781
+ display: none;
10782
+ }
10783
+
7353
10784
  /* src/components/forms/FileUpload.css */
7354
10785
  .klun-file-upload {
7355
10786
  display: flex;
@@ -7387,74 +10818,251 @@ body {
7387
10818
  .klun-file-upload__action {
7388
10819
  color: var(--klun-primary-base);
7389
10820
  }
7390
- .klun-file-upload__hint {
7391
- font: var(--klun-text-paragraph-xs);
10821
+ .klun-file-upload__hint {
10822
+ font: var(--klun-text-paragraph-xs);
10823
+ color: var(--klun-text-soft-400);
10824
+ }
10825
+
10826
+ /* src/components/forms/Form.css */
10827
+ .klun-form {
10828
+ display: flex;
10829
+ flex-direction: column;
10830
+ }
10831
+ .klun-form--vertical {
10832
+ gap: 18px;
10833
+ }
10834
+ .klun-form--horizontal {
10835
+ gap: 12px;
10836
+ }
10837
+ .klun-form-item {
10838
+ display: flex;
10839
+ flex-direction: column;
10840
+ gap: 6px;
10841
+ align-items: stretch;
10842
+ }
10843
+ .klun-form-item--horizontal {
10844
+ display: grid;
10845
+ grid-template-columns: 140px 1fr;
10846
+ gap: 12px;
10847
+ align-items: start;
10848
+ }
10849
+ .klun-form-item__label {
10850
+ font: var(--klun-text-label-sm);
10851
+ color: var(--klun-text-strong-950);
10852
+ }
10853
+ .klun-form-item--horizontal .klun-form-item__label {
10854
+ padding-top: 9px;
10855
+ }
10856
+ .klun-form-item__required {
10857
+ color: var(--klun-state-error-base);
10858
+ margin-left: 2px;
10859
+ }
10860
+ .klun-form-item__control {
10861
+ display: flex;
10862
+ flex-direction: column;
10863
+ gap: 4px;
10864
+ min-width: 0;
10865
+ }
10866
+ .klun-form-item__error {
10867
+ font: var(--klun-text-paragraph-xs);
10868
+ color: var(--klun-state-error-base);
10869
+ }
10870
+ .klun-form-item__help {
10871
+ font: var(--klun-text-paragraph-xs);
10872
+ color: var(--klun-text-soft-400);
10873
+ }
10874
+
10875
+ /* src/components/forms/Hint.css */
10876
+ .klun-hint {
10877
+ display: inline-flex;
10878
+ align-items: center;
10879
+ gap: 4px;
10880
+ font: var(--klun-text-paragraph-xs);
10881
+ color: var(--klun-text-soft-400);
10882
+ }
10883
+ .klun-hint--error {
10884
+ color: var(--klun-state-error-base);
10885
+ }
10886
+ .klun-hint__icon {
10887
+ display: inline-flex;
10888
+ font-size: 16px;
10889
+ }
10890
+
10891
+ /* src/components/forms/IconPicker.css */
10892
+ .klun-icon-picker {
10893
+ display: inline-flex;
10894
+ }
10895
+ .klun-icon-picker__trigger {
10896
+ display: inline-flex;
10897
+ align-items: center;
10898
+ justify-content: center;
10899
+ width: 38px;
10900
+ height: var(--klun-control-h-sm, 32px);
10901
+ padding: 0;
10902
+ font-size: 16px;
10903
+ color: var(--klun-text-strong-950);
10904
+ background: var(--klun-bg-white-0);
10905
+ border: none;
10906
+ border-radius: var(--klun-radius-md);
10907
+ box-shadow: inset 0 0 0 1px var(--klun-stroke-soft-200);
10908
+ cursor: pointer;
10909
+ transition: box-shadow var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
10910
+ }
10911
+ .klun-icon-picker__trigger:hover {
10912
+ box-shadow: inset 0 0 0 1px var(--klun-text-soft-400);
10913
+ }
10914
+ .klun-icon-picker__trigger:focus-visible {
10915
+ outline: none;
10916
+ box-shadow: inset 0 0 0 1px var(--klun-primary-base), 0 0 0 3px color-mix(in srgb, var(--klun-primary-base) 18%, transparent);
10917
+ }
10918
+ .klun-icon-picker__trigger:disabled {
10919
+ opacity: 0.5;
10920
+ cursor: not-allowed;
10921
+ }
10922
+ .klun-icon-picker__search {
10923
+ position: relative;
10924
+ display: block;
10925
+ }
10926
+ .klun-icon-picker__search > i {
10927
+ position: absolute;
10928
+ left: 11px;
10929
+ top: 0;
10930
+ bottom: 0;
10931
+ display: flex;
10932
+ align-items: center;
10933
+ font-size: 14px;
10934
+ color: var(--klun-text-soft-400);
10935
+ pointer-events: none;
10936
+ }
10937
+ .klun-icon-picker__search input {
10938
+ width: 100%;
10939
+ box-sizing: border-box;
10940
+ height: var(--klun-control-h-sm, 32px);
10941
+ padding: 0 var(--klun-field-px-xs, 11px) 0 32px;
10942
+ font: inherit;
10943
+ font-size: 13px;
10944
+ color: var(--klun-text-strong-950);
10945
+ background: var(--klun-bg-weak-50);
10946
+ border: none;
10947
+ border-radius: var(--klun-radius-lg, 8px);
10948
+ box-shadow: inset 0 0 0 1px var(--klun-stroke-soft-200);
10949
+ outline: none;
10950
+ transition: box-shadow var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
10951
+ }
10952
+ .klun-icon-picker__search input::placeholder {
7392
10953
  color: var(--klun-text-soft-400);
7393
10954
  }
7394
-
7395
- /* src/components/forms/Form.css */
7396
- .klun-form {
7397
- display: flex;
7398
- flex-direction: column;
10955
+ .klun-icon-picker__search input:focus {
10956
+ background: var(--klun-bg-white-0);
10957
+ box-shadow: inset 0 0 0 1px var(--klun-primary-base), 0 0 0 3px color-mix(in srgb, var(--klun-primary-base) 14%, transparent);
7399
10958
  }
7400
- .klun-form--vertical {
10959
+ .klun-icon-picker__tabs {
10960
+ display: flex;
7401
10961
  gap: 18px;
10962
+ margin: 14px 0 10px;
10963
+ border-bottom: 1px solid var(--klun-stroke-soft-200);
7402
10964
  }
7403
- .klun-form--horizontal {
7404
- gap: 12px;
10965
+ .klun-icon-picker__tab {
10966
+ padding: 0 0 8px;
10967
+ margin-bottom: -1px;
10968
+ font: inherit;
10969
+ font-size: 13px;
10970
+ color: var(--klun-text-sub-600);
10971
+ background: none;
10972
+ border: none;
10973
+ border-bottom: 2px solid transparent;
10974
+ cursor: pointer;
10975
+ transition: color var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
7405
10976
  }
7406
- .klun-form-item {
7407
- display: flex;
7408
- flex-direction: column;
7409
- gap: 6px;
7410
- align-items: stretch;
10977
+ .klun-icon-picker__tab:hover {
10978
+ color: var(--klun-text-strong-950);
7411
10979
  }
7412
- .klun-form-item--horizontal {
10980
+ .klun-icon-picker__tab.is-active {
10981
+ font-weight: 500;
10982
+ color: var(--klun-primary-base);
10983
+ border-bottom-color: var(--klun-primary-base);
10984
+ }
10985
+ .klun-icon-picker__grid {
7413
10986
  display: grid;
7414
- grid-template-columns: 140px 1fr;
7415
- gap: 12px;
7416
- align-items: start;
10987
+ grid-template-columns: repeat(auto-fill, minmax(38px, 1fr));
10988
+ gap: 6px;
10989
+ padding-bottom: 14px;
7417
10990
  }
7418
- .klun-form-item__label {
7419
- font: var(--klun-text-label-sm);
10991
+ .klun-icon-picker__cell {
10992
+ aspect-ratio: 1;
10993
+ display: flex;
10994
+ align-items: center;
10995
+ justify-content: center;
10996
+ font-size: 18px;
10997
+ color: var(--klun-text-sub-600);
10998
+ background: none;
10999
+ border: none;
11000
+ border-radius: var(--klun-radius-lg, 8px);
11001
+ cursor: pointer;
11002
+ transition: color var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease), background var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
11003
+ }
11004
+ .klun-icon-picker__cell:hover {
7420
11005
  color: var(--klun-text-strong-950);
11006
+ background: var(--klun-bg-weak-50);
7421
11007
  }
7422
- .klun-form-item--horizontal .klun-form-item__label {
7423
- padding-top: 9px;
11008
+ .klun-icon-picker__cell.is-selected {
11009
+ color: var(--klun-primary-base);
11010
+ background: color-mix(in srgb, var(--klun-primary-base) 10%, transparent);
11011
+ box-shadow: inset 0 0 0 1px var(--klun-primary-base);
7424
11012
  }
7425
- .klun-form-item__required {
7426
- color: var(--klun-state-error-base);
7427
- margin-left: 2px;
11013
+ .klun-icon-picker__empty {
11014
+ padding: 36px 0;
11015
+ text-align: center;
11016
+ font-size: 13px;
11017
+ color: var(--klun-text-soft-400);
7428
11018
  }
7429
- .klun-form-item__control {
11019
+ .klun-icon-picker__foot {
7430
11020
  display: flex;
7431
- flex-direction: column;
7432
- gap: 4px;
11021
+ align-items: center;
11022
+ justify-content: space-between;
11023
+ gap: 12px;
11024
+ margin-top: 2px;
11025
+ padding-top: 12px;
11026
+ border-top: 1px solid var(--klun-stroke-soft-200);
11027
+ }
11028
+ .klun-icon-picker__current {
11029
+ display: inline-flex;
11030
+ align-items: center;
11031
+ gap: 8px;
7433
11032
  min-width: 0;
11033
+ font-size: 12px;
11034
+ color: var(--klun-text-soft-400);
7434
11035
  }
7435
- .klun-form-item__error {
7436
- font: var(--klun-text-paragraph-xs);
7437
- color: var(--klun-state-error-base);
11036
+ .klun-icon-picker__current i {
11037
+ font-size: 16px;
11038
+ color: var(--klun-text-strong-950);
7438
11039
  }
7439
- .klun-form-item__help {
7440
- font: var(--klun-text-paragraph-xs);
7441
- color: var(--klun-text-soft-400);
11040
+ .klun-icon-picker__name {
11041
+ overflow: hidden;
11042
+ text-overflow: ellipsis;
11043
+ white-space: nowrap;
7442
11044
  }
7443
-
7444
- /* src/components/forms/Hint.css */
7445
- .klun-hint {
11045
+ .klun-icon-picker__actions {
7446
11046
  display: inline-flex;
7447
11047
  align-items: center;
7448
- gap: 4px;
7449
- font: var(--klun-text-paragraph-xs);
7450
- color: var(--klun-text-soft-400);
11048
+ gap: 8px;
11049
+ flex-shrink: 0;
7451
11050
  }
7452
- .klun-hint--error {
7453
- color: var(--klun-state-error-base);
11051
+ .klun-icon-picker__btn {
11052
+ height: 30px;
11053
+ padding: 0 14px;
11054
+ font: inherit;
11055
+ font-size: 13px;
11056
+ color: var(--klun-text-sub-600);
11057
+ background: none;
11058
+ border: none;
11059
+ border-radius: var(--klun-radius-md);
11060
+ cursor: pointer;
11061
+ transition: background var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
7454
11062
  }
7455
- .klun-hint__icon {
7456
- display: inline-flex;
7457
- font-size: 16px;
11063
+ .klun-icon-picker__btn:hover {
11064
+ color: var(--klun-text-strong-950);
11065
+ background: var(--klun-bg-weak-50);
7458
11066
  }
7459
11067
 
7460
11068
  /* src/components/forms/ImageUpload.css */
@@ -7785,6 +11393,144 @@ body {
7785
11393
  }
7786
11394
  }
7787
11395
 
11396
+ /* src/components/forms/InputGroup.css */
11397
+ .klun-input-group {
11398
+ box-sizing: border-box;
11399
+ display: flex;
11400
+ align-items: center;
11401
+ gap: 6px;
11402
+ min-height: var(--klun-control-h-lg, 40px);
11403
+ padding: 0 10px;
11404
+ border-radius: var(--klun-radius-lg);
11405
+ background: var(--klun-bg-white-0);
11406
+ box-shadow: inset 0 0 0 1px var(--klun-stroke-soft-200);
11407
+ transition: box-shadow var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
11408
+ }
11409
+ .klun-input-group:focus-within {
11410
+ box-shadow: inset 0 0 0 1px var(--klun-primary-base), var(--klun-shadow-button-primary-focus);
11411
+ }
11412
+ .klun-input-group[data-invalid] {
11413
+ box-shadow: inset 0 0 0 1px var(--klun-state-error-base);
11414
+ }
11415
+ .klun-input-group[data-disabled] {
11416
+ background: var(--klun-bg-weak-50);
11417
+ opacity: 0.5;
11418
+ pointer-events: none;
11419
+ }
11420
+ .klun-input-group:has([data-align=block-start]),
11421
+ .klun-input-group:has([data-align=block-end]) {
11422
+ flex-direction: column;
11423
+ align-items: stretch;
11424
+ height: auto;
11425
+ padding: 8px 12px;
11426
+ }
11427
+ .klun-input-group__input {
11428
+ flex: 1;
11429
+ min-width: 0;
11430
+ height: 38px;
11431
+ padding: 0;
11432
+ border: 0;
11433
+ outline: 0;
11434
+ background: transparent;
11435
+ color: var(--klun-text-strong-950);
11436
+ font: var(--klun-text-paragraph-sm);
11437
+ }
11438
+ .klun-input-group__input::placeholder {
11439
+ color: var(--klun-text-soft-400);
11440
+ }
11441
+ .klun-input-group:has([data-align=block-start]) .klun-input-group__input,
11442
+ .klun-input-group:has([data-align=block-end]) .klun-input-group__input {
11443
+ height: 30px;
11444
+ }
11445
+ .klun-input-group__addon {
11446
+ flex: none;
11447
+ display: flex;
11448
+ align-items: center;
11449
+ gap: 6px;
11450
+ color: var(--klun-text-sub-600);
11451
+ font: var(--klun-text-paragraph-sm);
11452
+ user-select: none;
11453
+ }
11454
+ .klun-input-group__addon[data-align=inline-start] {
11455
+ order: -1;
11456
+ }
11457
+ .klun-input-group__addon[data-align=inline-end] {
11458
+ order: 1;
11459
+ }
11460
+ .klun-input-group__addon[data-align=block-start] {
11461
+ order: -1;
11462
+ width: 100%;
11463
+ }
11464
+ .klun-input-group__addon[data-align=block-end] {
11465
+ order: 2;
11466
+ width: 100%;
11467
+ }
11468
+ .klun-input-group__addon i {
11469
+ font-size: 16px;
11470
+ line-height: 1;
11471
+ }
11472
+ .klun-input-group__text {
11473
+ white-space: nowrap;
11474
+ }
11475
+ .klun-input-group__button {
11476
+ flex: none;
11477
+ display: inline-flex;
11478
+ align-items: center;
11479
+ justify-content: center;
11480
+ gap: 4px;
11481
+ padding: 0;
11482
+ border: 0;
11483
+ background: transparent;
11484
+ color: var(--klun-text-sub-600);
11485
+ font: var(--klun-text-label-xs);
11486
+ cursor: pointer;
11487
+ transition:
11488
+ background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease),
11489
+ color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease),
11490
+ filter var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
11491
+ }
11492
+ .klun-input-group__button--xsmall {
11493
+ height: 24px;
11494
+ padding: 0 8px;
11495
+ border-radius: var(--klun-radius-sm);
11496
+ }
11497
+ .klun-input-group__button--icon-xsmall {
11498
+ width: 24px;
11499
+ height: 24px;
11500
+ border-radius: var(--klun-radius-sm);
11501
+ }
11502
+ .klun-input-group__button--icon-small {
11503
+ width: 32px;
11504
+ height: 32px;
11505
+ border-radius: var(--klun-radius-md);
11506
+ }
11507
+ .klun-input-group__button--ghost:hover:not(:disabled) {
11508
+ background: var(--klun-bg-weak-50);
11509
+ color: var(--klun-text-strong-950);
11510
+ }
11511
+ .klun-input-group__button--soft {
11512
+ background: var(--klun-bg-weak-50);
11513
+ }
11514
+ .klun-input-group__button--soft:hover:not(:disabled) {
11515
+ background: var(--klun-bg-soft-200);
11516
+ color: var(--klun-text-strong-950);
11517
+ }
11518
+ .klun-input-group__button--primary {
11519
+ background: var(--klun-bg-strong-950);
11520
+ color: var(--klun-text-white-0);
11521
+ }
11522
+ .klun-input-group__button--primary:hover:not(:disabled) {
11523
+ filter: brightness(1.06);
11524
+ }
11525
+ .klun-input-group__button:focus-visible {
11526
+ outline: none;
11527
+ box-shadow: var(--klun-shadow-button-important-focus);
11528
+ }
11529
+ .klun-input-group__button:disabled {
11530
+ opacity: 0.4;
11531
+ cursor: not-allowed;
11532
+ }
11533
+
7788
11534
  /* src/components/forms/Label.css */
7789
11535
  .klun-label {
7790
11536
  display: inline-flex;
@@ -7834,12 +11580,85 @@ body {
7834
11580
  background: var(--klun-bg-soft-200, var(--klun-stroke-soft-200));
7835
11581
  transition: background var(--klun-duration-fast, 0.2s) var(--klun-ease-out, ease);
7836
11582
  }
7837
- .klun-password-strength__bar[data-lit] {
7838
- background: var(--_accent);
11583
+ .klun-password-strength__bar[data-lit] {
11584
+ background: var(--_accent);
11585
+ }
11586
+ .klun-password-strength__label {
11587
+ font: var(--klun-text-label-xs);
11588
+ color: var(--_accent);
11589
+ }
11590
+
11591
+ /* src/components/forms/QuickEmojiPicker.css */
11592
+ .klun-quick-emoji-picker {
11593
+ display: inline-flex;
11594
+ align-items: center;
11595
+ justify-content: center;
11596
+ width: 24px;
11597
+ height: 24px;
11598
+ flex: none;
11599
+ padding: 0;
11600
+ border: 0;
11601
+ border-radius: var(--klun-radius-pill);
11602
+ background: transparent;
11603
+ color: var(--klun-text-sub-600);
11604
+ font-size: 14px;
11605
+ cursor: pointer;
11606
+ transition: background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease), color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
11607
+ }
11608
+ .klun-quick-emoji-picker:hover {
11609
+ background: var(--klun-bg-weak-50);
11610
+ color: var(--klun-text-strong-950);
11611
+ }
11612
+ .klun-quick-emoji-picker:focus-visible {
11613
+ outline: none;
11614
+ box-shadow: var(--klun-shadow-button-important-focus);
11615
+ }
11616
+ .klun-quick-emoji-picker__panel {
11617
+ padding: 8px;
11618
+ }
11619
+ .klun-quick-emoji-picker__row {
11620
+ display: flex;
11621
+ gap: 2px;
11622
+ }
11623
+ .klun-quick-emoji-picker__cell {
11624
+ display: flex;
11625
+ align-items: center;
11626
+ justify-content: center;
11627
+ width: 32px;
11628
+ height: 32px;
11629
+ padding: 0;
11630
+ border: 0;
11631
+ border-radius: var(--klun-radius-sm);
11632
+ background: transparent;
11633
+ font-size: 16px;
11634
+ line-height: 1;
11635
+ cursor: pointer;
11636
+ transition: background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
11637
+ }
11638
+ .klun-quick-emoji-picker__cell:hover {
11639
+ background: var(--klun-bg-weak-50);
11640
+ }
11641
+ .klun-quick-emoji-picker__cell:focus-visible {
11642
+ outline: none;
11643
+ box-shadow: var(--klun-shadow-button-important-focus);
7839
11644
  }
7840
- .klun-password-strength__label {
11645
+ .klun-quick-emoji-picker__more {
11646
+ display: block;
11647
+ width: 100%;
11648
+ margin-top: 6px;
11649
+ padding: 4px 0;
11650
+ border: 0;
11651
+ border-radius: var(--klun-radius-sm);
11652
+ background: transparent;
7841
11653
  font: var(--klun-text-label-xs);
7842
- color: var(--_accent);
11654
+ color: var(--klun-text-sub-600);
11655
+ text-align: center;
11656
+ cursor: pointer;
11657
+ transition: background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease), color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
11658
+ }
11659
+ .klun-quick-emoji-picker__more:hover {
11660
+ background: var(--klun-bg-weak-50);
11661
+ color: var(--klun-text-strong-950);
7843
11662
  }
7844
11663
 
7845
11664
  /* src/components/forms/Radio.css */
@@ -9372,269 +13191,656 @@ body {
9372
13191
  border-radius: var(--klun-radius-2xl);
9373
13192
  box-shadow: inset 0 0 0 1px var(--klun-stroke-soft-200);
9374
13193
  }
9375
- .klun-menu--collapsed {
9376
- width: 56px;
9377
- }
9378
- .klun-menu__row {
9379
- display: flex;
13194
+ .klun-menu--collapsed {
13195
+ width: 56px;
13196
+ }
13197
+ .klun-menu__row {
13198
+ display: flex;
13199
+ align-items: center;
13200
+ gap: 10px;
13201
+ width: 100%;
13202
+ height: var(--klun-control-h-lg, 40px);
13203
+ padding: 0 var(--klun-control-px-sm, 12px) 0 var(--klun-menu-indent, 12px);
13204
+ justify-content: flex-start;
13205
+ border: none;
13206
+ border-radius: var(--klun-radius-lg);
13207
+ cursor: pointer;
13208
+ background: transparent;
13209
+ box-shadow: none;
13210
+ font: var(--klun-text-label-sm);
13211
+ color: var(--klun-text-sub-600);
13212
+ text-align: left;
13213
+ opacity: 1;
13214
+ transition: background 0.12s ease, color 0.12s ease;
13215
+ }
13216
+ .klun-menu--collapsed .klun-menu__row {
13217
+ padding: 0;
13218
+ justify-content: center;
13219
+ }
13220
+ .klun-menu__row:not([data-active]):not(:disabled):hover {
13221
+ background: var(--klun-bg-weak-50);
13222
+ }
13223
+ .klun-menu__row[data-sub-active] {
13224
+ color: var(--klun-text-strong-950);
13225
+ }
13226
+ .klun-menu__row[data-danger] {
13227
+ color: var(--klun-state-error-base);
13228
+ }
13229
+ .klun-menu__row[data-active] {
13230
+ color: var(--klun-primary-base);
13231
+ background: var(--klun-primary-alpha-10, var(--klun-bg-weak-50));
13232
+ box-shadow: inset 2px 0 0 var(--klun-primary-base);
13233
+ }
13234
+ .klun-menu__row:disabled {
13235
+ cursor: not-allowed;
13236
+ color: var(--klun-text-disabled-300);
13237
+ opacity: 0.6;
13238
+ }
13239
+ .klun-menu__icon {
13240
+ display: inline-flex;
13241
+ font-size: 20px;
13242
+ flex: none;
13243
+ color: currentColor;
13244
+ }
13245
+ .klun-menu__bullet {
13246
+ width: 6px;
13247
+ height: 6px;
13248
+ border-radius: var(--klun-radius-pill);
13249
+ flex: none;
13250
+ background: var(--klun-bg-soft-200);
13251
+ }
13252
+ .klun-menu__row[data-active] .klun-menu__bullet {
13253
+ background: var(--klun-primary-base);
13254
+ }
13255
+ .klun-menu__label {
13256
+ flex: 1;
13257
+ min-width: 0;
13258
+ overflow: hidden;
13259
+ text-overflow: ellipsis;
13260
+ white-space: nowrap;
13261
+ }
13262
+ .klun-menu__badge {
13263
+ flex: none;
13264
+ min-width: 18px;
13265
+ height: 18px;
13266
+ padding: 0 5px;
13267
+ display: inline-flex;
13268
+ align-items: center;
13269
+ justify-content: center;
13270
+ border-radius: var(--klun-radius-pill);
13271
+ background: var(--klun-primary-base);
13272
+ color: var(--klun-static-static-white);
13273
+ font: var(--klun-text-label-xs);
13274
+ }
13275
+ .klun-menu__caret {
13276
+ font-size: 18px;
13277
+ flex: none;
13278
+ color: var(--klun-icon-soft-400);
13279
+ transition: transform 0.15s ease;
13280
+ }
13281
+ .klun-menu__caret[data-open] {
13282
+ transform: rotate(90deg);
13283
+ }
13284
+ .klun-menu__group[data-nested] {
13285
+ margin-top: 8px;
13286
+ }
13287
+ .klun-menu__group-label {
13288
+ padding: 8px 12px 4px;
13289
+ font: var(--klun-text-subheading-2xs, var(--klun-text-label-xs));
13290
+ letter-spacing: 0.06em;
13291
+ text-transform: uppercase;
13292
+ color: var(--klun-text-soft-400);
13293
+ }
13294
+ .klun-menu__divider {
13295
+ height: 1px;
13296
+ background: var(--klun-stroke-soft-200);
13297
+ margin: 6px 8px;
13298
+ }
13299
+
13300
+ /* src/components/navigation/PageHeader.css */
13301
+ .klun-page-header {
13302
+ display: flex;
13303
+ flex-direction: column;
13304
+ gap: 12px;
13305
+ padding: 16px 24px;
13306
+ background: var(--klun-bg-white-0);
13307
+ }
13308
+ .klun-page-header--bordered {
13309
+ border-bottom: 1px solid var(--klun-stroke-soft-200);
13310
+ }
13311
+ .klun-page-header--sticky {
13312
+ position: sticky;
13313
+ top: 0;
13314
+ z-index: 20;
13315
+ box-shadow: var(--klun-shadow-sm);
13316
+ }
13317
+ .klun-page-header__breadcrumb {
13318
+ min-height: 20px;
13319
+ }
13320
+ .klun-page-header__bar {
13321
+ display: flex;
13322
+ align-items: flex-start;
13323
+ gap: 12px;
13324
+ }
13325
+ .klun-page-header__back {
13326
+ flex: none;
13327
+ margin-top: 2px;
13328
+ }
13329
+ .klun-page-header__avatar {
13330
+ flex: none;
13331
+ display: inline-flex;
13332
+ align-items: center;
13333
+ }
13334
+ .klun-page-header__heading {
13335
+ flex: 1 1 auto;
13336
+ min-width: 0;
13337
+ }
13338
+ .klun-page-header__title-row {
13339
+ display: flex;
13340
+ align-items: center;
13341
+ flex-wrap: wrap;
13342
+ gap: 8px;
13343
+ }
13344
+ .klun-page-header__title {
13345
+ margin: 0;
13346
+ font: var(--klun-text-title-h5);
13347
+ color: var(--klun-text-strong-950);
13348
+ word-break: break-word;
13349
+ }
13350
+ .klun-page-header__tags {
13351
+ display: inline-flex;
13352
+ align-items: center;
13353
+ flex-wrap: wrap;
13354
+ gap: 6px;
13355
+ }
13356
+ .klun-page-header__subtitle {
13357
+ margin-top: 4px;
13358
+ font: var(--klun-text-paragraph-sm);
13359
+ color: var(--klun-text-sub-600);
13360
+ }
13361
+ .klun-page-header__extra {
13362
+ flex: none;
13363
+ display: inline-flex;
13364
+ align-items: center;
13365
+ gap: 8px;
13366
+ margin-left: auto;
13367
+ }
13368
+ .klun-page-header__content {
13369
+ font: var(--klun-text-paragraph-md);
13370
+ color: var(--klun-text-sub-600);
13371
+ }
13372
+ .klun-page-header__tabs {
13373
+ margin: 0 -24px -16px;
13374
+ padding: 0 24px;
13375
+ }
13376
+ @media (max-width: 640px) {
13377
+ .klun-page-header__bar {
13378
+ flex-wrap: wrap;
13379
+ }
13380
+ .klun-page-header__extra {
13381
+ width: 100%;
13382
+ margin-left: 0;
13383
+ }
13384
+ }
13385
+
13386
+ /* src/components/navigation/Pagination.css */
13387
+ .klun-pagination {
13388
+ display: inline-flex;
13389
+ align-items: center;
13390
+ gap: 4px;
13391
+ }
13392
+ .klun-pagination__cell {
13393
+ display: inline-flex;
13394
+ align-items: center;
13395
+ justify-content: center;
13396
+ min-width: var(--klun-control-h-md, 36px);
13397
+ height: var(--klun-control-h-md, 36px);
13398
+ padding: 0 var(--klun-control-px-2xs, 8px);
13399
+ border: none;
13400
+ border-radius: var(--klun-radius-lg);
13401
+ cursor: pointer;
13402
+ font: var(--klun-text-label-sm);
13403
+ background: transparent;
13404
+ box-shadow: none;
13405
+ color: var(--klun-text-sub-600);
13406
+ transition: background var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease), box-shadow var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
13407
+ }
13408
+ .klun-pagination__cell[data-active=true] {
13409
+ background: var(--klun-bg-white-0);
13410
+ box-shadow: var(--klun-shadow-xs), inset 0 0 0 1px var(--klun-stroke-soft-200);
13411
+ color: var(--klun-text-strong-950);
13412
+ }
13413
+ .klun-pagination__cell:disabled {
13414
+ cursor: not-allowed;
13415
+ opacity: 0.4;
13416
+ }
13417
+ .klun-pagination__ellipsis {
13418
+ min-width: 24px;
13419
+ text-align: center;
13420
+ color: var(--klun-text-soft-400);
13421
+ }
13422
+
13423
+ /* src/components/navigation/SegmentedControl.css */
13424
+ .klun-segmented-control {
13425
+ display: inline-flex;
13426
+ padding: 4px;
13427
+ border-radius: var(--klun-radius-lg);
13428
+ background: var(--klun-bg-weak-50);
13429
+ box-shadow: inset 0 0 0 1px var(--klun-stroke-soft-200);
13430
+ }
13431
+ .klun-segmented-control__segment {
13432
+ display: inline-flex;
9380
13433
  align-items: center;
9381
- gap: 10px;
9382
- width: 100%;
9383
- height: var(--klun-control-h-lg, 40px);
9384
- padding: 0 var(--klun-control-px-sm, 12px) 0 var(--klun-menu-indent, 12px);
9385
- justify-content: flex-start;
13434
+ justify-content: center;
13435
+ gap: 6px;
13436
+ flex: 1;
13437
+ height: var(--klun-control-h-sm, 32px);
13438
+ padding: 0 var(--klun-control-px-md, 14px);
9386
13439
  border: none;
9387
- border-radius: var(--klun-radius-lg);
13440
+ border-radius: var(--klun-radius-md);
9388
13441
  cursor: pointer;
13442
+ white-space: nowrap;
9389
13443
  background: transparent;
13444
+ color: var(--klun-text-sub-600);
9390
13445
  box-shadow: none;
9391
13446
  font: var(--klun-text-label-sm);
9392
- color: var(--klun-text-sub-600);
9393
- text-align: left;
9394
- opacity: 1;
9395
- transition: background 0.12s ease, color 0.12s ease;
13447
+ transition: background var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease), color var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
9396
13448
  }
9397
- .klun-menu--collapsed .klun-menu__row {
9398
- padding: 0;
13449
+ .klun-segmented-control__segment[aria-selected=true] {
13450
+ background: var(--klun-bg-white-0);
13451
+ color: var(--klun-text-strong-950);
13452
+ box-shadow: var(--klun-shadow-sm);
13453
+ }
13454
+ .klun-segmented-control__icon {
13455
+ display: inline-flex;
13456
+ font-size: 18px;
13457
+ }
13458
+
13459
+ /* src/components/navigation/Sidebar.css */
13460
+ .klun-sidebar {
13461
+ --_rail-w: 64px;
13462
+ --_panel-w: 320px;
13463
+ --_ease: var(--klun-sidebar-ease, cubic-bezier(0.25, 1.1, 0.4, 1));
13464
+ --_dur: var(--klun-sidebar-duration, var(--klun-duration-500, 0.5s));
13465
+ --_color-dur: var(--klun-duration-200, 0.2s);
13466
+ --_color-ease: var(--klun-ease-out, ease);
13467
+ --_bg: var(--klun-bg-white-0);
13468
+ --_hover: var(--klun-bg-weak-50);
13469
+ --_active: var(--klun-bg-soft-200);
13470
+ --_stroke: var(--klun-stroke-soft-200);
13471
+ --_fg: var(--klun-text-strong-950);
13472
+ --_sub-fg: var(--klun-text-sub-600);
13473
+ --_soft-fg: var(--klun-text-soft-400);
13474
+ display: flex;
13475
+ height: 100%;
13476
+ color: var(--_fg);
13477
+ }
13478
+ .klun-sidebar__rail {
13479
+ flex: none;
13480
+ box-sizing: border-box;
13481
+ display: flex;
13482
+ flex-direction: column;
13483
+ align-items: center;
13484
+ gap: 8px;
13485
+ width: var(--_rail-w);
13486
+ padding: 16px;
13487
+ background: var(--_bg);
13488
+ border-right: 1px solid var(--_stroke);
13489
+ border-radius: var(--klun-radius-2xl) 0 0 var(--klun-radius-2xl);
13490
+ }
13491
+ .klun-sidebar__brand {
13492
+ flex: none;
13493
+ display: flex;
13494
+ align-items: center;
9399
13495
  justify-content: center;
13496
+ width: 40px;
13497
+ height: 40px;
13498
+ margin-bottom: 8px;
9400
13499
  }
9401
- .klun-menu__row:not([data-active]):not(:disabled):hover {
9402
- background: var(--klun-bg-weak-50);
13500
+ .klun-sidebar__nav,
13501
+ .klun-sidebar__rail-foot {
13502
+ display: flex;
13503
+ flex-direction: column;
13504
+ align-items: center;
13505
+ gap: 8px;
13506
+ width: 100%;
9403
13507
  }
9404
- .klun-menu__row[data-sub-active] {
9405
- color: var(--klun-text-strong-950);
13508
+ .klun-sidebar__rail-foot {
13509
+ margin-top: auto;
9406
13510
  }
9407
- .klun-menu__row[data-danger] {
9408
- color: var(--klun-state-error-base);
13511
+ .klun-sidebar__nav-button {
13512
+ flex: none;
13513
+ display: flex;
13514
+ align-items: center;
13515
+ justify-content: center;
13516
+ width: 40px;
13517
+ height: 40px;
13518
+ padding: 0;
13519
+ border: 0;
13520
+ border-radius: var(--klun-radius-md);
13521
+ background: transparent;
13522
+ color: var(--klun-icon-soft-400);
13523
+ font-size: 16px;
13524
+ cursor: pointer;
13525
+ transition: background-color var(--_dur) var(--_ease), color var(--_dur) var(--_ease);
9409
13526
  }
9410
- .klun-menu__row[data-active] {
9411
- color: var(--klun-primary-base);
9412
- background: var(--klun-primary-alpha-10, var(--klun-bg-weak-50));
9413
- box-shadow: inset 2px 0 0 var(--klun-primary-base);
13527
+ .klun-sidebar__nav-button:hover:not(:disabled) {
13528
+ background: var(--_hover);
13529
+ color: var(--klun-icon-sub-600);
9414
13530
  }
9415
- .klun-menu__row:disabled {
9416
- cursor: not-allowed;
9417
- color: var(--klun-text-disabled-300);
9418
- opacity: 0.6;
13531
+ .klun-sidebar__nav-button[data-active] {
13532
+ background: var(--_active);
13533
+ color: var(--_fg);
9419
13534
  }
9420
- .klun-menu__icon {
9421
- display: inline-flex;
9422
- font-size: 20px;
13535
+ .klun-sidebar__avatar {
9423
13536
  flex: none;
9424
- color: currentColor;
13537
+ display: flex;
13538
+ align-items: center;
13539
+ justify-content: center;
13540
+ width: 32px;
13541
+ height: 32px;
9425
13542
  }
9426
- .klun-menu__bullet {
9427
- width: 6px;
9428
- height: 6px;
9429
- border-radius: var(--klun-radius-pill);
13543
+ .klun-sidebar__panel {
9430
13544
  flex: none;
9431
- background: var(--klun-bg-soft-200);
13545
+ box-sizing: border-box;
13546
+ display: flex;
13547
+ flex-direction: column;
13548
+ gap: 16px;
13549
+ width: var(--_panel-w);
13550
+ min-height: 0;
13551
+ padding: 16px;
13552
+ background: var(--_bg);
13553
+ border-radius: 0 var(--klun-radius-2xl) var(--klun-radius-2xl) 0;
13554
+ transition: width var(--_dur) var(--_ease), padding var(--_dur) var(--_ease);
9432
13555
  }
9433
- .klun-menu__row[data-active] .klun-menu__bullet {
9434
- background: var(--klun-primary-base);
13556
+ .klun-sidebar--collapsed .klun-sidebar__panel {
13557
+ width: var(--_rail-w);
13558
+ min-width: var(--_rail-w);
13559
+ padding-inline: 0;
13560
+ align-items: center;
9435
13561
  }
9436
- .klun-menu__label {
9437
- flex: 1;
13562
+ .klun-sidebar__panel-head {
13563
+ flex: none;
13564
+ display: flex;
13565
+ align-items: center;
13566
+ justify-content: space-between;
13567
+ width: 100%;
13568
+ height: 40px;
13569
+ }
13570
+ .klun-sidebar__panel-title {
9438
13571
  min-width: 0;
13572
+ padding-inline: 8px;
9439
13573
  overflow: hidden;
9440
- text-overflow: ellipsis;
9441
13574
  white-space: nowrap;
13575
+ text-overflow: ellipsis;
13576
+ font-family: var(--klun-font-sans);
13577
+ font-size: 18px;
13578
+ line-height: 27px;
13579
+ font-weight: var(--klun-font-weight-semibold, 600);
13580
+ color: var(--_fg);
9442
13581
  }
9443
- .klun-menu__badge {
13582
+ .klun-sidebar__collapse {
9444
13583
  flex: none;
9445
- min-width: 18px;
9446
- height: 18px;
9447
- padding: 0 5px;
9448
- display: inline-flex;
13584
+ display: flex;
9449
13585
  align-items: center;
9450
13586
  justify-content: center;
9451
- border-radius: var(--klun-radius-pill);
9452
- background: var(--klun-primary-base);
9453
- color: var(--klun-static-static-white);
9454
- font: var(--klun-text-label-xs);
9455
- }
9456
- .klun-menu__caret {
9457
- font-size: 18px;
9458
- flex: none;
13587
+ width: 40px;
13588
+ height: 40px;
13589
+ margin-right: 4px;
13590
+ padding: 0;
13591
+ border: 0;
13592
+ border-radius: var(--klun-radius-md);
13593
+ background: transparent;
9459
13594
  color: var(--klun-icon-soft-400);
9460
- transition: transform 0.15s ease;
9461
- }
9462
- .klun-menu__caret[data-open] {
9463
- transform: rotate(90deg);
9464
- }
9465
- .klun-menu__group[data-nested] {
9466
- margin-top: 8px;
9467
- }
9468
- .klun-menu__group-label {
9469
- padding: 8px 12px 4px;
9470
- font: var(--klun-text-subheading-2xs, var(--klun-text-label-xs));
9471
- letter-spacing: 0.06em;
9472
- text-transform: uppercase;
9473
- color: var(--klun-text-soft-400);
13595
+ font-size: 16px;
13596
+ cursor: pointer;
13597
+ transition: background-color var(--_color-dur) var(--_color-ease), color var(--_color-dur) var(--_color-ease);
9474
13598
  }
9475
- .klun-menu__divider {
9476
- height: 1px;
9477
- background: var(--klun-stroke-soft-200);
9478
- margin: 6px 8px;
13599
+ .klun-sidebar__collapse:hover {
13600
+ background: var(--_hover);
13601
+ color: var(--klun-icon-sub-600);
9479
13602
  }
9480
-
9481
- /* src/components/navigation/PageHeader.css */
9482
- .klun-page-header {
9483
- display: flex;
9484
- flex-direction: column;
9485
- gap: 12px;
9486
- padding: 16px 24px;
9487
- background: var(--klun-bg-white-0);
13603
+ .klun-sidebar__collapse i {
13604
+ transition: transform var(--_dur) var(--_ease);
9488
13605
  }
9489
- .klun-page-header--bordered {
9490
- border-bottom: 1px solid var(--klun-stroke-soft-200);
13606
+ .klun-sidebar--collapsed .klun-sidebar__panel-head {
13607
+ justify-content: center;
9491
13608
  }
9492
- .klun-page-header--sticky {
9493
- position: sticky;
9494
- top: 0;
9495
- z-index: 20;
9496
- box-shadow: var(--klun-shadow-sm);
13609
+ .klun-sidebar--collapsed .klun-sidebar__collapse {
13610
+ margin-right: 0;
9497
13611
  }
9498
- .klun-page-header__breadcrumb {
9499
- min-height: 20px;
13612
+ .klun-sidebar--collapsed .klun-sidebar__collapse i {
13613
+ transform: rotate(180deg);
9500
13614
  }
9501
- .klun-page-header__bar {
13615
+ .klun-sidebar__search {
13616
+ flex: none;
13617
+ box-sizing: border-box;
9502
13618
  display: flex;
9503
- align-items: flex-start;
9504
- gap: 12px;
13619
+ align-items: center;
13620
+ width: 100%;
13621
+ height: 40px;
13622
+ overflow: hidden;
13623
+ background: var(--_bg);
13624
+ border: 1px solid var(--_stroke);
13625
+ border-radius: var(--klun-radius-md);
13626
+ transition: width var(--_dur) var(--_ease), border-color var(--_color-dur) var(--_color-ease);
9505
13627
  }
9506
- .klun-page-header__back {
9507
- flex: none;
9508
- margin-top: 2px;
13628
+ .klun-sidebar--collapsed .klun-sidebar__search {
13629
+ width: 40px;
9509
13630
  }
9510
- .klun-page-header__avatar {
13631
+ .klun-sidebar__search:focus-within {
13632
+ border-color: var(--klun-stroke-strong-950);
13633
+ }
13634
+ .klun-sidebar__search-icon {
9511
13635
  flex: none;
9512
- display: inline-flex;
13636
+ display: flex;
9513
13637
  align-items: center;
13638
+ justify-content: center;
13639
+ width: 40px;
13640
+ height: 100%;
13641
+ font-size: 16px;
13642
+ color: var(--_fg);
9514
13643
  }
9515
- .klun-page-header__heading {
9516
- flex: 1 1 auto;
13644
+ .klun-sidebar__search-input {
13645
+ flex: 1;
9517
13646
  min-width: 0;
13647
+ height: 100%;
13648
+ padding: 0 8px 0 0;
13649
+ border: 0;
13650
+ outline: 0;
13651
+ background: transparent;
13652
+ font: var(--klun-text-paragraph-sm);
13653
+ color: var(--_fg);
13654
+ transition: opacity var(--_dur) var(--_ease);
9518
13655
  }
9519
- .klun-page-header__title-row {
13656
+ .klun-sidebar__search-input::placeholder {
13657
+ color: var(--_soft-fg);
13658
+ }
13659
+ .klun-sidebar--collapsed .klun-sidebar__search-input {
13660
+ opacity: 0;
13661
+ }
13662
+ .klun-sidebar__scroll {
13663
+ flex: 1;
13664
+ min-height: 0;
13665
+ width: 100%;
9520
13666
  display: flex;
9521
- align-items: center;
9522
- flex-wrap: wrap;
13667
+ flex-direction: column;
13668
+ align-items: stretch;
13669
+ gap: 16px;
13670
+ overflow-y: auto;
13671
+ overflow-x: hidden;
13672
+ }
13673
+ .klun-sidebar--collapsed .klun-sidebar__scroll {
9523
13674
  gap: 8px;
13675
+ align-items: center;
9524
13676
  }
9525
- .klun-page-header__title {
9526
- margin: 0;
9527
- font: var(--klun-text-title-h5);
9528
- color: var(--klun-text-strong-950);
9529
- word-break: break-word;
13677
+ .klun-sidebar__section,
13678
+ .klun-sidebar__group {
13679
+ flex: none;
13680
+ display: flex;
13681
+ flex-direction: column;
13682
+ width: 100%;
9530
13683
  }
9531
- .klun-page-header__tags {
9532
- display: inline-flex;
13684
+ .klun-sidebar--collapsed .klun-sidebar__group {
9533
13685
  align-items: center;
9534
- flex-wrap: wrap;
9535
- gap: 6px;
9536
13686
  }
9537
- .klun-page-header__subtitle {
9538
- margin-top: 4px;
13687
+ .klun-sidebar__section-title {
13688
+ box-sizing: border-box;
13689
+ display: flex;
13690
+ align-items: center;
13691
+ height: 40px;
13692
+ padding: 0 16px;
13693
+ overflow: hidden;
13694
+ white-space: nowrap;
13695
+ text-overflow: ellipsis;
9539
13696
  font: var(--klun-text-paragraph-sm);
9540
- color: var(--klun-text-sub-600);
13697
+ color: var(--_sub-fg);
13698
+ transition: height var(--_dur) var(--_ease), opacity var(--_dur) var(--_ease);
9541
13699
  }
9542
- .klun-page-header__extra {
13700
+ .klun-sidebar--collapsed .klun-sidebar__section-title {
13701
+ height: 0;
13702
+ opacity: 0;
13703
+ }
13704
+ .klun-sidebar__item {
13705
+ box-sizing: border-box;
9543
13706
  flex: none;
9544
- display: inline-flex;
13707
+ display: flex;
9545
13708
  align-items: center;
9546
- gap: 8px;
9547
- margin-left: auto;
13709
+ width: 100%;
13710
+ height: 40px;
13711
+ margin: 2px 0;
13712
+ padding: 8px 16px;
13713
+ border: 0;
13714
+ border-radius: var(--klun-radius-md);
13715
+ background: transparent;
13716
+ color: var(--_fg);
13717
+ font: var(--klun-text-paragraph-sm);
13718
+ text-align: left;
13719
+ cursor: pointer;
13720
+ transition:
13721
+ background-color var(--_color-dur) var(--_color-ease),
13722
+ width var(--_dur) var(--_ease),
13723
+ padding var(--_dur) var(--_ease);
9548
13724
  }
9549
- .klun-page-header__content {
9550
- font: var(--klun-text-paragraph-md);
9551
- color: var(--klun-text-sub-600);
13725
+ .klun-sidebar__item:hover:not(:disabled) {
13726
+ background: var(--_hover);
9552
13727
  }
9553
- .klun-page-header__tabs {
9554
- margin: 0 -24px -16px;
9555
- padding: 0 24px;
13728
+ .klun-sidebar__item[data-active] {
13729
+ background: var(--_hover);
9556
13730
  }
9557
- @media (max-width: 640px) {
9558
- .klun-page-header__bar {
9559
- flex-wrap: wrap;
9560
- }
9561
- .klun-page-header__extra {
9562
- width: 100%;
9563
- margin-left: 0;
9564
- }
13731
+ .klun-sidebar--collapsed .klun-sidebar__item {
13732
+ width: 40px;
13733
+ min-width: 40px;
13734
+ justify-content: center;
13735
+ padding: 0;
9565
13736
  }
9566
-
9567
- /* src/components/navigation/Pagination.css */
9568
- .klun-pagination {
9569
- display: inline-flex;
13737
+ .klun-sidebar__item-icon {
13738
+ flex: none;
13739
+ display: flex;
9570
13740
  align-items: center;
9571
- gap: 4px;
13741
+ justify-content: center;
13742
+ font-size: 16px;
13743
+ color: currentColor;
9572
13744
  }
9573
- .klun-pagination__cell {
9574
- display: inline-flex;
13745
+ .klun-sidebar__item-label {
13746
+ flex: 1;
13747
+ min-width: 0;
13748
+ margin-left: 12px;
13749
+ overflow: hidden;
13750
+ white-space: nowrap;
13751
+ text-overflow: ellipsis;
13752
+ transition: opacity var(--_dur) var(--_ease), margin-left var(--_dur) var(--_ease);
13753
+ }
13754
+ .klun-sidebar--collapsed .klun-sidebar__item-label {
13755
+ opacity: 0;
13756
+ margin-left: 0;
13757
+ }
13758
+ .klun-sidebar__item-caret {
13759
+ flex: none;
13760
+ display: flex;
9575
13761
  align-items: center;
9576
13762
  justify-content: center;
9577
- min-width: var(--klun-control-h-md, 36px);
9578
- height: var(--klun-control-h-md, 36px);
9579
- padding: 0 var(--klun-control-px-2xs, 8px);
9580
- border: none;
9581
- border-radius: var(--klun-radius-lg);
9582
- cursor: pointer;
9583
- font: var(--klun-text-label-sm);
9584
- background: transparent;
9585
- box-shadow: none;
9586
- color: var(--klun-text-sub-600);
9587
- transition: background var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease), box-shadow var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
13763
+ width: 16px;
13764
+ margin-left: 8px;
13765
+ font-size: 16px;
13766
+ color: currentColor;
13767
+ transition:
13768
+ opacity var(--_dur) var(--_ease),
13769
+ width var(--_dur) var(--_ease),
13770
+ margin-left var(--_dur) var(--_ease);
9588
13771
  }
9589
- .klun-pagination__cell[data-active=true] {
9590
- background: var(--klun-bg-white-0);
9591
- box-shadow: var(--klun-shadow-xs), inset 0 0 0 1px var(--klun-stroke-soft-200);
9592
- color: var(--klun-text-strong-950);
13772
+ .klun-sidebar__item-caret i {
13773
+ transition: transform var(--_dur) var(--_ease);
9593
13774
  }
9594
- .klun-pagination__cell:disabled {
9595
- cursor: not-allowed;
9596
- opacity: 0.4;
13775
+ .klun-sidebar__item[aria-expanded=true] .klun-sidebar__item-caret i {
13776
+ transform: rotate(180deg);
9597
13777
  }
9598
- .klun-pagination__ellipsis {
9599
- min-width: 24px;
9600
- text-align: center;
9601
- color: var(--klun-text-soft-400);
13778
+ .klun-sidebar--collapsed .klun-sidebar__item-caret {
13779
+ width: 0;
13780
+ opacity: 0;
13781
+ margin-left: 0;
9602
13782
  }
9603
-
9604
- /* src/components/navigation/SegmentedControl.css */
9605
- .klun-segmented-control {
9606
- display: inline-flex;
9607
- padding: 4px;
9608
- border-radius: var(--klun-radius-lg);
9609
- background: var(--klun-bg-weak-50);
9610
- box-shadow: inset 0 0 0 1px var(--klun-stroke-soft-200);
13783
+ .klun-sidebar__sub {
13784
+ display: flex;
13785
+ flex-direction: column;
13786
+ gap: 4px;
13787
+ margin-bottom: 8px;
13788
+ width: 100%;
9611
13789
  }
9612
- .klun-segmented-control__segment {
9613
- display: inline-flex;
13790
+ .klun-sidebar__sub-item {
13791
+ box-sizing: border-box;
13792
+ width: 100%;
13793
+ padding: 1px 4px 1px 36px;
13794
+ }
13795
+ .klun-sidebar__sub-button {
13796
+ box-sizing: border-box;
13797
+ display: flex;
9614
13798
  align-items: center;
9615
- justify-content: center;
9616
- gap: 6px;
9617
- flex: 1;
9618
- height: var(--klun-control-h-sm, 32px);
9619
- padding: 0 var(--klun-control-px-md, 14px);
9620
- border: none;
13799
+ width: 100%;
13800
+ height: 40px;
13801
+ padding: 4px 12px;
13802
+ border: 0;
9621
13803
  border-radius: var(--klun-radius-md);
9622
- cursor: pointer;
9623
- white-space: nowrap;
9624
13804
  background: transparent;
9625
- color: var(--klun-text-sub-600);
9626
- box-shadow: none;
9627
- font: var(--klun-text-label-sm);
9628
- transition: background var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease), color var(--klun-duration-fast, 0.15s) var(--klun-ease-out, ease);
13805
+ color: var(--_sub-fg);
13806
+ font-family: var(--klun-font-sans);
13807
+ font-size: 14px;
13808
+ line-height: 18px;
13809
+ font-weight: var(--klun-font-weight-regular, 400);
13810
+ text-align: left;
13811
+ cursor: pointer;
13812
+ transition: background-color var(--_color-dur) var(--_color-ease), color var(--_color-dur) var(--_color-ease);
9629
13813
  }
9630
- .klun-segmented-control__segment[aria-selected=true] {
9631
- background: var(--klun-bg-white-0);
9632
- color: var(--klun-text-strong-950);
9633
- box-shadow: var(--klun-shadow-sm);
13814
+ .klun-sidebar__sub-button:hover:not(:disabled) {
13815
+ background: var(--_hover);
13816
+ color: var(--_fg);
9634
13817
  }
9635
- .klun-segmented-control__icon {
9636
- display: inline-flex;
9637
- font-size: 18px;
13818
+ .klun-sidebar__nav-button:disabled,
13819
+ .klun-sidebar__item:disabled,
13820
+ .klun-sidebar__sub-button:disabled,
13821
+ .klun-sidebar__collapse:disabled {
13822
+ opacity: 0.4;
13823
+ cursor: not-allowed;
13824
+ }
13825
+ .klun-sidebar__nav-button:focus-visible,
13826
+ .klun-sidebar__item:focus-visible,
13827
+ .klun-sidebar__sub-button:focus-visible,
13828
+ .klun-sidebar__collapse:focus-visible {
13829
+ outline: none;
13830
+ box-shadow: var(--klun-shadow-button-important-focus);
13831
+ }
13832
+ @media (prefers-reduced-motion: reduce) {
13833
+ .klun-sidebar__panel,
13834
+ .klun-sidebar__search,
13835
+ .klun-sidebar__search-input,
13836
+ .klun-sidebar__section-title,
13837
+ .klun-sidebar__item,
13838
+ .klun-sidebar__item-label,
13839
+ .klun-sidebar__item-caret,
13840
+ .klun-sidebar__item-caret i,
13841
+ .klun-sidebar__collapse i {
13842
+ transition: none;
13843
+ }
9638
13844
  }
9639
13845
 
9640
13846
  /* src/components/navigation/StepIndicator.css */
@@ -9697,6 +13903,124 @@ body {
9697
13903
  background: var(--klun-primary-base);
9698
13904
  }
9699
13905
 
13906
+ /* src/components/navigation/Stepper.css */
13907
+ .klun-stepper {
13908
+ width: 100%;
13909
+ }
13910
+ .klun-stepper__nav {
13911
+ display: inline-flex;
13912
+ width: 100%;
13913
+ }
13914
+ .klun-stepper__nav[data-orientation=horizontal] {
13915
+ flex-direction: row;
13916
+ }
13917
+ .klun-stepper__nav[data-orientation=vertical] {
13918
+ flex-direction: column;
13919
+ }
13920
+ .klun-stepper__item {
13921
+ display: flex;
13922
+ align-items: center;
13923
+ justify-content: center;
13924
+ }
13925
+ .klun-stepper__nav[data-orientation=horizontal] > .klun-stepper__item:not(:last-child) {
13926
+ flex: 1;
13927
+ }
13928
+ .klun-stepper__nav[data-orientation=vertical] > .klun-stepper__item {
13929
+ flex-direction: column;
13930
+ }
13931
+ .klun-stepper__trigger {
13932
+ display: inline-flex;
13933
+ align-items: center;
13934
+ gap: 10px;
13935
+ padding: 0;
13936
+ border: 0;
13937
+ background: transparent;
13938
+ color: inherit;
13939
+ border-radius: var(--klun-radius-pill);
13940
+ cursor: pointer;
13941
+ outline: none;
13942
+ }
13943
+ .klun-stepper__trigger:focus-visible {
13944
+ position: relative;
13945
+ z-index: 1;
13946
+ box-shadow: var(--klun-shadow-button-important-focus);
13947
+ }
13948
+ .klun-stepper__trigger:disabled {
13949
+ pointer-events: none;
13950
+ opacity: 0.6;
13951
+ }
13952
+ .klun-stepper__trigger:not(:disabled):hover .klun-stepper__indicator {
13953
+ box-shadow: inset 0 0 0 1px var(--klun-stroke-soft-200);
13954
+ }
13955
+ .klun-stepper__indicator {
13956
+ position: relative;
13957
+ flex: none;
13958
+ display: flex;
13959
+ align-items: center;
13960
+ justify-content: center;
13961
+ width: 24px;
13962
+ height: 24px;
13963
+ overflow: hidden;
13964
+ border-radius: var(--klun-radius-pill);
13965
+ background: var(--klun-bg-soft-200);
13966
+ color: var(--klun-text-sub-600);
13967
+ font: var(--klun-text-label-xs);
13968
+ transition:
13969
+ background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease),
13970
+ color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease),
13971
+ box-shadow var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
13972
+ }
13973
+ .klun-stepper__indicator[data-state=active],
13974
+ .klun-stepper__indicator[data-state=completed] {
13975
+ background: var(--klun-primary-base);
13976
+ color: var(--klun-static-static-white, #fff);
13977
+ }
13978
+ .klun-stepper__indicator i {
13979
+ font-size: 14px;
13980
+ line-height: 1;
13981
+ }
13982
+ .klun-stepper__separator {
13983
+ flex: 1;
13984
+ border-radius: 2px;
13985
+ background: var(--klun-stroke-soft-200);
13986
+ transition: background-color var(--klun-duration-200, 0.2s) var(--klun-ease-out, ease);
13987
+ }
13988
+ .klun-stepper__nav[data-orientation=horizontal] .klun-stepper__separator {
13989
+ height: 2px;
13990
+ margin: 0 8px;
13991
+ }
13992
+ .klun-stepper__nav[data-orientation=vertical] .klun-stepper__separator {
13993
+ flex: none;
13994
+ width: 2px;
13995
+ height: 48px;
13996
+ margin: 8px 0;
13997
+ }
13998
+ .klun-stepper__separator[data-state=completed] {
13999
+ background: var(--klun-primary-base);
14000
+ }
14001
+ .klun-stepper__title {
14002
+ margin: 0;
14003
+ font-size: 13px;
14004
+ line-height: 18px;
14005
+ font-weight: var(--klun-font-weight-medium, 500);
14006
+ color: var(--klun-text-strong-950);
14007
+ }
14008
+ .klun-stepper__description {
14009
+ font: var(--klun-text-paragraph-xs);
14010
+ color: var(--klun-text-sub-600);
14011
+ }
14012
+ .klun-stepper__nav[data-orientation=vertical] .klun-stepper__trigger {
14013
+ flex-direction: column;
14014
+ text-align: center;
14015
+ }
14016
+ .klun-stepper__panel {
14017
+ width: 100%;
14018
+ margin-top: 16px;
14019
+ }
14020
+ .klun-stepper__content {
14021
+ width: 100%;
14022
+ }
14023
+
9700
14024
  /* src/components/navigation/Tabs.css */
9701
14025
  .klun-tabs {
9702
14026
  display: flex;
@@ -10415,6 +14739,34 @@ body {
10415
14739
  color: var(--klun-text-soft-400);
10416
14740
  }
10417
14741
 
14742
+ /* src/components/overlays/HoverCard.css */
14743
+ .klun-hover-card__trigger {
14744
+ display: inline-flex;
14745
+ }
14746
+ .klun-hover-card__panel {
14747
+ position: fixed;
14748
+ z-index: 1300;
14749
+ width: 256px;
14750
+ padding: 10px;
14751
+ border-radius: var(--klun-radius-lg);
14752
+ background: var(--klun-bg-white-0);
14753
+ color: var(--klun-text-strong-950);
14754
+ font: var(--klun-text-paragraph-sm);
14755
+ box-shadow: var(--klun-shadow-md), inset 0 0 0 1px var(--klun-stroke-soft-200);
14756
+ animation: klun-hover-card-in 120ms var(--klun-ease-out, ease);
14757
+ }
14758
+ @keyframes klun-hover-card-in {
14759
+ from {
14760
+ opacity: 0;
14761
+ transform: translateY(2px);
14762
+ }
14763
+ }
14764
+ @media (prefers-reduced-motion: reduce) {
14765
+ .klun-hover-card__panel {
14766
+ animation: none;
14767
+ }
14768
+ }
14769
+
10418
14770
  /* src/components/overlays/ImageViewer.css */
10419
14771
  .klun-image-viewer {
10420
14772
  position: fixed;