hypercore-cli 1.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.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +110 -0
  3. package/dist/api-XGC7D5AW.js +162 -0
  4. package/dist/auth-DNQWYQKT.js +21 -0
  5. package/dist/background-2EGCAAQH.js +14 -0
  6. package/dist/backlog-Q2NZCLNY.js +24 -0
  7. package/dist/chunk-2CMSCWQW.js +162 -0
  8. package/dist/chunk-2LJ2DVEB.js +167 -0
  9. package/dist/chunk-3RPFCQKJ.js +288 -0
  10. package/dist/chunk-43OLRXM5.js +263 -0
  11. package/dist/chunk-4DVYJAJL.js +57 -0
  12. package/dist/chunk-6OL3GA3P.js +173 -0
  13. package/dist/chunk-AUHU7ALH.js +2023 -0
  14. package/dist/chunk-B6A2AKLN.js +139 -0
  15. package/dist/chunk-BE46C7JW.js +46 -0
  16. package/dist/chunk-CUVAUOXL.js +58 -0
  17. package/dist/chunk-GH7E2OJE.js +223 -0
  18. package/dist/chunk-GOOTEPBK.js +271 -0
  19. package/dist/chunk-GPPMJYSM.js +133 -0
  20. package/dist/chunk-GU2FZQ6A.js +69 -0
  21. package/dist/chunk-IOPKN5GD.js +190 -0
  22. package/dist/chunk-IXOIOGR5.js +1505 -0
  23. package/dist/chunk-KRPOPWGA.js +251 -0
  24. package/dist/chunk-MGLJ53QN.js +219 -0
  25. package/dist/chunk-MV4TTRYX.js +533 -0
  26. package/dist/chunk-OPZYEVYR.js +150 -0
  27. package/dist/chunk-QTSLP47C.js +166 -0
  28. package/dist/chunk-R3GPQC7I.js +393 -0
  29. package/dist/chunk-RKB2JOV2.js +43 -0
  30. package/dist/chunk-RNG3K465.js +80 -0
  31. package/dist/chunk-TGTYKBGC.js +86 -0
  32. package/dist/chunk-U5SGAIMM.js +681 -0
  33. package/dist/chunk-V5UHPPSY.js +140 -0
  34. package/dist/chunk-WHLVZCQY.js +245 -0
  35. package/dist/chunk-XDRCBMZZ.js +66 -0
  36. package/dist/chunk-XOS6HPEF.js +134 -0
  37. package/dist/chunk-ZSBHUGWR.js +262 -0
  38. package/dist/claude-NSQ442XD.js +12 -0
  39. package/dist/commands-CK3WFAGI.js +128 -0
  40. package/dist/commands-U63OEO5J.js +1044 -0
  41. package/dist/commands-ZE6GD3WC.js +232 -0
  42. package/dist/config-4EW42BSF.js +8 -0
  43. package/dist/config-loader-SXO674TF.js +24 -0
  44. package/dist/diagnose-AFW3ZTZ4.js +12 -0
  45. package/dist/display-IIUBEYWN.js +58 -0
  46. package/dist/extractor-QV53W2YJ.js +129 -0
  47. package/dist/history-WMSCHERZ.js +180 -0
  48. package/dist/index.d.ts +1 -0
  49. package/dist/index.js +406 -0
  50. package/dist/instance-registry-YSIJXSO7.js +15 -0
  51. package/dist/keybindings-JAAMLH3G.js +15 -0
  52. package/dist/loader-WHNTZTLP.js +58 -0
  53. package/dist/network-MM6YWPGO.js +279 -0
  54. package/dist/notify-HPTALZDC.js +14 -0
  55. package/dist/openai-compat-UQWJXBEK.js +12 -0
  56. package/dist/permissions-JUKXMNDH.js +10 -0
  57. package/dist/prompt-QV45TXRL.js +166 -0
  58. package/dist/quality-ST7PPNFR.js +16 -0
  59. package/dist/repl-RT3AHL7M.js +3375 -0
  60. package/dist/roadmap-5OBEKROY.js +17 -0
  61. package/dist/server-PORT7OEG.js +57 -0
  62. package/dist/session-4VUNDWLH.js +21 -0
  63. package/dist/skills-V4A35XKG.js +175 -0
  64. package/dist/store-Y4LU5QTO.js +25 -0
  65. package/dist/team-HO7Z4SIM.js +385 -0
  66. package/dist/telemetry-6R4EIE6O.js +30 -0
  67. package/dist/test-runner-ZQH5Y6OJ.js +619 -0
  68. package/dist/theme-3SYJ3UQA.js +14 -0
  69. package/dist/upgrade-7TGI3SXO.js +83 -0
  70. package/dist/verify-JUDKTPKZ.js +14 -0
  71. package/dist/web/static/app.js +562 -0
  72. package/dist/web/static/index.html +132 -0
  73. package/dist/web/static/mirror.css +1001 -0
  74. package/dist/web/static/mirror.html +184 -0
  75. package/dist/web/static/mirror.js +1125 -0
  76. package/dist/web/static/onboard.css +302 -0
  77. package/dist/web/static/onboard.html +140 -0
  78. package/dist/web/static/onboard.js +260 -0
  79. package/dist/web/static/style.css +602 -0
  80. package/dist/web/static/workspace.css +1568 -0
  81. package/dist/web/static/workspace.html +408 -0
  82. package/dist/web/static/workspace.js +1683 -0
  83. package/dist/web-Z5HSCQHW.js +39 -0
  84. package/package.json +67 -0
@@ -0,0 +1,1568 @@
1
+ /* ===== Hypercore Workspace — 主题系统 ===== */
2
+
3
+ /* --- Dark Theme (默认) --- */
4
+ :root, [data-theme="dark"] {
5
+ --wb-bg: #0d1117;
6
+ --wb-bg-secondary: #161b22;
7
+ --wb-bg-tertiary: #1c2128;
8
+ --wb-bg-hover: #21262d;
9
+ --wb-border: #30363d;
10
+ --wb-text: #e6edf3;
11
+ --wb-text-dim: #8b949e;
12
+ --wb-text-muted: #484f58;
13
+ --wb-accent: #58a6ff;
14
+ --wb-accent-dim: #1f6feb;
15
+ --wb-green: #3fb950;
16
+ --wb-red: #f85149;
17
+ --wb-orange: #d29922;
18
+ --wb-purple: #bc8cff;
19
+ --wb-magenta: #f778ba;
20
+ --wb-cyan: #39d2c0;
21
+
22
+ --wb-sidebar-w: 220px;
23
+ --wb-context-w: 260px;
24
+ --wb-header-h: 44px;
25
+ --wb-footer-h: 28px;
26
+ --wb-radius: 6px;
27
+ --wb-radius-sm: 4px;
28
+ }
29
+
30
+ /* --- Light Theme --- */
31
+ [data-theme="light"] {
32
+ --wb-bg: #ffffff;
33
+ --wb-bg-secondary: #f6f8fa;
34
+ --wb-bg-tertiary: #eaeef2;
35
+ --wb-bg-hover: #d0d7de;
36
+ --wb-border: #d0d7de;
37
+ --wb-text: #1f2328;
38
+ --wb-text-dim: #656d76;
39
+ --wb-text-muted: #8b949e;
40
+ --wb-accent: #0969da;
41
+ --wb-accent-dim: #218bff;
42
+ --wb-green: #1a7f37;
43
+ --wb-red: #cf222e;
44
+ --wb-orange: #9a6700;
45
+ --wb-purple: #8250df;
46
+ --wb-magenta: #bf3989;
47
+ --wb-cyan: #0e8a7e;
48
+ }
49
+
50
+ /* --- High Contrast Theme --- */
51
+ [data-theme="high-contrast"] {
52
+ --wb-bg: #000000;
53
+ --wb-bg-secondary: #0a0a0a;
54
+ --wb-bg-tertiary: #151515;
55
+ --wb-bg-hover: #252525;
56
+ --wb-border: #ffffff;
57
+ --wb-text: #ffffff;
58
+ --wb-text-dim: #cccccc;
59
+ --wb-text-muted: #999999;
60
+ --wb-accent: #71b7ff;
61
+ --wb-accent-dim: #409eff;
62
+ --wb-green: #56d364;
63
+ --wb-red: #ff7b72;
64
+ --wb-orange: #e3b341;
65
+ --wb-purple: #d2a8ff;
66
+ --wb-magenta: #ff9bce;
67
+ --wb-cyan: #56d4dd;
68
+ }
69
+
70
+ * {
71
+ margin: 0;
72
+ padding: 0;
73
+ box-sizing: border-box;
74
+ }
75
+
76
+ body {
77
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
78
+ font-size: 13px;
79
+ line-height: 1.5;
80
+ color: var(--wb-text);
81
+ background: var(--wb-bg);
82
+ height: 100vh;
83
+ overflow: hidden;
84
+ display: flex;
85
+ flex-direction: column;
86
+ }
87
+
88
+ /* ===== Header ===== */
89
+
90
+ .wb-header {
91
+ height: var(--wb-header-h);
92
+ background: var(--wb-bg-secondary);
93
+ border-bottom: 1px solid var(--wb-border);
94
+ display: flex;
95
+ align-items: center;
96
+ justify-content: space-between;
97
+ padding: 0 16px;
98
+ flex-shrink: 0;
99
+ }
100
+
101
+ .wb-header-left {
102
+ display: flex;
103
+ align-items: center;
104
+ gap: 12px;
105
+ }
106
+
107
+ .wb-logo {
108
+ font-weight: 700;
109
+ font-size: 14px;
110
+ color: var(--wb-cyan);
111
+ }
112
+
113
+ .wb-badge {
114
+ font-size: 11px;
115
+ padding: 2px 8px;
116
+ background: var(--wb-bg-tertiary);
117
+ border: 1px solid var(--wb-border);
118
+ border-radius: 12px;
119
+ color: var(--wb-text-dim);
120
+ }
121
+
122
+ .wb-header-center {
123
+ display: flex;
124
+ align-items: center;
125
+ }
126
+
127
+ .wb-status {
128
+ display: flex;
129
+ align-items: center;
130
+ gap: 6px;
131
+ font-size: 12px;
132
+ color: var(--wb-text-dim);
133
+ }
134
+
135
+ .wb-dot {
136
+ width: 8px;
137
+ height: 8px;
138
+ border-radius: 50%;
139
+ display: inline-block;
140
+ }
141
+
142
+ .wb-dot-connected { background: var(--wb-green); }
143
+ .wb-dot-disconnected { background: var(--wb-red); }
144
+ .wb-dot-connecting { background: var(--wb-orange); animation: pulse 1.5s infinite; }
145
+
146
+ @keyframes pulse {
147
+ 0%, 100% { opacity: 1; }
148
+ 50% { opacity: 0.4; }
149
+ }
150
+
151
+ .wb-btn-icon {
152
+ background: none;
153
+ border: none;
154
+ font-size: 16px;
155
+ cursor: pointer;
156
+ padding: 4px;
157
+ border-radius: var(--wb-radius-sm);
158
+ }
159
+
160
+ .wb-btn-icon:hover {
161
+ background: var(--wb-bg-hover);
162
+ }
163
+
164
+ /* ===== Main Layout ===== */
165
+
166
+ .wb-main {
167
+ flex: 1;
168
+ display: grid;
169
+ grid-template-columns: var(--wb-sidebar-w) 1fr var(--wb-context-w);
170
+ overflow: hidden;
171
+ }
172
+
173
+ /* ===== Sidebar ===== */
174
+
175
+ .wb-sidebar {
176
+ background: var(--wb-bg-secondary);
177
+ border-right: 1px solid var(--wb-border);
178
+ display: flex;
179
+ flex-direction: column;
180
+ overflow-y: auto;
181
+ }
182
+
183
+ .wb-nav {
184
+ display: flex;
185
+ flex-direction: column;
186
+ padding: 8px;
187
+ gap: 2px;
188
+ }
189
+
190
+ .wb-nav-item {
191
+ display: flex;
192
+ align-items: center;
193
+ gap: 8px;
194
+ padding: 8px 12px;
195
+ background: none;
196
+ border: none;
197
+ border-radius: var(--wb-radius);
198
+ color: var(--wb-text-dim);
199
+ font-size: 13px;
200
+ cursor: pointer;
201
+ text-align: left;
202
+ transition: all 0.15s;
203
+ }
204
+
205
+ .wb-nav-item:hover {
206
+ background: var(--wb-bg-hover);
207
+ color: var(--wb-text);
208
+ }
209
+
210
+ .wb-nav-item.active {
211
+ background: var(--wb-accent-dim);
212
+ color: #fff;
213
+ }
214
+
215
+ .wb-sidebar-section {
216
+ padding: 12px;
217
+ border-top: 1px solid var(--wb-border);
218
+ }
219
+
220
+ .wb-section-title {
221
+ font-size: 11px;
222
+ font-weight: 600;
223
+ text-transform: uppercase;
224
+ letter-spacing: 0.5px;
225
+ color: var(--wb-text-muted);
226
+ margin-bottom: 8px;
227
+ }
228
+
229
+ .wb-shortcuts {
230
+ display: flex;
231
+ flex-direction: column;
232
+ gap: 2px;
233
+ }
234
+
235
+ .wb-shortcut {
236
+ display: flex;
237
+ align-items: center;
238
+ gap: 6px;
239
+ padding: 5px 8px;
240
+ background: none;
241
+ border: none;
242
+ border-radius: var(--wb-radius-sm);
243
+ color: var(--wb-text-dim);
244
+ font-size: 12px;
245
+ cursor: pointer;
246
+ text-align: left;
247
+ }
248
+
249
+ .wb-shortcut:hover {
250
+ background: var(--wb-bg-hover);
251
+ color: var(--wb-text);
252
+ }
253
+
254
+ .wb-session-info {
255
+ font-size: 11px;
256
+ color: var(--wb-text-muted);
257
+ }
258
+
259
+ .wb-session-id {
260
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
261
+ }
262
+
263
+ /* ===== Content Area ===== */
264
+
265
+ .wb-content {
266
+ display: flex;
267
+ flex-direction: column;
268
+ overflow: hidden;
269
+ background: var(--wb-bg);
270
+ }
271
+
272
+ .wb-tab-panel {
273
+ display: none;
274
+ flex-direction: column;
275
+ flex: 1;
276
+ overflow: hidden;
277
+ }
278
+
279
+ .wb-tab-panel.active {
280
+ display: flex;
281
+ }
282
+
283
+ .wb-panel-header {
284
+ padding: 10px 16px;
285
+ font-size: 13px;
286
+ font-weight: 600;
287
+ border-bottom: 1px solid var(--wb-border);
288
+ display: flex;
289
+ align-items: center;
290
+ gap: 8px;
291
+ flex-shrink: 0;
292
+ }
293
+
294
+ .wb-path-display {
295
+ font-family: 'SF Mono', Monaco, monospace;
296
+ font-size: 11px;
297
+ color: var(--wb-text-dim);
298
+ margin-left: auto;
299
+ }
300
+
301
+ .wb-empty {
302
+ padding: 24px;
303
+ text-align: center;
304
+ color: var(--wb-text-muted);
305
+ }
306
+
307
+ /* ===== Chat Panel ===== */
308
+
309
+ .wb-chat-messages {
310
+ flex: 1;
311
+ overflow-y: auto;
312
+ padding: 16px;
313
+ display: flex;
314
+ flex-direction: column;
315
+ gap: 12px;
316
+ }
317
+
318
+ .wb-welcome-msg {
319
+ text-align: center;
320
+ padding: 40px 20px;
321
+ color: var(--wb-text-dim);
322
+ }
323
+
324
+ .wb-welcome-icon {
325
+ font-size: 48px;
326
+ margin-bottom: 12px;
327
+ }
328
+
329
+ .wb-welcome-text {
330
+ font-size: 20px;
331
+ font-weight: 600;
332
+ color: var(--wb-text);
333
+ margin-bottom: 8px;
334
+ }
335
+
336
+ .wb-welcome-sub {
337
+ font-size: 13px;
338
+ }
339
+
340
+ /* Chat Messages */
341
+ .wb-msg {
342
+ display: flex;
343
+ flex-direction: column;
344
+ gap: 4px;
345
+ max-width: 85%;
346
+ animation: fadeIn 0.2s ease;
347
+ }
348
+
349
+ @keyframes fadeIn {
350
+ from { opacity: 0; transform: translateY(4px); }
351
+ to { opacity: 1; transform: translateY(0); }
352
+ }
353
+
354
+ .wb-msg-user {
355
+ align-self: flex-end;
356
+ }
357
+
358
+ .wb-msg-assistant {
359
+ align-self: flex-start;
360
+ }
361
+
362
+ .wb-msg-header {
363
+ display: flex;
364
+ align-items: center;
365
+ gap: 6px;
366
+ font-size: 11px;
367
+ color: var(--wb-text-muted);
368
+ }
369
+
370
+ .wb-msg-source {
371
+ font-size: 10px;
372
+ padding: 1px 5px;
373
+ border-radius: 3px;
374
+ font-weight: 600;
375
+ }
376
+
377
+ .wb-msg-source-cli {
378
+ background: var(--wb-accent-dim);
379
+ color: var(--wb-accent);
380
+ }
381
+
382
+ .wb-msg-source-gui {
383
+ background: #2d1b4e;
384
+ color: var(--wb-purple);
385
+ }
386
+
387
+ .wb-msg-body {
388
+ padding: 10px 14px;
389
+ border-radius: var(--wb-radius);
390
+ font-size: 13px;
391
+ line-height: 1.6;
392
+ white-space: pre-wrap;
393
+ word-break: break-word;
394
+ }
395
+
396
+ .wb-msg-user .wb-msg-body {
397
+ background: var(--wb-accent-dim);
398
+ color: #fff;
399
+ border-bottom-right-radius: 2px;
400
+ }
401
+
402
+ .wb-msg-assistant .wb-msg-body {
403
+ background: var(--wb-bg-secondary);
404
+ border: 1px solid var(--wb-border);
405
+ border-bottom-left-radius: 2px;
406
+ }
407
+
408
+ /* Tool calls */
409
+ .wb-msg-tool {
410
+ align-self: flex-start;
411
+ max-width: 90%;
412
+ }
413
+
414
+ .wb-tool-badge {
415
+ display: inline-flex;
416
+ align-items: center;
417
+ gap: 4px;
418
+ padding: 4px 10px;
419
+ background: var(--wb-bg-tertiary);
420
+ border: 1px solid var(--wb-border);
421
+ border-radius: var(--wb-radius);
422
+ font-size: 12px;
423
+ color: var(--wb-orange);
424
+ font-family: 'SF Mono', Monaco, monospace;
425
+ }
426
+
427
+ /* Streaming indicator */
428
+ .wb-streaming {
429
+ display: inline-block;
430
+ width: 6px;
431
+ height: 14px;
432
+ background: var(--wb-accent);
433
+ animation: blink 0.8s infinite;
434
+ margin-left: 2px;
435
+ vertical-align: middle;
436
+ }
437
+
438
+ @keyframes blink {
439
+ 0%, 50% { opacity: 1; }
440
+ 51%, 100% { opacity: 0; }
441
+ }
442
+
443
+ /* ===== Chat Input ===== */
444
+
445
+ .wb-chat-input-area {
446
+ display: flex;
447
+ align-items: flex-end;
448
+ gap: 8px;
449
+ padding: 12px 16px;
450
+ border-top: 1px solid var(--wb-border);
451
+ background: var(--wb-bg-secondary);
452
+ flex-shrink: 0;
453
+ }
454
+
455
+ .wb-chat-input {
456
+ flex: 1;
457
+ resize: none;
458
+ background: var(--wb-bg);
459
+ border: 1px solid var(--wb-border);
460
+ border-radius: var(--wb-radius);
461
+ padding: 10px 14px;
462
+ color: var(--wb-text);
463
+ font-family: inherit;
464
+ font-size: 13px;
465
+ line-height: 1.5;
466
+ max-height: 150px;
467
+ outline: none;
468
+ transition: border-color 0.15s;
469
+ }
470
+
471
+ .wb-chat-input:focus {
472
+ border-color: var(--wb-accent);
473
+ }
474
+
475
+ .wb-chat-input::placeholder {
476
+ color: var(--wb-text-muted);
477
+ }
478
+
479
+ .wb-btn-send {
480
+ width: 36px;
481
+ height: 36px;
482
+ display: flex;
483
+ align-items: center;
484
+ justify-content: center;
485
+ background: var(--wb-accent-dim);
486
+ color: #fff;
487
+ border: none;
488
+ border-radius: var(--wb-radius);
489
+ font-size: 14px;
490
+ cursor: pointer;
491
+ flex-shrink: 0;
492
+ transition: background 0.15s;
493
+ }
494
+
495
+ .wb-btn-send:hover {
496
+ background: var(--wb-accent);
497
+ }
498
+
499
+ .wb-btn-send:disabled {
500
+ opacity: 0.4;
501
+ cursor: not-allowed;
502
+ }
503
+
504
+ /* ===== Files Panel ===== */
505
+
506
+ .wb-file-list {
507
+ flex: 1;
508
+ overflow-y: auto;
509
+ padding: 8px;
510
+ }
511
+
512
+ .wb-file-item {
513
+ display: flex;
514
+ align-items: center;
515
+ gap: 8px;
516
+ padding: 6px 12px;
517
+ border-radius: var(--wb-radius-sm);
518
+ cursor: pointer;
519
+ font-size: 13px;
520
+ color: var(--wb-text);
521
+ }
522
+
523
+ .wb-file-item:hover {
524
+ background: var(--wb-bg-hover);
525
+ }
526
+
527
+ .wb-file-icon {
528
+ font-size: 14px;
529
+ width: 20px;
530
+ text-align: center;
531
+ }
532
+
533
+ .wb-file-name {
534
+ flex: 1;
535
+ overflow: hidden;
536
+ text-overflow: ellipsis;
537
+ white-space: nowrap;
538
+ }
539
+
540
+ .wb-file-size {
541
+ font-size: 11px;
542
+ color: var(--wb-text-muted);
543
+ }
544
+
545
+ /* ===== Memory Panel ===== */
546
+
547
+ .wb-memory-stats {
548
+ padding: 12px 16px;
549
+ border-bottom: 1px solid var(--wb-border);
550
+ }
551
+
552
+ .wb-memory-stat {
553
+ display: flex;
554
+ justify-content: space-between;
555
+ padding: 4px 0;
556
+ font-size: 12px;
557
+ }
558
+
559
+ .wb-memory-stat-label {
560
+ color: var(--wb-text-dim);
561
+ }
562
+
563
+ .wb-memory-stat-value {
564
+ color: var(--wb-text);
565
+ font-weight: 600;
566
+ }
567
+
568
+ .wb-memory-list {
569
+ flex: 1;
570
+ overflow-y: auto;
571
+ padding: 8px 16px;
572
+ }
573
+
574
+ .wb-memory-item {
575
+ padding: 8px 0;
576
+ border-bottom: 1px solid var(--wb-border);
577
+ font-size: 12px;
578
+ }
579
+
580
+ .wb-memory-category {
581
+ font-size: 10px;
582
+ padding: 1px 5px;
583
+ border-radius: 3px;
584
+ background: var(--wb-bg-tertiary);
585
+ color: var(--wb-accent);
586
+ margin-right: 6px;
587
+ }
588
+
589
+ .wb-memory-content {
590
+ color: var(--wb-text);
591
+ margin-top: 4px;
592
+ }
593
+
594
+ .wb-memory-tags {
595
+ margin-top: 4px;
596
+ color: var(--wb-text-muted);
597
+ font-size: 11px;
598
+ }
599
+
600
+ /* ===== Tools Panel ===== */
601
+
602
+ .wb-tool-list {
603
+ flex: 1;
604
+ overflow-y: auto;
605
+ padding: 8px 16px;
606
+ }
607
+
608
+ .wb-tool-item {
609
+ padding: 8px 0;
610
+ border-bottom: 1px solid var(--wb-border);
611
+ }
612
+
613
+ .wb-tool-name {
614
+ font-family: 'SF Mono', Monaco, monospace;
615
+ font-size: 12px;
616
+ color: var(--wb-green);
617
+ font-weight: 600;
618
+ }
619
+
620
+ .wb-tool-desc {
621
+ font-size: 12px;
622
+ color: var(--wb-text-dim);
623
+ margin-top: 2px;
624
+ overflow: hidden;
625
+ text-overflow: ellipsis;
626
+ white-space: nowrap;
627
+ }
628
+
629
+ /* ===== Context Panel ===== */
630
+
631
+ .wb-context {
632
+ background: var(--wb-bg-secondary);
633
+ border-left: 1px solid var(--wb-border);
634
+ overflow-y: auto;
635
+ padding: 8px 0;
636
+ }
637
+
638
+ .wb-context-section {
639
+ padding: 10px 16px;
640
+ border-bottom: 1px solid var(--wb-border);
641
+ }
642
+
643
+ .wb-context-item {
644
+ display: flex;
645
+ justify-content: space-between;
646
+ align-items: center;
647
+ padding: 3px 0;
648
+ }
649
+
650
+ .wb-ctx-label {
651
+ font-size: 12px;
652
+ color: var(--wb-text-muted);
653
+ }
654
+
655
+ .wb-ctx-value {
656
+ font-size: 12px;
657
+ color: var(--wb-text);
658
+ text-align: right;
659
+ overflow: hidden;
660
+ text-overflow: ellipsis;
661
+ white-space: nowrap;
662
+ max-width: 160px;
663
+ }
664
+
665
+ .wb-ctx-mono {
666
+ font-family: 'SF Mono', Monaco, monospace;
667
+ font-size: 11px;
668
+ }
669
+
670
+ /* ===== Footer ===== */
671
+
672
+ .wb-footer {
673
+ height: var(--wb-footer-h);
674
+ background: var(--wb-bg-secondary);
675
+ border-top: 1px solid var(--wb-border);
676
+ display: flex;
677
+ align-items: center;
678
+ padding: 0 16px;
679
+ gap: 24px;
680
+ font-size: 11px;
681
+ color: var(--wb-text-muted);
682
+ flex-shrink: 0;
683
+ }
684
+
685
+ /* ===== Scrollbar ===== */
686
+
687
+ ::-webkit-scrollbar {
688
+ width: 6px;
689
+ }
690
+
691
+ ::-webkit-scrollbar-track {
692
+ background: transparent;
693
+ }
694
+
695
+ ::-webkit-scrollbar-thumb {
696
+ background: var(--wb-border);
697
+ border-radius: 3px;
698
+ }
699
+
700
+ ::-webkit-scrollbar-thumb:hover {
701
+ background: var(--wb-text-muted);
702
+ }
703
+
704
+ /* ===== Responsive ===== */
705
+
706
+ @media (max-width: 1024px) {
707
+ .wb-main {
708
+ grid-template-columns: 1fr;
709
+ }
710
+ .wb-sidebar, .wb-context {
711
+ display: none;
712
+ }
713
+ }
714
+
715
+ @media (max-width: 1400px) and (min-width: 1025px) {
716
+ .wb-main {
717
+ grid-template-columns: var(--wb-sidebar-w) 1fr;
718
+ }
719
+ .wb-context {
720
+ display: none;
721
+ }
722
+ }
723
+
724
+ /* ===== Token Bar ===== */
725
+
726
+ .wb-token-bar {
727
+ height: 4px;
728
+ background: var(--wb-bg);
729
+ border-radius: 2px;
730
+ margin-bottom: 8px;
731
+ overflow: hidden;
732
+ }
733
+
734
+ .wb-token-bar-fill {
735
+ height: 100%;
736
+ background: linear-gradient(90deg, var(--wb-accent), var(--wb-cyan));
737
+ border-radius: 2px;
738
+ transition: width 0.5s ease;
739
+ }
740
+
741
+ .wb-ctx-highlight {
742
+ color: var(--wb-cyan);
743
+ font-weight: 600;
744
+ }
745
+
746
+ /* ===== Search Box ===== */
747
+
748
+ .wb-search-box {
749
+ display: flex;
750
+ align-items: center;
751
+ gap: 4px;
752
+ margin-left: auto;
753
+ }
754
+
755
+ .wb-search-input {
756
+ background: var(--wb-bg);
757
+ border: 1px solid var(--wb-border);
758
+ border-radius: var(--wb-radius-sm);
759
+ padding: 4px 8px;
760
+ color: var(--wb-text);
761
+ font-size: 12px;
762
+ width: 180px;
763
+ outline: none;
764
+ transition: border-color 0.15s;
765
+ }
766
+
767
+ .wb-search-input:focus {
768
+ border-color: var(--wb-accent);
769
+ }
770
+
771
+ .wb-search-btn {
772
+ background: none;
773
+ border: none;
774
+ font-size: 14px;
775
+ cursor: pointer;
776
+ padding: 2px 4px;
777
+ }
778
+
779
+ /* ===== Tool Call Details ===== */
780
+
781
+ .wb-tool-detail {
782
+ align-self: flex-start;
783
+ max-width: 90%;
784
+ animation: fadeIn 0.2s ease;
785
+ }
786
+
787
+ .wb-tool-header {
788
+ display: flex;
789
+ align-items: center;
790
+ gap: 8px;
791
+ padding: 6px 12px;
792
+ background: var(--wb-bg-tertiary);
793
+ border: 1px solid var(--wb-border);
794
+ border-radius: var(--wb-radius);
795
+ cursor: pointer;
796
+ transition: background 0.15s;
797
+ }
798
+
799
+ .wb-tool-header:hover {
800
+ background: var(--wb-bg-hover);
801
+ }
802
+
803
+ .wb-tool-header .wb-tool-name {
804
+ font-family: 'SF Mono', Monaco, monospace;
805
+ font-size: 12px;
806
+ color: var(--wb-orange);
807
+ }
808
+
809
+ .wb-tool-header .wb-tool-chevron {
810
+ font-size: 10px;
811
+ color: var(--wb-text-muted);
812
+ transition: transform 0.2s;
813
+ margin-left: auto;
814
+ }
815
+
816
+ .wb-tool-header.expanded .wb-tool-chevron {
817
+ transform: rotate(90deg);
818
+ }
819
+
820
+ .wb-tool-params {
821
+ display: none;
822
+ margin-top: 4px;
823
+ padding: 8px 12px;
824
+ background: var(--wb-bg);
825
+ border: 1px solid var(--wb-border);
826
+ border-radius: var(--wb-radius-sm);
827
+ font-family: 'SF Mono', Monaco, monospace;
828
+ font-size: 11px;
829
+ color: var(--wb-text-dim);
830
+ white-space: pre-wrap;
831
+ word-break: break-all;
832
+ max-height: 200px;
833
+ overflow-y: auto;
834
+ }
835
+
836
+ .wb-tool-params.visible {
837
+ display: block;
838
+ }
839
+
840
+ .wb-tool-status {
841
+ display: inline-flex;
842
+ align-items: center;
843
+ gap: 4px;
844
+ padding: 3px 8px;
845
+ font-size: 11px;
846
+ border-radius: 3px;
847
+ margin-top: 4px;
848
+ }
849
+
850
+ .wb-tool-status-ok {
851
+ background: rgba(63, 185, 80, 0.15);
852
+ color: var(--wb-green);
853
+ }
854
+
855
+ .wb-tool-status-err {
856
+ background: rgba(248, 81, 73, 0.15);
857
+ color: var(--wb-red);
858
+ }
859
+
860
+ /* ===== File Preview Modal ===== */
861
+
862
+ .wb-modal-overlay {
863
+ display: none;
864
+ position: fixed;
865
+ inset: 0;
866
+ background: rgba(0, 0, 0, 0.6);
867
+ z-index: 1000;
868
+ align-items: center;
869
+ justify-content: center;
870
+ backdrop-filter: blur(2px);
871
+ }
872
+
873
+ .wb-modal-overlay.visible {
874
+ display: flex;
875
+ }
876
+
877
+ .wb-modal {
878
+ background: var(--wb-bg-secondary);
879
+ border: 1px solid var(--wb-border);
880
+ border-radius: 8px;
881
+ width: min(80vw, 800px);
882
+ max-height: 80vh;
883
+ display: flex;
884
+ flex-direction: column;
885
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.4);
886
+ animation: modalIn 0.2s ease;
887
+ }
888
+
889
+ @keyframes modalIn {
890
+ from { opacity: 0; transform: scale(0.95); }
891
+ to { opacity: 1; transform: scale(1); }
892
+ }
893
+
894
+ .wb-modal-header {
895
+ display: flex;
896
+ align-items: center;
897
+ justify-content: space-between;
898
+ padding: 12px 16px;
899
+ border-bottom: 1px solid var(--wb-border);
900
+ flex-shrink: 0;
901
+ }
902
+
903
+ .wb-modal-title {
904
+ font-family: 'SF Mono', Monaco, monospace;
905
+ font-size: 13px;
906
+ color: var(--wb-accent);
907
+ font-weight: 600;
908
+ }
909
+
910
+ .wb-modal-close {
911
+ background: none;
912
+ border: none;
913
+ font-size: 20px;
914
+ color: var(--wb-text-dim);
915
+ cursor: pointer;
916
+ line-height: 1;
917
+ padding: 0 4px;
918
+ }
919
+
920
+ .wb-modal-close:hover {
921
+ color: var(--wb-text);
922
+ }
923
+
924
+ .wb-modal-body {
925
+ flex: 1;
926
+ overflow: auto;
927
+ padding: 16px;
928
+ margin: 0;
929
+ background: var(--wb-bg);
930
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
931
+ font-size: 12px;
932
+ line-height: 1.6;
933
+ color: var(--wb-text);
934
+ white-space: pre;
935
+ tab-size: 2;
936
+ }
937
+
938
+ /* ===== Code blocks in messages ===== */
939
+
940
+ .wb-msg-body pre {
941
+ background: var(--wb-bg);
942
+ border: 1px solid var(--wb-border);
943
+ border-radius: var(--wb-radius-sm);
944
+ padding: 10px;
945
+ overflow-x: auto;
946
+ margin: 8px 0;
947
+ }
948
+
949
+ .wb-msg-body code {
950
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
951
+ font-size: 12px;
952
+ }
953
+
954
+ .wb-msg-body :not(pre) > code {
955
+ background: var(--wb-bg-tertiary);
956
+ padding: 1px 5px;
957
+ border-radius: 3px;
958
+ color: var(--wb-cyan);
959
+ }
960
+
961
+ .wb-msg-body p {
962
+ margin: 4px 0;
963
+ }
964
+
965
+ .wb-msg-body h1, .wb-msg-body h2, .wb-msg-body h3 {
966
+ margin: 12px 0 6px;
967
+ font-weight: 600;
968
+ }
969
+
970
+ .wb-msg-body h1 { font-size: 16px; }
971
+ .wb-msg-body h2 { font-size: 14px; }
972
+ .wb-msg-body h3 { font-size: 13px; color: var(--wb-text-dim); }
973
+
974
+ .wb-msg-body ul, .wb-msg-body ol {
975
+ margin: 4px 0;
976
+ padding-left: 20px;
977
+ }
978
+
979
+ .wb-msg-body li {
980
+ margin: 2px 0;
981
+ }
982
+
983
+ .wb-msg-body hr {
984
+ border: none;
985
+ border-top: 1px solid var(--wb-border);
986
+ margin: 8px 0;
987
+ }
988
+
989
+ .wb-msg-body a {
990
+ color: var(--wb-accent);
991
+ text-decoration: none;
992
+ }
993
+
994
+ .wb-msg-body a:hover {
995
+ text-decoration: underline;
996
+ }
997
+
998
+ .wb-msg-body blockquote {
999
+ border-left: 3px solid var(--wb-accent-dim);
1000
+ padding-left: 12px;
1001
+ color: var(--wb-text-dim);
1002
+ margin: 8px 0;
1003
+ }
1004
+
1005
+ /* ===== File item enhancements ===== */
1006
+
1007
+ .wb-file-item {
1008
+ transition: background 0.1s;
1009
+ }
1010
+
1011
+ .wb-file-item-active {
1012
+ background: var(--wb-bg-hover);
1013
+ border-left: 2px solid var(--wb-accent);
1014
+ padding-left: 10px;
1015
+ }
1016
+
1017
+ /* ===== Nav Divider ===== */
1018
+
1019
+ .wb-nav-divider {
1020
+ height: 1px;
1021
+ background: var(--wb-border);
1022
+ margin: 6px 8px;
1023
+ }
1024
+
1025
+ /* ===== Shared Form Elements ===== */
1026
+
1027
+ .wb-input {
1028
+ background: var(--wb-bg);
1029
+ border: 1px solid var(--wb-border);
1030
+ border-radius: var(--wb-radius-sm);
1031
+ padding: 6px 10px;
1032
+ color: var(--wb-text);
1033
+ font-size: 12px;
1034
+ outline: none;
1035
+ transition: border-color 0.15s;
1036
+ width: 100%;
1037
+ }
1038
+
1039
+ .wb-input:focus { border-color: var(--wb-accent); }
1040
+
1041
+ .wb-input-sm { width: auto; min-width: 80px; }
1042
+ .wb-input-xs { width: auto; min-width: 60px; padding: 3px 6px; font-size: 11px; }
1043
+
1044
+ .wb-select {
1045
+ background: var(--wb-bg);
1046
+ border: 1px solid var(--wb-border);
1047
+ border-radius: var(--wb-radius-sm);
1048
+ padding: 6px 10px;
1049
+ color: var(--wb-text);
1050
+ font-size: 12px;
1051
+ outline: none;
1052
+ }
1053
+
1054
+ .wb-btn-primary {
1055
+ background: var(--wb-accent-dim);
1056
+ color: #fff;
1057
+ border: none;
1058
+ border-radius: var(--wb-radius-sm);
1059
+ padding: 6px 14px;
1060
+ font-size: 12px;
1061
+ cursor: pointer;
1062
+ white-space: nowrap;
1063
+ transition: background 0.15s;
1064
+ }
1065
+
1066
+ .wb-btn-primary:hover { background: var(--wb-accent); }
1067
+
1068
+ .wb-btn-sm { padding: 4px 10px; font-size: 11px; }
1069
+ .wb-btn-xs { padding: 2px 6px; font-size: 10px; background: var(--wb-bg-tertiary); color: var(--wb-text-dim); border: 1px solid var(--wb-border); border-radius: 3px; cursor: pointer; }
1070
+ .wb-btn-xs:hover { background: var(--wb-bg-hover); color: var(--wb-text); }
1071
+
1072
+ .wb-btn-danger {
1073
+ background: rgba(248, 81, 73, 0.2);
1074
+ color: var(--wb-red);
1075
+ border: 1px solid var(--wb-red);
1076
+ border-radius: var(--wb-radius-sm);
1077
+ padding: 4px 10px;
1078
+ font-size: 11px;
1079
+ cursor: pointer;
1080
+ }
1081
+
1082
+ .wb-btn-danger:hover { background: rgba(248, 81, 73, 0.35); }
1083
+
1084
+ .wb-form-group { margin-bottom: 10px; }
1085
+ .wb-form-group label { display: block; font-size: 11px; color: var(--wb-text-dim); margin-bottom: 4px; text-transform: uppercase; letter-spacing: 0.5px; }
1086
+ .wb-form-row { display: flex; gap: 8px; align-items: center; }
1087
+ .wb-form-divider { text-align: center; color: var(--wb-text-muted); font-size: 12px; padding: 8px 0; }
1088
+ .wb-form-actions { display: flex; justify-content: space-between; padding-top: 12px; border-top: 1px solid var(--wb-border); }
1089
+ .wb-modal-form { padding: 16px; }
1090
+ .wb-empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px; color: var(--wb-text-muted); gap: 12px; }
1091
+ .wb-empty-icon { font-size: 36px; }
1092
+
1093
+ /* ===== Team Tab ===== */
1094
+
1095
+ .wb-team-join {
1096
+ padding: 24px;
1097
+ display: flex;
1098
+ justify-content: center;
1099
+ }
1100
+
1101
+ .wb-team-join-card {
1102
+ background: var(--wb-bg-secondary);
1103
+ border: 1px solid var(--wb-border);
1104
+ border-radius: 8px;
1105
+ padding: 24px;
1106
+ max-width: 480px;
1107
+ width: 100%;
1108
+ }
1109
+
1110
+ .wb-team-join-card h3 {
1111
+ font-size: 14px;
1112
+ margin-bottom: 16px;
1113
+ color: var(--wb-text);
1114
+ }
1115
+
1116
+ .wb-team-content {
1117
+ display: flex;
1118
+ flex-direction: column;
1119
+ flex: 1;
1120
+ overflow: hidden;
1121
+ }
1122
+
1123
+ .wb-team-info-bar {
1124
+ display: flex;
1125
+ align-items: center;
1126
+ gap: 12px;
1127
+ padding: 8px 16px;
1128
+ background: var(--wb-bg-secondary);
1129
+ border-bottom: 1px solid var(--wb-border);
1130
+ flex-shrink: 0;
1131
+ }
1132
+
1133
+ .wb-team-name {
1134
+ font-weight: 600;
1135
+ font-size: 13px;
1136
+ color: var(--wb-cyan);
1137
+ }
1138
+
1139
+ .wb-team-code {
1140
+ font-family: 'SF Mono', Monaco, monospace;
1141
+ font-size: 11px;
1142
+ padding: 2px 8px;
1143
+ background: var(--wb-bg-tertiary);
1144
+ border: 1px solid var(--wb-border);
1145
+ border-radius: 3px;
1146
+ color: var(--wb-text-dim);
1147
+ cursor: pointer;
1148
+ }
1149
+
1150
+ .wb-team-code:hover { color: var(--wb-text); }
1151
+
1152
+ .wb-team-online {
1153
+ font-size: 11px;
1154
+ color: var(--wb-green);
1155
+ margin-left: auto;
1156
+ }
1157
+
1158
+ /* Sub-tabs */
1159
+
1160
+ .wb-team-subtabs {
1161
+ display: flex;
1162
+ gap: 0;
1163
+ border-bottom: 1px solid var(--wb-border);
1164
+ flex-shrink: 0;
1165
+ }
1166
+
1167
+ .wb-subtab {
1168
+ padding: 8px 16px;
1169
+ background: none;
1170
+ border: none;
1171
+ border-bottom: 2px solid transparent;
1172
+ color: var(--wb-text-dim);
1173
+ font-size: 12px;
1174
+ cursor: pointer;
1175
+ transition: all 0.15s;
1176
+ }
1177
+
1178
+ .wb-subtab:hover { color: var(--wb-text); }
1179
+ .wb-subtab.active { color: var(--wb-accent); border-bottom-color: var(--wb-accent); }
1180
+
1181
+ .wb-subtab-panel { display: none; flex: 1; overflow-y: auto; }
1182
+ .wb-subtab-panel.active { display: flex; flex-direction: column; }
1183
+
1184
+ /* Members */
1185
+
1186
+ .wb-member-list {
1187
+ padding: 8px 16px;
1188
+ }
1189
+
1190
+ .wb-member-item {
1191
+ display: flex;
1192
+ align-items: center;
1193
+ gap: 10px;
1194
+ padding: 8px 0;
1195
+ border-bottom: 1px solid var(--wb-border);
1196
+ font-size: 13px;
1197
+ }
1198
+
1199
+ .wb-member-dot {
1200
+ width: 8px;
1201
+ height: 8px;
1202
+ border-radius: 50%;
1203
+ flex-shrink: 0;
1204
+ }
1205
+
1206
+ .wb-member-dot-online { background: var(--wb-green); }
1207
+ .wb-member-dot-offline { background: var(--wb-text-muted); }
1208
+
1209
+ .wb-member-name { flex: 1; color: var(--wb-text); }
1210
+ .wb-member-role {
1211
+ font-size: 10px;
1212
+ padding: 1px 6px;
1213
+ border-radius: 3px;
1214
+ background: var(--wb-bg-tertiary);
1215
+ color: var(--wb-text-dim);
1216
+ }
1217
+
1218
+ /* Kanban */
1219
+
1220
+ .wb-kanban-header {
1221
+ display: flex;
1222
+ justify-content: flex-end;
1223
+ padding: 8px 12px;
1224
+ flex-shrink: 0;
1225
+ }
1226
+
1227
+ .wb-task-add-form {
1228
+ display: flex;
1229
+ gap: 8px;
1230
+ padding: 0 12px 8px;
1231
+ align-items: center;
1232
+ flex-shrink: 0;
1233
+ }
1234
+
1235
+ .wb-kanban {
1236
+ display: flex;
1237
+ gap: 8px;
1238
+ padding: 0 12px 12px;
1239
+ flex: 1;
1240
+ overflow-x: auto;
1241
+ min-height: 0;
1242
+ }
1243
+
1244
+ .wb-kanban-col {
1245
+ flex: 1;
1246
+ min-width: 160px;
1247
+ background: var(--wb-bg-secondary);
1248
+ border: 1px solid var(--wb-border);
1249
+ border-radius: var(--wb-radius);
1250
+ display: flex;
1251
+ flex-direction: column;
1252
+ max-height: 100%;
1253
+ }
1254
+
1255
+ .wb-kanban-col-header {
1256
+ padding: 8px 10px;
1257
+ font-size: 11px;
1258
+ font-weight: 600;
1259
+ text-transform: uppercase;
1260
+ color: var(--wb-text-dim);
1261
+ border-bottom: 1px solid var(--wb-border);
1262
+ flex-shrink: 0;
1263
+ }
1264
+
1265
+ .wb-kanban-cards {
1266
+ flex: 1;
1267
+ overflow-y: auto;
1268
+ padding: 6px;
1269
+ display: flex;
1270
+ flex-direction: column;
1271
+ gap: 4px;
1272
+ }
1273
+
1274
+ .wb-task-card {
1275
+ background: var(--wb-bg);
1276
+ border: 1px solid var(--wb-border);
1277
+ border-radius: var(--wb-radius-sm);
1278
+ padding: 8px 10px;
1279
+ cursor: pointer;
1280
+ transition: border-color 0.15s;
1281
+ border-left: 3px solid var(--wb-text-muted);
1282
+ }
1283
+
1284
+ .wb-task-card:hover { border-color: var(--wb-accent); }
1285
+
1286
+ .wb-task-card[data-priority="S"] { border-left-color: var(--wb-red); }
1287
+ .wb-task-card[data-priority="A"] { border-left-color: var(--wb-orange); }
1288
+ .wb-task-card[data-priority="B"] { border-left-color: var(--wb-accent); }
1289
+ .wb-task-card[data-priority="C"] { border-left-color: var(--wb-text-muted); }
1290
+
1291
+ .wb-task-title { font-size: 12px; color: var(--wb-text); margin-bottom: 4px; }
1292
+ .wb-task-meta { display: flex; gap: 6px; align-items: center; }
1293
+
1294
+ .wb-task-priority {
1295
+ font-size: 10px;
1296
+ font-weight: 700;
1297
+ padding: 0 4px;
1298
+ border-radius: 2px;
1299
+ }
1300
+
1301
+ .wb-task-assignee {
1302
+ font-size: 10px;
1303
+ color: var(--wb-text-dim);
1304
+ margin-left: auto;
1305
+ }
1306
+
1307
+ /* Team Chat */
1308
+
1309
+ .wb-team-chat-messages {
1310
+ flex: 1;
1311
+ overflow-y: auto;
1312
+ padding: 12px 16px;
1313
+ display: flex;
1314
+ flex-direction: column;
1315
+ gap: 8px;
1316
+ }
1317
+
1318
+ .wb-team-chat-msg {
1319
+ font-size: 12px;
1320
+ }
1321
+
1322
+ .wb-team-chat-sender {
1323
+ font-weight: 600;
1324
+ color: var(--wb-cyan);
1325
+ margin-right: 6px;
1326
+ }
1327
+
1328
+ .wb-team-chat-time {
1329
+ font-size: 10px;
1330
+ color: var(--wb-text-muted);
1331
+ margin-left: 6px;
1332
+ }
1333
+
1334
+ .wb-team-chat-text { color: var(--wb-text); }
1335
+
1336
+ .wb-team-chat-typing {
1337
+ padding: 0 16px;
1338
+ font-size: 11px;
1339
+ color: var(--wb-text-muted);
1340
+ min-height: 16px;
1341
+ flex-shrink: 0;
1342
+ }
1343
+
1344
+ .wb-team-chat-input {
1345
+ display: flex;
1346
+ gap: 8px;
1347
+ padding: 8px 16px;
1348
+ border-top: 1px solid var(--wb-border);
1349
+ flex-shrink: 0;
1350
+ }
1351
+
1352
+ /* ===== Network Tab ===== */
1353
+
1354
+ .wb-network-content {
1355
+ flex: 1;
1356
+ overflow-y: auto;
1357
+ padding: 0 16px 16px;
1358
+ }
1359
+
1360
+ .wb-network-section {
1361
+ padding: 12px 0;
1362
+ border-bottom: 1px solid var(--wb-border);
1363
+ }
1364
+
1365
+ .wb-profile-field {
1366
+ margin-bottom: 10px;
1367
+ }
1368
+
1369
+ .wb-profile-field label {
1370
+ font-size: 11px;
1371
+ color: var(--wb-text-dim);
1372
+ text-transform: uppercase;
1373
+ letter-spacing: 0.5px;
1374
+ display: block;
1375
+ margin-bottom: 4px;
1376
+ }
1377
+
1378
+ .wb-tag-list {
1379
+ display: flex;
1380
+ flex-wrap: wrap;
1381
+ gap: 4px;
1382
+ margin-bottom: 4px;
1383
+ }
1384
+
1385
+ .wb-tag {
1386
+ display: inline-flex;
1387
+ align-items: center;
1388
+ gap: 4px;
1389
+ padding: 2px 8px;
1390
+ background: var(--wb-bg-tertiary);
1391
+ border: 1px solid var(--wb-border);
1392
+ border-radius: 12px;
1393
+ font-size: 11px;
1394
+ color: var(--wb-text);
1395
+ }
1396
+
1397
+ .wb-tag-remove {
1398
+ cursor: pointer;
1399
+ color: var(--wb-text-muted);
1400
+ font-size: 12px;
1401
+ line-height: 1;
1402
+ }
1403
+
1404
+ .wb-tag-remove:hover { color: var(--wb-red); }
1405
+
1406
+ .wb-tag-add {
1407
+ display: flex;
1408
+ gap: 4px;
1409
+ align-items: center;
1410
+ }
1411
+
1412
+ /* Rounds */
1413
+
1414
+ .wb-round-list {
1415
+ display: flex;
1416
+ flex-direction: column;
1417
+ gap: 6px;
1418
+ }
1419
+
1420
+ .wb-round-card {
1421
+ background: var(--wb-bg-secondary);
1422
+ border: 1px solid var(--wb-border);
1423
+ border-radius: var(--wb-radius);
1424
+ overflow: hidden;
1425
+ }
1426
+
1427
+ .wb-round-header {
1428
+ display: flex;
1429
+ align-items: center;
1430
+ gap: 8px;
1431
+ padding: 8px 12px;
1432
+ cursor: pointer;
1433
+ transition: background 0.15s;
1434
+ }
1435
+
1436
+ .wb-round-header:hover { background: var(--wb-bg-hover); }
1437
+
1438
+ .wb-round-time { font-size: 11px; color: var(--wb-text-dim); }
1439
+ .wb-round-matches { font-size: 11px; color: var(--wb-accent); margin-left: auto; }
1440
+ .wb-round-status {
1441
+ font-size: 10px;
1442
+ padding: 1px 6px;
1443
+ border-radius: 3px;
1444
+ }
1445
+
1446
+ .wb-round-status-completed { background: rgba(63,185,80,0.15); color: var(--wb-green); }
1447
+ .wb-round-status-running { background: rgba(210,153,34,0.15); color: var(--wb-orange); }
1448
+ .wb-round-status-failed { background: rgba(248,81,73,0.15); color: var(--wb-red); }
1449
+
1450
+ .wb-round-detail {
1451
+ display: none;
1452
+ padding: 8px 12px;
1453
+ border-top: 1px solid var(--wb-border);
1454
+ font-size: 12px;
1455
+ }
1456
+
1457
+ .wb-round-detail.visible { display: block; }
1458
+
1459
+ .wb-match-pair {
1460
+ padding: 6px 0;
1461
+ border-bottom: 1px solid var(--wb-border);
1462
+ }
1463
+
1464
+ .wb-match-pair:last-child { border-bottom: none; }
1465
+
1466
+ .wb-match-names { font-weight: 600; color: var(--wb-cyan); font-size: 12px; }
1467
+ .wb-match-reason { color: var(--wb-text-dim); font-size: 11px; margin-top: 2px; }
1468
+ .wb-match-score { font-size: 10px; color: var(--wb-orange); }
1469
+
1470
+ /* Digest */
1471
+
1472
+ .wb-digest-area {
1473
+ display: flex;
1474
+ flex-direction: column;
1475
+ gap: 8px;
1476
+ }
1477
+
1478
+ .wb-digest-card {
1479
+ background: var(--wb-bg-secondary);
1480
+ border: 1px solid var(--wb-border);
1481
+ border-radius: var(--wb-radius);
1482
+ padding: 12px;
1483
+ }
1484
+
1485
+ .wb-digest-partner { font-weight: 600; color: var(--wb-cyan); font-size: 13px; margin-bottom: 6px; }
1486
+ .wb-digest-value { font-size: 12px; color: var(--wb-text); margin-bottom: 6px; }
1487
+
1488
+ .wb-digest-actions {
1489
+ font-size: 11px;
1490
+ color: var(--wb-text-dim);
1491
+ }
1492
+
1493
+ .wb-digest-actions li { margin: 2px 0; }
1494
+
1495
+ .wb-digest-insights {
1496
+ font-size: 11px;
1497
+ color: var(--wb-purple);
1498
+ margin-top: 6px;
1499
+ }
1500
+
1501
+ /* ===== Toast Notifications ===== */
1502
+
1503
+ .wb-toast-container {
1504
+ position: fixed;
1505
+ top: 56px;
1506
+ right: 16px;
1507
+ z-index: 2000;
1508
+ display: flex;
1509
+ flex-direction: column;
1510
+ gap: 6px;
1511
+ pointer-events: none;
1512
+ }
1513
+
1514
+ .wb-toast {
1515
+ padding: 8px 16px;
1516
+ border-radius: var(--wb-radius);
1517
+ font-size: 12px;
1518
+ color: #fff;
1519
+ pointer-events: auto;
1520
+ animation: toastIn 0.25s ease;
1521
+ max-width: 320px;
1522
+ word-break: break-word;
1523
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
1524
+ }
1525
+
1526
+ .wb-toast-info { background: var(--wb-accent-dim); }
1527
+ .wb-toast-error { background: rgba(248, 81, 73, 0.9); }
1528
+ .wb-toast-success { background: rgba(63, 185, 80, 0.9); }
1529
+ .wb-toast-warning { background: rgba(210, 153, 34, 0.9); }
1530
+
1531
+ .wb-toast-out {
1532
+ animation: toastOut 0.3s ease forwards;
1533
+ }
1534
+
1535
+ @keyframes toastIn {
1536
+ from { opacity: 0; transform: translateX(20px); }
1537
+ to { opacity: 1; transform: translateX(0); }
1538
+ }
1539
+
1540
+ @keyframes toastOut {
1541
+ from { opacity: 1; transform: translateX(0); }
1542
+ to { opacity: 0; transform: translateX(20px); }
1543
+ }
1544
+
1545
+ /* ===== Loading Spinner ===== */
1546
+
1547
+ .wb-spinner {
1548
+ display: inline-block;
1549
+ width: 16px;
1550
+ height: 16px;
1551
+ border: 2px solid var(--wb-border);
1552
+ border-top-color: var(--wb-accent);
1553
+ border-radius: 50%;
1554
+ animation: spin 0.6s linear infinite;
1555
+ }
1556
+
1557
+ @keyframes spin {
1558
+ to { transform: rotate(360deg); }
1559
+ }
1560
+
1561
+ /* ===== Button disabled state ===== */
1562
+
1563
+ .wb-btn-primary:disabled,
1564
+ .wb-btn-sm:disabled {
1565
+ opacity: 0.5;
1566
+ cursor: not-allowed;
1567
+ pointer-events: none;
1568
+ }