loadtoagent 1.1.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.ko.md +7 -0
  2. package/README.md +7 -0
  3. package/README.zh-CN.md +7 -0
  4. package/docs/PROVIDER-CONTRACTS.md +23 -1
  5. package/docs/UI-AUDIT-100.md +118 -0
  6. package/docs/UI-AUDIT-101-200.md +120 -0
  7. package/docs/UI-AUDIT-201-300.md +120 -0
  8. package/main.js +135 -38
  9. package/package.json +13 -4
  10. package/preload.js +6 -0
  11. package/renderer/app-agent-actions.js +125 -53
  12. package/renderer/app-bootstrap.js +54 -19
  13. package/renderer/app-dashboard.js +190 -55
  14. package/renderer/app-drawer-content.js +48 -44
  15. package/renderer/app-drawer-data.js +26 -13
  16. package/renderer/app-drawer.js +72 -54
  17. package/renderer/app-events-dialogs.js +146 -37
  18. package/renderer/app-events-filters.js +172 -13
  19. package/renderer/app-events-navigation.js +77 -30
  20. package/renderer/app-events-sessions.js +156 -9
  21. package/renderer/app-events.js +2 -1
  22. package/renderer/app-graph-model.js +20 -38
  23. package/renderer/app-graph-orchestration.js +15 -13
  24. package/renderer/app-graph-view.js +228 -113
  25. package/renderer/app-management.js +211 -0
  26. package/renderer/app-provider-visibility.js +124 -0
  27. package/renderer/app-quality.js +568 -0
  28. package/renderer/app-run-modal.js +103 -33
  29. package/renderer/app-runtime-overview.js +312 -0
  30. package/renderer/app-session-render.js +94 -37
  31. package/renderer/app-tmux-render.js +52 -44
  32. package/renderer/app.js +153 -75
  33. package/renderer/i18n-messages.js +833 -16
  34. package/renderer/i18n.js +104 -0
  35. package/renderer/index.html +145 -59
  36. package/renderer/shared.js +17 -0
  37. package/renderer/styles-agent-map.css +6 -0
  38. package/renderer/styles-cards.css +26 -0
  39. package/renderer/styles-components.css +86 -9
  40. package/renderer/styles-management.css +355 -0
  41. package/renderer/styles-overlays.css +8 -2
  42. package/renderer/styles-product.css +24 -16
  43. package/renderer/styles-quality.css +312 -0
  44. package/renderer/styles-readability.css +862 -0
  45. package/renderer/styles-responsive-product.css +84 -12
  46. package/renderer/styles-responsive-runtime.css +22 -14
  47. package/renderer/styles-responsive-shell.css +44 -48
  48. package/renderer/styles-responsive-workflows.css +37 -3
  49. package/renderer/styles-run-composer.css +5 -0
  50. package/renderer/styles-runtime-overview.css +285 -0
  51. package/renderer/styles-settings.css +160 -0
  52. package/renderer/styles-terminal.css +339 -2
  53. package/renderer/styles-workflow-map.css +362 -15
  54. package/renderer/styles-workflows.css +69 -2
  55. package/renderer/styles.css +27 -12
  56. package/renderer/terminal-agent.js +17 -13
  57. package/renderer/terminal-events.js +233 -40
  58. package/renderer/terminal-workbench.js +165 -77
  59. package/renderer/terminal.js +341 -34
  60. package/src/agentMonitor/claudeParser.js +96 -7
  61. package/src/agentMonitor/codexParser.js +59 -4
  62. package/src/agentMonitor/executionActivity.js +282 -0
  63. package/src/agentMonitor/genericParser.js +56 -13
  64. package/src/agentMonitor/hierarchy.js +17 -0
  65. package/src/agentMonitor/responseIntent.js +51 -0
  66. package/src/agentMonitor.js +21 -3
  67. package/src/agentRunner.js +66 -1
  68. package/src/attentionNotifier.js +14 -10
  69. package/src/automationMonitor.js +258 -0
  70. package/src/contracts.js +10 -1
  71. package/src/ipc/registerAgentIpc.js +9 -3
  72. package/src/ipc/registerAppIpc.js +4 -1
  73. package/src/ipc/registerTerminalIpc.js +12 -6
  74. package/src/macUpdateHelper.js +210 -0
  75. package/src/monitorWorker.js +65 -6
  76. package/src/platformPath.js +80 -0
  77. package/src/processMonitor.js +80 -22
  78. package/src/providerVisibilityStore.js +45 -0
  79. package/src/sessionIntelligence.js +247 -0
  80. package/src/terminalHost.js +381 -0
  81. package/src/terminalHostDaemon.js +60 -0
  82. package/src/terminalManager.js +158 -3
  83. package/src/updateInstaller.js +175 -0
@@ -56,7 +56,7 @@
56
56
  display: block;
57
57
  margin-top: 4px;
58
58
  color: #718195;
59
- font-size: 11px;
59
+ font-size: 12px;
60
60
  }
61
61
 
62
62
  .agent-workflow-stack {
@@ -111,7 +111,7 @@
111
111
  display: block;
112
112
  margin-top: 4px;
113
113
  color: #75879a;
114
- font-size: 11px;
114
+ font-size: 12px;
115
115
  }
116
116
 
117
117
  .agent-workflow-empty {
@@ -123,7 +123,7 @@
123
123
  border-radius: 12px;
124
124
  background: rgba(8,15,20,.56);
125
125
  color: #67798b;
126
- font-size: 11px;
126
+ font-size: 12px;
127
127
  text-align: center;
128
128
  }
129
129
 
@@ -187,7 +187,7 @@
187
187
  flex: 0 0 auto;
188
188
  padding: 0 6px;
189
189
  color: #70828d;
190
- font-size: 9px;
190
+ font-size: 12px;
191
191
  }
192
192
 
193
193
  .agent-workflow-summary>span:first-child b {
@@ -200,33 +200,34 @@
200
200
  align-items: center;
201
201
  gap: 5px;
202
202
  flex: 0 0 auto;
203
- padding: 4px 6px;
203
+ min-height: 36px;
204
+ padding: 6px 8px;
204
205
  border: 1px solid color-mix(in srgb,var(--provider) 24%,#263643);
205
206
  border-radius: 7px;
206
207
  background: color-mix(in srgb,var(--provider) 6%,#0d171c);
207
208
  }
208
209
 
209
210
  .workflow-summary-chip i {
210
- width: 18px;
211
- height: 17px;
211
+ width: 24px;
212
+ height: 24px;
212
213
  display: grid;
213
214
  place-items: center;
214
215
  border-radius: 5px;
215
216
  background: color-mix(in srgb,var(--provider) 12%,#152028);
216
217
  color: var(--provider);
217
- font-size: 6px;
218
+ font-size: 12px;
218
219
  font-style: normal;
219
220
  font-weight: 800;
220
221
  }
221
222
 
222
223
  .workflow-summary-chip b {
223
224
  color: #aebdc5;
224
- font-size: 8px;
225
+ font-size: 12px;
225
226
  }
226
227
 
227
228
  .workflow-summary-chip em {
228
229
  color: var(--provider);
229
- font-size: 8px;
230
+ font-size: 12px;
230
231
  font-style: normal;
231
232
  font-weight: 800;
232
233
  }
@@ -236,11 +237,11 @@
236
237
  }
237
238
 
238
239
  .downstream-stack .agent-flow-copy b {
239
- font-size: 11px;
240
+ font-size: 12px;
240
241
  }
241
242
 
242
243
  .downstream-stack .agent-flow-copy em {
243
- font-size: 9px;
244
+ font-size: 12px;
244
245
  }
245
246
 
246
247
  .agent-workflow-edge.downstream.group {
@@ -364,7 +365,7 @@
364
365
  margin-top: 8px;
365
366
  padding: 0 2px;
366
367
  color: #7d9199;
367
- font-size: 8px;
368
+ font-size: 12px;
368
369
  }
369
370
 
370
371
  .workflow-summary-evidence small {
@@ -408,12 +409,12 @@
408
409
 
409
410
  .agent-workflow-empty.current-clear b {
410
411
  color: #9dacb9;
411
- font-size: 11px;
412
+ font-size: 12px;
412
413
  }
413
414
 
414
415
  .agent-workflow-empty.current-clear span {
415
416
  color: #607181;
416
- font-size: 9px;
417
+ font-size: 12px;
417
418
  }
418
419
 
419
420
  .downstream-stack.density-many>.agent-workflow-empty.current-clear {
@@ -511,3 +512,349 @@
511
512
  text-overflow: ellipsis;
512
513
  white-space: nowrap;
513
514
  }
515
+
516
+ .execution-activity-panel {
517
+ margin: 0 0 12px;
518
+ padding: 14px;
519
+ border: 1px solid #27414a;
520
+ border-radius: 14px;
521
+ background: #0a151c;
522
+ box-shadow: inset 3px 0 rgba(79,193,208,.42);
523
+ }
524
+
525
+ .execution-activity-panel>header {
526
+ display: flex;
527
+ align-items: flex-start;
528
+ justify-content: space-between;
529
+ gap: 12px;
530
+ margin-bottom: 12px;
531
+ }
532
+
533
+ .execution-activity-panel>header span,
534
+ .execution-activity-copy,
535
+ .execution-activity-state {
536
+ min-width: 0;
537
+ display: flex;
538
+ flex-direction: column;
539
+ }
540
+
541
+ .execution-activity-panel>header b {
542
+ color: #d8eef2;
543
+ font-size: 14px;
544
+ }
545
+
546
+ .execution-activity-panel>header small {
547
+ margin-top: 3px;
548
+ color: #9eb0b8;
549
+ font-size: 12px;
550
+ line-height: 1.5;
551
+ }
552
+
553
+ .execution-activity-panel>header em {
554
+ flex: 0 0 auto;
555
+ padding: 5px 8px;
556
+ border: 1px solid rgba(86,185,198,.2);
557
+ border-radius: 999px;
558
+ background: rgba(40,110,121,.12);
559
+ color: #9edee5;
560
+ font-size: 12px;
561
+ font-style: normal;
562
+ }
563
+
564
+ .execution-activity-list {
565
+ display: grid;
566
+ gap: 8px;
567
+ }
568
+
569
+ .execution-activity-card {
570
+ min-width: 0;
571
+ border: 1px solid #2a414a;
572
+ border-radius: 12px;
573
+ background: #081119;
574
+ overflow: hidden;
575
+ transition: border-color var(--motion-fast) ease, background-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease;
576
+ }
577
+
578
+ .execution-activity-card>summary {
579
+ display: grid;
580
+ grid-template-columns: 38px minmax(0,1fr) 112px;
581
+ align-items: center;
582
+ gap: 11px;
583
+ min-width: 0;
584
+ padding: 12px;
585
+ cursor: pointer;
586
+ list-style: none;
587
+ }
588
+
589
+ .execution-activity-card>summary::-webkit-details-marker { display: none; }
590
+ .execution-activity-card>summary::marker { content: ""; }
591
+ .execution-activity-card:hover { border-color: #3e6571; background: #0b1720; }
592
+ .execution-activity-card[open] { border-color: #3d6672; background: #0b171f; box-shadow: 0 8px 22px rgba(0,0,0,.16); }
593
+
594
+ .execution-activity-card>summary:focus-visible {
595
+ outline: 3px solid var(--focus);
596
+ outline-offset: -3px;
597
+ }
598
+
599
+ .execution-activity-card.background {
600
+ border-color: rgba(154,123,214,.28);
601
+ background: #11131f;
602
+ }
603
+
604
+ .execution-activity-card.running {
605
+ border-color: rgba(83,211,173,.4);
606
+ box-shadow: 0 0 0 1px rgba(83,211,173,.05),0 8px 20px rgba(0,0,0,.12);
607
+ }
608
+
609
+ .execution-activity-card.failed {
610
+ border-color: rgba(230,104,112,.4);
611
+ }
612
+
613
+ .execution-activity-icon {
614
+ width: 36px;
615
+ height: 36px;
616
+ display: grid;
617
+ place-items: center;
618
+ border-radius: 9px;
619
+ background: rgba(65,151,166,.14);
620
+ color: #70c7d2;
621
+ font: 800 11px/1 ui-monospace,SFMono-Regular,Consolas,monospace;
622
+ }
623
+
624
+ .execution-activity-card.background .execution-activity-icon,
625
+ .execution-activity-card.shell.background .execution-activity-icon {
626
+ background: rgba(144,104,204,.15);
627
+ color: #b69be0;
628
+ }
629
+
630
+ .execution-activity-kicker {
631
+ display: flex;
632
+ align-items: center;
633
+ gap: 6px;
634
+ min-width: 0;
635
+ }
636
+
637
+ .execution-activity-kicker b {
638
+ color: #91dae3;
639
+ font-size: 12px;
640
+ }
641
+
642
+ .execution-activity-kicker small {
643
+ overflow: hidden;
644
+ color: #9aacb4;
645
+ font-size: 12px;
646
+ text-overflow: ellipsis;
647
+ white-space: nowrap;
648
+ }
649
+
650
+ .execution-activity-copy>strong {
651
+ margin-top: 4px;
652
+ overflow: hidden;
653
+ color: #dce7eb;
654
+ font-size: 14px;
655
+ text-overflow: ellipsis;
656
+ white-space: nowrap;
657
+ }
658
+
659
+ .execution-activity-copy>code {
660
+ display: block;
661
+ margin-top: 4px;
662
+ overflow: hidden;
663
+ color: #b5c5cb;
664
+ font: 12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;
665
+ text-overflow: ellipsis;
666
+ white-space: nowrap;
667
+ }
668
+
669
+ .execution-activity-meta {
670
+ display: flex;
671
+ flex-wrap: wrap;
672
+ gap: 8px;
673
+ margin-top: 5px;
674
+ min-width: 0;
675
+ }
676
+
677
+ .execution-activity-meta small {
678
+ min-width: 0;
679
+ overflow: visible;
680
+ color: #91a5ad;
681
+ font-size: 12px;
682
+ line-height: 1.45;
683
+ overflow-wrap: anywhere;
684
+ white-space: normal;
685
+ }
686
+
687
+ .execution-activity-state {
688
+ align-items: flex-end;
689
+ gap: 4px;
690
+ max-width: 112px;
691
+ text-align: right;
692
+ }
693
+
694
+ .execution-activity-state>span:first-child {
695
+ display: flex;
696
+ align-items: center;
697
+ justify-content: flex-end;
698
+ gap: 6px;
699
+ }
700
+
701
+ .execution-activity-state>span:first-child i {
702
+ width: 6px;
703
+ height: 6px;
704
+ flex: 0 0 6px;
705
+ border-radius: 50%;
706
+ background: #657780;
707
+ }
708
+
709
+ .execution-activity-card.running .execution-activity-state>span:first-child i {
710
+ background: #55d6a8;
711
+ box-shadow: 0 0 9px rgba(85,214,168,.75);
712
+ animation: pulse 1.5s ease-in-out infinite;
713
+ }
714
+
715
+ .execution-activity-card.failed .execution-activity-state>span:first-child i {
716
+ background: #e26972;
717
+ }
718
+
719
+ .execution-activity-state b {
720
+ color: #c6d2d7;
721
+ font-size: 12px;
722
+ }
723
+
724
+ .execution-activity-state small {
725
+ overflow: hidden;
726
+ color: #91a4ac;
727
+ font-size: 12px;
728
+ text-overflow: ellipsis;
729
+ white-space: nowrap;
730
+ }
731
+
732
+ .execution-activity-disclosure {
733
+ display: inline-flex;
734
+ align-items: center;
735
+ justify-content: flex-end;
736
+ gap: 5px;
737
+ margin-top: 2px;
738
+ color: #91d9e2;
739
+ }
740
+
741
+ .execution-activity-disclosure b { color: inherit; font-size: 12px; font-weight: 680; }
742
+ .execution-activity-disclosure i { font-size: 13px; font-style: normal; transition: transform var(--motion-fast) ease; }
743
+ .execution-activity-disclosure .close-label { display: none; }
744
+ .execution-activity-card[open] .execution-activity-disclosure .open-label { display: none; }
745
+ .execution-activity-card[open] .execution-activity-disclosure .close-label { display: inline; }
746
+ .execution-activity-card[open] .execution-activity-disclosure i { transform: rotate(180deg); }
747
+
748
+ .execution-activity-detail {
749
+ display: grid;
750
+ gap: 12px;
751
+ padding: 13px 14px 14px 63px;
752
+ border-top: 1px solid #243943;
753
+ background: rgba(5, 11, 16, .48);
754
+ }
755
+
756
+ .execution-detail-command,
757
+ .execution-detail-output {
758
+ min-width: 0;
759
+ }
760
+
761
+ .execution-detail-command header,
762
+ .execution-detail-output header {
763
+ display: flex;
764
+ align-items: center;
765
+ justify-content: space-between;
766
+ gap: 10px;
767
+ margin-bottom: 7px;
768
+ }
769
+
770
+ .execution-detail-command header span,
771
+ .execution-detail-output header span {
772
+ color: #a7bbc2;
773
+ font-size: 12px;
774
+ font-weight: 720;
775
+ }
776
+
777
+ .execution-detail-command button,
778
+ .execution-detail-output button {
779
+ min-height: 44px;
780
+ padding: 0 12px;
781
+ border: 1px solid #36505a;
782
+ border-radius: 8px;
783
+ background: #101f27;
784
+ color: #9ed6dc;
785
+ font-size: 12px;
786
+ cursor: pointer;
787
+ }
788
+
789
+ .execution-detail-command button:hover,
790
+ .execution-detail-output button:hover { border-color: #56818d; color: #d7f4f7; }
791
+
792
+ .execution-detail-command>code,
793
+ .execution-detail-output pre,
794
+ .execution-detail-output p {
795
+ display: block;
796
+ width: 100%;
797
+ margin: 0;
798
+ padding: 10px 11px;
799
+ border: 1px solid #263a43;
800
+ border-radius: 9px;
801
+ background: #071016;
802
+ color: #c7d5d9;
803
+ font: 12px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;
804
+ white-space: pre-wrap;
805
+ overflow-wrap: anywhere;
806
+ }
807
+
808
+ .execution-detail-output pre { max-height: 210px; overflow: auto; }
809
+ .execution-detail-output p { color: #98aab1; font-family: inherit; }
810
+
811
+ .execution-activity-detail dl {
812
+ display: grid;
813
+ grid-template-columns: repeat(2, minmax(0, 1fr));
814
+ gap: 1px;
815
+ margin: 0;
816
+ border: 1px solid #243740;
817
+ border-radius: 9px;
818
+ background: #243740;
819
+ overflow: hidden;
820
+ }
821
+
822
+ .execution-activity-detail dl div { min-width: 0; padding: 9px 10px; background: #0a141b; }
823
+ .execution-activity-detail dl div:last-child:nth-child(odd) { grid-column: 1 / -1; }
824
+ .execution-activity-detail dt { color: #9eb1b8; font-size: 12px; }
825
+ .execution-activity-detail dd { margin: 4px 0 0; color: #d1dcdf; font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; white-space: normal; }
826
+
827
+ .execution-activity-retained {
828
+ display: block;
829
+ min-height: 44px;
830
+ width: 100%;
831
+ margin-top: 9px;
832
+ border: 1px solid #2b4650;
833
+ border-radius: 9px;
834
+ background: #0d1b23;
835
+ color: #91a4ac;
836
+ font-size: 12px;
837
+ text-align: center;
838
+ cursor: pointer;
839
+ }
840
+
841
+ .execution-activity-retained:hover { border-color: #4b7480; color: #cce8ec; }
842
+
843
+ .subagent-execution-heading {
844
+ display: flex;
845
+ align-items: baseline;
846
+ justify-content: space-between;
847
+ gap: 10px;
848
+ margin: 2px 3px 8px;
849
+ }
850
+
851
+ .subagent-execution-heading b {
852
+ color: #bfccd2;
853
+ font-size: 12px;
854
+ }
855
+
856
+ .subagent-execution-heading span {
857
+ color: #687b85;
858
+ font-size: 12px;
859
+ text-align: right;
860
+ }
@@ -13,10 +13,11 @@
13
13
  box-shadow: 0 0 10px rgba(76,227,154,.7);
14
14
  }
15
15
 
16
- .live-section-head>div {
16
+ .live-section-title {
17
17
  display: flex;
18
18
  align-items: center;
19
19
  gap: 11px;
20
+ min-width: 0;
20
21
  }
21
22
 
22
23
  .live-section-head .eyebrow {
@@ -46,6 +47,72 @@
46
47
  font-size: 22px;
47
48
  }
48
49
 
50
+ .live-section-tools {
51
+ display: flex;
52
+ align-items: center;
53
+ justify-content: flex-end;
54
+ gap: 14px;
55
+ min-width: 0;
56
+ margin-left: auto;
57
+ }
58
+
59
+ .live-tmux-shortcut {
60
+ flex: 0 0 auto;
61
+ min-height: 40px;
62
+ padding: 0 11px 0 10px;
63
+ display: inline-flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ gap: 8px;
67
+ border: 0;
68
+ border-radius: 11px;
69
+ color: #c5d8d1;
70
+ background: rgba(76,227,154,.07);
71
+ box-shadow: 0 0 0 1px rgba(76,227,154,.24),0 8px 22px rgba(0,0,0,.16);
72
+ font: inherit;
73
+ font-size: 12px;
74
+ font-weight: 700;
75
+ cursor: pointer;
76
+ transition-property: color,background-color,box-shadow,scale;
77
+ transition-duration: 150ms;
78
+ transition-timing-function: ease;
79
+ }
80
+
81
+ .live-tmux-shortcut:hover {
82
+ color: #ecfff7;
83
+ background: rgba(76,227,154,.12);
84
+ box-shadow: 0 0 0 1px rgba(76,227,154,.38),0 10px 25px rgba(0,0,0,.2);
85
+ }
86
+
87
+ .live-tmux-shortcut:active {
88
+ scale: .96;
89
+ }
90
+
91
+ .live-tmux-shortcut:focus-visible {
92
+ outline: 2px solid rgba(105,238,175,.92);
93
+ outline-offset: 3px;
94
+ }
95
+
96
+ .live-tmux-shortcut-icon {
97
+ color: #63dba0;
98
+ font-size: 15px;
99
+ line-height: 1;
100
+ }
101
+
102
+ .live-tmux-shortcut b {
103
+ min-width: 22px;
104
+ height: 22px;
105
+ padding: 0 6px;
106
+ display: inline-flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ border-radius: 999px;
110
+ color: #09140f;
111
+ background: #63dba0;
112
+ font-size: 11px;
113
+ font-variant-numeric: tabular-nums;
114
+ }
115
+
49
116
  .live-beacon {
50
117
  border: 2px solid rgba(76,227,154,.28);
51
118
  border-radius: 50%;
@@ -1200,7 +1267,7 @@
1200
1267
  min-width: 0;
1201
1268
  }
1202
1269
 
1203
- .live-section-head>p {
1270
+ .live-section-description {
1204
1271
  margin: 0;
1205
1272
  text-align: right;
1206
1273
  max-width: 660px;
@@ -30,11 +30,23 @@
30
30
 
31
31
  .sidebar>.workspace-section {
32
32
  flex: none;
33
+ width: 100%;
34
+ min-width: 0;
33
35
  overflow: visible;
34
36
  }
35
37
 
36
38
  .sidebar>.workspace-section .workspace-list {
37
- max-height: 180px;
39
+ width: 100%;
40
+ min-width: 0;
41
+ max-height: none;
42
+ overflow: visible;
43
+ }
44
+
45
+ body[data-current-view="runtime"] .sidebar>.workspace-section,
46
+ body[data-current-view="terminal"] .sidebar>.workspace-section,
47
+ body[data-current-view="tmux"] .sidebar>.workspace-section,
48
+ body[data-current-view="settings"] .sidebar>.workspace-section {
49
+ display: none;
38
50
  }
39
51
 
40
52
  .brand {
@@ -131,7 +143,7 @@
131
143
  height: 100vh;
132
144
  display: flex;
133
145
  flex-direction: column;
134
- background: linear-gradient(180deg,rgba(14,18,28,.98),rgba(9,12,19,.98));
146
+ background: linear-gradient(180deg,#0a111a,#070c13 72%,#060a10);
135
147
  border-right: 1px solid var(--line);
136
148
  overflow-x: hidden;
137
149
  overflow-y: auto;
@@ -202,13 +214,13 @@ html {
202
214
 
203
215
  :root {
204
216
  color-scheme: dark;
205
- --bg: #070910;
206
- --panel: #0d111a;
207
- --panel-2: #111722;
208
- --panel-3: #151c28;
209
- --line: #202838;
210
- --line-soft: #171e2b;
211
- --text: #f4f7fb;
217
+ --bg: #060a10;
218
+ --panel: #0b121a;
219
+ --panel-2: #101923;
220
+ --panel-3: #15212c;
221
+ --line: #263643;
222
+ --line-soft: #192630;
223
+ --text: #f4f8fa;
212
224
  --cyan: #59d8ff;
213
225
  --green: #4ce39a;
214
226
  --amber: #f6bd55;
@@ -220,8 +232,8 @@ html {
220
232
  --motion-slow: 440ms;
221
233
  --motion-ease: cubic-bezier(.22,1,.36,1);
222
234
  --motion-standard: cubic-bezier(.2,.8,.2,1);
223
- --muted: #aab6c5;
224
- --dim: #8794a6;
235
+ --muted: #b7c3cc;
236
+ --dim: #93a3af;
225
237
  --focus: #8ae8ff;
226
238
  }
227
239
 
@@ -260,7 +272,7 @@ html {
260
272
  height: 100vh;
261
273
  display: grid;
262
274
  grid-template-columns: var(--sidebar) minmax(0,1fr);
263
- background: radial-gradient(circle at 76% -12%,rgba(58,115,160,.16),transparent 35%),var(--bg);
275
+ background: radial-gradient(circle at 76% -12%,rgba(46,151,129,.12),transparent 34%),linear-gradient(180deg,#070b12,var(--bg));
264
276
  max-width: 100%;
265
277
  min-width: 0;
266
278
  }
@@ -268,10 +280,13 @@ html {
268
280
  .main-stage {
269
281
  height: 100vh;
270
282
  overflow: auto;
283
+ overflow-anchor: none;
284
+ overscroll-behavior: contain;
271
285
  scrollbar-color: #283244 transparent;
272
286
  padding: 28px clamp(24px,2.5vw,44px) 64px;
273
287
  max-width: 100%;
274
288
  min-width: 0;
289
+ background: linear-gradient(180deg,rgba(9,15,23,.28),rgba(6,10,16,.08));
275
290
  }
276
291
 
277
292
  .topbar>div {