@jay-framework/aiditor 0.19.7 → 0.21.0

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.
@@ -478,14 +478,17 @@ body {
478
478
  }
479
479
  .harmony-float-rail {
480
480
  position: absolute;
481
- inset: 0;
481
+ top: 16px;
482
+ left: 16px;
482
483
  z-index: 30;
484
+ display: flex;
485
+ flex-direction: column;
486
+ align-items: flex-start;
487
+ gap: 8px;
483
488
  pointer-events: none;
484
489
  }
485
490
  .harmony-add-btn {
486
- position: absolute;
487
- top: 16px;
488
- left: 16px;
491
+ position: static;
489
492
  display: inline-flex;
490
493
  align-items: center;
491
494
  justify-content: center;
@@ -523,6 +526,63 @@ body {
523
526
  inset 0 1px 2px rgba(22, 45, 61, 0.06),
524
527
  0 1px 2px rgba(22, 45, 61, 0.04);
525
528
  }
529
+ .harmony-stage-action-btn {
530
+ width: 40px;
531
+ min-width: 40px;
532
+ height: 40px;
533
+ padding: 0;
534
+ gap: 0;
535
+ overflow: hidden;
536
+ transition:
537
+ width 0.22s ease,
538
+ min-width 0.22s ease,
539
+ padding 0.22s ease,
540
+ gap 0.22s ease,
541
+ background 0.15s ease,
542
+ border-color 0.15s ease,
543
+ box-shadow 0.15s ease;
544
+ }
545
+ .harmony-stage-action-icon {
546
+ display: inline-flex;
547
+ align-items: center;
548
+ justify-content: center;
549
+ flex-shrink: 0;
550
+ width: 40px;
551
+ height: 40px;
552
+ color: var(--harmony-text);
553
+ }
554
+ .harmony-stage-action-icon svg {
555
+ display: block;
556
+ width: 24px;
557
+ height: 24px;
558
+ }
559
+ .harmony-stage-action-label {
560
+ display: inline-block;
561
+ max-width: 0;
562
+ opacity: 0;
563
+ overflow: hidden;
564
+ white-space: nowrap;
565
+ margin-left: 0;
566
+ transition:
567
+ max-width 0.22s ease,
568
+ opacity 0.18s ease,
569
+ margin-left 0.22s ease;
570
+ }
571
+ .harmony-stage-action-btn:hover,
572
+ .harmony-stage-action-btn:focus-visible,
573
+ .harmony-stage-action-btn.harmony-add-btn-open {
574
+ width: auto;
575
+ min-width: 40px;
576
+ padding-right: 14px;
577
+ gap: 2px;
578
+ }
579
+ .harmony-stage-action-btn:hover .harmony-stage-action-label,
580
+ .harmony-stage-action-btn:focus-visible .harmony-stage-action-label,
581
+ .harmony-stage-action-btn.harmony-add-btn-open .harmony-stage-action-label {
582
+ max-width: 12rem;
583
+ opacity: 1;
584
+ margin-left: -4px;
585
+ }
526
586
  .harmony-stage-icon-btn {
527
587
  position: absolute;
528
588
  left: 20px;
@@ -805,14 +865,54 @@ body {
805
865
  min-width: 200px;
806
866
  }
807
867
  .url-bar {
868
+ display: flex;
869
+ align-items: center;
870
+ gap: 4px;
808
871
  font-size: 12px;
809
872
  font-family: var(--harmony-mono);
810
873
  color: var(--harmony-text-secondary);
811
874
  background: var(--harmony-bg-surface);
812
875
  border: 1px solid var(--harmony-border);
813
876
  border-radius: var(--harmony-radius-sm);
814
- padding: 7px 12px;
815
- word-break: break-all;
877
+ padding: 4px 4px 4px 12px;
878
+ }
879
+ .url-bar-text {
880
+ flex: 1;
881
+ min-width: 0;
882
+ overflow: hidden;
883
+ text-overflow: ellipsis;
884
+ white-space: nowrap;
885
+ }
886
+ .url-bar-open-tab {
887
+ flex-shrink: 0;
888
+ display: inline-flex;
889
+ align-items: center;
890
+ justify-content: center;
891
+ width: 28px;
892
+ height: 28px;
893
+ padding: 0;
894
+ border: none;
895
+ border-radius: var(--harmony-radius-sm);
896
+ background: transparent;
897
+ color: var(--harmony-text-muted);
898
+ cursor: pointer;
899
+ transition: color 0.12s ease, background 0.12s ease;
900
+ }
901
+ .url-bar-open-tab:hover:not(:disabled) {
902
+ color: var(--harmony-text);
903
+ background: var(--harmony-bg-hover);
904
+ }
905
+ .url-bar-open-tab:disabled {
906
+ opacity: 0.4;
907
+ cursor: default;
908
+ }
909
+ .url-bar-open-tab:focus-visible {
910
+ outline: 2px solid var(--harmony-primary);
911
+ outline-offset: 1px;
912
+ }
913
+ .url-bar-open-tab .harmony-routes-panel-open-tab-icon {
914
+ width: 24px;
915
+ height: 24px;
816
916
  }
817
917
 
818
918
  .preview-loading {
@@ -1119,6 +1219,19 @@ body {
1119
1219
  .visual-attachment-remove-file:hover {
1120
1220
  color: var(--harmony-danger);
1121
1221
  }
1222
+ .visual-attachment-chip-actions {
1223
+ display: flex;
1224
+ flex-direction: column;
1225
+ align-items: center;
1226
+ gap: 2px;
1227
+ flex-shrink: 0;
1228
+ }
1229
+ .visual-attachment-number {
1230
+ font-size: 10px;
1231
+ font-weight: 600;
1232
+ color: var(--harmony-primary);
1233
+ line-height: 1;
1234
+ }
1122
1235
  .file-input-hidden {
1123
1236
  display: none;
1124
1237
  }
@@ -1491,9 +1604,41 @@ body {
1491
1604
  flex-direction: column;
1492
1605
  gap: 10px;
1493
1606
  padding: 14px 16px;
1494
- overflow: auto;
1607
+ overflow: hidden;
1495
1608
  box-shadow: var(--harmony-shadow-lg);
1496
1609
  }
1610
+ .video-review-body {
1611
+ display: flex;
1612
+ flex-direction: column;
1613
+ gap: 10px;
1614
+ min-height: 0;
1615
+ flex: 1 1 auto;
1616
+ }
1617
+ .video-review-tools {
1618
+ display: inline-flex;
1619
+ flex-wrap: nowrap;
1620
+ gap: 2px;
1621
+ align-items: center;
1622
+ width: fit-content;
1623
+ }
1624
+ .video-review-tools .visual-tool-btn {
1625
+ padding: 7px 8px;
1626
+ min-width: 28px;
1627
+ }
1628
+ .video-review-capture-root {
1629
+ flex: 0 1 auto;
1630
+ min-height: 0;
1631
+ max-height: min(56vh, 480px);
1632
+ overflow: hidden;
1633
+ }
1634
+ .video-review-capture-root .preview-frame {
1635
+ width: 100%;
1636
+ height: auto;
1637
+ min-height: 0;
1638
+ max-height: min(56vh, 480px);
1639
+ object-fit: contain;
1640
+ display: block;
1641
+ }
1497
1642
  .snapshot-panel {
1498
1643
  width: min(1200px, 96vw);
1499
1644
  overflow: hidden;
@@ -1517,7 +1662,6 @@ body {
1517
1662
  font-size: 12px;
1518
1663
  color: var(--harmony-text-muted);
1519
1664
  }
1520
- .video-review-tools,
1521
1665
  .snapshot-tools {
1522
1666
  display: flex;
1523
1667
  flex-wrap: wrap;
@@ -1615,6 +1759,56 @@ body {
1615
1759
  opacity: 0.45;
1616
1760
  cursor: not-allowed;
1617
1761
  }
1762
+ .harmony-modal-close {
1763
+ background: none;
1764
+ border: none;
1765
+ color: var(--harmony-text-muted);
1766
+ cursor: pointer;
1767
+ padding: 4px;
1768
+ line-height: 0;
1769
+ display: inline-flex;
1770
+ align-items: center;
1771
+ justify-content: center;
1772
+ border-radius: var(--harmony-radius-sm);
1773
+ flex-shrink: 0;
1774
+ }
1775
+ .harmony-modal-close:hover {
1776
+ color: var(--harmony-text);
1777
+ background: var(--harmony-bg-hover);
1778
+ }
1779
+ .video-review-close-confirm-overlay {
1780
+ position: fixed;
1781
+ inset: 0;
1782
+ z-index: 380;
1783
+ background: rgba(22, 45, 61, 0.45);
1784
+ display: flex;
1785
+ align-items: center;
1786
+ justify-content: center;
1787
+ padding: 24px;
1788
+ box-sizing: border-box;
1789
+ }
1790
+ .video-review-close-confirm-dialog {
1791
+ background: var(--harmony-bg-surface);
1792
+ border: 1px solid var(--harmony-border);
1793
+ border-radius: var(--harmony-radius-lg);
1794
+ width: min(400px, 100%);
1795
+ padding: 20px 24px;
1796
+ box-shadow: var(--harmony-shadow-lg);
1797
+ display: flex;
1798
+ flex-direction: column;
1799
+ gap: 16px;
1800
+ }
1801
+ .video-review-close-confirm-msg {
1802
+ margin: 0;
1803
+ font-size: 14px;
1804
+ line-height: 1.45;
1805
+ color: var(--harmony-text);
1806
+ }
1807
+ .video-review-close-confirm-actions {
1808
+ display: flex;
1809
+ justify-content: flex-end;
1810
+ gap: 8px;
1811
+ }
1618
1812
  .snapshot-close {
1619
1813
  background: none;
1620
1814
  border: none;
@@ -1772,36 +1966,120 @@ body {
1772
1966
  width: min(720px, 100%);
1773
1967
  max-height: min(85vh, 720px);
1774
1968
  }
1775
- .add-menu-picker-header {
1969
+ .add-menu-picker-overlay--full {
1970
+ padding: 16px;
1971
+ align-items: stretch;
1972
+ justify-content: stretch;
1973
+ background: rgba(255, 255, 255, 0.72);
1974
+ backdrop-filter: blur(14px);
1975
+ -webkit-backdrop-filter: blur(14px);
1976
+ }
1977
+ .add-menu-picker-dismiss-confirm-overlay {
1978
+ position: fixed;
1979
+ inset: 0;
1980
+ z-index: 380;
1981
+ background: rgba(22, 45, 61, 0.45);
1776
1982
  display: flex;
1777
1983
  align-items: center;
1984
+ justify-content: center;
1985
+ padding: 24px;
1986
+ box-sizing: border-box;
1987
+ }
1988
+ .add-menu-picker-dismiss-confirm-dialog {
1989
+ background: var(--harmony-bg-surface);
1990
+ border: 1px solid var(--harmony-border);
1991
+ border-radius: var(--harmony-radius-lg);
1992
+ width: min(400px, 100%);
1993
+ padding: 20px 24px;
1994
+ box-shadow: var(--harmony-shadow-lg);
1995
+ display: flex;
1996
+ flex-direction: column;
1997
+ gap: 16px;
1998
+ }
1999
+ .add-menu-picker-dismiss-confirm-msg {
2000
+ margin: 0;
2001
+ font-size: 14px;
2002
+ line-height: 1.45;
2003
+ color: var(--harmony-text);
2004
+ }
2005
+ .add-menu-picker-dismiss-confirm-actions {
2006
+ display: flex;
2007
+ justify-content: flex-end;
1778
2008
  gap: 8px;
1779
- padding: 14px 16px;
2009
+ }
2010
+ .add-menu-picker-dialog--full {
2011
+ width: 100%;
2012
+ height: 100%;
2013
+ max-height: none;
2014
+ box-shadow:
2015
+ 0 24px 80px rgba(22, 45, 61, 0.16),
2016
+ 0 8px 24px rgba(22, 45, 61, 0.08);
2017
+ }
2018
+ .add-menu-picker-dialog--browse.add-menu-picker-dialog--full {
2019
+ width: 100%;
2020
+ height: 100%;
2021
+ max-height: none;
2022
+ }
2023
+ .add-menu-picker-header {
2024
+ display: flex;
2025
+ align-items: center;
2026
+ gap: 12px;
2027
+ padding: 20px 28px;
1780
2028
  border-bottom: 1px solid var(--harmony-border);
1781
- background: var(--harmony-bg-subtle);
2029
+ flex-shrink: 0;
2030
+ background: var(--harmony-bg-surface);
1782
2031
  }
1783
2032
  .add-menu-picker-title {
1784
2033
  flex: 1;
1785
- font-size: 14px;
1786
- font-weight: 600;
2034
+ font-size: 20px;
2035
+ font-weight: 700;
1787
2036
  color: var(--harmony-text);
2037
+ letter-spacing: -0.02em;
1788
2038
  }
1789
- .add-menu-picker-back,
2039
+ .add-menu-picker-header-back,
1790
2040
  .add-menu-picker-close {
1791
2041
  background: none;
1792
2042
  border: none;
1793
2043
  color: var(--harmony-text-muted);
1794
- font-size: 13px;
1795
2044
  cursor: pointer;
1796
2045
  line-height: 1;
1797
- padding: 4px 6px;
2046
+ padding: 4px;
2047
+ border-radius: var(--harmony-radius-sm);
2048
+ }
2049
+ .add-menu-picker-header-back {
2050
+ display: inline-flex;
2051
+ align-items: center;
2052
+ justify-content: center;
2053
+ flex-shrink: 0;
2054
+ line-height: 0;
2055
+ overflow: visible;
2056
+ }
2057
+ .add-menu-picker-header-back-icon {
2058
+ display: block;
2059
+ flex-shrink: 0;
2060
+ width: 30px;
2061
+ height: 30px;
2062
+ color: black;
1798
2063
  }
1799
2064
  .add-menu-picker-close {
1800
- font-size: 20px;
2065
+ font-size: 22px;
1801
2066
  }
1802
- .add-menu-picker-back:hover,
2067
+ .add-menu-picker-header-back:hover,
1803
2068
  .add-menu-picker-close:hover {
1804
2069
  color: var(--harmony-text);
2070
+ background: var(--harmony-bg-hover);
2071
+ }
2072
+ .add-menu-picker-back {
2073
+ background: none;
2074
+ border: none;
2075
+ color: var(--harmony-text-muted);
2076
+ font-size: 13px;
2077
+ cursor: pointer;
2078
+ line-height: 1;
2079
+ padding: 4px 6px;
2080
+ }
2081
+ .add-menu-picker-back:hover {
2082
+ color: var(--harmony-text);
1805
2083
  }
1806
2084
  .add-menu-picker-body {
1807
2085
  padding: 12px 16px 16px;
@@ -2025,7 +2303,7 @@ body {
2025
2303
  }
2026
2304
  .add-menu-picker-search-icon {
2027
2305
  color: var(--harmony-text-muted);
2028
- font-size: 14px;
2306
+ font-size: 30px;
2029
2307
  line-height: 1;
2030
2308
  flex-shrink: 0;
2031
2309
  }
@@ -2039,6 +2317,10 @@ body {
2039
2317
  font-size: 13px;
2040
2318
  outline: none;
2041
2319
  }
2320
+ .add-menu-picker-search-input::-webkit-search-cancel-button {
2321
+ -webkit-appearance: none;
2322
+ display: none;
2323
+ }
2042
2324
  .add-menu-picker-search-input::placeholder {
2043
2325
  color: var(--harmony-text-muted);
2044
2326
  }
@@ -2047,10 +2329,10 @@ body {
2047
2329
  background: none;
2048
2330
  border: none;
2049
2331
  color: var(--harmony-text-muted);
2050
- font-size: 16px;
2332
+ font-size: 22px;
2051
2333
  line-height: 1;
2052
2334
  cursor: pointer;
2053
- padding: 0 2px;
2335
+ padding: 0 4px;
2054
2336
  }
2055
2337
  .add-menu-picker-search-clear:hover {
2056
2338
  color: var(--harmony-text);
@@ -2068,12 +2350,13 @@ body {
2068
2350
  }
2069
2351
  .add-menu-picker-browse-content {
2070
2352
  display: grid;
2071
- grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
2072
- gap: 10px;
2353
+ grid-template-columns: repeat(auto-fill, minmax(168px, 1fr));
2354
+ gap: 12px;
2073
2355
  overflow-y: auto;
2074
2356
  flex: 1;
2075
2357
  min-height: 0;
2076
2358
  align-content: start;
2359
+ grid-auto-rows: minmax(152px, auto);
2077
2360
  }
2078
2361
  .add-menu-picker-browse-row {
2079
2362
  display: contents;
@@ -2092,34 +2375,87 @@ body {
2092
2375
  }
2093
2376
  .add-menu-picker-component-card {
2094
2377
  min-height: 72px;
2095
- }
2096
- .add-menu-picker-component-title {
2097
- font-weight: 500;
2098
2378
  overflow: hidden;
2099
- text-overflow: ellipsis;
2100
- white-space: nowrap;
2101
- max-width: 100%;
2102
- }
2103
- .add-menu-picker-component-card--browse-only {
2104
- opacity: 0.6;
2105
- cursor: default;
2379
+ box-sizing: border-box;
2106
2380
  }
2107
- .project-settings-dialog {
2108
- background: var(--harmony-bg-surface);
2109
- border: 1px solid var(--harmony-border);
2110
- border-radius: var(--harmony-radius-lg);
2111
- width: min(520px, 100%);
2112
- max-height: min(80vh, 640px);
2381
+ .add-menu-picker-component-card--preview,
2382
+ .add-menu-picker-component-card--info {
2113
2383
  display: flex;
2114
2384
  flex-direction: column;
2115
- overflow: hidden;
2116
- box-shadow: var(--harmony-shadow-lg);
2385
+ align-items: stretch;
2386
+ gap: 6px;
2387
+ padding: 8px;
2388
+ min-height: 0;
2389
+ height: 100%;
2390
+ text-align: left;
2117
2391
  }
2118
- .project-settings-header {
2119
- display: flex;
2120
- align-items: center;
2121
- justify-content: space-between;
2122
- padding: 14px 16px;
2392
+ .add-menu-picker-component-card--preview {
2393
+ min-height: 152px;
2394
+ }
2395
+ .add-menu-picker-component-card--info {
2396
+ min-height: 72px;
2397
+ justify-content: flex-start;
2398
+ padding: 10px 12px;
2399
+ gap: 0;
2400
+ }
2401
+ .add-menu-picker-component-preview {
2402
+ display: flex;
2403
+ align-items: center;
2404
+ justify-content: center;
2405
+ width: 100%;
2406
+ height: 112px;
2407
+ flex: 0 0 112px;
2408
+ border-radius: 6px;
2409
+ overflow: hidden;
2410
+ background: var(--harmony-bg-subtle);
2411
+ border: 1px solid var(--harmony-border);
2412
+ }
2413
+ .add-menu-picker-component-thumb {
2414
+ display: block;
2415
+ width: 100%;
2416
+ height: 100%;
2417
+ object-fit: contain;
2418
+ object-position: center;
2419
+ padding: 6px;
2420
+ box-sizing: border-box;
2421
+ }
2422
+ .add-menu-picker-component-info-icon {
2423
+ display: none;
2424
+ }
2425
+ .add-menu-picker-component-card--preview .add-menu-picker-component-title,
2426
+ .add-menu-picker-component-card--info .add-menu-picker-component-title {
2427
+ width: 100%;
2428
+ flex-shrink: 0;
2429
+ white-space: nowrap;
2430
+ overflow: hidden;
2431
+ text-overflow: ellipsis;
2432
+ line-height: 1.35;
2433
+ font-size: 12px;
2434
+ }
2435
+ .add-menu-picker-component-title {
2436
+ font-weight: 500;
2437
+ max-width: 100%;
2438
+ }
2439
+ .add-menu-picker-component-card--browse-only {
2440
+ opacity: 0.6;
2441
+ cursor: default;
2442
+ }
2443
+ .project-settings-dialog {
2444
+ background: var(--harmony-bg-surface);
2445
+ border: 1px solid var(--harmony-border);
2446
+ border-radius: var(--harmony-radius-lg);
2447
+ width: min(520px, 100%);
2448
+ max-height: min(80vh, 640px);
2449
+ display: flex;
2450
+ flex-direction: column;
2451
+ overflow: hidden;
2452
+ box-shadow: var(--harmony-shadow-lg);
2453
+ }
2454
+ .project-settings-header {
2455
+ display: flex;
2456
+ align-items: center;
2457
+ justify-content: space-between;
2458
+ padding: 14px 16px;
2123
2459
  border-bottom: 1px solid var(--harmony-border);
2124
2460
  background: var(--harmony-bg-subtle);
2125
2461
  }
@@ -2205,34 +2541,31 @@ body {
2205
2541
  letter-spacing: 0.4px;
2206
2542
  margin-bottom: 6px;
2207
2543
  }
2208
- .add-page-section-header-row {
2544
+ .add-page-tab-editor-actions {
2545
+ display: flex;
2546
+ justify-content: flex-end;
2547
+ flex-shrink: 0;
2548
+ margin-top: 8px;
2549
+ }
2550
+ .add-page-btn--compact {
2551
+ flex: 0 0 auto;
2552
+ padding: 6px 14px;
2553
+ font-size: 12px;
2554
+ min-width: 0;
2555
+ }
2556
+ .add-page-references-row {
2209
2557
  display: flex;
2210
2558
  align-items: center;
2211
- justify-content: space-between;
2212
2559
  gap: 8px;
2213
- margin-bottom: 6px;
2214
2560
  }
2215
- .add-page-section-header-row .add-page-section-label {
2216
- margin-bottom: 0;
2561
+ .add-page-references-row .add-page-dropzone {
2217
2562
  flex: 1;
2563
+ min-width: 0;
2564
+ margin: 0;
2218
2565
  }
2219
- .add-page-fill-from-image-btn {
2220
- background: var(--harmony-bg-subtle);
2221
- color: var(--harmony-primary);
2222
- border: 1px solid var(--harmony-border);
2223
- border-radius: var(--harmony-radius-sm);
2224
- padding: 4px 10px;
2225
- font-size: 11px;
2226
- font-weight: 600;
2227
- cursor: pointer;
2566
+ .add-page-references-row .add-page-btn--compact {
2228
2567
  flex-shrink: 0;
2229
- }
2230
- .add-page-fill-from-image-btn:hover {
2231
- background: var(--harmony-primary-soft);
2232
- }
2233
- .add-page-fill-from-image-btn:disabled {
2234
- opacity: 0.45;
2235
- cursor: not-allowed;
2568
+ white-space: nowrap;
2236
2569
  }
2237
2570
  .add-page-suggested-route {
2238
2571
  display: flex;
@@ -2264,12 +2597,28 @@ body {
2264
2597
  padding: 24px;
2265
2598
  box-sizing: border-box;
2266
2599
  }
2600
+ .add-page-brief-fill-popover-stack {
2601
+ display: flex;
2602
+ flex-direction: column;
2603
+ align-items: center;
2604
+ gap: 10px;
2605
+ width: min(420px, 100%);
2606
+ max-height: 90%;
2607
+ }
2608
+ .add-page-brief-fill-stop-confirm {
2609
+ align-self: center;
2610
+ max-width: 100%;
2611
+ white-space: normal;
2612
+ text-align: center;
2613
+ flex-wrap: wrap;
2614
+ justify-content: center;
2615
+ }
2267
2616
  .add-page-brief-fill-panel {
2268
2617
  background: var(--harmony-bg-surface);
2269
2618
  border: 1px solid var(--harmony-border);
2270
2619
  border-radius: var(--harmony-radius-md);
2271
- width: min(420px, 100%);
2272
- max-height: 90%;
2620
+ width: 100%;
2621
+ max-height: 100%;
2273
2622
  overflow: auto;
2274
2623
  padding: 14px 16px;
2275
2624
  display: flex;
@@ -2388,6 +2737,13 @@ body {
2388
2737
  outline: none;
2389
2738
  box-shadow: 0 0 0 3px var(--harmony-primary-soft);
2390
2739
  }
2740
+ .add-page-route-input--error {
2741
+ border-color: var(--harmony-danger);
2742
+ }
2743
+ .add-page-route-input--error:focus {
2744
+ border-color: var(--harmony-danger);
2745
+ box-shadow: 0 0 0 3px var(--harmony-danger-soft);
2746
+ }
2391
2747
  .add-page-route-badge {
2392
2748
  font-size: 10px;
2393
2749
  color: var(--harmony-primary);
@@ -2898,6 +3254,10 @@ body {
2898
3254
  opacity: 0.45;
2899
3255
  cursor: not-allowed;
2900
3256
  }
3257
+ .add-page-btn:disabled {
3258
+ opacity: 0.45;
3259
+ cursor: not-allowed;
3260
+ }
2901
3261
  .add-page-hidden-file {
2902
3262
  display: none;
2903
3263
  }
@@ -2933,6 +3293,714 @@ body {
2933
3293
  color: var(--harmony-text);
2934
3294
  border-color: var(--harmony-border-strong);
2935
3295
  }
2936
- .route-picker-stack {
2937
- display: contents;
3296
+ .stage-place-toolbar {
3297
+ display: flex;
3298
+ align-items: center;
3299
+ gap: 10px;
3300
+ margin-bottom: 8px;
3301
+ padding: 6px 12px;
3302
+ background: var(--harmony-bg-surface);
3303
+ border: 1px solid var(--harmony-primary);
3304
+ border-radius: var(--harmony-radius-pill);
3305
+ font-size: 12px;
3306
+ color: var(--harmony-text);
3307
+ }
3308
+ .stage-place-toolbar-cancel {
3309
+ background: transparent;
3310
+ border: 1px solid var(--harmony-border);
3311
+ border-radius: 4px;
3312
+ padding: 2px 8px;
3313
+ font-size: 11px;
3314
+ cursor: pointer;
3315
+ }
3316
+
3317
+ /* ── Page info panel (DL #26) ── */
3318
+ .page-info-panel {
3319
+ position: fixed;
3320
+ z-index: 100;
3321
+ width: min(480px, calc(100vw - 48px));
3322
+ height: min(640px, calc(100vh - 100px));
3323
+ max-height: min(640px, calc(100vh - 100px));
3324
+ display: flex;
3325
+ flex-direction: column;
3326
+ background: var(--harmony-bg-surface);
3327
+ border: 1px solid var(--harmony-border);
3328
+ border-radius: var(--harmony-radius-lg);
3329
+ box-shadow: var(--harmony-shadow-lg);
3330
+ pointer-events: auto;
3331
+ overflow: hidden;
3332
+ font-family: var(--harmony-font);
3333
+ }
3334
+ .page-info-panel-header {
3335
+ display: flex;
3336
+ align-items: flex-start;
3337
+ justify-content: space-between;
3338
+ gap: 12px;
3339
+ padding: 14px 16px 12px;
3340
+ border-bottom: 1px solid var(--harmony-border);
3341
+ flex-shrink: 0;
3342
+ cursor: grab;
3343
+ user-select: none;
3344
+ background: var(--harmony-bg-surface);
3345
+ }
3346
+ .page-info-panel-header:active {
3347
+ cursor: grabbing;
3348
+ }
3349
+ .page-info-panel-header-text {
3350
+ display: flex;
3351
+ flex-direction: column;
3352
+ gap: 4px;
3353
+ min-width: 0;
3354
+ }
3355
+ .page-info-panel-title {
3356
+ font-size: 18px;
3357
+ font-weight: 700;
3358
+ color: var(--harmony-text);
3359
+ letter-spacing: -0.02em;
3360
+ line-height: 1.2;
3361
+ }
3362
+ .page-info-panel-subtitle {
3363
+ font-size: 12px;
3364
+ line-height: 1.35;
3365
+ color: var(--harmony-text-secondary);
3366
+ }
3367
+ .page-info-panel-body {
3368
+ flex: 1;
3369
+ min-height: 0;
3370
+ overflow: auto;
3371
+ padding: 14px 16px 16px;
3372
+ display: flex;
3373
+ flex-direction: column;
3374
+ gap: 14px;
3375
+ }
3376
+ .page-info-section {
3377
+ display: flex;
3378
+ flex-direction: column;
3379
+ gap: 8px;
3380
+ }
3381
+ .page-info-route-card {
3382
+ padding: 12px;
3383
+ border-radius: var(--harmony-radius-md);
3384
+ background: var(--harmony-bg-subtle);
3385
+ border: 1px solid var(--harmony-border);
3386
+ }
3387
+ .page-info-route-highlight {
3388
+ outline: 2px solid var(--harmony-primary);
3389
+ outline-offset: 2px;
3390
+ }
3391
+ .page-info-route-header {
3392
+ display: flex;
3393
+ align-items: center;
3394
+ justify-content: space-between;
3395
+ gap: 8px;
3396
+ }
3397
+ .page-info-route-actions {
3398
+ display: inline-flex;
3399
+ align-items: center;
3400
+ gap: 4px;
3401
+ flex-shrink: 0;
3402
+ }
3403
+ .page-info-route-icon-btn {
3404
+ display: inline-flex;
3405
+ align-items: center;
3406
+ justify-content: center;
3407
+ width: 18px;
3408
+ height: 28px;
3409
+ padding: 0;
3410
+ border: none;
3411
+ border-radius: var(--harmony-radius-sm);
3412
+ background: transparent;
3413
+ color: var(--harmony-text-muted);
3414
+ cursor: pointer;
3415
+ flex-shrink: 0;
3416
+ overflow: visible;
3417
+ }
3418
+ .page-info-route-icon-btn:hover {
3419
+ color: var(--harmony-text);
3420
+ background: var(--harmony-bg-hover);
3421
+ }
3422
+ .page-info-route-icon {
3423
+ display: block;
3424
+ width: 22px;
3425
+ height: 22px;
3426
+ overflow: visible;
3427
+ }
3428
+ .page-info-route-field {
3429
+ display: flex;
3430
+ align-items: stretch;
3431
+ gap: 8px;
3432
+ }
3433
+ .page-info-route-field--error .page-info-route-value,
3434
+ .page-info-route-field--error .page-info-route-input {
3435
+ border-color: var(--harmony-danger);
3436
+ box-shadow: 0 0 0 1px rgba(220, 38, 38, 0.15);
3437
+ }
3438
+ .page-info-route-problem {
3439
+ display: inline-flex;
3440
+ align-items: center;
3441
+ justify-content: center;
3442
+ flex-shrink: 0;
3443
+ align-self: center;
3444
+ width: 28px;
3445
+ height: 28px;
3446
+ color: var(--harmony-danger);
3447
+ cursor: help;
3448
+ }
3449
+ .page-info-route-problem-icon {
3450
+ display: block;
3451
+ width: 20px;
3452
+ height: 20px;
3453
+ }
3454
+ .page-info-route-missing-params {
3455
+ display: flex;
3456
+ flex-wrap: wrap;
3457
+ gap: 6px;
3458
+ margin-top: 8px;
3459
+ }
3460
+ .page-info-param-chip--add {
3461
+ cursor: pointer;
3462
+ border: 1px dashed var(--harmony-primary);
3463
+ background: var(--harmony-bg-surface);
3464
+ }
3465
+ .page-info-param-chip--add:hover {
3466
+ background: var(--harmony-primary-soft);
3467
+ }
3468
+ .page-info-route-change-confirm-overlay {
3469
+ position: fixed;
3470
+ inset: 0;
3471
+ z-index: 200;
3472
+ display: flex;
3473
+ align-items: center;
3474
+ justify-content: center;
3475
+ padding: 24px;
3476
+ background: rgba(15, 23, 42, 0.45);
3477
+ pointer-events: auto;
3478
+ }
3479
+ .page-info-route-change-confirm-dialog {
3480
+ width: min(480px, 100%);
3481
+ padding: 20px;
3482
+ border-radius: var(--harmony-radius-lg);
3483
+ background: var(--harmony-bg-surface);
3484
+ border: 1px solid var(--harmony-border);
3485
+ box-shadow: var(--harmony-shadow-lg);
3486
+ }
3487
+ .page-info-route-change-confirm-title {
3488
+ margin: 0 0 8px;
3489
+ font-size: 18px;
3490
+ font-weight: 700;
3491
+ color: var(--harmony-text);
3492
+ }
3493
+ .page-info-route-change-confirm-body {
3494
+ margin: 0 0 16px;
3495
+ font-size: 13px;
3496
+ line-height: 1.5;
3497
+ color: var(--harmony-text-secondary);
3498
+ }
3499
+ .page-info-route-change-confirm-routes {
3500
+ margin: 0 0 16px;
3501
+ padding: 10px 12px;
3502
+ border-radius: var(--harmony-radius-sm);
3503
+ background: var(--harmony-bg-subtle);
3504
+ font-family: var(--harmony-mono);
3505
+ font-size: 12px;
3506
+ line-height: 1.5;
3507
+ color: var(--harmony-text);
3508
+ word-break: break-all;
3509
+ }
3510
+ .page-info-route-change-confirm-actions {
3511
+ display: flex;
3512
+ justify-content: flex-end;
3513
+ gap: 8px;
3514
+ }
3515
+ .page-info-route-value {
3516
+ flex: 1;
3517
+ min-width: 0;
3518
+ display: block;
3519
+ font-family: var(--harmony-mono);
3520
+ font-size: 12px;
3521
+ line-height: 1.4;
3522
+ color: var(--harmony-text);
3523
+ background: var(--harmony-bg-surface);
3524
+ border: 1px solid var(--harmony-border);
3525
+ border-radius: var(--harmony-radius-sm);
3526
+ padding: 8px 10px;
3527
+ word-break: break-all;
3528
+ }
3529
+ .page-info-route-input {
3530
+ width: 100%;
3531
+ box-sizing: border-box;
3532
+ font-family: var(--harmony-mono);
3533
+ font-size: 12px;
3534
+ padding: 8px 10px;
3535
+ border: 1px solid var(--harmony-border);
3536
+ border-radius: var(--harmony-radius-sm);
3537
+ background: var(--harmony-bg-surface);
3538
+ color: var(--harmony-text);
3539
+ }
3540
+ .page-info-route-input:focus {
3541
+ outline: none;
3542
+ border-color: var(--harmony-primary);
3543
+ box-shadow: 0 0 0 3px var(--harmony-primary-soft);
3544
+ }
3545
+ .page-info-planned-route {
3546
+ margin-top: 4px;
3547
+ }
3548
+ .page-info-route-params {
3549
+ display: flex;
3550
+ flex-wrap: wrap;
3551
+ align-items: center;
3552
+ gap: 6px;
3553
+ }
3554
+ .page-info-param-chip {
3555
+ font-family: var(--harmony-mono);
3556
+ font-size: 11px;
3557
+ padding: 2px 8px;
3558
+ border-radius: var(--harmony-radius-pill);
3559
+ background: var(--harmony-primary-soft);
3560
+ color: var(--harmony-primary);
3561
+ }
3562
+ .page-info-route-confirm {
3563
+ margin-top: 8px;
3564
+ padding-top: 10px;
3565
+ border-top: 1px solid var(--harmony-border);
3566
+ }
3567
+ .page-info-route-confirm-actions {
3568
+ display: flex;
3569
+ justify-content: flex-end;
3570
+ gap: 8px;
3571
+ margin-top: 8px;
3572
+ }
3573
+ .page-info-route-confirm-actions .harmony-btn-primary,
3574
+ .page-info-route-confirm-actions .harmony-btn-secondary {
3575
+ flex: 0 0 auto;
3576
+ min-width: 0;
3577
+ padding: 6px 12px;
3578
+ font-size: 12px;
3579
+ }
3580
+ .page-info-field-error {
3581
+ margin: 0;
3582
+ font-size: 12px;
3583
+ color: var(--harmony-danger);
3584
+ }
3585
+ .page-info-hint {
3586
+ margin: 0;
3587
+ font-size: 12px;
3588
+ line-height: 1.4;
3589
+ color: var(--harmony-text-secondary);
3590
+ }
3591
+ .page-info-hint.page-info-loading {
3592
+ font-style: italic;
3593
+ }
3594
+ .page-info-empty {
3595
+ margin: 0;
3596
+ padding: 12px;
3597
+ font-size: 12px;
3598
+ line-height: 1.45;
3599
+ color: var(--harmony-text-secondary);
3600
+ text-align: center;
3601
+ border: 1px dashed var(--harmony-border);
3602
+ border-radius: var(--harmony-radius-md);
3603
+ background: var(--harmony-bg-subtle);
3604
+ }
3605
+ .page-info-duplicate-warning {
3606
+ font-size: 12px;
3607
+ line-height: 1.4;
3608
+ color: #92400e;
3609
+ background: var(--harmony-warning-soft);
3610
+ border: 1px solid #fcd34d;
3611
+ border-radius: var(--harmony-radius-md);
3612
+ padding: 10px 12px;
3613
+ }
3614
+ .page-info-component-list {
3615
+ display: flex;
3616
+ flex-direction: column;
3617
+ gap: 6px;
3618
+ }
3619
+ .page-info-component-list {
3620
+ display: flex;
3621
+ flex-direction: column;
3622
+ gap: 8px;
3623
+ }
3624
+ .page-info-component-card {
3625
+ width: 100%;
3626
+ cursor: pointer;
3627
+ text-align: left;
3628
+ }
3629
+ .page-info-component-card .add-menu-picker-component-info-icon {
3630
+ display: flex;
3631
+ align-items: center;
3632
+ justify-content: center;
3633
+ width: 28px;
3634
+ height: 28px;
3635
+ flex-shrink: 0;
3636
+ border-radius: 6px;
3637
+ background: var(--harmony-bg-subtle);
3638
+ border: 1px solid var(--harmony-border);
3639
+ font-size: 14px;
3640
+ color: var(--harmony-primary);
3641
+ margin-bottom: 2px;
3642
+ }
3643
+ .page-info-component-subtitle {
3644
+ font-size: 11px;
3645
+ color: var(--harmony-text-muted);
3646
+ font-family: var(--harmony-mono);
3647
+ line-height: 1.35;
3648
+ margin-top: 2px;
3649
+ word-break: break-all;
3650
+ }
3651
+ .page-info-component-keyline {
3652
+ margin-top: 6px;
3653
+ font-family: var(--harmony-mono);
3654
+ font-size: 10px;
3655
+ font-weight: 600;
3656
+ letter-spacing: 0.02em;
3657
+ text-transform: uppercase;
3658
+ color: var(--harmony-text-secondary);
3659
+ }
3660
+ .page-info-component-card.add-menu-picker-component-card--selected
3661
+ .page-info-component-keyline {
3662
+ color: var(--harmony-primary);
3663
+ }
3664
+ .page-info-inspector-error {
3665
+ margin: 0;
3666
+ font-size: 12px;
3667
+ line-height: 1.4;
3668
+ color: var(--harmony-danger);
3669
+ }
3670
+ .page-info-component-row {
3671
+ display: flex;
3672
+ flex-direction: column;
3673
+ align-items: stretch;
3674
+ gap: 6px;
3675
+ width: 100%;
3676
+ text-align: left;
3677
+ padding: 10px 12px;
3678
+ border: 1px solid var(--harmony-border);
3679
+ border-radius: var(--harmony-radius-md);
3680
+ background: var(--harmony-bg-surface);
3681
+ cursor: pointer;
3682
+ font: inherit;
3683
+ color: var(--harmony-text);
3684
+ transition:
3685
+ border-color 0.15s ease,
3686
+ background 0.15s ease,
3687
+ box-shadow 0.15s ease;
3688
+ }
3689
+ .page-info-component-row:hover {
3690
+ border-color: var(--harmony-border-strong);
3691
+ background: var(--harmony-bg-hover);
3692
+ }
3693
+ .page-info-component-row--selected {
3694
+ border-color: var(--harmony-primary);
3695
+ background: var(--harmony-primary-soft);
3696
+ box-shadow: var(--harmony-shadow-sm);
3697
+ }
3698
+ .page-info-component-main {
3699
+ display: flex;
3700
+ flex-direction: column;
3701
+ gap: 2px;
3702
+ min-width: 0;
3703
+ }
3704
+ .page-info-component-title {
3705
+ font-size: 13px;
3706
+ font-weight: 600;
3707
+ color: var(--harmony-text);
3708
+ line-height: 1.3;
3709
+ }
3710
+ .page-info-component-contract {
3711
+ font-size: 11px;
3712
+ color: var(--harmony-text-muted);
3713
+ font-family: var(--harmony-mono);
3714
+ line-height: 1.3;
3715
+ word-break: break-all;
3716
+ }
3717
+ .page-info-component-meta {
3718
+ display: flex;
3719
+ flex-wrap: wrap;
3720
+ align-items: center;
3721
+ gap: 6px;
3722
+ }
3723
+ .page-info-component-key {
3724
+ font-family: var(--harmony-mono);
3725
+ font-size: 10px;
3726
+ font-weight: 600;
3727
+ letter-spacing: 0.02em;
3728
+ text-transform: uppercase;
3729
+ color: var(--harmony-text-secondary);
3730
+ background: var(--harmony-bg-subtle);
3731
+ border: 1px solid var(--harmony-border);
3732
+ border-radius: var(--harmony-radius-pill);
3733
+ padding: 2px 8px;
3734
+ }
3735
+ .page-info-component-row--selected .page-info-component-key {
3736
+ background: rgba(255, 255, 255, 0.7);
3737
+ }
3738
+ .page-info-duplicate-badge {
3739
+ font-size: 10px;
3740
+ font-weight: 600;
3741
+ color: #92400e;
3742
+ background: var(--harmony-warning-soft);
3743
+ border: 1px solid #fcd34d;
3744
+ border-radius: var(--harmony-radius-pill);
3745
+ padding: 2px 8px;
3746
+ }
3747
+ .page-info-main-view {
3748
+ display: flex;
3749
+ flex-direction: column;
3750
+ gap: 14px;
3751
+ }
3752
+ .page-info-inspector {
3753
+ display: flex;
3754
+ flex-direction: column;
3755
+ gap: 10px;
3756
+ flex: 1;
3757
+ min-height: 0;
3758
+ padding-bottom: 24px;
3759
+ }
3760
+ .page-info-inspector-contract {
3761
+ margin: 0 0 8px;
3762
+ font-size: 12px;
3763
+ font-weight: 600;
3764
+ color: var(--harmony-text);
3765
+ font-family: var(--harmony-mono);
3766
+ }
3767
+ .page-info-tag-list {
3768
+ list-style: none;
3769
+ margin: 0 0 12px;
3770
+ padding: 0;
3771
+ display: flex;
3772
+ flex-direction: column;
3773
+ gap: 4px;
3774
+ }
3775
+ .page-info-tag-row {
3776
+ display: grid;
3777
+ grid-template-columns: 1fr auto auto;
3778
+ gap: 6px 8px;
3779
+ align-items: center;
3780
+ padding: 8px 10px;
3781
+ border-radius: var(--harmony-radius-sm);
3782
+ background: var(--harmony-bg-surface);
3783
+ border: 1px solid var(--harmony-border);
3784
+ font-size: 11px;
3785
+ }
3786
+ .page-info-tag-row.page-info-tag--used {
3787
+ border-color: rgba(0, 168, 98, 0.35);
3788
+ background: var(--harmony-success-soft);
3789
+ }
3790
+ .page-info-tag-path {
3791
+ font-family: var(--harmony-mono);
3792
+ font-size: 11px;
3793
+ color: var(--harmony-text);
3794
+ word-break: break-word;
3795
+ }
3796
+ .page-info-tag-kind-pill {
3797
+ font-size: 9px;
3798
+ font-weight: 700;
3799
+ letter-spacing: 0.04em;
3800
+ text-transform: uppercase;
3801
+ color: var(--harmony-text-muted);
3802
+ background: var(--harmony-bg-subtle);
3803
+ border-radius: var(--harmony-radius-pill);
3804
+ padding: 2px 6px;
3805
+ white-space: nowrap;
3806
+ }
3807
+ .page-info-tag-status {
3808
+ font-size: 10px;
3809
+ font-weight: 600;
3810
+ border-radius: var(--harmony-radius-pill);
3811
+ padding: 2px 8px;
3812
+ white-space: nowrap;
3813
+ }
3814
+ .page-info-tag-status--bound {
3815
+ color: var(--harmony-success);
3816
+ background: rgba(0, 168, 98, 0.12);
3817
+ }
3818
+ .page-info-tag-status--available {
3819
+ color: var(--harmony-text-muted);
3820
+ background: var(--harmony-bg-subtle);
3821
+ }
3822
+ .page-info-tag-sample {
3823
+ grid-column: 1 / -1;
3824
+ margin: 0;
3825
+ font-family: var(--harmony-mono);
3826
+ font-size: 10px;
3827
+ color: var(--harmony-text-secondary);
3828
+ word-break: break-all;
3829
+ background: transparent;
3830
+ }
3831
+
3832
+ /* ── + Add dock panel ── */
3833
+ .add-menu-dock-backdrop {
3834
+ position: fixed;
3835
+ inset: 0;
3836
+ z-index: 94;
3837
+ background: rgba(22, 45, 61, 0.12);
3838
+ pointer-events: auto;
3839
+ }
3840
+ .add-menu-dock-panel {
3841
+ position: fixed;
3842
+ width: min(624px, calc(100vw - 48px));
3843
+ height: min(680px, calc(100vh - 120px));
3844
+ max-height: min(680px, calc(100vh - 120px));
3845
+ z-index: 95;
3846
+ background: var(--harmony-bg-surface);
3847
+ border: 1px solid var(--harmony-border);
3848
+ border-radius: var(--harmony-radius-lg);
3849
+ box-shadow: var(--harmony-shadow-lg);
3850
+ display: flex;
3851
+ flex-direction: column;
3852
+ overflow: hidden;
3853
+ pointer-events: auto;
3854
+ }
3855
+ .add-menu-dock-header {
3856
+ display: flex;
3857
+ align-items: center;
3858
+ gap: 8px;
3859
+ padding: 12px 14px;
3860
+ border-bottom: 1px solid var(--harmony-border);
3861
+ flex-shrink: 0;
3862
+ cursor: grab;
3863
+ user-select: none;
3864
+ }
3865
+ .add-menu-dock-header:active {
3866
+ cursor: grabbing;
3867
+ }
3868
+ .add-menu-dock-title {
3869
+ flex: 1;
3870
+ font-size: 18px;
3871
+ font-weight: 700;
3872
+ color: var(--harmony-text);
3873
+ letter-spacing: -0.02em;
3874
+ }
3875
+ .add-menu-dock-subhint {
3876
+ margin: 0;
3877
+ padding: 8px 18px 0;
3878
+ font-size: 12px;
3879
+ line-height: 1.35;
3880
+ color: var(--harmony-text-secondary);
3881
+ flex-shrink: 0;
3882
+ }
3883
+ .add-menu-dock-body {
3884
+ flex: 1;
3885
+ min-height: 0;
3886
+ overflow: hidden;
3887
+ display: flex;
3888
+ flex-direction: column;
3889
+ padding: 0 0 12px;
3890
+ }
3891
+ .add-menu-dock-body .add-menu-picker-browse {
3892
+ flex: 1;
3893
+ min-height: 0;
3894
+ display: flex;
3895
+ flex-direction: column;
3896
+ overflow: hidden;
3897
+ }
3898
+ .add-menu-dock-body .add-menu-picker-browse-layout {
3899
+ flex: 1;
3900
+ min-height: 0;
3901
+ }
3902
+ .add-menu-picker-component-card--stage-place {
3903
+ cursor: grab;
3904
+ }
3905
+ .add-menu-picker-component-card--stage-place:active {
3906
+ cursor: grabbing;
3907
+ }
3908
+
3909
+ /* ── Stage drop catcher overlay ── */
3910
+ .stage-drop-catcher {
3911
+ position: absolute;
3912
+ inset: 0;
3913
+ z-index: 10;
3914
+ cursor: grabbing;
3915
+ background: rgba(17, 109, 255, 0.08);
3916
+ outline: 2px dashed var(--harmony-primary);
3917
+ outline-offset: -2px;
3918
+ touch-action: none;
3919
+ }
3920
+ .stage-drop-catcher-hint {
3921
+ position: absolute;
3922
+ top: 12px;
3923
+ left: 50%;
3924
+ transform: translateX(-50%);
3925
+ padding: 6px 12px;
3926
+ background: rgba(22, 45, 61, 0.85);
3927
+ color: #fff;
3928
+ border-radius: 8px;
3929
+ font-size: 12px;
3930
+ pointer-events: none;
3931
+ white-space: nowrap;
3932
+ }
3933
+
3934
+ /* ── Stage drop ── */
3935
+ .visual-overlay.stage-drop-target-active {
3936
+ outline: 2px dashed var(--harmony-primary);
3937
+ outline-offset: -2px;
3938
+ }
3939
+ .stage-drop-ghost {
3940
+ position: fixed;
3941
+ z-index: 10000;
3942
+ transform: translate(-7px, -7px);
3943
+ pointer-events: none;
3944
+ display: flex;
3945
+ align-items: flex-start;
3946
+ gap: 8px;
3947
+ }
3948
+ .stage-drop-ghost-marker {
3949
+ flex: 0 0 auto;
3950
+ width: 14px;
3951
+ height: 14px;
3952
+ border-radius: 50%;
3953
+ background: var(--harmony-primary);
3954
+ border: 2px solid #fff;
3955
+ box-shadow: var(--harmony-shadow-sm);
3956
+ }
3957
+ .stage-drop-ghost-hint {
3958
+ max-width: 220px;
3959
+ padding: 6px 10px;
3960
+ background: var(--harmony-bg-surface);
3961
+ border: 1px solid var(--harmony-primary);
3962
+ border-radius: 6px;
3963
+ font-size: 12px;
3964
+ line-height: 1.35;
3965
+ color: var(--harmony-text-primary);
3966
+ box-shadow: var(--harmony-shadow-sm);
3967
+ white-space: normal;
3968
+ }
3969
+ .stage-drop-banner {
3970
+ position: absolute;
3971
+ top: 8px;
3972
+ left: 50%;
3973
+ transform: translateX(-50%);
3974
+ z-index: 5;
3975
+ display: flex;
3976
+ align-items: center;
3977
+ gap: 8px;
3978
+ padding: 6px 10px;
3979
+ background: rgba(0, 0, 0, 0.75);
3980
+ color: #fff;
3981
+ border-radius: 8px;
3982
+ font-size: 12px;
3983
+ }
3984
+ .stage-drop-banner-cancel {
3985
+ background: transparent;
3986
+ border: 1px solid rgba(255, 255, 255, 0.5);
3987
+ color: #fff;
3988
+ border-radius: 4px;
3989
+ padding: 2px 8px;
3990
+ cursor: pointer;
3991
+ }
3992
+
3993
+ /* ── Toast ── */
3994
+ .aiditor-toast {
3995
+ position: fixed;
3996
+ bottom: 24px;
3997
+ left: 50%;
3998
+ transform: translateX(-50%);
3999
+ z-index: 120;
4000
+ padding: 10px 16px;
4001
+ background: rgba(0, 0, 0, 0.85);
4002
+ color: #fff;
4003
+ border-radius: 8px;
4004
+ font-size: 13px;
4005
+ pointer-events: none;
2938
4006
  }