@lijinmei-810/dev-inspector 0.1.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.
@@ -0,0 +1,1971 @@
1
+ /* Dev Inspector ── 隔离样式,不影响主应用 */
2
+
3
+ /* ── 触发按钮 ── */
4
+ .di-trigger {
5
+ position: fixed;
6
+ right: 16px;
7
+ bottom: 24px;
8
+ z-index: 99999;
9
+ width: 48px;
10
+ height: 48px;
11
+ border-radius: 50%;
12
+ border: none;
13
+ background: #7c3aed;
14
+ color: #fff;
15
+ font-size: 11px;
16
+ font-weight: 700;
17
+ font-family: "PingFang SC", system-ui, sans-serif;
18
+ cursor: pointer;
19
+ box-shadow: 0 4px 16px rgba(124,58,237,0.4);
20
+ transition: background 0.15s, box-shadow 0.15s;
21
+ }
22
+ .di-trigger--on { background: #5b21b6; box-shadow: 0 4px 16px rgba(91,33,182,0.45); }
23
+ .di-trigger:hover { box-shadow: 0 6px 20px rgba(124,58,237,0.5); }
24
+
25
+ /* ── 下载按钮 ── */
26
+ .di-dl-btn {
27
+ position: fixed;
28
+ right: 72px;
29
+ bottom: 24px;
30
+ z-index: 99999;
31
+ width: 48px;
32
+ height: 48px;
33
+ border-radius: 50%;
34
+ border: none;
35
+ background: #1a1a1a;
36
+ color: #fff;
37
+ font-size: 11px;
38
+ font-weight: 700;
39
+ font-family: "PingFang SC", system-ui, sans-serif;
40
+ cursor: pointer;
41
+ box-shadow: 0 4px 16px rgba(0,0,0,0.35);
42
+ transition: background 0.15s, box-shadow 0.15s;
43
+ }
44
+ .di-dl-btn:hover { background: #333; box-shadow: 0 6px 20px rgba(0,0,0,0.45); }
45
+
46
+ /* ── 下载弹窗 ── */
47
+ .di-dl-modal {
48
+ position: fixed;
49
+ right: 72px;
50
+ bottom: 80px;
51
+ z-index: 99999;
52
+ width: 200px;
53
+ background: #fff;
54
+ border-radius: 12px;
55
+ box-shadow: 0 8px 32px rgba(0,0,0,0.18);
56
+ padding: 16px;
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: 10px;
60
+ font-family: "PingFang SC", system-ui, sans-serif;
61
+ }
62
+ .di-dl-title {
63
+ font-size: 13px;
64
+ font-weight: 700;
65
+ color: #111;
66
+ }
67
+ .di-dl-row {
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: space-between;
71
+ gap: 8px;
72
+ font-size: 13px;
73
+ color: #333;
74
+ }
75
+ .di-dl-check-label {
76
+ display: flex;
77
+ align-items: center;
78
+ gap: 8px;
79
+ cursor: pointer;
80
+ }
81
+ .di-dl-row input[type="checkbox"] { accent-color: #1a1a1a; cursor: pointer; }
82
+ .di-dl-detail-btn {
83
+ background: none;
84
+ border: none;
85
+ font-size: 11px;
86
+ color: #888;
87
+ cursor: pointer;
88
+ padding: 0;
89
+ white-space: nowrap;
90
+ text-decoration: underline;
91
+ }
92
+ .di-dl-detail-btn:hover { color: #333; }
93
+ .di-dl-file-list {
94
+ margin: -4px 0 0 0;
95
+ padding: 8px 10px;
96
+ background: #f5f5f5;
97
+ border-radius: 6px;
98
+ list-style: none;
99
+ display: flex;
100
+ flex-direction: column;
101
+ gap: 6px;
102
+ }
103
+ .di-dl-file-list li {
104
+ display: flex;
105
+ flex-direction: column;
106
+ gap: 1px;
107
+ }
108
+ .di-dl-file-name {
109
+ font-size: 11px;
110
+ font-weight: 600;
111
+ color: #222;
112
+ font-family: "SF Mono", monospace;
113
+ }
114
+ .di-dl-file-desc {
115
+ font-size: 10px;
116
+ color: #888;
117
+ line-height: 1.4;
118
+ }
119
+ .di-dl-confirm {
120
+ margin-top: 4px;
121
+ padding: 7px 0;
122
+ background: #1a1a1a;
123
+ color: #fff;
124
+ border: none;
125
+ border-radius: 8px;
126
+ font-size: 13px;
127
+ font-weight: 600;
128
+ cursor: pointer;
129
+ transition: background 0.15s;
130
+ }
131
+ .di-dl-confirm:hover:not(:disabled) { background: #333; }
132
+ .di-dl-confirm:disabled { background: #ccc; cursor: not-allowed; }
133
+
134
+ /* ── 状态反馈 ── */
135
+ .di-dl-status {
136
+ display: flex;
137
+ align-items: center;
138
+ gap: 8px;
139
+ font-size: 12px;
140
+ color: #555;
141
+ padding: 4px 0;
142
+ }
143
+ .di-dl-status--error { color: #dc2626; }
144
+ .di-dl-spinner {
145
+ width: 12px;
146
+ height: 12px;
147
+ border: 2px solid #ddd;
148
+ border-top-color: #1a1a1a;
149
+ border-radius: 50%;
150
+ animation: di-spin 0.7s linear infinite;
151
+ flex-shrink: 0;
152
+ }
153
+ @keyframes di-spin { to { transform: rotate(360deg); } }
154
+
155
+ /* ── 完成状态 ── */
156
+ .di-dl-done {
157
+ display: flex;
158
+ flex-direction: column;
159
+ gap: 6px;
160
+ padding: 4px 0;
161
+ }
162
+ .di-dl-done-check {
163
+ font-size: 13px;
164
+ font-weight: 600;
165
+ color: #1a1a1a;
166
+ }
167
+ .di-dl-done-path {
168
+ font-size: 11px;
169
+ color: #888;
170
+ font-family: "SF Mono", monospace;
171
+ word-break: break-all;
172
+ }
173
+ .di-dl-reveal-btn {
174
+ margin-top: 2px;
175
+ padding: 6px 0;
176
+ background: #f0f0f0;
177
+ border: none;
178
+ border-radius: 7px;
179
+ font-size: 12px;
180
+ font-weight: 500;
181
+ color: #333;
182
+ cursor: pointer;
183
+ transition: background 0.15s;
184
+ }
185
+ .di-dl-reveal-btn:hover { background: #e0e0e0; }
186
+
187
+ /* ── 高亮 ── */
188
+ .di-hover { box-shadow: inset 0 0 0 2px rgba(124,58,237,0.5) !important; }
189
+ .di-selected { box-shadow: inset 0 0 0 2px #7c3aed !important; }
190
+
191
+ /* 面板和触发按钮内的元素不参与高亮 */
192
+ .di-panel .di-hover,
193
+ .di-panel .di-selected,
194
+ .di-trigger.di-hover { box-shadow: none !important; }
195
+
196
+ /* ── 已选中标签 ── */
197
+ .di-label {
198
+ position: fixed;
199
+ z-index: 99998;
200
+ transform: translateX(-50%);
201
+ padding: 5px 12px;
202
+ border-radius: 20px;
203
+ background: #7c3aed;
204
+ color: #fff;
205
+ font-family: "PingFang SC", system-ui, sans-serif;
206
+ font-size: 12px;
207
+ font-weight: 600;
208
+ white-space: nowrap;
209
+ pointer-events: none;
210
+ box-shadow: 0 2px 8px rgba(124,58,237,0.35);
211
+ }
212
+ .di-label::after {
213
+ content: '';
214
+ position: absolute;
215
+ bottom: -5px;
216
+ left: 50%;
217
+ transform: translateX(-50%);
218
+ width: 2px;
219
+ height: 6px;
220
+ background: #7c3aed;
221
+ border-radius: 1px;
222
+ }
223
+ /* ── 面板容器 ── */
224
+ .di-panel {
225
+ position: fixed;
226
+ z-index: 99997;
227
+ width: 380px;
228
+ max-height: 90vh;
229
+ height: auto;
230
+ display: flex;
231
+ flex-direction: column;
232
+ overflow: hidden;
233
+ background: #fff;
234
+ border: 1px solid #e5e7eb;
235
+ border-radius: 16px;
236
+ box-shadow: 0 8px 32px rgba(0,0,0,0.12), 0 2px 8px rgba(0,0,0,0.06);
237
+ font-family: "PingFang SC", system-ui, sans-serif;
238
+ overflow: hidden;
239
+ }
240
+
241
+ /* ── 顶部 ── */
242
+ /* 选择元素模式下面板内 hover 高亮 */
243
+ .di-panel--picking .di-body * { cursor: crosshair !important; }
244
+
245
+ .di-head {
246
+ display: flex;
247
+ align-items: center;
248
+ justify-content: space-between;
249
+ padding: 10px 14px 8px;
250
+ border-bottom: 1px solid #f3f4f6;
251
+ flex-shrink: 0;
252
+ cursor: grab;
253
+ user-select: none;
254
+ }
255
+ .di-head:active { cursor: grabbing; }
256
+ .di-head button { cursor: pointer; }
257
+ .di-head-left { display: flex; align-items: center; gap: 8px; }
258
+ .di-layer-btn {
259
+ display: inline-flex;
260
+ align-items: center;
261
+ justify-content: center;
262
+ width: 22px;
263
+ height: 22px;
264
+ border: 1px solid #e5e7eb;
265
+ border-radius: 6px;
266
+ background: #f9fafb;
267
+ color: #374151;
268
+ font-size: 12px;
269
+ cursor: pointer;
270
+ transition: background 0.12s, color 0.12s;
271
+ line-height: 1;
272
+ }
273
+ .di-layer-btn:hover:not(:disabled) { background: #111; color: #fff; border-color: #111; }
274
+ .di-layer-btn:disabled { opacity: 0.3; cursor: not-allowed; }
275
+ .di-head-right { display: flex; align-items: center; gap: 8px; }
276
+ .di-title { font-size: 15px; font-weight: 700; color: #111827; }
277
+ .di-badge-dev {
278
+ padding: 2px 8px;
279
+ border-radius: 6px;
280
+ background: rgba(124,58,237,0.1);
281
+ color: #7c3aed;
282
+ font-size: 11px;
283
+ font-weight: 600;
284
+ }
285
+ .di-spec-link {
286
+ background: none;
287
+ border: none;
288
+ color: #7c3aed;
289
+ font-size: 12px;
290
+ font-family: inherit;
291
+ cursor: pointer;
292
+ padding: 0;
293
+ }
294
+ .di-spec-link:hover { text-decoration: underline; }
295
+ .di-close {
296
+ width: 24px;
297
+ height: 24px;
298
+ border-radius: 6px;
299
+ border: 1px solid #e5e7eb;
300
+ background: #fff;
301
+ color: #6b7280;
302
+ font-size: 16px;
303
+ line-height: 1;
304
+ cursor: pointer;
305
+ display: flex; align-items: center; justify-content: center;
306
+ padding: 0;
307
+ }
308
+ .di-close:hover { background: #f9fafb; }
309
+
310
+ /* ── 主体 ── */
311
+ .di-body {
312
+ overflow-y: auto;
313
+ flex: 1;
314
+ padding: 2px 0 4px;
315
+ }
316
+ .di-body--readonly {
317
+ pointer-events: none;
318
+ opacity: 0.72;
319
+ user-select: none;
320
+ }
321
+
322
+ /* ── 区块 ── */
323
+ .di-section {
324
+ padding: 8px 14px;
325
+ border-bottom: 1px solid #f3f4f6;
326
+ }
327
+ .di-section:last-child { border-bottom: none; }
328
+ .di-section-title {
329
+ font-size: 12px;
330
+ font-weight: 700;
331
+ color: #111827;
332
+ margin-bottom: 6px;
333
+ }
334
+ .di-section-title-row {
335
+ display: flex;
336
+ align-items: center;
337
+ gap: 6px;
338
+ margin-bottom: 6px;
339
+ }
340
+ .di-section-title-row .di-section-title {
341
+ margin-bottom: 0;
342
+ }
343
+ .di-help-icon {
344
+ width: 18px;
345
+ height: 18px;
346
+ padding: 0;
347
+ border: 1px solid #e5e7eb;
348
+ border-radius: 999px;
349
+ background: #fff;
350
+ color: #8190a5;
351
+ display: inline-flex;
352
+ align-items: center;
353
+ justify-content: center;
354
+ cursor: pointer;
355
+ transition: all 0.12s ease;
356
+ }
357
+ .di-help-icon:hover {
358
+ border-color: #c4b5fd;
359
+ color: #7c3aed;
360
+ background: #faf5ff;
361
+ }
362
+ .di-help-icon--on {
363
+ border-color: #c4b5fd;
364
+ color: #7c3aed;
365
+ background: #faf5ff;
366
+ }
367
+ .di-help-popover {
368
+ margin-bottom: 8px;
369
+ padding: 8px 10px;
370
+ border: 1px solid #ede9fe;
371
+ border-radius: 8px;
372
+ background: #faf5ff;
373
+ font-size: 11px;
374
+ line-height: 1.5;
375
+ color: #6b7280;
376
+ }
377
+
378
+ /* ── 颜色行 ── */
379
+ .di-color-row {
380
+ position: relative;
381
+ display: flex;
382
+ align-items: center;
383
+ gap: 8px;
384
+ margin-bottom: 8px;
385
+ }
386
+ .di-color-row:last-child { margin-bottom: 0; }
387
+ .di-attr-label {
388
+ width: 44px;
389
+ flex-shrink: 0;
390
+ font-size: 12px;
391
+ color: #6b7280;
392
+ }
393
+
394
+ /* 色块下拉按钮 */
395
+ .di-swatch-btn {
396
+ width: 28px;
397
+ height: 28px;
398
+ border-radius: 6px;
399
+ border: 1px solid rgba(0,0,0,0.08);
400
+ flex-shrink: 0;
401
+ cursor: pointer;
402
+ display: flex;
403
+ align-items: center;
404
+ justify-content: center;
405
+ transition: transform 0.12s;
406
+ }
407
+ .di-swatch-btn:hover { transform: scale(1.06); }
408
+
409
+ /* 信息区 */
410
+ .di-color-info {
411
+ flex: 1;
412
+ display: flex;
413
+ flex-direction: column;
414
+ gap: 1px;
415
+ min-width: 0;
416
+ overflow: hidden;
417
+ }
418
+ .di-token-name {
419
+ font-size: 11px;
420
+ font-weight: 600;
421
+ color: #7c3aed;
422
+ white-space: nowrap;
423
+ overflow: hidden;
424
+ text-overflow: ellipsis;
425
+ }
426
+ /* 硬编码颜色:用面板标题色,不使用 token 紫色强调 */
427
+ .di-token-name--plain {
428
+ font-size: 11px;
429
+ font-weight: 500;
430
+ color: #374151;
431
+ font-family: monospace;
432
+ white-space: nowrap;
433
+ overflow: hidden;
434
+ text-overflow: ellipsis;
435
+ }
436
+ .di-hex {
437
+ font-size: 10px;
438
+ color: #9ca3af;
439
+ font-family: monospace;
440
+ white-space: nowrap;
441
+ overflow: hidden;
442
+ text-overflow: ellipsis;
443
+ }
444
+ .di-hex--main {
445
+ font-size: 13px;
446
+ color: #374151;
447
+ font-family: monospace;
448
+ }
449
+ .di-token-add {
450
+ display: inline-flex;
451
+ align-items: center;
452
+ padding: 3px 10px;
453
+ border-radius: 6px;
454
+ border: 1px dashed #d1d5db;
455
+ background: none;
456
+ color: #6b7280;
457
+ font-size: 12px;
458
+ font-family: inherit;
459
+ cursor: pointer;
460
+ transition: all 0.12s;
461
+ }
462
+ .di-token-add:hover { border-color: #7c3aed; color: #7c3aed; }
463
+
464
+ .di-inline-input {
465
+ font-size: 12px;
466
+ font-family: monospace;
467
+ border: 1px solid #7c3aed;
468
+ border-radius: 5px;
469
+ padding: 2px 6px;
470
+ outline: none;
471
+ color: #111827;
472
+ width: 140px;
473
+ background: #faf5ff;
474
+ }
475
+ .di-inline-input--token { background: #faf5ff; }
476
+
477
+ /* Token 下拉 */
478
+ .di-dropdown {
479
+ position: absolute;
480
+ top: calc(100% + 4px);
481
+ left: 54px;
482
+ z-index: 10;
483
+ width: 260px;
484
+ background: #fff;
485
+ border: 1px solid #e5e7eb;
486
+ border-radius: 10px;
487
+ box-shadow: 0 8px 24px rgba(0,0,0,0.12);
488
+ overflow: hidden;
489
+ display: flex;
490
+ flex-direction: column;
491
+ max-height: 320px; /* 原 220px + 100px */
492
+ }
493
+ .di-dropdown-list {
494
+ overflow-y: auto;
495
+ flex: 1;
496
+ min-height: 0;
497
+ }
498
+ .di-dropdown-item {
499
+ display: flex;
500
+ align-items: center;
501
+ gap: 8px;
502
+ width: 100%;
503
+ padding: 8px 12px;
504
+ border: none;
505
+ background: none;
506
+ cursor: pointer;
507
+ text-align: left;
508
+ font-family: inherit;
509
+ transition: background 0.1s;
510
+ }
511
+ .di-dropdown-item:hover { background: #f5f3ff; }
512
+ .di-dropdown-swatch {
513
+ width: 20px;
514
+ height: 20px;
515
+ border-radius: 5px;
516
+ flex-shrink: 0;
517
+ }
518
+ .di-dropdown-token {
519
+ flex: 1;
520
+ font-size: 12px;
521
+ font-weight: 600;
522
+ color: #7c3aed;
523
+ white-space: nowrap;
524
+ overflow: hidden;
525
+ text-overflow: ellipsis;
526
+ }
527
+ .di-dropdown-hex {
528
+ font-size: 11px;
529
+ color: #9ca3af;
530
+ font-family: monospace;
531
+ flex-shrink: 0;
532
+ }
533
+ .di-dropdown-empty {
534
+ padding: 12px;
535
+ font-size: 12px;
536
+ color: #9ca3af;
537
+ text-align: center;
538
+ }
539
+ .di-dropdown-divider { display: none; } /* 用 border-top 代替 */
540
+ .di-dropdown-custom {
541
+ display: flex;
542
+ align-items: center;
543
+ gap: 8px;
544
+ padding: 8px 12px;
545
+ flex-shrink: 0;
546
+ border-top: 1px solid #f3f4f6;
547
+ background: #fff;
548
+ }
549
+ .di-dropdown-custom-label {
550
+ font-size: 11px;
551
+ color: #6b7280;
552
+ flex-shrink: 0;
553
+ }
554
+ .di-dropdown-custom-input {
555
+ min-width: 0;
556
+ flex: 1;
557
+ height: 28px;
558
+ padding: 0 10px;
559
+ border: 1px solid #e5e7eb;
560
+ border-radius: 7px;
561
+ font-size: 12px;
562
+ color: #374151;
563
+ outline: none;
564
+ }
565
+ .di-dropdown-custom-input:focus {
566
+ border-color: #c4b5fd;
567
+ }
568
+ .di-dropdown-custom-apply {
569
+ height: 28px;
570
+ padding: 0 10px;
571
+ border: 1px solid #e5e7eb;
572
+ border-radius: 7px;
573
+ background: #fff;
574
+ color: #7c3aed;
575
+ font-size: 11px;
576
+ font-weight: 600;
577
+ cursor: pointer;
578
+ transition: all 0.12s ease;
579
+ }
580
+ .di-dropdown-custom-apply:hover {
581
+ border-color: #c4b5fd;
582
+ background: #faf5ff;
583
+ }
584
+ .di-color-picker {
585
+ width: 28px;
586
+ height: 28px;
587
+ border: 1px solid #e5e7eb;
588
+ border-radius: 6px;
589
+ padding: 1px;
590
+ cursor: pointer;
591
+ background: none;
592
+ flex-shrink: 0;
593
+ }
594
+
595
+ /* ── 文字区 ── */
596
+ .di-note--sm {
597
+ min-height: 52px;
598
+ height: auto;
599
+ margin-bottom: 8px;
600
+ overflow: hidden;
601
+ field-sizing: content;
602
+ }
603
+ .di-empty {
604
+ font-size: 12px;
605
+ color: #9ca3af;
606
+ padding: 4px 0;
607
+ line-height: 1.5;
608
+ }
609
+ .di-changes-list {
610
+ margin: 0;
611
+ padding: 0 0 0 18px;
612
+ display: flex;
613
+ flex-direction: column;
614
+ gap: 5px;
615
+ }
616
+ .di-changes-list li {
617
+ font-size: 11px;
618
+ color: #374151;
619
+ line-height: 1.5;
620
+ font-family: monospace;
621
+ }
622
+ .di-typo-row {
623
+ display: grid;
624
+ grid-template-columns: auto 1fr;
625
+ gap: 6px;
626
+ margin-bottom: 4px;
627
+ }
628
+ .di-typo-card {
629
+ border: 1px solid #e5e7eb;
630
+ border-radius: 8px;
631
+ padding: 6px 8px 8px;
632
+ }
633
+ .di-typo-card--wide { /* 自适应宽度 */ }
634
+ .di-weight-stepper {
635
+ display: flex;
636
+ align-items: center;
637
+ gap: 2px;
638
+ margin-top: 4px;
639
+ }
640
+ .di-weight-visible {
641
+ display: flex;
642
+ gap: 2px;
643
+ flex: 1;
644
+ }
645
+ .di-weight-btn {
646
+ flex: 1;
647
+ padding: 3px 0;
648
+ border-radius: 5px;
649
+ border: 1px solid #e5e7eb;
650
+ background: #fff;
651
+ color: #374151;
652
+ font-size: 11px;
653
+ font-family: inherit;
654
+ cursor: pointer;
655
+ transition: all 0.1s;
656
+ }
657
+ .di-weight-btn:hover { border-color: #c4b5fd; background: #faf5ff; }
658
+ .di-weight-btn--on { background: #7c3aed; border-color: #7c3aed; color: #fff; }
659
+ .di-weight-btn--on:hover { background: #6d28d9; border-color: #6d28d9; }
660
+
661
+ /* ── Boxing 盒模型视图 ── */
662
+ .di-boxing {
663
+ position: relative;
664
+ width: 100%;
665
+ max-width: 100px;
666
+ height: auto;
667
+ margin: 8px auto 0;
668
+ border-radius: 7px;
669
+ flex-shrink: 0;
670
+ box-sizing: border-box;
671
+ display: grid;
672
+ grid-template-columns: 30px 26px 30px;
673
+ grid-template-rows: 28px 28px 28px;
674
+ gap: 2px;
675
+ align-items: center;
676
+ justify-content: center;
677
+ justify-items: center;
678
+ }
679
+ .di-box-center {
680
+ position: static;
681
+ grid-column: 2;
682
+ grid-row: 2;
683
+ transform: none;
684
+ }
685
+ .di-box-top {
686
+ position: static;
687
+ grid-column: 2;
688
+ grid-row: 1;
689
+ transform: none;
690
+ }
691
+ .di-box-bottom {
692
+ position: static;
693
+ grid-column: 2;
694
+ grid-row: 3;
695
+ transform: none;
696
+ }
697
+ .di-box-left {
698
+ position: static;
699
+ grid-column: 1;
700
+ grid-row: 2;
701
+ transform: none;
702
+ }
703
+ .di-box-right {
704
+ position: static;
705
+ grid-column: 3;
706
+ grid-row: 2;
707
+ transform: none;
708
+ }
709
+ /* 内边距:深边框 + 浅色填充区 = padding 空间可见 */
710
+ .di-boxing--padding {
711
+ border: 2px solid rgba(124,58,237,0.6);
712
+ background: rgba(124,58,237,0.1);
713
+ }
714
+ /* 统一 block 基础尺寸 */
715
+ .di-boxing-block {
716
+ width: 26px;
717
+ height: 26px;
718
+ background: rgba(124,58,237,0.25);
719
+ border-radius: 5px;
720
+ flex-shrink: 0;
721
+ }
722
+ .di-boxing--margin .di-boxing-block {
723
+ outline: 1.5px solid rgba(124,58,237,0.45);
724
+ }
725
+
726
+ /* 外边距:无底色 */
727
+ .di-boxing--margin {
728
+ border: none;
729
+ background: transparent;
730
+ }
731
+
732
+ /* di-boxing-row / di-boxing-mid 已由 nth-child 替代,保留空 */
733
+
734
+ /* compact SideInput(boxing 里用)*/
735
+ .di-side-combo--compact { width: 30px; }
736
+ .di-side-combo--compact .di-side-display {
737
+ width: 30px;
738
+ height: 28px;
739
+ border-radius: 7px;
740
+ padding: 2px 0;
741
+ overflow: hidden;
742
+ }
743
+ .di-side-combo--compact .di-side-display-label {
744
+ font-size: 11px;
745
+ line-height: 1.05;
746
+ }
747
+ .di-side-combo--compact .di-side-display-sub {
748
+ font-size: 9px;
749
+ line-height: 1.05;
750
+ }
751
+
752
+ /* ── 四方向输入 ── */
753
+ .di-fourside {
754
+ display: flex;
755
+ flex-direction: column;
756
+ align-items: center;
757
+ gap: 3px;
758
+ margin-top: 6px;
759
+ }
760
+ .di-fourside-row {
761
+ display: flex;
762
+ justify-content: center;
763
+ }
764
+ .di-fourside-mid {
765
+ display: flex;
766
+ align-items: center;
767
+ gap: 4px;
768
+ }
769
+ .di-fourside-center {
770
+ flex-shrink: 0;
771
+ }
772
+ .di-side-combo {
773
+ position: relative;
774
+ width: 36px;
775
+ }
776
+ .di-side-combo--wide {
777
+ width: 100%;
778
+ }
779
+ .di-side-combo--wide .di-side-display {
780
+ width: 100%;
781
+ flex-direction: column;
782
+ gap: 0;
783
+ height: 28px;
784
+ }
785
+ .di-side-combo--wide .di-side-popup {
786
+ min-width: 100px;
787
+ }
788
+ .di-gap-input-row {
789
+ flex: 1;
790
+ display: grid;
791
+ grid-template-columns: 24px minmax(34px, 1fr) 24px;
792
+ align-items: center;
793
+ gap: 5px;
794
+ }
795
+ .di-gap-block {
796
+ width: 24px;
797
+ height: 24px;
798
+ background: rgba(124,58,237,0.25);
799
+ border-radius: 5px;
800
+ outline: 1.5px solid rgba(124,58,237,0.45);
801
+ flex-shrink: 0;
802
+ }
803
+ .di-side-display {
804
+ width: 36px;
805
+ height: 22px;
806
+ display: flex;
807
+ flex-direction: column;
808
+ align-items: center;
809
+ justify-content: center;
810
+ border: 1px solid #e5e7eb;
811
+ border-radius: 5px;
812
+ cursor: pointer;
813
+ background: #fff;
814
+ transition: border-color 0.1s;
815
+ gap: 0;
816
+ padding: 1px 0;
817
+ }
818
+ .di-side-display:hover { border-color: #c4b5fd; }
819
+ .di-side-display-label {
820
+ font-size: 10px;
821
+ font-weight: 600;
822
+ color: #374151;
823
+ line-height: 1.1;
824
+ font-family: monospace;
825
+ }
826
+ .di-side-display-sub {
827
+ font-size: 8px;
828
+ color: #9ca3af;
829
+ line-height: 1;
830
+ font-family: monospace;
831
+ }
832
+ .di-side-overlay {
833
+ position: fixed;
834
+ inset: 0;
835
+ z-index: 29;
836
+ }
837
+ .di-side-popup {
838
+ position: fixed;
839
+ z-index: 99999;
840
+ background: #fff;
841
+ border: 1px solid #e5e7eb;
842
+ border-radius: 8px;
843
+ box-shadow: 0 8px 24px rgba(0,0,0,0.12);
844
+ overflow: hidden;
845
+ min-width: 90px;
846
+ }
847
+ .di-side-input-edit {
848
+ width: 100%;
849
+ padding: 5px 8px;
850
+ border: none;
851
+ border-bottom: 1px solid #f3f4f6;
852
+ font-size: 11px;
853
+ font-family: monospace;
854
+ outline: none;
855
+ color: #374151;
856
+ background: #faf5ff;
857
+ }
858
+ .di-side-steps { display: flex; flex-direction: column; }
859
+ .di-side-step-item {
860
+ display: flex;
861
+ align-items: center;
862
+ justify-content: space-between;
863
+ gap: 6px;
864
+ padding: 4px 8px;
865
+ border: none;
866
+ background: none;
867
+ font-size: 11px;
868
+ color: #374151;
869
+ font-family: inherit;
870
+ cursor: pointer;
871
+ text-align: left;
872
+ }
873
+ .di-side-step-item:hover { background: #f5f3ff; color: #7c3aed; }
874
+ .di-side-step-item--on { color: #7c3aed; font-weight: 700; background: #f5f3ff; }
875
+ .di-side-step-sub { font-size: 9px; color: #9ca3af; }
876
+
877
+ /* ── 边框区 ── */
878
+ .di-border-row {
879
+ display: grid;
880
+ grid-template-columns: repeat(3, 1fr);
881
+ gap: 8px;
882
+ }
883
+ .di-border-card {
884
+ display: flex;
885
+ flex-direction: column;
886
+ gap: 6px;
887
+ border: 1px solid #e5e7eb;
888
+ border-radius: 10px;
889
+ padding: 8px 10px 10px;
890
+ position: relative;
891
+ min-width: 0;
892
+ overflow: hidden;
893
+ }
894
+ .di-border-card-title {
895
+ font-size: 11px;
896
+ font-weight: 700;
897
+ color: #374151;
898
+ margin-bottom: 0;
899
+ }
900
+ .di-border-color-body {
901
+ display: flex;
902
+ flex-direction: row;
903
+ align-items: center;
904
+ gap: 8px;
905
+ margin-top: 0 !important;
906
+ }
907
+ .di-border-color-info {
908
+ min-width: 0;
909
+ overflow: hidden;
910
+ flex: 1;
911
+ display: flex;
912
+ flex-direction: column;
913
+ gap: 1px;
914
+ }
915
+ .di-border-styles {
916
+ display: grid;
917
+ grid-template-columns: 1fr 1fr;
918
+ gap: 4px;
919
+ margin-top: 6px;
920
+ }
921
+ /* 棋盘格透明底 */
922
+ .di-swatch-btn--empty {
923
+ background: repeating-conic-gradient(#e5e7eb 0% 25%, #fff 0% 50%) 0 0 / 8px 8px !important;
924
+ border: 1px solid #e5e7eb !important;
925
+ }
926
+
927
+ /* 样式单值 + 下拉 */
928
+ .di-border-style-single {
929
+ display: flex;
930
+ align-items: center;
931
+ gap: 6px;
932
+ width: 100%;
933
+ padding: 5px 7px;
934
+ border: 1px solid #e5e7eb;
935
+ border-radius: 6px;
936
+ background: #fff;
937
+ cursor: pointer;
938
+ font-family: inherit;
939
+ transition: all 0.1s;
940
+ margin-top: 0;
941
+ }
942
+ .di-border-style-single:hover { border-color: #c4b5fd; background: #faf5ff; }
943
+ .di-border-style-label { font-size: 11px; font-weight: 600; color: #7c3aed; }
944
+ .di-border-style-name { font-size: 10px; color: #111827; }
945
+ .di-border-style-name--custom {
946
+ font-size: 11px;
947
+ font-weight: 500;
948
+ color: #374151;
949
+ }
950
+ .di-border-style-drop {
951
+ background: #fff;
952
+ border: 1px solid #e5e7eb;
953
+ border-radius: 8px;
954
+ box-shadow: 0 6px 20px rgba(0,0,0,0.1);
955
+ overflow: hidden;
956
+ min-width: 100px;
957
+ }
958
+ .di-border-style-drop-item {
959
+ display: flex;
960
+ align-items: center;
961
+ gap: 8px;
962
+ width: 100%;
963
+ padding: 6px 10px;
964
+ border: none;
965
+ background: none;
966
+ font-family: inherit;
967
+ cursor: pointer;
968
+ }
969
+ .di-border-style-drop-item:hover { background: #f5f3ff; }
970
+ .di-border-style-drop-item--on { color: #7c3aed; font-weight: 700; background: #f5f3ff; }
971
+
972
+ .di-border-style-btn {
973
+ padding: 4px 0;
974
+ border-radius: 6px;
975
+ border: 1px solid #e5e7eb;
976
+ background: #fff;
977
+ color: #374151;
978
+ font-size: 13px;
979
+ cursor: pointer;
980
+ transition: all 0.1s;
981
+ }
982
+ .di-border-style-btn:hover { border-color: #c4b5fd; background: #faf5ff; }
983
+ .di-border-style-btn--on { background: #7c3aed; border-color: #7c3aed; color: #fff; }
984
+ .di-border-style-btn--on:hover { background: #6d28d9; border-color: #6d28d9; }
985
+ .di-dropdown--border { left: 0; width: 220px; }
986
+
987
+ /* ── Spinner(上下箭头步进) ── */
988
+ .di-spinner {
989
+ display: flex;
990
+ align-items: stretch;
991
+ border: 1px solid #e5e7eb;
992
+ border-radius: 6px;
993
+ overflow: hidden;
994
+ margin-top: 0;
995
+ transition: border-color 0.1s;
996
+ }
997
+ .di-spinner:hover { border-color: #c4b5fd; }
998
+ .di-spinner-val {
999
+ flex: 1;
1000
+ padding: 5px 8px;
1001
+ font-size: 12px;
1002
+ color: #374151;
1003
+ font-family: monospace;
1004
+ white-space: nowrap;
1005
+ overflow: hidden;
1006
+ text-overflow: ellipsis;
1007
+ }
1008
+ .di-spinner-btns {
1009
+ display: flex;
1010
+ flex-direction: column;
1011
+ border-left: 1px solid #e5e7eb;
1012
+ flex-shrink: 0;
1013
+ }
1014
+ .di-spinner-up,
1015
+ .di-spinner-dn {
1016
+ width: 20px;
1017
+ flex: 1;
1018
+ border: none;
1019
+ background: #fff;
1020
+ cursor: pointer;
1021
+ display: flex;
1022
+ align-items: center;
1023
+ justify-content: center;
1024
+ color: #9ca3af;
1025
+ transition: background 0.1s, color 0.1s;
1026
+ padding: 0;
1027
+ }
1028
+ .di-spinner-up { border-bottom: 1px solid #e5e7eb; }
1029
+ .di-spinner-up:hover, .di-spinner-dn:hover { background: #f5f3ff; color: #7c3aed; }
1030
+ .di-spinner-up:disabled, .di-spinner-dn:disabled { color: #e5e7eb; cursor: default; }
1031
+
1032
+ /* ── 自定义颜色触发块 ── */
1033
+ .di-custom-color-trigger {
1034
+ width: 22px;
1035
+ height: 22px;
1036
+ border-radius: 5px;
1037
+ border: 1px solid rgba(0,0,0,0.1);
1038
+ cursor: pointer;
1039
+ flex-shrink: 0;
1040
+ transition: transform 0.1s;
1041
+ }
1042
+ .di-custom-color-trigger:hover { transform: scale(1.1); }
1043
+
1044
+ /* ── AddTokenModal 弹出框 ── */
1045
+ .di-modal-overlay {
1046
+ position: fixed; inset: 0; z-index: 999999;
1047
+ background: rgba(0,0,0,0.35);
1048
+ display: flex; align-items: center; justify-content: center;
1049
+ }
1050
+ .di-modal {
1051
+ width: 460px; max-width: calc(100vw - 32px);
1052
+ background: #fff; border-radius: 16px;
1053
+ box-shadow: 0 24px 64px rgba(0,0,0,0.18);
1054
+ overflow: hidden;
1055
+ font-family: "PingFang SC", system-ui, sans-serif;
1056
+ }
1057
+ .di-modal-header {
1058
+ display: flex; align-items: center; gap: 10px;
1059
+ padding: 16px 20px;
1060
+ border-bottom: 1px solid #f3f4f6;
1061
+ }
1062
+ .di-modal-swatch { width: 28px; height: 28px; border-radius: 6px; border: 1px solid rgba(0,0,0,0.08); flex-shrink: 0; }
1063
+ .di-modal-hex { font-size: 13px; font-family: monospace; color: #374151; }
1064
+ .di-modal-body { padding: 16px 20px; display: flex; flex-direction: column; gap: 14px; }
1065
+ .di-modal-tabs { display: flex; gap: 6px; }
1066
+ .di-modal-tab {
1067
+ flex: 1; padding: 8px 0; border-radius: 8px;
1068
+ border: 1px solid #e5e7eb; background: #fff;
1069
+ font-size: 13px; font-family: inherit; cursor: pointer; color: #6b7280;
1070
+ }
1071
+ .di-modal-tab.--on { background: #7c3aed; border-color: #7c3aed; color: #fff; font-weight: 600; }
1072
+ .di-modal-field { display: flex; flex-direction: column; gap: 8px; }
1073
+ .di-modal-field-label { font-size: 12px; font-weight: 700; color: #374151; display: flex; align-items: center; gap: 6px; }
1074
+ .di-modal-auto-tag {
1075
+ font-size: 10px; font-weight: 500; color: #7c3aed;
1076
+ background: rgba(124,58,237,0.08); padding: 1px 6px; border-radius: 4px;
1077
+ }
1078
+ .di-modal-opt-btn {
1079
+ padding: 5px 12px; border-radius: 6px;
1080
+ border: 1px solid #e5e7eb; background: #fff;
1081
+ font-size: 12px; font-family: inherit; cursor: pointer; color: #374151;
1082
+ transition: all 0.1s;
1083
+ }
1084
+ .di-modal-opt-btn:hover { border-color: #c4b5fd; color: #7c3aed; }
1085
+ .di-modal-opt-btn.--on { background: #7c3aed; border-color: #7c3aed; color: #fff; }
1086
+ .di-modal-select {
1087
+ width: 100%; padding: 8px 10px; border: 1px solid #e5e7eb;
1088
+ border-radius: 6px; font-size: 12px; font-family: inherit; outline: none;
1089
+ }
1090
+ .di-modal-result {
1091
+ background: #faf5ff; border: 1px solid #c4b5fd; border-radius: 8px;
1092
+ padding: 12px 14px; display: flex; flex-direction: column; gap: 4px;
1093
+ }
1094
+ .di-modal-result-label { font-size: 10px; color: #9ca3af; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; }
1095
+ .di-modal-result-var { font-size: 16px; font-weight: 700; color: #7c3aed; font-family: monospace; }
1096
+ .di-modal-result-trail { font-size: 11px; color: #6b7280; }
1097
+ .di-modal-result-trail code { background: #ede9fe; color: #7c3aed; padding: 1px 5px; border-radius: 3px; font-family: monospace; }
1098
+ .di-modal-foot {
1099
+ display: flex; gap: 8px; padding: 14px 20px;
1100
+ border-top: 1px solid #f3f4f6;
1101
+ }
1102
+ .di-modal-cancel {
1103
+ flex: 1; padding: 9px 0; border-radius: 8px;
1104
+ border: 1px solid #e5e7eb; background: #fff;
1105
+ font-size: 13px; font-family: inherit; cursor: pointer; color: #6b7280;
1106
+ }
1107
+ .di-modal-ok {
1108
+ flex: 2; padding: 9px 0; border-radius: 8px; border: none;
1109
+ background: #7c3aed; font-size: 13px; font-weight: 700;
1110
+ font-family: inherit; cursor: pointer; color: #fff;
1111
+ }
1112
+ .di-modal-ok:disabled { background: #c4b5fd; cursor: default; }
1113
+ .di-modal-ok:hover:not(:disabled) { background: #6d28d9; }
1114
+
1115
+ /* ── 色板「+」格子 ── */
1116
+ .di-palette-add-btn {
1117
+ width: 22px; height: 22px; border-radius: 5px;
1118
+ border: 1.5px dashed #d1d5db; background: none;
1119
+ color: #9ca3af; font-size: 16px; font-weight: 300;
1120
+ line-height: 1;
1121
+ cursor: pointer; display: flex; align-items: center; justify-content: center;
1122
+ transition: all 0.1s; flex-shrink: 0;
1123
+ padding: 0;
1124
+ }
1125
+ .di-palette-add-btn:hover { background: #f9fafb; border-color: #9ca3af; color: #6b7280; }
1126
+
1127
+ /* ── 自定义底部 ── */
1128
+ .di-custom-bottom {
1129
+ border-top: 1px solid #f3f4f6;
1130
+ padding: 8px 12px;
1131
+ display: flex; align-items: center; gap: 6px;
1132
+ }
1133
+ /* 带前/后缀的输入组 */
1134
+ .di-field-wrap {
1135
+ display: flex; align-items: center;
1136
+ border: 1px solid #e5e7eb; border-radius: 5px;
1137
+ height: 26px; overflow: hidden;
1138
+ flex: 1;
1139
+ }
1140
+ .di-field-wrap:focus-within { border-color: #7c3aed; }
1141
+ .di-field-wrap--fixed { flex: 0 0 auto; width: 62px; }
1142
+ .di-field-prefix, .di-field-suffix {
1143
+ padding: 0 5px; font-size: 11px; color: #9ca3af;
1144
+ flex-shrink: 0; user-select: none;
1145
+ }
1146
+ .di-field-input {
1147
+ flex: 1; border: none; outline: none;
1148
+ padding: 0 4px; height: 100%;
1149
+ font-size: 11px; font-family: monospace; color: #374151;
1150
+ min-width: 0; background: transparent;
1151
+ }
1152
+ .di-field-input--num {
1153
+ width: 28px; text-align: right; flex: none;
1154
+ }
1155
+ .di-field-input--num::-webkit-inner-spin-button,
1156
+ .di-field-input--num::-webkit-outer-spin-button { -webkit-appearance: none; }
1157
+ .di-field-input--num { -moz-appearance: textfield; }
1158
+
1159
+ /* ── 添加为 Token 确认区 ── */
1160
+ .di-add-token-confirm {
1161
+ padding: 10px 12px;
1162
+ background: #faf5ff;
1163
+ border-top: 1px solid #e5e7eb;
1164
+ display: flex;
1165
+ flex-direction: column;
1166
+ gap: 8px;
1167
+ }
1168
+ .di-add-token-row { display: flex; align-items: center; gap: 8px; }
1169
+ .di-add-token-swatch {
1170
+ width: 16px; height: 16px;
1171
+ border-radius: 4px;
1172
+ border: 1px solid rgba(0,0,0,0.08);
1173
+ flex-shrink: 0;
1174
+ }
1175
+ .di-add-token-usage-btn {
1176
+ padding: 3px 8px;
1177
+ border-radius: 5px;
1178
+ border: 1px solid #e5e7eb;
1179
+ background: #fff;
1180
+ font-size: 10px;
1181
+ font-family: inherit;
1182
+ cursor: pointer;
1183
+ color: #374151;
1184
+ }
1185
+ .di-add-token-usage-btn:hover { border-color: #c4b5fd; color: #7c3aed; }
1186
+ .di-add-token-usage-btn.--on { background: #7c3aed; border-color: #7c3aed; color: #fff; }
1187
+ .di-add-token-input {
1188
+ flex: 1;
1189
+ min-width: 0;
1190
+ height: 24px;
1191
+ border: 1px solid #c4b5fd;
1192
+ border-radius: 4px;
1193
+ padding: 0 6px;
1194
+ font-size: 11px;
1195
+ font-family: monospace;
1196
+ outline: none;
1197
+ background: #fff;
1198
+ color: #374151;
1199
+ }
1200
+ .di-add-token-cancel {
1201
+ flex: 1; padding: 5px 0;
1202
+ border-radius: 5px; border: 1px solid #e5e7eb;
1203
+ background: #fff; font-size: 10px; font-family: inherit; cursor: pointer; color: #6b7280;
1204
+ }
1205
+ .di-add-token-ok {
1206
+ flex: 2; padding: 5px 0;
1207
+ border-radius: 5px; border: none;
1208
+ background: #7c3aed; font-size: 10px; font-family: inherit; cursor: pointer; color: #fff; font-weight: 700;
1209
+ }
1210
+ .di-add-token-ok:disabled { background: #c4b5fd; cursor: default; }
1211
+
1212
+ /* ── 色板下拉 ── */
1213
+ .di-palette-dropdown {
1214
+ background: #fff;
1215
+ border: 1px solid #e5e7eb;
1216
+ border-radius: 12px;
1217
+ box-shadow: 0 8px 24px rgba(0,0,0,0.12);
1218
+ padding: 10px 12px 4px;
1219
+ min-width: 200px;
1220
+ max-width: 240px;
1221
+ max-height: 280px;
1222
+ overflow-y: auto;
1223
+ }
1224
+ .di-palette-group { margin-bottom: 8px; }
1225
+ .di-palette-group-label {
1226
+ font-size: 10px;
1227
+ font-weight: 700;
1228
+ color: #9ca3af;
1229
+ text-transform: uppercase;
1230
+ letter-spacing: 0.6px;
1231
+ margin-bottom: 5px;
1232
+ }
1233
+ .di-palette-swatches {
1234
+ display: flex;
1235
+ flex-wrap: wrap;
1236
+ gap: 5px;
1237
+ }
1238
+ .di-palette-swatch {
1239
+ width: 22px;
1240
+ height: 22px;
1241
+ border-radius: 5px;
1242
+ border: 1px solid rgba(0,0,0,0.15);
1243
+ cursor: pointer;
1244
+ transition: transform 0.1s, box-shadow 0.1s;
1245
+ flex-shrink: 0;
1246
+ }
1247
+ .di-palette-swatch:hover { transform: scale(1.15); box-shadow: 0 2px 6px rgba(0,0,0,0.15); }
1248
+ .di-palette-none {
1249
+ width: 22px; height: 22px; border-radius: 5px;
1250
+ border: 1px solid rgba(0,0,0,0.15); cursor: pointer; flex-shrink: 0;
1251
+ background: repeating-conic-gradient(#e5e7eb 0% 25%, #fff 0% 50%) 0 0 / 8px 8px;
1252
+ position: relative; overflow: hidden;
1253
+ transition: transform 0.1s;
1254
+ }
1255
+ .di-palette-none::after {
1256
+ content: '';
1257
+ position: absolute;
1258
+ top: 50%; left: -2px; right: -2px;
1259
+ height: 1.5px;
1260
+ background: #ef4444;
1261
+ transform: rotate(-45deg);
1262
+ transform-origin: center;
1263
+ }
1264
+ .di-palette-swatch--on {
1265
+ outline: 2px solid #7c3aed;
1266
+ outline-offset: 1px;
1267
+ }
1268
+
1269
+ /* ── 布局控制:位置 + 尺寸 ── */
1270
+ .di-layout-grid {
1271
+ display: grid;
1272
+ grid-template-columns: 132px 1fr;
1273
+ gap: 8px;
1274
+ }
1275
+ .di-layout-card {
1276
+ min-width: 0;
1277
+ border: 1px solid #e5e7eb;
1278
+ border-radius: 10px;
1279
+ padding: 8px 10px 10px;
1280
+ background: #fff;
1281
+ overflow: hidden;
1282
+ }
1283
+ .di-layout-card-title {
1284
+ margin-bottom: 6px;
1285
+ color: #374151;
1286
+ font-size: 11px;
1287
+ font-weight: 700;
1288
+ }
1289
+ .di-shadow-grid {
1290
+ display: grid;
1291
+ grid-template-columns: 1fr 1fr;
1292
+ gap: 6px;
1293
+ }
1294
+ .di-shadow-card {
1295
+ min-width: 0;
1296
+ border: 1px solid #e5e7eb;
1297
+ border-radius: 10px;
1298
+ padding: 8px 10px 10px;
1299
+ background: #fff;
1300
+ }
1301
+ .di-shadow-card-title {
1302
+ margin-bottom: 6px;
1303
+ color: #374151;
1304
+ font-size: 11px;
1305
+ font-weight: 700;
1306
+ }
1307
+ .di-shadow-drop {
1308
+ min-width: 240px;
1309
+ max-width: 320px;
1310
+ }
1311
+ .di-shadow-drop-meta {
1312
+ min-width: 0;
1313
+ display: flex;
1314
+ flex-direction: column;
1315
+ gap: 1px;
1316
+ align-items: flex-start;
1317
+ }
1318
+ .di-shadow-drop-value {
1319
+ color: #6b7280;
1320
+ font-size: 10px;
1321
+ line-height: 1.3;
1322
+ white-space: normal;
1323
+ word-break: break-word;
1324
+ text-align: left;
1325
+ }
1326
+ .di-shadow-preview-row {
1327
+ display: flex;
1328
+ align-items: center;
1329
+ gap: 10px;
1330
+ min-width: 0;
1331
+ }
1332
+ .di-shadow-preview-chip {
1333
+ width: 34px;
1334
+ height: 34px;
1335
+ flex: 0 0 34px;
1336
+ border-radius: 10px;
1337
+ border: 1px solid #e5e7eb;
1338
+ background: #fff;
1339
+ }
1340
+ .di-shadow-preview-copy {
1341
+ min-width: 0;
1342
+ display: flex;
1343
+ flex-direction: column;
1344
+ gap: 2px;
1345
+ }
1346
+ .di-hex--wrap {
1347
+ white-space: normal;
1348
+ word-break: break-word;
1349
+ line-height: 1.3;
1350
+ }
1351
+ .di-nudge-pad {
1352
+ display: grid;
1353
+ grid-template-columns: 30px 30px 30px;
1354
+ grid-template-rows: 30px 30px 30px;
1355
+ gap: 4px;
1356
+ align-items: center;
1357
+ justify-items: center;
1358
+ justify-content: center;
1359
+ }
1360
+ .di-nudge-btn {
1361
+ width: 30px;
1362
+ height: 30px;
1363
+ padding: 0;
1364
+ border: 1px solid #e5e7eb;
1365
+ border-radius: 6px;
1366
+ background: #fff;
1367
+ color: #45556c;
1368
+ font-size: 14px;
1369
+ font-weight: 700;
1370
+ cursor: pointer;
1371
+ transition: background 0.12s, border-color 0.12s, color 0.12s;
1372
+ }
1373
+ .di-nudge-btn:hover,
1374
+ .di-nudge-btn:focus-visible {
1375
+ border-color: #c4b5fd;
1376
+ background: #faf5ff;
1377
+ color: #7c3aed;
1378
+ outline: none;
1379
+ }
1380
+ .di-nudge-btn--up,
1381
+ .di-nudge-btn--down { grid-column: 2; justify-self: center; }
1382
+ .di-nudge-btn--left { grid-column: 1; grid-row: 2; }
1383
+ .di-nudge-btn--right { grid-column: 3; grid-row: 2; }
1384
+ .di-nudge-readout {
1385
+ grid-column: 2;
1386
+ grid-row: 2;
1387
+ display: flex;
1388
+ flex-direction: column;
1389
+ align-items: center;
1390
+ justify-content: center;
1391
+ width: 30px;
1392
+ height: 30px;
1393
+ box-sizing: border-box;
1394
+ border: 1px solid #e5e7eb;
1395
+ border-radius: 6px;
1396
+ background: #fff;
1397
+ color: #6b7280;
1398
+ font-family: monospace;
1399
+ font-size: 10px;
1400
+ line-height: 1.2;
1401
+ }
1402
+ .di-size-row {
1403
+ display: grid;
1404
+ grid-template-columns: 16px minmax(0, 1fr) 86px;
1405
+ gap: 6px;
1406
+ align-items: center;
1407
+ }
1408
+ .di-size-row + .di-size-row { margin-top: 6px; }
1409
+ .di-size-axis {
1410
+ color: #6b7280;
1411
+ font-size: 12px;
1412
+ font-weight: 700;
1413
+ }
1414
+ .di-size-value {
1415
+ min-width: 0;
1416
+ height: 30px;
1417
+ padding: 0 8px;
1418
+ border: 1px solid #e5e7eb;
1419
+ border-radius: 6px;
1420
+ background: #fff;
1421
+ color: #374151;
1422
+ font-family: monospace;
1423
+ font-size: 11px;
1424
+ text-align: left;
1425
+ cursor: text;
1426
+ overflow: hidden;
1427
+ text-overflow: ellipsis;
1428
+ white-space: nowrap;
1429
+ outline: none;
1430
+ width: 100%;
1431
+ box-sizing: border-box;
1432
+ }
1433
+ .di-size-value:hover,
1434
+ .di-size-value:focus-visible {
1435
+ border-color: #c4b5fd;
1436
+ background: #faf5ff;
1437
+ color: #7c3aed;
1438
+ outline: none;
1439
+ }
1440
+ .di-size-mode-select {
1441
+ height: 30px;
1442
+ border-radius: 6px;
1443
+ border: 1px solid #e5e7eb;
1444
+ min-width: 0;
1445
+ width: 100%;
1446
+ padding: 0 28px 0 10px;
1447
+ background: #fff;
1448
+ background-image: url("data:image/svg+xml,%3Csvg width='8' height='5' viewBox='0 0 8 5' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l3 3 3-3' stroke='%239ca3af' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
1449
+ background-repeat: no-repeat;
1450
+ background-position: right 10px center;
1451
+ background-size: 8px 5px;
1452
+ color: #111827;
1453
+ font-size: 11px;
1454
+ font-family: inherit;
1455
+ cursor: pointer;
1456
+ outline: none;
1457
+ appearance: none;
1458
+ -webkit-appearance: none;
1459
+ }
1460
+ .di-size-mode-select:hover,
1461
+ .di-size-mode-select:focus-visible {
1462
+ border-color: #c4b5fd;
1463
+ background: #faf5ff;
1464
+ color: #7c3aed;
1465
+ }
1466
+
1467
+ /* ── 间距三卡片 ── */
1468
+ .di-space-row {
1469
+ display: grid;
1470
+ grid-template-columns: repeat(3, 1fr);
1471
+ gap: 6px;
1472
+ }
1473
+ .di-space-card {
1474
+ border: 1px solid #e5e7eb;
1475
+ border-radius: 10px;
1476
+ padding: 8px 8px 10px;
1477
+ display: flex;
1478
+ flex-direction: column;
1479
+ gap: 4px;
1480
+ min-width: 0;
1481
+ }
1482
+ .di-space-head {
1483
+ display: flex;
1484
+ align-items: center;
1485
+ justify-content: space-between;
1486
+ gap: 4px;
1487
+ }
1488
+ .di-space-head-left {
1489
+ display: flex;
1490
+ flex-direction: column;
1491
+ gap: 3px;
1492
+ min-width: 0;
1493
+ }
1494
+ .di-space-title {
1495
+ font-size: 11px;
1496
+ font-weight: 700;
1497
+ color: #374151;
1498
+ white-space: nowrap;
1499
+ }
1500
+ .di-space-actions {
1501
+ display: flex;
1502
+ align-items: center;
1503
+ gap: 4px;
1504
+ flex-wrap: nowrap;
1505
+ white-space: nowrap;
1506
+ }
1507
+ .di-space-token-tag {
1508
+ font-size: 9px;
1509
+ font-weight: 600;
1510
+ color: #7c3aed;
1511
+ background: rgba(124,58,237,0.08);
1512
+ padding: 1px 4px;
1513
+ border-radius: 3px;
1514
+ line-height: 1.4;
1515
+ }
1516
+ .di-space-token-tag--btn {
1517
+ border: none;
1518
+ cursor: pointer;
1519
+ font-family: inherit;
1520
+ }
1521
+ .di-space-token-tag--btn:hover { background: rgba(124,58,237,0.16); }
1522
+ .di-space-token-drop {
1523
+ position: absolute;
1524
+ top: calc(100% + 4px);
1525
+ left: 0;
1526
+ z-index: 20;
1527
+ background: #fff;
1528
+ border: 1px solid #e5e7eb;
1529
+ border-radius: 8px;
1530
+ box-shadow: 0 6px 20px rgba(0,0,0,0.1);
1531
+ overflow: hidden;
1532
+ min-width: 100px;
1533
+ }
1534
+ .di-space-token-drop-item {
1535
+ display: flex;
1536
+ align-items: center;
1537
+ justify-content: space-between;
1538
+ gap: 8px;
1539
+ width: 100%;
1540
+ padding: 5px 10px;
1541
+ border: none;
1542
+ background: none;
1543
+ font-size: 11px;
1544
+ color: #374151;
1545
+ font-family: inherit;
1546
+ cursor: pointer;
1547
+ text-align: left;
1548
+ }
1549
+ .di-space-token-drop-item:hover { background: #f5f3ff; color: #7c3aed; }
1550
+ .di-space-token-drop-item--on { background: #f5f3ff; color: #7c3aed; font-weight: 700; }
1551
+ .di-space-custom {
1552
+ font-size: 9px;
1553
+ color: #9ca3af;
1554
+ background: none;
1555
+ border: none;
1556
+ padding: 0;
1557
+ cursor: pointer;
1558
+ font-family: inherit;
1559
+ }
1560
+ .di-space-custom:hover { color: #7c3aed; }
1561
+ .di-space-token-match {
1562
+ font-size: 9px;
1563
+ color: #9ca3af;
1564
+ white-space: nowrap;
1565
+ }
1566
+ .di-space-body {
1567
+ display: flex;
1568
+ align-items: center;
1569
+ gap: 4px;
1570
+ }
1571
+
1572
+ /* 图示 */
1573
+ .di-space-visual { flex-shrink: 0; }
1574
+
1575
+ /* 内边距:实线外框 + 浅色padding区 + 深色内容块 */
1576
+ .di-space-visual--padding {
1577
+ width: 24px;
1578
+ height: 24px;
1579
+ border: 1.5px solid #7c3aed;
1580
+ border-radius: 3px;
1581
+ padding: 4px;
1582
+ background: rgba(124,58,237,0.1);
1583
+ display: flex;
1584
+ align-items: center;
1585
+ justify-content: center;
1586
+ flex-shrink: 0;
1587
+ }
1588
+ .di-space-visual--padding::after {
1589
+ content: '';
1590
+ display: block;
1591
+ width: 100%;
1592
+ height: 100%;
1593
+ background: rgba(124,58,237,0.45);
1594
+ border-radius: 2px;
1595
+ }
1596
+
1597
+ /* 外边距:深色实色块 + 虚线外框(::before 支持圆角) */
1598
+ .di-space-visual--margin {
1599
+ position: relative;
1600
+ width: 11px;
1601
+ height: 11px;
1602
+ background: rgba(124,58,237,0.45);
1603
+ border-radius: 2px;
1604
+ margin: 7px;
1605
+ flex-shrink: 0;
1606
+ }
1607
+ .di-space-visual--margin::before {
1608
+ content: '';
1609
+ position: absolute;
1610
+ inset: -6px;
1611
+ border: 1.5px dashed #7c3aed;
1612
+ border-radius: 3px;
1613
+ pointer-events: none;
1614
+ }
1615
+
1616
+ /* 元素间距:两色块 + 箭头 */
1617
+ .di-space-visual--gap {
1618
+ width: 28px;
1619
+ height: 18px;
1620
+ display: flex;
1621
+ align-items: center;
1622
+ justify-content: center;
1623
+ gap: 2px;
1624
+ flex-shrink: 0;
1625
+ }
1626
+ .di-space-visual--gap::before,
1627
+ .di-space-visual--gap::after {
1628
+ content: '';
1629
+ width: 8px;
1630
+ height: 18px;
1631
+ background: rgba(124,58,237,0.35);
1632
+ border-radius: 2px;
1633
+ flex-shrink: 0;
1634
+ }
1635
+ .di-space-gap-arrow {
1636
+ font-size: 11px;
1637
+ color: #7c3aed;
1638
+ line-height: 1;
1639
+ flex-shrink: 0;
1640
+ }
1641
+
1642
+ /* 步进器 */
1643
+ .di-space-stepper {
1644
+ flex: 1;
1645
+ display: flex;
1646
+ align-items: center;
1647
+ justify-content: space-between;
1648
+ gap: 2px;
1649
+ }
1650
+ .di-space-arrow {
1651
+ width: 20px;
1652
+ height: 20px;
1653
+ min-width: 20px;
1654
+ min-height: 20px;
1655
+ border: 1px solid #e5e7eb;
1656
+ background: #fff;
1657
+ color: #7c3aed;
1658
+ font-size: 14px;
1659
+ font-weight: 300;
1660
+ cursor: pointer;
1661
+ padding: 0;
1662
+ display: flex;
1663
+ align-items: center;
1664
+ justify-content: center;
1665
+ border-radius: 5px;
1666
+ transition: all 0.1s;
1667
+ flex-shrink: 0;
1668
+ }
1669
+ .di-space-arrow:hover { background: rgba(124,58,237,0.08); }
1670
+ .di-space-arrow:disabled { color: #d1d5db; cursor: default; }
1671
+ .di-space-val-group {
1672
+ display: flex;
1673
+ flex-direction: column;
1674
+ align-items: center;
1675
+ gap: 0;
1676
+ }
1677
+ .di-space-size-label {
1678
+ font-size: 13px;
1679
+ font-weight: 700;
1680
+ color: #7c3aed;
1681
+ line-height: 1.2;
1682
+ }
1683
+ .di-space-size-val {
1684
+ font-size: 9px;
1685
+ color: #9ca3af;
1686
+ line-height: 1.2;
1687
+ }
1688
+
1689
+ /* ── 预设选项 ── */
1690
+ .di-preset-row {
1691
+ display: flex;
1692
+ gap: 6px;
1693
+ flex-wrap: nowrap;
1694
+ overflow-x: auto;
1695
+ padding-bottom: 4px;
1696
+ scrollbar-width: thin;
1697
+ }
1698
+ .di-preset {
1699
+ display: flex;
1700
+ flex-direction: column;
1701
+ align-items: center;
1702
+ justify-content: center;
1703
+ flex: 0 0 60px;
1704
+ min-width: 60px;
1705
+ padding: 6px 10px;
1706
+ border-radius: 8px;
1707
+ border: 1px solid #e5e7eb;
1708
+ background: #fff;
1709
+ cursor: pointer;
1710
+ transition: all 0.12s;
1711
+ gap: 1px;
1712
+ }
1713
+ .di-preset:hover { border-color: #c4b5fd; background: #faf5ff; }
1714
+ .di-preset--on {
1715
+ border-color: #7c3aed;
1716
+ background: #7c3aed;
1717
+ color: #fff;
1718
+ }
1719
+ .di-preset--on:hover { background: #6d28d9; border-color: #6d28d9; }
1720
+ .di-preset-label { font-size: 11px; font-weight: 600; font-family: "PingFang SC", system-ui, sans-serif; }
1721
+ .di-preset-sub { font-size: 10px; opacity: 0.75; }
1722
+ .di-preset--on .di-preset-sub { opacity: 0.85; }
1723
+
1724
+ /* ── 作用范围 ── */
1725
+ .di-scope-row {
1726
+ display: flex;
1727
+ gap: 8px;
1728
+ }
1729
+ .di-section-desc {
1730
+ margin-bottom: 8px;
1731
+ font-size: 11px;
1732
+ line-height: 1.45;
1733
+ color: #6b7280;
1734
+ }
1735
+ .di-scope-btn {
1736
+ flex: 1;
1737
+ min-width: 0;
1738
+ padding: 6px 0;
1739
+ border-radius: 8px;
1740
+ border: 1px solid #e5e7eb;
1741
+ background: #fff;
1742
+ color: #374151;
1743
+ font-size: 13px;
1744
+ font-family: inherit;
1745
+ white-space: nowrap;
1746
+ cursor: pointer;
1747
+ transition: all 0.12s;
1748
+ }
1749
+ .di-scope-btn:hover { border-color: #c4b5fd; background: #faf5ff; }
1750
+ .di-scope-btn--on {
1751
+ border-color: #7c3aed;
1752
+ background: #7c3aed;
1753
+ color: #fff;
1754
+ }
1755
+ .di-scope-btn--on:hover {
1756
+ background: #6d28d9;
1757
+ border-color: #6d28d9;
1758
+ }
1759
+ .di-scope-count {
1760
+ display: inline-flex;
1761
+ align-items: center;
1762
+ justify-content: center;
1763
+ min-width: 18px;
1764
+ height: 18px;
1765
+ padding: 0 5px;
1766
+ border-radius: 9px;
1767
+ background: rgba(124,58,237,0.12);
1768
+ color: #7c3aed;
1769
+ font-size: 10px;
1770
+ font-weight: 700;
1771
+ margin-left: 4px;
1772
+ }
1773
+ .di-scope-btn--on .di-scope-count {
1774
+ background: rgba(255,255,255,0.25);
1775
+ color: #fff;
1776
+ }
1777
+
1778
+ /* ── 备注 ── */
1779
+ .di-note {
1780
+ width: 100%;
1781
+ box-sizing: border-box;
1782
+ padding: 8px 10px;
1783
+ border: 1px solid #e5e7eb;
1784
+ border-radius: 8px;
1785
+ font-size: 13px;
1786
+ font-family: inherit;
1787
+ color: #374151;
1788
+ resize: none;
1789
+ outline: none;
1790
+ transition: border-color 0.12s;
1791
+ line-height: 1.5;
1792
+ }
1793
+ .di-note:focus { border-color: #7c3aed; }
1794
+ .di-note::placeholder { color: #9ca3af; }
1795
+
1796
+ /* ── 底部 ── */
1797
+ .di-foot {
1798
+ display: flex;
1799
+ gap: 8px;
1800
+ padding: 8px 14px;
1801
+ border-top: 1px solid #f3f4f6;
1802
+ flex-shrink: 0;
1803
+ }
1804
+ .di-btn-cancel {
1805
+ flex: 1;
1806
+ padding: 7px 0;
1807
+ border-radius: 8px;
1808
+ border: 1px solid #e5e7eb;
1809
+ background: #fff;
1810
+ color: #374151;
1811
+ font-size: 14px;
1812
+ font-weight: 600;
1813
+ font-family: inherit;
1814
+ cursor: pointer;
1815
+ transition: background 0.12s;
1816
+ }
1817
+ .di-btn-cancel:hover { background: #f9fafb; }
1818
+ .di-btn-submit {
1819
+ flex: 1.3;
1820
+ padding: 7px 0;
1821
+ border-radius: 8px;
1822
+ border: 1px solid rgba(124,58,237,0.2);
1823
+ background: #faf5ff;
1824
+ color: #7c3aed;
1825
+ font-size: 14px;
1826
+ font-weight: 700;
1827
+ font-family: inherit;
1828
+ white-space: nowrap;
1829
+ cursor: pointer;
1830
+ transition: background 0.12s, border-color 0.12s, color 0.12s;
1831
+ }
1832
+ .di-btn-submit:hover { background: #f3e8ff; border-color: rgba(124,58,237,0.32); color: #6d28d9; }
1833
+ .di-paste-bar {
1834
+ padding: 0 14px 10px;
1835
+ }
1836
+ .di-btn-paste {
1837
+ width: 100%;
1838
+ padding: 7px 0;
1839
+ border-radius: 8px;
1840
+ border: 1px dashed #c4b5fd;
1841
+ background: #faf5ff;
1842
+ color: #7c3aed;
1843
+ font-size: 13px;
1844
+ font-weight: 600;
1845
+ font-family: inherit;
1846
+ cursor: pointer;
1847
+ transition: background 0.12s;
1848
+ }
1849
+ .di-btn-paste:hover { background: #ede9fe; }
1850
+ .di-btn-save {
1851
+ flex: 1.6;
1852
+ padding: 7px 12px;
1853
+ border-radius: 8px;
1854
+ border: none;
1855
+ background: #7c3aed;
1856
+ color: #fff;
1857
+ font-size: 14px;
1858
+ font-weight: 700;
1859
+ font-family: inherit;
1860
+ white-space: nowrap;
1861
+ cursor: pointer;
1862
+ transition: background 0.12s;
1863
+ box-shadow: 0 2px 8px rgba(124,58,237,0.3);
1864
+ }
1865
+ .di-btn-save:hover { background: #6d28d9; }
1866
+
1867
+ .di-section-title--spaced {
1868
+ margin-top: 16px;
1869
+ }
1870
+
1871
+ .di-inbox-summary {
1872
+ display: flex;
1873
+ flex-direction: column;
1874
+ gap: 10px;
1875
+ }
1876
+
1877
+ .di-inbox-list {
1878
+ display: flex;
1879
+ flex-direction: column;
1880
+ gap: 10px;
1881
+ }
1882
+
1883
+ .di-inbox-pill {
1884
+ align-self: flex-start;
1885
+ padding: 5px 10px;
1886
+ border-radius: 999px;
1887
+ background: rgba(124,58,237,0.1);
1888
+ color: #7c3aed;
1889
+ font-size: 12px;
1890
+ font-weight: 700;
1891
+ }
1892
+
1893
+ .di-inbox-card {
1894
+ display: flex;
1895
+ flex-direction: column;
1896
+ gap: 8px;
1897
+ padding: 12px;
1898
+ border: 1px solid #ede9fe;
1899
+ border-radius: 10px;
1900
+ background: #faf5ff;
1901
+ }
1902
+
1903
+ .di-inbox-card-head {
1904
+ display: flex;
1905
+ align-items: flex-start;
1906
+ justify-content: space-between;
1907
+ gap: 10px;
1908
+ }
1909
+
1910
+ .di-inbox-card-head .di-inbox-delete {
1911
+ white-space: nowrap;
1912
+ }
1913
+
1914
+ .di-inbox-target {
1915
+ font-size: 13px;
1916
+ font-weight: 700;
1917
+ color: #312e81;
1918
+ word-break: break-word;
1919
+ }
1920
+
1921
+ .di-inbox-note {
1922
+ font-size: 12px;
1923
+ line-height: 1.5;
1924
+ color: #6b7280;
1925
+ word-break: break-word;
1926
+ }
1927
+
1928
+ .di-inbox-change-list {
1929
+ margin: 0;
1930
+ padding: 0;
1931
+ list-style: none;
1932
+ display: flex;
1933
+ flex-direction: column;
1934
+ gap: 6px;
1935
+ }
1936
+
1937
+ .di-inbox-change-item {
1938
+ display: flex;
1939
+ align-items: flex-start;
1940
+ justify-content: space-between;
1941
+ gap: 10px;
1942
+ color: #4b5563;
1943
+ font-size: 12px;
1944
+ line-height: 1.45;
1945
+ }
1946
+
1947
+ .di-inbox-change-text {
1948
+ flex: 1;
1949
+ min-width: 0;
1950
+ word-break: break-word;
1951
+ }
1952
+
1953
+ .di-inbox-delete {
1954
+ flex-shrink: 0;
1955
+ border: none;
1956
+ background: transparent;
1957
+ color: #7c3aed;
1958
+ font-size: 12px;
1959
+ font-weight: 700;
1960
+ cursor: pointer;
1961
+ padding: 0;
1962
+ }
1963
+
1964
+ .di-inbox-delete:hover {
1965
+ color: #6d28d9;
1966
+ }
1967
+
1968
+ .di-inbox-delete--mini {
1969
+ font-size: 11px;
1970
+ line-height: 1.4;
1971
+ }