topo-engine 0.1.2 → 0.1.4

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/style.css CHANGED
@@ -1,16 +1,43 @@
1
-
2
- .topo-wrap[data-v-1f2e13bc] {
1
+
2
+ /* —— 主题变量:dark 为默认值,light 由 [data-theme='light'] 覆盖 —— */
3
+ .topo-wrap[data-v-562b2247] {
4
+ --tp-bg: #050505;
5
+ --tp-toolbar-bg: rgba(20, 20, 20, 0.88);
6
+ --tp-toolbar-border: #333;
7
+ --tp-title: #fff;
8
+ --tp-meta: #9aa;
9
+ --tp-btn-bg: #222;
10
+ --tp-btn-text: #eee;
11
+ --tp-btn-border: #555;
12
+ --tp-accent: #00c8ff;
13
+ --tp-overlay-bg: rgba(5, 5, 5, 0.7);
14
+ --tp-text: #aaa;
15
+ --tp-error: #ff6b6b;
3
16
  position: relative;
4
17
  width: 100%;
5
18
  height: 100%;
6
19
  overflow: hidden;
7
- background: #050505;
8
- }
9
- .topo-container[data-v-1f2e13bc] {
20
+ background: var(--tp-bg);
21
+ }
22
+ .topo-wrap[data-theme='light'][data-v-562b2247] {
23
+ --tp-bg: #ffffff;
24
+ --tp-toolbar-bg: rgba(255, 255, 255, 0.92);
25
+ --tp-toolbar-border: #d9d9d9;
26
+ --tp-title: #1a1a1a;
27
+ --tp-meta: #666;
28
+ --tp-btn-bg: #f2f2f2;
29
+ --tp-btn-text: #333;
30
+ --tp-btn-border: #c4c4c4;
31
+ --tp-accent: #0a6eb4;
32
+ --tp-overlay-bg: rgba(255, 255, 255, 0.72);
33
+ --tp-text: #555;
34
+ --tp-error: #d32f2f;
35
+ }
36
+ .topo-container[data-v-562b2247] {
10
37
  width: 100%;
11
38
  height: 100%;
12
39
  }
13
- .topo-toolbar[data-v-1f2e13bc] {
40
+ .topo-toolbar[data-v-562b2247] {
14
41
  position: absolute;
15
42
  top: 10px;
16
43
  left: 12px;
@@ -18,264 +45,367 @@
18
45
  align-items: center;
19
46
  gap: 12px;
20
47
  padding: 6px 12px;
21
- background: rgba(20, 20, 20, 0.88);
22
- border: 1px solid #333;
48
+ background: var(--tp-toolbar-bg);
49
+ border: 1px solid var(--tp-toolbar-border);
23
50
  border-radius: 6px;
24
51
  font-size: 13px;
25
- color: #ddd;
52
+ color: var(--tp-text);
26
53
  z-index: 10;
27
54
  }
28
- .topo-title[data-v-1f2e13bc] {
29
- color: #fff;
55
+ .topo-title[data-v-562b2247] {
56
+ color: var(--tp-title);
30
57
  font-weight: 600;
31
58
  }
32
- .topo-meta[data-v-1f2e13bc] {
33
- color: #9aa;
59
+ .topo-meta[data-v-562b2247] {
60
+ color: var(--tp-meta);
34
61
  }
35
- .btn[data-v-1f2e13bc] {
62
+ .btn[data-v-562b2247] {
36
63
  margin-left: 4px;
37
64
  padding: 3px 10px;
38
- border: 1px solid #555;
65
+ border: 1px solid var(--tp-btn-border);
39
66
  border-radius: 4px;
40
- background: #222;
41
- color: #eee;
67
+ background: var(--tp-btn-bg);
68
+ color: var(--tp-btn-text);
42
69
  cursor: pointer;
43
70
  font-size: 12px;
44
71
  }
45
- .btn[data-v-1f2e13bc]:hover {
46
- border-color: #00c8ff;
47
- color: #00c8ff;
72
+ .btn[data-v-562b2247]:hover {
73
+ border-color: var(--tp-accent);
74
+ color: var(--tp-accent);
48
75
  }
49
- .topo-loading[data-v-1f2e13bc],
50
- .topo-error[data-v-1f2e13bc] {
76
+ .topo-loading[data-v-562b2247],
77
+ .topo-error[data-v-562b2247] {
51
78
  position: absolute;
52
79
  inset: 0;
53
80
  display: flex;
54
81
  align-items: center;
55
82
  justify-content: center;
56
- color: #aaa;
83
+ color: var(--tp-text);
57
84
  font-size: 14px;
58
85
  z-index: 5;
59
- background: rgba(5, 5, 5, 0.7);
86
+ background: var(--tp-overlay-bg);
60
87
  }
61
- .topo-error[data-v-1f2e13bc] {
62
- color: #ff6b6b;
88
+ .topo-error[data-v-562b2247] {
89
+ color: var(--tp-error);
63
90
  }
64
-
65
- .panel[data-v-f9af862d] {
66
- width: 300px;
67
- height: 100%;
68
- background: rgba(16, 16, 18, 0.96);
69
- border-left: 1px solid #2c2c30;
70
- display: flex;
71
- flex-direction: column;
72
- color: #ddd;
73
- }
74
- .panel-head[data-v-f9af862d] {
75
- display: flex;
76
- align-items: center;
77
- justify-content: space-between;
78
- padding: 12px 14px;
79
- font-size: 14px;
80
- font-weight: 600;
81
- color: #fff;
82
- border-bottom: 1px solid #2c2c30;
91
+
92
+ /* —— 主题变量:dark 默认,light 由 [data-theme='light'] 覆盖 —— */
93
+ .panel[data-v-547b7d57] {
94
+ --sp-bg: rgba(16, 16, 18, 0.96);
95
+ --sp-border: #2c2c30;
96
+ --sp-text: #ddd;
97
+ --sp-title: #fff;
98
+ --sp-sub: #8a8a96;
99
+ --sp-mono: #9ecbff;
100
+ --sp-item: #1c1c22;
101
+ --sp-item-border: #2c2c34;
102
+ --sp-hover-bg: #12222e;
103
+ --sp-hover-border: #00c8ff;
104
+ --sp-accent: #00c8ff;
105
+ --sp-ok: #6fdc8c;
106
+ --sp-warn: #ffb454;
107
+ --sp-close: #888;
108
+ --sp-close-hover: #fff;
109
+ --sp-hint: #777;
110
+ --sp-label: #9a9aa6;
111
+ width: 300px;
112
+ height: 100%;
113
+ background: var(--sp-bg);
114
+ border-left: 1px solid var(--sp-border);
115
+ display: flex;
116
+ flex-direction: column;
117
+ color: var(--sp-text);
118
+ }
119
+ .panel[data-theme='light'][data-v-547b7d57] {
120
+ --sp-bg: rgba(255, 255, 255, 0.97);
121
+ --sp-border: #e4e4ea;
122
+ --sp-text: #333;
123
+ --sp-title: #1a1a1a;
124
+ --sp-sub: #8a8a8a;
125
+ --sp-mono: #0a66b0;
126
+ --sp-item: #f5f5f7;
127
+ --sp-item-border: #e0e0e6;
128
+ --sp-hover-bg: #e8f2fb;
129
+ --sp-hover-border: #0a6eb4;
130
+ --sp-accent: #0a6eb4;
131
+ --sp-ok: #2e9e5b;
132
+ --sp-warn: #b26a00;
133
+ --sp-close: #999;
134
+ --sp-close-hover: #111;
135
+ --sp-hint: #8a8a8a;
136
+ --sp-label: #666;
137
+ }
138
+ .panel-head[data-v-547b7d57] {
139
+ display: flex;
140
+ align-items: center;
141
+ justify-content: space-between;
142
+ padding: 12px 14px;
143
+ font-size: 14px;
144
+ font-weight: 600;
145
+ color: var(--sp-title);
146
+ border-bottom: 1px solid var(--sp-border);
83
147
  }
84
- .panel-close[data-v-f9af862d] {
85
- border: none;
86
- background: none;
87
- color: #888;
88
- font-size: 18px;
89
- cursor: pointer;
148
+ .panel-close[data-v-547b7d57] {
149
+ border: none;
150
+ background: none;
151
+ color: var(--sp-close);
152
+ font-size: 18px;
153
+ cursor: pointer;
90
154
  line-height: 1;
91
155
  }
92
- .panel-close[data-v-f9af862d]:hover {
93
- color: #fff;
156
+ .panel-close[data-v-547b7d57]:hover {
157
+ color: var(--sp-close-hover);
94
158
  }
95
- .panel-body[data-v-f9af862d] {
96
- padding: 14px;
97
- overflow-y: auto;
159
+ .panel-body[data-v-547b7d57] {
160
+ padding: 14px;
161
+ overflow-y: auto;
98
162
  flex: 1;
99
163
  }
100
- .kv[data-v-f9af862d] {
101
- display: flex;
102
- gap: 10px;
103
- margin-bottom: 10px;
104
- font-size: 13px;
164
+ .kv[data-v-547b7d57] {
165
+ display: flex;
166
+ gap: 10px;
167
+ margin-bottom: 10px;
168
+ font-size: 13px;
105
169
  word-break: break-all;
106
170
  }
107
- .kv .k[data-v-f9af862d] {
108
- color: #8a8a96;
109
- flex: none;
171
+ .kv .k[data-v-547b7d57] {
172
+ color: var(--sp-sub);
173
+ flex: none;
110
174
  width: 64px;
111
175
  }
112
- .kv .v[data-v-f9af862d] {
113
- color: #eee;
176
+ .kv .v[data-v-547b7d57] {
177
+ color: var(--sp-text);
114
178
  }
115
- .mono[data-v-f9af862d] {
116
- font-family: Consolas, monospace;
117
- font-size: 12px;
118
- color: #9ecbff;
179
+ .mono[data-v-547b7d57] {
180
+ font-family: Consolas, monospace;
181
+ font-size: 12px;
182
+ color: var(--sp-mono);
119
183
  }
120
- .ok[data-v-f9af862d] {
121
- color: #6fdc8c;
184
+ .ok[data-v-547b7d57] {
185
+ color: var(--sp-ok);
122
186
  }
123
- .warn[data-v-f9af862d] {
124
- color: #ffb454;
187
+ .warn[data-v-547b7d57] {
188
+ color: var(--sp-warn);
125
189
  }
126
- .neighbor-section[data-v-f9af862d] {
127
- margin-top: 16px;
128
- border-top: 1px solid #2c2c30;
190
+ .neighbor-section[data-v-547b7d57] {
191
+ margin-top: 16px;
192
+ border-top: 1px solid var(--sp-border);
129
193
  padding-top: 12px;
130
194
  }
131
- .neighbor-title[data-v-f9af862d] {
132
- font-size: 13px;
133
- font-weight: 600;
134
- color: #fff;
195
+ .neighbor-title[data-v-547b7d57] {
196
+ font-size: 13px;
197
+ font-weight: 600;
198
+ color: var(--sp-title);
135
199
  margin-bottom: 6px;
136
200
  }
137
- .neighbor-list[data-v-f9af862d] {
138
- display: flex;
139
- flex-direction: column;
201
+ .neighbor-list[data-v-547b7d57] {
202
+ display: flex;
203
+ flex-direction: column;
140
204
  gap: 4px;
141
205
  }
142
- .neighbor-item[data-v-f9af862d] {
143
- display: flex;
144
- flex-direction: column;
145
- gap: 3px;
146
- padding: 5px 8px;
147
- background: #1c1c22;
148
- border: 1px solid #2c2c34;
149
- border-radius: 4px;
150
- cursor: pointer;
206
+ .neighbor-item[data-v-547b7d57] {
207
+ display: flex;
208
+ flex-direction: column;
209
+ gap: 3px;
210
+ padding: 5px 8px;
211
+ background: var(--sp-item);
212
+ border: 1px solid var(--sp-item-border);
213
+ border-radius: 4px;
214
+ cursor: pointer;
151
215
  font-size: 12px;
152
216
  }
153
- .neighbor-item[data-v-f9af862d]:hover {
154
- border-color: #00c8ff;
155
- background: #12222e;
217
+ .neighbor-item[data-v-547b7d57]:hover {
218
+ border-color: var(--sp-hover-border);
219
+ background: var(--sp-hover-bg);
156
220
  }
157
- .n-main[data-v-f9af862d] {
158
- display: flex;
159
- align-items: center;
160
- gap: 8px;
221
+ .n-main[data-v-547b7d57] {
222
+ display: flex;
223
+ align-items: center;
224
+ gap: 8px;
161
225
  min-width: 0;
162
226
  }
163
- .n-type[data-v-f9af862d] {
164
- flex: none;
165
- color: #00c8ff;
227
+ .n-type[data-v-547b7d57] {
228
+ flex: none;
229
+ color: var(--sp-accent);
166
230
  font-size: 11px;
167
231
  }
168
- .n-name[data-v-f9af862d] {
169
- color: #ddd;
170
- overflow: hidden;
171
- text-overflow: ellipsis;
232
+ .n-name[data-v-547b7d57] {
233
+ color: var(--sp-text);
234
+ overflow: hidden;
235
+ text-overflow: ellipsis;
172
236
  white-space: nowrap;
173
237
  }
174
- .n-psr[data-v-f9af862d] {
175
- display: flex;
176
- align-items: center;
177
- gap: 6px;
238
+ .n-psr[data-v-547b7d57] {
239
+ display: flex;
240
+ align-items: center;
241
+ gap: 6px;
178
242
  min-width: 0;
179
243
  }
180
- .n-psr-id[data-v-f9af862d] {
181
- font-family: Consolas, monospace;
182
- font-size: 11px;
183
- color: #9ecbff;
184
- overflow: hidden;
185
- text-overflow: ellipsis;
186
- white-space: nowrap;
187
- flex: 1;
188
- user-select: text;
244
+ .n-psr-id[data-v-547b7d57] {
245
+ font-family: Consolas, monospace;
246
+ font-size: 11px;
247
+ color: var(--sp-mono);
248
+ overflow: hidden;
249
+ text-overflow: ellipsis;
250
+ white-space: nowrap;
251
+ flex: 1;
252
+ user-select: text;
189
253
  -webkit-user-select: text;
190
254
  }
191
- .copy-btn[data-v-f9af862d] {
192
- flex: none;
193
- border: 1px solid #3a3a44;
194
- border-radius: 3px;
195
- background: #26262e;
196
- color: #9ecbff;
197
- font-size: 11px;
198
- line-height: 1;
199
- padding: 2px 5px;
255
+ .copy-btn[data-v-547b7d57] {
256
+ flex: none;
257
+ border: 1px solid var(--sp-item-border);
258
+ border-radius: 3px;
259
+ background: var(--sp-item);
260
+ color: var(--sp-mono);
261
+ font-size: 11px;
262
+ line-height: 1;
263
+ padding: 2px 5px;
200
264
  cursor: pointer;
201
265
  }
202
- .copy-btn[data-v-f9af862d]:hover {
203
- border-color: #00c8ff;
204
- color: #fff;
205
- background: #12222e;
266
+ .copy-btn[data-v-547b7d57]:hover {
267
+ border-color: var(--sp-hover-border);
268
+ color: var(--sp-title);
269
+ background: var(--sp-hover-bg);
206
270
  }
207
- .neighbor-empty[data-v-f9af862d] {
208
- font-size: 12px;
209
- color: #666;
271
+ .neighbor-empty[data-v-547b7d57] {
272
+ font-size: 12px;
273
+ color: var(--sp-hint);
210
274
  padding: 4px 0;
211
275
  }
212
- .stat-grid[data-v-f9af862d] {
213
- display: grid;
214
- grid-template-columns: 1fr 1fr;
215
- gap: 10px;
276
+ .stat-grid[data-v-547b7d57] {
277
+ display: grid;
278
+ grid-template-columns: 1fr 1fr;
279
+ gap: 10px;
216
280
  margin-bottom: 16px;
217
281
  }
218
- .stat[data-v-f9af862d] {
219
- background: #1c1c22;
220
- border: 1px solid #2c2c34;
221
- border-radius: 6px;
222
- padding: 10px;
282
+ .stat[data-v-547b7d57] {
283
+ background: var(--sp-item);
284
+ border: 1px solid var(--sp-item-border);
285
+ border-radius: 6px;
286
+ padding: 10px;
223
287
  text-align: center;
224
288
  }
225
- .stat-num[data-v-f9af862d] {
226
- font-size: 20px;
227
- font-weight: 700;
228
- color: #00c8ff;
289
+ .stat-num[data-v-547b7d57] {
290
+ font-size: 20px;
291
+ font-weight: 700;
292
+ color: var(--sp-accent);
229
293
  }
230
- .stat-label[data-v-f9af862d] {
231
- font-size: 12px;
232
- color: #9a9aa6;
294
+ .stat-label[data-v-547b7d57] {
295
+ font-size: 12px;
296
+ color: var(--sp-label);
233
297
  margin-top: 2px;
234
298
  }
235
- .hint[data-v-f9af862d] {
236
- font-size: 12px;
237
- color: #777;
299
+ .hint[data-v-547b7d57] {
300
+ font-size: 12px;
301
+ color: var(--sp-hint);
238
302
  line-height: 1.7;
239
- }
240
-
241
- .distance-top10[data-v-936b875b] {
303
+ }
304
+
305
+ /* —— 主题变量:dark 默认,light 由 [data-theme='light'] 覆盖 —— */
306
+ .distance-top10[data-v-438b6017] {
307
+ --dt-bg: rgba(12, 12, 15, 0.98);
308
+ --dt-border: #1e1e24;
309
+ --dt-head-from: rgba(20, 20, 26, 1);
310
+ --dt-head-to: rgba(14, 14, 18, 1);
311
+ --dt-title: #f0f0f0;
312
+ --dt-close-bg: rgba(255, 255, 255, 0.06);
313
+ --dt-close: #666;
314
+ --dt-close-hover: #fff;
315
+ --dt-text: #ddd;
316
+ --dt-item-bg: rgba(255, 255, 255, 0.02);
317
+ --dt-item-border: rgba(255, 255, 255, 0.04);
318
+ --dt-item-hover-bg: rgba(0, 200, 255, 0.04);
319
+ --dt-item-hover-border: rgba(0, 200, 255, 0.15);
320
+ --dt-top3-bg: rgba(0, 200, 255, 0.03);
321
+ --dt-top3-border: rgba(0, 200, 255, 0.08);
322
+ --dt-accent: #00c8ff;
323
+ --dt-empty: #555;
324
+ --dt-rank-bg: rgba(255, 255, 255, 0.08);
325
+ --dt-rank-color: #888;
326
+ --dt-parent: #6fdc8c;
327
+ --dt-parent-bg: rgba(111, 220, 140, 0.1);
328
+ --dt-parent-border: rgba(111, 220, 140, 0.15);
329
+ --dt-parent-hover-bg: rgba(111, 220, 140, 0.18);
330
+ --dt-parent-hover-border: rgba(111, 220, 140, 0.3);
331
+ --dt-child: #00c8ff;
332
+ --dt-child-bg: rgba(0, 200, 255, 0.08);
333
+ --dt-child-border: rgba(0, 200, 255, 0.12);
334
+ --dt-child-hover-bg: rgba(0, 200, 255, 0.15);
335
+ --dt-child-hover-border: rgba(0, 200, 255, 0.25);
336
+ --dt-link: #444;
337
+ --dt-track: rgba(255, 255, 255, 0.04);
338
+ --dt-unit: #555;
242
339
  width: 340px;
243
340
  height: 100%;
244
- background: rgba(12, 12, 15, 0.98);
245
- border-left: 1px solid #1e1e24;
341
+ background: var(--dt-bg);
342
+ border-left: 1px solid var(--dt-border);
246
343
  display: flex;
247
344
  flex-direction: column;
248
- color: #ddd;
345
+ color: var(--dt-text);
249
346
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
347
+ }
348
+ .distance-top10[data-theme='light'][data-v-438b6017] {
349
+ --dt-bg: rgba(255, 255, 255, 0.98);
350
+ --dt-border: #e3e3e8;
351
+ --dt-head-from: #fafafa;
352
+ --dt-head-to: #f0f0f3;
353
+ --dt-title: #1a1a1a;
354
+ --dt-close-bg: rgba(0, 0, 0, 0.05);
355
+ --dt-close: #777;
356
+ --dt-close-hover: #111;
357
+ --dt-text: #333;
358
+ --dt-item-bg: rgba(0, 0, 0, 0.02);
359
+ --dt-item-border: rgba(0, 0, 0, 0.06);
360
+ --dt-item-hover-bg: rgba(10, 110, 180, 0.06);
361
+ --dt-item-hover-border: rgba(10, 110, 180, 0.22);
362
+ --dt-top3-bg: rgba(10, 110, 180, 0.05);
363
+ --dt-top3-border: rgba(10, 110, 180, 0.12);
364
+ --dt-accent: #0a6eb4;
365
+ --dt-empty: #8a8a8a;
366
+ --dt-rank-bg: rgba(0, 0, 0, 0.06);
367
+ --dt-rank-color: #666;
368
+ --dt-parent: #2e9e5b;
369
+ --dt-parent-bg: rgba(46, 158, 91, 0.1);
370
+ --dt-parent-border: rgba(46, 158, 91, 0.25);
371
+ --dt-parent-hover-bg: rgba(46, 158, 91, 0.18);
372
+ --dt-parent-hover-border: rgba(46, 158, 91, 0.35);
373
+ --dt-child: #0a6eb4;
374
+ --dt-child-bg: rgba(10, 110, 180, 0.08);
375
+ --dt-child-border: rgba(10, 110, 180, 0.18);
376
+ --dt-child-hover-bg: rgba(10, 110, 180, 0.15);
377
+ --dt-child-hover-border: rgba(10, 110, 180, 0.3);
378
+ --dt-link: #999;
379
+ --dt-track: rgba(0, 0, 0, 0.06);
380
+ --dt-unit: #8a8a8a;
250
381
  }
251
-
252
382
  /* ====== 头部 ====== */
253
- .panel-head[data-v-936b875b] {
383
+ .panel-head[data-v-438b6017] {
254
384
  display: flex;
255
385
  align-items: center;
256
386
  justify-content: space-between;
257
387
  padding: 14px 16px;
258
- background: linear-gradient(180deg, rgba(20, 20, 26, 1) 0%, rgba(14, 14, 18, 1) 100%);
259
- border-bottom: 1px solid #1e1e24;
388
+ background: linear-gradient(180deg, var(--dt-head-from) 0%, var(--dt-head-to) 100%);
389
+ border-bottom: 1px solid var(--dt-border);
260
390
  }
261
- .head-left[data-v-936b875b] {
391
+ .head-left[data-v-438b6017] {
262
392
  display: flex;
263
393
  align-items: center;
264
394
  gap: 8px;
265
395
  }
266
- .head-icon[data-v-936b875b] {
396
+ .head-icon[data-v-438b6017] {
267
397
  font-size: 16px;
268
398
  }
269
- .head-title[data-v-936b875b] {
399
+ .head-title[data-v-438b6017] {
270
400
  font-size: 14px;
271
401
  font-weight: 600;
272
- color: #f0f0f0;
402
+ color: var(--dt-title);
273
403
  letter-spacing: 0.5px;
274
404
  }
275
- .panel-close[data-v-936b875b] {
405
+ .panel-close[data-v-438b6017] {
276
406
  border: none;
277
- background: rgba(255, 255, 255, 0.06);
278
- color: #666;
407
+ background: var(--dt-close-bg);
408
+ color: var(--dt-close);
279
409
  font-size: 16px;
280
410
  cursor: pointer;
281
411
  line-height: 1;
@@ -287,79 +417,74 @@
287
417
  justify-content: center;
288
418
  transition: all 0.15s ease;
289
419
  }
290
- .panel-close[data-v-936b875b]:hover {
291
- background: rgba(255, 255, 255, 0.12);
292
- color: #fff;
420
+ .panel-close[data-v-438b6017]:hover {
421
+ background: var(--dt-close-bg);
422
+ color: var(--dt-close-hover);
293
423
  }
294
-
295
424
  /* ====== 内容区 ====== */
296
- .panel-body[data-v-936b875b] {
425
+ .panel-body[data-v-438b6017] {
297
426
  padding: 12px;
298
427
  overflow-y: auto;
299
428
  flex: 1;
300
429
  }
301
- .panel-body[data-v-936b875b]::-webkit-scrollbar {
430
+ .panel-body[data-v-438b6017]::-webkit-scrollbar {
302
431
  width: 4px;
303
432
  }
304
- .panel-body[data-v-936b875b]::-webkit-scrollbar-track {
433
+ .panel-body[data-v-438b6017]::-webkit-scrollbar-track {
305
434
  background: transparent;
306
435
  }
307
- .panel-body[data-v-936b875b]::-webkit-scrollbar-thumb {
308
- background: #333;
436
+ .panel-body[data-v-438b6017]::-webkit-scrollbar-thumb {
437
+ background: var(--dt-border);
309
438
  border-radius: 2px;
310
439
  }
311
-
312
440
  /* ====== 空状态 ====== */
313
- .empty-state[data-v-936b875b] {
441
+ .empty-state[data-v-438b6017] {
314
442
  display: flex;
315
443
  flex-direction: column;
316
444
  align-items: center;
317
445
  justify-content: center;
318
446
  padding: 48px 0;
319
- color: #555;
447
+ color: var(--dt-empty);
320
448
  }
321
- .empty-icon[data-v-936b875b] {
449
+ .empty-icon[data-v-438b6017] {
322
450
  font-size: 32px;
323
451
  margin-bottom: 12px;
324
452
  opacity: 0.5;
325
453
  }
326
- .empty-text[data-v-936b875b] {
454
+ .empty-text[data-v-438b6017] {
327
455
  font-size: 13px;
328
456
  }
329
-
330
457
  /* ====== 列表 ====== */
331
- .distance-list[data-v-936b875b] {
458
+ .distance-list[data-v-438b6017] {
332
459
  display: flex;
333
460
  flex-direction: column;
334
461
  gap: 6px;
335
462
  }
336
-
337
463
  /* ====== 卡片 ====== */
338
- .distance-item[data-v-936b875b] {
464
+ .distance-item[data-v-438b6017] {
339
465
  display: flex;
340
466
  gap: 12px;
341
467
  padding: 10px 12px;
342
- background: rgba(255, 255, 255, 0.02);
343
- border: 1px solid rgba(255, 255, 255, 0.04);
468
+ background: var(--dt-item-bg);
469
+ border: 1px solid var(--dt-item-border);
344
470
  border-radius: 8px;
345
471
  transition: all 0.2s ease;
346
472
  cursor: default;
347
473
  }
348
- .distance-item[data-v-936b875b]:hover {
349
- background: rgba(0, 200, 255, 0.04);
350
- border-color: rgba(0, 200, 255, 0.15);
474
+ .distance-item[data-v-438b6017]:hover {
475
+ background: var(--dt-item-hover-bg);
476
+ border-color: var(--dt-item-hover-border);
351
477
  }
352
- .distance-item.top-3[data-v-936b875b] {
353
- background: rgba(0, 200, 255, 0.03);
354
- border-color: rgba(0, 200, 255, 0.08);
478
+ .distance-item.top-3[data-v-438b6017] {
479
+ background: var(--dt-top3-bg);
480
+ border-color: var(--dt-top3-border);
355
481
  }
356
-
357
482
  /* ====== 排名 ====== */
358
- .rank-col[data-v-936b875b] {
483
+ .rank-col[data-v-438b6017] {
359
484
  flex-shrink: 0;
360
485
  padding-top: 2px;
361
486
  }
362
- .rank-badge[data-v-936b875b] {
487
+ .rank-badge[data-v-438b6017] {
363
488
  width: 22px;
364
489
  height: 22px;
365
490
  border-radius: 6px;
@@ -370,37 +495,35 @@
370
495
  font-weight: 700;
371
496
  color: #fff;
372
497
  }
373
- .rank-gold[data-v-936b875b] {
498
+ .rank-gold[data-v-438b6017] {
374
499
  background: linear-gradient(135deg, #f6b93b, #e58e26);
375
500
  box-shadow: 0 2px 8px rgba(246, 185, 59, 0.3);
376
501
  }
377
- .rank-silver[data-v-936b875b] {
502
+ .rank-silver[data-v-438b6017] {
378
503
  background: linear-gradient(135deg, #a4b0be, #8395a7);
379
504
  box-shadow: 0 2px 8px rgba(164, 176, 190, 0.25);
380
505
  }
381
- .rank-bronze[data-v-936b875b] {
506
+ .rank-bronze[data-v-438b6017] {
382
507
  background: linear-gradient(135deg, #e58e26, #d35400);
383
508
  box-shadow: 0 2px 8px rgba(229, 142, 38, 0.25);
384
509
  }
385
- .rank-normal[data-v-936b875b] {
386
- background: rgba(255, 255, 255, 0.08);
387
- color: #888;
510
+ .rank-normal[data-v-438b6017] {
511
+ background: var(--dt-rank-bg);
512
+ color: var(--dt-rank-color);
388
513
  }
389
-
390
514
  /* ====== 信息列 ====== */
391
- .info-col[data-v-936b875b] {
515
+ .info-col[data-v-438b6017] {
392
516
  flex: 1;
393
517
  min-width: 0;
394
518
  }
395
-
396
519
  /* ====== 节点行 ====== */
397
- .node-row[data-v-936b875b] {
520
+ .node-row[data-v-438b6017] {
398
521
  display: flex;
399
522
  align-items: center;
400
523
  gap: 6px;
401
524
  margin-bottom: 8px;
402
525
  }
403
- .node-tag[data-v-936b875b] {
526
+ .node-tag[data-v-438b6017] {
404
527
  font-size: 12px;
405
528
  padding: 2px 8px;
406
529
  border-radius: 4px;
@@ -411,53 +534,52 @@
411
534
  cursor: pointer;
412
535
  transition: all 0.15s ease;
413
536
  }
414
- .node-tag.parent[data-v-936b875b] {
415
- background: rgba(111, 220, 140, 0.1);
416
- color: #6fdc8c;
417
- border: 1px solid rgba(111, 220, 140, 0.15);
537
+ .node-tag.parent[data-v-438b6017] {
538
+ background: var(--dt-parent-bg);
539
+ color: var(--dt-parent);
540
+ border: 1px solid var(--dt-parent-border);
418
541
  }
419
- .node-tag.parent[data-v-936b875b]:hover {
420
- background: rgba(111, 220, 140, 0.18);
421
- border-color: rgba(111, 220, 140, 0.3);
542
+ .node-tag.parent[data-v-438b6017]:hover {
543
+ background: var(--dt-parent-hover-bg);
544
+ border-color: var(--dt-parent-hover-border);
422
545
  }
423
- .node-tag.child[data-v-936b875b] {
424
- background: rgba(0, 200, 255, 0.08);
425
- color: #00c8ff;
426
- border: 1px solid rgba(0, 200, 255, 0.12);
546
+ .node-tag.child[data-v-438b6017] {
547
+ background: var(--dt-child-bg);
548
+ color: var(--dt-child);
549
+ border: 1px solid var(--dt-child-border);
427
550
  }
428
- .node-tag.child[data-v-936b875b]:hover {
429
- background: rgba(0, 200, 255, 0.15);
430
- border-color: rgba(0, 200, 255, 0.25);
551
+ .node-tag.child[data-v-438b6017]:hover {
552
+ background: var(--dt-child-hover-bg);
553
+ border-color: var(--dt-child-hover-border);
431
554
  }
432
- .link-icon[data-v-936b875b] {
433
- color: #444;
555
+ .link-icon[data-v-438b6017] {
556
+ color: var(--dt-link);
434
557
  font-size: 12px;
435
558
  flex-shrink: 0;
436
559
  }
437
-
438
560
  /* ====== 进度条行 ====== */
439
- .bar-row[data-v-936b875b] {
561
+ .bar-row[data-v-438b6017] {
440
562
  display: flex;
441
563
  align-items: center;
442
564
  gap: 10px;
443
565
  }
444
- .bar-track[data-v-936b875b] {
566
+ .bar-track[data-v-438b6017] {
445
567
  flex: 1;
446
568
  height: 4px;
447
- background: rgba(255, 255, 255, 0.04);
569
+ background: var(--dt-track);
448
570
  border-radius: 2px;
449
571
  overflow: hidden;
450
572
  }
451
- .bar-fill[data-v-936b875b] {
573
+ .bar-fill[data-v-438b6017] {
452
574
  height: 100%;
453
- background: linear-gradient(90deg, #00c8ff, #0070ff);
575
+ background: linear-gradient(90deg, var(--dt-accent), #0070ff);
454
576
  border-radius: 2px;
455
577
  transition: width 0.4s ease;
456
578
  }
457
- .top-3 .bar-fill[data-v-936b875b] {
458
- background: linear-gradient(90deg, #00e5ff, #00c8ff, #0070ff);
579
+ .top-3 .bar-fill[data-v-438b6017] {
580
+ background: linear-gradient(90deg, #00e5ff, var(--dt-accent), #0070ff);
459
581
  }
460
- .distance-num[data-v-936b875b] {
582
+ .distance-num[data-v-438b6017] {
461
583
  flex-shrink: 0;
462
584
  display: flex;
463
585
  align-items: baseline;
@@ -465,30 +587,26 @@
465
587
  min-width: 48px;
466
588
  justify-content: flex-end;
467
589
  }
468
- .num[data-v-936b875b] {
590
+ .num[data-v-438b6017] {
469
591
  font-size: 14px;
470
592
  font-weight: 700;
471
- color: #00c8ff;
593
+ color: var(--dt-accent);
472
594
  font-variant-numeric: tabular-nums;
473
595
  }
474
- .top-3 .num[data-v-936b875b] {
475
- color: #00e5ff;
476
- }
477
- .unit[data-v-936b875b] {
596
+ .unit[data-v-438b6017] {
478
597
  font-size: 10px;
479
- color: #555;
598
+ color: var(--dt-unit);
480
599
  }
481
-
482
600
  /* ====== 响应式 ====== */
483
601
  @media (max-width: 768px) {
484
- .distance-top10[data-v-936b875b] {
602
+ .distance-top10[data-v-438b6017] {
485
603
  width: 100%;
486
604
  height: auto;
487
605
  max-height: 320px;
488
606
  border-left: none;
489
- border-top: 1px solid #1e1e24;
607
+ border-top: 1px solid var(--dt-border);
490
608
  }
491
- .node-row[data-v-936b875b] {
609
+ .node-row[data-v-438b6017] {
492
610
  flex-wrap: wrap;
493
611
  }
494
612
  }