create-byan-agent 2.8.1 → 2.9.1

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,1665 @@
1
+ /* ============================================================
2
+ BYAN Chat — Dark Theme Stylesheet
3
+ Matches existing WebUI design tokens.
4
+ ============================================================ */
5
+
6
+ :root {
7
+ --bg: #0f172a;
8
+ --bg-deep: #080e1e;
9
+ --surface: #1e293b;
10
+ --surface-hover: #263347;
11
+ --surface-active: #334155;
12
+ --border: #334155;
13
+ --border-light: #475569;
14
+ --text: #e2e8f0;
15
+ --text-muted: #94a3b8;
16
+ --text-dim: #64748b;
17
+ --accent: #3b82f6;
18
+ --accent-hover: #2563eb;
19
+ --accent-glow: rgba(59, 130, 246, 0.15);
20
+ --success: #22c55e;
21
+ --warning: #eab308;
22
+ --error: #ef4444;
23
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
24
+ --font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', Consolas, monospace;
25
+ --radius: 8px;
26
+ --radius-lg: 12px;
27
+ --radius-sm: 4px;
28
+ --shadow: 0 4px 24px rgba(0, 0, 0, 0.3);
29
+ --shadow-lg: 0 8px 48px rgba(0, 0, 0, 0.5);
30
+ --transition: 200ms ease;
31
+ --sidebar-width: 300px;
32
+ --topbar-height: 56px;
33
+ --split-width: 380px;
34
+ }
35
+
36
+ /* ---- Reset ---- */
37
+ *, *::before, *::after {
38
+ box-sizing: border-box;
39
+ margin: 0;
40
+ padding: 0;
41
+ }
42
+
43
+ html {
44
+ font-size: 16px;
45
+ scroll-behavior: smooth;
46
+ }
47
+
48
+ body {
49
+ font-family: var(--font-sans);
50
+ background: var(--bg);
51
+ color: var(--text);
52
+ height: 100vh;
53
+ overflow: hidden;
54
+ display: flex;
55
+ flex-direction: column;
56
+ line-height: 1.6;
57
+ -webkit-font-smoothing: antialiased;
58
+ -moz-osx-font-smoothing: grayscale;
59
+ }
60
+
61
+ /* ---- Utility ---- */
62
+ .hidden { display: none !important; }
63
+ .sr-only {
64
+ position: absolute;
65
+ width: 1px;
66
+ height: 1px;
67
+ padding: 0;
68
+ margin: -1px;
69
+ overflow: hidden;
70
+ clip: rect(0,0,0,0);
71
+ border: 0;
72
+ }
73
+
74
+ /* ---- Scrollbar ---- */
75
+ ::-webkit-scrollbar {
76
+ width: 6px;
77
+ height: 6px;
78
+ }
79
+ ::-webkit-scrollbar-track {
80
+ background: transparent;
81
+ }
82
+ ::-webkit-scrollbar-thumb {
83
+ background: var(--border);
84
+ border-radius: 3px;
85
+ }
86
+ ::-webkit-scrollbar-thumb:hover {
87
+ background: var(--border-light);
88
+ }
89
+
90
+ /* ============================================================
91
+ TOP BAR
92
+ ============================================================ */
93
+ .topbar {
94
+ position: fixed;
95
+ top: 0;
96
+ left: 0;
97
+ right: 0;
98
+ z-index: 100;
99
+ height: var(--topbar-height);
100
+ background: var(--bg-deep);
101
+ border-bottom: 1px solid var(--border);
102
+ display: flex;
103
+ align-items: center;
104
+ justify-content: space-between;
105
+ padding: 0 1rem;
106
+ gap: 1rem;
107
+ }
108
+
109
+ .topbar-left {
110
+ display: flex;
111
+ align-items: center;
112
+ gap: 0.75rem;
113
+ flex-shrink: 0;
114
+ }
115
+
116
+ .topbar-left .logo {
117
+ font-size: 1.25rem;
118
+ font-weight: 800;
119
+ letter-spacing: 0.12em;
120
+ color: var(--accent);
121
+ line-height: 1;
122
+ }
123
+
124
+ .topbar-left .label {
125
+ font-size: 0.8rem;
126
+ color: var(--text-muted);
127
+ font-weight: 500;
128
+ padding: 2px 8px;
129
+ background: var(--surface);
130
+ border-radius: 999px;
131
+ line-height: 1.4;
132
+ }
133
+
134
+ .topbar-center {
135
+ display: flex;
136
+ align-items: center;
137
+ gap: 1rem;
138
+ flex: 1;
139
+ justify-content: center;
140
+ min-width: 0;
141
+ }
142
+
143
+ .agent-indicator {
144
+ display: flex;
145
+ align-items: center;
146
+ gap: 0.5rem;
147
+ padding: 4px 12px;
148
+ background: var(--surface);
149
+ border: 1px solid var(--border);
150
+ border-radius: var(--radius);
151
+ font-size: 0.85rem;
152
+ max-width: 200px;
153
+ overflow: hidden;
154
+ white-space: nowrap;
155
+ text-overflow: ellipsis;
156
+ cursor: default;
157
+ }
158
+
159
+ .agent-icon {
160
+ font-size: 1rem;
161
+ line-height: 1;
162
+ }
163
+
164
+ .agent-name {
165
+ color: var(--text-muted);
166
+ overflow: hidden;
167
+ text-overflow: ellipsis;
168
+ }
169
+
170
+ .agent-indicator.active .agent-name {
171
+ color: var(--text);
172
+ }
173
+
174
+ .model-select {
175
+ background: var(--surface);
176
+ color: var(--text);
177
+ border: 1px solid var(--border);
178
+ border-radius: var(--radius);
179
+ padding: 6px 12px;
180
+ font-size: 0.8rem;
181
+ font-family: var(--font-sans);
182
+ cursor: pointer;
183
+ outline: none;
184
+ transition: border-color var(--transition);
185
+ appearance: none;
186
+ -webkit-appearance: none;
187
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M3 4.5L6 8l3-3.5H3z'/%3E%3C/svg%3E");
188
+ background-repeat: no-repeat;
189
+ background-position: right 8px center;
190
+ padding-right: 28px;
191
+ }
192
+
193
+ .model-select:hover,
194
+ .model-select:focus {
195
+ border-color: var(--accent);
196
+ }
197
+
198
+ .cli-select {
199
+ background: var(--surface);
200
+ color: var(--text);
201
+ border: 1px solid var(--border);
202
+ border-radius: var(--radius);
203
+ padding: 6px 12px;
204
+ font-size: 0.8rem;
205
+ font-family: var(--font-sans);
206
+ cursor: pointer;
207
+ outline: none;
208
+ transition: border-color var(--transition);
209
+ appearance: none;
210
+ -webkit-appearance: none;
211
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M3 4.5L6 8l3-3.5H3z'/%3E%3C/svg%3E");
212
+ background-repeat: no-repeat;
213
+ background-position: right 8px center;
214
+ padding-right: 28px;
215
+ }
216
+
217
+ .cli-select:hover,
218
+ .cli-select:focus {
219
+ border-color: var(--accent);
220
+ }
221
+
222
+ .cli-select option:disabled {
223
+ color: var(--text-dim);
224
+ }
225
+
226
+ .topbar-right {
227
+ display: flex;
228
+ align-items: center;
229
+ gap: 0.25rem;
230
+ flex-shrink: 0;
231
+ }
232
+
233
+ /* ---- Icon Buttons ---- */
234
+ .icon-btn {
235
+ display: inline-flex;
236
+ align-items: center;
237
+ justify-content: center;
238
+ width: 36px;
239
+ height: 36px;
240
+ border: none;
241
+ background: transparent;
242
+ color: var(--text-muted);
243
+ border-radius: var(--radius);
244
+ cursor: pointer;
245
+ font-size: 1.1rem;
246
+ transition: all var(--transition);
247
+ flex-shrink: 0;
248
+ }
249
+
250
+ .icon-btn:hover {
251
+ background: var(--surface-hover);
252
+ color: var(--text);
253
+ }
254
+
255
+ .icon-btn:active {
256
+ background: var(--surface-active);
257
+ }
258
+
259
+ .icon-btn:focus-visible {
260
+ outline: 2px solid var(--accent);
261
+ outline-offset: 2px;
262
+ }
263
+
264
+ .sidebar-toggle {
265
+ display: none;
266
+ }
267
+
268
+ /* ============================================================
269
+ MAIN LAYOUT
270
+ ============================================================ */
271
+ .main-layout {
272
+ display: flex;
273
+ margin-top: var(--topbar-height);
274
+ height: calc(100vh - var(--topbar-height));
275
+ overflow: hidden;
276
+ }
277
+
278
+ /* ============================================================
279
+ LEFT SIDEBAR
280
+ ============================================================ */
281
+ .sidebar {
282
+ width: var(--sidebar-width);
283
+ min-width: var(--sidebar-width);
284
+ background: var(--bg-deep);
285
+ border-right: 1px solid var(--border);
286
+ display: flex;
287
+ flex-direction: column;
288
+ overflow: hidden;
289
+ transition: transform 0.3s ease, opacity 0.3s ease;
290
+ }
291
+
292
+ .sidebar-header {
293
+ display: flex;
294
+ align-items: center;
295
+ justify-content: space-between;
296
+ padding: 1rem 1rem 0.75rem;
297
+ flex-shrink: 0;
298
+ }
299
+
300
+ .sidebar-header h2 {
301
+ font-size: 0.9rem;
302
+ font-weight: 600;
303
+ text-transform: uppercase;
304
+ letter-spacing: 0.08em;
305
+ color: var(--text-muted);
306
+ }
307
+
308
+ .sidebar-header .icon-btn {
309
+ font-size: 1.3rem;
310
+ font-weight: 700;
311
+ }
312
+
313
+ /* CLI Status */
314
+ .cli-status {
315
+ padding: 0 1rem 0.75rem;
316
+ display: flex;
317
+ flex-wrap: wrap;
318
+ gap: 0.5rem;
319
+ flex-shrink: 0;
320
+ }
321
+
322
+ .cli-item {
323
+ display: flex;
324
+ align-items: center;
325
+ gap: 0.375rem;
326
+ font-size: 0.75rem;
327
+ color: var(--text-dim);
328
+ padding: 3px 8px;
329
+ background: var(--surface);
330
+ border-radius: 999px;
331
+ cursor: pointer;
332
+ transition: all var(--transition);
333
+ border: 1px solid transparent;
334
+ }
335
+
336
+ .cli-item:hover {
337
+ border-color: var(--border);
338
+ }
339
+
340
+ .cli-item.available {
341
+ color: var(--text-muted);
342
+ }
343
+
344
+ .cli-item.active {
345
+ color: var(--accent);
346
+ border-color: var(--accent);
347
+ background: var(--accent-glow);
348
+ }
349
+
350
+ .cli-dot {
351
+ width: 6px;
352
+ height: 6px;
353
+ border-radius: 50%;
354
+ background: var(--text-dim);
355
+ flex-shrink: 0;
356
+ }
357
+
358
+ .cli-item.available .cli-dot {
359
+ background: var(--success);
360
+ }
361
+
362
+ .cli-item.active .cli-dot {
363
+ background: var(--accent);
364
+ box-shadow: 0 0 6px var(--accent);
365
+ }
366
+
367
+ /* Agent List */
368
+ .agent-list {
369
+ flex: 1;
370
+ overflow-y: auto;
371
+ padding: 0 0.5rem;
372
+ }
373
+
374
+ .agent-group {
375
+ margin-bottom: 0.5rem;
376
+ }
377
+
378
+ .agent-group-title {
379
+ font-size: 0.7rem;
380
+ font-weight: 600;
381
+ text-transform: uppercase;
382
+ letter-spacing: 0.1em;
383
+ color: var(--text-dim);
384
+ padding: 0.5rem;
385
+ position: sticky;
386
+ top: 0;
387
+ background: var(--bg-deep);
388
+ z-index: 1;
389
+ }
390
+
391
+ .agent-card {
392
+ display: flex;
393
+ align-items: center;
394
+ gap: 0.625rem;
395
+ padding: 0.5rem;
396
+ border-radius: var(--radius);
397
+ cursor: pointer;
398
+ transition: all var(--transition);
399
+ border: 1px solid transparent;
400
+ }
401
+
402
+ .agent-card:hover {
403
+ background: var(--surface-hover);
404
+ }
405
+
406
+ .agent-card.active {
407
+ background: var(--accent-glow);
408
+ border-color: var(--accent);
409
+ }
410
+
411
+ .agent-card:focus-visible {
412
+ outline: 2px solid var(--accent);
413
+ outline-offset: -2px;
414
+ }
415
+
416
+ .agent-card-icon {
417
+ font-size: 1.25rem;
418
+ width: 32px;
419
+ height: 32px;
420
+ display: flex;
421
+ align-items: center;
422
+ justify-content: center;
423
+ background: var(--surface);
424
+ border-radius: var(--radius);
425
+ flex-shrink: 0;
426
+ }
427
+
428
+ .agent-card-info {
429
+ min-width: 0;
430
+ flex: 1;
431
+ }
432
+
433
+ .agent-card-name {
434
+ font-size: 0.825rem;
435
+ font-weight: 500;
436
+ color: var(--text);
437
+ white-space: nowrap;
438
+ overflow: hidden;
439
+ text-overflow: ellipsis;
440
+ }
441
+
442
+ .agent-card-desc {
443
+ font-size: 0.7rem;
444
+ color: var(--text-dim);
445
+ white-space: nowrap;
446
+ overflow: hidden;
447
+ text-overflow: ellipsis;
448
+ }
449
+
450
+ .agent-card-badge {
451
+ font-size: 0.6rem;
452
+ padding: 1px 6px;
453
+ border-radius: 999px;
454
+ background: var(--surface-active);
455
+ color: var(--text-muted);
456
+ flex-shrink: 0;
457
+ text-transform: uppercase;
458
+ letter-spacing: 0.05em;
459
+ }
460
+
461
+ /* Session History */
462
+ .session-history {
463
+ border-top: 1px solid var(--border);
464
+ padding: 0.75rem 0.5rem;
465
+ flex-shrink: 0;
466
+ max-height: 200px;
467
+ overflow-y: auto;
468
+ }
469
+
470
+ .session-history h3 {
471
+ font-size: 0.7rem;
472
+ font-weight: 600;
473
+ text-transform: uppercase;
474
+ letter-spacing: 0.1em;
475
+ color: var(--text-dim);
476
+ padding: 0 0.5rem 0.5rem;
477
+ }
478
+
479
+ .session-item {
480
+ display: flex;
481
+ align-items: center;
482
+ justify-content: space-between;
483
+ padding: 0.4rem 0.5rem;
484
+ border-radius: var(--radius-sm);
485
+ cursor: pointer;
486
+ transition: background var(--transition);
487
+ gap: 0.5rem;
488
+ }
489
+
490
+ .session-item:hover {
491
+ background: var(--surface-hover);
492
+ }
493
+
494
+ .session-item.active {
495
+ background: var(--accent-glow);
496
+ }
497
+
498
+ .session-item-title {
499
+ font-size: 0.8rem;
500
+ color: var(--text-muted);
501
+ overflow: hidden;
502
+ text-overflow: ellipsis;
503
+ white-space: nowrap;
504
+ flex: 1;
505
+ min-width: 0;
506
+ }
507
+
508
+ .session-item-time {
509
+ font-size: 0.65rem;
510
+ color: var(--text-dim);
511
+ flex-shrink: 0;
512
+ }
513
+
514
+ .session-item-delete {
515
+ display: none;
516
+ font-size: 0.7rem;
517
+ color: var(--text-dim);
518
+ background: none;
519
+ border: none;
520
+ cursor: pointer;
521
+ padding: 2px 4px;
522
+ border-radius: var(--radius-sm);
523
+ flex-shrink: 0;
524
+ }
525
+
526
+ .session-item:hover .session-item-delete {
527
+ display: block;
528
+ }
529
+
530
+ .session-item-delete:hover {
531
+ color: var(--error);
532
+ background: rgba(239, 68, 68, 0.1);
533
+ }
534
+
535
+ /* Sidebar overlay for mobile */
536
+ .sidebar-overlay {
537
+ position: fixed;
538
+ inset: 0;
539
+ background: rgba(0, 0, 0, 0.5);
540
+ z-index: 49;
541
+ backdrop-filter: blur(2px);
542
+ }
543
+
544
+ /* ============================================================
545
+ CHAT AREA
546
+ ============================================================ */
547
+ .chat-area {
548
+ flex: 1;
549
+ display: flex;
550
+ flex-direction: column;
551
+ min-width: 0;
552
+ position: relative;
553
+ background: var(--bg);
554
+ }
555
+
556
+ /* ---- Messages ---- */
557
+ .messages {
558
+ flex: 1;
559
+ overflow-y: auto;
560
+ padding: 1.5rem 1rem;
561
+ display: flex;
562
+ flex-direction: column;
563
+ gap: 0.25rem;
564
+ scroll-behavior: smooth;
565
+ }
566
+
567
+ /* Welcome Screen */
568
+ .welcome-screen {
569
+ display: flex;
570
+ flex-direction: column;
571
+ align-items: center;
572
+ justify-content: center;
573
+ flex: 1;
574
+ text-align: center;
575
+ padding: 2rem;
576
+ min-height: 300px;
577
+ }
578
+
579
+ .welcome-screen h2 {
580
+ font-size: 2rem;
581
+ font-weight: 700;
582
+ color: var(--text);
583
+ margin-bottom: 0.5rem;
584
+ letter-spacing: -0.02em;
585
+ }
586
+
587
+ .welcome-screen > p {
588
+ color: var(--text-muted);
589
+ font-size: 0.95rem;
590
+ margin-bottom: 2rem;
591
+ }
592
+
593
+ .quick-agents {
594
+ display: grid;
595
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
596
+ gap: 0.75rem;
597
+ max-width: 720px;
598
+ width: 100%;
599
+ }
600
+
601
+ .quick-agent-card {
602
+ display: flex;
603
+ flex-direction: column;
604
+ align-items: center;
605
+ gap: 0.5rem;
606
+ padding: 1.25rem 1rem;
607
+ background: var(--surface);
608
+ border: 1px solid var(--border);
609
+ border-radius: var(--radius-lg);
610
+ cursor: pointer;
611
+ transition: all var(--transition);
612
+ text-align: center;
613
+ }
614
+
615
+ .quick-agent-card:hover {
616
+ background: var(--surface-hover);
617
+ border-color: var(--accent);
618
+ transform: translateY(-2px);
619
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
620
+ }
621
+
622
+ .quick-agent-card .qa-icon {
623
+ font-size: 1.75rem;
624
+ }
625
+
626
+ .quick-agent-card .qa-name {
627
+ font-size: 0.85rem;
628
+ font-weight: 600;
629
+ color: var(--text);
630
+ }
631
+
632
+ .quick-agent-card .qa-desc {
633
+ font-size: 0.7rem;
634
+ color: var(--text-dim);
635
+ }
636
+
637
+ /* ---- Messages ---- */
638
+ .message {
639
+ display: flex;
640
+ gap: 0.75rem;
641
+ max-width: 800px;
642
+ width: 100%;
643
+ margin: 0 auto;
644
+ padding: 0.75rem 1rem;
645
+ border-radius: var(--radius-lg);
646
+ position: relative;
647
+ transition: background var(--transition);
648
+ animation: messageIn 0.3s ease;
649
+ }
650
+
651
+ @keyframes messageIn {
652
+ from {
653
+ opacity: 0;
654
+ transform: translateY(8px);
655
+ }
656
+ to {
657
+ opacity: 1;
658
+ transform: translateY(0);
659
+ }
660
+ }
661
+
662
+ .message:hover {
663
+ background: rgba(255, 255, 255, 0.02);
664
+ }
665
+
666
+ .message.user {
667
+ flex-direction: row-reverse;
668
+ }
669
+
670
+ .message-avatar {
671
+ width: 32px;
672
+ height: 32px;
673
+ border-radius: var(--radius);
674
+ display: flex;
675
+ align-items: center;
676
+ justify-content: center;
677
+ font-size: 0.85rem;
678
+ flex-shrink: 0;
679
+ font-weight: 600;
680
+ }
681
+
682
+ .message.user .message-avatar {
683
+ background: var(--accent);
684
+ color: #fff;
685
+ }
686
+
687
+ .message.assistant .message-avatar {
688
+ background: var(--surface-active);
689
+ color: var(--text);
690
+ }
691
+
692
+ .message.system .message-avatar {
693
+ background: var(--warning);
694
+ color: var(--bg);
695
+ }
696
+
697
+ .message-body {
698
+ flex: 1;
699
+ min-width: 0;
700
+ }
701
+
702
+ .message.user .message-body {
703
+ text-align: right;
704
+ }
705
+
706
+ .message .content {
707
+ font-size: 0.9rem;
708
+ line-height: 1.65;
709
+ color: var(--text);
710
+ word-wrap: break-word;
711
+ overflow-wrap: break-word;
712
+ }
713
+
714
+ .message.user .content {
715
+ background: var(--accent);
716
+ color: #fff;
717
+ padding: 0.625rem 1rem;
718
+ border-radius: var(--radius-lg) var(--radius-lg) var(--radius-sm) var(--radius-lg);
719
+ display: inline-block;
720
+ text-align: left;
721
+ }
722
+
723
+ .message.assistant .content {
724
+ padding: 0.25rem 0;
725
+ }
726
+
727
+ .message.system .content {
728
+ font-size: 0.8rem;
729
+ color: var(--text-muted);
730
+ font-style: italic;
731
+ padding: 0.25rem 0;
732
+ }
733
+
734
+ /* Message meta */
735
+ .message .meta {
736
+ display: flex;
737
+ align-items: center;
738
+ gap: 0.5rem;
739
+ margin-top: 0.25rem;
740
+ font-size: 0.7rem;
741
+ color: var(--text-dim);
742
+ }
743
+
744
+ .message.user .meta {
745
+ justify-content: flex-end;
746
+ }
747
+
748
+ /* Message hover actions */
749
+ .message .actions {
750
+ display: none;
751
+ position: absolute;
752
+ top: 4px;
753
+ right: 4px;
754
+ background: var(--surface);
755
+ border: 1px solid var(--border);
756
+ border-radius: var(--radius);
757
+ padding: 2px;
758
+ gap: 2px;
759
+ z-index: 5;
760
+ box-shadow: var(--shadow);
761
+ }
762
+
763
+ .message.user .actions {
764
+ right: auto;
765
+ left: 4px;
766
+ }
767
+
768
+ .message:hover .actions {
769
+ display: flex;
770
+ }
771
+
772
+ .message .actions button {
773
+ display: flex;
774
+ align-items: center;
775
+ justify-content: center;
776
+ width: 28px;
777
+ height: 28px;
778
+ border: none;
779
+ background: transparent;
780
+ color: var(--text-muted);
781
+ border-radius: var(--radius-sm);
782
+ cursor: pointer;
783
+ font-size: 0.8rem;
784
+ transition: all var(--transition);
785
+ }
786
+
787
+ .message .actions button:hover {
788
+ background: var(--surface-hover);
789
+ color: var(--text);
790
+ }
791
+
792
+ .message .actions button.pinned {
793
+ color: var(--warning);
794
+ }
795
+
796
+ /* Pin indicator */
797
+ .pin-indicator {
798
+ display: inline-flex;
799
+ align-items: center;
800
+ gap: 0.25rem;
801
+ font-size: 0.65rem;
802
+ color: var(--warning);
803
+ margin-left: 0.5rem;
804
+ }
805
+
806
+ /* Streaming cursor */
807
+ .streaming-cursor {
808
+ display: inline-block;
809
+ width: 2px;
810
+ height: 1em;
811
+ background: var(--accent);
812
+ margin-left: 2px;
813
+ animation: blink 1s step-end infinite;
814
+ vertical-align: text-bottom;
815
+ }
816
+
817
+ @keyframes blink {
818
+ 50% { opacity: 0; }
819
+ }
820
+
821
+ /* ---- Markdown content styles ---- */
822
+ .content h1, .content h2, .content h3,
823
+ .content h4, .content h5, .content h6 {
824
+ margin-top: 1em;
825
+ margin-bottom: 0.5em;
826
+ font-weight: 600;
827
+ line-height: 1.3;
828
+ color: var(--text);
829
+ }
830
+
831
+ .content h1 { font-size: 1.4rem; }
832
+ .content h2 { font-size: 1.2rem; }
833
+ .content h3 { font-size: 1.05rem; }
834
+ .content h4 { font-size: 0.95rem; }
835
+
836
+ .content p {
837
+ margin-bottom: 0.5em;
838
+ }
839
+
840
+ .content p:last-child {
841
+ margin-bottom: 0;
842
+ }
843
+
844
+ .content strong {
845
+ font-weight: 600;
846
+ color: var(--text);
847
+ }
848
+
849
+ .content em {
850
+ font-style: italic;
851
+ color: var(--text-muted);
852
+ }
853
+
854
+ .content a {
855
+ color: var(--accent);
856
+ text-decoration: none;
857
+ }
858
+
859
+ .content a:hover {
860
+ text-decoration: underline;
861
+ }
862
+
863
+ .content code {
864
+ font-family: var(--font-mono);
865
+ font-size: 0.85em;
866
+ background: var(--surface-active);
867
+ padding: 0.15em 0.4em;
868
+ border-radius: var(--radius-sm);
869
+ color: #e879f9;
870
+ }
871
+
872
+ .message.user .content code {
873
+ background: rgba(255, 255, 255, 0.15);
874
+ color: #fff;
875
+ }
876
+
877
+ .content pre {
878
+ background: var(--bg-deep);
879
+ border: 1px solid var(--border);
880
+ border-radius: var(--radius);
881
+ padding: 1rem;
882
+ margin: 0.75rem 0;
883
+ overflow-x: auto;
884
+ font-family: var(--font-mono);
885
+ font-size: 0.825rem;
886
+ line-height: 1.5;
887
+ position: relative;
888
+ }
889
+
890
+ .content pre code {
891
+ background: none;
892
+ padding: 0;
893
+ border-radius: 0;
894
+ color: var(--text);
895
+ font-size: inherit;
896
+ }
897
+
898
+ .code-block-header {
899
+ display: flex;
900
+ align-items: center;
901
+ justify-content: space-between;
902
+ padding: 0.4rem 1rem;
903
+ background: var(--surface);
904
+ border: 1px solid var(--border);
905
+ border-bottom: none;
906
+ border-radius: var(--radius) var(--radius) 0 0;
907
+ margin-top: 0.75rem;
908
+ }
909
+
910
+ .code-block-header + pre {
911
+ margin-top: 0;
912
+ border-top-left-radius: 0;
913
+ border-top-right-radius: 0;
914
+ }
915
+
916
+ .code-lang {
917
+ font-size: 0.7rem;
918
+ color: var(--text-dim);
919
+ font-family: var(--font-mono);
920
+ text-transform: lowercase;
921
+ }
922
+
923
+ .code-copy-btn {
924
+ font-size: 0.7rem;
925
+ color: var(--text-dim);
926
+ background: none;
927
+ border: none;
928
+ cursor: pointer;
929
+ padding: 2px 6px;
930
+ border-radius: var(--radius-sm);
931
+ transition: all var(--transition);
932
+ }
933
+
934
+ .code-copy-btn:hover {
935
+ color: var(--text);
936
+ background: var(--surface-hover);
937
+ }
938
+
939
+ /* Syntax highlight colors (basic) */
940
+ .content pre .kw { color: #c084fc; }
941
+ .content pre .str { color: #86efac; }
942
+ .content pre .num { color: #fbbf24; }
943
+ .content pre .cmt { color: var(--text-dim); font-style: italic; }
944
+ .content pre .fn { color: #60a5fa; }
945
+ .content pre .op { color: #f472b6; }
946
+
947
+ .content ul, .content ol {
948
+ margin: 0.5em 0;
949
+ padding-left: 1.5em;
950
+ }
951
+
952
+ .content li {
953
+ margin-bottom: 0.25em;
954
+ }
955
+
956
+ .content blockquote {
957
+ border-left: 3px solid var(--accent);
958
+ padding: 0.5rem 1rem;
959
+ margin: 0.75rem 0;
960
+ background: var(--accent-glow);
961
+ border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
962
+ color: var(--text-muted);
963
+ }
964
+
965
+ .content hr {
966
+ border: none;
967
+ border-top: 1px solid var(--border);
968
+ margin: 1rem 0;
969
+ }
970
+
971
+ .content table {
972
+ border-collapse: collapse;
973
+ margin: 0.75rem 0;
974
+ font-size: 0.85rem;
975
+ width: 100%;
976
+ }
977
+
978
+ .content th, .content td {
979
+ border: 1px solid var(--border);
980
+ padding: 0.4rem 0.75rem;
981
+ text-align: left;
982
+ }
983
+
984
+ .content th {
985
+ background: var(--surface);
986
+ font-weight: 600;
987
+ }
988
+
989
+ /* ---- Tool Approval Banner ---- */
990
+ .tool-approval {
991
+ position: sticky;
992
+ bottom: 0;
993
+ background: var(--surface);
994
+ border-top: 2px solid var(--warning);
995
+ padding: 0.75rem 1rem;
996
+ display: flex;
997
+ align-items: center;
998
+ justify-content: space-between;
999
+ gap: 1rem;
1000
+ z-index: 10;
1001
+ animation: slideUp 0.3s ease;
1002
+ }
1003
+
1004
+ @keyframes slideUp {
1005
+ from { transform: translateY(100%); opacity: 0; }
1006
+ to { transform: translateY(0); opacity: 1; }
1007
+ }
1008
+
1009
+ .tool-info {
1010
+ display: flex;
1011
+ align-items: center;
1012
+ gap: 0.75rem;
1013
+ flex: 1;
1014
+ min-width: 0;
1015
+ flex-wrap: wrap;
1016
+ }
1017
+
1018
+ .tool-label {
1019
+ font-size: 0.75rem;
1020
+ color: var(--warning);
1021
+ font-weight: 600;
1022
+ text-transform: uppercase;
1023
+ letter-spacing: 0.05em;
1024
+ flex-shrink: 0;
1025
+ }
1026
+
1027
+ .tool-name {
1028
+ font-size: 0.85rem;
1029
+ color: var(--text);
1030
+ font-weight: 500;
1031
+ }
1032
+
1033
+ .tool-command {
1034
+ font-family: var(--font-mono);
1035
+ font-size: 0.8rem;
1036
+ background: var(--bg-deep);
1037
+ padding: 0.25rem 0.5rem;
1038
+ border-radius: var(--radius-sm);
1039
+ color: var(--text-muted);
1040
+ max-width: 400px;
1041
+ overflow: hidden;
1042
+ text-overflow: ellipsis;
1043
+ white-space: nowrap;
1044
+ }
1045
+
1046
+ .tool-actions {
1047
+ display: flex;
1048
+ gap: 0.5rem;
1049
+ flex-shrink: 0;
1050
+ }
1051
+
1052
+ .btn-approve {
1053
+ background: var(--success);
1054
+ color: #fff;
1055
+ border: none;
1056
+ padding: 6px 16px;
1057
+ border-radius: var(--radius);
1058
+ font-size: 0.8rem;
1059
+ font-weight: 600;
1060
+ cursor: pointer;
1061
+ transition: all var(--transition);
1062
+ }
1063
+
1064
+ .btn-approve:hover {
1065
+ filter: brightness(1.1);
1066
+ }
1067
+
1068
+ .btn-deny {
1069
+ background: transparent;
1070
+ color: var(--text-muted);
1071
+ border: 1px solid var(--border);
1072
+ padding: 6px 16px;
1073
+ border-radius: var(--radius);
1074
+ font-size: 0.8rem;
1075
+ font-weight: 500;
1076
+ cursor: pointer;
1077
+ transition: all var(--transition);
1078
+ }
1079
+
1080
+ .btn-deny:hover {
1081
+ border-color: var(--error);
1082
+ color: var(--error);
1083
+ }
1084
+
1085
+ /* ============================================================
1086
+ INPUT AREA
1087
+ ============================================================ */
1088
+ .input-area {
1089
+ padding: 0.75rem 1rem 1rem;
1090
+ background: var(--bg);
1091
+ border-top: 1px solid var(--border);
1092
+ flex-shrink: 0;
1093
+ }
1094
+
1095
+ .input-row {
1096
+ display: flex;
1097
+ align-items: flex-end;
1098
+ gap: 0.5rem;
1099
+ max-width: 800px;
1100
+ margin: 0 auto;
1101
+ background: var(--surface);
1102
+ border: 1px solid var(--border);
1103
+ border-radius: var(--radius-lg);
1104
+ padding: 0.5rem;
1105
+ transition: border-color var(--transition);
1106
+ }
1107
+
1108
+ .input-row:focus-within {
1109
+ border-color: var(--accent);
1110
+ box-shadow: 0 0 0 3px var(--accent-glow);
1111
+ }
1112
+
1113
+ .input-row textarea {
1114
+ flex: 1;
1115
+ background: transparent;
1116
+ border: none;
1117
+ color: var(--text);
1118
+ font-family: var(--font-sans);
1119
+ font-size: 0.9rem;
1120
+ line-height: 1.5;
1121
+ resize: none;
1122
+ outline: none;
1123
+ max-height: 200px;
1124
+ padding: 0.375rem 0.5rem;
1125
+ scrollbar-width: thin;
1126
+ }
1127
+
1128
+ .input-row textarea::placeholder {
1129
+ color: var(--text-dim);
1130
+ }
1131
+
1132
+ .btn-send {
1133
+ display: flex;
1134
+ align-items: center;
1135
+ justify-content: center;
1136
+ width: 36px;
1137
+ height: 36px;
1138
+ border: none;
1139
+ background: var(--accent);
1140
+ color: #fff;
1141
+ border-radius: var(--radius);
1142
+ cursor: pointer;
1143
+ font-size: 1rem;
1144
+ transition: all var(--transition);
1145
+ flex-shrink: 0;
1146
+ }
1147
+
1148
+ .btn-send:hover {
1149
+ background: var(--accent-hover);
1150
+ }
1151
+
1152
+ .btn-send:disabled {
1153
+ opacity: 0.4;
1154
+ cursor: not-allowed;
1155
+ }
1156
+
1157
+ .input-meta {
1158
+ display: flex;
1159
+ align-items: center;
1160
+ gap: 0.75rem;
1161
+ max-width: 800px;
1162
+ margin: 0.375rem auto 0;
1163
+ padding: 0 0.5rem;
1164
+ }
1165
+
1166
+ .cli-badge {
1167
+ font-size: 0.65rem;
1168
+ padding: 1px 8px;
1169
+ border-radius: 999px;
1170
+ background: var(--surface);
1171
+ border: 1px solid var(--border);
1172
+ color: var(--text-dim);
1173
+ font-family: var(--font-mono);
1174
+ }
1175
+
1176
+ .char-count {
1177
+ font-size: 0.65rem;
1178
+ color: var(--text-dim);
1179
+ margin-left: auto;
1180
+ }
1181
+
1182
+ /* Typing indicator */
1183
+ .typing {
1184
+ font-size: 0.75rem;
1185
+ color: var(--accent);
1186
+ display: flex;
1187
+ align-items: center;
1188
+ gap: 0.375rem;
1189
+ }
1190
+
1191
+ .typing::before {
1192
+ content: '';
1193
+ display: inline-block;
1194
+ width: 4px;
1195
+ height: 4px;
1196
+ border-radius: 50%;
1197
+ background: var(--accent);
1198
+ animation: typingPulse 1.4s ease-in-out infinite;
1199
+ }
1200
+
1201
+ @keyframes typingPulse {
1202
+ 0%, 100% { opacity: 0.3; transform: scale(0.8); }
1203
+ 50% { opacity: 1; transform: scale(1.2); }
1204
+ }
1205
+
1206
+ /* ============================================================
1207
+ SPLIT PANEL (Right)
1208
+ ============================================================ */
1209
+ .split-panel {
1210
+ width: var(--split-width);
1211
+ min-width: var(--split-width);
1212
+ background: var(--bg-deep);
1213
+ border-left: 1px solid var(--border);
1214
+ display: flex;
1215
+ flex-direction: column;
1216
+ overflow: hidden;
1217
+ animation: slideInRight 0.3s ease;
1218
+ }
1219
+
1220
+ @keyframes slideInRight {
1221
+ from { transform: translateX(100%); opacity: 0; }
1222
+ to { transform: translateX(0); opacity: 1; }
1223
+ }
1224
+
1225
+ .split-header {
1226
+ display: flex;
1227
+ align-items: center;
1228
+ justify-content: space-between;
1229
+ padding: 0.75rem 1rem;
1230
+ border-bottom: 1px solid var(--border);
1231
+ flex-shrink: 0;
1232
+ }
1233
+
1234
+ .split-header h3 {
1235
+ font-size: 0.8rem;
1236
+ font-weight: 600;
1237
+ color: var(--text-muted);
1238
+ text-transform: uppercase;
1239
+ letter-spacing: 0.06em;
1240
+ }
1241
+
1242
+ .split-content {
1243
+ flex: 1;
1244
+ overflow: auto;
1245
+ padding: 1rem;
1246
+ font-family: var(--font-mono);
1247
+ font-size: 0.75rem;
1248
+ line-height: 1.5;
1249
+ color: var(--text-muted);
1250
+ white-space: pre-wrap;
1251
+ word-break: break-all;
1252
+ }
1253
+
1254
+ /* ============================================================
1255
+ MODALS
1256
+ ============================================================ */
1257
+ .modal {
1258
+ position: fixed;
1259
+ inset: 0;
1260
+ z-index: 200;
1261
+ display: flex;
1262
+ align-items: center;
1263
+ justify-content: center;
1264
+ background: rgba(0, 0, 0, 0.6);
1265
+ backdrop-filter: blur(4px);
1266
+ animation: fadeIn 0.2s ease;
1267
+ }
1268
+
1269
+ @keyframes fadeIn {
1270
+ from { opacity: 0; }
1271
+ to { opacity: 1; }
1272
+ }
1273
+
1274
+ .modal-content {
1275
+ background: var(--surface);
1276
+ border: 1px solid var(--border);
1277
+ border-radius: var(--radius-lg);
1278
+ padding: 2rem;
1279
+ min-width: 400px;
1280
+ max-width: 560px;
1281
+ width: 90%;
1282
+ box-shadow: var(--shadow-lg);
1283
+ animation: scaleIn 0.25s ease;
1284
+ }
1285
+
1286
+ @keyframes scaleIn {
1287
+ from { transform: scale(0.95); opacity: 0; }
1288
+ to { transform: scale(1); opacity: 1; }
1289
+ }
1290
+
1291
+ .modal-content h2 {
1292
+ font-size: 1.2rem;
1293
+ font-weight: 700;
1294
+ margin-bottom: 1.5rem;
1295
+ color: var(--text);
1296
+ }
1297
+
1298
+ /* Drop Zone */
1299
+ .drop-zone {
1300
+ border: 2px dashed var(--border);
1301
+ border-radius: var(--radius-lg);
1302
+ padding: 2rem;
1303
+ text-align: center;
1304
+ transition: all var(--transition);
1305
+ margin-bottom: 1rem;
1306
+ }
1307
+
1308
+ .drop-zone.drag-over {
1309
+ border-color: var(--accent);
1310
+ background: var(--accent-glow);
1311
+ }
1312
+
1313
+ .drop-zone p {
1314
+ color: var(--text-muted);
1315
+ font-size: 0.9rem;
1316
+ margin-bottom: 0.5rem;
1317
+ }
1318
+
1319
+ .drop-or {
1320
+ font-size: 0.75rem;
1321
+ color: var(--text-dim);
1322
+ }
1323
+
1324
+ /* Import URL */
1325
+ .import-url {
1326
+ display: flex;
1327
+ gap: 0.5rem;
1328
+ margin-bottom: 1.5rem;
1329
+ }
1330
+
1331
+ .import-url input {
1332
+ flex: 1;
1333
+ background: var(--bg);
1334
+ border: 1px solid var(--border);
1335
+ border-radius: var(--radius);
1336
+ padding: 0.5rem 0.75rem;
1337
+ color: var(--text);
1338
+ font-family: var(--font-sans);
1339
+ font-size: 0.85rem;
1340
+ outline: none;
1341
+ transition: border-color var(--transition);
1342
+ }
1343
+
1344
+ .import-url input:focus {
1345
+ border-color: var(--accent);
1346
+ }
1347
+
1348
+ .import-url input::placeholder {
1349
+ color: var(--text-dim);
1350
+ }
1351
+
1352
+ /* Export Options */
1353
+ .export-options {
1354
+ display: grid;
1355
+ grid-template-columns: repeat(3, 1fr);
1356
+ gap: 0.75rem;
1357
+ margin-bottom: 1.5rem;
1358
+ }
1359
+
1360
+ .export-options .card {
1361
+ background: var(--bg);
1362
+ border: 1px solid var(--border);
1363
+ border-radius: var(--radius);
1364
+ padding: 1.25rem 1rem;
1365
+ text-align: center;
1366
+ cursor: pointer;
1367
+ transition: all var(--transition);
1368
+ }
1369
+
1370
+ .export-options .card:hover {
1371
+ border-color: var(--accent);
1372
+ background: var(--accent-glow);
1373
+ }
1374
+
1375
+ .export-options .card h3 {
1376
+ font-size: 0.95rem;
1377
+ font-weight: 600;
1378
+ color: var(--text);
1379
+ margin-bottom: 0.25rem;
1380
+ }
1381
+
1382
+ .export-options .card p {
1383
+ font-size: 0.75rem;
1384
+ color: var(--text-dim);
1385
+ }
1386
+
1387
+ /* Settings */
1388
+ .settings-group {
1389
+ display: flex;
1390
+ align-items: center;
1391
+ justify-content: space-between;
1392
+ padding: 0.75rem 0;
1393
+ border-bottom: 1px solid var(--border);
1394
+ }
1395
+
1396
+ .settings-group label {
1397
+ font-size: 0.9rem;
1398
+ color: var(--text);
1399
+ }
1400
+
1401
+ .settings-group select {
1402
+ background: var(--bg);
1403
+ color: var(--text);
1404
+ border: 1px solid var(--border);
1405
+ border-radius: var(--radius);
1406
+ padding: 6px 10px;
1407
+ font-size: 0.85rem;
1408
+ font-family: var(--font-sans);
1409
+ cursor: pointer;
1410
+ outline: none;
1411
+ }
1412
+
1413
+ .settings-group input[type="checkbox"] {
1414
+ width: 18px;
1415
+ height: 18px;
1416
+ accent-color: var(--accent);
1417
+ cursor: pointer;
1418
+ }
1419
+
1420
+ /* Buttons */
1421
+ .btn-primary {
1422
+ background: var(--accent);
1423
+ color: #fff;
1424
+ border: none;
1425
+ padding: 8px 20px;
1426
+ border-radius: var(--radius);
1427
+ font-size: 0.85rem;
1428
+ font-weight: 600;
1429
+ cursor: pointer;
1430
+ transition: all var(--transition);
1431
+ font-family: var(--font-sans);
1432
+ }
1433
+
1434
+ .btn-primary:hover {
1435
+ background: var(--accent-hover);
1436
+ }
1437
+
1438
+ .btn-secondary {
1439
+ background: var(--surface-active);
1440
+ color: var(--text);
1441
+ border: 1px solid var(--border);
1442
+ padding: 8px 20px;
1443
+ border-radius: var(--radius);
1444
+ font-size: 0.85rem;
1445
+ font-weight: 500;
1446
+ cursor: pointer;
1447
+ transition: all var(--transition);
1448
+ font-family: var(--font-sans);
1449
+ }
1450
+
1451
+ .btn-secondary:hover {
1452
+ background: var(--surface-hover);
1453
+ border-color: var(--border-light);
1454
+ }
1455
+
1456
+ .btn-close {
1457
+ display: block;
1458
+ margin: 0 auto;
1459
+ background: none;
1460
+ border: none;
1461
+ color: var(--text-dim);
1462
+ font-size: 0.85rem;
1463
+ cursor: pointer;
1464
+ padding: 8px 16px;
1465
+ transition: color var(--transition);
1466
+ font-family: var(--font-sans);
1467
+ }
1468
+
1469
+ .btn-close:hover {
1470
+ color: var(--text);
1471
+ }
1472
+
1473
+ .modal-actions {
1474
+ display: flex;
1475
+ justify-content: flex-end;
1476
+ gap: 0.75rem;
1477
+ margin-top: 1.5rem;
1478
+ }
1479
+
1480
+ /* Attach preview */
1481
+ #attach-input {
1482
+ width: 100%;
1483
+ margin-bottom: 1rem;
1484
+ }
1485
+
1486
+ #attach-preview {
1487
+ display: flex;
1488
+ flex-direction: column;
1489
+ gap: 0.5rem;
1490
+ max-height: 200px;
1491
+ overflow-y: auto;
1492
+ }
1493
+
1494
+ .attach-file-item {
1495
+ display: flex;
1496
+ align-items: center;
1497
+ justify-content: space-between;
1498
+ padding: 0.5rem 0.75rem;
1499
+ background: var(--bg);
1500
+ border: 1px solid var(--border);
1501
+ border-radius: var(--radius-sm);
1502
+ font-size: 0.8rem;
1503
+ }
1504
+
1505
+ .attach-file-name {
1506
+ color: var(--text);
1507
+ font-family: var(--font-mono);
1508
+ }
1509
+
1510
+ .attach-file-size {
1511
+ color: var(--text-dim);
1512
+ font-size: 0.7rem;
1513
+ }
1514
+
1515
+ /* ============================================================
1516
+ VOICE RECORDING
1517
+ ============================================================ */
1518
+ .icon-btn.recording {
1519
+ color: var(--error);
1520
+ animation: pulse 1.5s ease infinite;
1521
+ }
1522
+
1523
+ @keyframes pulse {
1524
+ 0%, 100% { box-shadow: none; }
1525
+ 50% { box-shadow: 0 0 0 4px rgba(239, 68, 68, 0.2); }
1526
+ }
1527
+
1528
+ /* ============================================================
1529
+ ERROR TOAST
1530
+ ============================================================ */
1531
+ .toast {
1532
+ position: fixed;
1533
+ bottom: 100px;
1534
+ left: 50%;
1535
+ transform: translateX(-50%);
1536
+ background: var(--surface);
1537
+ border: 1px solid var(--border);
1538
+ border-left: 3px solid var(--error);
1539
+ padding: 0.75rem 1.25rem;
1540
+ border-radius: var(--radius);
1541
+ font-size: 0.85rem;
1542
+ color: var(--text);
1543
+ z-index: 300;
1544
+ box-shadow: var(--shadow-lg);
1545
+ animation: toastIn 0.3s ease, toastOut 0.3s ease 3.7s forwards;
1546
+ max-width: 480px;
1547
+ }
1548
+
1549
+ .toast.success {
1550
+ border-left-color: var(--success);
1551
+ }
1552
+
1553
+ .toast.error {
1554
+ border-left-color: var(--error);
1555
+ background: rgba(239, 68, 68, 0.1);
1556
+ }
1557
+
1558
+ .toast.warning {
1559
+ border-left-color: var(--warning);
1560
+ }
1561
+
1562
+ @keyframes toastIn {
1563
+ from { opacity: 0; transform: translateX(-50%) translateY(20px); }
1564
+ to { opacity: 1; transform: translateX(-50%) translateY(0); }
1565
+ }
1566
+
1567
+ @keyframes toastOut {
1568
+ from { opacity: 1; }
1569
+ to { opacity: 0; pointer-events: none; }
1570
+ }
1571
+
1572
+ /* ============================================================
1573
+ RESPONSIVE
1574
+ ============================================================ */
1575
+ @media (max-width: 768px) {
1576
+ .sidebar-toggle {
1577
+ display: flex;
1578
+ }
1579
+
1580
+ .sidebar {
1581
+ position: fixed;
1582
+ top: var(--topbar-height);
1583
+ left: 0;
1584
+ bottom: 0;
1585
+ z-index: 50;
1586
+ transform: translateX(-100%);
1587
+ box-shadow: var(--shadow-lg);
1588
+ }
1589
+
1590
+ .sidebar.open {
1591
+ transform: translateX(0);
1592
+ }
1593
+
1594
+ .topbar-center {
1595
+ display: none;
1596
+ }
1597
+
1598
+ .model-select {
1599
+ display: none;
1600
+ }
1601
+
1602
+ .cli-select {
1603
+ display: none;
1604
+ }
1605
+
1606
+ .export-options {
1607
+ grid-template-columns: 1fr;
1608
+ }
1609
+
1610
+ .modal-content {
1611
+ min-width: auto;
1612
+ margin: 1rem;
1613
+ }
1614
+
1615
+ .quick-agents {
1616
+ grid-template-columns: 1fr 1fr;
1617
+ }
1618
+
1619
+ .tool-approval {
1620
+ flex-direction: column;
1621
+ align-items: stretch;
1622
+ }
1623
+
1624
+ .tool-actions {
1625
+ justify-content: flex-end;
1626
+ }
1627
+
1628
+ .message {
1629
+ padding: 0.5rem;
1630
+ }
1631
+ }
1632
+
1633
+ @media (max-width: 480px) {
1634
+ .quick-agents {
1635
+ grid-template-columns: 1fr;
1636
+ }
1637
+
1638
+ .topbar-left .label {
1639
+ display: none;
1640
+ }
1641
+ }
1642
+
1643
+ /* ============================================================
1644
+ FOCUS & ACCESSIBILITY
1645
+ ============================================================ */
1646
+ :focus-visible {
1647
+ outline: 2px solid var(--accent);
1648
+ outline-offset: 2px;
1649
+ }
1650
+
1651
+ button:focus:not(:focus-visible),
1652
+ select:focus:not(:focus-visible),
1653
+ input:focus:not(:focus-visible),
1654
+ textarea:focus:not(:focus-visible) {
1655
+ outline: none;
1656
+ }
1657
+
1658
+ /* Reduced motion */
1659
+ @media (prefers-reduced-motion: reduce) {
1660
+ *, *::before, *::after {
1661
+ animation-duration: 0.01ms !important;
1662
+ animation-iteration-count: 1 !important;
1663
+ transition-duration: 0.01ms !important;
1664
+ }
1665
+ }