@jay-framework/aiditor 0.18.4 → 0.19.3

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.
@@ -1 +1,2259 @@
1
- /* AIditor page: styles live inline in page.jay-html for POC parity with aditor-poc. */
1
+ /* AIditor page styles mirrored inline in page.jay-html for reliable dev rendering.
2
+ Keep in sync when editing; plugin route also loads this file from dist/. */
3
+
4
+ :root {
5
+ --harmony-bg-workspace: #eef0f4;
6
+ --harmony-bg-surface: #ffffff;
7
+ --harmony-bg-subtle: #f7f8fa;
8
+ --harmony-bg-hover: #f0f2f5;
9
+ --harmony-border: #dfe3eb;
10
+ --harmony-border-strong: #c5cdd8;
11
+ --harmony-primary: #116dff;
12
+ --harmony-primary-hover: #0d5ee0;
13
+ --harmony-primary-soft: rgba(17, 109, 255, 0.1);
14
+ --harmony-text: #162d3d;
15
+ --harmony-text-secondary: #5a6b7d;
16
+ --harmony-text-muted: #8f9bb0;
17
+ --harmony-danger: #e84c3d;
18
+ --harmony-danger-soft: #fef2f1;
19
+ --harmony-success: #00a862;
20
+ --harmony-success-soft: #e8f8f0;
21
+ --harmony-warning: #f5a623;
22
+ --harmony-warning-soft: #fff8e6;
23
+ --harmony-shadow-sm: 0 1px 4px rgba(22, 45, 61, 0.06);
24
+ --harmony-shadow-md: 0 4px 24px rgba(22, 45, 61, 0.1);
25
+ --harmony-shadow-lg: 0 8px 40px rgba(22, 45, 61, 0.12);
26
+ --harmony-radius-sm: 6px;
27
+ --harmony-radius-md: 10px;
28
+ --harmony-radius-lg: 16px;
29
+ --harmony-radius-pill: 999px;
30
+ --harmony-sidebar-width: 52px;
31
+ --harmony-global-bar-height: 52px;
32
+ --harmony-secondary-bar-height: 44px;
33
+ --harmony-font: "Madefor", "Helvetica Neue", Helvetica, Arial, sans-serif;
34
+ --harmony-mono: ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
35
+ }
36
+
37
+ *,
38
+ *::before,
39
+ *::after {
40
+ box-sizing: border-box;
41
+ }
42
+
43
+ html,
44
+ body {
45
+ margin: 0;
46
+ padding: 0;
47
+ height: 100%;
48
+ background: var(--harmony-bg-workspace);
49
+ color: var(--harmony-text);
50
+ font-family: var(--harmony-font);
51
+ -webkit-font-smoothing: antialiased;
52
+ }
53
+
54
+ /* ── Setup screen ── */
55
+ .setup-screen {
56
+ height: 100vh;
57
+ display: flex;
58
+ flex-direction: column;
59
+ align-items: center;
60
+ justify-content: center;
61
+ background: var(--harmony-bg-workspace);
62
+ gap: 10px;
63
+ }
64
+ .setup-title {
65
+ margin: 0 0 4px;
66
+ font-size: 28px;
67
+ font-weight: 600;
68
+ color: var(--harmony-text);
69
+ }
70
+ .setup-desc {
71
+ margin: 0 0 20px;
72
+ font-size: 14px;
73
+ color: var(--harmony-text-secondary);
74
+ }
75
+ .setup-form {
76
+ display: flex;
77
+ flex-direction: column;
78
+ gap: 6px;
79
+ width: 360px;
80
+ }
81
+ .setup-label {
82
+ font-size: 12px;
83
+ color: var(--harmony-text-secondary);
84
+ margin-top: 8px;
85
+ }
86
+ .setup-input {
87
+ background: var(--harmony-bg-surface);
88
+ color: var(--harmony-text);
89
+ border: 1px solid var(--harmony-border);
90
+ border-radius: var(--harmony-radius-sm);
91
+ padding: 10px 14px;
92
+ font-size: 13px;
93
+ outline: none;
94
+ font-family: var(--harmony-mono);
95
+ width: 100%;
96
+ }
97
+ .setup-input:focus {
98
+ border-color: var(--harmony-primary);
99
+ box-shadow: 0 0 0 3px var(--harmony-primary-soft);
100
+ }
101
+ .setup-hint {
102
+ margin: 2px 0 0;
103
+ font-size: 11px;
104
+ color: var(--harmony-text-muted);
105
+ }
106
+ .setup-btn {
107
+ margin-top: 16px;
108
+ background: var(--harmony-primary);
109
+ color: #fff;
110
+ border: none;
111
+ border-radius: var(--harmony-radius-pill);
112
+ padding: 10px 24px;
113
+ font-size: 14px;
114
+ font-weight: 600;
115
+ cursor: pointer;
116
+ align-self: flex-start;
117
+ }
118
+ .setup-btn:hover {
119
+ background: var(--harmony-primary-hover);
120
+ }
121
+ .setup-btn:disabled {
122
+ opacity: 0.45;
123
+ cursor: not-allowed;
124
+ }
125
+ .bootstrap-msg {
126
+ max-width: 420px;
127
+ text-align: center;
128
+ line-height: 1.45;
129
+ color: var(--harmony-danger);
130
+ }
131
+
132
+ /* ── Root layout ── */
133
+ .root {
134
+ display: flex;
135
+ height: 100vh;
136
+ overflow: hidden;
137
+ flex-direction: column;
138
+ background: var(--harmony-bg-workspace);
139
+ }
140
+
141
+ /* ── Top bar (single line) ── */
142
+ .editor-topbar {
143
+ flex-shrink: 0;
144
+ display: flex;
145
+ align-items: center;
146
+ justify-content: space-between;
147
+ gap: 20px;
148
+ height: 56px;
149
+ padding: 0 24px;
150
+ background: var(--harmony-bg-surface);
151
+ border-bottom: 1px solid var(--harmony-border);
152
+ z-index: 40;
153
+ }
154
+ .editor-topbar-left {
155
+ display: flex;
156
+ align-items: center;
157
+ gap: 12px;
158
+ min-width: 0;
159
+ flex: 1;
160
+ }
161
+ .editor-topbar-right {
162
+ display: flex;
163
+ align-items: center;
164
+ gap: 10px;
165
+ flex-shrink: 0;
166
+ }
167
+
168
+ /* ── Main stage + floating annotate dock ── */
169
+ .editor-stage {
170
+ flex: 1;
171
+ display: flex;
172
+ flex-direction: column;
173
+ min-height: 0;
174
+ overflow: hidden;
175
+ position: relative;
176
+ background: var(--harmony-bg-workspace);
177
+ }
178
+
179
+ .canvas-workspace {
180
+ flex: 1;
181
+ display: flex;
182
+ flex-direction: column;
183
+ min-height: 0;
184
+ padding: 20px 28px 72px;
185
+ overflow: hidden;
186
+ }
187
+
188
+ .canvas-window {
189
+ flex: 1;
190
+ display: flex;
191
+ flex-direction: column;
192
+ min-height: 0;
193
+ max-width: 1280px;
194
+ width: 100%;
195
+ margin: 0 auto;
196
+ background: var(--harmony-bg-surface);
197
+ border: 1px solid var(--harmony-border);
198
+ border-radius: var(--harmony-radius-lg);
199
+ box-shadow: var(--harmony-shadow-md);
200
+ overflow: hidden;
201
+ }
202
+
203
+ .canvas-chrome {
204
+ flex-shrink: 0;
205
+ display: flex;
206
+ align-items: center;
207
+ gap: 12px;
208
+ padding: 10px 16px;
209
+ background: var(--harmony-bg-subtle);
210
+ border-bottom: 1px solid var(--harmony-border);
211
+ }
212
+ .canvas-chrome-left {
213
+ display: flex;
214
+ align-items: center;
215
+ gap: 8px;
216
+ flex-shrink: 0;
217
+ }
218
+ .canvas-chrome-right {
219
+ display: flex;
220
+ align-items: center;
221
+ gap: 4px;
222
+ flex-shrink: 0;
223
+ margin-left: auto;
224
+ }
225
+ .canvas-page-badge {
226
+ font-size: 12px;
227
+ font-weight: 600;
228
+ color: var(--harmony-text-secondary);
229
+ white-space: nowrap;
230
+ }
231
+
232
+ /* Floating annotation toolbar — centered at bottom of canvas stage */
233
+ .annotate-dock {
234
+ position: absolute;
235
+ bottom: 20px;
236
+ left: 50%;
237
+ transform: translateX(-50%);
238
+ z-index: 60;
239
+ display: flex;
240
+ align-items: center;
241
+ gap: 2px;
242
+ padding: 5px 8px;
243
+ background: var(--harmony-bg-surface);
244
+ border: 1px solid var(--harmony-border);
245
+ border-radius: var(--harmony-radius-pill);
246
+ box-shadow:
247
+ 0 6px 28px rgba(22, 45, 61, 0.14),
248
+ 0 2px 6px rgba(22, 45, 61, 0.06);
249
+ pointer-events: auto;
250
+ }
251
+ .annotate-dock-label {
252
+ font-size: 12px;
253
+ font-weight: 600;
254
+ color: var(--harmony-text-secondary);
255
+ padding: 0 8px 0 4px;
256
+ white-space: nowrap;
257
+ border-right: 1px solid var(--harmony-border);
258
+ margin-right: 4px;
259
+ }
260
+
261
+ /* ── Global top bar aliases (legacy class names) ── */
262
+ .harmony-global-bar {
263
+ flex-shrink: 0;
264
+ display: flex;
265
+ align-items: center;
266
+ justify-content: space-between;
267
+ gap: 20px;
268
+ height: 56px;
269
+ padding: 0 24px;
270
+ background: var(--harmony-bg-surface);
271
+ border-bottom: 1px solid var(--harmony-border);
272
+ }
273
+ .harmony-global-left {
274
+ display: flex;
275
+ align-items: center;
276
+ gap: 12px;
277
+ min-width: 0;
278
+ flex: 1;
279
+ }
280
+ .harmony-global-spacer {
281
+ display: none;
282
+ }
283
+ .harmony-global-right {
284
+ display: flex;
285
+ align-items: center;
286
+ gap: 10px;
287
+ flex-shrink: 0;
288
+ }
289
+ .harmony-page-select-wrap {
290
+ display: flex;
291
+ align-items: center;
292
+ gap: 8px;
293
+ min-width: 0;
294
+ }
295
+ .harmony-page-label {
296
+ font-size: 13px;
297
+ font-weight: 600;
298
+ color: var(--harmony-text-secondary);
299
+ white-space: nowrap;
300
+ }
301
+ .harmony-path-select {
302
+ display: flex;
303
+ align-items: center;
304
+ gap: 8px;
305
+ min-width: 0;
306
+ }
307
+
308
+ .aiditor-logo {
309
+ font-size: 17px;
310
+ font-weight: 700;
311
+ letter-spacing: -0.3px;
312
+ color: var(--harmony-text);
313
+ flex-shrink: 0;
314
+ font-family: var(--harmony-font);
315
+ }
316
+ .aiditor-logo-ai {
317
+ color: var(--harmony-primary);
318
+ }
319
+
320
+ .aiditor-dropdown {
321
+ min-width: 180px;
322
+ max-width: 320px;
323
+ background: var(--harmony-bg-surface);
324
+ color: var(--harmony-text);
325
+ border: 1px solid var(--harmony-border);
326
+ border-radius: var(--harmony-radius-sm);
327
+ padding: 7px 32px 7px 12px;
328
+ font-size: 13px;
329
+ font-family: var(--harmony-mono);
330
+ cursor: pointer;
331
+ outline: none;
332
+ appearance: none;
333
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%235a6b7d' d='M3 4.5L6 8l3-3.5H3z'/%3E%3C/svg%3E");
334
+ background-repeat: no-repeat;
335
+ background-position: right 10px center;
336
+ }
337
+ .aiditor-dropdown:focus {
338
+ border-color: var(--harmony-primary);
339
+ box-shadow: 0 0 0 3px var(--harmony-primary-soft);
340
+ }
341
+ .aiditor-dropdown option {
342
+ background: #fff;
343
+ color: var(--harmony-text);
344
+ }
345
+ .harmony-page-select {
346
+ flex: 1;
347
+ min-width: 160px;
348
+ }
349
+ .preview-path-select {
350
+ flex: 1;
351
+ min-width: 0;
352
+ max-width: 400px;
353
+ }
354
+ .path-select-row {
355
+ display: flex;
356
+ align-items: center;
357
+ gap: 8px;
358
+ width: 100%;
359
+ }
360
+ .params-loading-hint {
361
+ font-size: 11px;
362
+ color: var(--harmony-text-muted);
363
+ white-space: nowrap;
364
+ flex-shrink: 0;
365
+ }
366
+
367
+ /* Harmony buttons */
368
+ .harmony-btn-primary {
369
+ background: var(--harmony-primary);
370
+ color: #fff;
371
+ border: none;
372
+ border-radius: var(--harmony-radius-pill);
373
+ padding: 7px 16px;
374
+ font-size: 13px;
375
+ font-weight: 600;
376
+ cursor: pointer;
377
+ flex-shrink: 0;
378
+ white-space: nowrap;
379
+ }
380
+ .harmony-btn-primary:hover {
381
+ background: var(--harmony-primary-hover);
382
+ }
383
+ .harmony-btn-primary:disabled {
384
+ opacity: 0.5;
385
+ cursor: not-allowed;
386
+ }
387
+
388
+ .harmony-btn-secondary {
389
+ background: var(--harmony-bg-surface);
390
+ color: var(--harmony-text);
391
+ border: 1px solid var(--harmony-border);
392
+ border-radius: var(--harmony-radius-pill);
393
+ padding: 7px 14px;
394
+ font-size: 13px;
395
+ font-weight: 500;
396
+ cursor: pointer;
397
+ flex-shrink: 0;
398
+ white-space: nowrap;
399
+ }
400
+ .harmony-btn-secondary:hover {
401
+ background: var(--harmony-bg-hover);
402
+ border-color: var(--harmony-border-strong);
403
+ }
404
+ .harmony-btn-secondary:disabled {
405
+ opacity: 0.5;
406
+ cursor: not-allowed;
407
+ }
408
+
409
+ .add-page-open-btn {
410
+ /* inherits harmony-btn-primary */
411
+ }
412
+ .add-page-from-brief-btn {
413
+ /* inherits harmony-btn-secondary */
414
+ }
415
+ .project-settings-btn {
416
+ /* inherits harmony-btn-secondary */
417
+ }
418
+
419
+ .harmony-editor-body,
420
+ .harmony-sidebar,
421
+ .harmony-secondary-bar {
422
+ display: none !important;
423
+ }
424
+ .harmony-workspace {
425
+ display: contents;
426
+ }
427
+ .preview-visual-tools {
428
+ display: flex;
429
+ flex-shrink: 0;
430
+ gap: 2px;
431
+ align-items: center;
432
+ }
433
+
434
+ .visual-tool-btn {
435
+ background: transparent;
436
+ color: var(--harmony-text-secondary);
437
+ border: none;
438
+ border-radius: var(--harmony-radius-sm);
439
+ padding: 7px 10px;
440
+ font-size: 12px;
441
+ cursor: pointer;
442
+ line-height: 1;
443
+ display: inline-flex;
444
+ align-items: center;
445
+ justify-content: center;
446
+ min-width: 34px;
447
+ min-height: 34px;
448
+ }
449
+ .visual-tool-btn:hover {
450
+ background: var(--harmony-bg-hover);
451
+ color: var(--harmony-text);
452
+ }
453
+ .visual-tool-on {
454
+ background: var(--harmony-primary-soft) !important;
455
+ color: var(--harmony-primary) !important;
456
+ }
457
+ .tool-group-sep {
458
+ width: 1px;
459
+ background: var(--harmony-border);
460
+ align-self: stretch;
461
+ margin: 0 4px;
462
+ flex-shrink: 0;
463
+ }
464
+
465
+ /* Canvas aliases */
466
+ .harmony-canvas-area,
467
+ .canvas-workspace {
468
+ flex: 1;
469
+ display: flex;
470
+ flex-direction: column;
471
+ min-height: 0;
472
+ padding: 20px 28px 72px;
473
+ gap: 10px;
474
+ overflow: hidden;
475
+ }
476
+ .harmony-canvas-window,
477
+ .canvas-window {
478
+ flex: 1;
479
+ display: flex;
480
+ flex-direction: column;
481
+ min-height: 0;
482
+ background: var(--harmony-bg-surface);
483
+ border: 1px solid var(--harmony-border);
484
+ border-radius: var(--harmony-radius-lg);
485
+ box-shadow: var(--harmony-shadow-md);
486
+ overflow: hidden;
487
+ }
488
+
489
+ .harmony-canvas-chrome {
490
+ flex-shrink: 0;
491
+ display: flex;
492
+ align-items: center;
493
+ gap: 12px;
494
+ padding: 10px 16px;
495
+ background: var(--harmony-bg-subtle);
496
+ border-bottom: 1px solid var(--harmony-border);
497
+ }
498
+ .harmony-canvas-chrome-left {
499
+ display: flex;
500
+ align-items: center;
501
+ gap: 8px;
502
+ flex-shrink: 0;
503
+ }
504
+ .harmony-canvas-page-badge {
505
+ font-size: 12px;
506
+ font-weight: 600;
507
+ color: var(--harmony-text-secondary);
508
+ background: var(--harmony-bg-surface);
509
+ border: 1px solid var(--harmony-border);
510
+ border-radius: var(--harmony-radius-sm);
511
+ padding: 4px 10px;
512
+ }
513
+ .harmony-url-bar-wrap {
514
+ flex: 1;
515
+ min-width: 0;
516
+ }
517
+ .url-bar-wrap {
518
+ flex: 1;
519
+ min-width: 200px;
520
+ }
521
+ .url-bar {
522
+ font-size: 12px;
523
+ font-family: var(--harmony-mono);
524
+ color: var(--harmony-text-secondary);
525
+ background: var(--harmony-bg-surface);
526
+ border: 1px solid var(--harmony-border);
527
+ border-radius: var(--harmony-radius-sm);
528
+ padding: 7px 12px;
529
+ word-break: break-all;
530
+ }
531
+
532
+ .preview-loading {
533
+ font-size: 13px;
534
+ color: var(--harmony-text-muted);
535
+ }
536
+ .preview-error {
537
+ font-size: 13px;
538
+ color: var(--harmony-danger);
539
+ background: var(--harmony-danger-soft);
540
+ border-radius: var(--harmony-radius-sm);
541
+ padding: 10px 12px;
542
+ border: 1px solid rgba(232, 76, 61, 0.2);
543
+ }
544
+
545
+ /* isolation: Chrome Element Capture requires a stacking context on the capture target */
546
+ .preview-frame-wrap {
547
+ flex: 1;
548
+ min-height: 0;
549
+ border: none;
550
+ border-radius: 0;
551
+ overflow: visible;
552
+ background: var(--harmony-bg-surface);
553
+ position: relative;
554
+ isolation: isolate;
555
+ }
556
+ .harmony-canvas-content {
557
+ flex: 1;
558
+ }
559
+ .preview-frame {
560
+ width: 100%;
561
+ height: 100%;
562
+ min-height: 360px;
563
+ border: none;
564
+ display: block;
565
+ }
566
+ .preview-frame-tablet {
567
+ align-self: center;
568
+ width: 768px;
569
+ max-width: 100%;
570
+ }
571
+ .preview-frame-mobile {
572
+ align-self: center;
573
+ width: 390px;
574
+ max-width: 100%;
575
+ }
576
+
577
+ /* ── Visual annotations ── */
578
+ .visual-overlay {
579
+ position: absolute;
580
+ inset: 0;
581
+ z-index: 2;
582
+ }
583
+ .visual-overlay-none {
584
+ pointer-events: none;
585
+ }
586
+ .point-marker {
587
+ position: absolute;
588
+ width: 14px;
589
+ height: 14px;
590
+ margin: -7px 0 0 -7px;
591
+ border-radius: 50%;
592
+ background: var(--harmony-primary);
593
+ border: 2px solid #fff;
594
+ box-shadow: var(--harmony-shadow-sm);
595
+ }
596
+ .point-marker-idx {
597
+ position: absolute;
598
+ left: 10px;
599
+ top: -18px;
600
+ min-width: 16px;
601
+ height: 16px;
602
+ padding: 0 4px;
603
+ border-radius: 4px;
604
+ background: var(--harmony-primary);
605
+ color: #fff;
606
+ font-size: 10px;
607
+ font-weight: 700;
608
+ line-height: 16px;
609
+ text-align: center;
610
+ pointer-events: none;
611
+ }
612
+ .area-rect {
613
+ position: absolute;
614
+ border: 2px dashed var(--harmony-primary);
615
+ background: var(--harmony-primary-soft);
616
+ pointer-events: none;
617
+ }
618
+ .area-marker-idx {
619
+ position: absolute;
620
+ left: 4px;
621
+ top: 4px;
622
+ min-width: 18px;
623
+ height: 18px;
624
+ padding: 0 5px;
625
+ border-radius: 4px;
626
+ background: var(--harmony-primary);
627
+ color: #fff;
628
+ font-size: 10px;
629
+ font-weight: 700;
630
+ line-height: 18px;
631
+ text-align: center;
632
+ pointer-events: none;
633
+ z-index: 1;
634
+ }
635
+ .area-rect-draft {
636
+ border-style: solid;
637
+ border-color: var(--harmony-primary);
638
+ background: var(--harmony-primary-soft);
639
+ }
640
+ .arrow-pending-dot {
641
+ position: absolute;
642
+ width: 10px;
643
+ height: 10px;
644
+ margin: -5px 0 0 -5px;
645
+ border-radius: 50%;
646
+ background: var(--harmony-primary);
647
+ border: 2px solid #fff;
648
+ box-shadow: var(--harmony-shadow-sm);
649
+ pointer-events: none;
650
+ }
651
+ .arrow-svg {
652
+ position: absolute;
653
+ inset: 0;
654
+ width: 100%;
655
+ height: 100%;
656
+ pointer-events: none;
657
+ }
658
+ .arrow-svg line {
659
+ stroke: var(--harmony-primary);
660
+ stroke-width: 2;
661
+ marker-end: url(#aiditor-arrowhead);
662
+ }
663
+ .arrow-end-pin {
664
+ position: absolute;
665
+ width: 22px;
666
+ height: 22px;
667
+ margin: -11px 0 0 -11px;
668
+ border-radius: 50%;
669
+ background: var(--harmony-primary);
670
+ color: #fff;
671
+ border: 2px solid #fff;
672
+ box-shadow: var(--harmony-shadow-sm);
673
+ font-size: 11px;
674
+ font-weight: 700;
675
+ display: flex;
676
+ align-items: center;
677
+ justify-content: center;
678
+ pointer-events: none;
679
+ z-index: 3;
680
+ }
681
+ .visual-popovers {
682
+ position: absolute;
683
+ inset: 0;
684
+ z-index: 4;
685
+ pointer-events: none;
686
+ }
687
+ .visual-popover {
688
+ position: absolute;
689
+ width: 280px;
690
+ max-width: min(280px, calc(100% - 16px));
691
+ max-height: min(560px, calc(100vh - 96px));
692
+ display: flex;
693
+ flex-direction: column;
694
+ gap: 8px;
695
+ padding: 12px 14px;
696
+ background: var(--harmony-bg-surface);
697
+ border: 1px solid var(--harmony-border);
698
+ border-radius: var(--harmony-radius-md);
699
+ box-shadow: var(--harmony-shadow-lg);
700
+ box-sizing: border-box;
701
+ transform: translate(10px, 10px);
702
+ pointer-events: auto;
703
+ overflow-y: auto;
704
+ overflow-x: hidden;
705
+ min-height: 0;
706
+ }
707
+ .visual-popover-flip-x {
708
+ transform: translate(calc(-100% - 14px), 10px);
709
+ }
710
+ .visual-popover-flip-y {
711
+ transform: translate(10px, calc(-100% - 14px));
712
+ }
713
+ .visual-popover-flip-x.visual-popover-flip-y {
714
+ transform: translate(calc(-100% - 14px), calc(-100% - 14px));
715
+ }
716
+ .visual-annotation-row-head {
717
+ display: flex;
718
+ align-items: center;
719
+ justify-content: space-between;
720
+ gap: 8px;
721
+ }
722
+ .visual-annotation-kind {
723
+ font-size: 11px;
724
+ color: var(--harmony-primary);
725
+ font-weight: 600;
726
+ }
727
+ .visual-annotation-actions {
728
+ display: flex;
729
+ gap: 6px;
730
+ flex-shrink: 0;
731
+ }
732
+ .visual-annotation-remove {
733
+ background: transparent;
734
+ color: var(--harmony-text-muted);
735
+ border: 1px solid var(--harmony-border);
736
+ border-radius: var(--harmony-radius-sm);
737
+ padding: 4px 8px;
738
+ font-size: 11px;
739
+ cursor: pointer;
740
+ }
741
+ .visual-annotation-remove:hover {
742
+ color: var(--harmony-danger);
743
+ border-color: var(--harmony-danger);
744
+ }
745
+ .visual-annotation-run {
746
+ background: var(--harmony-primary);
747
+ color: #fff;
748
+ border: none;
749
+ border-radius: var(--harmony-radius-sm);
750
+ padding: 4px 10px;
751
+ font-size: 11px;
752
+ font-weight: 600;
753
+ cursor: pointer;
754
+ }
755
+ .visual-annotation-run:hover {
756
+ background: var(--harmony-primary-hover);
757
+ }
758
+ .visual-annotation-run:disabled {
759
+ opacity: 0.45;
760
+ cursor: not-allowed;
761
+ }
762
+ .visual-annotation-instruction {
763
+ width: 100%;
764
+ min-height: 48px;
765
+ resize: vertical;
766
+ background: var(--harmony-bg-surface);
767
+ color: var(--harmony-text);
768
+ border: 1px solid var(--harmony-border);
769
+ border-radius: var(--harmony-radius-sm);
770
+ padding: 6px 8px;
771
+ font-size: 12px;
772
+ font-family: inherit;
773
+ outline: none;
774
+ }
775
+ .visual-annotation-instruction:focus {
776
+ border-color: var(--harmony-primary);
777
+ box-shadow: 0 0 0 3px var(--harmony-primary-soft);
778
+ }
779
+ .visual-annotation-files {
780
+ display: flex;
781
+ flex-direction: column;
782
+ gap: 6px;
783
+ margin-top: 4px;
784
+ }
785
+ .visual-attach-row {
786
+ display: flex;
787
+ flex-wrap: wrap;
788
+ align-items: center;
789
+ gap: 6px;
790
+ }
791
+ .visual-attach-btn {
792
+ background: var(--harmony-bg-subtle);
793
+ color: var(--harmony-text-secondary);
794
+ border: 1px solid var(--harmony-border);
795
+ border-radius: var(--harmony-radius-sm);
796
+ padding: 4px 8px;
797
+ font-size: 11px;
798
+ cursor: pointer;
799
+ }
800
+ .visual-attach-btn:hover {
801
+ border-color: var(--harmony-primary);
802
+ color: var(--harmony-primary);
803
+ }
804
+ .visual-attachment-chips {
805
+ display: flex;
806
+ flex-wrap: wrap;
807
+ gap: 6px;
808
+ }
809
+ .visual-attachment-chip {
810
+ display: inline-flex;
811
+ align-items: center;
812
+ gap: 6px;
813
+ max-width: 100%;
814
+ background: var(--harmony-bg-subtle);
815
+ border: 1px solid var(--harmony-border);
816
+ border-radius: var(--harmony-radius-sm);
817
+ padding: 4px 6px;
818
+ font-size: 11px;
819
+ color: var(--harmony-text-secondary);
820
+ }
821
+ .visual-attachment-thumb {
822
+ width: 36px;
823
+ height: 36px;
824
+ object-fit: cover;
825
+ border-radius: 4px;
826
+ flex-shrink: 0;
827
+ background: var(--harmony-bg-hover);
828
+ }
829
+ .visual-attachment-name {
830
+ overflow: hidden;
831
+ text-overflow: ellipsis;
832
+ white-space: nowrap;
833
+ max-width: 160px;
834
+ }
835
+ .visual-attachment-remove-file {
836
+ background: transparent;
837
+ border: none;
838
+ color: var(--harmony-text-muted);
839
+ cursor: pointer;
840
+ font-size: 14px;
841
+ line-height: 1;
842
+ padding: 0 4px;
843
+ }
844
+ .visual-attachment-remove-file:hover {
845
+ color: var(--harmony-danger);
846
+ }
847
+ .file-input-hidden {
848
+ display: none;
849
+ }
850
+ .visual-error {
851
+ font-size: 12px;
852
+ color: var(--harmony-danger);
853
+ }
854
+ .visual-submit-error {
855
+ font-size: 12px;
856
+ color: var(--harmony-danger);
857
+ margin: 0;
858
+ padding: 0 2px;
859
+ }
860
+ .visual-submit-progress {
861
+ font-size: 12px;
862
+ color: var(--harmony-primary);
863
+ margin: 0;
864
+ padding: 0 2px;
865
+ }
866
+
867
+ .video-record-btn {
868
+ border-color: var(--harmony-primary) !important;
869
+ color: var(--harmony-primary) !important;
870
+ }
871
+ .video-record-active {
872
+ animation: pulse-rec 1.2s ease-in-out infinite;
873
+ }
874
+ @keyframes pulse-rec {
875
+ 0%,
876
+ 100% {
877
+ opacity: 1;
878
+ }
879
+ 50% {
880
+ opacity: 0.55;
881
+ }
882
+ }
883
+
884
+ /* ── Bottom agent panel ── */
885
+ .bottom-panel {
886
+ flex-shrink: 0;
887
+ display: flex;
888
+ flex-direction: column;
889
+ background: var(--harmony-bg-surface);
890
+ border-top: 1px solid var(--harmony-border);
891
+ min-height: 32px;
892
+ max-height: 80vh;
893
+ height: 200px;
894
+ box-shadow: 0 -2px 12px rgba(22, 45, 61, 0.06);
895
+ }
896
+ .bottom-panel-collapsed {
897
+ max-height: 32px;
898
+ overflow: hidden;
899
+ }
900
+ .bottom-panel-resize {
901
+ height: 4px;
902
+ cursor: ns-resize;
903
+ background: transparent;
904
+ flex-shrink: 0;
905
+ }
906
+ .bottom-panel-resize:hover,
907
+ .bottom-panel-resize:active {
908
+ background: var(--harmony-primary);
909
+ }
910
+ .bottom-panel-header {
911
+ display: flex;
912
+ align-items: center;
913
+ gap: 8px;
914
+ padding: 6px 16px;
915
+ flex-shrink: 0;
916
+ cursor: pointer;
917
+ user-select: none;
918
+ background: var(--harmony-bg-subtle);
919
+ }
920
+ .bottom-panel-title {
921
+ font-size: 11px;
922
+ font-weight: 600;
923
+ color: var(--harmony-text-secondary);
924
+ text-transform: uppercase;
925
+ letter-spacing: 0.5px;
926
+ }
927
+ .bottom-panel-running {
928
+ display: inline-block;
929
+ width: 8px;
930
+ height: 8px;
931
+ border-radius: 50%;
932
+ background: var(--harmony-success);
933
+ animation: pulse-dot 1.2s ease-in-out infinite;
934
+ margin-left: 4px;
935
+ }
936
+ @keyframes pulse-dot {
937
+ 0%,
938
+ 100% {
939
+ opacity: 1;
940
+ }
941
+ 50% {
942
+ opacity: 0.3;
943
+ }
944
+ }
945
+ .bottom-panel-toggle {
946
+ background: none;
947
+ border: none;
948
+ color: var(--harmony-text-muted);
949
+ font-size: 14px;
950
+ cursor: pointer;
951
+ padding: 0 4px;
952
+ line-height: 1;
953
+ }
954
+ .bottom-panel-toggle:hover {
955
+ color: var(--harmony-text);
956
+ }
957
+ .bottom-panel-spacer {
958
+ flex: 1;
959
+ }
960
+ .bottom-panel-clear {
961
+ background: none;
962
+ border: none;
963
+ color: var(--harmony-text-muted);
964
+ font-size: 11px;
965
+ cursor: pointer;
966
+ padding: 2px 6px;
967
+ }
968
+ .bottom-panel-clear:hover {
969
+ color: var(--harmony-text);
970
+ }
971
+ .output-panel {
972
+ overflow-y: auto;
973
+ padding: 8px 16px;
974
+ font-family: var(--harmony-mono);
975
+ font-size: 12px;
976
+ line-height: 1.5;
977
+ white-space: pre-wrap;
978
+ word-break: break-word;
979
+ flex: 1;
980
+ min-height: 0;
981
+ background: var(--harmony-bg-surface);
982
+ }
983
+ .chunk {
984
+ color: var(--harmony-text);
985
+ }
986
+ .chunk-status {
987
+ color: var(--harmony-text-muted);
988
+ font-style: italic;
989
+ }
990
+ .chunk-tool {
991
+ color: var(--harmony-primary);
992
+ }
993
+ .chunk-error {
994
+ color: var(--harmony-danger);
995
+ }
996
+ .chunk-thinking {
997
+ color: var(--harmony-text-muted);
998
+ font-style: italic;
999
+ }
1000
+ .chunk-result {
1001
+ color: var(--harmony-success);
1002
+ }
1003
+ .chunk-user {
1004
+ color: var(--harmony-text);
1005
+ }
1006
+ .chunk-user-prefix {
1007
+ color: var(--harmony-text-muted);
1008
+ }
1009
+ .agent-chat-row {
1010
+ display: flex;
1011
+ gap: 8px;
1012
+ padding: 8px 16px;
1013
+ border-top: 1px solid var(--harmony-border);
1014
+ flex-shrink: 0;
1015
+ align-items: flex-end;
1016
+ background: var(--harmony-bg-subtle);
1017
+ }
1018
+ .agent-chat-input {
1019
+ flex: 1;
1020
+ min-height: 32px;
1021
+ max-height: 96px;
1022
+ resize: none;
1023
+ background: var(--harmony-bg-surface);
1024
+ color: var(--harmony-text);
1025
+ border: 1px solid var(--harmony-border);
1026
+ border-radius: var(--harmony-radius-sm);
1027
+ padding: 6px 10px;
1028
+ font-family: var(--harmony-font);
1029
+ font-size: 12px;
1030
+ line-height: 1.4;
1031
+ }
1032
+ .agent-chat-input:focus {
1033
+ outline: none;
1034
+ border-color: var(--harmony-primary);
1035
+ box-shadow: 0 0 0 3px var(--harmony-primary-soft);
1036
+ }
1037
+ .agent-chat-input:disabled {
1038
+ opacity: 0.6;
1039
+ cursor: not-allowed;
1040
+ }
1041
+ .agent-chat-send {
1042
+ background: var(--harmony-primary);
1043
+ color: #fff;
1044
+ border: none;
1045
+ border-radius: var(--harmony-radius-pill);
1046
+ padding: 6px 16px;
1047
+ font-size: 12px;
1048
+ font-weight: 600;
1049
+ cursor: pointer;
1050
+ flex-shrink: 0;
1051
+ height: 32px;
1052
+ }
1053
+ .agent-chat-send:hover:not(:disabled) {
1054
+ background: var(--harmony-primary-hover);
1055
+ }
1056
+ .agent-chat-send:disabled {
1057
+ opacity: 0.45;
1058
+ cursor: not-allowed;
1059
+ }
1060
+
1061
+ .file-link {
1062
+ color: var(--harmony-primary);
1063
+ text-decoration: underline;
1064
+ cursor: pointer;
1065
+ }
1066
+ .file-link:hover {
1067
+ color: var(--harmony-primary-hover);
1068
+ }
1069
+ .chunk-tool-prefix {
1070
+ color: var(--harmony-primary);
1071
+ }
1072
+
1073
+ /* ── Result banner ── */
1074
+ .add-page-result-slot {
1075
+ flex-shrink: 0;
1076
+ }
1077
+ .add-page-result-banner {
1078
+ margin: 0 24px 8px;
1079
+ padding: 10px 14px;
1080
+ border-radius: var(--harmony-radius-md);
1081
+ font-size: 12px;
1082
+ display: flex;
1083
+ flex-wrap: wrap;
1084
+ align-items: center;
1085
+ gap: 10px;
1086
+ }
1087
+ .add-page-result-success {
1088
+ background: var(--harmony-success-soft);
1089
+ border: 1px solid rgba(0, 168, 98, 0.25);
1090
+ color: var(--harmony-success);
1091
+ }
1092
+ .add-page-result-failed {
1093
+ background: var(--harmony-danger-soft);
1094
+ border: 1px solid rgba(232, 76, 61, 0.25);
1095
+ color: var(--harmony-danger);
1096
+ }
1097
+ .add-page-result-actions {
1098
+ display: flex;
1099
+ gap: 8px;
1100
+ margin-left: auto;
1101
+ }
1102
+ .add-page-result-btn {
1103
+ background: var(--harmony-bg-surface);
1104
+ color: var(--harmony-text-secondary);
1105
+ border: 1px solid var(--harmony-border);
1106
+ border-radius: var(--harmony-radius-sm);
1107
+ padding: 4px 10px;
1108
+ font-size: 11px;
1109
+ cursor: pointer;
1110
+ }
1111
+ .add-page-result-btn:hover {
1112
+ background: var(--harmony-bg-hover);
1113
+ color: var(--harmony-text);
1114
+ }
1115
+
1116
+ /* ── Modals & overlays ── */
1117
+ .file-preview-overlay {
1118
+ position: fixed;
1119
+ inset: 0;
1120
+ z-index: 200;
1121
+ background: rgba(22, 45, 61, 0.45);
1122
+ display: flex;
1123
+ align-items: center;
1124
+ justify-content: center;
1125
+ padding: 20px;
1126
+ box-sizing: border-box;
1127
+ }
1128
+ .file-preview-panel {
1129
+ background: var(--harmony-bg-surface);
1130
+ border: 1px solid var(--harmony-border);
1131
+ border-radius: var(--harmony-radius-lg);
1132
+ width: min(900px, 96vw);
1133
+ max-height: 90vh;
1134
+ display: flex;
1135
+ flex-direction: column;
1136
+ overflow: hidden;
1137
+ box-shadow: var(--harmony-shadow-lg);
1138
+ }
1139
+ .file-preview-header {
1140
+ display: flex;
1141
+ align-items: center;
1142
+ gap: 8px;
1143
+ padding: 12px 16px;
1144
+ border-bottom: 1px solid var(--harmony-border);
1145
+ flex-shrink: 0;
1146
+ background: var(--harmony-bg-subtle);
1147
+ }
1148
+ .file-preview-title {
1149
+ font-size: 12px;
1150
+ color: var(--harmony-text);
1151
+ font-family: var(--harmony-mono);
1152
+ overflow: hidden;
1153
+ text-overflow: ellipsis;
1154
+ white-space: nowrap;
1155
+ flex: 1;
1156
+ }
1157
+ .file-preview-close {
1158
+ background: none;
1159
+ border: none;
1160
+ color: var(--harmony-text-muted);
1161
+ font-size: 18px;
1162
+ cursor: pointer;
1163
+ padding: 0 4px;
1164
+ line-height: 1;
1165
+ flex-shrink: 0;
1166
+ }
1167
+ .file-preview-close:hover {
1168
+ color: var(--harmony-text);
1169
+ }
1170
+ .file-preview-body {
1171
+ flex: 1;
1172
+ overflow: auto;
1173
+ padding: 16px;
1174
+ min-height: 0;
1175
+ }
1176
+ .file-preview-text {
1177
+ font-family: var(--harmony-mono);
1178
+ font-size: 12px;
1179
+ line-height: 1.5;
1180
+ color: var(--harmony-text);
1181
+ white-space: pre-wrap;
1182
+ word-break: break-word;
1183
+ margin: 0;
1184
+ }
1185
+ .file-preview-image {
1186
+ max-width: 100%;
1187
+ max-height: 70vh;
1188
+ display: block;
1189
+ margin: 0 auto;
1190
+ }
1191
+ .file-preview-loading {
1192
+ color: var(--harmony-text-muted);
1193
+ font-style: italic;
1194
+ font-size: 12px;
1195
+ }
1196
+
1197
+ .video-review-overlay,
1198
+ .snapshot-overlay {
1199
+ position: fixed;
1200
+ inset: 0;
1201
+ z-index: 200;
1202
+ background: rgba(22, 45, 61, 0.45);
1203
+ display: flex;
1204
+ align-items: center;
1205
+ justify-content: center;
1206
+ padding: 20px;
1207
+ box-sizing: border-box;
1208
+ }
1209
+ .video-review-panel,
1210
+ .snapshot-panel {
1211
+ background: var(--harmony-bg-surface);
1212
+ border: 1px solid var(--harmony-border);
1213
+ border-radius: var(--harmony-radius-lg);
1214
+ width: min(1100px, 96vw);
1215
+ max-height: 94vh;
1216
+ display: flex;
1217
+ flex-direction: column;
1218
+ gap: 10px;
1219
+ padding: 14px 16px;
1220
+ overflow: auto;
1221
+ box-shadow: var(--harmony-shadow-lg);
1222
+ }
1223
+ .snapshot-panel {
1224
+ width: min(1200px, 96vw);
1225
+ overflow: hidden;
1226
+ }
1227
+ .video-review-header,
1228
+ .snapshot-header {
1229
+ display: flex;
1230
+ justify-content: space-between;
1231
+ align-items: center;
1232
+ gap: 12px;
1233
+ flex-wrap: wrap;
1234
+ }
1235
+ .video-review-title,
1236
+ .snapshot-title {
1237
+ font-size: 15px;
1238
+ font-weight: 600;
1239
+ color: var(--harmony-text);
1240
+ margin: 0;
1241
+ }
1242
+ .video-review-meta {
1243
+ font-size: 12px;
1244
+ color: var(--harmony-text-muted);
1245
+ }
1246
+ .video-review-tools,
1247
+ .snapshot-tools {
1248
+ display: flex;
1249
+ flex-wrap: wrap;
1250
+ gap: 4px;
1251
+ align-items: center;
1252
+ }
1253
+ .video-review-transport {
1254
+ display: flex;
1255
+ align-items: center;
1256
+ gap: 10px;
1257
+ width: 100%;
1258
+ }
1259
+ .video-play-pause-btn {
1260
+ flex-shrink: 0;
1261
+ width: 40px;
1262
+ height: 36px;
1263
+ border-radius: var(--harmony-radius-sm);
1264
+ border: 1px solid var(--harmony-border);
1265
+ background: var(--harmony-bg-subtle);
1266
+ color: var(--harmony-text);
1267
+ font-size: 16px;
1268
+ line-height: 1;
1269
+ cursor: pointer;
1270
+ }
1271
+ .video-play-pause-btn:hover {
1272
+ background: var(--harmony-bg-hover);
1273
+ border-color: var(--harmony-primary);
1274
+ }
1275
+ .video-timeline-wrap {
1276
+ display: flex;
1277
+ flex-direction: column;
1278
+ gap: 6px;
1279
+ flex: 1;
1280
+ min-width: 0;
1281
+ }
1282
+ .video-timeline {
1283
+ width: 100%;
1284
+ accent-color: var(--harmony-primary);
1285
+ }
1286
+ .video-timeline-markers {
1287
+ position: relative;
1288
+ height: 10px;
1289
+ margin: 0 2px;
1290
+ }
1291
+ .video-timeline-marker {
1292
+ position: absolute;
1293
+ top: 0;
1294
+ width: 10px;
1295
+ margin-left: -5px;
1296
+ height: 10px;
1297
+ background: var(--harmony-primary);
1298
+ border-radius: 1px;
1299
+ transform: translateX(-50%);
1300
+ cursor: pointer;
1301
+ }
1302
+ .video-review-actions,
1303
+ .snapshot-footer {
1304
+ display: flex;
1305
+ gap: 10px;
1306
+ justify-content: flex-end;
1307
+ flex-wrap: wrap;
1308
+ margin-top: 4px;
1309
+ }
1310
+ .video-review-secondary,
1311
+ .snapshot-secondary {
1312
+ background: var(--harmony-bg-surface);
1313
+ color: var(--harmony-text);
1314
+ border: 1px solid var(--harmony-border);
1315
+ border-radius: var(--harmony-radius-pill);
1316
+ padding: 8px 16px;
1317
+ font-size: 13px;
1318
+ cursor: pointer;
1319
+ }
1320
+ .video-review-secondary:hover,
1321
+ .snapshot-secondary:hover {
1322
+ background: var(--harmony-bg-hover);
1323
+ }
1324
+ .video-review-primary,
1325
+ .snapshot-primary {
1326
+ background: var(--harmony-primary);
1327
+ color: #fff;
1328
+ border: none;
1329
+ border-radius: var(--harmony-radius-pill);
1330
+ padding: 8px 18px;
1331
+ font-size: 13px;
1332
+ font-weight: 600;
1333
+ cursor: pointer;
1334
+ }
1335
+ .video-review-primary:hover,
1336
+ .snapshot-primary:hover {
1337
+ background: var(--harmony-primary-hover);
1338
+ }
1339
+ .video-review-primary:disabled,
1340
+ .snapshot-primary:disabled {
1341
+ opacity: 0.45;
1342
+ cursor: not-allowed;
1343
+ }
1344
+ .snapshot-close {
1345
+ background: none;
1346
+ border: none;
1347
+ color: var(--harmony-text-muted);
1348
+ font-size: 18px;
1349
+ cursor: pointer;
1350
+ padding: 0 4px;
1351
+ line-height: 1;
1352
+ }
1353
+ .snapshot-close:hover {
1354
+ color: var(--harmony-text);
1355
+ }
1356
+ .snapshot-body {
1357
+ display: flex;
1358
+ gap: 14px;
1359
+ flex: 1;
1360
+ min-height: 0;
1361
+ overflow: hidden;
1362
+ }
1363
+ .snapshot-capture-area {
1364
+ flex: 2;
1365
+ min-width: 0;
1366
+ position: relative;
1367
+ display: flex;
1368
+ align-items: center;
1369
+ justify-content: center;
1370
+ background: var(--harmony-bg-subtle);
1371
+ border-radius: var(--harmony-radius-md);
1372
+ overflow: hidden;
1373
+ border: 1px solid var(--harmony-border);
1374
+ }
1375
+ .snapshot-img {
1376
+ max-width: 100%;
1377
+ max-height: 100%;
1378
+ object-fit: contain;
1379
+ display: block;
1380
+ user-select: none;
1381
+ -webkit-user-drag: none;
1382
+ }
1383
+ .snapshot-img-overlay {
1384
+ position: absolute;
1385
+ inset: 0;
1386
+ z-index: 2;
1387
+ }
1388
+ .snapshot-img-overlay-none {
1389
+ pointer-events: none;
1390
+ }
1391
+ .snapshot-annotations-panel {
1392
+ flex: 1;
1393
+ min-width: 220px;
1394
+ max-width: 340px;
1395
+ display: flex;
1396
+ flex-direction: column;
1397
+ gap: 8px;
1398
+ overflow-y: auto;
1399
+ }
1400
+ .snapshot-annotation-card {
1401
+ background: var(--harmony-bg-subtle);
1402
+ border: 1px solid var(--harmony-border);
1403
+ border-radius: var(--harmony-radius-md);
1404
+ padding: 10px 12px;
1405
+ display: flex;
1406
+ flex-direction: column;
1407
+ gap: 6px;
1408
+ }
1409
+ .snapshot-annotation-card-head {
1410
+ display: flex;
1411
+ align-items: center;
1412
+ justify-content: space-between;
1413
+ gap: 8px;
1414
+ }
1415
+ .snapshot-annotation-kind {
1416
+ font-size: 11px;
1417
+ color: var(--harmony-primary);
1418
+ font-weight: 600;
1419
+ }
1420
+ .snapshot-annotation-remove {
1421
+ background: transparent;
1422
+ color: var(--harmony-text-muted);
1423
+ border: 1px solid var(--harmony-border);
1424
+ border-radius: var(--harmony-radius-sm);
1425
+ padding: 4px 8px;
1426
+ font-size: 11px;
1427
+ cursor: pointer;
1428
+ }
1429
+ .snapshot-annotation-remove:hover {
1430
+ color: var(--harmony-danger);
1431
+ border-color: var(--harmony-danger);
1432
+ }
1433
+ .snapshot-empty-hint {
1434
+ color: var(--harmony-text-muted);
1435
+ font-size: 12px;
1436
+ font-style: italic;
1437
+ padding: 8px 0;
1438
+ }
1439
+ .snapshot-discard-confirm {
1440
+ display: flex;
1441
+ align-items: center;
1442
+ gap: 10px;
1443
+ font-size: 13px;
1444
+ color: var(--harmony-danger);
1445
+ }
1446
+ .snapshot-discard-confirm-msg {
1447
+ flex: 1;
1448
+ }
1449
+
1450
+ /* ── Add Page slideover ── */
1451
+ .add-page-overlay {
1452
+ position: fixed;
1453
+ inset: 0;
1454
+ z-index: 300;
1455
+ background: rgba(22, 45, 61, 0.35);
1456
+ display: flex;
1457
+ justify-content: flex-end;
1458
+ }
1459
+ .project-settings-overlay {
1460
+ position: fixed;
1461
+ inset: 0;
1462
+ z-index: 350;
1463
+ background: rgba(22, 45, 61, 0.4);
1464
+ display: flex;
1465
+ align-items: center;
1466
+ justify-content: center;
1467
+ padding: 24px;
1468
+ box-sizing: border-box;
1469
+ }
1470
+ .project-settings-dialog {
1471
+ background: var(--harmony-bg-surface);
1472
+ border: 1px solid var(--harmony-border);
1473
+ border-radius: var(--harmony-radius-lg);
1474
+ width: min(520px, 100%);
1475
+ max-height: min(80vh, 640px);
1476
+ display: flex;
1477
+ flex-direction: column;
1478
+ overflow: hidden;
1479
+ box-shadow: var(--harmony-shadow-lg);
1480
+ }
1481
+ .project-settings-header {
1482
+ display: flex;
1483
+ align-items: center;
1484
+ justify-content: space-between;
1485
+ padding: 14px 16px;
1486
+ border-bottom: 1px solid var(--harmony-border);
1487
+ background: var(--harmony-bg-subtle);
1488
+ }
1489
+ .project-settings-title {
1490
+ font-size: 14px;
1491
+ font-weight: 600;
1492
+ color: var(--harmony-text);
1493
+ }
1494
+ .project-settings-close {
1495
+ background: none;
1496
+ border: none;
1497
+ color: var(--harmony-text-muted);
1498
+ font-size: 20px;
1499
+ cursor: pointer;
1500
+ line-height: 1;
1501
+ }
1502
+ .project-settings-body {
1503
+ padding: 14px 16px;
1504
+ overflow: auto;
1505
+ display: flex;
1506
+ flex-direction: column;
1507
+ gap: 12px;
1508
+ }
1509
+ .add-page-slideover {
1510
+ width: min(480px, 100vw);
1511
+ height: 100%;
1512
+ background: var(--harmony-bg-surface);
1513
+ border-left: 1px solid var(--harmony-border);
1514
+ display: flex;
1515
+ flex-direction: column;
1516
+ box-shadow: var(--harmony-shadow-lg);
1517
+ position: relative;
1518
+ }
1519
+ .add-page-header {
1520
+ display: flex;
1521
+ align-items: center;
1522
+ gap: 8px;
1523
+ padding: 14px 16px;
1524
+ border-bottom: 1px solid var(--harmony-border);
1525
+ flex-shrink: 0;
1526
+ background: var(--harmony-bg-subtle);
1527
+ }
1528
+ .add-page-title {
1529
+ font-size: 14px;
1530
+ font-weight: 600;
1531
+ color: var(--harmony-text);
1532
+ flex: 1;
1533
+ }
1534
+ .add-page-close {
1535
+ background: none;
1536
+ border: none;
1537
+ color: var(--harmony-text-muted);
1538
+ font-size: 20px;
1539
+ cursor: pointer;
1540
+ line-height: 1;
1541
+ padding: 0 4px;
1542
+ }
1543
+ .add-page-close:hover {
1544
+ color: var(--harmony-text);
1545
+ }
1546
+ .add-page-body {
1547
+ flex: 1;
1548
+ overflow: auto;
1549
+ padding: 14px 16px;
1550
+ display: flex;
1551
+ flex-direction: column;
1552
+ gap: 16px;
1553
+ }
1554
+ .add-page-section-label {
1555
+ font-size: 11px;
1556
+ font-weight: 600;
1557
+ color: var(--harmony-text-muted);
1558
+ text-transform: uppercase;
1559
+ letter-spacing: 0.4px;
1560
+ margin-bottom: 6px;
1561
+ }
1562
+ .add-page-section-header-row {
1563
+ display: flex;
1564
+ align-items: center;
1565
+ justify-content: space-between;
1566
+ gap: 8px;
1567
+ margin-bottom: 6px;
1568
+ }
1569
+ .add-page-section-header-row .add-page-section-label {
1570
+ margin-bottom: 0;
1571
+ flex: 1;
1572
+ }
1573
+ .add-page-fill-from-image-btn {
1574
+ background: var(--harmony-bg-subtle);
1575
+ color: var(--harmony-primary);
1576
+ border: 1px solid var(--harmony-border);
1577
+ border-radius: var(--harmony-radius-sm);
1578
+ padding: 4px 10px;
1579
+ font-size: 11px;
1580
+ font-weight: 600;
1581
+ cursor: pointer;
1582
+ flex-shrink: 0;
1583
+ }
1584
+ .add-page-fill-from-image-btn:hover {
1585
+ background: var(--harmony-primary-soft);
1586
+ }
1587
+ .add-page-fill-from-image-btn:disabled {
1588
+ opacity: 0.45;
1589
+ cursor: not-allowed;
1590
+ }
1591
+ .add-page-suggested-route {
1592
+ display: flex;
1593
+ flex-wrap: wrap;
1594
+ align-items: center;
1595
+ gap: 8px;
1596
+ background: var(--harmony-bg-subtle);
1597
+ border: 1px solid var(--harmony-border);
1598
+ border-radius: var(--harmony-radius-sm);
1599
+ padding: 8px 10px;
1600
+ font-size: 12px;
1601
+ color: var(--harmony-text-secondary);
1602
+ margin-bottom: 8px;
1603
+ }
1604
+ .add-page-suggested-route code {
1605
+ font-family: var(--harmony-mono);
1606
+ color: var(--harmony-primary);
1607
+ }
1608
+ .add-page-brief-fill-popover {
1609
+ position: absolute;
1610
+ inset: 0;
1611
+ z-index: 10;
1612
+ background: rgba(22, 45, 61, 0.4);
1613
+ display: flex;
1614
+ align-items: center;
1615
+ justify-content: center;
1616
+ padding: 16px;
1617
+ box-sizing: border-box;
1618
+ }
1619
+ .add-page-brief-fill-panel {
1620
+ background: var(--harmony-bg-surface);
1621
+ border: 1px solid var(--harmony-border);
1622
+ border-radius: var(--harmony-radius-md);
1623
+ width: min(420px, 100%);
1624
+ max-height: 90%;
1625
+ overflow: auto;
1626
+ padding: 14px 16px;
1627
+ display: flex;
1628
+ flex-direction: column;
1629
+ gap: 10px;
1630
+ box-shadow: var(--harmony-shadow-lg);
1631
+ }
1632
+ .add-page-brief-fill-header {
1633
+ display: flex;
1634
+ align-items: center;
1635
+ justify-content: space-between;
1636
+ gap: 8px;
1637
+ }
1638
+ .add-page-brief-fill-title {
1639
+ font-size: 13px;
1640
+ font-weight: 600;
1641
+ color: var(--harmony-text);
1642
+ }
1643
+ .add-page-brief-fill-context {
1644
+ width: 100%;
1645
+ min-height: 64px;
1646
+ background: var(--harmony-bg-surface);
1647
+ color: var(--harmony-text);
1648
+ border: 1px solid var(--harmony-border);
1649
+ border-radius: var(--harmony-radius-sm);
1650
+ padding: 8px;
1651
+ font-size: 12px;
1652
+ font-family: var(--harmony-mono);
1653
+ resize: vertical;
1654
+ box-sizing: border-box;
1655
+ }
1656
+ .add-page-brief-fill-dropzone {
1657
+ border: 1px dashed var(--harmony-border-strong);
1658
+ border-radius: var(--harmony-radius-md);
1659
+ padding: 14px;
1660
+ text-align: center;
1661
+ color: var(--harmony-text-muted);
1662
+ font-size: 12px;
1663
+ cursor: pointer;
1664
+ }
1665
+ .add-page-brief-fill-dropzone-disabled {
1666
+ opacity: 0.45;
1667
+ cursor: not-allowed;
1668
+ pointer-events: none;
1669
+ }
1670
+ .add-page-brief-fill-context:disabled {
1671
+ opacity: 0.6;
1672
+ cursor: not-allowed;
1673
+ }
1674
+ .add-page-brief-fill-dropzone:focus {
1675
+ outline: none;
1676
+ border-color: var(--harmony-primary);
1677
+ box-shadow: 0 0 0 3px var(--harmony-primary-soft);
1678
+ }
1679
+ .add-page-brief-fill-thumbs {
1680
+ display: flex;
1681
+ flex-wrap: wrap;
1682
+ gap: 8px;
1683
+ }
1684
+ .add-page-brief-fill-thumb {
1685
+ position: relative;
1686
+ width: 72px;
1687
+ height: 72px;
1688
+ border-radius: var(--harmony-radius-sm);
1689
+ overflow: hidden;
1690
+ border: 1px solid var(--harmony-border);
1691
+ background: var(--harmony-bg-subtle);
1692
+ }
1693
+ .add-page-brief-fill-thumb img {
1694
+ width: 100%;
1695
+ height: 100%;
1696
+ object-fit: cover;
1697
+ display: block;
1698
+ }
1699
+ .add-page-brief-fill-thumb-remove {
1700
+ position: absolute;
1701
+ top: 2px;
1702
+ right: 2px;
1703
+ background: rgba(22, 45, 61, 0.7);
1704
+ color: #fff;
1705
+ border: none;
1706
+ border-radius: 3px;
1707
+ width: 18px;
1708
+ height: 18px;
1709
+ font-size: 12px;
1710
+ line-height: 1;
1711
+ cursor: pointer;
1712
+ padding: 0;
1713
+ }
1714
+ .add-page-brief-fill-actions {
1715
+ display: flex;
1716
+ gap: 8px;
1717
+ justify-content: flex-end;
1718
+ margin-top: 4px;
1719
+ }
1720
+ .add-page-route-row {
1721
+ display: flex;
1722
+ align-items: center;
1723
+ gap: 8px;
1724
+ flex-wrap: wrap;
1725
+ }
1726
+ .add-page-route-input {
1727
+ flex: 1;
1728
+ min-width: 160px;
1729
+ background: var(--harmony-bg-surface);
1730
+ color: var(--harmony-text);
1731
+ border: 1px solid var(--harmony-border);
1732
+ border-radius: var(--harmony-radius-sm);
1733
+ padding: 8px 10px;
1734
+ font-size: 13px;
1735
+ font-family: var(--harmony-mono);
1736
+ box-sizing: border-box;
1737
+ }
1738
+ .add-page-route-input:focus {
1739
+ border-color: var(--harmony-primary);
1740
+ outline: none;
1741
+ box-shadow: 0 0 0 3px var(--harmony-primary-soft);
1742
+ }
1743
+ .add-page-route-badge {
1744
+ font-size: 10px;
1745
+ color: var(--harmony-primary);
1746
+ background: var(--harmony-primary-soft);
1747
+ padding: 2px 8px;
1748
+ border-radius: 4px;
1749
+ }
1750
+ .add-page-field-error {
1751
+ font-size: 12px;
1752
+ color: var(--harmony-danger);
1753
+ margin-top: 4px;
1754
+ }
1755
+ .add-page-hint {
1756
+ font-size: 12px;
1757
+ color: var(--harmony-text-muted);
1758
+ margin-top: 4px;
1759
+ }
1760
+ .add-page-textarea {
1761
+ width: 100%;
1762
+ min-height: 120px;
1763
+ background: var(--harmony-bg-surface);
1764
+ color: var(--harmony-text);
1765
+ border: 1px solid var(--harmony-border);
1766
+ border-radius: var(--harmony-radius-sm);
1767
+ padding: 10px;
1768
+ font-size: 12px;
1769
+ font-family: var(--harmony-mono);
1770
+ resize: vertical;
1771
+ box-sizing: border-box;
1772
+ outline: none;
1773
+ }
1774
+ .add-page-textarea:focus {
1775
+ border-color: var(--harmony-primary);
1776
+ box-shadow: 0 0 0 3px var(--harmony-primary-soft);
1777
+ }
1778
+ .add-page-dropzone {
1779
+ border: 1px dashed var(--harmony-border-strong);
1780
+ border-radius: var(--harmony-radius-md);
1781
+ padding: 16px;
1782
+ text-align: center;
1783
+ color: var(--harmony-text-muted);
1784
+ font-size: 12px;
1785
+ }
1786
+ .add-page-chips {
1787
+ display: flex;
1788
+ flex-direction: column;
1789
+ gap: 6px;
1790
+ margin-top: 8px;
1791
+ }
1792
+ .add-page-chip {
1793
+ display: flex;
1794
+ align-items: center;
1795
+ gap: 8px;
1796
+ background: var(--harmony-bg-subtle);
1797
+ border: 1px solid var(--harmony-border);
1798
+ border-radius: var(--harmony-radius-sm);
1799
+ padding: 6px 8px;
1800
+ font-size: 11px;
1801
+ }
1802
+ .add-page-chip-name {
1803
+ flex: 1;
1804
+ min-width: 0;
1805
+ overflow: hidden;
1806
+ text-overflow: ellipsis;
1807
+ white-space: nowrap;
1808
+ color: var(--harmony-text-secondary);
1809
+ }
1810
+ .add-page-chip-path {
1811
+ font-size: 10px;
1812
+ color: var(--harmony-text-muted);
1813
+ font-family: var(--harmony-mono);
1814
+ }
1815
+ .add-page-chip select {
1816
+ background: var(--harmony-bg-surface);
1817
+ color: var(--harmony-text);
1818
+ border: 1px solid var(--harmony-border);
1819
+ border-radius: 4px;
1820
+ font-size: 11px;
1821
+ padding: 2px 4px;
1822
+ }
1823
+ .add-page-chip-remove {
1824
+ background: none;
1825
+ border: none;
1826
+ color: var(--harmony-text-muted);
1827
+ cursor: pointer;
1828
+ font-size: 14px;
1829
+ padding: 0 4px;
1830
+ }
1831
+ .add-page-chip-remove:hover {
1832
+ color: var(--harmony-danger);
1833
+ }
1834
+ .add-page-plugins {
1835
+ border: 1px solid var(--harmony-border);
1836
+ border-radius: var(--harmony-radius-md);
1837
+ padding: 10px;
1838
+ margin-top: 8px;
1839
+ display: flex;
1840
+ flex-direction: column;
1841
+ gap: 12px;
1842
+ max-height: 320px;
1843
+ overflow: auto;
1844
+ }
1845
+ .add-menu-panel.add-page-plugins,
1846
+ .annotation-add-menu-panel.add-menu-panel {
1847
+ max-height: min(320px, 42vh);
1848
+ overflow: hidden;
1849
+ gap: 8px;
1850
+ min-height: 0;
1851
+ display: flex;
1852
+ flex-direction: column;
1853
+ }
1854
+ .add-menu-panel .add-page-plugins-zone-title {
1855
+ flex-shrink: 0;
1856
+ }
1857
+ .add-menu-panel .add-menu-panel-attached {
1858
+ flex: 0 1 auto;
1859
+ min-height: 0;
1860
+ max-height: 120px;
1861
+ overflow-y: auto;
1862
+ overflow-x: hidden;
1863
+ -webkit-overflow-scrolling: touch;
1864
+ }
1865
+ .add-menu-panel .add-page-plugin-chips {
1866
+ margin-top: 0;
1867
+ }
1868
+ .add-menu-panel .add-page-btn,
1869
+ .add-menu-panel .add-page-manage-link,
1870
+ .add-menu-panel .add-page-hint,
1871
+ .add-menu-panel .add-page-field-error,
1872
+ .add-menu-panel .add-menu-route-params,
1873
+ .add-menu-panel .add-page-suggested-route,
1874
+ .add-menu-panel .add-menu-route-confirm {
1875
+ flex-shrink: 0;
1876
+ }
1877
+ .add-menu-panel .add-menu-popover {
1878
+ flex-shrink: 0;
1879
+ min-height: 180px;
1880
+ max-height: min(240px, 36vh);
1881
+ margin-top: 4px;
1882
+ }
1883
+ .add-menu-panel .add-menu-nav {
1884
+ min-height: 140px;
1885
+ }
1886
+ .add-page-plugins-zone-title {
1887
+ font-size: 11px;
1888
+ font-weight: 600;
1889
+ color: var(--harmony-text-secondary);
1890
+ text-transform: uppercase;
1891
+ letter-spacing: 0.04em;
1892
+ margin-bottom: 4px;
1893
+ }
1894
+ .add-page-plugin-row {
1895
+ display: flex;
1896
+ align-items: center;
1897
+ gap: 8px;
1898
+ padding: 4px 0;
1899
+ font-size: 11px;
1900
+ border-bottom: 1px solid var(--harmony-border);
1901
+ }
1902
+ .add-page-plugin-row:last-child {
1903
+ border-bottom: none;
1904
+ }
1905
+ .add-page-plugin-label {
1906
+ flex: 1;
1907
+ color: var(--harmony-text-secondary);
1908
+ }
1909
+ .add-page-plugin-btn {
1910
+ background: var(--harmony-bg-subtle);
1911
+ color: var(--harmony-text-secondary);
1912
+ border: 1px solid var(--harmony-border);
1913
+ border-radius: var(--harmony-radius-sm);
1914
+ padding: 2px 8px;
1915
+ font-size: 10px;
1916
+ cursor: pointer;
1917
+ }
1918
+ .add-page-plugin-btn:hover {
1919
+ background: var(--harmony-bg-hover);
1920
+ color: var(--harmony-text);
1921
+ }
1922
+ .add-page-plugin-btn:disabled {
1923
+ opacity: 0.45;
1924
+ cursor: not-allowed;
1925
+ }
1926
+ .add-page-plugin-btn-primary {
1927
+ background: var(--harmony-primary);
1928
+ color: #fff;
1929
+ border-color: var(--harmony-primary);
1930
+ }
1931
+ .add-page-setup-ok {
1932
+ color: var(--harmony-success);
1933
+ font-size: 10px;
1934
+ }
1935
+ .add-page-setup-warn {
1936
+ color: var(--harmony-warning);
1937
+ font-size: 10px;
1938
+ }
1939
+ .add-page-setup-error {
1940
+ color: var(--harmony-danger);
1941
+ font-size: 10px;
1942
+ }
1943
+ .add-page-plugin-contract {
1944
+ padding-left: 0;
1945
+ font-size: 11px;
1946
+ color: var(--harmony-text-muted);
1947
+ display: flex;
1948
+ flex-direction: column;
1949
+ gap: 4px;
1950
+ margin-top: 6px;
1951
+ }
1952
+ .add-page-plugin-contract-row {
1953
+ display: flex;
1954
+ align-items: center;
1955
+ gap: 8px;
1956
+ padding: 4px 0;
1957
+ border-bottom: 1px solid var(--harmony-border);
1958
+ }
1959
+ .add-page-plugin-contract-row:last-child {
1960
+ border-bottom: none;
1961
+ }
1962
+ .add-page-plugin-contract-name {
1963
+ flex: 1;
1964
+ color: var(--harmony-text-secondary);
1965
+ font-size: 11px;
1966
+ }
1967
+ .add-page-plugin-contract-added {
1968
+ font-size: 10px;
1969
+ color: var(--harmony-success);
1970
+ }
1971
+ .add-page-plugin-chips {
1972
+ display: flex;
1973
+ flex-wrap: wrap;
1974
+ gap: 6px;
1975
+ margin-top: 4px;
1976
+ }
1977
+ .add-page-plugin-chip {
1978
+ background: var(--harmony-bg-subtle);
1979
+ border: 1px solid var(--harmony-border);
1980
+ border-radius: var(--harmony-radius-sm);
1981
+ padding: 2px 6px;
1982
+ font-size: 10px;
1983
+ color: var(--harmony-text-secondary);
1984
+ display: flex;
1985
+ align-items: center;
1986
+ gap: 4px;
1987
+ }
1988
+ .add-page-plugin-chip-remove {
1989
+ background: none;
1990
+ border: none;
1991
+ color: var(--harmony-text-muted);
1992
+ cursor: pointer;
1993
+ padding: 0 2px;
1994
+ }
1995
+ .add-page-plugins-warn {
1996
+ font-size: 11px;
1997
+ color: var(--harmony-warning);
1998
+ margin-top: 4px;
1999
+ }
2000
+ .add-page-install-live {
2001
+ font-size: 11px;
2002
+ color: var(--harmony-text-muted);
2003
+ }
2004
+ .add-page-local-plugin-form {
2005
+ display: flex;
2006
+ flex-direction: column;
2007
+ gap: 6px;
2008
+ margin-top: 8px;
2009
+ padding-top: 8px;
2010
+ border-top: 1px solid var(--harmony-border);
2011
+ }
2012
+ .add-page-local-plugin-form input {
2013
+ background: var(--harmony-bg-surface);
2014
+ color: var(--harmony-text);
2015
+ border: 1px solid var(--harmony-border);
2016
+ border-radius: var(--harmony-radius-sm);
2017
+ padding: 4px 6px;
2018
+ font-size: 11px;
2019
+ }
2020
+ .add-page-plugin-picker {
2021
+ width: 100%;
2022
+ background: var(--harmony-bg-surface);
2023
+ color: var(--harmony-text);
2024
+ border: 1px solid var(--harmony-border);
2025
+ border-radius: var(--harmony-radius-sm);
2026
+ font-size: 12px;
2027
+ padding: 6px 8px;
2028
+ margin-top: 6px;
2029
+ }
2030
+ .add-page-manage-link {
2031
+ font-size: 11px;
2032
+ color: var(--harmony-primary);
2033
+ cursor: pointer;
2034
+ margin-top: 6px;
2035
+ background: none;
2036
+ border: none;
2037
+ padding: 0;
2038
+ text-align: left;
2039
+ }
2040
+ .annotation-binding {
2041
+ margin-top: 6px;
2042
+ border-top: 1px solid var(--harmony-border);
2043
+ padding-top: 6px;
2044
+ }
2045
+ .annotation-add-menu {
2046
+ margin-top: 6px;
2047
+ border-top: 1px solid var(--harmony-border);
2048
+ padding-top: 6px;
2049
+ }
2050
+ .annotation-add-menu-toggle {
2051
+ background: none;
2052
+ border: none;
2053
+ color: var(--harmony-primary);
2054
+ font-size: 11px;
2055
+ cursor: pointer;
2056
+ padding: 0;
2057
+ text-align: left;
2058
+ }
2059
+ .annotation-add-menu-panel {
2060
+ display: flex;
2061
+ flex-direction: column;
2062
+ gap: 6px;
2063
+ margin-top: 6px;
2064
+ font-size: 11px;
2065
+ color: var(--harmony-text-secondary);
2066
+ }
2067
+ .change-request-add-menu {
2068
+ margin-top: 8px;
2069
+ padding: 10px 12px;
2070
+ border: 1px solid var(--harmony-border);
2071
+ border-radius: var(--harmony-radius-md);
2072
+ background: var(--harmony-bg-subtle);
2073
+ }
2074
+ .add-menu-route-params {
2075
+ display: flex;
2076
+ flex-wrap: wrap;
2077
+ align-items: center;
2078
+ gap: 6px;
2079
+ margin-top: 4px;
2080
+ }
2081
+ .add-menu-popover {
2082
+ border: 1px solid var(--harmony-border);
2083
+ border-radius: var(--harmony-radius-sm);
2084
+ padding: 8px;
2085
+ background: var(--harmony-bg-subtle);
2086
+ margin-top: 6px;
2087
+ display: flex;
2088
+ flex-direction: column;
2089
+ gap: 6px;
2090
+ min-height: 0;
2091
+ max-width: 100%;
2092
+ max-height: min(320px, 50vh);
2093
+ overflow: hidden;
2094
+ }
2095
+ .add-menu-popover-header {
2096
+ display: flex;
2097
+ justify-content: space-between;
2098
+ align-items: center;
2099
+ font-size: 11px;
2100
+ font-weight: 600;
2101
+ color: var(--harmony-text-secondary);
2102
+ border-bottom: 1px solid var(--harmony-border);
2103
+ padding-bottom: 4px;
2104
+ margin-bottom: 4px;
2105
+ flex-shrink: 0;
2106
+ }
2107
+ .add-menu-popover-header button {
2108
+ background: none;
2109
+ border: none;
2110
+ color: var(--harmony-text-muted);
2111
+ font-size: 14px;
2112
+ cursor: pointer;
2113
+ padding: 0 4px;
2114
+ }
2115
+ .add-menu-popover-header button:hover {
2116
+ color: var(--harmony-text);
2117
+ }
2118
+ .add-menu-nav {
2119
+ display: flex;
2120
+ flex-direction: column;
2121
+ gap: 4px;
2122
+ flex: 1;
2123
+ min-height: 0;
2124
+ overflow-y: auto;
2125
+ overflow-x: hidden;
2126
+ padding-right: 2px;
2127
+ -webkit-overflow-scrolling: touch;
2128
+ }
2129
+ .add-menu-nav-row {
2130
+ display: contents;
2131
+ }
2132
+ .add-menu-nav-btn {
2133
+ background: var(--harmony-bg-surface);
2134
+ color: var(--harmony-text-secondary);
2135
+ border: 1px solid var(--harmony-border);
2136
+ border-radius: var(--harmony-radius-sm);
2137
+ padding: 4px 8px;
2138
+ font-size: 11px;
2139
+ cursor: pointer;
2140
+ text-align: left;
2141
+ }
2142
+ .add-menu-nav-btn:hover {
2143
+ background: var(--harmony-bg-hover);
2144
+ color: var(--harmony-text);
2145
+ border-color: var(--harmony-primary);
2146
+ }
2147
+ .add-menu-item-btn {
2148
+ background: var(--harmony-primary);
2149
+ color: #fff;
2150
+ border: none;
2151
+ border-radius: var(--harmony-radius-sm);
2152
+ padding: 4px 8px;
2153
+ font-size: 11px;
2154
+ cursor: pointer;
2155
+ text-align: left;
2156
+ }
2157
+ .add-menu-item-btn:hover {
2158
+ background: var(--harmony-primary-hover);
2159
+ }
2160
+ .annotation-binding-preview {
2161
+ font-size: 10px;
2162
+ color: var(--harmony-success);
2163
+ margin: 0;
2164
+ }
2165
+ .annotation-binding-panel label {
2166
+ display: flex;
2167
+ flex-direction: column;
2168
+ gap: 2px;
2169
+ }
2170
+ .annotation-binding-panel select {
2171
+ background: var(--harmony-bg-surface);
2172
+ color: var(--harmony-text);
2173
+ border: 1px solid var(--harmony-border);
2174
+ border-radius: 4px;
2175
+ font-size: 11px;
2176
+ }
2177
+ .annotation-binding-scope-row {
2178
+ display: flex;
2179
+ gap: 10px;
2180
+ flex-wrap: wrap;
2181
+ }
2182
+ .annotation-binding-install {
2183
+ background: var(--harmony-primary);
2184
+ color: #fff;
2185
+ border: none;
2186
+ border-radius: var(--harmony-radius-sm);
2187
+ padding: 4px 8px;
2188
+ font-size: 10px;
2189
+ cursor: pointer;
2190
+ align-self: flex-start;
2191
+ }
2192
+ .add-page-footer {
2193
+ display: flex;
2194
+ gap: 8px;
2195
+ padding: 12px 16px;
2196
+ border-top: 1px solid var(--harmony-border);
2197
+ flex-shrink: 0;
2198
+ background: var(--harmony-bg-subtle);
2199
+ }
2200
+ .add-page-btn {
2201
+ flex: 1;
2202
+ padding: 10px;
2203
+ border-radius: var(--harmony-radius-pill);
2204
+ font-size: 13px;
2205
+ font-weight: 600;
2206
+ cursor: pointer;
2207
+ border: 1px solid var(--harmony-border);
2208
+ }
2209
+ .add-page-btn-cancel {
2210
+ background: var(--harmony-bg-surface);
2211
+ color: var(--harmony-text-secondary);
2212
+ }
2213
+ .add-page-btn-primary {
2214
+ background: var(--harmony-primary);
2215
+ color: #fff;
2216
+ border-color: var(--harmony-primary);
2217
+ }
2218
+ .add-page-btn-primary:disabled {
2219
+ opacity: 0.45;
2220
+ cursor: not-allowed;
2221
+ }
2222
+ .add-page-hidden-file {
2223
+ display: none;
2224
+ }
2225
+
2226
+ /* Legacy class aliases (kept for compatibility) */
2227
+ .main-panel {
2228
+ flex: 1;
2229
+ display: flex;
2230
+ flex-direction: column;
2231
+ min-height: 0;
2232
+ overflow: hidden;
2233
+ }
2234
+ .main-top-bar {
2235
+ display: none;
2236
+ }
2237
+ .preview-stack {
2238
+ display: contents;
2239
+ }
2240
+ .preview-url-row {
2241
+ display: none;
2242
+ }
2243
+ .reset-btn {
2244
+ background: var(--harmony-bg-surface);
2245
+ border: 1px solid var(--harmony-border);
2246
+ color: var(--harmony-text-secondary);
2247
+ cursor: pointer;
2248
+ font-size: 14px;
2249
+ padding: 8px 12px;
2250
+ border-radius: var(--harmony-radius-pill);
2251
+ line-height: 1;
2252
+ }
2253
+ .reset-btn:hover {
2254
+ color: var(--harmony-text);
2255
+ border-color: var(--harmony-border-strong);
2256
+ }
2257
+ .route-picker-stack {
2258
+ display: contents;
2259
+ }