herdr-plugin-amq 0.1.2

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,3842 @@
1
+ :root {
2
+ --primary-blue: #1a73e8;
3
+ --primary-blue-hover: #174ea6;
4
+ --blue-surface: #e8f0fe;
5
+ --compose-bg: #c2e7ff;
6
+ --compose-text: #001d35;
7
+ --compose-hover: #b3d7ef;
8
+ --bg-app: #f6f8fc;
9
+ --bg-surface: #ffffff;
10
+ --bg-hover: #f2f6fc;
11
+ --border-color: #e0e3e7;
12
+ --border-light: #f1f3f4;
13
+ --text-main: #202124;
14
+ --text-secondary: #5f6368;
15
+ --text-muted: #80868b;
16
+ --google-red: #d93025;
17
+ --google-yellow: #f9ab00;
18
+ --google-green: #188038;
19
+ --google-blue: #1a73e8;
20
+ --font-sans: 'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
21
+ --font-logo: 'Product Sans', var(--font-sans);
22
+ --font-mono: 'Roboto Mono', monospace;
23
+ }
24
+
25
+ * {
26
+ box-sizing: border-box;
27
+ margin: 0;
28
+ padding: 0;
29
+ }
30
+
31
+ body {
32
+ font-family: var(--font-sans);
33
+ background-color: var(--bg-app);
34
+ color: var(--text-main);
35
+ height: 100vh;
36
+ display: flex;
37
+ flex-direction: column;
38
+ overflow: hidden;
39
+ overflow-x: hidden;
40
+ font-size: 14px;
41
+ }
42
+
43
+ /* ─── Top Header ───────────────────────────────────────────────────────────── */
44
+ .app-header {
45
+ height: 64px;
46
+ background-color: var(--bg-app);
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: space-between;
50
+ padding: 0 16px;
51
+ border-bottom: 1px solid var(--border-color);
52
+ flex-shrink: 0;
53
+ }
54
+
55
+ .header-left {
56
+ display: flex;
57
+ align-items: center;
58
+ gap: 12px;
59
+ min-width: 240px;
60
+ }
61
+
62
+ .logo-container {
63
+ display: flex;
64
+ align-items: baseline;
65
+ gap: 6px;
66
+ user-select: none;
67
+ }
68
+
69
+ .logo-agmail {
70
+ font-family: var(--font-logo);
71
+ font-size: 22px;
72
+ font-weight: 700;
73
+ letter-spacing: -0.5px;
74
+ }
75
+
76
+ .c-blue { color: var(--google-blue); }
77
+ .c-red { color: var(--google-red); }
78
+ .c-yellow { color: var(--google-yellow); }
79
+ .c-green { color: var(--google-green); }
80
+
81
+ .logo-sub {
82
+ font-size: 11px;
83
+ font-weight: 600;
84
+ color: var(--text-secondary);
85
+ background: #e1e7f0;
86
+ padding: 2px 6px;
87
+ border-radius: 4px;
88
+ text-transform: uppercase;
89
+ }
90
+
91
+ .header-center {
92
+ flex: 1;
93
+ max-width: 720px;
94
+ padding: 0 20px;
95
+ position: relative;
96
+ }
97
+
98
+ .search-bar {
99
+ display: flex;
100
+ align-items: center;
101
+ background-color: #eaf1fb;
102
+ border-radius: 28px;
103
+ padding: 0 16px;
104
+ height: 46px;
105
+ transition: background-color 0.2s, box-shadow 0.2s;
106
+ }
107
+
108
+ .search-bar:focus-within {
109
+ background-color: var(--bg-surface);
110
+ box-shadow: 0 1px 3px 0 rgba(60,64,67,0.3), 0 4px 8px 3px rgba(60,64,67,0.15);
111
+ }
112
+
113
+ .search-icon {
114
+ width: 20px;
115
+ height: 20px;
116
+ fill: var(--text-secondary);
117
+ margin-right: 12px;
118
+ }
119
+
120
+ .search-bar input {
121
+ border: none;
122
+ background: transparent;
123
+ outline: none;
124
+ font-size: 15px;
125
+ color: var(--text-main);
126
+ width: 100%;
127
+ }
128
+
129
+ .clear-search-btn {
130
+ background: none;
131
+ border: none;
132
+ cursor: pointer;
133
+ color: var(--text-muted);
134
+ font-size: 14px;
135
+ padding: 4px;
136
+ }
137
+
138
+ .header-right {
139
+ display: flex;
140
+ align-items: center;
141
+ gap: 12px;
142
+ }
143
+
144
+ .status-pill {
145
+ display: flex;
146
+ align-items: center;
147
+ gap: 6px;
148
+ padding: 6px 12px;
149
+ border-radius: 16px;
150
+ font-size: 12px;
151
+ font-weight: 600;
152
+ cursor: pointer;
153
+ transition: all 0.2s;
154
+ user-select: none;
155
+ }
156
+
157
+ .status-dot {
158
+ width: 8px;
159
+ height: 8px;
160
+ border-radius: 50%;
161
+ }
162
+
163
+ .status-running {
164
+ background-color: #e6f4ea;
165
+ color: var(--google-green);
166
+ border: 1px solid #ceead6;
167
+ }
168
+ .status-running .status-dot {
169
+ background-color: var(--google-green);
170
+ }
171
+
172
+ .status-stopped {
173
+ background-color: #fef7e0;
174
+ color: #b06000;
175
+ border: 1px solid #fce8b2;
176
+ }
177
+ .status-stopped .status-dot {
178
+ background-color: var(--google-yellow);
179
+ }
180
+
181
+ .user-badge {
182
+ width: 34px;
183
+ height: 34px;
184
+ min-width: 34px;
185
+ min-height: 34px;
186
+ flex-shrink: 0;
187
+ aspect-ratio: 1 / 1;
188
+ border-radius: 50%;
189
+ background-color: var(--primary-blue);
190
+ color: #ffffff;
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: center;
194
+ font-weight: 700;
195
+ font-size: 14px;
196
+ user-select: none;
197
+ box-sizing: border-box;
198
+ }
199
+
200
+ .icon-btn, .icon-btn-small {
201
+ background: transparent;
202
+ border: none;
203
+ border-radius: 50%;
204
+ display: flex;
205
+ align-items: center;
206
+ justify-content: center;
207
+ cursor: pointer;
208
+ color: var(--text-secondary);
209
+ transition: background-color 0.15s;
210
+ }
211
+
212
+ .icon-btn {
213
+ width: 40px;
214
+ height: 40px;
215
+ }
216
+ .icon-btn:hover {
217
+ background-color: rgba(60,64,67,0.08);
218
+ }
219
+
220
+ .icon-btn-small {
221
+ width: 32px;
222
+ height: 32px;
223
+ }
224
+ .icon-btn-small:hover {
225
+ background-color: rgba(60,64,67,0.08);
226
+ }
227
+
228
+ .icon-btn svg, .icon-btn-small svg {
229
+ width: 20px;
230
+ height: 20px;
231
+ }
232
+
233
+ /* ─── Layout ───────────────────────────────────────────────────────────────── */
234
+ .app-layout {
235
+ display: flex;
236
+ flex: 1;
237
+ overflow: hidden;
238
+ }
239
+
240
+ /* ─── Sidebar ──────────────────────────────────────────────────────────────── */
241
+ .app-sidebar {
242
+ width: 256px;
243
+ background-color: var(--bg-app);
244
+ display: flex;
245
+ flex-direction: column;
246
+ padding: 12px 12px 12px 12px;
247
+ border-right: 1px solid var(--border-color);
248
+ overflow-y: auto;
249
+ flex-shrink: 0;
250
+ gap: 14px;
251
+ }
252
+
253
+ .compose-btn-wrap {
254
+ margin-bottom: 6px;
255
+ }
256
+
257
+ .compose-btn {
258
+ display: inline-flex;
259
+ align-items: center;
260
+ gap: 12px;
261
+ background-color: var(--compose-bg);
262
+ color: var(--compose-text);
263
+ border: none;
264
+ border-radius: 16px;
265
+ padding: 0 24px 0 16px;
266
+ height: 54px;
267
+ font-size: 14px;
268
+ font-weight: 600;
269
+ cursor: pointer;
270
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
271
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
272
+ }
273
+
274
+ .compose-btn:hover {
275
+ background-color: var(--compose-hover);
276
+ box-shadow: 0 4px 8px 3px rgba(0,0,0,0.12);
277
+ }
278
+
279
+ .compose-btn svg {
280
+ width: 22px;
281
+ height: 22px;
282
+ }
283
+
284
+ .folder-list {
285
+ display: flex;
286
+ flex-direction: column;
287
+ gap: 2px;
288
+ }
289
+
290
+ .nav-item {
291
+ display: flex;
292
+ align-items: center;
293
+ gap: 14px;
294
+ width: 100%;
295
+ height: 34px;
296
+ padding: 0 16px;
297
+ border: none;
298
+ background: transparent;
299
+ border-radius: 17px;
300
+ cursor: pointer;
301
+ color: var(--text-main);
302
+ font-size: 13.5px;
303
+ font-weight: 500;
304
+ text-align: left;
305
+ transition: background-color 0.15s;
306
+ }
307
+
308
+ .nav-item:hover {
309
+ background-color: var(--bg-hover);
310
+ }
311
+
312
+ .nav-item.active {
313
+ background-color: var(--blue-surface);
314
+ color: var(--primary-blue);
315
+ font-weight: 700;
316
+ }
317
+
318
+ .nav-item svg {
319
+ width: 18px;
320
+ height: 18px;
321
+ flex-shrink: 0;
322
+ }
323
+
324
+ .nav-item.active svg {
325
+ fill: var(--primary-blue);
326
+ }
327
+
328
+ .nav-label {
329
+ flex: 1;
330
+ }
331
+
332
+ .badge {
333
+ font-size: 11px;
334
+ font-weight: 700;
335
+ background-color: #d3e3fd;
336
+ color: var(--primary-blue);
337
+ padding: 1px 7px;
338
+ border-radius: 10px;
339
+ }
340
+
341
+ .sidebar-section-header {
342
+ font-size: 11px;
343
+ font-weight: 700;
344
+ letter-spacing: 0.8px;
345
+ color: var(--text-muted);
346
+ padding: 6px 12px 2px;
347
+ text-transform: uppercase;
348
+ }
349
+
350
+ .account-selector {
351
+ display: flex;
352
+ flex-direction: column;
353
+ gap: 3px;
354
+ }
355
+
356
+ .account-pill {
357
+ display: flex;
358
+ align-items: center;
359
+ justify-content: space-between;
360
+ border: none;
361
+ background: transparent;
362
+ padding: 6px 12px;
363
+ border-radius: 8px;
364
+ cursor: pointer;
365
+ font-size: 13px;
366
+ color: var(--text-secondary);
367
+ font-weight: 500;
368
+ text-align: left;
369
+ transition: all 0.15s;
370
+ }
371
+
372
+ .account-pill:hover {
373
+ background-color: var(--bg-hover);
374
+ color: var(--text-main);
375
+ }
376
+
377
+ .account-pill.active {
378
+ background-color: #eaeef6;
379
+ color: var(--text-main);
380
+ font-weight: 700;
381
+ }
382
+
383
+ .account-unread {
384
+ font-size: 11px;
385
+ font-weight: 700;
386
+ background-color: var(--google-yellow);
387
+ color: #202124;
388
+ padding: 1px 6px;
389
+ border-radius: 8px;
390
+ }
391
+
392
+ /* Hangouts Presence Widget */
393
+ .hangouts-list {
394
+ display: flex;
395
+ flex-direction: column;
396
+ gap: 4px;
397
+ }
398
+
399
+ .presence-item {
400
+ display: flex;
401
+ align-items: center;
402
+ gap: 10px;
403
+ padding: 5px 10px;
404
+ border-radius: 8px;
405
+ font-size: 12.5px;
406
+ }
407
+
408
+ .presence-avatar-wrap {
409
+ position: relative;
410
+ width: 24px;
411
+ height: 24px;
412
+ }
413
+
414
+ .mini-avatar {
415
+ width: 24px;
416
+ height: 24px;
417
+ min-width: 24px;
418
+ min-height: 24px;
419
+ flex-shrink: 0;
420
+ aspect-ratio: 1 / 1;
421
+ border-radius: 50%;
422
+ background: #dfe3e8;
423
+ color: #3c4043;
424
+ display: flex;
425
+ align-items: center;
426
+ justify-content: center;
427
+ font-weight: 700;
428
+ font-size: 11px;
429
+ box-sizing: border-box;
430
+ }
431
+
432
+ .presence-dot {
433
+ position: absolute;
434
+ bottom: -1px;
435
+ right: -1px;
436
+ width: 8px;
437
+ height: 8px;
438
+ border-radius: 50%;
439
+ border: 1.5px solid var(--bg-app);
440
+ }
441
+
442
+ .presence-dot.working { background-color: var(--google-green); animation: pulse-dot 1.8s ease-in-out infinite; }
443
+ .presence-dot.idle { background-color: var(--google-blue); }
444
+ .presence-dot.blocked { background-color: var(--google-red); }
445
+ .presence-dot.offline { background-color: var(--text-muted); }
446
+
447
+ @keyframes pulse-dot {
448
+ 0%, 100% { opacity: 1; transform: scale(1); }
449
+ 50% { opacity: 0.6; transform: scale(1.3); }
450
+ }
451
+
452
+ .presence-details {
453
+ display: flex;
454
+ flex-direction: column;
455
+ line-height: 1.2;
456
+ min-width: 0;
457
+ }
458
+
459
+ .presence-name {
460
+ font-weight: 600;
461
+ display: flex;
462
+ align-items: center;
463
+ gap: 3px;
464
+ }
465
+
466
+ /* Small live indicator dot next to agent name when Herdr is tracking it */
467
+ .herdr-live-dot {
468
+ font-size: 7px;
469
+ color: var(--google-green);
470
+ line-height: 1;
471
+ margin-left: 1px;
472
+ opacity: 0.8;
473
+ }
474
+
475
+ .presence-live .presence-name {
476
+ color: var(--text-main);
477
+ }
478
+
479
+ .presence-status-text {
480
+ font-size: 10.5px;
481
+ color: var(--text-muted);
482
+ white-space: nowrap;
483
+ overflow: hidden;
484
+ text-overflow: ellipsis;
485
+ max-width: 140px;
486
+ }
487
+
488
+ /* ─── Main Content ─────────────────────────────────────────────────────────── */
489
+ .app-main {
490
+ flex: 1;
491
+ min-height: 0;
492
+ min-width: 0;
493
+ background-color: var(--bg-surface);
494
+ border-top-left-radius: 16px;
495
+ display: flex;
496
+ flex-direction: column;
497
+ overflow: hidden;
498
+ box-shadow: -1px 0 3px rgba(0,0,0,0.02);
499
+ }
500
+
501
+ /* ─── Pull / Scroll Down to Reload ────────────────────────────────────────── */
502
+ .pull-to-refresh-indicator {
503
+ display: flex;
504
+ align-items: center;
505
+ justify-content: center;
506
+ width: 100%;
507
+ height: 0;
508
+ max-height: 0;
509
+ overflow: hidden;
510
+ background: linear-gradient(180deg, #e8f0fe 0%, #f8fafd 100%);
511
+ border-bottom: 1px solid transparent;
512
+ transition: height 0.25s cubic-bezier(0.2, 0.9, 0.3, 1), opacity 0.2s ease, max-height 0.25s cubic-bezier(0.2, 0.9, 0.3, 1);
513
+ opacity: 0;
514
+ flex-shrink: 0;
515
+ user-select: none;
516
+ z-index: 50;
517
+ cursor: pointer;
518
+ }
519
+
520
+ .pull-to-refresh-indicator.pulling {
521
+ opacity: 1;
522
+ border-bottom-color: #d3e3fd;
523
+ transition: none !important;
524
+ }
525
+
526
+ .pull-to-refresh-indicator.refreshing {
527
+ height: 46px !important;
528
+ max-height: 46px !important;
529
+ opacity: 1;
530
+ border-bottom-color: #c2e7ff;
531
+ }
532
+
533
+ .ptr-content {
534
+ display: flex;
535
+ align-items: center;
536
+ gap: 8px;
537
+ font-size: 13px;
538
+ font-weight: 500;
539
+ color: var(--google-blue);
540
+ }
541
+
542
+ .ptr-icon {
543
+ width: 18px;
544
+ height: 18px;
545
+ transition: transform 0.2s ease;
546
+ }
547
+
548
+ .pull-to-refresh-indicator.ready .ptr-icon {
549
+ transform: rotate(180deg);
550
+ }
551
+
552
+ .pull-to-refresh-indicator.refreshing .ptr-icon {
553
+ animation: ptr-spin 0.75s linear infinite;
554
+ }
555
+
556
+ @keyframes ptr-spin {
557
+ from { transform: rotate(0deg); }
558
+ to { transform: rotate(360deg); }
559
+ }
560
+
561
+ .category-tabs {
562
+ flex-shrink: 0;
563
+ display: flex;
564
+ height: 48px;
565
+ border-bottom: 1px solid var(--border-color);
566
+ background-color: var(--bg-surface);
567
+ }
568
+
569
+ .category-tab {
570
+ flex: 1;
571
+ max-width: 240px;
572
+ display: flex;
573
+ align-items: center;
574
+ gap: 10px;
575
+ padding: 0 16px;
576
+ border: none;
577
+ background: transparent;
578
+ cursor: pointer;
579
+ font-size: 13.5px;
580
+ font-weight: 600;
581
+ color: var(--text-secondary);
582
+ border-bottom: 3px solid transparent;
583
+ transition: all 0.2s;
584
+ }
585
+
586
+ .category-tab:hover {
587
+ background-color: var(--bg-hover);
588
+ }
589
+
590
+ .category-tab.active {
591
+ color: var(--primary-blue);
592
+ border-bottom-color: var(--primary-blue);
593
+ }
594
+
595
+ .mail-toolbar {
596
+ flex-shrink: 0;
597
+ height: 40px;
598
+ display: flex;
599
+ align-items: center;
600
+ justify-content: space-between;
601
+ padding: 0 16px;
602
+ border-bottom: 1px solid var(--border-light);
603
+ font-size: 12px;
604
+ color: var(--text-secondary);
605
+ }
606
+
607
+ .toolbar-left {
608
+ display: flex;
609
+ align-items: center;
610
+ gap: 12px;
611
+ }
612
+
613
+ .toolbar-filter-info {
614
+ font-size: 12px;
615
+ font-weight: 500;
616
+ color: var(--text-muted);
617
+ }
618
+
619
+ /* ─── Splitter View ────────────────────────────────────────────────────────── */
620
+ .content-splitter {
621
+ display: flex;
622
+ flex: 1;
623
+ min-height: 0;
624
+ min-width: 0;
625
+ overflow: hidden;
626
+ position: relative;
627
+ height: 100%;
628
+ }
629
+
630
+ .mail-list-container {
631
+ flex: 1;
632
+ min-height: 0;
633
+ min-width: 0;
634
+ overflow-y: auto;
635
+ overflow-x: hidden;
636
+ height: 100%;
637
+ -webkit-overflow-scrolling: touch;
638
+ }
639
+
640
+ .mail-list {
641
+ display: flex;
642
+ flex-direction: column;
643
+ }
644
+
645
+ .loading-state, .empty-state {
646
+ padding: 48px 16px;
647
+ text-align: center;
648
+ color: var(--text-muted);
649
+ font-size: 14px;
650
+ }
651
+
652
+ /* Email Item Row */
653
+ .mail-row {
654
+ display: flex;
655
+ align-items: center;
656
+ height: 42px;
657
+ padding: 0 16px;
658
+ border-bottom: 1px solid var(--border-light);
659
+ cursor: pointer;
660
+ font-size: 13.5px;
661
+ transition: background-color 0.1s, box-shadow 0.1s;
662
+ user-select: none;
663
+ }
664
+
665
+ .mail-row:hover {
666
+ background-color: var(--bg-hover);
667
+ box-shadow: inset 1px 0 0 #dadce0, inset -1px 0 0 #dadce0, 0 1px 2px 0 rgba(60,64,67,0.3);
668
+ }
669
+
670
+ .mail-row.unread {
671
+ background-color: var(--bg-surface);
672
+ font-weight: 700;
673
+ color: #000;
674
+ }
675
+
676
+ .mail-row.read {
677
+ background-color: #f7f9fc;
678
+ color: var(--text-secondary);
679
+ }
680
+
681
+ .mail-row-actions {
682
+ display: flex;
683
+ align-items: center;
684
+ gap: 8px;
685
+ margin-right: 12px;
686
+ }
687
+
688
+ .star-btn {
689
+ background: none;
690
+ border: none;
691
+ cursor: pointer;
692
+ font-size: 16px;
693
+ color: var(--text-muted);
694
+ line-height: 1;
695
+ }
696
+
697
+ .star-btn.starred {
698
+ color: var(--google-yellow);
699
+ }
700
+
701
+ .mail-sender {
702
+ width: 160px;
703
+ overflow: hidden;
704
+ text-overflow: ellipsis;
705
+ white-space: nowrap;
706
+ font-size: 13px;
707
+ flex-shrink: 0;
708
+ }
709
+
710
+ .mail-subject-wrap {
711
+ flex: 1;
712
+ display: flex;
713
+ align-items: center;
714
+ gap: 8px;
715
+ overflow: hidden;
716
+ text-overflow: ellipsis;
717
+ white-space: nowrap;
718
+ padding-right: 16px;
719
+ }
720
+
721
+ .mail-subject {
722
+ color: var(--text-main);
723
+ }
724
+
725
+ .mail-snippet {
726
+ color: var(--text-muted);
727
+ font-weight: 400;
728
+ }
729
+
730
+ .mail-badges {
731
+ display: flex;
732
+ align-items: center;
733
+ gap: 4px;
734
+ }
735
+
736
+ .tag-badge {
737
+ font-size: 10px;
738
+ font-weight: 700;
739
+ padding: 1px 6px;
740
+ border-radius: 4px;
741
+ text-transform: uppercase;
742
+ }
743
+
744
+ .tag-new {
745
+ background-color: #fce8e6;
746
+ color: var(--google-red);
747
+ }
748
+
749
+ .tag-gate {
750
+ background-color: #e6f4ea;
751
+ color: var(--google-green);
752
+ }
753
+
754
+ .mail-date {
755
+ font-size: 11.5px;
756
+ color: var(--text-muted);
757
+ width: 80px;
758
+ text-align: right;
759
+ flex-shrink: 0;
760
+ }
761
+
762
+ /* ─── Detail View ──────────────────────────────────────────────────────────── */
763
+ .mail-detail-container {
764
+ flex: 1;
765
+ min-height: 0;
766
+ min-width: 0;
767
+ height: 100%;
768
+ background-color: var(--bg-surface);
769
+ display: flex;
770
+ flex-direction: column;
771
+ overflow-y: auto;
772
+ overflow-x: hidden;
773
+ border-left: 1px solid var(--border-color);
774
+ -webkit-overflow-scrolling: touch;
775
+ }
776
+
777
+ .mail-detail-container.hidden {
778
+ display: none;
779
+ }
780
+
781
+ .detail-header {
782
+ padding: 16px 24px;
783
+ border-bottom: 1px solid var(--border-light);
784
+ }
785
+
786
+ .detail-header-actions {
787
+ display: flex;
788
+ align-items: center;
789
+ gap: 12px;
790
+ }
791
+
792
+ .detail-subject {
793
+ font-size: 18px;
794
+ font-weight: 600;
795
+ color: var(--text-main);
796
+ flex: 1;
797
+ }
798
+
799
+ .thread-badge {
800
+ font-family: var(--font-mono);
801
+ font-size: 11px;
802
+ background-color: #eaf1fb;
803
+ color: var(--primary-blue);
804
+ padding: 3px 8px;
805
+ border-radius: 12px;
806
+ }
807
+
808
+ .detail-body-wrapper {
809
+ padding: 24px;
810
+ display: flex;
811
+ flex-direction: column;
812
+ gap: 20px;
813
+ }
814
+
815
+ .message-meta-header {
816
+ display: flex;
817
+ align-items: center;
818
+ gap: 14px;
819
+ }
820
+
821
+ .sender-avatar {
822
+ width: 42px;
823
+ height: 42px;
824
+ border-radius: 50%;
825
+ background: var(--primary-blue);
826
+ color: #fff;
827
+ display: flex;
828
+ align-items: center;
829
+ justify-content: center;
830
+ font-weight: 700;
831
+ font-size: 18px;
832
+ flex-shrink: 0;
833
+ aspect-ratio: 1 / 1;
834
+ }
835
+
836
+ .sender-info {
837
+ display: flex;
838
+ flex-direction: column;
839
+ gap: 2px;
840
+ flex: 1;
841
+ }
842
+
843
+ .sender-name-row {
844
+ display: flex;
845
+ align-items: baseline;
846
+ gap: 8px;
847
+ }
848
+
849
+ .sender-handle {
850
+ font-size: 12px;
851
+ color: var(--text-muted);
852
+ }
853
+
854
+ .recipient-row {
855
+ display: flex;
856
+ justify-content: space-between;
857
+ font-size: 12px;
858
+ color: var(--text-secondary);
859
+ }
860
+
861
+ .detail-content {
862
+ font-size: 14px;
863
+ line-height: 1.6;
864
+ color: #202124;
865
+ white-space: pre-wrap;
866
+ font-family: var(--font-sans);
867
+ background: #fbfbfc;
868
+ padding: 18px;
869
+ border-radius: 8px;
870
+ border: 1px solid var(--border-light);
871
+ }
872
+
873
+ /* Smart Replies */
874
+ .smart-replies-container {
875
+ display: flex;
876
+ flex-direction: column;
877
+ gap: 8px;
878
+ background-color: #f7f9fd;
879
+ border: 1px solid #d3e3fd;
880
+ border-radius: 12px;
881
+ padding: 12px 16px;
882
+ }
883
+
884
+ .smart-reply-label {
885
+ font-size: 12px;
886
+ font-weight: 700;
887
+ color: var(--primary-blue);
888
+ }
889
+
890
+ .smart-replies-chips {
891
+ display: flex;
892
+ flex-wrap: wrap;
893
+ gap: 8px;
894
+ }
895
+
896
+ .chip {
897
+ background: #ffffff;
898
+ border: 1px solid #c2e7ff;
899
+ border-radius: 16px;
900
+ padding: 6px 14px;
901
+ font-size: 12px;
902
+ color: #001d35;
903
+ cursor: pointer;
904
+ font-weight: 500;
905
+ transition: all 0.15s;
906
+ }
907
+
908
+ .chip:hover {
909
+ background: #e8f0fe;
910
+ border-color: var(--primary-blue);
911
+ }
912
+
913
+ /* In-page Quick Reply Box */
914
+ .quick-reply-box {
915
+ border: 1px solid var(--border-color);
916
+ border-radius: 12px;
917
+ padding: 16px;
918
+ display: flex;
919
+ flex-direction: column;
920
+ gap: 12px;
921
+ background-color: #ffffff;
922
+ }
923
+
924
+ .quick-reply-header {
925
+ font-size: 13px;
926
+ color: var(--text-secondary);
927
+ }
928
+
929
+ .current-reply-me {
930
+ font-weight: 700;
931
+ color: var(--primary-blue);
932
+ }
933
+
934
+ .quick-reply-box textarea {
935
+ border: 1px solid var(--border-color);
936
+ border-radius: 8px;
937
+ padding: 12px;
938
+ font-family: var(--font-sans);
939
+ font-size: 13.5px;
940
+ resize: vertical;
941
+ outline: none;
942
+ }
943
+
944
+ .quick-reply-box textarea:focus {
945
+ border-color: var(--primary-blue);
946
+ }
947
+
948
+ .quick-reply-actions {
949
+ display: flex;
950
+ justify-content: flex-end;
951
+ }
952
+
953
+ .btn {
954
+ display: inline-flex;
955
+ align-items: center;
956
+ gap: 8px;
957
+ border: none;
958
+ border-radius: 18px;
959
+ padding: 8px 20px;
960
+ font-size: 13px;
961
+ font-weight: 600;
962
+ cursor: pointer;
963
+ transition: all 0.15s;
964
+ }
965
+
966
+ .btn-primary {
967
+ background-color: var(--primary-blue);
968
+ color: #ffffff;
969
+ }
970
+
971
+ .btn-primary:hover {
972
+ background-color: var(--primary-blue-hover);
973
+ box-shadow: 0 1px 2px rgba(0,0,0,0.2);
974
+ }
975
+
976
+ .btn svg {
977
+ width: 16px;
978
+ height: 16px;
979
+ }
980
+
981
+ /* ─── Floating Compose Modal ───────────────────────────────────────────────── */
982
+ .compose-modal {
983
+ position: fixed;
984
+ bottom: 0;
985
+ right: 64px;
986
+ width: 520px;
987
+ background-color: #ffffff;
988
+ border-radius: 12px 12px 0 0;
989
+ box-shadow: 0 8px 10px 1px rgba(0,0,0,0.14), 0 3px 14px 2px rgba(0,0,0,0.12), 0 5px 5px -3px rgba(0,0,0,0.2);
990
+ display: flex;
991
+ flex-direction: column;
992
+ z-index: 1000;
993
+ border: 1px solid var(--border-color);
994
+ border-bottom: none;
995
+ }
996
+
997
+ .compose-modal.hidden {
998
+ display: none;
999
+ }
1000
+
1001
+ .compose-header {
1002
+ background-color: #f2f6fc;
1003
+ padding: 10px 16px;
1004
+ border-radius: 12px 12px 0 0;
1005
+ display: flex;
1006
+ justify-content: space-between;
1007
+ align-items: center;
1008
+ font-weight: 600;
1009
+ font-size: 13.5px;
1010
+ color: #202124;
1011
+ }
1012
+
1013
+ .compose-header-btns button {
1014
+ background: none;
1015
+ border: none;
1016
+ font-size: 14px;
1017
+ cursor: pointer;
1018
+ color: var(--text-secondary);
1019
+ }
1020
+
1021
+ .compose-form {
1022
+ padding: 12px 16px;
1023
+ display: flex;
1024
+ flex-direction: column;
1025
+ gap: 10px;
1026
+ }
1027
+
1028
+ .compose-field {
1029
+ display: flex;
1030
+ align-items: center;
1031
+ border-bottom: 1px solid var(--border-light);
1032
+ padding-bottom: 6px;
1033
+ font-size: 13px;
1034
+ }
1035
+
1036
+ .compose-field label {
1037
+ width: 60px;
1038
+ color: var(--text-muted);
1039
+ }
1040
+
1041
+ .compose-field input, .compose-field select {
1042
+ flex: 1;
1043
+ border: none;
1044
+ outline: none;
1045
+ font-size: 13px;
1046
+ font-family: var(--font-sans);
1047
+ background: transparent;
1048
+ }
1049
+
1050
+ .compose-textarea-wrap textarea {
1051
+ width: 100%;
1052
+ border: none;
1053
+ outline: none;
1054
+ font-family: var(--font-sans);
1055
+ font-size: 13.5px;
1056
+ resize: vertical;
1057
+ }
1058
+
1059
+ .compose-footer {
1060
+ display: flex;
1061
+ justify-content: flex-end;
1062
+ padding-top: 8px;
1063
+ border-top: 1px solid var(--border-light);
1064
+ }
1065
+
1066
+ .hidden {
1067
+ display: none !important;
1068
+ }
1069
+
1070
+ /* ─── Google Account Dropdown ──────────────────────────────────────────────── */
1071
+ .account-menu-wrapper {
1072
+ position: relative;
1073
+ }
1074
+
1075
+ .account-profile-btn {
1076
+ display: flex;
1077
+ align-items: center;
1078
+ gap: 8px;
1079
+ background: transparent;
1080
+ border: 1px solid var(--border-color);
1081
+ border-radius: 20px;
1082
+ padding: 3px 4px 3px 12px;
1083
+ cursor: pointer;
1084
+ transition: all 0.15s;
1085
+ }
1086
+
1087
+ .account-profile-btn:hover {
1088
+ background-color: var(--bg-hover);
1089
+ border-color: #c0c4cc;
1090
+ }
1091
+
1092
+ .account-header-label {
1093
+ font-size: 13px;
1094
+ font-weight: 600;
1095
+ color: var(--text-main);
1096
+ max-width: 140px;
1097
+ overflow: hidden;
1098
+ text-overflow: ellipsis;
1099
+ white-space: nowrap;
1100
+ }
1101
+
1102
+ .account-dropdown {
1103
+ position: absolute;
1104
+ top: 48px;
1105
+ right: 0;
1106
+ width: 330px;
1107
+ background: #ffffff;
1108
+ border-radius: 16px;
1109
+ box-shadow: 0 4px 16px rgba(60,64,67,0.18), 0 8px 32px rgba(60,64,67,0.12);
1110
+ border: 1px solid var(--border-color);
1111
+ z-index: 2000;
1112
+ display: flex;
1113
+ flex-direction: column;
1114
+ overflow: hidden;
1115
+ animation: dropdownFade 0.15s ease-out;
1116
+ }
1117
+
1118
+ @keyframes dropdownFade {
1119
+ from { opacity: 0; transform: translateY(-6px); }
1120
+ to { opacity: 1; transform: translateY(0); }
1121
+ }
1122
+
1123
+ .account-dropdown.hidden {
1124
+ display: none;
1125
+ }
1126
+
1127
+ .account-dropdown-header {
1128
+ padding: 18px 16px 14px;
1129
+ display: flex;
1130
+ flex-direction: column;
1131
+ align-items: center;
1132
+ text-align: center;
1133
+ background: #f8fafd;
1134
+ border-bottom: 1px solid var(--border-light);
1135
+ }
1136
+
1137
+ .large-avatar {
1138
+ width: 56px;
1139
+ height: 56px;
1140
+ min-width: 56px;
1141
+ min-height: 56px;
1142
+ flex-shrink: 0;
1143
+ aspect-ratio: 1 / 1;
1144
+ border-radius: 50%;
1145
+ background: var(--primary-blue);
1146
+ color: #fff;
1147
+ font-size: 24px;
1148
+ display: flex;
1149
+ align-items: center;
1150
+ justify-content: center;
1151
+ font-weight: 700;
1152
+ margin-bottom: 8px;
1153
+ box-shadow: 0 2px 5px rgba(0,0,0,0.12);
1154
+ box-sizing: border-box;
1155
+ }
1156
+
1157
+ .account-dropdown-user-info {
1158
+ display: flex;
1159
+ flex-direction: column;
1160
+ align-items: center;
1161
+ gap: 2px;
1162
+ }
1163
+
1164
+ .account-dropdown-email {
1165
+ font-size: 12px;
1166
+ color: var(--text-muted);
1167
+ }
1168
+
1169
+ .account-badge-pill {
1170
+ margin-top: 6px;
1171
+ font-size: 11px;
1172
+ font-weight: 600;
1173
+ background: #e8f0fe;
1174
+ color: var(--primary-blue);
1175
+ padding: 2px 8px;
1176
+ border-radius: 10px;
1177
+ }
1178
+
1179
+ .account-dropdown-divider {
1180
+ font-size: 11px;
1181
+ font-weight: 700;
1182
+ color: var(--text-muted);
1183
+ letter-spacing: 0.6px;
1184
+ padding: 10px 16px 4px;
1185
+ background: #fff;
1186
+ }
1187
+
1188
+ .account-dropdown-list {
1189
+ max-height: 280px;
1190
+ overflow-y: auto;
1191
+ display: flex;
1192
+ flex-direction: column;
1193
+ padding: 4px 8px;
1194
+ }
1195
+
1196
+ .account-item-btn {
1197
+ display: flex;
1198
+ align-items: center;
1199
+ justify-content: space-between;
1200
+ padding: 8px 12px;
1201
+ border-radius: 10px;
1202
+ border: none;
1203
+ background: transparent;
1204
+ cursor: pointer;
1205
+ width: 100%;
1206
+ text-align: left;
1207
+ transition: background 0.12s;
1208
+ }
1209
+
1210
+ .account-item-btn:hover {
1211
+ background: var(--bg-hover);
1212
+ }
1213
+
1214
+ .account-item-btn.active {
1215
+ background: #eaf1fb;
1216
+ font-weight: 700;
1217
+ }
1218
+
1219
+ .account-item-left {
1220
+ display: flex;
1221
+ align-items: center;
1222
+ gap: 10px;
1223
+ min-width: 0;
1224
+ flex: 1;
1225
+ overflow: hidden;
1226
+ }
1227
+
1228
+ .account-item-left strong {
1229
+ display: block;
1230
+ overflow: hidden;
1231
+ text-overflow: ellipsis;
1232
+ white-space: nowrap;
1233
+ font-size: 13px;
1234
+ color: var(--text-main);
1235
+ }
1236
+
1237
+ .account-item-left div:not(.item-avatar) {
1238
+ min-width: 0;
1239
+ overflow: hidden;
1240
+ text-overflow: ellipsis;
1241
+ white-space: nowrap;
1242
+ }
1243
+
1244
+ .item-avatar {
1245
+ width: 28px;
1246
+ height: 28px;
1247
+ min-width: 28px;
1248
+ min-height: 28px;
1249
+ max-width: 28px;
1250
+ max-height: 28px;
1251
+ flex-shrink: 0;
1252
+ aspect-ratio: 1 / 1;
1253
+ border-radius: 50%;
1254
+ background: #dfe3e8;
1255
+ color: #3c4043;
1256
+ display: flex;
1257
+ align-items: center;
1258
+ justify-content: center;
1259
+ font-weight: 700;
1260
+ font-size: 11px;
1261
+ box-sizing: border-box;
1262
+ }
1263
+
1264
+ .account-dropdown-footer {
1265
+ padding: 10px 16px;
1266
+ background: #f8fafd;
1267
+ border-top: 1px solid var(--border-light);
1268
+ font-size: 11px;
1269
+ color: var(--text-muted);
1270
+ text-align: center;
1271
+ }
1272
+
1273
+ /* ─── View Mode Toggles ────────────────────────────────────────────────────── */
1274
+ .view-mode-group {
1275
+ display: flex;
1276
+ background: #eaf1fb;
1277
+ border-radius: 16px;
1278
+ padding: 2px;
1279
+ gap: 2px;
1280
+ }
1281
+
1282
+ .view-mode-btn {
1283
+ display: flex;
1284
+ align-items: center;
1285
+ gap: 6px;
1286
+ border: none;
1287
+ background: transparent;
1288
+ padding: 4px 10px;
1289
+ border-radius: 14px;
1290
+ font-size: 12px;
1291
+ font-weight: 600;
1292
+ color: var(--text-secondary);
1293
+ cursor: pointer;
1294
+ transition: all 0.15s;
1295
+ }
1296
+
1297
+ .view-mode-btn svg {
1298
+ width: 14px;
1299
+ height: 14px;
1300
+ }
1301
+
1302
+ .view-mode-btn.active {
1303
+ background: #ffffff;
1304
+ color: var(--primary-blue);
1305
+ box-shadow: 0 1px 2px rgba(0,0,0,0.1);
1306
+ }
1307
+
1308
+ /* ─── Conversation Thread Cards ────────────────────────────────────────────── */
1309
+ .thread-messages-list {
1310
+ display: flex;
1311
+ flex-direction: column;
1312
+ gap: 12px;
1313
+ }
1314
+
1315
+ .thread-card {
1316
+ border: 1px solid var(--border-light);
1317
+ border-radius: 10px;
1318
+ background: #ffffff;
1319
+ overflow: hidden;
1320
+ transition: box-shadow 0.15s, border-color 0.15s;
1321
+ }
1322
+
1323
+ .thread-card:hover {
1324
+ border-color: #dadce0;
1325
+ }
1326
+
1327
+ .thread-card-header {
1328
+ display: flex;
1329
+ align-items: center;
1330
+ justify-content: space-between;
1331
+ padding: 10px 16px;
1332
+ background: #fbfbfc;
1333
+ cursor: pointer;
1334
+ user-select: none;
1335
+ gap: 12px;
1336
+ }
1337
+
1338
+ .thread-card-header:hover {
1339
+ background: #f2f6fc;
1340
+ }
1341
+
1342
+ .thread-card-header-left {
1343
+ display: flex;
1344
+ align-items: center;
1345
+ gap: 10px;
1346
+ flex: 1;
1347
+ overflow: hidden;
1348
+ }
1349
+
1350
+ .thread-card-avatar {
1351
+ width: 32px;
1352
+ height: 32px;
1353
+ border-radius: 50%;
1354
+ background: var(--primary-blue);
1355
+ color: #fff;
1356
+ display: flex;
1357
+ align-items: center;
1358
+ justify-content: center;
1359
+ font-weight: 700;
1360
+ font-size: 13px;
1361
+ flex-shrink: 0;
1362
+ }
1363
+
1364
+ .thread-card-author {
1365
+ font-weight: 600;
1366
+ font-size: 13.5px;
1367
+ color: var(--text-main);
1368
+ white-space: nowrap;
1369
+ }
1370
+
1371
+ .thread-card-snippet {
1372
+ font-size: 13px;
1373
+ color: var(--text-muted);
1374
+ overflow: hidden;
1375
+ text-overflow: ellipsis;
1376
+ white-space: nowrap;
1377
+ flex: 1;
1378
+ }
1379
+
1380
+ .thread-card-date {
1381
+ font-size: 12px;
1382
+ color: var(--text-muted);
1383
+ white-space: nowrap;
1384
+ }
1385
+
1386
+ .thread-card-body {
1387
+ padding: 16px;
1388
+ border-top: 1px solid var(--border-light);
1389
+ font-size: 14px;
1390
+ line-height: 1.6;
1391
+ white-space: pre-wrap;
1392
+ background: #ffffff;
1393
+ color: #202124;
1394
+ }
1395
+
1396
+ .thread-card.collapsed .thread-card-body {
1397
+ display: none;
1398
+ }
1399
+
1400
+ .thread-card.expanded {
1401
+ box-shadow: 0 1px 3px rgba(60,64,67,0.12);
1402
+ border-color: #c2e7ff;
1403
+ }
1404
+
1405
+ .thread-card.expanded .thread-card-header {
1406
+ background: #f8fafd;
1407
+ }
1408
+
1409
+ .thread-count-badge {
1410
+ font-size: 12px;
1411
+ color: var(--text-muted);
1412
+ margin-left: 4px;
1413
+ font-weight: 600;
1414
+ }
1415
+
1416
+ /* ─── Google Search Autocomplete Dropdown ──────────────────────────────────── */
1417
+ .search-bar.dropdown-open {
1418
+ border-radius: 24px 24px 0 0;
1419
+ box-shadow: 0 2px 6px rgba(60,64,67,0.15);
1420
+ background-color: var(--bg-surface);
1421
+ }
1422
+
1423
+ .search-autocomplete-dropdown {
1424
+ position: absolute;
1425
+ top: 46px;
1426
+ left: 20px;
1427
+ right: 20px;
1428
+ background-color: #ffffff;
1429
+ border-radius: 0 0 24px 24px;
1430
+ box-shadow: 0 4px 14px 1px rgba(60,64,67,0.18), 0 1px 4px 0 rgba(60,64,67,0.25);
1431
+ border-top: 1px solid #e8eaed;
1432
+ z-index: 1000;
1433
+ overflow: hidden;
1434
+ max-height: 380px;
1435
+ overflow-y: auto;
1436
+ }
1437
+
1438
+ .search-autocomplete-dropdown.hidden {
1439
+ display: none;
1440
+ }
1441
+
1442
+ .search-suggestions-list {
1443
+ display: flex;
1444
+ flex-direction: column;
1445
+ padding: 6px 0 8px 0;
1446
+ }
1447
+
1448
+ .suggestion-item {
1449
+ display: flex;
1450
+ align-items: center;
1451
+ padding: 8px 18px;
1452
+ cursor: pointer;
1453
+ gap: 14px;
1454
+ transition: background-color 0.12s;
1455
+ user-select: none;
1456
+ }
1457
+
1458
+ .suggestion-item:hover,
1459
+ .suggestion-item.selected {
1460
+ background-color: #f1f3f4;
1461
+ }
1462
+
1463
+ .suggestion-icon {
1464
+ font-size: 16px;
1465
+ width: 20px;
1466
+ text-align: center;
1467
+ color: #5f6368;
1468
+ flex-shrink: 0;
1469
+ }
1470
+
1471
+ .suggestion-content {
1472
+ display: flex;
1473
+ align-items: baseline;
1474
+ flex: 1;
1475
+ overflow: hidden;
1476
+ gap: 8px;
1477
+ }
1478
+
1479
+ .suggestion-token {
1480
+ font-size: 14px;
1481
+ font-weight: 500;
1482
+ color: #202124;
1483
+ white-space: nowrap;
1484
+ }
1485
+
1486
+ .suggestion-desc {
1487
+ font-size: 12px;
1488
+ color: #70757a;
1489
+ white-space: nowrap;
1490
+ overflow: hidden;
1491
+ text-overflow: ellipsis;
1492
+ margin-left: auto;
1493
+ }
1494
+
1495
+ .suggestion-group-title {
1496
+ font-size: 11px;
1497
+ font-weight: 700;
1498
+ text-transform: uppercase;
1499
+ letter-spacing: 0.6px;
1500
+ color: #70757a;
1501
+ padding: 8px 18px 4px 18px;
1502
+ }
1503
+
1504
+ /* ─── Markdown Tables ──────────────────────────────────────────────────────── */
1505
+ .table-container {
1506
+ max-width: 100%;
1507
+ overflow-x: auto;
1508
+ margin: 14px 0;
1509
+ border-radius: 8px;
1510
+ border: 1px solid var(--border-color);
1511
+ background: #ffffff;
1512
+ }
1513
+
1514
+ .md-table {
1515
+ width: 100%;
1516
+ border-collapse: collapse;
1517
+ font-size: 13px;
1518
+ line-height: 1.5;
1519
+ text-align: left;
1520
+ }
1521
+
1522
+ .md-table th {
1523
+ background-color: #f8f9fa;
1524
+ color: var(--text-main);
1525
+ font-weight: 600;
1526
+ padding: 10px 14px;
1527
+ border-bottom: 2px solid var(--border-color);
1528
+ white-space: nowrap;
1529
+ }
1530
+
1531
+ .md-table td {
1532
+ padding: 9px 14px;
1533
+ border-bottom: 1px solid #f1f3f4;
1534
+ color: #3c4043;
1535
+ }
1536
+
1537
+ .md-table tbody tr:last-child td {
1538
+ border-bottom: none;
1539
+ }
1540
+
1541
+ .md-table tbody tr:hover {
1542
+ background-color: #f8fafd;
1543
+ }
1544
+
1545
+ /* ─── Markdown Elements ────────────────────────────────────────────────────── */
1546
+ .md-content {
1547
+ font-size: 14px;
1548
+ line-height: 1.65;
1549
+ color: #202124;
1550
+ word-break: break-word;
1551
+ }
1552
+
1553
+ .md-h1 {
1554
+ font-size: 18px;
1555
+ font-weight: 700;
1556
+ margin: 14px 0 8px;
1557
+ color: #1a73e8;
1558
+ }
1559
+
1560
+ .md-h2 {
1561
+ font-size: 16px;
1562
+ font-weight: 700;
1563
+ margin: 12px 0 6px;
1564
+ color: #202124;
1565
+ }
1566
+
1567
+ .md-h3 {
1568
+ font-size: 14.5px;
1569
+ font-weight: 700;
1570
+ margin: 10px 0 4px;
1571
+ color: #3c4043;
1572
+ }
1573
+
1574
+ .md-quote {
1575
+ border-left: 3px solid var(--primary-blue);
1576
+ padding: 4px 12px;
1577
+ margin: 8px 0;
1578
+ color: #5f6368;
1579
+ background: #f8fafd;
1580
+ border-radius: 0 4px 4px 0;
1581
+ }
1582
+
1583
+ .md-list-item {
1584
+ margin: 4px 0;
1585
+ display: flex;
1586
+ gap: 6px;
1587
+ line-height: 1.5;
1588
+ }
1589
+
1590
+ .md-list-num {
1591
+ font-weight: 700;
1592
+ color: var(--primary-blue);
1593
+ flex-shrink: 0;
1594
+ }
1595
+
1596
+ .md-bullet-item {
1597
+ margin: 3px 0 3px 14px;
1598
+ line-height: 1.5;
1599
+ }
1600
+
1601
+ .md-link {
1602
+ color: var(--primary-blue);
1603
+ text-decoration: underline;
1604
+ }
1605
+
1606
+ .md-para-break {
1607
+ height: 10px;
1608
+ }
1609
+
1610
+ .inline-code {
1611
+ font-family: var(--font-mono);
1612
+ font-size: 12.5px;
1613
+ background: #f1f3f4;
1614
+ color: #c5221f;
1615
+ padding: 2px 6px;
1616
+ border-radius: 4px;
1617
+ border: 1px solid #e0e3e7;
1618
+ }
1619
+
1620
+ /* Code Blocks with Copy Button */
1621
+ .code-block-wrapper {
1622
+ margin: 12px 0;
1623
+ border-radius: 8px;
1624
+ overflow: hidden;
1625
+ border: 1px solid #3c4043;
1626
+ background: #202124;
1627
+ color: #e8eaed;
1628
+ }
1629
+
1630
+ .code-block-header {
1631
+ display: flex;
1632
+ align-items: center;
1633
+ justify-content: space-between;
1634
+ padding: 6px 12px;
1635
+ background: #2d2f31;
1636
+ border-bottom: 1px solid #3c4043;
1637
+ font-size: 11px;
1638
+ }
1639
+
1640
+ .code-lang {
1641
+ font-family: var(--font-mono);
1642
+ font-weight: 600;
1643
+ color: #9aa0a6;
1644
+ text-transform: uppercase;
1645
+ }
1646
+
1647
+ .copy-code-btn {
1648
+ background: transparent;
1649
+ border: 1px solid #5f6368;
1650
+ color: #e8eaed;
1651
+ border-radius: 4px;
1652
+ padding: 2px 8px;
1653
+ font-size: 11px;
1654
+ cursor: pointer;
1655
+ transition: all 0.15s;
1656
+ }
1657
+
1658
+ .copy-code-btn:hover {
1659
+ background: #3c4043;
1660
+ color: #fff;
1661
+ }
1662
+
1663
+ .code-block-wrapper pre {
1664
+ padding: 12px;
1665
+ overflow-x: auto;
1666
+ font-family: var(--font-mono);
1667
+ font-size: 12.5px;
1668
+ line-height: 1.5;
1669
+ }
1670
+
1671
+ /* ─── Attachments & Evidence Section ───────────────────────────────────────── */
1672
+ .attachments-container {
1673
+ margin-top: 14px;
1674
+ padding-top: 12px;
1675
+ border-top: 1px dashed var(--border-color);
1676
+ display: flex;
1677
+ flex-direction: column;
1678
+ gap: 10px;
1679
+ }
1680
+
1681
+ .attachments-header {
1682
+ display: flex;
1683
+ align-items: center;
1684
+ gap: 8px;
1685
+ font-size: 12px;
1686
+ font-weight: 700;
1687
+ color: var(--text-secondary);
1688
+ }
1689
+
1690
+ .attachments-header svg {
1691
+ width: 16px;
1692
+ height: 16px;
1693
+ fill: var(--text-secondary);
1694
+ }
1695
+
1696
+ .attachment-gallery {
1697
+ display: flex;
1698
+ flex-wrap: wrap;
1699
+ gap: 12px;
1700
+ }
1701
+
1702
+ .attachment-image-card {
1703
+ width: 130px;
1704
+ border: 1px solid var(--border-color);
1705
+ border-radius: 8px;
1706
+ overflow: hidden;
1707
+ cursor: pointer;
1708
+ background: #f8fafd;
1709
+ transition: transform 0.15s, box-shadow 0.15s;
1710
+ }
1711
+
1712
+ .attachment-image-card:hover {
1713
+ transform: translateY(-2px);
1714
+ box-shadow: 0 4px 8px rgba(60,64,67,0.15);
1715
+ border-color: var(--primary-blue);
1716
+ }
1717
+
1718
+ .attachment-thumb-wrap {
1719
+ width: 100%;
1720
+ height: 80px;
1721
+ background: #eaeff8;
1722
+ display: flex;
1723
+ align-items: center;
1724
+ justify-content: center;
1725
+ overflow: hidden;
1726
+ }
1727
+
1728
+ .attachment-thumb-wrap img {
1729
+ width: 100%;
1730
+ height: 100%;
1731
+ object-fit: cover;
1732
+ }
1733
+
1734
+ .broken-img {
1735
+ font-size: 10px;
1736
+ color: var(--text-muted);
1737
+ text-align: center;
1738
+ padding: 6px;
1739
+ }
1740
+
1741
+ .attachment-filename {
1742
+ display: block;
1743
+ padding: 4px 6px;
1744
+ font-size: 11px;
1745
+ color: var(--text-main);
1746
+ overflow: hidden;
1747
+ text-overflow: ellipsis;
1748
+ white-space: nowrap;
1749
+ }
1750
+
1751
+ .attachment-files-list {
1752
+ display: flex;
1753
+ flex-wrap: wrap;
1754
+ gap: 8px;
1755
+ }
1756
+
1757
+ .attachment-file-chip {
1758
+ display: flex;
1759
+ align-items: center;
1760
+ gap: 6px;
1761
+ padding: 5px 12px;
1762
+ background: #f1f3f4;
1763
+ border: 1px solid var(--border-color);
1764
+ border-radius: 14px;
1765
+ font-size: 12px;
1766
+ color: var(--text-main);
1767
+ text-decoration: none;
1768
+ transition: all 0.15s;
1769
+ }
1770
+
1771
+ .attachment-file-chip:hover {
1772
+ background: #e8f0fe;
1773
+ border-color: var(--primary-blue);
1774
+ color: var(--primary-blue);
1775
+ }
1776
+
1777
+ .file-icon { font-size: 14px; }
1778
+ .file-name { font-weight: 500; }
1779
+ .file-size { font-size: 11px; color: var(--text-muted); margin-left: 2px; }
1780
+ .file-action { font-size: 12px; opacity: 0.7; }
1781
+
1782
+ /* ─── Broken / Missing Attachment Styling ──────────────────────────────────── */
1783
+ .attachment-file-chip.missing {
1784
+ background: #fef7e0;
1785
+ border: 1px dashed #d97706;
1786
+ color: #92400e;
1787
+ cursor: not-allowed;
1788
+ opacity: 0.9;
1789
+ }
1790
+ .attachment-file-chip.missing:hover {
1791
+ background: #fef3c7;
1792
+ border-color: #b45309;
1793
+ }
1794
+ .file-missing-badge {
1795
+ font-size: 10px;
1796
+ font-weight: 700;
1797
+ background: #fed7aa;
1798
+ color: #9a3412;
1799
+ padding: 1px 6px;
1800
+ border-radius: 8px;
1801
+ margin-left: 6px;
1802
+ text-transform: uppercase;
1803
+ letter-spacing: 0.3px;
1804
+ }
1805
+
1806
+ .attachment-image-card.missing {
1807
+ border: 1px dashed #f59e0b;
1808
+ background-color: #fffbeb;
1809
+ cursor: not-allowed;
1810
+ }
1811
+ .attachment-thumb-wrap.missing-thumb {
1812
+ display: flex;
1813
+ flex-direction: column;
1814
+ align-items: center;
1815
+ justify-content: center;
1816
+ background-color: #fef3c7;
1817
+ color: #b45309;
1818
+ gap: 4px;
1819
+ padding: 10px;
1820
+ text-align: center;
1821
+ min-height: 80px;
1822
+ }
1823
+ .missing-thumb-icon {
1824
+ font-size: 22px;
1825
+ }
1826
+ .missing-thumb-text {
1827
+ font-size: 11px;
1828
+ font-weight: 600;
1829
+ color: #92400e;
1830
+ }
1831
+
1832
+ /* ─── Search Term Highlighting ─────────────────────────────────────────────── */
1833
+ mark.search-highlight {
1834
+ background-color: #fff0b3;
1835
+ color: #202124;
1836
+ padding: 0 2px;
1837
+ border-radius: 2px;
1838
+ font-weight: 600;
1839
+ }
1840
+
1841
+ /* ─── Sidebar Storage Footer ───────────────────────────────────────────────── */
1842
+ .sidebar-storage-footer {
1843
+ margin-top: auto;
1844
+ padding: 14px 12px 6px 12px;
1845
+ border-top: 1px solid var(--border-color);
1846
+ font-size: 11.5px;
1847
+ color: var(--text-secondary);
1848
+ }
1849
+
1850
+ .storage-bar-track {
1851
+ width: 100%;
1852
+ height: 4px;
1853
+ background-color: #dadce0;
1854
+ border-radius: 2px;
1855
+ overflow: hidden;
1856
+ margin-bottom: 6px;
1857
+ }
1858
+
1859
+ .storage-bar-fill {
1860
+ height: 100%;
1861
+ background-color: var(--primary-blue);
1862
+ border-radius: 2px;
1863
+ transition: width 0.3s ease;
1864
+ }
1865
+
1866
+ .storage-label {
1867
+ font-size: 11.5px;
1868
+ color: var(--text-secondary);
1869
+ font-weight: 500;
1870
+ }
1871
+
1872
+ /* ─── Lightbox Modal ───────────────────────────────────────────────────────── */
1873
+ .lightbox-modal {
1874
+ position: fixed;
1875
+ top: 0;
1876
+ left: 0;
1877
+ width: 100vw;
1878
+ height: 100vh;
1879
+ z-index: 5000;
1880
+ display: flex;
1881
+ align-items: center;
1882
+ justify-content: center;
1883
+ }
1884
+
1885
+ .lightbox-backdrop {
1886
+ position: absolute;
1887
+ top: 0;
1888
+ left: 0;
1889
+ width: 100%;
1890
+ height: 100%;
1891
+ background: rgba(0, 0, 0, 0.75);
1892
+ backdrop-filter: blur(2px);
1893
+ }
1894
+
1895
+ .lightbox-box {
1896
+ position: relative;
1897
+ z-index: 5001;
1898
+ max-width: 90vw;
1899
+ max-height: 90vh;
1900
+ background: #202124;
1901
+ border-radius: 12px;
1902
+ overflow: hidden;
1903
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
1904
+ display: flex;
1905
+ flex-direction: column;
1906
+ }
1907
+
1908
+ .lightbox-topbar {
1909
+ display: flex;
1910
+ align-items: center;
1911
+ justify-content: space-between;
1912
+ padding: 10px 16px;
1913
+ background: #2d2f31;
1914
+ color: #fff;
1915
+ border-bottom: 1px solid #3c4043;
1916
+ }
1917
+
1918
+ .lightbox-title {
1919
+ font-size: 13px;
1920
+ font-weight: 600;
1921
+ }
1922
+
1923
+ .lightbox-top-actions {
1924
+ display: flex;
1925
+ align-items: center;
1926
+ gap: 12px;
1927
+ }
1928
+
1929
+ .lightbox-btn {
1930
+ color: #8ab4f8;
1931
+ text-decoration: none;
1932
+ font-size: 12px;
1933
+ font-weight: 600;
1934
+ }
1935
+
1936
+ .lightbox-close-btn {
1937
+ background: none;
1938
+ border: none;
1939
+ color: #fff;
1940
+ font-size: 16px;
1941
+ cursor: pointer;
1942
+ }
1943
+
1944
+ .lightbox-img-wrapper {
1945
+ padding: 16px;
1946
+ display: flex;
1947
+ align-items: center;
1948
+ justify-content: center;
1949
+ overflow: auto;
1950
+ }
1951
+
1952
+ .lightbox-img-wrapper img {
1953
+ max-width: 85vw;
1954
+ max-height: 80vh;
1955
+ object-fit: contain;
1956
+ border-radius: 4px;
1957
+ }
1958
+
1959
+ /* ─── Pagination Toolbar Controls ──────────────────────────────────────────── */
1960
+ .pagination-controls {
1961
+ display: flex;
1962
+ align-items: center;
1963
+ gap: 4px;
1964
+ margin-left: 8px;
1965
+ }
1966
+
1967
+ .pagination-controls .icon-btn-small {
1968
+ width: 28px;
1969
+ height: 28px;
1970
+ border-radius: 50%;
1971
+ border: 1px solid transparent;
1972
+ background: transparent;
1973
+ color: var(--text-secondary);
1974
+ display: flex;
1975
+ align-items: center;
1976
+ justify-content: center;
1977
+ cursor: pointer;
1978
+ transition: background-color 0.15s ease;
1979
+ }
1980
+
1981
+ .pagination-controls .icon-btn-small:hover:not(:disabled) {
1982
+ background-color: var(--bg-hover);
1983
+ color: var(--text-main);
1984
+ border-color: var(--border-color);
1985
+ }
1986
+
1987
+ .pagination-controls .icon-btn-small:disabled {
1988
+ opacity: 0.35;
1989
+ cursor: not-allowed;
1990
+ }
1991
+
1992
+ .section-add-btn {
1993
+ background: transparent;
1994
+ border: 1px solid var(--border-color);
1995
+ color: var(--text-secondary);
1996
+ width: 20px;
1997
+ height: 20px;
1998
+ border-radius: 4px;
1999
+ display: flex;
2000
+ align-items: center;
2001
+ justify-content: center;
2002
+ font-size: 14px;
2003
+ font-weight: 700;
2004
+ cursor: pointer;
2005
+ line-height: 1;
2006
+ transition: all 0.15s ease;
2007
+ }
2008
+
2009
+ .section-add-btn:hover {
2010
+ background: var(--blue-surface);
2011
+ color: var(--primary-blue);
2012
+ border-color: var(--primary-blue);
2013
+ }
2014
+
2015
+ .worktree-badge {
2016
+ display: inline-flex;
2017
+ align-items: center;
2018
+ gap: 3px;
2019
+ background: #e6f4ea;
2020
+ color: #137333;
2021
+ font-size: 10px;
2022
+ font-weight: 600;
2023
+ padding: 1px 5px;
2024
+ border-radius: 10px;
2025
+ margin-top: 2px;
2026
+ border: 1px solid #ceead6;
2027
+ max-width: 140px;
2028
+ overflow: hidden;
2029
+ text-overflow: ellipsis;
2030
+ white-space: nowrap;
2031
+ }
2032
+
2033
+ /* ─── Right-Click Context Menu ─────────────────────────────────────────────── */
2034
+ .context-menu {
2035
+ position: fixed;
2036
+ z-index: 10000;
2037
+ background: #ffffff;
2038
+ border: 1px solid var(--border-color);
2039
+ border-radius: 8px;
2040
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.14), 0 1px 3px rgba(0, 0, 0, 0.08);
2041
+ padding: 6px 0;
2042
+ min-width: 210px;
2043
+ user-select: none;
2044
+ }
2045
+
2046
+ .context-menu-item {
2047
+ display: flex;
2048
+ align-items: center;
2049
+ gap: 10px;
2050
+ padding: 8px 14px;
2051
+ font-size: 13px;
2052
+ color: var(--text-main);
2053
+ cursor: pointer;
2054
+ transition: background-color 0.12s ease;
2055
+ }
2056
+
2057
+ .context-menu-item svg {
2058
+ width: 16px;
2059
+ height: 16px;
2060
+ color: var(--text-secondary);
2061
+ flex-shrink: 0;
2062
+ }
2063
+
2064
+ .context-menu-item:hover {
2065
+ background-color: var(--blue-surface);
2066
+ color: var(--primary-blue);
2067
+ }
2068
+
2069
+ .context-menu-item:hover svg {
2070
+ color: var(--primary-blue);
2071
+ }
2072
+
2073
+ .context-menu-divider {
2074
+ height: 1px;
2075
+ background-color: var(--border-light);
2076
+ margin: 5px 0;
2077
+ }
2078
+
2079
+ /* ─── Modal Dialogs (Register Agent) ───────────────────────────────────────── */
2080
+ .modal-backdrop {
2081
+ position: fixed;
2082
+ top: 0;
2083
+ left: 0;
2084
+ width: 100vw;
2085
+ height: 100vh;
2086
+ background-color: rgba(32, 33, 36, 0.45);
2087
+ backdrop-filter: blur(2px);
2088
+ z-index: 9999;
2089
+ display: flex;
2090
+ align-items: center;
2091
+ justify-content: center;
2092
+ }
2093
+
2094
+ .agent-modal-card {
2095
+ background: #ffffff;
2096
+ width: 480px;
2097
+ max-width: 92vw;
2098
+ border-radius: 12px;
2099
+ box-shadow: 0 8px 28px rgba(0, 0, 0, 0.22);
2100
+ display: flex;
2101
+ flex-direction: column;
2102
+ overflow: hidden;
2103
+ animation: modalPop 0.18s ease-out;
2104
+ }
2105
+
2106
+ @keyframes modalPop {
2107
+ from {
2108
+ opacity: 0;
2109
+ transform: scale(0.95);
2110
+ }
2111
+ to {
2112
+ opacity: 1;
2113
+ transform: scale(1);
2114
+ }
2115
+ }
2116
+
2117
+ .agent-modal-header {
2118
+ display: flex;
2119
+ align-items: center;
2120
+ justify-content: space-between;
2121
+ padding: 16px 20px;
2122
+ border-bottom: 1px solid var(--border-light);
2123
+ background-color: #fafbfc;
2124
+ }
2125
+
2126
+ .agent-modal-header h3 {
2127
+ font-size: 16px;
2128
+ font-weight: 600;
2129
+ color: var(--text-main);
2130
+ }
2131
+
2132
+ .agent-modal-header .icon-btn-small {
2133
+ background: transparent;
2134
+ border: none;
2135
+ font-size: 16px;
2136
+ cursor: pointer;
2137
+ color: var(--text-secondary);
2138
+ }
2139
+
2140
+ #register-agent-form {
2141
+ padding: 20px;
2142
+ display: flex;
2143
+ flex-direction: column;
2144
+ gap: 14px;
2145
+ }
2146
+
2147
+ .agent-field {
2148
+ display: flex;
2149
+ flex-direction: column;
2150
+ gap: 5px;
2151
+ }
2152
+
2153
+ .agent-field label {
2154
+ font-size: 12px;
2155
+ font-weight: 600;
2156
+ color: var(--text-secondary);
2157
+ }
2158
+
2159
+ .agent-field input[type="text"],
2160
+ .agent-field select,
2161
+ .agent-field textarea {
2162
+ padding: 9px 12px;
2163
+ border: 1px solid var(--border-color);
2164
+ border-radius: 6px;
2165
+ font-size: 13px;
2166
+ font-family: inherit;
2167
+ color: var(--text-main);
2168
+ background-color: #ffffff;
2169
+ outline: none;
2170
+ transition: border-color 0.15s ease;
2171
+ }
2172
+
2173
+ .agent-field textarea {
2174
+ font-family: var(--font-mono);
2175
+ font-size: 12px;
2176
+ line-height: 1.5;
2177
+ resize: vertical;
2178
+ }
2179
+
2180
+ .agent-field input[type="text"]:focus,
2181
+ .agent-field select:focus,
2182
+ .agent-field textarea:focus {
2183
+ border-color: var(--primary-blue);
2184
+ box-shadow: 0 0 0 2px rgba(26, 115, 232, 0.15);
2185
+ }
2186
+
2187
+ .agent-modal-card-wide {
2188
+ width: 580px;
2189
+ max-height: 92vh;
2190
+ overflow-y: auto;
2191
+ }
2192
+
2193
+ .agent-field-header-row {
2194
+ display: flex;
2195
+ align-items: center;
2196
+ justify-content: space-between;
2197
+ }
2198
+
2199
+ .btn-text-action {
2200
+ background: transparent;
2201
+ border: none;
2202
+ color: var(--primary-blue);
2203
+ font-size: 11px;
2204
+ font-weight: 600;
2205
+ cursor: pointer;
2206
+ padding: 2px 6px;
2207
+ border-radius: 4px;
2208
+ transition: background-color 0.12s ease;
2209
+ }
2210
+
2211
+ .btn-text-action:hover {
2212
+ background-color: var(--blue-surface);
2213
+ }
2214
+
2215
+ .brief-chips-list {
2216
+ display: flex;
2217
+ flex-wrap: wrap;
2218
+ gap: 6px;
2219
+ max-height: 85px;
2220
+ overflow-y: auto;
2221
+ padding: 4px 0;
2222
+ }
2223
+
2224
+ .brief-chip {
2225
+ background: #f1f3f4;
2226
+ border: 1px solid #dadce0;
2227
+ border-radius: 12px;
2228
+ font-size: 11px;
2229
+ font-weight: 600;
2230
+ color: #3c4043;
2231
+ padding: 3px 10px;
2232
+ cursor: pointer;
2233
+ transition: all 0.12s ease;
2234
+ user-select: none;
2235
+ }
2236
+
2237
+ .brief-chip:hover {
2238
+ background: var(--blue-surface);
2239
+ color: var(--primary-blue);
2240
+ border-color: var(--primary-blue);
2241
+ }
2242
+
2243
+ .brief-chip.active {
2244
+ background: var(--primary-blue);
2245
+ color: #ffffff;
2246
+ border-color: var(--primary-blue);
2247
+ }
2248
+
2249
+ .brief-chips-loading {
2250
+ font-size: 11px;
2251
+ color: var(--text-muted);
2252
+ font-style: italic;
2253
+ }
2254
+
2255
+ .brief-source-badge {
2256
+ font-size: 10px;
2257
+ color: #137333;
2258
+ background: #e6f4ea;
2259
+ padding: 2px 6px;
2260
+ border-radius: 4px;
2261
+ border: 1px solid #ceead6;
2262
+ max-width: 220px;
2263
+ overflow: hidden;
2264
+ text-overflow: ellipsis;
2265
+ white-space: nowrap;
2266
+ }
2267
+
2268
+ .agent-checkbox-field {
2269
+ flex-direction: column;
2270
+ gap: 3px;
2271
+ margin-top: 4px;
2272
+ }
2273
+
2274
+ .checkbox-label {
2275
+ display: flex;
2276
+ align-items: center;
2277
+ gap: 8px;
2278
+ font-size: 13px;
2279
+ color: var(--text-main);
2280
+ cursor: pointer;
2281
+ user-select: none;
2282
+ }
2283
+
2284
+ .checkbox-label input[type="checkbox"] {
2285
+ cursor: pointer;
2286
+ accent-color: var(--primary-blue);
2287
+ width: 16px;
2288
+ height: 16px;
2289
+ }
2290
+
2291
+ .field-hint {
2292
+ font-size: 11px;
2293
+ color: var(--text-muted);
2294
+ }
2295
+
2296
+ .agent-modal-actions {
2297
+ display: flex;
2298
+ align-items: center;
2299
+ justify-content: flex-end;
2300
+ gap: 10px;
2301
+ margin-top: 10px;
2302
+ padding-top: 14px;
2303
+ border-top: 1px solid var(--border-light);
2304
+ }
2305
+
2306
+ .btn-secondary {
2307
+ background: transparent;
2308
+ border: 1px solid var(--border-color);
2309
+ color: var(--text-secondary);
2310
+ padding: 8px 16px;
2311
+ border-radius: 6px;
2312
+ font-size: 13px;
2313
+ font-weight: 600;
2314
+ cursor: pointer;
2315
+ transition: background-color 0.15s ease;
2316
+ }
2317
+
2318
+ .btn-secondary:hover {
2319
+ background: var(--bg-hover);
2320
+ color: var(--text-main);
2321
+ }
2322
+
2323
+ .context-menu-header {
2324
+ padding: 8px 14px 4px;
2325
+ display: flex;
2326
+ flex-direction: column;
2327
+ gap: 2px;
2328
+ }
2329
+
2330
+ .ctx-header-title {
2331
+ font-size: 11px;
2332
+ font-weight: 700;
2333
+ text-transform: uppercase;
2334
+ letter-spacing: 0.6px;
2335
+ color: var(--text-muted);
2336
+ }
2337
+
2338
+ .ctx-header-sub {
2339
+ font-size: 12px;
2340
+ font-weight: 600;
2341
+ color: var(--text-main);
2342
+ white-space: nowrap;
2343
+ overflow: hidden;
2344
+ text-overflow: ellipsis;
2345
+ max-width: 220px;
2346
+ }
2347
+
2348
+ .section-actions {
2349
+ display: flex;
2350
+ align-items: center;
2351
+ gap: 4px;
2352
+ }
2353
+
2354
+ .badge-safe {
2355
+ display: inline-block;
2356
+ background-color: #e6f4ea;
2357
+ color: #137333;
2358
+ font-size: 10px;
2359
+ font-weight: 700;
2360
+ padding: 1px 6px;
2361
+ border-radius: 8px;
2362
+ margin-left: 6px;
2363
+ border: 1px solid #ceead6;
2364
+ }
2365
+
2366
+ .sidebar-backdrop {
2367
+ position: fixed;
2368
+ top: 0;
2369
+ left: 0;
2370
+ width: 100vw;
2371
+ height: 100vh;
2372
+ background-color: rgba(32, 33, 36, 0.4);
2373
+ z-index: 998;
2374
+ backdrop-filter: blur(1px);
2375
+ }
2376
+
2377
+ /* ─── Views Nav (Mailbox vs Board) ────────────────────────────────────────── */
2378
+ .sidebar-views-nav {
2379
+ padding: 4px 12px 10px 12px;
2380
+ border-bottom: 1px solid var(--border-color);
2381
+ margin-bottom: 6px;
2382
+ display: flex;
2383
+ flex-direction: column;
2384
+ gap: 2px;
2385
+ }
2386
+
2387
+ .view-tab-btn {
2388
+ display: flex;
2389
+ align-items: center;
2390
+ gap: 12px;
2391
+ width: 100%;
2392
+ padding: 0 16px;
2393
+ height: 38px;
2394
+ border: none;
2395
+ background: transparent;
2396
+ border-radius: 0 19px 19px 0;
2397
+ cursor: pointer;
2398
+ font-size: 13.5px;
2399
+ font-weight: 500;
2400
+ color: var(--text-secondary);
2401
+ text-align: left;
2402
+ transition: background-color 0.15s;
2403
+ }
2404
+
2405
+ .view-tab-btn:hover {
2406
+ background-color: var(--hover-color);
2407
+ color: var(--text-main);
2408
+ }
2409
+
2410
+ .view-tab-btn.active {
2411
+ background-color: #d3e3fd;
2412
+ color: #041e49;
2413
+ font-weight: 700;
2414
+ }
2415
+
2416
+ .view-tab-btn svg {
2417
+ width: 18px;
2418
+ height: 18px;
2419
+ fill: currentColor;
2420
+ }
2421
+
2422
+ /* ─── View Containers ──────────────────────────────────────────────────────── */
2423
+ .mail-view-section,
2424
+ .board-view-section {
2425
+ flex: 1;
2426
+ min-height: 0;
2427
+ min-width: 0;
2428
+ display: flex;
2429
+ flex-direction: column;
2430
+ overflow: hidden;
2431
+ height: 100%;
2432
+ }
2433
+
2434
+ /* ─── Kanban Board Toolbar ─────────────────────────────────────────────────── */
2435
+ .board-toolbar {
2436
+ display: flex;
2437
+ align-items: center;
2438
+ justify-content: space-between;
2439
+ padding: 12px 20px;
2440
+ border-bottom: 1px solid var(--border-color);
2441
+ background-color: #ffffff;
2442
+ flex-shrink: 0;
2443
+ gap: 16px;
2444
+ flex-wrap: wrap;
2445
+ }
2446
+
2447
+ .board-toolbar-left {
2448
+ display: flex;
2449
+ align-items: center;
2450
+ gap: 16px;
2451
+ flex-wrap: wrap;
2452
+ }
2453
+
2454
+ .board-title-group {
2455
+ display: flex;
2456
+ align-items: baseline;
2457
+ gap: 8px;
2458
+ }
2459
+
2460
+ .board-title {
2461
+ font-size: 18px;
2462
+ font-weight: 700;
2463
+ color: var(--text-main);
2464
+ margin: 0;
2465
+ }
2466
+
2467
+ .board-subtitle {
2468
+ font-size: 11.5px;
2469
+ color: var(--text-muted);
2470
+ }
2471
+
2472
+ .board-subtitle code {
2473
+ background: #f1f3f4;
2474
+ padding: 2px 5px;
2475
+ border-radius: 4px;
2476
+ font-family: var(--font-mono);
2477
+ }
2478
+
2479
+ .board-stats-pills {
2480
+ display: flex;
2481
+ align-items: center;
2482
+ gap: 6px;
2483
+ flex-wrap: wrap;
2484
+ }
2485
+
2486
+ .board-pill {
2487
+ font-size: 11.5px;
2488
+ padding: 3px 9px;
2489
+ border-radius: 12px;
2490
+ background-color: #f1f3f4;
2491
+ color: var(--text-secondary);
2492
+ }
2493
+
2494
+ .board-pill.pill-progress { background-color: #fef7e0; color: #b06000; }
2495
+ .board-pill.pill-blocked { background-color: #fce8e6; color: #c5221f; }
2496
+ .board-pill.pill-done { background-color: #e6f4ea; color: #137333; }
2497
+
2498
+ .board-toolbar-right {
2499
+ display: flex;
2500
+ align-items: center;
2501
+ gap: 10px;
2502
+ }
2503
+
2504
+ .board-search-wrap {
2505
+ position: relative;
2506
+ display: flex;
2507
+ align-items: center;
2508
+ }
2509
+
2510
+ .board-search-icon {
2511
+ position: absolute;
2512
+ left: 10px;
2513
+ width: 16px;
2514
+ height: 16px;
2515
+ color: var(--text-muted);
2516
+ pointer-events: none;
2517
+ }
2518
+
2519
+ .board-search-wrap input {
2520
+ padding: 6px 12px 6px 32px;
2521
+ border: 1px solid var(--border-color);
2522
+ border-radius: 18px;
2523
+ font-size: 13px;
2524
+ outline: none;
2525
+ background-color: #f8fafd;
2526
+ width: 220px;
2527
+ transition: width 0.2s, background-color 0.2s, border-color 0.2s;
2528
+ }
2529
+
2530
+ .board-search-wrap input:focus {
2531
+ width: 280px;
2532
+ background-color: #fff;
2533
+ border-color: var(--google-blue);
2534
+ box-shadow: 0 1px 4px rgba(26,115,232,0.2);
2535
+ }
2536
+
2537
+ .btn-sm {
2538
+ padding: 6px 12px;
2539
+ font-size: 12.5px;
2540
+ height: 32px;
2541
+ }
2542
+
2543
+ /* ─── Board Agent Filter Bar ───────────────────────────────────────────────── */
2544
+ .board-agent-filter-bar {
2545
+ display: flex;
2546
+ align-items: center;
2547
+ gap: 6px;
2548
+ padding: 8px 20px;
2549
+ border-bottom: 1px solid var(--border-color);
2550
+ background-color: #f8fafd;
2551
+ overflow-x: auto;
2552
+ white-space: nowrap;
2553
+ flex-shrink: 0;
2554
+ scrollbar-width: thin;
2555
+ }
2556
+
2557
+ .board-filter-chip {
2558
+ padding: 4px 10px;
2559
+ border-radius: 16px;
2560
+ font-size: 12px;
2561
+ font-weight: 500;
2562
+ border: 1px solid #dadce0;
2563
+ background-color: #ffffff;
2564
+ color: var(--text-secondary);
2565
+ cursor: pointer;
2566
+ transition: all 0.15s;
2567
+ display: inline-flex;
2568
+ align-items: center;
2569
+ gap: 6px;
2570
+ user-select: none;
2571
+ }
2572
+
2573
+ .board-filter-chip:hover {
2574
+ background-color: #e8eaed;
2575
+ }
2576
+
2577
+ .board-filter-chip.active {
2578
+ background-color: #e8f0fe;
2579
+ color: #1a73e8;
2580
+ border-color: #1a73e8;
2581
+ font-weight: 600;
2582
+ }
2583
+
2584
+ /* ─── Kanban Columns Grid ──────────────────────────────────────────────────── */
2585
+ .kanban-grid {
2586
+ flex: 1;
2587
+ min-height: 0;
2588
+ display: grid;
2589
+ grid-template-columns: repeat(4, minmax(290px, 1fr));
2590
+ gap: 16px;
2591
+ padding: 16px 20px;
2592
+ overflow-x: auto;
2593
+ overflow-y: hidden;
2594
+ background-color: #f1f3f4;
2595
+ }
2596
+
2597
+ .kanban-column {
2598
+ display: flex;
2599
+ flex-direction: column;
2600
+ background-color: #e9ecef;
2601
+ border-radius: 12px;
2602
+ overflow: hidden;
2603
+ height: 100%;
2604
+ min-height: 0;
2605
+ box-shadow: 0 1px 3px rgba(0,0,0,0.04);
2606
+ }
2607
+
2608
+ .kanban-col-header {
2609
+ display: flex;
2610
+ align-items: center;
2611
+ justify-content: space-between;
2612
+ padding: 12px 14px;
2613
+ font-size: 13.5px;
2614
+ font-weight: 600;
2615
+ background-color: rgba(255,255,255,0.7);
2616
+ border-bottom: 1px solid rgba(0,0,0,0.06);
2617
+ flex-shrink: 0;
2618
+ }
2619
+
2620
+ .col-title-wrap {
2621
+ display: flex;
2622
+ align-items: center;
2623
+ gap: 8px;
2624
+ }
2625
+
2626
+ .col-dot {
2627
+ width: 9px;
2628
+ height: 9px;
2629
+ border-radius: 50%;
2630
+ }
2631
+
2632
+ .dot-backlog { background-color: var(--google-blue); }
2633
+ .dot-progress { background-color: var(--google-yellow); }
2634
+ .dot-blocked { background-color: var(--google-red); }
2635
+ .dot-done { background-color: var(--google-green); }
2636
+
2637
+ .col-badge {
2638
+ font-size: 11px;
2639
+ font-weight: 700;
2640
+ padding: 2px 7px;
2641
+ border-radius: 10px;
2642
+ background-color: #dadce0;
2643
+ color: #3c4043;
2644
+ }
2645
+
2646
+ .kanban-cards-list {
2647
+ flex: 1;
2648
+ min-height: 0;
2649
+ overflow-y: auto;
2650
+ padding: 10px;
2651
+ display: flex;
2652
+ flex-direction: column;
2653
+ gap: 10px;
2654
+ -webkit-overflow-scrolling: touch;
2655
+ }
2656
+
2657
+ .kanban-cards-list.drag-over {
2658
+ background-color: #e2e8f0;
2659
+ border: 2px dashed #1a73e8;
2660
+ border-radius: 8px;
2661
+ }
2662
+
2663
+ .kanban-empty {
2664
+ font-size: 12px;
2665
+ color: var(--text-muted);
2666
+ text-align: center;
2667
+ padding: 24px 10px;
2668
+ font-style: italic;
2669
+ }
2670
+
2671
+ /* ─── Kanban Cards ─────────────────────────────────────────────────────────── */
2672
+ .kanban-card {
2673
+ background-color: #ffffff;
2674
+ border-radius: 8px;
2675
+ padding: 12px 14px;
2676
+ box-shadow: 0 1px 3px rgba(0,0,0,0.07);
2677
+ cursor: grab;
2678
+ transition: transform 0.12s ease, box-shadow 0.12s ease;
2679
+ border: 1px solid rgba(0,0,0,0.04);
2680
+ position: relative;
2681
+ user-select: none;
2682
+ }
2683
+
2684
+ .kanban-card:hover {
2685
+ transform: translateY(-2px);
2686
+ box-shadow: 0 4px 10px rgba(0,0,0,0.12);
2687
+ }
2688
+
2689
+ .kanban-card.is-dragging {
2690
+ opacity: 0.4;
2691
+ cursor: grabbing;
2692
+ }
2693
+
2694
+ .kanban-card-header {
2695
+ display: flex;
2696
+ align-items: flex-start;
2697
+ justify-content: space-between;
2698
+ gap: 8px;
2699
+ margin-bottom: 6px;
2700
+ }
2701
+
2702
+ .kanban-card-title {
2703
+ font-size: 13px;
2704
+ font-weight: 600;
2705
+ color: var(--text-main);
2706
+ line-height: 1.35;
2707
+ word-break: break-word;
2708
+ }
2709
+
2710
+ .kanban-source-badge {
2711
+ font-size: 9.5px;
2712
+ padding: 1px 5px;
2713
+ border-radius: 4px;
2714
+ background: #f1f3f4;
2715
+ color: #5f6368;
2716
+ flex-shrink: 0;
2717
+ text-transform: uppercase;
2718
+ font-weight: 600;
2719
+ }
2720
+
2721
+ .kanban-source-badge.badge-em-voo {
2722
+ background: #fef7e0;
2723
+ color: #b06000;
2724
+ }
2725
+
2726
+ .kanban-card-desc {
2727
+ font-size: 12px;
2728
+ color: var(--text-secondary);
2729
+ line-height: 1.4;
2730
+ max-height: 52px;
2731
+ overflow: hidden;
2732
+ text-overflow: ellipsis;
2733
+ display: -webkit-box;
2734
+ -webkit-line-clamp: 3;
2735
+ -webkit-box-orient: vertical;
2736
+ }
2737
+
2738
+ .kanban-card-footer {
2739
+ display: flex;
2740
+ align-items: center;
2741
+ justify-content: space-between;
2742
+ margin-top: 10px;
2743
+ padding-top: 8px;
2744
+ border-top: 1px solid #f1f3f4;
2745
+ }
2746
+
2747
+ .kanban-owner-badge {
2748
+ display: flex;
2749
+ align-items: center;
2750
+ gap: 6px;
2751
+ font-size: 11.5px;
2752
+ font-weight: 600;
2753
+ color: var(--text-secondary);
2754
+ }
2755
+
2756
+ .kanban-owner-avatar {
2757
+ width: 20px;
2758
+ height: 20px;
2759
+ border-radius: 50%;
2760
+ color: #fff;
2761
+ display: flex;
2762
+ align-items: center;
2763
+ justify-content: center;
2764
+ font-size: 10px;
2765
+ font-weight: 700;
2766
+ flex-shrink: 0;
2767
+ aspect-ratio: 1 / 1;
2768
+ }
2769
+
2770
+ .kanban-card-actions {
2771
+ display: flex;
2772
+ align-items: center;
2773
+ gap: 2px;
2774
+ }
2775
+
2776
+ .kanban-move-btn {
2777
+ background: transparent;
2778
+ border: none;
2779
+ font-size: 12px;
2780
+ padding: 2px 6px;
2781
+ cursor: pointer;
2782
+ border-radius: 4px;
2783
+ color: var(--text-muted);
2784
+ transition: background-color 0.12s, color 0.12s;
2785
+ }
2786
+
2787
+ .kanban-move-btn:hover {
2788
+ background-color: #f1f3f4;
2789
+ color: var(--text-main);
2790
+ }
2791
+
2792
+ /* ─── Task Sheet (Ficha do Card) Drawer & Detail View ─────────────────────── */
2793
+ .task-sheet-backdrop {
2794
+ position: fixed;
2795
+ top: 0;
2796
+ left: 0;
2797
+ width: 100vw;
2798
+ height: 100vh;
2799
+ background-color: rgba(32, 33, 36, 0.45);
2800
+ z-index: 1000;
2801
+ backdrop-filter: blur(2px);
2802
+ transition: opacity 0.2s ease;
2803
+ }
2804
+
2805
+ .task-sheet-drawer {
2806
+ position: fixed;
2807
+ top: 0;
2808
+ right: 0;
2809
+ width: min(880px, 95vw);
2810
+ max-width: 96vw;
2811
+ height: 100vh;
2812
+ background-color: #ffffff;
2813
+ z-index: 1001;
2814
+ box-shadow: -8px 0 36px rgba(0, 0, 0, 0.18);
2815
+ display: flex;
2816
+ flex-direction: column;
2817
+ transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), width 0.2s ease;
2818
+ transform: translateX(0);
2819
+ }
2820
+
2821
+ .task-sheet-drawer.drawer-wide {
2822
+ width: min(1200px, 98vw);
2823
+ }
2824
+
2825
+ .task-sheet-drawer.hidden {
2826
+ transform: translateX(100%);
2827
+ pointer-events: none;
2828
+ display: flex !important;
2829
+ visibility: hidden;
2830
+ }
2831
+
2832
+ .task-sheet-container {
2833
+ flex: 1;
2834
+ overflow-y: auto;
2835
+ -webkit-overflow-scrolling: touch;
2836
+ padding: 24px;
2837
+ display: flex;
2838
+ flex-direction: column;
2839
+ gap: 18px;
2840
+ }
2841
+
2842
+ .task-sheet-top-bar {
2843
+ display: flex;
2844
+ align-items: center;
2845
+ justify-content: space-between;
2846
+ gap: 12px;
2847
+ }
2848
+
2849
+ .task-sheet-top-left {
2850
+ display: flex;
2851
+ align-items: center;
2852
+ gap: 8px;
2853
+ }
2854
+
2855
+ .sheet-back-btn {
2856
+ display: inline-flex;
2857
+ align-items: center;
2858
+ gap: 6px;
2859
+ background-color: #f1f5f9;
2860
+ border: 1px solid var(--border-color);
2861
+ border-radius: 6px;
2862
+ padding: 5px 12px;
2863
+ font-size: 12px;
2864
+ font-weight: 600;
2865
+ color: var(--text-main);
2866
+ cursor: pointer;
2867
+ transition: all 0.15s ease;
2868
+ }
2869
+
2870
+ .sheet-back-btn:hover {
2871
+ background-color: #e8f0fe;
2872
+ color: var(--primary-blue);
2873
+ border-color: #c2e7ff;
2874
+ }
2875
+
2876
+ .sheet-back-btn svg {
2877
+ width: 15px;
2878
+ height: 15px;
2879
+ }
2880
+
2881
+ .task-sheet-id {
2882
+ font-family: var(--font-mono);
2883
+ font-size: 12px;
2884
+ font-weight: 600;
2885
+ color: var(--text-muted);
2886
+ background-color: #f1f3f4;
2887
+ padding: 3px 8px;
2888
+ border-radius: 6px;
2889
+ }
2890
+
2891
+ .task-sheet-top-right {
2892
+ display: flex;
2893
+ align-items: center;
2894
+ gap: 8px;
2895
+ }
2896
+
2897
+ .sheet-action-btn {
2898
+ display: inline-flex;
2899
+ align-items: center;
2900
+ gap: 6px;
2901
+ padding: 4px 10px;
2902
+ background-color: #f8fafd;
2903
+ border: 1px solid var(--border-color);
2904
+ border-radius: 6px;
2905
+ font-size: 12px;
2906
+ font-weight: 500;
2907
+ color: var(--text-secondary);
2908
+ cursor: pointer;
2909
+ transition: background-color 0.15s, color 0.15s;
2910
+ }
2911
+
2912
+ .sheet-action-btn:hover {
2913
+ background-color: #f1f3f4;
2914
+ color: var(--text-main);
2915
+ }
2916
+
2917
+ .sheet-action-btn svg {
2918
+ width: 14px;
2919
+ height: 14px;
2920
+ }
2921
+
2922
+ .task-sheet-header {
2923
+ padding-bottom: 4px;
2924
+ }
2925
+
2926
+ .task-sheet-title {
2927
+ font-size: 20px;
2928
+ font-weight: 700;
2929
+ color: var(--text-main);
2930
+ line-height: 1.35;
2931
+ margin: 0;
2932
+ word-break: break-word;
2933
+ }
2934
+
2935
+ .task-sheet-section-label {
2936
+ display: block;
2937
+ font-size: 11.5px;
2938
+ font-weight: 600;
2939
+ color: var(--text-muted);
2940
+ text-transform: uppercase;
2941
+ letter-spacing: 0.5px;
2942
+ margin-bottom: 6px;
2943
+ }
2944
+
2945
+ /* Stage Selector Bar */
2946
+ .task-sheet-stage-section {
2947
+ background-color: #f8fafd;
2948
+ padding: 12px 14px;
2949
+ border-radius: 10px;
2950
+ border: 1px solid #edf2f7;
2951
+ }
2952
+
2953
+ .task-sheet-stage-buttons {
2954
+ display: flex;
2955
+ gap: 8px;
2956
+ flex-wrap: wrap;
2957
+ }
2958
+
2959
+ .sheet-stage-btn {
2960
+ flex: 1;
2961
+ min-width: 90px;
2962
+ height: 34px;
2963
+ display: flex;
2964
+ align-items: center;
2965
+ justify-content: center;
2966
+ gap: 6px;
2967
+ background-color: #ffffff;
2968
+ border: 1px solid var(--border-color);
2969
+ border-radius: 8px;
2970
+ font-size: 12.5px;
2971
+ font-weight: 500;
2972
+ color: var(--text-secondary);
2973
+ cursor: pointer;
2974
+ transition: all 0.15s;
2975
+ }
2976
+
2977
+ .sheet-stage-btn:hover {
2978
+ border-color: #b0c5e8;
2979
+ background-color: #f1f5f9;
2980
+ }
2981
+
2982
+ .sheet-stage-btn.active[data-stage="backlog"] {
2983
+ background-color: #e8f0fe;
2984
+ color: #1a73e8;
2985
+ border-color: #1a73e8;
2986
+ font-weight: 700;
2987
+ }
2988
+
2989
+ .sheet-stage-btn.active[data-stage="in_progress"] {
2990
+ background-color: #fef7e0;
2991
+ color: #b06000;
2992
+ border-color: #f9ab00;
2993
+ font-weight: 700;
2994
+ }
2995
+
2996
+ .sheet-stage-btn.active[data-stage="blocked"] {
2997
+ background-color: #fce8e6;
2998
+ color: #c5221f;
2999
+ border-color: #ea4335;
3000
+ font-weight: 700;
3001
+ }
3002
+
3003
+ .sheet-stage-btn.active[data-stage="done"] {
3004
+ background-color: #e6f4ea;
3005
+ color: #137333;
3006
+ border-color: #34a853;
3007
+ font-weight: 700;
3008
+ }
3009
+
3010
+ /* Meta Grid */
3011
+ .task-sheet-meta-grid {
3012
+ display: grid;
3013
+ grid-template-columns: 1fr 1fr;
3014
+ gap: 14px;
3015
+ padding: 12px 14px;
3016
+ background-color: #f8fafd;
3017
+ border-radius: 10px;
3018
+ border: 1px solid #edf2f7;
3019
+ }
3020
+
3021
+ .sheet-owner-selector-wrap {
3022
+ display: flex;
3023
+ align-items: center;
3024
+ gap: 8px;
3025
+ }
3026
+
3027
+ .sheet-owner-avatar {
3028
+ width: 26px;
3029
+ height: 26px;
3030
+ border-radius: 50%;
3031
+ background-color: #1a73e8;
3032
+ color: #ffffff;
3033
+ font-size: 12px;
3034
+ font-weight: 700;
3035
+ display: flex;
3036
+ align-items: center;
3037
+ justify-content: center;
3038
+ flex-shrink: 0;
3039
+ }
3040
+
3041
+ .sheet-owner-select {
3042
+ flex: 1;
3043
+ padding: 6px 10px;
3044
+ border: 1px solid var(--border-color);
3045
+ border-radius: 6px;
3046
+ font-size: 13px;
3047
+ background-color: #ffffff;
3048
+ outline: none;
3049
+ font-weight: 500;
3050
+ }
3051
+
3052
+ .sheet-thread-code {
3053
+ display: inline-block;
3054
+ font-family: var(--font-mono);
3055
+ font-size: 12px;
3056
+ color: #1a73e8;
3057
+ background-color: #ffffff;
3058
+ border: 1px solid #dadce0;
3059
+ border-radius: 6px;
3060
+ padding: 5px 8px;
3061
+ max-width: 100%;
3062
+ overflow: hidden;
3063
+ text-overflow: ellipsis;
3064
+ white-space: nowrap;
3065
+ }
3066
+
3067
+ /* Context / Desc Card */
3068
+ .task-sheet-card {
3069
+ border: 1px solid var(--border-color);
3070
+ border-radius: 10px;
3071
+ background-color: #ffffff;
3072
+ overflow: hidden;
3073
+ }
3074
+
3075
+ /* Ficha Tabs Bar */
3076
+ .sheet-tabs-bar {
3077
+ display: flex;
3078
+ gap: 6px;
3079
+ background-color: #f1f5f9;
3080
+ padding: 4px;
3081
+ border-radius: 8px;
3082
+ border: 1px solid #e2e8f0;
3083
+ }
3084
+
3085
+ .sheet-tab-btn {
3086
+ flex: 1;
3087
+ display: flex;
3088
+ align-items: center;
3089
+ justify-content: center;
3090
+ gap: 6px;
3091
+ height: 32px;
3092
+ background: transparent;
3093
+ border: none;
3094
+ border-radius: 6px;
3095
+ font-size: 12.5px;
3096
+ font-weight: 600;
3097
+ color: var(--text-secondary);
3098
+ cursor: pointer;
3099
+ transition: all 0.15s ease;
3100
+ }
3101
+
3102
+ .sheet-tab-btn:hover {
3103
+ color: var(--text-main);
3104
+ background-color: rgba(255, 255, 255, 0.6);
3105
+ }
3106
+
3107
+ .sheet-tab-btn.active {
3108
+ background-color: #ffffff;
3109
+ color: var(--primary-blue);
3110
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
3111
+ }
3112
+
3113
+ .sheet-tab-count {
3114
+ font-size: 11px;
3115
+ font-weight: 700;
3116
+ background: #e2e8f0;
3117
+ color: #475569;
3118
+ padding: 1px 6px;
3119
+ border-radius: 10px;
3120
+ }
3121
+
3122
+ .sheet-tab-btn.active .sheet-tab-count {
3123
+ background: #e8f0fe;
3124
+ color: var(--primary-blue);
3125
+ }
3126
+
3127
+ /* Tab visibility rules */
3128
+ .task-sheet-drawer[data-tab="desc"] #task-sheet-thread-section,
3129
+ .task-sheet-drawer[data-tab="desc"] #task-sheet-dispatch-section {
3130
+ display: none !important;
3131
+ }
3132
+
3133
+ .task-sheet-drawer[data-tab="transmissions"] #task-sheet-desc-card {
3134
+ display: none !important;
3135
+ }
3136
+
3137
+ /* Context / Desc Card */
3138
+ .task-sheet-card {
3139
+ border: 1px solid #e2e8f0;
3140
+ border-radius: 10px;
3141
+ background-color: #ffffff;
3142
+ overflow: hidden;
3143
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
3144
+ }
3145
+
3146
+ .task-sheet-card-header {
3147
+ padding: 12px 18px;
3148
+ background-color: #f8fafd;
3149
+ border-bottom: 1px solid #e2e8f0;
3150
+ font-size: 13.5px;
3151
+ font-weight: 600;
3152
+ color: var(--text-main);
3153
+ display: flex;
3154
+ align-items: center;
3155
+ justify-content: space-between;
3156
+ gap: 12px;
3157
+ }
3158
+
3159
+ .sheet-card-header-left {
3160
+ display: flex;
3161
+ align-items: center;
3162
+ gap: 8px;
3163
+ }
3164
+
3165
+ .sheet-card-header-right {
3166
+ display: flex;
3167
+ align-items: center;
3168
+ gap: 6px;
3169
+ }
3170
+
3171
+ .sheet-subtle-btn {
3172
+ display: inline-flex;
3173
+ align-items: center;
3174
+ gap: 6px;
3175
+ background: #ffffff;
3176
+ border: 1px solid var(--border-color);
3177
+ border-radius: 6px;
3178
+ padding: 5px 12px;
3179
+ font-size: 12px;
3180
+ font-weight: 600;
3181
+ color: var(--text-secondary);
3182
+ cursor: pointer;
3183
+ transition: all 0.15s;
3184
+ }
3185
+
3186
+ .sheet-subtle-btn:hover {
3187
+ background-color: #f1f5f9;
3188
+ border-color: #cbd5e1;
3189
+ color: var(--primary-blue);
3190
+ }
3191
+
3192
+ .task-sheet-card-body {
3193
+ padding: 22px 26px;
3194
+ background-color: #ffffff;
3195
+ }
3196
+
3197
+ .task-sheet-desc {
3198
+ min-height: 240px;
3199
+ max-height: none; /* No artificial cutoff! Natural full flow */
3200
+ line-height: 1.75;
3201
+ font-size: 14.5px;
3202
+ color: #1e293b;
3203
+ word-break: break-word;
3204
+ }
3205
+
3206
+ .task-sheet-desc p {
3207
+ margin-top: 0;
3208
+ margin-bottom: 14px;
3209
+ }
3210
+
3211
+ .task-sheet-desc p:last-child {
3212
+ margin-bottom: 0;
3213
+ }
3214
+
3215
+ .task-sheet-desc strong {
3216
+ color: #0f172a;
3217
+ font-weight: 700;
3218
+ }
3219
+
3220
+ .task-sheet-desc code {
3221
+ background-color: #f1f5f9;
3222
+ color: #0f172a;
3223
+ padding: 2px 6px;
3224
+ border-radius: 4px;
3225
+ font-size: 13px;
3226
+ font-family: var(--font-mono);
3227
+ }
3228
+
3229
+ .task-sheet-desc pre {
3230
+ background-color: #0f172a;
3231
+ color: #f8fafc;
3232
+ padding: 14px 18px;
3233
+ border-radius: 8px;
3234
+ overflow-x: auto;
3235
+ margin: 14px 0;
3236
+ line-height: 1.5;
3237
+ font-size: 13px;
3238
+ }
3239
+
3240
+ .task-sheet-desc ul, .task-sheet-desc ol {
3241
+ padding-left: 24px;
3242
+ margin-bottom: 14px;
3243
+ }
3244
+
3245
+ .task-sheet-desc li {
3246
+ margin-bottom: 6px;
3247
+ }
3248
+
3249
+ .task-sheet-desc.is-compact-scroll {
3250
+ max-height: 380px;
3251
+ overflow-y: auto;
3252
+ padding-right: 8px;
3253
+ scrollbar-width: thin;
3254
+ scrollbar-color: #cbd5e1 #f8fafc;
3255
+ }
3256
+
3257
+ /* Transmissions Section */
3258
+ .task-sheet-thread-section {
3259
+ display: flex;
3260
+ flex-direction: column;
3261
+ gap: 10px;
3262
+ }
3263
+
3264
+ .task-sheet-thread-header {
3265
+ display: flex;
3266
+ align-items: center;
3267
+ justify-content: space-between;
3268
+ }
3269
+
3270
+ .sheet-thread-title-wrap {
3271
+ display: flex;
3272
+ align-items: center;
3273
+ gap: 8px;
3274
+ }
3275
+
3276
+ .sheet-thread-title-wrap svg {
3277
+ width: 18px;
3278
+ height: 18px;
3279
+ color: var(--google-blue);
3280
+ }
3281
+
3282
+ .sheet-thread-title-wrap h3 {
3283
+ font-size: 14px;
3284
+ font-weight: 700;
3285
+ color: var(--text-main);
3286
+ margin: 0;
3287
+ }
3288
+
3289
+ .sheet-refresh-thread-btn {
3290
+ background: transparent;
3291
+ border: 1px solid var(--border-color);
3292
+ padding: 3px 8px;
3293
+ border-radius: 4px;
3294
+ font-size: 11px;
3295
+ color: var(--text-secondary);
3296
+ cursor: pointer;
3297
+ }
3298
+
3299
+ .sheet-refresh-thread-btn:hover {
3300
+ background: #f1f3f4;
3301
+ color: var(--text-main);
3302
+ }
3303
+
3304
+ .sheet-thread-list {
3305
+ display: flex;
3306
+ flex-direction: column;
3307
+ gap: 10px;
3308
+ }
3309
+
3310
+ .sheet-msg-empty {
3311
+ padding: 20px;
3312
+ background-color: #f8fafd;
3313
+ border: 1px dashed var(--border-color);
3314
+ border-radius: 10px;
3315
+ text-align: center;
3316
+ color: var(--text-muted);
3317
+ font-size: 12.5px;
3318
+ line-height: 1.45;
3319
+ }
3320
+
3321
+ .sheet-msg-card {
3322
+ border: 1px solid var(--border-color);
3323
+ border-radius: 8px;
3324
+ background: #ffffff;
3325
+ overflow: hidden;
3326
+ box-shadow: 0 1px 2px rgba(0,0,0,0.03);
3327
+ }
3328
+
3329
+ .sheet-msg-header {
3330
+ display: flex;
3331
+ align-items: center;
3332
+ justify-content: space-between;
3333
+ padding: 8px 12px;
3334
+ background: #f8fafd;
3335
+ border-bottom: 1px solid #f1f3f4;
3336
+ cursor: pointer;
3337
+ user-select: none;
3338
+ }
3339
+
3340
+ .sheet-msg-header-left {
3341
+ display: flex;
3342
+ align-items: center;
3343
+ gap: 8px;
3344
+ min-width: 0;
3345
+ }
3346
+
3347
+ .sheet-msg-avatar {
3348
+ width: 22px;
3349
+ height: 22px;
3350
+ border-radius: 50%;
3351
+ color: #fff;
3352
+ font-size: 10px;
3353
+ font-weight: 700;
3354
+ display: flex;
3355
+ align-items: center;
3356
+ justify-content: center;
3357
+ flex-shrink: 0;
3358
+ }
3359
+
3360
+ .sheet-msg-author {
3361
+ font-size: 12.5px;
3362
+ font-weight: 600;
3363
+ color: var(--text-main);
3364
+ }
3365
+
3366
+ .sheet-msg-snippet {
3367
+ font-size: 12px;
3368
+ color: var(--text-muted);
3369
+ overflow: hidden;
3370
+ text-overflow: ellipsis;
3371
+ white-space: nowrap;
3372
+ max-width: 220px;
3373
+ }
3374
+
3375
+ .sheet-msg-date {
3376
+ font-size: 11px;
3377
+ color: var(--text-muted);
3378
+ flex-shrink: 0;
3379
+ }
3380
+
3381
+ .sheet-msg-body {
3382
+ padding: 12px 14px;
3383
+ font-size: 13px;
3384
+ line-height: 1.5;
3385
+ }
3386
+
3387
+ /* Dispatch Box */
3388
+ .task-sheet-dispatch-section {
3389
+ border: 1px solid #d3e3fd;
3390
+ border-radius: 10px;
3391
+ background: #fdfefe;
3392
+ padding: 14px;
3393
+ display: flex;
3394
+ flex-direction: column;
3395
+ gap: 10px;
3396
+ box-shadow: 0 2px 6px rgba(26,115,232,0.06);
3397
+ }
3398
+
3399
+ .task-sheet-dispatch-header {
3400
+ font-size: 13px;
3401
+ font-weight: 600;
3402
+ color: var(--google-blue);
3403
+ }
3404
+
3405
+ .sheet-dispatch-form {
3406
+ display: flex;
3407
+ flex-direction: column;
3408
+ gap: 10px;
3409
+ }
3410
+
3411
+ .sheet-dispatch-row {
3412
+ display: grid;
3413
+ grid-template-columns: 1fr 1fr;
3414
+ gap: 10px;
3415
+ }
3416
+
3417
+ .sheet-dispatch-field {
3418
+ display: flex;
3419
+ flex-direction: column;
3420
+ gap: 4px;
3421
+ }
3422
+
3423
+ .sheet-dispatch-field label {
3424
+ font-size: 11px;
3425
+ font-weight: 600;
3426
+ color: var(--text-secondary);
3427
+ }
3428
+
3429
+ .sheet-dispatch-field select {
3430
+ padding: 6px 8px;
3431
+ border: 1px solid var(--border-color);
3432
+ border-radius: 6px;
3433
+ font-size: 12.5px;
3434
+ background: #fff;
3435
+ }
3436
+
3437
+ .sheet-dispatch-chips {
3438
+ display: flex;
3439
+ align-items: center;
3440
+ gap: 6px;
3441
+ flex-wrap: wrap;
3442
+ }
3443
+
3444
+ .sheet-dispatch-chips .chip {
3445
+ padding: 3px 8px;
3446
+ font-size: 11.5px;
3447
+ border-radius: 12px;
3448
+ border: 1px solid #dadce0;
3449
+ background: #f8fafd;
3450
+ cursor: pointer;
3451
+ transition: all 0.15s;
3452
+ }
3453
+
3454
+ .sheet-dispatch-chips .chip:hover {
3455
+ background: #e8f0fe;
3456
+ border-color: #1a73e8;
3457
+ color: #1a73e8;
3458
+ }
3459
+
3460
+ .sheet-dispatch-textarea {
3461
+ width: 100%;
3462
+ border: 1px solid var(--border-color);
3463
+ border-radius: 8px;
3464
+ padding: 10px;
3465
+ font-family: inherit;
3466
+ font-size: 13px;
3467
+ resize: vertical;
3468
+ min-height: 70px;
3469
+ outline: none;
3470
+ background: #fff;
3471
+ transition: border-color 0.15s;
3472
+ }
3473
+
3474
+ .sheet-dispatch-textarea:focus {
3475
+ border-color: var(--google-blue);
3476
+ box-shadow: 0 0 0 2px rgba(26,115,232,0.15);
3477
+ }
3478
+
3479
+ .sheet-dispatch-footer {
3480
+ display: flex;
3481
+ align-items: center;
3482
+ justify-content: space-between;
3483
+ gap: 10px;
3484
+ flex-wrap: wrap;
3485
+ }
3486
+
3487
+ .sheet-dispatch-hint {
3488
+ font-size: 11px;
3489
+ color: var(--text-muted);
3490
+ }
3491
+
3492
+ .sheet-dispatch-hint span {
3493
+ font-family: var(--font-mono);
3494
+ color: var(--text-secondary);
3495
+ }
3496
+
3497
+ @media (max-width: 768px) {
3498
+ /* Off-canvas sidebar */
3499
+ .app-sidebar {
3500
+ position: fixed;
3501
+ top: 0;
3502
+ left: 0;
3503
+ height: 100vh;
3504
+ width: 280px;
3505
+ z-index: 999;
3506
+ box-shadow: 4px 0 16px rgba(0, 0, 0, 0.18);
3507
+ transform: translateX(-100%);
3508
+ transition: transform 0.24s cubic-bezier(0.4, 0, 0.2, 1);
3509
+ background-color: var(--bg-app);
3510
+ }
3511
+
3512
+ .sidebar-open .app-sidebar {
3513
+ transform: translateX(0);
3514
+ }
3515
+
3516
+ .app-main {
3517
+ border-top-left-radius: 0;
3518
+ min-width: 0;
3519
+ }
3520
+
3521
+ .app-layout {
3522
+ overflow-x: hidden;
3523
+ }
3524
+
3525
+ /* Full screen detail view on mobile */
3526
+ .content-splitter {
3527
+ position: relative;
3528
+ overflow: hidden;
3529
+ height: 100%;
3530
+ min-height: 0;
3531
+ }
3532
+
3533
+ .mail-detail-container {
3534
+ position: absolute;
3535
+ top: 0;
3536
+ left: 0;
3537
+ width: 100%;
3538
+ height: 100%;
3539
+ z-index: 10;
3540
+ border-left: none;
3541
+ overflow-y: auto;
3542
+ -webkit-overflow-scrolling: touch;
3543
+ }
3544
+
3545
+ /* Mail rows stacked for touch friendliness */
3546
+ .mail-row {
3547
+ height: auto;
3548
+ min-height: 54px;
3549
+ padding: 10px 14px;
3550
+ flex-wrap: wrap;
3551
+ gap: 4px;
3552
+ }
3553
+
3554
+ .mail-sender {
3555
+ width: auto;
3556
+ max-width: 60%;
3557
+ font-size: 13.5px;
3558
+ }
3559
+
3560
+ .mail-date {
3561
+ margin-left: auto;
3562
+ width: auto;
3563
+ }
3564
+
3565
+ .mail-subject-wrap {
3566
+ width: 100%;
3567
+ margin-left: 28px;
3568
+ }
3569
+
3570
+ /* Compose modal responsive */
3571
+ .compose-modal {
3572
+ width: 100% !important;
3573
+ height: 100% !important;
3574
+ max-width: 100% !important;
3575
+ max-height: 100% !important;
3576
+ right: 0 !important;
3577
+ bottom: 0 !important;
3578
+ border-radius: 0 !important;
3579
+ }
3580
+
3581
+ /* Agent modal responsive — both normal and wide variant */
3582
+ .agent-modal-card,
3583
+ .agent-modal-card-wide {
3584
+ width: 95vw;
3585
+ max-width: 95vw;
3586
+ max-height: 92vh;
3587
+ overflow-y: auto;
3588
+ }
3589
+
3590
+ /* Tighten detail body padding on mobile */
3591
+ .detail-body-wrapper {
3592
+ padding: 16px;
3593
+ gap: 14px;
3594
+ }
3595
+
3596
+ .detail-header {
3597
+ padding: 12px 16px;
3598
+ }
3599
+
3600
+ /* Agent modal form padding */
3601
+ #register-agent-form {
3602
+ padding: 14px;
3603
+ gap: 12px;
3604
+ }
3605
+
3606
+ /* Brief source badge truncate more aggressively */
3607
+ .brief-source-badge {
3608
+ max-width: 160px;
3609
+ }
3610
+
3611
+ /* Context menu bounded to viewport */
3612
+ .context-menu {
3613
+ max-width: 85vw;
3614
+ }
3615
+
3616
+ /* Kanban responsive styles on mobile */
3617
+ .board-toolbar {
3618
+ padding: 10px 14px;
3619
+ gap: 10px;
3620
+ flex-direction: column;
3621
+ align-items: stretch;
3622
+ }
3623
+
3624
+ .board-toolbar-left {
3625
+ justify-content: space-between;
3626
+ gap: 8px;
3627
+ }
3628
+
3629
+ .board-toolbar-right {
3630
+ justify-content: space-between;
3631
+ width: 100%;
3632
+ flex-wrap: wrap;
3633
+ gap: 8px;
3634
+ }
3635
+
3636
+ .board-search-wrap {
3637
+ flex: 1;
3638
+ min-width: 140px;
3639
+ }
3640
+
3641
+ .board-search-wrap input {
3642
+ width: 100% !important;
3643
+ }
3644
+
3645
+ .board-agent-filter-bar {
3646
+ padding: 6px 12px;
3647
+ }
3648
+
3649
+ .kanban-grid {
3650
+ grid-template-columns: repeat(4, 82vw);
3651
+ scroll-snap-type: x mandatory;
3652
+ padding: 12px;
3653
+ gap: 12px;
3654
+ }
3655
+
3656
+ .kanban-column {
3657
+ scroll-snap-align: start;
3658
+ min-width: 80vw;
3659
+ }
3660
+
3661
+ /* Task Sheet drawer on mobile */
3662
+ .task-sheet-drawer {
3663
+ width: 100vw;
3664
+ max-width: 100vw;
3665
+ }
3666
+
3667
+ .task-sheet-container {
3668
+ padding: 16px 14px;
3669
+ gap: 14px;
3670
+ }
3671
+
3672
+ .task-sheet-meta-grid {
3673
+ grid-template-columns: 1fr;
3674
+ gap: 10px;
3675
+ }
3676
+
3677
+ .sheet-dispatch-row {
3678
+ grid-template-columns: 1fr;
3679
+ }
3680
+
3681
+
3682
+ /* Search bar prominence on tablet / mobile */
3683
+ .header-left {
3684
+ min-width: auto;
3685
+ gap: 8px;
3686
+ flex-shrink: 0;
3687
+ }
3688
+
3689
+ .logo-sub {
3690
+ display: none;
3691
+ }
3692
+
3693
+ .header-center {
3694
+ flex: 1;
3695
+ min-width: 0;
3696
+ max-width: none;
3697
+ padding: 0 8px;
3698
+ }
3699
+
3700
+ .search-bar {
3701
+ height: 44px;
3702
+ padding: 0 14px;
3703
+ border-radius: 22px;
3704
+ width: 100%;
3705
+ }
3706
+
3707
+ .search-bar input {
3708
+ font-size: 15px;
3709
+ }
3710
+
3711
+ .search-autocomplete-dropdown {
3712
+ left: 8px;
3713
+ right: 8px;
3714
+ border-radius: 0 0 18px 18px;
3715
+ }
3716
+
3717
+ .header-right {
3718
+ flex-shrink: 0;
3719
+ gap: 4px;
3720
+ }
3721
+ }
3722
+
3723
+ @media (max-width: 540px) {
3724
+ .app-header {
3725
+ height: 56px;
3726
+ padding: 0 8px;
3727
+ gap: 6px;
3728
+ position: relative;
3729
+ }
3730
+
3731
+ /* Hamburger only on the left */
3732
+ .header-left {
3733
+ min-width: auto;
3734
+ gap: 0;
3735
+ flex-shrink: 0;
3736
+ }
3737
+
3738
+ .logo-container {
3739
+ display: none !important;
3740
+ }
3741
+
3742
+ /* Search bar dominates almost the entire width */
3743
+ .header-center {
3744
+ flex: 1;
3745
+ min-width: 0;
3746
+ max-width: none;
3747
+ padding: 0 2px;
3748
+ }
3749
+
3750
+ .search-bar {
3751
+ height: 44px;
3752
+ padding: 0 12px;
3753
+ border-radius: 22px;
3754
+ background-color: #f1f3f4;
3755
+ width: 100%;
3756
+ }
3757
+
3758
+ .search-bar:focus-within {
3759
+ background-color: #ffffff;
3760
+ box-shadow: 0 2px 8px rgba(60, 64, 67, 0.28);
3761
+ }
3762
+
3763
+ .search-bar input {
3764
+ font-size: 15px;
3765
+ }
3766
+
3767
+ .search-bar input::placeholder {
3768
+ font-size: 13px;
3769
+ }
3770
+
3771
+ .search-icon {
3772
+ width: 18px;
3773
+ height: 18px;
3774
+ margin-right: 6px;
3775
+ flex-shrink: 0;
3776
+ }
3777
+
3778
+ .search-autocomplete-dropdown {
3779
+ left: 2px;
3780
+ right: 2px;
3781
+ top: 44px;
3782
+ border-radius: 0 0 16px 16px;
3783
+ }
3784
+
3785
+ /* Hide auxiliary items so search has full room */
3786
+ .status-pill {
3787
+ display: none !important;
3788
+ }
3789
+
3790
+ #refresh-btn {
3791
+ display: none !important;
3792
+ }
3793
+
3794
+ .account-header-label {
3795
+ display: none !important;
3796
+ }
3797
+
3798
+ .account-profile-btn {
3799
+ padding: 2px;
3800
+ }
3801
+
3802
+ .user-badge {
3803
+ width: 32px;
3804
+ height: 32px;
3805
+ font-size: 14px;
3806
+ }
3807
+
3808
+ .category-tabs {
3809
+ height: 42px;
3810
+ }
3811
+
3812
+ .category-tab {
3813
+ padding: 0 8px;
3814
+ font-size: 12px;
3815
+ }
3816
+
3817
+ .category-tab .cat-icon {
3818
+ font-size: 14px;
3819
+ }
3820
+
3821
+ /* Full-width sheet modal on tiny screens — bottom sheet style */
3822
+ .modal-backdrop {
3823
+ align-items: flex-end;
3824
+ padding: 0;
3825
+ }
3826
+
3827
+ .agent-modal-card,
3828
+ .agent-modal-card-wide {
3829
+ width: 100vw;
3830
+ max-width: 100vw;
3831
+ border-radius: 12px 12px 0 0;
3832
+ max-height: 95vh;
3833
+ margin: 0;
3834
+ }
3835
+
3836
+ /* Context menu stays within screen */
3837
+ .context-menu {
3838
+ max-width: 90vw;
3839
+ }
3840
+ }
3841
+
3842
+