@quanta-intellect/vessel-browser 0.1.6

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,3354 @@
1
+ /* ═══════════════════════════════════════
2
+ Title bar
3
+ ═══════════════════════════════════════ */
4
+
5
+ .title-bar {
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: flex-end;
9
+ height: 32px;
10
+ background: var(--bg-secondary);
11
+ position: relative;
12
+ }
13
+
14
+ .title-bar-drag {
15
+ position: absolute;
16
+ inset: 0;
17
+ -webkit-app-region: drag;
18
+ }
19
+
20
+ .window-controls {
21
+ display: flex;
22
+ gap: 2px;
23
+ padding-right: 8px;
24
+ -webkit-app-region: no-drag;
25
+ position: relative;
26
+ z-index: 1;
27
+ }
28
+
29
+ .window-btn {
30
+ width: 28px;
31
+ height: 24px;
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ border-radius: var(--radius-sm);
36
+ color: var(--text-muted);
37
+ transition:
38
+ background var(--duration-fast) var(--ease-in-out),
39
+ color var(--duration-fast) var(--ease-in-out),
40
+ transform var(--duration-fast) var(--ease-out-expo);
41
+ }
42
+
43
+ .window-btn:hover {
44
+ background: var(--bg-tertiary);
45
+ color: var(--text-primary);
46
+ }
47
+
48
+ .window-btn:active {
49
+ transform: scale(0.92);
50
+ }
51
+
52
+ .window-btn-close:hover {
53
+ background: var(--error);
54
+ color: white;
55
+ }
56
+
57
+
58
+ /* ═══════════════════════════════════════
59
+ Tab bar — elevated, distinctive
60
+ ═══════════════════════════════════════ */
61
+
62
+ .tab-bar {
63
+ display: flex;
64
+ align-items: end;
65
+ height: var(--tab-height);
66
+ background: var(--bg-secondary);
67
+ padding: 0 6px;
68
+ gap: 1px;
69
+ border-bottom: 1px solid var(--border-subtle);
70
+ }
71
+
72
+ .tab-list {
73
+ display: flex;
74
+ flex: 1;
75
+ overflow-x: auto;
76
+ gap: 1px;
77
+ scrollbar-width: none;
78
+ align-items: end;
79
+ }
80
+
81
+ .tab-list::-webkit-scrollbar {
82
+ display: none;
83
+ }
84
+
85
+ .tab-item {
86
+ display: flex;
87
+ align-items: center;
88
+ gap: 7px;
89
+ height: 30px;
90
+ padding: 0 12px;
91
+ border-radius: 7px 7px 0 0;
92
+ color: var(--text-muted);
93
+ font-size: 11.5px;
94
+ font-weight: 450;
95
+ letter-spacing: 0.005em;
96
+ white-space: nowrap;
97
+ max-width: 200px;
98
+ min-width: 60px;
99
+ cursor: default;
100
+ position: relative;
101
+ transition:
102
+ background var(--duration-normal) var(--ease-in-out),
103
+ color var(--duration-normal) var(--ease-in-out);
104
+ animation: tab-open var(--duration-slow) var(--ease-out-expo) both;
105
+ }
106
+
107
+ @keyframes tab-open {
108
+ from {
109
+ max-width: 0;
110
+ padding: 0;
111
+ opacity: 0;
112
+ }
113
+ to {
114
+ max-width: 200px;
115
+ padding: 0 12px;
116
+ opacity: 1;
117
+ }
118
+ }
119
+
120
+ .tab-item:hover {
121
+ background: rgba(255, 255, 255, 0.04);
122
+ color: var(--text-secondary);
123
+ }
124
+
125
+ .tab-item.active {
126
+ background: var(--bg-primary);
127
+ color: var(--text-primary);
128
+ font-weight: 500;
129
+ }
130
+
131
+ /* Subtle top accent line on active tab */
132
+ .tab-item.active::before {
133
+ content: '';
134
+ position: absolute;
135
+ top: 0;
136
+ left: 8px;
137
+ right: 8px;
138
+ height: 1.5px;
139
+ background: var(--accent-primary);
140
+ border-radius: 0 0 2px 2px;
141
+ opacity: 0.6;
142
+ }
143
+
144
+ .tab-item.model-active {
145
+ background: rgba(196, 160, 90, 0.08);
146
+ }
147
+
148
+ .tab-item.model-active:not(.active) {
149
+ color: var(--text-secondary);
150
+ }
151
+
152
+ .tab-item.model-active.active {
153
+ background: var(--bg-primary);
154
+ }
155
+
156
+ .tab-item.model-active.active::before {
157
+ opacity: 1;
158
+ background: var(--accent-primary);
159
+ box-shadow: 0 0 8px rgba(196, 160, 90, 0.4);
160
+ }
161
+
162
+ .tab-favicon {
163
+ width: 14px;
164
+ height: 14px;
165
+ flex-shrink: 0;
166
+ border-radius: 3px;
167
+ }
168
+
169
+ .tab-favicon-fallback {
170
+ width: 14px;
171
+ height: 14px;
172
+ flex-shrink: 0;
173
+ border-radius: 3px;
174
+ display: inline-flex;
175
+ align-items: center;
176
+ justify-content: center;
177
+ font-size: 9px;
178
+ font-weight: 700;
179
+ line-height: 1;
180
+ color: hsl(var(--favicon-hue), 60%, 82%);
181
+ background: hsl(var(--favicon-hue), 40%, 22%);
182
+ letter-spacing: -0.02em;
183
+ }
184
+
185
+ .tab-agent-indicator {
186
+ width: 7px;
187
+ height: 7px;
188
+ flex-shrink: 0;
189
+ border-radius: 999px;
190
+ background: #22c55e;
191
+ box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.45);
192
+ animation: tab-agent-pulse 1.4s ease-out infinite;
193
+ }
194
+
195
+ .tab-title {
196
+ overflow: hidden;
197
+ text-overflow: ellipsis;
198
+ flex: 1;
199
+ }
200
+
201
+ .tab-close {
202
+ font-size: 14px;
203
+ width: 18px;
204
+ height: 18px;
205
+ display: flex;
206
+ align-items: center;
207
+ justify-content: center;
208
+ border-radius: var(--radius-sm);
209
+ color: var(--text-muted);
210
+ opacity: 0;
211
+ flex-shrink: 0;
212
+ transition:
213
+ opacity var(--duration-normal) var(--ease-in-out),
214
+ background var(--duration-fast) var(--ease-in-out);
215
+ margin-right: -4px;
216
+ }
217
+
218
+ .tab-item:hover .tab-close {
219
+ opacity: 1;
220
+ }
221
+
222
+ .tab-close:hover {
223
+ background: rgba(255, 255, 255, 0.08);
224
+ color: var(--text-primary);
225
+ }
226
+
227
+ .tab-loading {
228
+ width: 8px;
229
+ height: 8px;
230
+ border: 1.5px solid var(--accent-primary);
231
+ border-top-color: transparent;
232
+ border-radius: 50%;
233
+ animation: spin 0.6s linear infinite;
234
+ flex-shrink: 0;
235
+ }
236
+
237
+ @keyframes spin {
238
+ to {
239
+ transform: rotate(360deg);
240
+ }
241
+ }
242
+
243
+ @keyframes tab-agent-pulse {
244
+ 0% {
245
+ box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.42);
246
+ }
247
+
248
+ 70% {
249
+ box-shadow: 0 0 0 6px rgba(34, 197, 94, 0);
250
+ }
251
+
252
+ 100% {
253
+ box-shadow: 0 0 0 0 rgba(34, 197, 94, 0);
254
+ }
255
+ }
256
+
257
+ .tab-new {
258
+ width: 28px;
259
+ height: 28px;
260
+ display: flex;
261
+ align-items: center;
262
+ justify-content: center;
263
+ border-radius: var(--radius-sm);
264
+ color: var(--text-muted);
265
+ font-size: 16px;
266
+ flex-shrink: 0;
267
+ margin-left: 2px;
268
+ transition:
269
+ background var(--duration-fast) var(--ease-in-out),
270
+ color var(--duration-fast) var(--ease-in-out),
271
+ transform var(--duration-fast) var(--ease-out-back);
272
+ }
273
+
274
+ .tab-new:hover {
275
+ background: var(--bg-tertiary);
276
+ color: var(--text-primary);
277
+ transform: scale(1.08);
278
+ }
279
+
280
+ .tab-new:active {
281
+ transform: scale(0.95);
282
+ }
283
+
284
+
285
+ /* ═══════════════════════════════════════
286
+ Address bar — refined URL shell
287
+ ═══════════════════════════════════════ */
288
+
289
+ .address-bar {
290
+ display: flex;
291
+ align-items: center;
292
+ height: var(--address-bar-height);
293
+ padding: 0 8px;
294
+ gap: 6px;
295
+ background: var(--bg-primary);
296
+ border-bottom: 1px solid var(--border-subtle);
297
+ }
298
+
299
+ .nav-controls {
300
+ display: flex;
301
+ gap: 1px;
302
+ flex-shrink: 0;
303
+ }
304
+
305
+ .nav-btn {
306
+ width: 30px;
307
+ height: 30px;
308
+ display: flex;
309
+ align-items: center;
310
+ justify-content: center;
311
+ border-radius: var(--radius-md);
312
+ color: var(--text-muted);
313
+ transition:
314
+ background var(--duration-fast) var(--ease-in-out),
315
+ color var(--duration-fast) var(--ease-in-out),
316
+ transform var(--duration-fast) var(--ease-out-expo);
317
+ }
318
+
319
+ .nav-btn:hover:not(:disabled) {
320
+ background: var(--bg-tertiary);
321
+ color: var(--text-primary);
322
+ }
323
+
324
+ .nav-btn:active:not(:disabled) {
325
+ transform: scale(0.9);
326
+ }
327
+
328
+ .nav-btn:disabled {
329
+ opacity: 0.25;
330
+ cursor: default;
331
+ }
332
+
333
+ .nav-btn.active {
334
+ color: var(--accent-primary);
335
+ background: rgba(196, 160, 90, 0.12);
336
+ }
337
+
338
+ .nav-btn.ai-btn {
339
+ color: var(--accent-primary);
340
+ }
341
+
342
+ .nav-btn.ai-btn:hover {
343
+ background: rgba(196, 160, 90, 0.12);
344
+ }
345
+
346
+ .url-shell {
347
+ flex: 1;
348
+ display: flex;
349
+ align-items: center;
350
+ min-width: 0;
351
+ height: 30px;
352
+ background: var(--bg-secondary);
353
+ border: 1px solid var(--border-subtle);
354
+ border-radius: var(--radius-md);
355
+ overflow: hidden;
356
+ transition:
357
+ border-color var(--duration-normal) var(--ease-in-out),
358
+ box-shadow var(--duration-normal) var(--ease-in-out),
359
+ background var(--duration-normal) var(--ease-in-out);
360
+ }
361
+
362
+ .url-shell:focus-within {
363
+ border-color: rgba(196, 160, 90, 0.5);
364
+ box-shadow: 0 0 0 2px rgba(196, 160, 90, 0.1);
365
+ background: rgba(42, 42, 46, 0.6);
366
+ }
367
+
368
+ .url-form {
369
+ flex: 1;
370
+ display: flex;
371
+ min-width: 0;
372
+ }
373
+
374
+ .url-input {
375
+ width: 100%;
376
+ height: 30px;
377
+ padding: 0 12px;
378
+ background: transparent;
379
+ border: none;
380
+ border-radius: 0;
381
+ color: var(--text-secondary);
382
+ font-size: 12.5px;
383
+ letter-spacing: 0.01em;
384
+ transition: color var(--duration-normal) var(--ease-in-out);
385
+ }
386
+
387
+ .url-input:focus {
388
+ outline: none;
389
+ color: var(--text-primary);
390
+ box-shadow: none;
391
+ }
392
+
393
+ .url-input::placeholder {
394
+ color: var(--text-muted);
395
+ }
396
+
397
+ .agent-status-badge {
398
+ display: flex;
399
+ align-items: center;
400
+ gap: 6px;
401
+ height: 30px;
402
+ padding: 0 10px;
403
+ min-width: 0;
404
+ max-width: min(280px, 26vw);
405
+ border-left: 1px solid rgba(255, 255, 255, 0.05);
406
+ border-radius: 0;
407
+ background: transparent;
408
+ color: var(--text-muted);
409
+ font-size: 10.5px;
410
+ font-weight: 500;
411
+ letter-spacing: 0.02em;
412
+ white-space: nowrap;
413
+ flex-shrink: 0;
414
+ transition:
415
+ border-color var(--duration-normal) var(--ease-in-out),
416
+ background var(--duration-normal) var(--ease-in-out),
417
+ color var(--duration-slow) var(--ease-in-out);
418
+ }
419
+
420
+ .agent-status-text {
421
+ overflow: hidden;
422
+ text-overflow: ellipsis;
423
+ white-space: nowrap;
424
+ }
425
+
426
+ /* Active — green: agent is actively using tools */
427
+ .agent-status-badge.active {
428
+ border-left-color: rgba(34, 197, 94, 0.18);
429
+ background: rgba(34, 197, 94, 0.05);
430
+ color: var(--text-primary);
431
+ }
432
+
433
+ .agent-status-badge.active .agent-status-text {
434
+ background: linear-gradient(
435
+ 90deg,
436
+ var(--text-primary) 0%,
437
+ var(--text-primary) 40%,
438
+ #22c55e 50%,
439
+ var(--text-primary) 60%,
440
+ var(--text-primary) 100%
441
+ );
442
+ background-size: 200% 100%;
443
+ -webkit-background-clip: text;
444
+ background-clip: text;
445
+ -webkit-text-fill-color: transparent;
446
+ animation: status-shimmer 3s ease-in-out infinite;
447
+ }
448
+
449
+ @keyframes status-shimmer {
450
+ 0% { background-position: 100% 0; }
451
+ 100% { background-position: -100% 0; }
452
+ }
453
+
454
+ /* Recent — amber/yellow: MCP connected or recently active */
455
+ .agent-status-badge.recent {
456
+ border-left-color: rgba(234, 179, 8, 0.14);
457
+ background: rgba(234, 179, 8, 0.03);
458
+ color: var(--text-secondary);
459
+ }
460
+
461
+ /* Idle — gray: no connection */
462
+ .agent-status-badge.idle {
463
+ border-left-color: rgba(113, 113, 122, 0.1);
464
+ }
465
+
466
+ .agent-status-dot {
467
+ width: 6px;
468
+ height: 6px;
469
+ border-radius: 999px;
470
+ background: rgba(113, 113, 122, 0.5);
471
+ flex-shrink: 0;
472
+ transition:
473
+ background var(--duration-slow) var(--ease-in-out),
474
+ box-shadow var(--duration-slow) var(--ease-in-out);
475
+ }
476
+
477
+ /* Green pulsing dot for active */
478
+ .agent-status-badge.active .agent-status-dot {
479
+ background: #22c55e;
480
+ box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.32);
481
+ animation: agent-status-pulse-green 1.8s ease-out infinite;
482
+ }
483
+
484
+ /* Steady amber dot for recent/connected */
485
+ .agent-status-badge.recent .agent-status-dot {
486
+ background: #eab308;
487
+ }
488
+
489
+ .toolbar-actions {
490
+ display: flex;
491
+ gap: 1px;
492
+ flex-shrink: 0;
493
+ }
494
+
495
+ /* Sidebar button — approval notification badge */
496
+ .nav-btn-sidebar {
497
+ position: relative;
498
+ }
499
+
500
+ .nav-btn-sidebar.has-approvals {
501
+ color: var(--accent-warm);
502
+ animation: approval-attention 2s ease-in-out infinite;
503
+ }
504
+
505
+ @keyframes approval-attention {
506
+ 0%, 100% { color: var(--accent-warm); }
507
+ 50% { color: var(--text-primary); }
508
+ }
509
+
510
+ .nav-btn-badge {
511
+ position: absolute;
512
+ top: 2px;
513
+ right: 2px;
514
+ min-width: 14px;
515
+ height: 14px;
516
+ padding: 0 3px;
517
+ border-radius: 999px;
518
+ background: var(--accent-warm);
519
+ color: #1a1a1e;
520
+ font-size: 9px;
521
+ font-weight: 700;
522
+ line-height: 14px;
523
+ text-align: center;
524
+ pointer-events: none;
525
+ animation: badge-enter var(--duration-enter) var(--ease-out-back) both;
526
+ }
527
+
528
+ @keyframes badge-enter {
529
+ from {
530
+ opacity: 0;
531
+ transform: scale(0);
532
+ }
533
+ to {
534
+ opacity: 1;
535
+ transform: scale(1);
536
+ }
537
+ }
538
+
539
+
540
+ /* ═══════════════════════════════════════
541
+ Bookmark toast notifications — animated
542
+ ═══════════════════════════════════════ */
543
+
544
+ .bookmark-toast-stack {
545
+ position: absolute;
546
+ top: calc(32px + var(--tab-height) + var(--address-bar-height) + 14px);
547
+ right: 14px;
548
+ z-index: 50;
549
+ display: flex;
550
+ flex-direction: column;
551
+ gap: 8px;
552
+ pointer-events: none;
553
+ max-width: min(340px, calc(100vw - 28px));
554
+ }
555
+
556
+ .bookmark-toast {
557
+ padding: 12px 14px;
558
+ border: 1px solid rgba(196, 160, 90, 0.22);
559
+ border-radius: var(--radius-lg);
560
+ background: linear-gradient(
561
+ 180deg,
562
+ rgba(50, 50, 54, 0.97),
563
+ rgba(34, 34, 38, 0.97)
564
+ );
565
+ box-shadow:
566
+ 0 4px 12px rgba(0, 0, 0, 0.2),
567
+ 0 16px 40px rgba(0, 0, 0, 0.16);
568
+ backdrop-filter: blur(16px);
569
+ animation: toast-enter var(--duration-enter) var(--ease-out-expo) both;
570
+ }
571
+
572
+ @keyframes toast-enter {
573
+ from {
574
+ opacity: 0;
575
+ transform: translateY(-8px) scale(0.96);
576
+ }
577
+ to {
578
+ opacity: 1;
579
+ transform: translateY(0) scale(1);
580
+ }
581
+ }
582
+
583
+ .bookmark-toast-leaving {
584
+ animation: toast-exit 300ms var(--ease-in-out) both;
585
+ }
586
+
587
+ @keyframes toast-exit {
588
+ from {
589
+ opacity: 1;
590
+ transform: translateY(0) scale(1);
591
+ }
592
+ to {
593
+ opacity: 0;
594
+ transform: translateY(-10px) scale(0.94);
595
+ }
596
+ }
597
+
598
+ .bookmark-toast-title {
599
+ color: var(--text-primary);
600
+ font-size: 12px;
601
+ font-weight: 600;
602
+ letter-spacing: 0.01em;
603
+ }
604
+
605
+ .bookmark-toast-message {
606
+ margin-top: 4px;
607
+ color: var(--text-secondary);
608
+ font-size: 11.5px;
609
+ line-height: 1.45;
610
+ word-break: break-word;
611
+ }
612
+
613
+
614
+ .highlight-toast {
615
+ border-color: rgba(240, 198, 54, 0.25);
616
+ }
617
+
618
+ /* ═══════════════════════════════════════
619
+ Agent transcript dock — floating panel
620
+ ═══════════════════════════════════════ */
621
+
622
+ .agent-transcript-dock {
623
+ position: absolute;
624
+ right: 14px;
625
+ bottom: 14px;
626
+ width: min(360px, calc(100vw - 28px));
627
+ max-height: min(280px, calc(100vh - 120px));
628
+ display: flex;
629
+ flex-direction: column;
630
+ border: 1px solid rgba(196, 160, 90, 0.14);
631
+ border-radius: var(--radius-lg);
632
+ background: linear-gradient(
633
+ 180deg,
634
+ rgba(34, 34, 38, 0.92),
635
+ rgba(26, 26, 30, 0.96)
636
+ );
637
+ box-shadow:
638
+ 0 4px 16px rgba(0, 0, 0, 0.15),
639
+ 0 20px 50px rgba(0, 0, 0, 0.2);
640
+ backdrop-filter: blur(20px);
641
+ overflow: hidden;
642
+ z-index: 40;
643
+ animation: dock-enter var(--duration-enter) var(--ease-out-expo) both;
644
+ }
645
+
646
+ @keyframes dock-enter {
647
+ from {
648
+ opacity: 0;
649
+ transform: translateY(12px) scale(0.96);
650
+ }
651
+ to {
652
+ opacity: 1;
653
+ transform: translateY(0) scale(1);
654
+ }
655
+ }
656
+
657
+ .agent-transcript-dock.collapsed {
658
+ max-height: none;
659
+ }
660
+
661
+ .agent-transcript-header {
662
+ display: flex;
663
+ align-items: center;
664
+ justify-content: space-between;
665
+ gap: 10px;
666
+ padding: 10px 14px;
667
+ border-bottom: 1px solid rgba(196, 160, 90, 0.08);
668
+ }
669
+
670
+ .agent-transcript-title-row {
671
+ display: flex;
672
+ align-items: center;
673
+ gap: 10px;
674
+ min-width: 0;
675
+ }
676
+
677
+ .agent-transcript-title {
678
+ color: var(--text-primary);
679
+ font-size: 11.5px;
680
+ font-weight: 600;
681
+ letter-spacing: 0.03em;
682
+ text-transform: uppercase;
683
+ }
684
+
685
+ .agent-transcript-live {
686
+ display: inline-flex;
687
+ align-items: center;
688
+ gap: 6px;
689
+ color: var(--text-secondary);
690
+ font-size: 11px;
691
+ }
692
+
693
+ .agent-transcript-live-dot {
694
+ width: 7px;
695
+ height: 7px;
696
+ border-radius: 999px;
697
+ background: #22c55e;
698
+ box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.28);
699
+ animation: agent-status-pulse-green 1.8s ease-out infinite;
700
+ }
701
+
702
+ .agent-transcript-actions {
703
+ display: flex;
704
+ align-items: center;
705
+ gap: 2px;
706
+ }
707
+
708
+ .agent-transcript-icon {
709
+ width: 24px;
710
+ height: 24px;
711
+ display: inline-flex;
712
+ align-items: center;
713
+ justify-content: center;
714
+ border-radius: var(--radius-sm);
715
+ color: var(--text-muted);
716
+ transition:
717
+ background var(--duration-fast) var(--ease-in-out),
718
+ color var(--duration-fast) var(--ease-in-out);
719
+ }
720
+
721
+ .agent-transcript-icon:hover {
722
+ background: rgba(255, 255, 255, 0.06);
723
+ color: var(--text-primary);
724
+ }
725
+
726
+ .agent-transcript-list {
727
+ display: flex;
728
+ flex-direction: column;
729
+ gap: 6px;
730
+ padding: 10px 12px 12px;
731
+ overflow: auto;
732
+ position: relative;
733
+ }
734
+
735
+ .agent-transcript-list.scroll-fade::before {
736
+ background: linear-gradient(to bottom, rgba(30, 30, 34, 0.95), transparent);
737
+ }
738
+
739
+ .agent-transcript-list.scroll-fade::after {
740
+ background: linear-gradient(to top, rgba(24, 24, 28, 0.95), transparent);
741
+ }
742
+
743
+ .agent-transcript-entry {
744
+ padding: 10px 12px;
745
+ border-radius: var(--radius-md);
746
+ border: 1px solid rgba(255, 255, 255, 0.04);
747
+ background: rgba(255, 255, 255, 0.02);
748
+ transition: border-color var(--duration-normal) var(--ease-in-out);
749
+ }
750
+
751
+ .agent-transcript-entry.thinking {
752
+ border-color: rgba(196, 160, 90, 0.14);
753
+ background: rgba(196, 160, 90, 0.03);
754
+ }
755
+
756
+ .agent-transcript-entry.message {
757
+ border-color: rgba(107, 138, 173, 0.14);
758
+ background: rgba(107, 138, 173, 0.03);
759
+ }
760
+
761
+ .agent-transcript-entry.status {
762
+ border-color: rgba(196, 149, 106, 0.16);
763
+ background: rgba(196, 149, 106, 0.03);
764
+ }
765
+
766
+ .agent-transcript-entry.streaming {
767
+ box-shadow: inset 0 0 0 1px rgba(196, 160, 90, 0.06);
768
+ animation: entry-stream-glow 2s ease-in-out infinite;
769
+ }
770
+
771
+ @keyframes entry-stream-glow {
772
+ 0%, 100% {
773
+ border-color: rgba(196, 160, 90, 0.14);
774
+ }
775
+ 50% {
776
+ border-color: rgba(196, 160, 90, 0.28);
777
+ }
778
+ }
779
+
780
+ .agent-transcript-meta {
781
+ display: flex;
782
+ align-items: center;
783
+ justify-content: space-between;
784
+ gap: 8px;
785
+ margin-bottom: 5px;
786
+ }
787
+
788
+ .agent-transcript-badge {
789
+ color: var(--text-muted);
790
+ font-size: 9.5px;
791
+ font-weight: 600;
792
+ text-transform: uppercase;
793
+ letter-spacing: 0.08em;
794
+ }
795
+
796
+ .agent-transcript-time {
797
+ color: var(--text-muted);
798
+ font-size: 10px;
799
+ font-variant-numeric: tabular-nums;
800
+ }
801
+
802
+ .agent-transcript-text {
803
+ color: var(--text-primary);
804
+ font-size: 12px;
805
+ line-height: 1.5;
806
+ white-space: pre-wrap;
807
+ word-break: break-word;
808
+ }
809
+
810
+ @keyframes agent-status-pulse {
811
+ 0% {
812
+ box-shadow: 0 0 0 0 rgba(196, 160, 90, 0.32);
813
+ }
814
+
815
+ 70% {
816
+ box-shadow: 0 0 0 5px rgba(196, 160, 90, 0);
817
+ }
818
+
819
+ 100% {
820
+ box-shadow: 0 0 0 0 rgba(196, 160, 90, 0);
821
+ }
822
+ }
823
+
824
+ @keyframes agent-status-pulse-green {
825
+ 0% {
826
+ box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.36);
827
+ }
828
+
829
+ 70% {
830
+ box-shadow: 0 0 0 5px rgba(34, 197, 94, 0);
831
+ }
832
+
833
+ 100% {
834
+ box-shadow: 0 0 0 0 rgba(34, 197, 94, 0);
835
+ }
836
+ }
837
+ /* ═══════════════════════════════════════
838
+ Command bar overlay — cinematic entrance
839
+ ═══════════════════════════════════════ */
840
+
841
+ .command-bar-overlay {
842
+ position: fixed;
843
+ inset: 0;
844
+ background: rgba(0, 0, 0, 0.55);
845
+ display: flex;
846
+ align-items: flex-start;
847
+ justify-content: center;
848
+ padding: clamp(32px, 10vh, 120px) 16px 24px;
849
+ overflow-y: auto;
850
+ overscroll-behavior: contain;
851
+ z-index: 1000;
852
+ animation: overlay-fade-in 250ms var(--ease-out-expo) both;
853
+ }
854
+
855
+ @keyframes overlay-fade-in {
856
+ from { opacity: 0; }
857
+ to { opacity: 1; }
858
+ }
859
+
860
+ .command-bar {
861
+ width: 580px;
862
+ background: var(--bg-elevated);
863
+ border: 1px solid var(--border-visible);
864
+ border-radius: 14px;
865
+ overflow: hidden;
866
+ box-shadow:
867
+ 0 4px 24px rgba(0, 0, 0, 0.25),
868
+ 0 24px 64px rgba(0, 0, 0, 0.35),
869
+ inset 0 1px 0 rgba(255, 255, 255, 0.04);
870
+ animation: command-bar-enter 350ms var(--ease-out-expo) both;
871
+ }
872
+
873
+ @keyframes command-bar-enter {
874
+ from {
875
+ opacity: 0;
876
+ transform: translateY(-12px) scale(0.97);
877
+ }
878
+ to {
879
+ opacity: 1;
880
+ transform: translateY(0) scale(1);
881
+ }
882
+ }
883
+
884
+ .command-bar form {
885
+ display: flex;
886
+ align-items: center;
887
+ padding: 6px 6px 6px 4px;
888
+ }
889
+
890
+ .command-bar-icon {
891
+ padding: 0 8px 0 12px;
892
+ display: flex;
893
+ align-items: center;
894
+ flex-shrink: 0;
895
+ }
896
+
897
+ .command-bar-input {
898
+ flex: 1;
899
+ height: 48px;
900
+ background: transparent;
901
+ border: none;
902
+ color: var(--text-primary);
903
+ font-size: 15px;
904
+ font-weight: 400;
905
+ padding: 0 12px 0 0;
906
+ letter-spacing: 0.01em;
907
+ }
908
+
909
+ .command-bar-input::placeholder {
910
+ color: var(--text-muted);
911
+ }
912
+
913
+ .command-bar-input:focus {
914
+ border: none;
915
+ box-shadow: none;
916
+ }
917
+
918
+ /* Recent queries section */
919
+ .command-bar-recent {
920
+ padding: 8px 16px 10px;
921
+ border-top: 1px solid var(--border-subtle);
922
+ }
923
+
924
+ .command-bar-recent-label {
925
+ display: block;
926
+ font-size: 10px;
927
+ font-weight: 600;
928
+ text-transform: uppercase;
929
+ letter-spacing: 0.06em;
930
+ color: var(--text-muted);
931
+ margin-bottom: 6px;
932
+ }
933
+
934
+ .command-bar-recent-list {
935
+ display: flex;
936
+ flex-wrap: wrap;
937
+ gap: 5px;
938
+ }
939
+
940
+ .command-bar-recent-item {
941
+ padding: 3px 10px;
942
+ border-radius: 999px;
943
+ background: rgba(255, 255, 255, 0.04);
944
+ border: 1px solid rgba(255, 255, 255, 0.06);
945
+ color: var(--text-secondary);
946
+ font-size: 11.5px;
947
+ max-width: 200px;
948
+ overflow: hidden;
949
+ text-overflow: ellipsis;
950
+ white-space: nowrap;
951
+ transition:
952
+ background var(--duration-fast) var(--ease-in-out),
953
+ color var(--duration-fast) var(--ease-in-out),
954
+ border-color var(--duration-fast) var(--ease-in-out);
955
+ }
956
+
957
+ .command-bar-recent-item:hover {
958
+ background: rgba(196, 160, 90, 0.1);
959
+ border-color: rgba(196, 160, 90, 0.2);
960
+ color: var(--text-primary);
961
+ }
962
+
963
+ .command-bar-hints {
964
+ display: flex;
965
+ gap: 16px;
966
+ padding: 9px 18px;
967
+ border-top: 1px solid var(--border-subtle);
968
+ color: var(--text-muted);
969
+ font-size: 11px;
970
+ letter-spacing: 0.01em;
971
+ }
972
+
973
+ .command-bar-hints kbd {
974
+ background: rgba(255, 255, 255, 0.06);
975
+ border: 1px solid rgba(255, 255, 255, 0.06);
976
+ padding: 1px 6px;
977
+ border-radius: var(--radius-sm);
978
+ font-family: var(--font-ui);
979
+ font-size: 10px;
980
+ font-weight: 500;
981
+ }
982
+
983
+
984
+ /* ═══════════════════════════════════════
985
+ Sidebar — refined panel
986
+ ═══════════════════════════════════════ */
987
+
988
+ .sidebar {
989
+ position: fixed;
990
+ top: 0;
991
+ right: 0;
992
+ bottom: 0;
993
+ background: var(--bg-secondary);
994
+ border-left: 1px solid var(--border-subtle);
995
+ display: flex;
996
+ flex-direction: column;
997
+ z-index: 100;
998
+ animation: sidebar-enter var(--duration-slow) var(--ease-out-expo) both;
999
+ }
1000
+
1001
+ @keyframes sidebar-enter {
1002
+ from {
1003
+ opacity: 0;
1004
+ transform: translateX(16px);
1005
+ }
1006
+ to {
1007
+ opacity: 1;
1008
+ transform: translateX(0);
1009
+ }
1010
+ }
1011
+
1012
+ .sidebar-resize-handle {
1013
+ position: absolute;
1014
+ left: -6px;
1015
+ top: 0;
1016
+ width: 10px;
1017
+ height: 100%;
1018
+ cursor: col-resize;
1019
+ z-index: 101;
1020
+ transition: background var(--duration-normal) var(--ease-in-out);
1021
+ }
1022
+
1023
+ .sidebar-resize-handle::after {
1024
+ content: '';
1025
+ position: absolute;
1026
+ left: 4px;
1027
+ top: 50%;
1028
+ transform: translateY(-50%);
1029
+ width: 2px;
1030
+ height: 32px;
1031
+ border-radius: 999px;
1032
+ background: transparent;
1033
+ transition: background var(--duration-normal) var(--ease-in-out);
1034
+ }
1035
+
1036
+ .sidebar-resize-handle:hover::after,
1037
+ .sidebar-resize-handle.dragging::after {
1038
+ background: var(--accent-primary);
1039
+ }
1040
+
1041
+ .sidebar-resize-handle:hover,
1042
+ .sidebar-resize-handle.dragging {
1043
+ background: rgba(196, 160, 90, 0.08);
1044
+ }
1045
+
1046
+ .sidebar-header {
1047
+ display: grid;
1048
+ grid-template-columns: minmax(0, 1fr) auto;
1049
+ align-items: center;
1050
+ gap: 12px;
1051
+ padding: 26px 16px 14px;
1052
+ border-bottom: 1px solid var(--border-subtle);
1053
+ flex-shrink: 0;
1054
+ }
1055
+
1056
+ .sidebar-brand {
1057
+ display: flex;
1058
+ align-items: center;
1059
+ gap: 10px;
1060
+ min-width: 0;
1061
+ overflow: hidden;
1062
+ }
1063
+
1064
+ .sidebar-header-actions {
1065
+ display: flex;
1066
+ align-items: center;
1067
+ gap: 4px;
1068
+ flex-shrink: 0;
1069
+ justify-self: end;
1070
+ }
1071
+
1072
+ .sidebar-title,
1073
+ .sidebar-brand-text {
1074
+ font-size: 13px;
1075
+ font-weight: 600;
1076
+ color: var(--text-primary);
1077
+ white-space: nowrap;
1078
+ overflow: hidden;
1079
+ text-overflow: ellipsis;
1080
+ letter-spacing: 0.01em;
1081
+ }
1082
+
1083
+ .sidebar-logo {
1084
+ flex-shrink: 0;
1085
+ display: block;
1086
+ width: auto;
1087
+ height: 26px;
1088
+ max-width: 112px;
1089
+ object-fit: contain;
1090
+ }
1091
+
1092
+ .sidebar-clear,
1093
+ .sidebar-close {
1094
+ display: inline-flex;
1095
+ align-items: center;
1096
+ justify-content: center;
1097
+ height: 28px;
1098
+ font-size: 11px;
1099
+ font-weight: 450;
1100
+ line-height: 1;
1101
+ color: var(--text-muted);
1102
+ padding: 0 10px;
1103
+ border-radius: var(--radius-md);
1104
+ transition:
1105
+ background var(--duration-fast) var(--ease-in-out),
1106
+ color var(--duration-fast) var(--ease-in-out);
1107
+ }
1108
+
1109
+ .sidebar-close {
1110
+ width: 32px;
1111
+ height: 32px;
1112
+ padding: 0;
1113
+ flex-shrink: 0;
1114
+ }
1115
+
1116
+ .sidebar-clear {
1117
+ min-width: 46px;
1118
+ }
1119
+
1120
+ .sidebar-close svg {
1121
+ pointer-events: none;
1122
+ }
1123
+
1124
+ .sidebar-clear:hover,
1125
+ .sidebar-close:hover {
1126
+ background: var(--bg-tertiary);
1127
+ color: var(--text-secondary);
1128
+ }
1129
+
1130
+ /* Sidebar section tabs */
1131
+ .sidebar-tabs {
1132
+ display: flex;
1133
+ padding: 0 8px;
1134
+ gap: 0;
1135
+ border-bottom: 1px solid var(--border-subtle);
1136
+ flex-shrink: 0;
1137
+ background: var(--bg-secondary);
1138
+ overflow-x: auto;
1139
+ overflow-y: hidden;
1140
+ scrollbar-width: none;
1141
+ }
1142
+
1143
+ .sidebar-tabs::-webkit-scrollbar {
1144
+ display: none;
1145
+ }
1146
+
1147
+ .sidebar-tab {
1148
+ position: relative;
1149
+ padding: 9px 12px 10px;
1150
+ font-size: 11.5px;
1151
+ white-space: nowrap;
1152
+ flex-shrink: 0;
1153
+ font-weight: 500;
1154
+ letter-spacing: 0.01em;
1155
+ color: var(--text-muted);
1156
+ border-radius: var(--radius-sm) var(--radius-sm) 0 0;
1157
+ display: inline-flex;
1158
+ align-items: center;
1159
+ gap: 6px;
1160
+ transition:
1161
+ color var(--duration-fast) var(--ease-in-out),
1162
+ background var(--duration-fast) var(--ease-in-out);
1163
+ }
1164
+
1165
+ .sidebar-tab:hover {
1166
+ color: var(--text-secondary);
1167
+ background: rgba(255, 255, 255, 0.02);
1168
+ }
1169
+
1170
+ .sidebar-tab.active {
1171
+ color: var(--text-primary);
1172
+ font-weight: 600;
1173
+ }
1174
+
1175
+ .sidebar-tab.active::after {
1176
+ content: '';
1177
+ position: absolute;
1178
+ bottom: -1px;
1179
+ left: 8px;
1180
+ right: 8px;
1181
+ height: 2px;
1182
+ background: var(--accent-primary);
1183
+ border-radius: 2px 2px 0 0;
1184
+ }
1185
+
1186
+ .sidebar-tab-badge {
1187
+ min-width: 16px;
1188
+ height: 16px;
1189
+ padding: 0 4px;
1190
+ border-radius: 999px;
1191
+ background: var(--accent-warm);
1192
+ color: #1a1a1e;
1193
+ font-size: 9px;
1194
+ font-weight: 700;
1195
+ line-height: 16px;
1196
+ text-align: center;
1197
+ animation: badge-enter var(--duration-enter) var(--ease-out-back) both;
1198
+ }
1199
+
1200
+ @keyframes badge-enter {
1201
+ from {
1202
+ opacity: 0;
1203
+ transform: scale(0);
1204
+ }
1205
+ to {
1206
+ opacity: 1;
1207
+ transform: scale(1);
1208
+ }
1209
+ }
1210
+
1211
+ .sidebar-messages {
1212
+ flex: 1;
1213
+ overflow-y: auto;
1214
+ padding: 14px;
1215
+ display: flex;
1216
+ flex-direction: column;
1217
+ gap: 10px;
1218
+ }
1219
+
1220
+ /* Fade-in when tab content switches */
1221
+ .sidebar-messages > section {
1222
+ animation: tab-content-enter var(--duration-normal) var(--ease-out-expo) both;
1223
+ }
1224
+
1225
+ @keyframes tab-content-enter {
1226
+ from {
1227
+ opacity: 0;
1228
+ transform: translateY(6px);
1229
+ }
1230
+ to {
1231
+ opacity: 1;
1232
+ transform: translateY(0);
1233
+ }
1234
+ }
1235
+
1236
+
1237
+ /* ═══════════════════════════════════════
1238
+ Bookmark panel — section card
1239
+ ═══════════════════════════════════════ */
1240
+
1241
+ .bookmark-panel {
1242
+ display: flex;
1243
+ flex-direction: column;
1244
+ gap: 10px;
1245
+ padding: 14px;
1246
+ border: 1px solid var(--border-subtle);
1247
+ background: var(--bg-secondary);
1248
+ border-radius: var(--radius-lg);
1249
+ }
1250
+
1251
+ .bookmark-panel-header,
1252
+ .bookmark-save-controls,
1253
+ .bookmark-folder-create,
1254
+ .bookmark-folder-header,
1255
+ .bookmark-folder-edit,
1256
+ .bookmark-item-footer {
1257
+ display: flex;
1258
+ align-items: center;
1259
+ justify-content: space-between;
1260
+ gap: 8px;
1261
+ }
1262
+
1263
+ .bookmark-panel-title,
1264
+ .bookmark-current-title,
1265
+ .bookmark-folder-name,
1266
+ .bookmark-item-title {
1267
+ font-size: 12px;
1268
+ font-weight: 600;
1269
+ color: var(--text-primary);
1270
+ }
1271
+
1272
+ .bookmark-panel-title {
1273
+ font-size: 13px;
1274
+ letter-spacing: 0.01em;
1275
+ }
1276
+
1277
+ .bookmark-panel-subtitle,
1278
+ .bookmark-current-url,
1279
+ .bookmark-folder-meta,
1280
+ .bookmark-folder-summary,
1281
+ .bookmark-folder-collapsed-hint,
1282
+ .bookmark-empty-folder,
1283
+ .bookmark-item-url,
1284
+ .bookmark-item-time,
1285
+ .bookmark-item-note {
1286
+ font-size: 11px;
1287
+ color: var(--text-secondary);
1288
+ line-height: 1.5;
1289
+ }
1290
+
1291
+ .bookmark-status-pill {
1292
+ border-radius: 999px;
1293
+ padding: 3px 9px;
1294
+ font-size: 10px;
1295
+ font-weight: 600;
1296
+ text-transform: uppercase;
1297
+ letter-spacing: 0.05em;
1298
+ background: rgba(132, 209, 154, 0.12);
1299
+ color: #84d19a;
1300
+ }
1301
+
1302
+ .bookmark-save-card,
1303
+ .bookmark-folder-section {
1304
+ display: flex;
1305
+ flex-direction: column;
1306
+ gap: 8px;
1307
+ padding: 10px;
1308
+ border-radius: var(--radius-md);
1309
+ background: rgba(0, 0, 0, 0.14);
1310
+ border: 1px solid rgba(255, 255, 255, 0.04);
1311
+ }
1312
+
1313
+ .bookmark-save-shell {
1314
+ display: flex;
1315
+ flex-direction: column;
1316
+ gap: 8px;
1317
+ }
1318
+
1319
+ .bookmark-save-toggle {
1320
+ width: 100%;
1321
+ min-height: 42px;
1322
+ padding: 10px 14px;
1323
+ border-radius: var(--radius-md);
1324
+ background: rgba(255, 255, 255, 0.03);
1325
+ border: 1px solid rgba(255, 255, 255, 0.05);
1326
+ display: flex;
1327
+ align-items: center;
1328
+ justify-content: space-between;
1329
+ gap: 10px;
1330
+ text-align: left;
1331
+ transition: background var(--duration-fast) var(--ease-in-out);
1332
+ }
1333
+
1334
+ .bookmark-save-toggle:hover {
1335
+ background: rgba(255, 255, 255, 0.06);
1336
+ }
1337
+
1338
+ .bookmark-save-toggle-copy {
1339
+ display: flex;
1340
+ flex-direction: column;
1341
+ gap: 2px;
1342
+ min-width: 0;
1343
+ }
1344
+
1345
+ .bookmark-save-toggle-title {
1346
+ font-size: 12px;
1347
+ font-weight: 600;
1348
+ color: var(--text-primary);
1349
+ }
1350
+
1351
+ .bookmark-save-toggle-subtitle {
1352
+ font-size: 11px;
1353
+ color: var(--text-muted);
1354
+ line-height: 1.4;
1355
+ }
1356
+
1357
+ .bookmark-save-toggle-caret {
1358
+ flex-shrink: 0;
1359
+ color: var(--text-secondary);
1360
+ transition: transform var(--duration-normal) var(--ease-out-expo);
1361
+ }
1362
+
1363
+ .bookmark-save-toggle-caret.expanded {
1364
+ transform: rotate(180deg);
1365
+ }
1366
+
1367
+ .bookmark-current-title,
1368
+ .bookmark-current-url,
1369
+ .bookmark-item-title,
1370
+ .bookmark-item-url,
1371
+ .bookmark-item-note {
1372
+ overflow-wrap: anywhere;
1373
+ }
1374
+
1375
+ .bookmark-select,
1376
+ .bookmark-input,
1377
+ .bookmark-note-input {
1378
+ width: 100%;
1379
+ min-width: 0;
1380
+ background: var(--bg-secondary);
1381
+ border: 1px solid rgba(255, 255, 255, 0.06);
1382
+ border-radius: var(--radius-md);
1383
+ color: var(--text-primary);
1384
+ font-size: 12px;
1385
+ }
1386
+
1387
+ .bookmark-select,
1388
+ .bookmark-input {
1389
+ height: 32px;
1390
+ }
1391
+
1392
+ .bookmark-input {
1393
+ padding: 0 10px;
1394
+ }
1395
+
1396
+ .bookmark-note-input {
1397
+ resize: vertical;
1398
+ min-height: 58px;
1399
+ padding: 8px 10px;
1400
+ font-family: var(--font-ui);
1401
+ }
1402
+
1403
+ .bookmark-select:focus,
1404
+ .bookmark-input:focus,
1405
+ .bookmark-note-input:focus {
1406
+ outline: none;
1407
+ border-color: rgba(224, 200, 120, 0.45);
1408
+ box-shadow: 0 0 0 2px rgba(224, 200, 120, 0.08);
1409
+ }
1410
+
1411
+ .bookmark-primary-button,
1412
+ .bookmark-secondary-button,
1413
+ .bookmark-ghost-button {
1414
+ height: 32px;
1415
+ padding: 0 14px;
1416
+ border-radius: var(--radius-md);
1417
+ font-size: 12px;
1418
+ font-weight: 500;
1419
+ white-space: nowrap;
1420
+ transition:
1421
+ background var(--duration-fast) var(--ease-in-out),
1422
+ border-color var(--duration-fast) var(--ease-in-out),
1423
+ color var(--duration-fast) var(--ease-in-out),
1424
+ opacity var(--duration-normal) var(--ease-in-out),
1425
+ transform var(--duration-fast) var(--ease-out-expo);
1426
+ }
1427
+
1428
+ .bookmark-primary-button {
1429
+ background: #e0c878;
1430
+ color: #2a2008;
1431
+ }
1432
+
1433
+ .bookmark-primary-button:hover:not(:disabled) {
1434
+ background: #ebd898;
1435
+ }
1436
+
1437
+ .bookmark-primary-button:active:not(:disabled) {
1438
+ transform: scale(0.97);
1439
+ }
1440
+
1441
+ .bookmark-secondary-button,
1442
+ .bookmark-ghost-button {
1443
+ border: 1px solid rgba(255, 255, 255, 0.06);
1444
+ }
1445
+
1446
+ .bookmark-secondary-button {
1447
+ background: rgba(255, 255, 255, 0.06);
1448
+ color: var(--text-primary);
1449
+ }
1450
+
1451
+ .bookmark-secondary-button:hover:not(:disabled),
1452
+ .bookmark-ghost-button:hover:not(:disabled) {
1453
+ background: rgba(255, 255, 255, 0.1);
1454
+ }
1455
+
1456
+ .bookmark-ghost-button {
1457
+ background: rgba(255, 255, 255, 0.02);
1458
+ color: var(--text-secondary);
1459
+ }
1460
+
1461
+ .bookmark-primary-button:disabled,
1462
+ .bookmark-secondary-button:disabled {
1463
+ opacity: 0.4;
1464
+ cursor: default;
1465
+ }
1466
+
1467
+ .bookmark-ghost-button.danger {
1468
+ color: #ff8e8e;
1469
+ }
1470
+
1471
+ .bookmark-ghost-button.danger:hover {
1472
+ background: rgba(255, 142, 142, 0.08);
1473
+ }
1474
+
1475
+ .bookmark-folder-create,
1476
+ .bookmark-folder-edit {
1477
+ align-items: stretch;
1478
+ }
1479
+
1480
+ .bookmark-folder-form-fields {
1481
+ display: flex;
1482
+ flex: 1;
1483
+ flex-direction: column;
1484
+ gap: 8px;
1485
+ }
1486
+
1487
+ .bookmark-folder-list,
1488
+ .bookmark-items {
1489
+ display: flex;
1490
+ flex-direction: column;
1491
+ gap: 6px;
1492
+ }
1493
+
1494
+ .bookmark-folder-header.clickable {
1495
+ cursor: pointer;
1496
+ border-radius: var(--radius-sm);
1497
+ padding: 4px;
1498
+ margin: -4px;
1499
+ transition: background var(--duration-fast) var(--ease-in-out);
1500
+ }
1501
+
1502
+ .bookmark-folder-header.clickable:hover {
1503
+ color: var(--text-primary);
1504
+ background: rgba(255, 255, 255, 0.02);
1505
+ }
1506
+
1507
+ .bookmark-folder-overview {
1508
+ display: flex;
1509
+ align-items: flex-start;
1510
+ gap: 8px;
1511
+ min-width: 0;
1512
+ flex: 1;
1513
+ }
1514
+
1515
+ .bookmark-folder-chevron {
1516
+ width: 14px;
1517
+ height: 14px;
1518
+ display: inline-flex;
1519
+ align-items: center;
1520
+ justify-content: center;
1521
+ flex-shrink: 0;
1522
+ color: #e0c878;
1523
+ font-size: 12px;
1524
+ line-height: 1;
1525
+ transform-origin: center;
1526
+ transform: rotate(0deg);
1527
+ transition: transform var(--duration-normal) var(--ease-out-expo);
1528
+ margin-top: 2px;
1529
+ overflow: hidden;
1530
+ }
1531
+
1532
+ .bookmark-folder-chevron.expanded {
1533
+ transform: rotate(90deg);
1534
+ }
1535
+
1536
+ .bookmark-folder-actions {
1537
+ display: flex;
1538
+ align-items: center;
1539
+ gap: 4px;
1540
+ }
1541
+
1542
+ .bookmark-folder-summary {
1543
+ margin-top: 2px;
1544
+ color: var(--text-muted);
1545
+ }
1546
+
1547
+ .bookmark-folder-collapsed-hint {
1548
+ color: var(--text-muted);
1549
+ padding: 2px 0;
1550
+ }
1551
+
1552
+ .bookmark-empty-folder {
1553
+ padding: 2px 0;
1554
+ color: var(--text-muted);
1555
+ }
1556
+
1557
+ .bookmark-item {
1558
+ display: flex;
1559
+ flex-direction: column;
1560
+ gap: 6px;
1561
+ padding: 10px;
1562
+ border-radius: var(--radius-md);
1563
+ background: rgba(255, 255, 255, 0.02);
1564
+ border: 1px solid rgba(255, 255, 255, 0.04);
1565
+ transition:
1566
+ background var(--duration-normal) var(--ease-out-expo),
1567
+ border-color var(--duration-normal) var(--ease-out-expo),
1568
+ box-shadow var(--duration-normal) var(--ease-out-expo),
1569
+ transform var(--duration-normal) var(--ease-out-expo);
1570
+ }
1571
+
1572
+ .bookmark-item:hover {
1573
+ background: rgba(255, 255, 255, 0.05);
1574
+ border-color: rgba(224, 200, 120, 0.15);
1575
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(224, 200, 120, 0.06);
1576
+ transform: translateY(-1px);
1577
+ }
1578
+
1579
+ .bookmark-item-link {
1580
+ display: flex;
1581
+ flex-direction: column;
1582
+ align-items: flex-start;
1583
+ gap: 2px;
1584
+ text-align: left;
1585
+ position: relative;
1586
+ padding-left: 18px;
1587
+ }
1588
+
1589
+ .bookmark-item-link::before {
1590
+ content: "";
1591
+ position: absolute;
1592
+ left: 0;
1593
+ top: 4px;
1594
+ width: 8px;
1595
+ height: 8px;
1596
+ border-radius: 999px;
1597
+ background: rgba(224, 200, 120, 0.25);
1598
+ transition:
1599
+ background var(--duration-normal) var(--ease-out-expo),
1600
+ box-shadow var(--duration-normal) var(--ease-out-expo);
1601
+ }
1602
+
1603
+ .bookmark-item:hover .bookmark-item-link::before {
1604
+ background: rgba(224, 200, 120, 0.5);
1605
+ box-shadow: 0 0 6px rgba(224, 200, 120, 0.2);
1606
+ }
1607
+
1608
+ .bookmark-item-link:hover .bookmark-item-title {
1609
+ color: #ebd898;
1610
+ }
1611
+
1612
+ .bookmark-item-url {
1613
+ color: var(--text-muted);
1614
+ }
1615
+
1616
+ .bookmark-item-note {
1617
+ color: var(--text-secondary);
1618
+ }
1619
+
1620
+
1621
+ /* ═══════════════════════════════════════
1622
+ Agent supervisor panel
1623
+ ═══════════════════════════════════════ */
1624
+
1625
+ .agent-panel {
1626
+ display: flex;
1627
+ flex-direction: column;
1628
+ gap: 10px;
1629
+ padding: 14px;
1630
+ border: 1px solid var(--border-subtle);
1631
+ background: var(--bg-secondary);
1632
+ border-radius: var(--radius-lg);
1633
+ margin-bottom: 2px;
1634
+ }
1635
+
1636
+ .agent-panel-toggle {
1637
+ width: 100%;
1638
+ min-height: 42px;
1639
+ padding: 10px 14px;
1640
+ border-radius: var(--radius-md);
1641
+ background: rgba(255, 255, 255, 0.03);
1642
+ border: 1px solid rgba(255, 255, 255, 0.05);
1643
+ display: flex;
1644
+ align-items: center;
1645
+ justify-content: space-between;
1646
+ gap: 10px;
1647
+ text-align: left;
1648
+ transition: background var(--duration-fast) var(--ease-in-out);
1649
+ }
1650
+
1651
+ .agent-panel-toggle:hover {
1652
+ background: rgba(255, 255, 255, 0.06);
1653
+ }
1654
+
1655
+ .agent-panel-toggle-copy {
1656
+ display: flex;
1657
+ flex-direction: column;
1658
+ gap: 2px;
1659
+ min-width: 0;
1660
+ }
1661
+
1662
+ .agent-panel-toggle-caret {
1663
+ flex-shrink: 0;
1664
+ color: var(--text-secondary);
1665
+ transition: transform var(--duration-normal) var(--ease-out-expo);
1666
+ }
1667
+
1668
+ .agent-panel-toggle-caret.expanded {
1669
+ transform: rotate(180deg);
1670
+ }
1671
+
1672
+ .agent-panel-body {
1673
+ display: flex;
1674
+ flex-direction: column;
1675
+ gap: 10px;
1676
+ }
1677
+
1678
+ .agent-panel-header,
1679
+ .agent-section-header,
1680
+ .agent-panel-controls,
1681
+ .agent-card.compact,
1682
+ .agent-action-row,
1683
+ .agent-card-actions,
1684
+ .agent-checkpoint-row {
1685
+ display: flex;
1686
+ align-items: center;
1687
+ justify-content: space-between;
1688
+ gap: 8px;
1689
+ }
1690
+
1691
+ .agent-panel-controls,
1692
+ .agent-checkpoint-row {
1693
+ align-items: stretch;
1694
+ }
1695
+
1696
+ .agent-section-header {
1697
+ align-items: center;
1698
+ }
1699
+
1700
+ .agent-panel-title,
1701
+ .agent-section-title,
1702
+ .agent-card-title {
1703
+ font-size: 12px;
1704
+ font-weight: 600;
1705
+ color: var(--text-primary);
1706
+ }
1707
+
1708
+ .agent-panel-title {
1709
+ font-size: 13px;
1710
+ letter-spacing: 0.01em;
1711
+ }
1712
+
1713
+ .agent-panel-subtitle,
1714
+ .agent-card-copy,
1715
+ .agent-muted {
1716
+ font-size: 11px;
1717
+ color: var(--text-secondary);
1718
+ line-height: 1.5;
1719
+ }
1720
+
1721
+ .agent-muted {
1722
+ color: var(--text-muted);
1723
+ }
1724
+
1725
+ .agent-status-pill,
1726
+ .agent-action-status {
1727
+ border-radius: 999px;
1728
+ padding: 3px 9px;
1729
+ font-size: 10px;
1730
+ font-weight: 600;
1731
+ text-transform: uppercase;
1732
+ letter-spacing: 0.05em;
1733
+ transition:
1734
+ background var(--duration-slow) var(--ease-in-out),
1735
+ color var(--duration-slow) var(--ease-in-out);
1736
+ }
1737
+
1738
+ .agent-status-pill {
1739
+ background: rgba(132, 209, 154, 0.12);
1740
+ color: #84d19a;
1741
+ }
1742
+
1743
+ .agent-status-pill.paused {
1744
+ background: rgba(255, 161, 103, 0.12);
1745
+ color: #ffb074;
1746
+ }
1747
+
1748
+ .agent-action-status.running {
1749
+ background: rgba(224, 200, 120, 0.12);
1750
+ color: #e0c878;
1751
+ }
1752
+
1753
+ .agent-action-status.completed {
1754
+ background: rgba(132, 209, 154, 0.12);
1755
+ color: #84d19a;
1756
+ }
1757
+
1758
+ .agent-action-status.failed,
1759
+ .agent-action-status.rejected {
1760
+ background: rgba(255, 142, 142, 0.12);
1761
+ color: #ff8e8e;
1762
+ }
1763
+
1764
+ .agent-action-status.waiting-approval {
1765
+ background: rgba(255, 193, 102, 0.12);
1766
+ color: #ffc166;
1767
+ animation: approval-pulse 2s ease-in-out infinite;
1768
+ }
1769
+
1770
+ @keyframes approval-pulse {
1771
+ 0%, 100% { opacity: 1; }
1772
+ 50% { opacity: 0.7; }
1773
+ }
1774
+
1775
+ .agent-select,
1776
+ .agent-input {
1777
+ flex: 1;
1778
+ min-width: 0;
1779
+ height: 32px;
1780
+ background: var(--bg-secondary);
1781
+ border: 1px solid rgba(255, 255, 255, 0.06);
1782
+ border-radius: var(--radius-md);
1783
+ color: var(--text-primary);
1784
+ font-size: 12px;
1785
+ }
1786
+
1787
+ .agent-input {
1788
+ padding: 0 10px;
1789
+ }
1790
+
1791
+ .dropdown-select {
1792
+ position: relative;
1793
+ min-width: 0;
1794
+ }
1795
+
1796
+ .bookmark-select,
1797
+ .agent-select {
1798
+ flex: 1;
1799
+ }
1800
+
1801
+ .dropdown-select-trigger {
1802
+ width: 100%;
1803
+ height: 32px;
1804
+ padding: 0 10px;
1805
+ border: 1px solid rgba(255, 255, 255, 0.06);
1806
+ border-radius: var(--radius-md);
1807
+ background: var(--bg-secondary);
1808
+ color: var(--text-primary);
1809
+ font-size: 12px;
1810
+ display: inline-flex;
1811
+ align-items: center;
1812
+ justify-content: space-between;
1813
+ gap: 10px;
1814
+ text-align: left;
1815
+ transition:
1816
+ background var(--duration-fast) var(--ease-in-out),
1817
+ border-color var(--duration-fast) var(--ease-in-out);
1818
+ }
1819
+
1820
+ .dropdown-select-trigger:hover {
1821
+ background: var(--bg-elevated);
1822
+ }
1823
+
1824
+ .dropdown-select-trigger:focus-visible {
1825
+ outline: none;
1826
+ border-color: var(--accent-primary);
1827
+ box-shadow: 0 0 0 2px rgba(196, 160, 90, 0.1);
1828
+ }
1829
+
1830
+ .dropdown-select-value {
1831
+ min-width: 0;
1832
+ overflow: hidden;
1833
+ text-overflow: ellipsis;
1834
+ white-space: nowrap;
1835
+ }
1836
+
1837
+ .dropdown-select-caret {
1838
+ flex-shrink: 0;
1839
+ color: var(--text-secondary);
1840
+ transition: transform var(--duration-normal) var(--ease-out-expo);
1841
+ }
1842
+
1843
+ .dropdown-select-caret.open {
1844
+ transform: rotate(180deg);
1845
+ }
1846
+
1847
+ .dropdown-select-menu {
1848
+ position: absolute;
1849
+ top: calc(100% + 4px);
1850
+ left: 0;
1851
+ right: 0;
1852
+ z-index: 30;
1853
+ display: flex;
1854
+ flex-direction: column;
1855
+ gap: 2px;
1856
+ padding: 4px;
1857
+ border-radius: var(--radius-md);
1858
+ background: var(--bg-elevated);
1859
+ border: 1px solid rgba(255, 255, 255, 0.08);
1860
+ box-shadow:
1861
+ 0 4px 16px rgba(0, 0, 0, 0.2),
1862
+ 0 12px 40px rgba(0, 0, 0, 0.16);
1863
+ animation: dropdown-enter 200ms var(--ease-out-expo) both;
1864
+ }
1865
+
1866
+ @keyframes dropdown-enter {
1867
+ from {
1868
+ opacity: 0;
1869
+ transform: translateY(-4px) scale(0.98);
1870
+ }
1871
+ to {
1872
+ opacity: 1;
1873
+ transform: translateY(0) scale(1);
1874
+ }
1875
+ }
1876
+
1877
+ .dropdown-select-option {
1878
+ min-height: 40px;
1879
+ padding: 8px 10px;
1880
+ border-radius: var(--radius-sm);
1881
+ color: var(--text-primary);
1882
+ display: inline-flex;
1883
+ align-items: flex-start;
1884
+ text-align: left;
1885
+ transition: background var(--duration-fast) var(--ease-in-out);
1886
+ }
1887
+
1888
+ .dropdown-select-option-copy {
1889
+ display: flex;
1890
+ flex-direction: column;
1891
+ gap: 2px;
1892
+ }
1893
+
1894
+ .dropdown-select-option-label {
1895
+ font-size: 12px;
1896
+ font-weight: 500;
1897
+ color: var(--text-primary);
1898
+ }
1899
+
1900
+ .dropdown-select-option-description {
1901
+ font-size: 11px;
1902
+ line-height: 1.4;
1903
+ color: var(--text-secondary);
1904
+ }
1905
+
1906
+ .dropdown-select-option:hover,
1907
+ .dropdown-select-option.selected {
1908
+ background: rgba(224, 200, 120, 0.1);
1909
+ }
1910
+
1911
+ .dropdown-select-option.selected {
1912
+ background: rgba(224, 200, 120, 0.14);
1913
+ }
1914
+
1915
+ .agent-select:focus,
1916
+ .agent-input:focus {
1917
+ outline: none;
1918
+ border-color: var(--accent-primary);
1919
+ box-shadow: 0 0 0 2px rgba(196, 160, 90, 0.1);
1920
+ }
1921
+
1922
+ .agent-control-button,
1923
+ .agent-primary-button,
1924
+ .agent-section-toggle {
1925
+ height: 32px;
1926
+ padding: 0 14px;
1927
+ border-radius: var(--radius-md);
1928
+ font-size: 12px;
1929
+ font-weight: 500;
1930
+ white-space: nowrap;
1931
+ transition:
1932
+ background var(--duration-fast) var(--ease-in-out),
1933
+ transform var(--duration-fast) var(--ease-out-expo);
1934
+ }
1935
+
1936
+ .agent-control-button {
1937
+ background: rgba(255, 255, 255, 0.04);
1938
+ color: var(--text-secondary);
1939
+ border: 1px solid rgba(255, 255, 255, 0.05);
1940
+ }
1941
+
1942
+ .agent-control-button:hover,
1943
+ .agent-section-toggle:hover {
1944
+ background: rgba(255, 255, 255, 0.07);
1945
+ }
1946
+
1947
+ .agent-control-button:active,
1948
+ .agent-primary-button:active,
1949
+ .agent-section-toggle:active {
1950
+ transform: scale(0.97);
1951
+ }
1952
+
1953
+ .agent-section-toggle {
1954
+ background: rgba(255, 255, 255, 0.02);
1955
+ color: var(--text-secondary);
1956
+ border: 1px solid rgba(255, 255, 255, 0.05);
1957
+ }
1958
+
1959
+ .agent-primary-button {
1960
+ background: var(--accent-primary);
1961
+ color: white;
1962
+ }
1963
+
1964
+ .agent-primary-button:hover {
1965
+ background: #d4b06a;
1966
+ }
1967
+
1968
+ .agent-card {
1969
+ display: flex;
1970
+ flex-direction: column;
1971
+ gap: 6px;
1972
+ padding: 10px 12px;
1973
+ border-radius: var(--radius-md);
1974
+ background: rgba(0, 0, 0, 0.14);
1975
+ border: 1px solid rgba(255, 255, 255, 0.04);
1976
+ transition: border-color var(--duration-fast) var(--ease-in-out);
1977
+ }
1978
+
1979
+ .agent-card:hover {
1980
+ border-color: rgba(255, 255, 255, 0.07);
1981
+ }
1982
+
1983
+ /* Approval card — escalating urgency */
1984
+ .agent-card-approval {
1985
+ position: relative;
1986
+ overflow: hidden;
1987
+ border-color: rgba(255, 193, 102, 0.2);
1988
+ background: rgba(255, 193, 102, 0.04);
1989
+ animation: approval-escalate 12s ease-in-out forwards;
1990
+ }
1991
+
1992
+ @keyframes approval-escalate {
1993
+ 0% {
1994
+ border-color: rgba(255, 193, 102, 0.2);
1995
+ background: rgba(255, 193, 102, 0.04);
1996
+ box-shadow: none;
1997
+ }
1998
+ 40% {
1999
+ border-color: rgba(255, 193, 102, 0.35);
2000
+ background: rgba(255, 193, 102, 0.06);
2001
+ box-shadow: none;
2002
+ }
2003
+ 100% {
2004
+ border-color: rgba(255, 161, 103, 0.45);
2005
+ background: rgba(255, 161, 103, 0.08);
2006
+ box-shadow: 0 0 16px rgba(255, 161, 103, 0.08);
2007
+ }
2008
+ }
2009
+
2010
+ .agent-card-approval-stripe {
2011
+ position: absolute;
2012
+ top: 0;
2013
+ left: 0;
2014
+ width: 3px;
2015
+ height: 100%;
2016
+ background: var(--accent-warm);
2017
+ opacity: 0.6;
2018
+ animation: stripe-pulse 2s ease-in-out infinite;
2019
+ animation-delay: 10s;
2020
+ }
2021
+
2022
+ @keyframes stripe-pulse {
2023
+ 0%, 100% { opacity: 0.4; }
2024
+ 50% { opacity: 1; }
2025
+ }
2026
+
2027
+ .agent-card.compact {
2028
+ flex-direction: row;
2029
+ }
2030
+
2031
+ .agent-card-copy.success {
2032
+ color: #84d19a;
2033
+ }
2034
+
2035
+ .agent-card-copy.error {
2036
+ color: #ff8e8e;
2037
+ }
2038
+
2039
+
2040
+ /* ═══════════════════════════════════════
2041
+ Chat messages — distinct bubbles
2042
+ ═══════════════════════════════════════ */
2043
+
2044
+ .message {
2045
+ padding: 10px 14px;
2046
+ border-radius: var(--radius-lg);
2047
+ font-size: 13px;
2048
+ line-height: 1.55;
2049
+ max-width: 92%;
2050
+ white-space: pre-wrap;
2051
+ word-break: break-word;
2052
+ animation: message-enter 300ms var(--ease-out-expo) both;
2053
+ }
2054
+
2055
+ @keyframes message-enter {
2056
+ from {
2057
+ opacity: 0;
2058
+ transform: translateY(6px);
2059
+ }
2060
+ to {
2061
+ opacity: 1;
2062
+ transform: translateY(0);
2063
+ }
2064
+ }
2065
+
2066
+ .message-user {
2067
+ background: var(--bg-tertiary);
2068
+ color: var(--text-primary);
2069
+ align-self: flex-end;
2070
+ border-bottom-right-radius: var(--radius-sm);
2071
+ }
2072
+
2073
+ .message-assistant {
2074
+ background: rgba(196, 160, 90, 0.08);
2075
+ color: var(--text-primary);
2076
+ align-self: flex-start;
2077
+ border: 1px solid rgba(196, 160, 90, 0.1);
2078
+ border-bottom-left-radius: var(--radius-sm);
2079
+ }
2080
+
2081
+ .markdown-content {
2082
+ display: block;
2083
+ }
2084
+
2085
+ .markdown-content > :first-child {
2086
+ margin-top: 0;
2087
+ }
2088
+
2089
+ .markdown-content > :last-child {
2090
+ margin-bottom: 0;
2091
+ }
2092
+
2093
+ .markdown-content p,
2094
+ .markdown-content ul,
2095
+ .markdown-content ol,
2096
+ .markdown-content pre,
2097
+ .markdown-content blockquote,
2098
+ .markdown-content h1,
2099
+ .markdown-content h2,
2100
+ .markdown-content h3,
2101
+ .markdown-content h4,
2102
+ .markdown-content h5,
2103
+ .markdown-content h6 {
2104
+ margin: 0 0 10px;
2105
+ }
2106
+
2107
+ .markdown-content h1,
2108
+ .markdown-content h2,
2109
+ .markdown-content h3,
2110
+ .markdown-content h4,
2111
+ .markdown-content h5,
2112
+ .markdown-content h6 {
2113
+ line-height: 1.3;
2114
+ font-weight: 700;
2115
+ color: var(--text-primary);
2116
+ }
2117
+
2118
+ .markdown-content h1 {
2119
+ font-size: 18px;
2120
+ }
2121
+
2122
+ .markdown-content h2 {
2123
+ font-size: 16px;
2124
+ }
2125
+
2126
+ .markdown-content h3 {
2127
+ font-size: 14.5px;
2128
+ }
2129
+
2130
+ .markdown-content ul,
2131
+ .markdown-content ol {
2132
+ padding-left: 18px;
2133
+ }
2134
+
2135
+ .markdown-content li + li {
2136
+ margin-top: 4px;
2137
+ }
2138
+
2139
+ .markdown-content a {
2140
+ color: #e0c878;
2141
+ text-decoration: none;
2142
+ transition: color var(--duration-fast) var(--ease-in-out);
2143
+ }
2144
+
2145
+ .markdown-content a:hover {
2146
+ color: #ebd898;
2147
+ text-decoration: underline;
2148
+ }
2149
+
2150
+ .markdown-content code {
2151
+ font-family: var(--font-mono);
2152
+ font-size: 12px;
2153
+ background: rgba(255, 255, 255, 0.06);
2154
+ border: 1px solid rgba(255, 255, 255, 0.04);
2155
+ border-radius: 5px;
2156
+ padding: 1px 5px;
2157
+ }
2158
+
2159
+ .markdown-content pre {
2160
+ overflow-x: auto;
2161
+ background: rgba(0, 0, 0, 0.22);
2162
+ border: 1px solid rgba(255, 255, 255, 0.04);
2163
+ border-radius: var(--radius-md);
2164
+ padding: 12px 14px;
2165
+ }
2166
+
2167
+ .markdown-content pre code {
2168
+ display: block;
2169
+ padding: 0;
2170
+ border: none;
2171
+ background: transparent;
2172
+ font-size: 12px;
2173
+ line-height: 1.6;
2174
+ white-space: pre;
2175
+ }
2176
+
2177
+ .markdown-content blockquote {
2178
+ border-left: 2px solid rgba(196, 160, 90, 0.4);
2179
+ padding-left: 12px;
2180
+ color: var(--text-secondary);
2181
+ }
2182
+
2183
+ .markdown-content hr {
2184
+ border: none;
2185
+ border-top: 1px solid rgba(255, 255, 255, 0.06);
2186
+ margin: 14px 0;
2187
+ }
2188
+
2189
+
2190
+ /* ═══════════════════════════════════════
2191
+ Thinking & streaming states
2192
+ ═══════════════════════════════════════ */
2193
+
2194
+ .thinking-state {
2195
+ display: flex;
2196
+ align-items: center;
2197
+ gap: 12px;
2198
+ min-width: 220px;
2199
+ }
2200
+
2201
+ .thinking-orb {
2202
+ width: 30px;
2203
+ height: 30px;
2204
+ border-radius: 999px;
2205
+ background: rgba(196, 160, 90, 0.12);
2206
+ border: 1px solid rgba(196, 160, 90, 0.2);
2207
+ display: inline-flex;
2208
+ align-items: center;
2209
+ justify-content: center;
2210
+ gap: 3px;
2211
+ flex-shrink: 0;
2212
+ }
2213
+
2214
+ .thinking-orb span {
2215
+ width: 3.5px;
2216
+ height: 3.5px;
2217
+ border-radius: 999px;
2218
+ background: var(--accent-primary);
2219
+ animation: thinking-bounce 0.9s ease-in-out infinite;
2220
+ }
2221
+
2222
+ .thinking-orb span:nth-child(2) {
2223
+ animation-delay: 0.12s;
2224
+ }
2225
+
2226
+ .thinking-orb span:nth-child(3) {
2227
+ animation-delay: 0.24s;
2228
+ }
2229
+
2230
+ .thinking-copy {
2231
+ display: flex;
2232
+ flex-direction: column;
2233
+ gap: 2px;
2234
+ }
2235
+
2236
+ .thinking-title {
2237
+ font-size: 12px;
2238
+ font-weight: 600;
2239
+ letter-spacing: 0.02em;
2240
+ color: var(--text-primary);
2241
+ }
2242
+
2243
+ .thinking-meta,
2244
+ .streaming-status {
2245
+ display: flex;
2246
+ align-items: center;
2247
+ gap: 6px;
2248
+ font-size: 11px;
2249
+ color: var(--text-muted);
2250
+ }
2251
+
2252
+ .streaming-status {
2253
+ margin-top: 10px;
2254
+ }
2255
+
2256
+ .streaming-pulse {
2257
+ width: 7px;
2258
+ height: 7px;
2259
+ border-radius: 999px;
2260
+ background: var(--accent-primary);
2261
+ box-shadow: 0 0 0 rgba(196, 160, 90, 0.45);
2262
+ animation: streaming-pulse 1.4s ease-out infinite;
2263
+ }
2264
+
2265
+ @keyframes thinking-bounce {
2266
+ 0%,
2267
+ 80%,
2268
+ 100% {
2269
+ transform: translateY(0);
2270
+ opacity: 0.4;
2271
+ }
2272
+ 40% {
2273
+ transform: translateY(-3.5px);
2274
+ opacity: 1;
2275
+ }
2276
+ }
2277
+
2278
+ @keyframes streaming-pulse {
2279
+ 0% {
2280
+ transform: scale(0.85);
2281
+ box-shadow: 0 0 0 0 rgba(196, 160, 90, 0.42);
2282
+ }
2283
+ 70% {
2284
+ transform: scale(1.05);
2285
+ box-shadow: 0 0 0 8px rgba(196, 160, 90, 0);
2286
+ }
2287
+ 100% {
2288
+ transform: scale(0.85);
2289
+ box-shadow: 0 0 0 0 rgba(196, 160, 90, 0);
2290
+ }
2291
+ }
2292
+
2293
+
2294
+ /* ═══════════════════════════════════════
2295
+ Sidebar empty state & input area
2296
+ ═══════════════════════════════════════ */
2297
+
2298
+ .sidebar-empty {
2299
+ display: flex;
2300
+ flex-direction: column;
2301
+ align-items: center;
2302
+ justify-content: center;
2303
+ flex: 1;
2304
+ text-align: center;
2305
+ color: var(--text-muted);
2306
+ padding: 40px 28px;
2307
+ gap: 10px;
2308
+ }
2309
+
2310
+ .sidebar-empty-icon {
2311
+ margin-bottom: 4px;
2312
+ animation: empty-icon-rotate 20s linear infinite;
2313
+ }
2314
+
2315
+ @keyframes empty-icon-rotate {
2316
+ from { transform: rotate(0deg); }
2317
+ to { transform: rotate(360deg); }
2318
+ }
2319
+
2320
+ .sidebar-empty-title {
2321
+ font-size: 13px;
2322
+ font-weight: 600;
2323
+ color: var(--text-secondary);
2324
+ letter-spacing: 0.01em;
2325
+ }
2326
+
2327
+ .sidebar-empty-hint {
2328
+ font-size: 12px;
2329
+ color: var(--text-muted);
2330
+ opacity: 0.55;
2331
+ line-height: 1.55;
2332
+ max-width: 240px;
2333
+ }
2334
+
2335
+ .sidebar-input-area {
2336
+ display: flex;
2337
+ gap: 6px;
2338
+ padding: 14px;
2339
+ border-top: 1px solid var(--border-subtle);
2340
+ flex-shrink: 0;
2341
+ align-items: flex-end;
2342
+ }
2343
+
2344
+ .sidebar-input {
2345
+ flex: 1;
2346
+ background: var(--bg-tertiary);
2347
+ border: 1px solid var(--border-subtle);
2348
+ border-radius: var(--radius-md);
2349
+ color: var(--text-primary);
2350
+ padding: 8px 12px;
2351
+ font-size: 13px;
2352
+ resize: none;
2353
+ font-family: var(--font-ui);
2354
+ line-height: 1.4;
2355
+ }
2356
+
2357
+ .sidebar-input:focus {
2358
+ border-color: var(--accent-primary);
2359
+ outline: none;
2360
+ box-shadow: 0 0 0 2px rgba(196, 160, 90, 0.1);
2361
+ }
2362
+
2363
+ .sidebar-input::placeholder {
2364
+ color: var(--text-muted);
2365
+ }
2366
+
2367
+ .sidebar-send,
2368
+ .sidebar-cancel {
2369
+ height: 34px;
2370
+ padding: 0 16px;
2371
+ border-radius: var(--radius-md);
2372
+ font-size: 12px;
2373
+ font-weight: 500;
2374
+ flex-shrink: 0;
2375
+ transition:
2376
+ background var(--duration-fast) var(--ease-in-out),
2377
+ transform var(--duration-fast) var(--ease-out-expo);
2378
+ }
2379
+
2380
+ .sidebar-send {
2381
+ background: var(--accent-primary);
2382
+ color: white;
2383
+ }
2384
+
2385
+ .sidebar-send:hover:not(:disabled) {
2386
+ background: #d4b06a;
2387
+ }
2388
+
2389
+ .sidebar-send:active:not(:disabled) {
2390
+ transform: scale(0.96);
2391
+ }
2392
+
2393
+ .sidebar-send:disabled {
2394
+ opacity: 0.35;
2395
+ cursor: default;
2396
+ }
2397
+
2398
+ .sidebar-cancel {
2399
+ background: var(--bg-elevated);
2400
+ color: var(--text-secondary);
2401
+ }
2402
+
2403
+ .sidebar-cancel:hover {
2404
+ background: var(--border-visible);
2405
+ }
2406
+
2407
+
2408
+ /* ═══════════════════════════════════════
2409
+ Checkpoint timeline
2410
+ ═══════════════════════════════════════ */
2411
+
2412
+ .checkpoint-timeline {
2413
+ display: flex;
2414
+ flex-direction: column;
2415
+ gap: 0;
2416
+ padding: 4px 0;
2417
+ }
2418
+
2419
+ .checkpoint-timeline-item {
2420
+ display: flex;
2421
+ gap: 12px;
2422
+ position: relative;
2423
+ animation: message-enter 300ms var(--ease-out-expo) both;
2424
+ }
2425
+
2426
+ .checkpoint-timeline-item:nth-child(1) { animation-delay: 0ms; }
2427
+ .checkpoint-timeline-item:nth-child(2) { animation-delay: 40ms; }
2428
+ .checkpoint-timeline-item:nth-child(3) { animation-delay: 80ms; }
2429
+ .checkpoint-timeline-item:nth-child(4) { animation-delay: 120ms; }
2430
+ .checkpoint-timeline-item:nth-child(5) { animation-delay: 160ms; }
2431
+
2432
+ .checkpoint-timeline-rail {
2433
+ display: flex;
2434
+ flex-direction: column;
2435
+ align-items: center;
2436
+ flex-shrink: 0;
2437
+ width: 16px;
2438
+ padding-top: 4px;
2439
+ }
2440
+
2441
+ .checkpoint-timeline-dot {
2442
+ width: 8px;
2443
+ height: 8px;
2444
+ border-radius: 999px;
2445
+ background: rgba(255, 255, 255, 0.15);
2446
+ border: 1.5px solid rgba(255, 255, 255, 0.2);
2447
+ flex-shrink: 0;
2448
+ transition: all var(--duration-normal) var(--ease-out-expo);
2449
+ }
2450
+
2451
+ .checkpoint-timeline-dot.latest {
2452
+ width: 10px;
2453
+ height: 10px;
2454
+ background: var(--accent-primary);
2455
+ border-color: rgba(196, 160, 90, 0.5);
2456
+ box-shadow: 0 0 8px rgba(196, 160, 90, 0.3);
2457
+ }
2458
+
2459
+ .checkpoint-timeline-line {
2460
+ width: 1.5px;
2461
+ flex: 1;
2462
+ min-height: 16px;
2463
+ background: linear-gradient(
2464
+ 180deg,
2465
+ rgba(255, 255, 255, 0.12),
2466
+ rgba(255, 255, 255, 0.04)
2467
+ );
2468
+ margin: 4px 0;
2469
+ }
2470
+
2471
+ .checkpoint-timeline-content {
2472
+ display: flex;
2473
+ flex-direction: column;
2474
+ gap: 4px;
2475
+ padding-bottom: 16px;
2476
+ min-width: 0;
2477
+ flex: 1;
2478
+ }
2479
+
2480
+ .checkpoint-timeline-item:last-child .checkpoint-timeline-content {
2481
+ padding-bottom: 4px;
2482
+ }
2483
+
2484
+ .checkpoint-timeline-name {
2485
+ font-size: 12px;
2486
+ font-weight: 600;
2487
+ color: var(--text-primary);
2488
+ line-height: 1.3;
2489
+ overflow-wrap: anywhere;
2490
+ }
2491
+
2492
+ .checkpoint-timeline-time {
2493
+ font-size: 11px;
2494
+ color: var(--text-muted);
2495
+ line-height: 1.3;
2496
+ }
2497
+
2498
+ .checkpoint-timeline-content .agent-control-button {
2499
+ align-self: flex-start;
2500
+ height: 26px;
2501
+ padding: 0 10px;
2502
+ font-size: 11px;
2503
+ margin-top: 2px;
2504
+ }
2505
+
2506
+
2507
+ /* ═══════════════════════════════════════
2508
+ Responsive — compact layout
2509
+ ═══════════════════════════════════════ */
2510
+
2511
+ @media (max-width: 640px) {
2512
+ .bookmark-panel-header,
2513
+ .bookmark-save-controls,
2514
+ .bookmark-folder-create,
2515
+ .bookmark-folder-header,
2516
+ .bookmark-folder-overview,
2517
+ .bookmark-folder-edit,
2518
+ .bookmark-item-footer,
2519
+ .agent-panel-header,
2520
+ .agent-section-header,
2521
+ .agent-panel-controls,
2522
+ .agent-checkpoint-row,
2523
+ .agent-card.compact,
2524
+ .agent-card-actions,
2525
+ .sidebar-input-area {
2526
+ flex-direction: column;
2527
+ align-items: stretch;
2528
+ }
2529
+
2530
+ .bookmark-folder-actions,
2531
+ .sidebar-header-actions {
2532
+ width: 100%;
2533
+ }
2534
+
2535
+ .bookmark-primary-button,
2536
+ .bookmark-secondary-button,
2537
+ .bookmark-ghost-button,
2538
+ .agent-control-button,
2539
+ .agent-primary-button,
2540
+ .agent-section-toggle,
2541
+ .sidebar-send,
2542
+ .sidebar-cancel {
2543
+ width: 100%;
2544
+ justify-content: center;
2545
+ }
2546
+ }
2547
+ .devtools-panel {
2548
+ width: 100%;
2549
+ height: 100%;
2550
+ display: flex;
2551
+ flex-direction: column;
2552
+ background: var(--bg-primary);
2553
+ color: var(--text-primary);
2554
+ font-family: var(--font-ui);
2555
+ font-size: 12px;
2556
+ overflow: hidden;
2557
+ border-top: 1px solid var(--border-visible);
2558
+ }
2559
+
2560
+ /* Tab bar */
2561
+ .devtools-tabs {
2562
+ display: flex;
2563
+ align-items: center;
2564
+ gap: 0;
2565
+ background: var(--bg-secondary);
2566
+ border-bottom: 1px solid var(--border-subtle);
2567
+ padding: 0 8px;
2568
+ height: 32px;
2569
+ flex-shrink: 0;
2570
+ user-select: none;
2571
+ }
2572
+
2573
+ .devtools-tab {
2574
+ padding: 6px 14px;
2575
+ font-size: 11px;
2576
+ font-weight: 500;
2577
+ color: var(--text-muted);
2578
+ cursor: pointer;
2579
+ border: none;
2580
+ background: none;
2581
+ border-bottom: 2px solid transparent;
2582
+ transition: color var(--duration-fast) var(--ease-in-out),
2583
+ border-color var(--duration-fast) var(--ease-in-out);
2584
+ font-family: var(--font-ui);
2585
+ letter-spacing: 0.02em;
2586
+ }
2587
+
2588
+ .devtools-tab:hover {
2589
+ color: var(--text-secondary);
2590
+ }
2591
+
2592
+ .devtools-tab.active {
2593
+ color: var(--accent-primary);
2594
+ border-bottom-color: var(--accent-primary);
2595
+ }
2596
+
2597
+ .devtools-tab-spacer {
2598
+ flex: 1;
2599
+ }
2600
+
2601
+ .devtools-tab-badge {
2602
+ display: inline-flex;
2603
+ align-items: center;
2604
+ justify-content: center;
2605
+ min-width: 16px;
2606
+ height: 16px;
2607
+ padding: 0 4px;
2608
+ border-radius: 8px;
2609
+ font-size: 10px;
2610
+ font-weight: 600;
2611
+ margin-left: 6px;
2612
+ }
2613
+
2614
+ .devtools-tab-badge.error {
2615
+ background: rgba(192, 112, 112, 0.2);
2616
+ color: var(--error);
2617
+ }
2618
+
2619
+ .devtools-tab-badge.count {
2620
+ background: rgba(196, 160, 90, 0.15);
2621
+ color: var(--accent-primary);
2622
+ }
2623
+
2624
+ .devtools-close-btn {
2625
+ padding: 4px 8px;
2626
+ font-size: 14px;
2627
+ color: var(--text-muted);
2628
+ cursor: pointer;
2629
+ border: none;
2630
+ background: none;
2631
+ border-radius: var(--radius-sm);
2632
+ line-height: 1;
2633
+ font-family: var(--font-ui);
2634
+ }
2635
+
2636
+ .devtools-close-btn:hover {
2637
+ color: var(--text-primary);
2638
+ background: var(--bg-tertiary);
2639
+ }
2640
+
2641
+ /* Content area */
2642
+ .devtools-content {
2643
+ flex: 1;
2644
+ overflow: hidden;
2645
+ display: flex;
2646
+ flex-direction: column;
2647
+ }
2648
+
2649
+ .devtools-empty {
2650
+ display: flex;
2651
+ align-items: center;
2652
+ justify-content: center;
2653
+ height: 100%;
2654
+ color: var(--text-muted);
2655
+ font-size: 12px;
2656
+ font-style: italic;
2657
+ }
2658
+
2659
+ /* Console view */
2660
+ .devtools-console {
2661
+ flex: 1;
2662
+ overflow-y: auto;
2663
+ padding: 4px 0;
2664
+ font-family: var(--font-mono);
2665
+ font-size: 11px;
2666
+ line-height: 1.5;
2667
+ }
2668
+
2669
+ .console-entry {
2670
+ display: flex;
2671
+ padding: 2px 12px;
2672
+ border-bottom: 1px solid var(--border-subtle);
2673
+ gap: 8px;
2674
+ align-items: flex-start;
2675
+ }
2676
+
2677
+ .console-entry:hover {
2678
+ background: var(--bg-secondary);
2679
+ }
2680
+
2681
+ .console-entry.level-error {
2682
+ background: rgba(192, 112, 112, 0.06);
2683
+ border-left: 2px solid var(--error);
2684
+ }
2685
+
2686
+ .console-entry.level-warning {
2687
+ background: rgba(196, 160, 90, 0.06);
2688
+ border-left: 2px solid var(--accent-primary);
2689
+ }
2690
+
2691
+ .console-entry.level-info {
2692
+ border-left: 2px solid var(--accent-secondary);
2693
+ }
2694
+
2695
+ .console-level {
2696
+ font-size: 10px;
2697
+ font-weight: 600;
2698
+ text-transform: uppercase;
2699
+ width: 40px;
2700
+ flex-shrink: 0;
2701
+ padding-top: 1px;
2702
+ }
2703
+
2704
+ .console-level.log { color: var(--text-secondary); }
2705
+ .console-level.info { color: var(--accent-secondary); }
2706
+ .console-level.warning { color: var(--accent-primary); }
2707
+ .console-level.error { color: var(--error); }
2708
+ .console-level.debug { color: var(--text-muted); }
2709
+
2710
+ .console-text {
2711
+ flex: 1;
2712
+ white-space: pre-wrap;
2713
+ word-break: break-word;
2714
+ color: var(--text-primary);
2715
+ }
2716
+
2717
+ .console-source {
2718
+ font-size: 10px;
2719
+ color: var(--text-muted);
2720
+ flex-shrink: 0;
2721
+ max-width: 200px;
2722
+ overflow: hidden;
2723
+ text-overflow: ellipsis;
2724
+ white-space: nowrap;
2725
+ }
2726
+
2727
+ .console-time {
2728
+ font-size: 10px;
2729
+ color: var(--text-muted);
2730
+ flex-shrink: 0;
2731
+ width: 60px;
2732
+ }
2733
+
2734
+ /* Network view */
2735
+ .devtools-network {
2736
+ flex: 1;
2737
+ overflow-y: auto;
2738
+ font-family: var(--font-mono);
2739
+ font-size: 11px;
2740
+ }
2741
+
2742
+ .network-header {
2743
+ display: grid;
2744
+ grid-template-columns: 60px 1fr 80px 60px 80px;
2745
+ gap: 8px;
2746
+ padding: 4px 12px;
2747
+ background: var(--bg-secondary);
2748
+ border-bottom: 1px solid var(--border-visible);
2749
+ font-weight: 600;
2750
+ font-size: 10px;
2751
+ color: var(--text-secondary);
2752
+ text-transform: uppercase;
2753
+ letter-spacing: 0.04em;
2754
+ position: sticky;
2755
+ top: 0;
2756
+ z-index: 1;
2757
+ }
2758
+
2759
+ .network-entry {
2760
+ display: grid;
2761
+ grid-template-columns: 60px 1fr 80px 60px 80px;
2762
+ gap: 8px;
2763
+ padding: 3px 12px;
2764
+ border-bottom: 1px solid var(--border-subtle);
2765
+ align-items: center;
2766
+ }
2767
+
2768
+ .network-entry:hover {
2769
+ background: var(--bg-secondary);
2770
+ }
2771
+
2772
+ .network-entry.error {
2773
+ background: rgba(192, 112, 112, 0.06);
2774
+ }
2775
+
2776
+ .network-method {
2777
+ font-weight: 600;
2778
+ color: var(--accent-warm);
2779
+ font-size: 10px;
2780
+ }
2781
+
2782
+ .network-url {
2783
+ overflow: hidden;
2784
+ text-overflow: ellipsis;
2785
+ white-space: nowrap;
2786
+ color: var(--text-primary);
2787
+ }
2788
+
2789
+ .network-status {
2790
+ font-weight: 500;
2791
+ }
2792
+
2793
+ .network-status.ok { color: var(--accent-secondary); }
2794
+ .network-status.redirect { color: var(--accent-primary); }
2795
+ .network-status.error { color: var(--error); }
2796
+ .network-status.pending { color: var(--text-muted); }
2797
+
2798
+ .network-type {
2799
+ color: var(--text-muted);
2800
+ font-size: 10px;
2801
+ overflow: hidden;
2802
+ text-overflow: ellipsis;
2803
+ }
2804
+
2805
+ .network-duration {
2806
+ color: var(--text-secondary);
2807
+ font-size: 10px;
2808
+ text-align: right;
2809
+ }
2810
+
2811
+ /* Activity view */
2812
+ .devtools-activity {
2813
+ flex: 1;
2814
+ overflow-y: auto;
2815
+ padding: 4px 0;
2816
+ font-size: 11px;
2817
+ }
2818
+
2819
+ .activity-entry {
2820
+ display: flex;
2821
+ padding: 4px 12px;
2822
+ gap: 10px;
2823
+ border-bottom: 1px solid var(--border-subtle);
2824
+ align-items: flex-start;
2825
+ }
2826
+
2827
+ .activity-entry:hover {
2828
+ background: var(--bg-secondary);
2829
+ }
2830
+
2831
+ .activity-tool {
2832
+ font-family: var(--font-mono);
2833
+ font-weight: 600;
2834
+ color: var(--accent-primary);
2835
+ font-size: 11px;
2836
+ flex-shrink: 0;
2837
+ min-width: 180px;
2838
+ }
2839
+
2840
+ .activity-args {
2841
+ font-family: var(--font-mono);
2842
+ color: var(--text-secondary);
2843
+ font-size: 10px;
2844
+ flex: 1;
2845
+ overflow: hidden;
2846
+ text-overflow: ellipsis;
2847
+ white-space: nowrap;
2848
+ }
2849
+
2850
+ .activity-status {
2851
+ font-size: 10px;
2852
+ font-weight: 600;
2853
+ flex-shrink: 0;
2854
+ width: 70px;
2855
+ text-align: right;
2856
+ }
2857
+
2858
+ .activity-status.running { color: var(--accent-primary); }
2859
+ .activity-status.completed { color: var(--accent-secondary); }
2860
+ .activity-status.failed { color: var(--error); }
2861
+
2862
+ .activity-duration {
2863
+ font-family: var(--font-mono);
2864
+ font-size: 10px;
2865
+ color: var(--text-muted);
2866
+ flex-shrink: 0;
2867
+ width: 50px;
2868
+ text-align: right;
2869
+ }
2870
+
2871
+ .activity-time {
2872
+ font-size: 10px;
2873
+ color: var(--text-muted);
2874
+ flex-shrink: 0;
2875
+ width: 60px;
2876
+ }
2877
+
2878
+ /* Export dropdown */
2879
+ .devtools-export-wrap {
2880
+ position: relative;
2881
+ }
2882
+
2883
+ .devtools-close-btn.active {
2884
+ color: var(--accent-primary);
2885
+ background: rgba(196, 160, 90, 0.12);
2886
+ }
2887
+
2888
+ .devtools-export-dropdown {
2889
+ position: absolute;
2890
+ top: calc(100% + 4px);
2891
+ right: 0;
2892
+ width: 220px;
2893
+ background: var(--bg-elevated);
2894
+ border: 1px solid var(--border-visible);
2895
+ border-radius: var(--radius-md);
2896
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
2897
+ padding: 10px;
2898
+ z-index: 100;
2899
+ display: flex;
2900
+ flex-direction: column;
2901
+ gap: 10px;
2902
+ }
2903
+
2904
+ .export-section {
2905
+ display: flex;
2906
+ flex-direction: column;
2907
+ gap: 5px;
2908
+ }
2909
+
2910
+ .export-section-label {
2911
+ font-size: 10px;
2912
+ font-weight: 600;
2913
+ text-transform: uppercase;
2914
+ letter-spacing: 0.06em;
2915
+ color: var(--text-muted);
2916
+ margin-bottom: 2px;
2917
+ }
2918
+
2919
+ .export-checkbox {
2920
+ display: flex;
2921
+ align-items: center;
2922
+ gap: 7px;
2923
+ font-size: 12px;
2924
+ color: var(--text-secondary);
2925
+ cursor: pointer;
2926
+ padding: 2px 0;
2927
+ }
2928
+
2929
+ .export-checkbox:hover {
2930
+ color: var(--text-primary);
2931
+ }
2932
+
2933
+ .export-checkbox input[type="checkbox"] {
2934
+ accent-color: var(--accent-primary);
2935
+ width: 13px;
2936
+ height: 13px;
2937
+ cursor: pointer;
2938
+ flex-shrink: 0;
2939
+ }
2940
+
2941
+ .export-date-btns {
2942
+ display: flex;
2943
+ gap: 4px;
2944
+ }
2945
+
2946
+ .export-date-btn {
2947
+ flex: 1;
2948
+ padding: 4px 8px;
2949
+ font-size: 11px;
2950
+ font-family: var(--font-ui);
2951
+ color: var(--text-secondary);
2952
+ background: var(--bg-tertiary);
2953
+ border: 1px solid var(--border-subtle);
2954
+ border-radius: var(--radius-sm);
2955
+ cursor: pointer;
2956
+ transition: background var(--duration-fast), color var(--duration-fast);
2957
+ }
2958
+
2959
+ .export-date-btn:hover {
2960
+ color: var(--text-primary);
2961
+ background: var(--bg-secondary);
2962
+ }
2963
+
2964
+ .export-date-btn.active {
2965
+ color: var(--accent-primary);
2966
+ background: rgba(196, 160, 90, 0.12);
2967
+ border-color: rgba(196, 160, 90, 0.3);
2968
+ }
2969
+
2970
+ .export-date-inputs {
2971
+ display: flex;
2972
+ flex-direction: column;
2973
+ gap: 5px;
2974
+ margin-top: 2px;
2975
+ }
2976
+
2977
+ .export-date-row {
2978
+ display: flex;
2979
+ align-items: center;
2980
+ gap: 8px;
2981
+ }
2982
+
2983
+ .export-date-label {
2984
+ font-size: 11px;
2985
+ color: var(--text-muted);
2986
+ width: 28px;
2987
+ flex-shrink: 0;
2988
+ }
2989
+
2990
+ .export-date-input {
2991
+ flex: 1;
2992
+ padding: 3px 6px;
2993
+ font-size: 11px;
2994
+ font-family: var(--font-ui);
2995
+ color: var(--text-primary);
2996
+ background: var(--bg-tertiary);
2997
+ border: 1px solid var(--border-subtle);
2998
+ border-radius: var(--radius-sm);
2999
+ outline: none;
3000
+ color-scheme: dark;
3001
+ }
3002
+
3003
+ .export-date-input:focus {
3004
+ border-color: rgba(196, 160, 90, 0.4);
3005
+ }
3006
+
3007
+ .export-submit {
3008
+ width: 100%;
3009
+ padding: 6px 12px;
3010
+ font-size: 12px;
3011
+ font-weight: 600;
3012
+ font-family: var(--font-ui);
3013
+ color: var(--bg-primary);
3014
+ background: var(--accent-primary);
3015
+ border: none;
3016
+ border-radius: var(--radius-sm);
3017
+ cursor: pointer;
3018
+ transition: opacity var(--duration-fast);
3019
+ }
3020
+
3021
+ .export-submit:hover:not(:disabled) {
3022
+ opacity: 0.85;
3023
+ }
3024
+
3025
+ .export-submit:disabled {
3026
+ opacity: 0.35;
3027
+ cursor: default;
3028
+ }
3029
+
3030
+ /* Scrollbar styling */
3031
+ .devtools-console::-webkit-scrollbar,
3032
+ .devtools-network::-webkit-scrollbar,
3033
+ .devtools-activity::-webkit-scrollbar {
3034
+ width: 6px;
3035
+ }
3036
+
3037
+ .devtools-console::-webkit-scrollbar-track,
3038
+ .devtools-network::-webkit-scrollbar-track,
3039
+ .devtools-activity::-webkit-scrollbar-track {
3040
+ background: transparent;
3041
+ }
3042
+
3043
+ .devtools-console::-webkit-scrollbar-thumb,
3044
+ .devtools-network::-webkit-scrollbar-thumb,
3045
+ .devtools-activity::-webkit-scrollbar-thumb {
3046
+ background: var(--bg-elevated);
3047
+ border-radius: 3px;
3048
+ }
3049
+
3050
+ .devtools-console::-webkit-scrollbar-thumb:hover,
3051
+ .devtools-network::-webkit-scrollbar-thumb:hover,
3052
+ .devtools-activity::-webkit-scrollbar-thumb:hover {
3053
+ background: var(--border-visible);
3054
+ }
3055
+ :root {
3056
+ /* Base palette — warm dark, not pure black */
3057
+ --bg-primary: #1a1a1e;
3058
+ --bg-secondary: #222226;
3059
+ --bg-tertiary: #2a2a2e;
3060
+ --bg-elevated: #323236;
3061
+
3062
+ /* Text — never pure white */
3063
+ --text-primary: #d4d4d8;
3064
+ --text-secondary: #a1a1aa;
3065
+ --text-muted: #71717a;
3066
+
3067
+ /* Accents — warm gold palette */
3068
+ --accent-primary: #c4a05a;
3069
+ --accent-secondary: #8aad6b;
3070
+ --accent-warm: #c4956a;
3071
+
3072
+ /* Borders — barely visible */
3073
+ --border-subtle: #2e2e33;
3074
+ --border-visible: #3a3a40;
3075
+
3076
+ /* Functional */
3077
+ --loading-bar: #c4a05a;
3078
+ --error: #c07070;
3079
+ --success: #70a070;
3080
+
3081
+ /* Dimensions */
3082
+ --chrome-height: 110px;
3083
+ --sidebar-width: 340px;
3084
+ --tab-height: 36px;
3085
+ --address-bar-height: 40px;
3086
+ --radius-sm: 4px;
3087
+ --radius-md: 8px;
3088
+ --radius-lg: 12px;
3089
+
3090
+ /* Motion — intentional, varied curves */
3091
+ --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
3092
+ --ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);
3093
+ --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
3094
+ --duration-fast: 120ms;
3095
+ --duration-normal: 200ms;
3096
+ --duration-slow: 320ms;
3097
+ --duration-enter: 400ms;
3098
+
3099
+ /* Typography */
3100
+ --font-ui: 'Inter', -apple-system, system-ui, sans-serif;
3101
+ --font-mono: 'JetBrains Mono', 'Fira Code', monospace;
3102
+ --font-reader: Charter, Georgia, serif;
3103
+ }
3104
+
3105
+ *,
3106
+ *::before,
3107
+ *::after {
3108
+ margin: 0;
3109
+ padding: 0;
3110
+ box-sizing: border-box;
3111
+ }
3112
+
3113
+ html,
3114
+ body,
3115
+ #root {
3116
+ height: 100%;
3117
+ overflow: hidden;
3118
+ background: transparent;
3119
+ color: var(--text-primary);
3120
+ font-family: var(--font-ui);
3121
+ font-size: 13px;
3122
+ -webkit-font-smoothing: antialiased;
3123
+ text-rendering: optimizeLegibility;
3124
+ user-select: none;
3125
+ }
3126
+
3127
+ .app {
3128
+ position: relative;
3129
+ height: 100%;
3130
+ }
3131
+
3132
+ ::-webkit-scrollbar {
3133
+ width: 5px;
3134
+ }
3135
+
3136
+ ::-webkit-scrollbar-track {
3137
+ background: transparent;
3138
+ }
3139
+
3140
+ ::-webkit-scrollbar-thumb {
3141
+ background: rgba(255, 255, 255, 0.08);
3142
+ border-radius: 999px;
3143
+ }
3144
+
3145
+ ::-webkit-scrollbar-thumb:hover {
3146
+ background: rgba(255, 255, 255, 0.14);
3147
+ }
3148
+
3149
+ input,
3150
+ textarea {
3151
+ font-family: var(--font-ui);
3152
+ color: var(--text-primary);
3153
+ background: var(--bg-tertiary);
3154
+ border: 1px solid var(--border-subtle);
3155
+ border-radius: var(--radius-sm);
3156
+ outline: none;
3157
+ font-size: 13px;
3158
+ transition:
3159
+ border-color var(--duration-normal) var(--ease-in-out),
3160
+ box-shadow var(--duration-normal) var(--ease-in-out);
3161
+ }
3162
+
3163
+ input:focus,
3164
+ textarea:focus {
3165
+ border-color: var(--accent-primary);
3166
+ box-shadow: 0 0 0 2px rgba(196, 160, 90, 0.12);
3167
+ }
3168
+
3169
+ button {
3170
+ font-family: var(--font-ui);
3171
+ cursor: pointer;
3172
+ border: none;
3173
+ background: none;
3174
+ color: var(--text-secondary);
3175
+ font-size: 13px;
3176
+ transition:
3177
+ color var(--duration-fast) var(--ease-in-out),
3178
+ background var(--duration-fast) var(--ease-in-out);
3179
+ }
3180
+
3181
+ button:hover {
3182
+ color: var(--text-primary);
3183
+ }
3184
+
3185
+ button:active:not(:disabled) {
3186
+ transform: scale(0.97);
3187
+ }
3188
+
3189
+ /* Focus mode: hide chrome */
3190
+
3191
+ .app.focus-mode .chrome {
3192
+ display: none;
3193
+ }
3194
+
3195
+ /* ═══════════════════════════════════════
3196
+ Loading progress bar
3197
+ ═══════════════════════════════════════ */
3198
+
3199
+ .chrome {
3200
+ position: relative;
3201
+ }
3202
+
3203
+ .loading-bar {
3204
+ position: absolute;
3205
+ bottom: 0;
3206
+ left: 0;
3207
+ right: 0;
3208
+ height: 2px;
3209
+ background: linear-gradient(
3210
+ 90deg,
3211
+ transparent,
3212
+ var(--accent-primary) 30%,
3213
+ var(--accent-secondary) 70%,
3214
+ transparent
3215
+ );
3216
+ background-size: 300% 100%;
3217
+ animation:
3218
+ loading-bar-enter var(--duration-normal) var(--ease-out-expo) both,
3219
+ loading-bar-shimmer 1.6s ease-in-out infinite;
3220
+ z-index: 10;
3221
+ }
3222
+
3223
+ @keyframes loading-bar-enter {
3224
+ from {
3225
+ opacity: 0;
3226
+ transform: scaleX(0.3);
3227
+ transform-origin: left;
3228
+ }
3229
+ to {
3230
+ opacity: 1;
3231
+ transform: scaleX(1);
3232
+ transform-origin: left;
3233
+ }
3234
+ }
3235
+
3236
+ @keyframes loading-bar-shimmer {
3237
+ 0% {
3238
+ background-position: 100% 0;
3239
+ }
3240
+ 100% {
3241
+ background-position: -100% 0;
3242
+ }
3243
+ }
3244
+
3245
+ /* ═══════════════════════════════════════
3246
+ Scroll fade indicators
3247
+ ═══════════════════════════════════════ */
3248
+
3249
+ .scroll-fade {
3250
+ position: relative;
3251
+ }
3252
+
3253
+ .scroll-fade::before,
3254
+ .scroll-fade::after {
3255
+ content: '';
3256
+ position: absolute;
3257
+ left: 0;
3258
+ right: 5px;
3259
+ height: 24px;
3260
+ pointer-events: none;
3261
+ z-index: 2;
3262
+ opacity: 0;
3263
+ transition: opacity var(--duration-normal) var(--ease-in-out);
3264
+ }
3265
+
3266
+ .scroll-fade::before {
3267
+ top: 0;
3268
+ background: linear-gradient(
3269
+ to bottom,
3270
+ var(--bg-secondary),
3271
+ transparent
3272
+ );
3273
+ }
3274
+
3275
+ .scroll-fade::after {
3276
+ bottom: 0;
3277
+ background: linear-gradient(
3278
+ to top,
3279
+ var(--bg-secondary),
3280
+ transparent
3281
+ );
3282
+ }
3283
+
3284
+ .scroll-fade.fade-top::before {
3285
+ opacity: 1;
3286
+ }
3287
+
3288
+ .scroll-fade.fade-bottom::after {
3289
+ opacity: 1;
3290
+ }
3291
+
3292
+ /* ═══════════════════════════════════════
3293
+ Custom tooltips — CSS-only via [data-tooltip]
3294
+ ═══════════════════════════════════════ */
3295
+
3296
+ [data-tooltip] {
3297
+ position: relative;
3298
+ }
3299
+
3300
+ [data-tooltip]::after {
3301
+ content: attr(data-tooltip);
3302
+ position: absolute;
3303
+ bottom: calc(100% + 6px);
3304
+ left: 50%;
3305
+ transform: translateX(-50%) translateY(4px);
3306
+ padding: 4px 10px;
3307
+ border-radius: var(--radius-md);
3308
+ background: var(--bg-elevated);
3309
+ border: 1px solid var(--border-visible);
3310
+ color: var(--text-primary);
3311
+ font-size: 11px;
3312
+ font-weight: 450;
3313
+ line-height: 1.4;
3314
+ white-space: nowrap;
3315
+ pointer-events: none;
3316
+ opacity: 0;
3317
+ z-index: 9999;
3318
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
3319
+ transition:
3320
+ opacity var(--duration-normal) var(--ease-in-out),
3321
+ transform var(--duration-normal) var(--ease-out-expo);
3322
+ }
3323
+
3324
+ [data-tooltip]:hover::after {
3325
+ opacity: 1;
3326
+ transform: translateX(-50%) translateY(0);
3327
+ transition-delay: 400ms;
3328
+ }
3329
+
3330
+ /* Position variant — tooltip below */
3331
+
3332
+ [data-tooltip-pos="bottom"]::after {
3333
+ bottom: auto;
3334
+ top: calc(100% + 6px);
3335
+ transform: translateX(-50%) translateY(-4px);
3336
+ }
3337
+
3338
+ [data-tooltip-pos="bottom"]:hover::after {
3339
+ transform: translateX(-50%) translateY(0);
3340
+ }
3341
+
3342
+ /* Position variant — tooltip to the left */
3343
+
3344
+ [data-tooltip-pos="left"]::after {
3345
+ bottom: auto;
3346
+ left: auto;
3347
+ right: calc(100% + 6px);
3348
+ top: 50%;
3349
+ transform: translateY(-50%) translateX(4px);
3350
+ }
3351
+
3352
+ [data-tooltip-pos="left"]:hover::after {
3353
+ transform: translateY(-50%) translateX(0);
3354
+ }