echoctl 0.1.0 → 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,964 @@
1
+ .echo-meta-grid {
2
+ display: grid;
3
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
4
+ gap: 10px;
5
+ margin: 18px 0 14px;
6
+ }
7
+
8
+ .echo-meta-grid > div,
9
+ .echo-comment,
10
+ .echo-article-card {
11
+ border: 1px solid var(--vp-c-divider);
12
+ border-radius: 8px;
13
+ background: var(--vp-c-bg-soft);
14
+ }
15
+
16
+ .echo-meta-grid > div {
17
+ padding: 12px;
18
+ }
19
+
20
+ .echo-meta-grid strong,
21
+ .echo-meta-grid span {
22
+ display: block;
23
+ }
24
+
25
+ .echo-meta-grid strong {
26
+ color: var(--vp-c-text-2);
27
+ font-size: 12px;
28
+ margin-bottom: 4px;
29
+ }
30
+
31
+ .echo-meta-grid span {
32
+ overflow-wrap: anywhere;
33
+ }
34
+
35
+ .echo-tags {
36
+ display: flex;
37
+ flex-wrap: wrap;
38
+ gap: 8px;
39
+ margin: 10px 0 18px;
40
+ }
41
+
42
+ .echo-tags span,
43
+ .echo-tag-cloud a,
44
+ .echo-tag-chip {
45
+ border: 1px solid var(--vp-c-brand-2);
46
+ border-radius: 999px;
47
+ color: var(--vp-c-brand-1);
48
+ font-size: 12px;
49
+ line-height: 1;
50
+ padding: 6px 9px;
51
+ text-decoration: none;
52
+ }
53
+
54
+ .echo-summary {
55
+ border-left: 3px solid var(--vp-c-brand-1);
56
+ color: var(--vp-c-text-2);
57
+ margin: 18px 0 28px;
58
+ padding-left: 14px;
59
+ }
60
+
61
+ .echo-turn-marker {
62
+ display: none !important;
63
+ }
64
+
65
+ .echo-turn-boundary {
66
+ display: none !important;
67
+ }
68
+
69
+ .echo-comment-head span,
70
+ .echo-article-card small {
71
+ color: var(--vp-c-text-2);
72
+ }
73
+
74
+ .echo-comment-list {
75
+ display: grid;
76
+ gap: 14px;
77
+ }
78
+
79
+ .echo-comment {
80
+ padding: 14px;
81
+ }
82
+
83
+ .echo-comment-head {
84
+ display: flex;
85
+ flex-wrap: wrap;
86
+ gap: 8px;
87
+ margin-bottom: 8px;
88
+ }
89
+
90
+ .echo-comment blockquote {
91
+ margin: 8px 0 12px;
92
+ }
93
+
94
+ .echo-article-grid {
95
+ display: grid;
96
+ gap: 14px;
97
+ }
98
+
99
+ .echo-article-card {
100
+ color: inherit;
101
+ display: block;
102
+ padding: 16px;
103
+ text-decoration: none;
104
+ }
105
+
106
+ .echo-article-card:hover,
107
+ .echo-article-card:focus,
108
+ .echo-article-card * {
109
+ text-decoration: none;
110
+ }
111
+
112
+ .echo-article-card strong,
113
+ .echo-article-card small {
114
+ display: block;
115
+ }
116
+
117
+ .echo-article-card p {
118
+ color: var(--vp-c-text-2);
119
+ margin: 8px 0 0;
120
+ }
121
+
122
+ .echo-article-card:hover,
123
+ .echo-article-card:focus {
124
+ border-color: var(--vp-c-brand-1);
125
+ }
126
+
127
+ .echo-project-tabs {
128
+ display: flex;
129
+ flex-wrap: wrap;
130
+ gap: 8px;
131
+ margin: 18px 0 22px;
132
+ }
133
+
134
+ .echo-project-tab {
135
+ align-items: center;
136
+ border: 1px solid var(--vp-c-divider);
137
+ border-radius: 6px;
138
+ color: var(--vp-c-text-2);
139
+ display: inline-flex;
140
+ font-size: 13px;
141
+ gap: 6px;
142
+ line-height: 1;
143
+ padding: 8px 11px;
144
+ text-decoration: none;
145
+ }
146
+
147
+ .echo-project-tab span {
148
+ color: var(--vp-c-text-3);
149
+ }
150
+
151
+ .echo-project-tab:hover,
152
+ .echo-project-tab:focus {
153
+ border-color: var(--vp-c-brand-1);
154
+ color: var(--vp-c-brand-1);
155
+ text-decoration: none;
156
+ }
157
+
158
+ .echo-project-tab-active {
159
+ background: var(--vp-c-brand-soft);
160
+ border-color: var(--vp-c-brand-1);
161
+ color: var(--vp-c-brand-1);
162
+ }
163
+
164
+ .echo-project-tab-active span {
165
+ color: var(--vp-c-brand-1);
166
+ }
167
+
168
+ .echo-tag-cloud {
169
+ display: flex;
170
+ flex-wrap: wrap;
171
+ gap: 10px;
172
+ margin: 18px 0 32px;
173
+ }
174
+
175
+ .echo-tag-cloud a span {
176
+ color: var(--vp-c-text-2);
177
+ margin-left: 6px;
178
+ }
179
+
180
+ .echo-tag-chip-active {
181
+ background: var(--vp-c-brand-soft);
182
+ border-color: var(--vp-c-brand-1) !important;
183
+ color: var(--vp-c-brand-1) !important;
184
+ }
185
+
186
+ .echo-tag-chip-muted {
187
+ border-color: var(--vp-c-divider) !important;
188
+ color: var(--vp-c-text-3) !important;
189
+ }
190
+
191
+ .echo-tag-chip-muted span {
192
+ color: var(--vp-c-text-3) !important;
193
+ }
194
+
195
+ /* Tag management: row layout with action buttons */
196
+ .echo-tag-chip-row {
197
+ align-items: center;
198
+ display: flex;
199
+ gap: 4px;
200
+ }
201
+
202
+ .echo-tag-action-btn {
203
+ background: none;
204
+ border: 1px solid transparent;
205
+ border-radius: 6px;
206
+ color: var(--vp-c-text-3);
207
+ cursor: pointer;
208
+ font-size: 13px;
209
+ line-height: 1;
210
+ opacity: 0;
211
+ padding: 3px 5px;
212
+ transition: opacity 0.15s, color 0.15s, border-color 0.15s;
213
+ }
214
+
215
+ .echo-tag-chip-row:hover .echo-tag-action-btn {
216
+ opacity: 1;
217
+ }
218
+
219
+ .echo-tag-action-btn:hover {
220
+ border-color: var(--vp-c-divider);
221
+ color: var(--vp-c-text-1);
222
+ }
223
+
224
+ .echo-tag-action-btn:disabled {
225
+ cursor: not-allowed;
226
+ opacity: 0.3 !important;
227
+ }
228
+
229
+ .echo-tag-action-danger:hover {
230
+ border-color: var(--vp-c-danger-1);
231
+ color: var(--vp-c-danger-1);
232
+ }
233
+
234
+ .echo-tag-action-confirm:hover {
235
+ border-color: var(--vp-c-brand-1);
236
+ color: var(--vp-c-brand-1);
237
+ }
238
+
239
+ .echo-tag-action-cancel:hover {
240
+ border-color: var(--vp-c-text-3);
241
+ color: var(--vp-c-text-1);
242
+ }
243
+
244
+ /* Inline rename input */
245
+ .echo-tag-rename-input {
246
+ background: var(--vp-c-bg-soft);
247
+ border: 1px solid var(--vp-c-brand-1);
248
+ border-radius: 6px;
249
+ color: var(--vp-c-text-1);
250
+ font-size: 13px;
251
+ line-height: 1;
252
+ max-width: 140px;
253
+ padding: 4px 8px;
254
+ }
255
+
256
+ /* New tag button */
257
+ .echo-tag-new-btn {
258
+ align-items: center;
259
+ background: var(--vp-c-bg-soft);
260
+ border: 1px dashed var(--vp-c-divider);
261
+ border-radius: 999px;
262
+ color: var(--vp-c-text-2);
263
+ cursor: pointer;
264
+ display: inline-flex;
265
+ font-size: 12px;
266
+ gap: 4px;
267
+ line-height: 1;
268
+ padding: 5px 12px;
269
+ transition: border-color 0.15s, color 0.15s;
270
+ }
271
+
272
+ .echo-tag-new-btn:hover {
273
+ border-color: var(--vp-c-brand-1);
274
+ color: var(--vp-c-brand-1);
275
+ }
276
+
277
+ .echo-tag-new-btn:disabled {
278
+ cursor: not-allowed;
279
+ opacity: 0.48;
280
+ }
281
+
282
+ /* New tag modal article list */
283
+ .echo-new-tag-articles {
284
+ border: 1px solid var(--vp-c-divider);
285
+ border-radius: 6px;
286
+ display: flex;
287
+ flex-direction: column;
288
+ gap: 2px;
289
+ max-height: 260px;
290
+ overflow-y: auto;
291
+ padding: 4px;
292
+ }
293
+
294
+ .echo-new-tag-article-label {
295
+ align-items: center;
296
+ border-radius: 4px;
297
+ cursor: pointer;
298
+ display: flex;
299
+ font-size: 13px;
300
+ gap: 8px;
301
+ padding: 4px 8px;
302
+ transition: background 0.1s;
303
+ }
304
+
305
+ .echo-new-tag-article-label:hover {
306
+ background: var(--vp-c-bg-soft);
307
+ }
308
+
309
+ .echo-new-tag-article-title {
310
+ color: var(--vp-c-text-1);
311
+ overflow: hidden;
312
+ text-overflow: ellipsis;
313
+ white-space: nowrap;
314
+ }
315
+
316
+ /* Toast notification */
317
+ .echo-toast {
318
+ animation: echo-toast-in 0.3s ease;
319
+ background: var(--vp-c-brand-1);
320
+ border-radius: 8px;
321
+ bottom: 24px;
322
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
323
+ color: #fff;
324
+ font-size: 14px;
325
+ left: 50%;
326
+ padding: 10px 24px;
327
+ position: fixed;
328
+ transform: translateX(-50%);
329
+ z-index: 2000;
330
+ }
331
+
332
+ @keyframes echo-toast-in {
333
+ from { opacity: 0; transform: translateX(-50%) translateY(12px); }
334
+ to { opacity: 1; transform: translateX(-50%) translateY(0); }
335
+ }
336
+
337
+ .echo-tag-result {
338
+ margin-top: 24px;
339
+ }
340
+
341
+ .echo-muted-text {
342
+ color: var(--vp-c-text-2);
343
+ }
344
+
345
+ .echo-doc-bottom {
346
+ padding: 0 32px;
347
+ }
348
+
349
+ .echo-doc-bottom-inner {
350
+ margin: 0 auto;
351
+ max-width: 688px;
352
+ }
353
+
354
+ @media (min-width: 960px) {
355
+ .VPDoc.has-aside .echo-doc-bottom {
356
+ padding-right: 288px;
357
+ }
358
+ }
359
+
360
+ .echo-global-controls {
361
+ align-items: center;
362
+ display: flex;
363
+ gap: 6px;
364
+ margin-left: 12px;
365
+ }
366
+
367
+ .echo-global-btn {
368
+ background: var(--vp-c-bg-soft);
369
+ border: 1px solid var(--vp-c-divider);
370
+ border-radius: 6px;
371
+ color: var(--vp-c-text-2);
372
+ cursor: pointer;
373
+ font-size: 12px;
374
+ line-height: 1;
375
+ padding: 6px 8px;
376
+ white-space: nowrap;
377
+ }
378
+
379
+ .echo-global-btn:hover {
380
+ border-color: var(--vp-c-brand-1);
381
+ color: var(--vp-c-brand-1);
382
+ }
383
+
384
+ .echo-global-btn:disabled {
385
+ cursor: not-allowed;
386
+ opacity: 0.48;
387
+ }
388
+
389
+ .echo-global-select {
390
+ background: var(--vp-c-bg-soft);
391
+ border: 1px solid var(--vp-c-divider);
392
+ border-radius: 6px;
393
+ color: var(--vp-c-text-1);
394
+ cursor: pointer;
395
+ font-size: 12px;
396
+ line-height: 1;
397
+ max-width: 120px;
398
+ padding: 5px 20px 5px 7px;
399
+ appearance: none;
400
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='6'%3E%3Cpath d='M0 0l4 6 4-6z' fill='%23888'/%3E%3C/svg%3E");
401
+ background-repeat: no-repeat;
402
+ background-position: right 6px center;
403
+ }
404
+
405
+ .echo-global-select:hover {
406
+ border-color: var(--vp-c-brand-1);
407
+ }
408
+
409
+ @media (max-width: 640px) {
410
+ .echo-global-controls {
411
+ gap: 4px;
412
+ margin-left: 6px;
413
+ }
414
+
415
+ .echo-global-btn {
416
+ font-size: 11px;
417
+ padding: 5px 6px;
418
+ }
419
+ }
420
+
421
+ .echo-btn {
422
+ background: var(--vp-c-bg-soft);
423
+ border: 1px solid var(--vp-c-divider);
424
+ border-radius: 6px;
425
+ color: var(--vp-c-text-1);
426
+ cursor: pointer;
427
+ font-size: 13px;
428
+ padding: 6px 14px;
429
+ }
430
+
431
+ .echo-btn:hover {
432
+ border-color: var(--vp-c-brand-1);
433
+ }
434
+
435
+ .echo-btn-on { border-color: var(--vp-c-brand-1); color: var(--vp-c-brand-1); }
436
+ .echo-btn-off { opacity: 0.6; }
437
+
438
+ .echo-modal {
439
+ align-items: center;
440
+ background: rgba(0,0,0,0.4);
441
+ bottom: 0;
442
+ display: flex;
443
+ justify-content: center;
444
+ left: 0;
445
+ position: fixed;
446
+ right: 0;
447
+ top: 0;
448
+ z-index: 1000;
449
+ }
450
+
451
+ .echo-modal-content {
452
+ background: var(--vp-c-bg);
453
+ border: 1px solid var(--vp-c-divider);
454
+ border-radius: 12px;
455
+ max-width: 560px;
456
+ padding: 24px;
457
+ width: 90%;
458
+ }
459
+
460
+ .echo-modal-content h3 { margin: 0 0 8px; }
461
+
462
+ .echo-modal-content pre {
463
+ background: var(--vp-c-bg-soft);
464
+ border-radius: 6px;
465
+ font-size: 12px;
466
+ overflow-x: auto;
467
+ padding: 12px;
468
+ }
469
+
470
+ .echo-modal-btns { display: flex; gap: 8px; margin-top: 14px; }
471
+
472
+ .echo-sel-popup {
473
+ background: var(--vp-c-bg);
474
+ border: 1px solid var(--vp-c-brand-1);
475
+ border-radius: 6px;
476
+ box-shadow: 0 2px 8px rgba(0,0,0,0.15);
477
+ padding: 4px;
478
+ position: absolute;
479
+ z-index: 100;
480
+ }
481
+
482
+ .echo-comment-box {
483
+ border: 1px solid var(--vp-c-divider);
484
+ border-radius: 8px;
485
+ margin-top: 24px;
486
+ padding: 16px;
487
+ }
488
+
489
+ .echo-comment-box h3 { font-size: 15px; margin: 0 0 10px; }
490
+
491
+ .echo-tag-strip {
492
+ align-items: center;
493
+ border-bottom: 1px solid var(--vp-c-divider);
494
+ display: flex;
495
+ flex-wrap: wrap;
496
+ gap: 10px;
497
+ margin: 24px 0 0;
498
+ padding: 0 0 14px;
499
+ }
500
+
501
+ .echo-tag-strip-label {
502
+ color: var(--vp-c-text-2);
503
+ font-size: 13px;
504
+ font-weight: 600;
505
+ }
506
+
507
+ .echo-publish-strip {
508
+ align-items: center;
509
+ display: flex;
510
+ flex-wrap: wrap;
511
+ gap: 10px;
512
+ margin-top: 14px;
513
+ }
514
+
515
+ .echo-tag-form {
516
+ display: flex;
517
+ flex-wrap: wrap;
518
+ gap: 8px;
519
+ flex: 1 1 260px;
520
+ }
521
+
522
+ .echo-comment-box textarea {
523
+ background: var(--vp-c-bg-soft);
524
+ border: 1px solid var(--vp-c-divider);
525
+ border-radius: 6px;
526
+ color: var(--vp-c-text-1);
527
+ font-size: 14px;
528
+ padding: 10px;
529
+ resize: vertical;
530
+ width: 100%;
531
+ }
532
+
533
+ .echo-tag-form input {
534
+ background: var(--vp-c-bg-soft);
535
+ border: 1px solid var(--vp-c-divider);
536
+ border-radius: 6px;
537
+ color: var(--vp-c-text-1);
538
+ flex: 1 1 180px;
539
+ font-size: 14px;
540
+ min-width: 0;
541
+ padding: 8px 10px;
542
+ }
543
+
544
+ .echo-comment-box .echo-btn { margin-top: 10px; }
545
+
546
+ .echo-inline-error {
547
+ color: var(--vp-c-danger-1);
548
+ display: inline-block;
549
+ font-size: 13px;
550
+ margin-top: 8px;
551
+ }
552
+
553
+ .echo-inline-ok {
554
+ color: var(--vp-c-brand-1);
555
+ display: inline-block;
556
+ font-size: 13px;
557
+ }
558
+
559
+ .echo-existing-tags {
560
+ display: flex;
561
+ flex-wrap: wrap;
562
+ gap: 6px;
563
+ flex: 1 1 100%;
564
+ }
565
+
566
+ .echo-tag-chip {
567
+ align-items: center;
568
+ border: 1px solid var(--vp-c-brand-2);
569
+ border-radius: 999px;
570
+ color: var(--vp-c-brand-1);
571
+ display: inline-flex;
572
+ font-size: 12px;
573
+ gap: 4px;
574
+ line-height: 1;
575
+ padding: 5px 8px 5px 10px;
576
+ }
577
+
578
+ .echo-tag-remove {
579
+ background: none;
580
+ border: none;
581
+ border-radius: 50%;
582
+ color: var(--vp-c-text-3);
583
+ cursor: pointer;
584
+ font-size: 14px;
585
+ line-height: 1;
586
+ padding: 0 2px;
587
+ transition: color 0.15s;
588
+ }
589
+ .echo-tag-remove:hover {
590
+ color: var(--vp-c-danger-1);
591
+ }
592
+ .echo-tag-remove:disabled {
593
+ opacity: 0.4;
594
+ cursor: not-allowed;
595
+ }
596
+
597
+ .echo-summary-strip {
598
+ border-bottom: 1px solid var(--vp-c-divider);
599
+ margin: 14px 0 0;
600
+ padding: 0 0 14px;
601
+ }
602
+
603
+ .echo-summary-strip-label {
604
+ color: var(--vp-c-text-2);
605
+ display: block;
606
+ font-size: 13px;
607
+ font-weight: 600;
608
+ margin-bottom: 8px;
609
+ }
610
+
611
+ .echo-summary-strip textarea {
612
+ background: var(--vp-c-bg-soft);
613
+ border: 1px solid var(--vp-c-divider);
614
+ border-radius: 6px;
615
+ color: var(--vp-c-text-1);
616
+ font-size: 14px;
617
+ padding: 10px;
618
+ resize: vertical;
619
+ width: 100%;
620
+ }
621
+
622
+ .echo-summary-actions {
623
+ align-items: center;
624
+ display: flex;
625
+ flex-wrap: wrap;
626
+ gap: 10px;
627
+ margin-top: 8px;
628
+ }
629
+
630
+ .echo-serve-notice {
631
+ background: var(--vp-c-danger-soft);
632
+ border: 1px solid var(--vp-c-danger-1);
633
+ border-radius: 6px;
634
+ color: var(--vp-c-danger-1);
635
+ font-size: 13px;
636
+ margin-bottom: 12px;
637
+ padding: 8px 12px;
638
+ }
639
+
640
+ mark.echo-highlight {
641
+ background: rgba(255, 213, 79, 0.35);
642
+ border-radius: 2px;
643
+ color: inherit;
644
+ cursor: pointer;
645
+ padding: 0 1px;
646
+ }
647
+
648
+ mark.echo-highlight:hover {
649
+ background: rgba(255, 213, 79, 0.6);
650
+ }
651
+
652
+ mark.echo-search-hit {
653
+ background: rgba(82, 196, 255, 0.28);
654
+ border-radius: 2px;
655
+ color: inherit;
656
+ padding: 0 1px;
657
+ scroll-margin-top: 120px;
658
+ }
659
+
660
+ mark.echo-search-hit-active {
661
+ background: rgba(82, 196, 255, 0.55);
662
+ box-shadow: 0 0 0 2px rgba(82, 196, 255, 0.22);
663
+ }
664
+
665
+ /* Chat bubbles */
666
+ .echo-chat-turn {
667
+ box-sizing: border-box;
668
+ border-radius: 8px;
669
+ margin: 16px 0;
670
+ padding: 12px 16px;
671
+ position: relative;
672
+ width: fit-content;
673
+ }
674
+
675
+ .echo-chat-user {
676
+ background: var(--vp-c-brand-soft);
677
+ margin-left: auto;
678
+ margin-right: 0;
679
+ max-width: 72%;
680
+ }
681
+
682
+ .echo-chat-assistant {
683
+ background: var(--vp-c-bg-soft);
684
+ border: 1px solid var(--vp-c-divider);
685
+ margin-left: 0;
686
+ margin-right: auto;
687
+ max-width: 92%;
688
+ }
689
+
690
+ .echo-chat-unknown {
691
+ background: var(--vp-c-bg-soft);
692
+ border: 1px solid var(--vp-c-divider);
693
+ margin-left: 0;
694
+ margin-right: auto;
695
+ max-width: 92%;
696
+ opacity: 0.75;
697
+ }
698
+
699
+ .echo-chat-turn > *:first-child {
700
+ margin-top: 0;
701
+ }
702
+
703
+ .echo-chat-turn > *:last-child {
704
+ margin-bottom: 0;
705
+ }
706
+
707
+ .echo-chat-turn table,
708
+ .echo-chat-turn pre {
709
+ overflow-x: auto;
710
+ }
711
+
712
+ @media (max-width: 768px) {
713
+ .echo-chat-user {
714
+ max-width: 88%;
715
+ }
716
+
717
+ .echo-chat-assistant,
718
+ .echo-chat-unknown {
719
+ max-width: 96%;
720
+ }
721
+ }
722
+
723
+ .echo-reply-btn {
724
+ font-size: 12px;
725
+ margin-top: 8px;
726
+ padding: 2px 10px;
727
+ }
728
+
729
+ .echo-reply-form {
730
+ border: 1px solid var(--vp-c-divider);
731
+ border-radius: 8px;
732
+ margin-top: 12px;
733
+ padding: 12px;
734
+ }
735
+
736
+ .echo-reply-form textarea {
737
+ background: var(--vp-c-bg-soft);
738
+ border: 1px solid var(--vp-c-divider);
739
+ border-radius: 6px;
740
+ color: var(--vp-c-text-1);
741
+ font-size: 14px;
742
+ padding: 10px;
743
+ resize: vertical;
744
+ width: 100%;
745
+ }
746
+
747
+ .echo-reply-btns {
748
+ display: flex;
749
+ gap: 8px;
750
+ margin-top: 8px;
751
+ }
752
+
753
+ /* ---- Comment chain tree ---- */
754
+
755
+ .echo-comment-chain {
756
+ margin-top: 40px;
757
+ }
758
+
759
+ .echo-comment-chain h3 {
760
+ font-size: 16px;
761
+ margin-bottom: 20px;
762
+ padding-bottom: 8px;
763
+ border-bottom: 1px solid var(--vp-c-divider);
764
+ }
765
+
766
+ .echo-thread {
767
+ position: relative;
768
+ }
769
+
770
+ .echo-thread-root {
771
+ margin-bottom: 16px;
772
+ }
773
+
774
+ .echo-thread-item {
775
+ display: flex;
776
+ gap: 12px;
777
+ align-items: flex-start;
778
+ }
779
+
780
+ .echo-thread-connector {
781
+ flex-shrink: 0;
782
+ width: 36px;
783
+ padding-top: 4px;
784
+ position: relative;
785
+ }
786
+
787
+ .echo-thread-connector::before {
788
+ content: '';
789
+ position: absolute;
790
+ left: 12px;
791
+ top: 20px;
792
+ width: 12px;
793
+ height: 14px;
794
+ border-left: 2px solid var(--vp-c-divider);
795
+ border-bottom: 2px solid var(--vp-c-divider);
796
+ border-bottom-left-radius: 6px;
797
+ }
798
+
799
+ .echo-evo-kind {
800
+ display: inline-block;
801
+ font-size: 11px;
802
+ padding: 2px 6px;
803
+ border-radius: 4px;
804
+ background: var(--vp-c-brand-soft);
805
+ color: var(--vp-c-brand);
806
+ white-space: nowrap;
807
+ }
808
+
809
+ .echo-thread-card {
810
+ flex: 1;
811
+ min-width: 0;
812
+ background: var(--vp-c-bg-soft);
813
+ border: 1px solid var(--vp-c-divider);
814
+ border-radius: 8px;
815
+ padding: 14px 16px;
816
+ }
817
+
818
+ .echo-thread-head {
819
+ display: flex;
820
+ gap: 8px;
821
+ align-items: baseline;
822
+ font-size: 13px;
823
+ color: var(--vp-c-text-2);
824
+ margin-bottom: 8px;
825
+ }
826
+
827
+ .echo-thread-head strong {
828
+ color: var(--vp-c-text-1);
829
+ }
830
+
831
+ .echo-thread-body {
832
+ font-size: 14px;
833
+ line-height: 1.65;
834
+ color: var(--vp-c-text-1);
835
+ }
836
+
837
+ .echo-thread-body p {
838
+ margin: 0 0 8px;
839
+ }
840
+
841
+ .echo-thread-body p:last-child {
842
+ margin-bottom: 0;
843
+ }
844
+
845
+ .echo-thread-children {
846
+ margin-left: 24px;
847
+ padding-left: 12px;
848
+ border-left: 2px solid var(--vp-c-divider);
849
+ }
850
+
851
+ /* Thread depth limit: stop indenting beyond level 6 */
852
+ .echo-thread-children .echo-thread-children .echo-thread-children
853
+ .echo-thread-children .echo-thread-children .echo-thread-children {
854
+ margin-left: 0;
855
+ border-left: none;
856
+ }
857
+
858
+ /* ---- Live session ---- */
859
+
860
+ .echo-live-badge {
861
+ align-items: center;
862
+ background: var(--vp-c-danger-soft);
863
+ border: 1px solid var(--vp-c-danger-1);
864
+ border-radius: 8px;
865
+ color: var(--vp-c-danger-1);
866
+ display: flex;
867
+ font-size: 13px;
868
+ font-weight: 600;
869
+ gap: 8px;
870
+ margin: 0 0 20px;
871
+ padding: 10px 16px;
872
+ }
873
+
874
+ .echo-live-badge a {
875
+ color: var(--vp-c-brand-1);
876
+ font-weight: 500;
877
+ margin-left: auto;
878
+ }
879
+
880
+ .echo-live-dot {
881
+ animation: echo-pulse 2s ease-in-out infinite;
882
+ background: var(--vp-c-danger-1);
883
+ border-radius: 50%;
884
+ display: inline-block;
885
+ flex-shrink: 0;
886
+ height: 8px;
887
+ width: 8px;
888
+ }
889
+
890
+ @keyframes echo-pulse {
891
+ 0%, 100% { opacity: 1; }
892
+ 50% { opacity: 0.3; }
893
+ }
894
+
895
+ .echo-live-actions {
896
+ margin: 0 0 20px;
897
+ }
898
+
899
+ .echo-publish-btn {
900
+ background: var(--vp-c-brand-1);
901
+ border: none;
902
+ border-radius: 6px;
903
+ color: var(--vp-c-bg);
904
+ cursor: pointer;
905
+ font-size: 14px;
906
+ font-weight: 500;
907
+ padding: 8px 18px;
908
+ }
909
+
910
+ .echo-publish-btn:hover {
911
+ background: var(--vp-c-brand-2);
912
+ }
913
+
914
+ .echo-publish-btn:disabled {
915
+ opacity: 0.5;
916
+ cursor: not-allowed;
917
+ }
918
+
919
+ .echo-publish-error {
920
+ color: var(--vp-c-danger-1);
921
+ font-size: 13px;
922
+ margin-left: 12px;
923
+ }
924
+
925
+ .echo-publish-ok {
926
+ color: var(--vp-c-brand-1);
927
+ font-size: 13px;
928
+ margin-left: 12px;
929
+ }
930
+
931
+ .echo-published-link {
932
+ background: var(--vp-c-bg-soft);
933
+ border: 1px solid var(--vp-c-brand-1);
934
+ border-radius: 6px;
935
+ color: var(--vp-c-brand-1);
936
+ display: inline-block;
937
+ font-size: 14px;
938
+ padding: 8px 18px;
939
+ text-decoration: none;
940
+ }
941
+
942
+ .echo-published-link:hover {
943
+ text-decoration: none;
944
+ }
945
+
946
+ .echo-ls-badge {
947
+ border-radius: 4px;
948
+ font-size: 10px;
949
+ font-weight: 600;
950
+ margin-right: 4px;
951
+ padding: 1px 6px;
952
+ text-transform: uppercase;
953
+ vertical-align: middle;
954
+ }
955
+
956
+ .echo-ls-live {
957
+ background: var(--vp-c-danger-soft);
958
+ color: var(--vp-c-danger-1);
959
+ }
960
+
961
+ .echo-ls-published {
962
+ background: var(--vp-c-brand-soft);
963
+ color: var(--vp-c-brand-1);
964
+ }