bgrun 3.12.1 → 3.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -54,6 +54,40 @@
54
54
  --transition-spring: 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
55
55
  }
56
56
 
57
+ /* ─── Light Theme ─── */
58
+ [data-theme="light"] {
59
+ --bg-primary: #f8fafc;
60
+ --bg-secondary: #f1f5f9;
61
+ --bg-surface: #e2e8f0;
62
+ --bg-card: rgba(255, 255, 255, 0.9);
63
+ --bg-glass: rgba(0, 0, 0, 0.03);
64
+ --bg-hover: rgba(0, 0, 0, 0.05);
65
+ --bg-elevated: rgba(0, 0, 0, 0.04);
66
+ --bg-deeper: #e2e8f0;
67
+ --border-glass: rgba(0, 0, 0, 0.1);
68
+ --border-hover: rgba(0, 0, 0, 0.18);
69
+ --border-subtle: rgba(0, 0, 0, 0.06);
70
+ --border: rgba(0, 0, 0, 0.12);
71
+ --text-primary: #0f172a;
72
+ --text-secondary: #475569;
73
+ --text-muted: #64748b;
74
+ --text-dim: #94a3b8;
75
+ --text: #1e293b;
76
+ --shadow-glow: 0 0 80px rgba(99, 102, 241, 0.06);
77
+ --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.08), 0 4px 20px rgba(0, 0, 0, 0.04);
78
+ --shadow-elevated: 0 4px 24px rgba(0, 0, 0, 0.1), 0 1px 4px rgba(0, 0, 0, 0.06);
79
+ }
80
+
81
+ [data-theme="light"] body::before,
82
+ [data-theme="light"] body::after {
83
+ display: none;
84
+ }
85
+
86
+ [data-theme="light"] html {
87
+ background: var(--bg-primary);
88
+ color: var(--text-primary);
89
+ }
90
+
57
91
  * {
58
92
  margin: 0;
59
93
  padding: 0;
@@ -353,6 +387,50 @@ body::after {
353
387
  opacity: 1;
354
388
  }
355
389
 
390
+ .stat-clickable {
391
+ cursor: pointer;
392
+ }
393
+
394
+ .stat-clickable.stat-active {
395
+ box-shadow: inset 0 0 0 2px var(--accent-primary), var(--shadow-elevated);
396
+ transform: translateY(-2px);
397
+ }
398
+
399
+ .stat-filter-badge {
400
+ display: inline-flex;
401
+ align-items: center;
402
+ gap: 0.4rem;
403
+ padding: 0.3rem 0.55rem 0.3rem 0.7rem;
404
+ border-radius: 999px;
405
+ border: 1px solid rgba(99, 102, 241, 0.3);
406
+ background: rgba(99, 102, 241, 0.12);
407
+ color: #a5b4fc;
408
+ font-size: 0.72rem;
409
+ font-weight: 600;
410
+ white-space: nowrap;
411
+ animation: fadeIn 0.2s ease;
412
+ }
413
+
414
+ .stat-filter-badge-clear {
415
+ display: inline-flex;
416
+ align-items: center;
417
+ justify-content: center;
418
+ width: 1.2rem;
419
+ height: 1.2rem;
420
+ border-radius: 50%;
421
+ border: none;
422
+ background: rgba(255, 255, 255, 0.1);
423
+ color: inherit;
424
+ font-size: 0.6rem;
425
+ cursor: pointer;
426
+ line-height: 1;
427
+ }
428
+
429
+ .stat-filter-badge-clear:hover {
430
+ background: rgba(239, 68, 68, 0.3);
431
+ color: #fca5a5;
432
+ }
433
+
356
434
  .stat-card.running {
357
435
  border-left: 3px solid var(--success);
358
436
  }
@@ -463,6 +541,40 @@ body::after {
463
541
  color: var(--warning);
464
542
  }
465
543
 
544
+ .stat-card.uptime {
545
+ border-left: 3px solid var(--info);
546
+ }
547
+
548
+ .stat-card.uptime::before {
549
+ background: var(--info);
550
+ opacity: 0.08;
551
+ }
552
+
553
+ .stat-card.uptime:hover::before {
554
+ opacity: 0.12;
555
+ }
556
+
557
+ .stat-card.uptime .stat-value {
558
+ color: var(--info);
559
+ }
560
+
561
+ .stat-card.uptime-total {
562
+ border-left: 3px solid var(--accent-secondary);
563
+ }
564
+
565
+ .stat-card.uptime-total::before {
566
+ background: var(--accent-secondary);
567
+ opacity: 0.08;
568
+ }
569
+
570
+ .stat-card.uptime-total:hover::before {
571
+ opacity: 0.12;
572
+ }
573
+
574
+ .stat-card.uptime-total .stat-value {
575
+ color: var(--accent-secondary);
576
+ }
577
+
466
578
  /* ─── Guard Toggle (inline shield icon in process name) ─── */
467
579
  .guard-toggle {
468
580
  display: inline-flex;
@@ -542,6 +654,99 @@ body::after {
542
654
  border-color: var(--text-muted);
543
655
  }
544
656
 
657
+ .deploy-controls {
658
+ display: inline-flex;
659
+ align-items: center;
660
+ gap: 0.35rem;
661
+ }
662
+
663
+ .deploy-concurrency-wrap {
664
+ display: inline-flex;
665
+ align-items: center;
666
+ gap: 0.4rem;
667
+ padding: 0.35rem 0.55rem;
668
+ border: 1px solid var(--border);
669
+ border-radius: 8px;
670
+ background: var(--bg-secondary);
671
+ color: var(--text-secondary);
672
+ }
673
+
674
+ .deploy-concurrency-label {
675
+ font-size: 0.78rem;
676
+ color: var(--text-muted);
677
+ font-weight: 600;
678
+ }
679
+
680
+ .deploy-concurrency-select {
681
+ border: none;
682
+ background: transparent;
683
+ color: var(--text);
684
+ font-size: 0.82rem;
685
+ font-weight: 700;
686
+ cursor: pointer;
687
+ outline: none;
688
+ }
689
+
690
+ .deploy-concurrency-select:disabled {
691
+ opacity: 0.6;
692
+ cursor: wait;
693
+ }
694
+
695
+ #deploy-preset-reset-btn[disabled] {
696
+ opacity: 0.45;
697
+ cursor: not-allowed;
698
+ }
699
+
700
+ .deploy-preset-source {
701
+ display: inline-flex;
702
+ align-items: center;
703
+ justify-content: center;
704
+ min-width: 3.9rem;
705
+ padding: 0.22rem 0.5rem;
706
+ border-radius: 999px;
707
+ background: rgba(139, 148, 158, 0.16);
708
+ color: var(--text-muted);
709
+ font-size: 0.72rem;
710
+ font-weight: 700;
711
+ text-transform: uppercase;
712
+ letter-spacing: 0.03em;
713
+ }
714
+
715
+ .deploy-preset-source.is-preset {
716
+ background: rgba(34, 197, 94, 0.15);
717
+ color: #86efac;
718
+ }
719
+
720
+ .deploy-preset-scopes {
721
+ display: inline-flex;
722
+ align-items: center;
723
+ gap: 0.35rem;
724
+ flex-wrap: wrap;
725
+ }
726
+
727
+ .deploy-preset-scope {
728
+ display: inline-flex;
729
+ align-items: center;
730
+ padding: 0.18rem 0.45rem;
731
+ border-radius: 999px;
732
+ background: rgba(139, 148, 158, 0.14);
733
+ color: var(--text-muted);
734
+ font-size: 0.7rem;
735
+ font-weight: 700;
736
+ border: none;
737
+ cursor: pointer;
738
+ }
739
+
740
+ .deploy-preset-scope:hover {
741
+ color: var(--text);
742
+ background: rgba(139, 148, 158, 0.22);
743
+ }
744
+
745
+ .deploy-preset-scope.active {
746
+ background: rgba(34, 197, 94, 0.18);
747
+ color: #86efac;
748
+ }
749
+
545
750
  /* Guard action button styling */
546
751
  .action-btn.guard {
547
752
  color: var(--text-muted);
@@ -605,6 +810,7 @@ body::after {
605
810
  align-items: center;
606
811
  gap: 1rem;
607
812
  flex: 1;
813
+ flex-wrap: wrap;
608
814
  }
609
815
 
610
816
  .toolbar-right {
@@ -1472,6 +1678,61 @@ a.port-link:hover {
1472
1678
  color: var(--text-muted);
1473
1679
  }
1474
1680
 
1681
+ .port-input-wrap {
1682
+ display: flex;
1683
+ gap: 0.5rem;
1684
+ align-items: center;
1685
+ }
1686
+
1687
+ .port-input-wrap input {
1688
+ flex: 1;
1689
+ }
1690
+
1691
+ .port-input-wrap .btn {
1692
+ flex-shrink: 0;
1693
+ white-space: nowrap;
1694
+ }
1695
+
1696
+ .port-range-wrap {
1697
+ display: flex;
1698
+ align-items: center;
1699
+ gap: 0.4rem;
1700
+ margin-top: 0.45rem;
1701
+ }
1702
+
1703
+ .port-range-label {
1704
+ font-size: 0.72rem;
1705
+ color: var(--text-muted);
1706
+ font-weight: 600;
1707
+ white-space: nowrap;
1708
+ }
1709
+
1710
+ .port-range-input {
1711
+ width: 80px;
1712
+ padding: 0.3rem 0.5rem;
1713
+ border-radius: var(--radius-sm);
1714
+ border: 1px solid var(--border-glass);
1715
+ background: var(--bg-secondary);
1716
+ color: var(--text-primary);
1717
+ font-size: 0.78rem;
1718
+ font-family: var(--font-mono);
1719
+ }
1720
+
1721
+ .port-range-input:focus {
1722
+ border-color: var(--accent-primary);
1723
+ outline: none;
1724
+ }
1725
+
1726
+ .port-range-sep {
1727
+ color: var(--text-dim);
1728
+ font-size: 0.8rem;
1729
+ }
1730
+
1731
+ .port-conflict {
1732
+ border-color: var(--danger) !important;
1733
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;
1734
+ }
1735
+
1475
1736
  .modal-footer {
1476
1737
  padding: 1rem 1.5rem;
1477
1738
  border-top: 1px solid var(--border-glass);
@@ -2027,33 +2288,33 @@ a.port-link:hover {
2027
2288
  text-align: center;
2028
2289
  }
2029
2290
 
2030
- /* ─── Config Editor Panel ─── */
2031
- .drawer-config {
2032
- flex: 1;
2033
- display: flex;
2034
- flex-direction: column;
2035
- min-height: 0;
2036
- }
2037
-
2038
- #config-panel-toml {
2039
- flex: 1;
2040
- display: flex;
2041
- flex-direction: column;
2042
- min-height: 0;
2043
- }
2044
-
2045
- #config-panel-env {
2046
- flex: 1;
2047
- display: flex;
2048
- flex-direction: column;
2049
- min-height: 0;
2050
- }
2051
-
2052
- .config-toolbar {
2053
- display: flex;
2054
- align-items: center;
2055
- justify-content: space-between;
2056
- padding: 0.5rem 1rem;
2291
+ /* ─── Config Editor Panel ─── */
2292
+ .drawer-config {
2293
+ flex: 1;
2294
+ display: flex;
2295
+ flex-direction: column;
2296
+ min-height: 0;
2297
+ }
2298
+
2299
+ #config-panel-toml {
2300
+ flex: 1;
2301
+ display: flex;
2302
+ flex-direction: column;
2303
+ min-height: 0;
2304
+ }
2305
+
2306
+ #config-panel-env {
2307
+ flex: 1;
2308
+ display: flex;
2309
+ flex-direction: column;
2310
+ min-height: 0;
2311
+ }
2312
+
2313
+ .config-toolbar {
2314
+ display: flex;
2315
+ align-items: center;
2316
+ justify-content: space-between;
2317
+ padding: 0.5rem 1rem;
2057
2318
  border-bottom: 1px solid var(--border-glass);
2058
2319
  background: rgba(0, 0, 0, 0.12);
2059
2320
  flex-shrink: 0;
@@ -2071,21 +2332,21 @@ a.port-link:hover {
2071
2332
  min-width: 0;
2072
2333
  }
2073
2334
 
2074
- .config-editor {
2075
- flex: 1;
2076
- width: 100%;
2077
- resize: vertical;
2078
- background: rgba(0, 0, 0, 0.25);
2079
- color: var(--text-primary);
2080
- font-family: var(--font-mono);
2081
- font-size: 0.78rem;
2082
- line-height: 1.7;
2083
- padding: 1rem 1.5rem;
2084
- border: none;
2085
- outline: none;
2086
- min-height: 220px;
2087
- tab-size: 4;
2088
- }
2335
+ .config-editor {
2336
+ flex: 1;
2337
+ width: 100%;
2338
+ resize: vertical;
2339
+ background: rgba(0, 0, 0, 0.25);
2340
+ color: var(--text-primary);
2341
+ font-family: var(--font-mono);
2342
+ font-size: 0.78rem;
2343
+ line-height: 1.7;
2344
+ padding: 1rem 1.5rem;
2345
+ border: none;
2346
+ outline: none;
2347
+ min-height: 220px;
2348
+ tab-size: 4;
2349
+ }
2089
2350
 
2090
2351
  .config-editor:focus {
2091
2352
  background: rgba(0, 0, 0, 0.3);
@@ -2331,7 +2592,7 @@ a.port-link:hover {
2331
2592
 
2332
2593
  @media (max-width: 768px) {
2333
2594
  .container {
2334
- padding: 1rem;
2595
+ padding: 0.75rem;
2335
2596
  }
2336
2597
 
2337
2598
  .header {
@@ -2341,22 +2602,58 @@ a.port-link:hover {
2341
2602
  }
2342
2603
 
2343
2604
  .stats-grid {
2344
- grid-template-columns: repeat(3, 1fr);
2605
+ grid-template-columns: repeat(2, 1fr);
2606
+ gap: 0.6rem;
2607
+ margin-bottom: 1rem;
2608
+ }
2609
+
2610
+ .stat-card {
2611
+ padding: 0.85rem 1rem;
2612
+ border-radius: var(--radius-md);
2613
+ }
2614
+
2615
+ .stat-label {
2616
+ font-size: 0.62rem;
2617
+ }
2618
+
2619
+ .stat-value {
2620
+ font-size: 1.2rem;
2345
2621
  }
2346
2622
 
2347
2623
  .toolbar {
2348
2624
  flex-direction: column;
2625
+ gap: 0.6rem;
2349
2626
  }
2350
2627
 
2351
2628
  .toolbar-left {
2352
2629
  flex-direction: column;
2353
2630
  width: 100%;
2631
+ gap: 0.5rem;
2632
+ }
2633
+
2634
+ .toolbar-right {
2635
+ flex-wrap: wrap;
2636
+ gap: 0.4rem;
2637
+ justify-content: center;
2638
+ }
2639
+
2640
+ .toolbar-brand h2 {
2641
+ font-size: 1rem;
2354
2642
  }
2355
2643
 
2356
2644
  .search-wrapper {
2357
2645
  max-width: 100%;
2358
2646
  }
2359
2647
 
2648
+ .deploy-controls {
2649
+ flex-wrap: wrap;
2650
+ }
2651
+
2652
+ .guard-sentinel-pill {
2653
+ font-size: 0.62rem;
2654
+ padding: 3px 8px;
2655
+ }
2656
+
2360
2657
  /* Hide table, show cards */
2361
2658
  .table-container {
2362
2659
  display: none;
@@ -2373,32 +2670,87 @@ a.port-link:hover {
2373
2670
  max-width: 100%;
2374
2671
  }
2375
2672
 
2376
- /* ─── Process Card ─── */
2377
- .process-card {
2378
- background: var(--bg-card);
2379
- border: 1px solid var(--border-glass);
2380
- border-radius: var(--radius-lg);
2381
- padding: 1rem;
2382
- cursor: pointer;
2383
- transition: all 0.2s ease;
2673
+ /* Modals full-width on mobile */
2674
+ .modal {
2675
+ width: 95vw;
2676
+ max-width: 95vw;
2677
+ max-height: 90vh;
2384
2678
  }
2385
2679
 
2386
- .process-card:hover {
2387
- border-color: var(--accent-primary);
2388
- box-shadow: 0 0 20px rgba(168, 85, 247, 0.15);
2389
- transform: translateY(-1px);
2680
+ .modal-wide {
2681
+ width: 95vw;
2682
+ max-width: 95vw;
2390
2683
  }
2391
2684
 
2392
- .card-header {
2393
- display: flex;
2394
- align-items: center;
2395
- justify-content: space-between;
2396
- margin-bottom: 0.75rem;
2685
+ /* History filters stack vertically */
2686
+ .history-filters {
2687
+ flex-direction: column;
2688
+ gap: 0.5rem;
2397
2689
  }
2398
2690
 
2399
- .card-header .process-name {
2400
- font-size: 0.95rem;
2401
- font-weight: 600;
2691
+ .history-search {
2692
+ min-width: unset;
2693
+ }
2694
+
2695
+ .history-hints-bar {
2696
+ flex-direction: column;
2697
+ gap: 0.4rem;
2698
+ align-items: flex-start;
2699
+ }
2700
+
2701
+ .history-hints-bar-left {
2702
+ flex-direction: column;
2703
+ gap: 0.4rem;
2704
+ align-items: flex-start;
2705
+ }
2706
+
2707
+ .history-keyboard-hints {
2708
+ gap: 0.35rem;
2709
+ }
2710
+
2711
+ /* Guard activity compact */
2712
+ .guard-activity {
2713
+ padding: 8px 10px;
2714
+ }
2715
+
2716
+ /* Shortcuts overlay compact */
2717
+ .shortcuts-panel {
2718
+ min-width: unset;
2719
+ max-width: 95vw;
2720
+ padding: 1rem;
2721
+ }
2722
+
2723
+ .shortcuts-grid {
2724
+ grid-template-columns: 1fr;
2725
+ gap: 1rem;
2726
+ }
2727
+
2728
+ /* ─── Process Card ─── */
2729
+ .process-card {
2730
+ background: var(--bg-card);
2731
+ border: 1px solid var(--border-glass);
2732
+ border-radius: var(--radius-lg);
2733
+ padding: 1rem;
2734
+ cursor: pointer;
2735
+ transition: all 0.2s ease;
2736
+ }
2737
+
2738
+ .process-card:hover {
2739
+ border-color: var(--accent-primary);
2740
+ box-shadow: 0 0 20px rgba(168, 85, 247, 0.15);
2741
+ transform: translateY(-1px);
2742
+ }
2743
+
2744
+ .card-header {
2745
+ display: flex;
2746
+ align-items: center;
2747
+ justify-content: space-between;
2748
+ margin-bottom: 0.75rem;
2749
+ }
2750
+
2751
+ .card-header .process-name {
2752
+ font-size: 0.95rem;
2753
+ font-weight: 600;
2402
2754
  }
2403
2755
 
2404
2756
  .card-details {
@@ -2883,83 +3235,936 @@ tr.keyboard-focus td:first-child .process-name span {
2883
3235
  cursor: pointer;
2884
3236
  }
2885
3237
 
2886
- .history-list {
2887
- max-height: 400px;
2888
- overflow-y: auto;
3238
+ .history-search {
3239
+ min-width: 220px;
3240
+ cursor: text;
2889
3241
  }
2890
3242
 
2891
- .history-empty {
2892
- text-align: center;
3243
+ #history-clear-filters-btn[disabled] {
3244
+ opacity: 0.5;
3245
+ cursor: not-allowed;
3246
+ }
3247
+
3248
+ .history-density-wrap {
3249
+ display: inline-flex;
3250
+ align-items: center;
3251
+ gap: 0.45rem;
3252
+ padding: 0 0.15rem;
2893
3253
  color: var(--text-muted);
2894
- padding: 2rem;
2895
- font-size: 0.9rem;
3254
+ font-size: 0.72rem;
3255
+ font-weight: 600;
2896
3256
  }
2897
3257
 
2898
- .history-item {
3258
+ .history-density-label {
3259
+ white-space: nowrap;
3260
+ }
3261
+
3262
+ .history-density-select {
3263
+ min-width: 88px;
3264
+ }
3265
+
3266
+ .history-shortcuts-toggle {
3267
+ display: inline-flex;
3268
+ align-items: center;
3269
+ gap: 0.45rem;
3270
+ color: var(--text-muted);
3271
+ font-size: 0.72rem;
3272
+ font-weight: 600;
3273
+ user-select: none;
3274
+ cursor: pointer;
3275
+ }
3276
+
3277
+ .history-shortcuts-toggle input {
3278
+ margin: 0;
3279
+ accent-color: var(--accent-primary);
3280
+ }
3281
+
3282
+ .history-hints-bar {
2899
3283
  display: flex;
2900
3284
  align-items: center;
2901
- padding: 0.6rem 0.75rem;
2902
- border-radius: var(--radius-sm);
2903
- background: var(--bg-secondary);
2904
- margin-bottom: 0.4rem;
3285
+ justify-content: space-between;
2905
3286
  gap: 0.75rem;
3287
+ margin: 0.35rem 0 0.4rem;
2906
3288
  }
2907
3289
 
2908
- .history-item-time {
2909
- font-size: 0.75rem;
3290
+ .history-hints-actions {
3291
+ display: inline-flex;
3292
+ align-items: center;
3293
+ gap: 0.5rem;
3294
+ flex-wrap: wrap;
3295
+ justify-content: flex-end;
3296
+ }
3297
+
3298
+ .history-hint-groups-menu {
3299
+ position: relative;
3300
+ }
3301
+
3302
+ .history-hint-groups-panel {
3303
+ position: absolute;
3304
+ top: calc(100% + 0.35rem);
3305
+ right: 0;
3306
+ z-index: 10;
3307
+ display: flex;
3308
+ flex-direction: column;
3309
+ gap: 0.35rem;
3310
+ min-width: 150px;
3311
+ padding: 0.6rem;
3312
+ border-radius: 0.7rem;
3313
+ border: 1px solid var(--border-glass);
3314
+ background: rgba(15, 23, 42, 0.96);
3315
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
3316
+ }
3317
+
3318
+ .history-hint-presets {
3319
+ display: flex;
3320
+ flex-wrap: wrap;
3321
+ gap: 0.35rem;
3322
+ margin-bottom: 0.2rem;
3323
+ }
3324
+
3325
+ .history-hint-preset {
3326
+ border: 1px solid rgba(139, 148, 158, 0.18);
3327
+ background: rgba(139, 148, 158, 0.1);
2910
3328
  color: var(--text-muted);
2911
- font-family: var(--font-mono);
2912
- flex-shrink: 0;
2913
- width: 85px;
3329
+ border-radius: 999px;
3330
+ padding: 0.16rem 0.48rem;
3331
+ font-size: 0.66rem;
3332
+ font-weight: 700;
3333
+ cursor: pointer;
2914
3334
  }
2915
3335
 
2916
- .history-item-process {
3336
+ .history-hint-preset:hover,
3337
+ .history-hint-preset.active {
3338
+ background: rgba(96, 165, 250, 0.18);
3339
+ color: #93c5fd;
3340
+ }
3341
+
3342
+ .history-hint-preset-state {
3343
+ display: inline-flex;
3344
+ align-items: center;
3345
+ padding: 0.16rem 0.48rem;
3346
+ border-radius: 999px;
3347
+ border: 1px solid rgba(139, 148, 158, 0.14);
3348
+ background: rgba(139, 148, 158, 0.08);
3349
+ color: var(--text-dim);
3350
+ font-size: 0.66rem;
3351
+ font-weight: 700;
3352
+ }
3353
+
3354
+ .history-hint-preset-state.custom {
3355
+ color: #fbbf24;
3356
+ border-color: rgba(251, 191, 36, 0.22);
3357
+ background: rgba(251, 191, 36, 0.12);
3358
+ }
3359
+
3360
+ .history-hint-group-option {
3361
+ display: inline-flex;
3362
+ align-items: center;
3363
+ gap: 0.45rem;
3364
+ color: var(--text-secondary);
3365
+ font-size: 0.72rem;
3366
+ user-select: none;
3367
+ white-space: nowrap;
3368
+ }
3369
+
3370
+ .history-hint-group-option input {
3371
+ margin: 0;
3372
+ accent-color: var(--accent-primary);
3373
+ }
3374
+
3375
+ .history-hint-density-wrap {
3376
+ display: inline-flex;
3377
+ align-items: center;
3378
+ gap: 0.4rem;
3379
+ color: var(--text-muted);
3380
+ font-size: 0.72rem;
2917
3381
  font-weight: 600;
2918
- color: var(--text-primary);
2919
- flex: 1;
3382
+ }
3383
+
3384
+ .history-hint-density-select {
3385
+ min-width: 84px;
3386
+ }
3387
+
3388
+ .history-hints-bar-left {
3389
+ display: flex;
3390
+ align-items: center;
3391
+ gap: 0.6rem;
3392
+ min-width: 0;
3393
+ flex-wrap: wrap;
3394
+ }
3395
+
3396
+ .history-auto-open-toggle {
3397
+ display: inline-flex;
3398
+ align-items: center;
3399
+ gap: 0.4rem;
3400
+ color: var(--text-muted);
3401
+ font-size: 0.72rem;
3402
+ font-weight: 600;
3403
+ user-select: none;
3404
+ cursor: pointer;
3405
+ }
3406
+
3407
+ .history-auto-open-toggle input {
3408
+ margin: 0;
3409
+ accent-color: var(--accent-primary);
3410
+ }
3411
+
3412
+ .history-hints-title {
3413
+ font-size: 0.72rem;
3414
+ font-weight: 700;
3415
+ color: var(--text-muted);
3416
+ text-transform: uppercase;
3417
+ letter-spacing: 0.04em;
3418
+ }
3419
+
3420
+ .history-focus-controls {
3421
+ display: inline-flex;
3422
+ align-items: center;
3423
+ gap: 0.35rem;
2920
3424
  min-width: 0;
3425
+ max-width: 100%;
3426
+ }
3427
+
3428
+ .history-focus-jump {
3429
+ width: 1.7rem;
3430
+ height: 1.7rem;
3431
+ border-radius: 999px;
3432
+ border: 1px solid rgba(139, 148, 158, 0.18);
3433
+ background: rgba(139, 148, 158, 0.1);
3434
+ color: var(--text-muted);
3435
+ font-size: 0.8rem;
3436
+ font-weight: 700;
3437
+ cursor: pointer;
3438
+ flex-shrink: 0;
3439
+ }
3440
+
3441
+ .history-focus-jump:hover:not(:disabled) {
3442
+ background: rgba(96, 165, 250, 0.18);
3443
+ color: #93c5fd;
3444
+ }
3445
+
3446
+ .history-focus-jump:disabled {
3447
+ opacity: 0.45;
3448
+ cursor: not-allowed;
3449
+ }
3450
+
3451
+ .history-focus-status {
3452
+ display: inline-flex;
3453
+ align-items: center;
3454
+ min-height: 1.5rem;
3455
+ padding: 0.2rem 0.55rem;
3456
+ border-radius: 999px;
3457
+ border: 1px solid rgba(139, 148, 158, 0.14);
3458
+ background: rgba(139, 148, 158, 0.08);
3459
+ color: var(--text-dim);
3460
+ font-size: 0.68rem;
3461
+ font-family: var(--font-mono);
2921
3462
  white-space: nowrap;
3463
+ max-width: 100%;
2922
3464
  overflow: hidden;
2923
3465
  text-overflow: ellipsis;
2924
3466
  }
2925
3467
 
2926
- .history-item-event {
2927
- font-size: 0.75rem;
2928
- padding: 0.2rem 0.5rem;
3468
+ .history-focus-status.active {
3469
+ color: #c4b5fd;
3470
+ border-color: rgba(168, 85, 247, 0.24);
3471
+ background: rgba(168, 85, 247, 0.12);
3472
+ }
3473
+
3474
+ .history-hints-toggle {
3475
+ border: 1px solid rgba(139, 148, 158, 0.18);
3476
+ background: rgba(139, 148, 158, 0.1);
3477
+ color: var(--text-muted);
2929
3478
  border-radius: 999px;
2930
- text-transform: uppercase;
2931
- font-weight: 600;
2932
- flex-shrink: 0;
3479
+ padding: 0.18rem 0.55rem;
3480
+ font-size: 0.68rem;
3481
+ font-weight: 700;
3482
+ cursor: pointer;
2933
3483
  }
2934
3484
 
2935
- .history-item-event.start {
2936
- background: rgba(34, 197, 94, 0.15);
2937
- color: #22c55e;
3485
+ .history-hints-toggle:hover {
3486
+ background: rgba(96, 165, 250, 0.18);
3487
+ color: #93c5fd;
2938
3488
  }
2939
3489
 
2940
- .history-item-event.stop {
2941
- background: rgba(239, 68, 68, 0.15);
2942
- color: #ef4444;
3490
+ .history-keyboard-hints {
3491
+ display: flex;
3492
+ flex-wrap: wrap;
3493
+ gap: 0.5rem;
3494
+ margin: 0.35rem 0 0.75rem;
2943
3495
  }
2944
3496
 
2945
- .history-item-event.restart {
2946
- background: rgba(251, 191, 36, 0.15);
2947
- color: #fbbf24;
3497
+ .history-keyboard-hints.compact {
3498
+ gap: 0.35rem;
2948
3499
  }
2949
3500
 
2950
- .history-item-event.guard_on {
2951
- background: rgba(59, 130, 246, 0.15);
2952
- color: #3b82f6;
3501
+ .history-keyboard-hints.compact .history-keyboard-hint {
3502
+ padding: 0.2rem 0.38rem;
3503
+ font-size: 0.66rem;
2953
3504
  }
2954
3505
 
2955
- .history-item-event.guard_off {
2956
- background: rgba(139, 148, 158, 0.15);
2957
- color: #8b949e;
3506
+ .history-keyboard-hints.compact .history-keyboard-hint span {
3507
+ display: none;
2958
3508
  }
2959
3509
 
2960
- .history-item-pid {
2961
- font-size: 0.7rem;
3510
+ .history-keyboard-hints.compact .history-keyboard-hint kbd {
3511
+ min-width: 1.15rem;
3512
+ height: 1.15rem;
3513
+ font-size: 0.64rem;
3514
+ }
3515
+
3516
+ .history-keyboard-hint {
3517
+ display: inline-flex;
3518
+ align-items: center;
3519
+ gap: 0.35rem;
3520
+ padding: 0.28rem 0.5rem;
3521
+ border-radius: 999px;
3522
+ border: 1px solid rgba(139, 148, 158, 0.14);
3523
+ background: rgba(139, 148, 158, 0.08);
2962
3524
  color: var(--text-muted);
3525
+ font-size: 0.7rem;
3526
+ white-space: nowrap;
3527
+ }
3528
+
3529
+ .history-keyboard-hint kbd {
3530
+ display: inline-flex;
3531
+ align-items: center;
3532
+ justify-content: center;
3533
+ min-width: 1.3rem;
3534
+ height: 1.3rem;
3535
+ padding: 0 0.28rem;
3536
+ border-radius: 0.38rem;
3537
+ border: 1px solid rgba(139, 148, 158, 0.18);
3538
+ background: rgba(15, 23, 42, 0.75);
3539
+ color: var(--text-secondary);
3540
+ font-size: 0.68rem;
2963
3541
  font-family: var(--font-mono);
2964
- flex-shrink: 0;
3542
+ box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.04);
3543
+ }
3544
+
3545
+ .history-list {
3546
+ max-height: 400px;
3547
+ overflow-y: auto;
3548
+ }
3549
+
3550
+ .history-empty {
3551
+ text-align: center;
3552
+ color: var(--text-muted);
3553
+ padding: 2rem;
3554
+ font-size: 0.9rem;
3555
+ }
3556
+
3557
+ .history-item {
3558
+ display: flex;
3559
+ align-items: center;
3560
+ flex-wrap: wrap;
3561
+ padding: 0.6rem 0.75rem;
3562
+ border-radius: var(--radius-sm);
3563
+ background: var(--bg-secondary);
3564
+ margin-bottom: 0.4rem;
3565
+ gap: 0.75rem;
3566
+ transition: box-shadow 0.2s ease, border-color 0.2s ease, background 0.2s ease;
3567
+ }
3568
+
3569
+ .history-item.jump-highlight {
3570
+ background: rgba(96, 165, 250, 0.12);
3571
+ box-shadow: inset 0 0 0 1px rgba(96, 165, 250, 0.35);
3572
+ }
3573
+
3574
+ .history-item.keyboard-focused {
3575
+ outline: none;
3576
+ box-shadow: inset 0 0 0 1px rgba(168, 85, 247, 0.45), 0 0 0 1px rgba(168, 85, 247, 0.12);
3577
+ background: rgba(168, 85, 247, 0.08);
3578
+ }
3579
+
3580
+ .history-list.history-density-compact .history-item {
3581
+ padding: 0.45rem 0.6rem;
3582
+ gap: 0.55rem;
3583
+ margin-bottom: 0.28rem;
3584
+ }
3585
+
3586
+ .history-list.history-density-compact .history-item-main {
3587
+ gap: 0.3rem;
3588
+ }
3589
+
3590
+ .history-list.history-density-compact .history-item-meta {
3591
+ gap: 0.4rem;
3592
+ }
3593
+
3594
+ .history-list.history-density-compact .history-item-time,
3595
+ .history-list.history-density-compact .history-item-event,
3596
+ .history-list.history-density-compact .history-item-pid,
3597
+ .history-list.history-density-compact .history-item-details-summary,
3598
+ .history-list.history-density-compact .history-item-detail {
3599
+ font-size: 0.68rem;
3600
+ }
3601
+
3602
+ .history-list.history-density-compact .history-item-actions {
3603
+ min-width: 200px;
3604
+ padding: 0.4rem;
3605
+ }
3606
+
3607
+ .history-list.history-density-compact .history-item-detail {
3608
+ padding: 0.14rem 0.28rem 0.14rem 0.38rem;
3609
+ }
3610
+
3611
+ .history-item-time {
3612
+ font-size: 0.75rem;
3613
+ color: var(--text-muted);
3614
+ font-family: var(--font-mono);
3615
+ flex-shrink: 0;
3616
+ width: 85px;
3617
+ }
3618
+
3619
+ .history-item-main {
3620
+ display: flex;
3621
+ flex-direction: column;
3622
+ gap: 0.45rem;
3623
+ flex: 1;
3624
+ min-width: 0;
3625
+ }
3626
+
3627
+ .history-item-meta {
3628
+ display: flex;
3629
+ align-items: center;
3630
+ flex-wrap: wrap;
3631
+ gap: 0.55rem;
3632
+ min-width: 0;
3633
+ }
3634
+
3635
+ .history-item-process {
3636
+ font-weight: 600;
3637
+ color: var(--text-primary);
3638
+ min-width: 0;
3639
+ white-space: nowrap;
3640
+ overflow: hidden;
3641
+ text-overflow: ellipsis;
3642
+ }
3643
+
3644
+ .history-static-label {
3645
+ cursor: default;
3646
+ }
3647
+
3648
+ .history-item-actions-menu {
3649
+ position: relative;
3650
+ margin-left: auto;
3651
+ flex-shrink: 0;
3652
+ }
3653
+
3654
+ .history-item-actions {
3655
+ position: absolute;
3656
+ top: calc(100% + 0.35rem);
3657
+ right: 0;
3658
+ z-index: 10;
3659
+ display: flex;
3660
+ align-items: center;
3661
+ flex-wrap: wrap;
3662
+ justify-content: flex-end;
3663
+ gap: 0.35rem;
3664
+ padding: 0.5rem;
3665
+ border-radius: 0.7rem;
3666
+ border: 1px solid var(--border-glass);
3667
+ background: rgba(15, 23, 42, 0.96);
3668
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
3669
+ min-width: 220px;
3670
+ }
3671
+
3672
+ .history-filter-shortcut {
3673
+ border: none;
3674
+ background: transparent;
3675
+ padding: 0;
3676
+ font: inherit;
3677
+ cursor: pointer;
3678
+ text-align: left;
3679
+ }
3680
+
3681
+ .history-filter-shortcut:hover {
3682
+ opacity: 0.85;
3683
+ text-decoration: underline;
3684
+ }
3685
+
3686
+ .history-item-actions-toggle {
3687
+ list-style: none;
3688
+ display: inline-flex;
3689
+ align-items: center;
3690
+ border: 1px solid rgba(139, 148, 158, 0.18);
3691
+ background: rgba(139, 148, 158, 0.1);
3692
+ color: var(--text-muted);
3693
+ border-radius: 999px;
3694
+ padding: 0.12rem 0.5rem;
3695
+ font-size: 0.66rem;
3696
+ font-weight: 700;
3697
+ cursor: pointer;
3698
+ user-select: none;
3699
+ }
3700
+
3701
+ .history-item-actions-toggle::-webkit-details-marker {
3702
+ display: none;
3703
+ }
3704
+
3705
+ .history-item-actions-toggle:hover,
3706
+ .history-item-actions-menu[open] .history-item-actions-toggle {
3707
+ background: rgba(96, 165, 250, 0.18);
3708
+ color: #93c5fd;
3709
+ }
3710
+
3711
+ .history-action-btn,
3712
+ .history-item-copy {
3713
+ border: 1px solid rgba(139, 148, 158, 0.18);
3714
+ background: rgba(139, 148, 158, 0.1);
3715
+ color: var(--text-muted);
3716
+ border-radius: 999px;
3717
+ padding: 0.12rem 0.42rem;
3718
+ font-size: 0.66rem;
3719
+ font-weight: 700;
3720
+ cursor: pointer;
3721
+ flex-shrink: 0;
3722
+ }
3723
+
3724
+ .history-action-btn:hover,
3725
+ .history-item-copy:hover {
3726
+ background: rgba(96, 165, 250, 0.18);
3727
+ color: #93c5fd;
3728
+ }
3729
+
3730
+ .history-item-event {
3731
+ font-size: 0.75rem;
3732
+ padding: 0.2rem 0.5rem;
3733
+ border-radius: 999px;
3734
+ text-transform: uppercase;
3735
+ font-weight: 600;
3736
+ flex-shrink: 0;
3737
+ }
3738
+
3739
+ .history-item-event.start {
3740
+ background: rgba(34, 197, 94, 0.15);
3741
+ color: #22c55e;
3742
+ }
3743
+
3744
+ .history-item-event.stop {
3745
+ background: rgba(239, 68, 68, 0.15);
3746
+ color: #ef4444;
3747
+ }
3748
+
3749
+ .history-item-event.restart {
3750
+ background: rgba(251, 191, 36, 0.15);
3751
+ color: #fbbf24;
3752
+ }
3753
+
3754
+ .history-item-event.guard_on {
3755
+ background: rgba(59, 130, 246, 0.15);
3756
+ color: #3b82f6;
3757
+ }
3758
+
3759
+ .history-item-event.guard_off {
3760
+ background: rgba(139, 148, 158, 0.15);
3761
+ color: #8b949e;
3762
+ }
3763
+
3764
+ .history-item-event.deploy {
3765
+ background: rgba(168, 85, 247, 0.15);
3766
+ color: #a855f7;
3767
+ }
3768
+
3769
+ .history-item-pid {
3770
+ font-size: 0.7rem;
3771
+ color: var(--text-muted);
3772
+ font-family: var(--font-mono);
3773
+ flex-shrink: 0;
3774
+ }
3775
+
3776
+ .history-item-details-wrap {
3777
+ width: 100%;
3778
+ }
3779
+
3780
+ .history-item-details-summary {
3781
+ display: inline-flex;
3782
+ align-items: center;
3783
+ gap: 0.45rem;
3784
+ cursor: pointer;
3785
+ color: var(--text-muted);
3786
+ font-size: 0.78rem;
3787
+ user-select: none;
3788
+ list-style: none;
3789
+ }
3790
+
3791
+ .history-item-details-summary::-webkit-details-marker {
3792
+ display: none;
3793
+ }
3794
+
3795
+ .history-item-details-summary::before {
3796
+ content: '▸';
3797
+ font-size: 0.8rem;
3798
+ transition: transform 0.15s ease;
3799
+ }
3800
+
3801
+ .history-item-details-wrap[open] .history-item-details-summary::before {
3802
+ transform: rotate(90deg);
3803
+ }
3804
+
3805
+ .history-item-details-count {
3806
+ display: inline-flex;
3807
+ align-items: center;
3808
+ justify-content: center;
3809
+ min-width: 1.2rem;
3810
+ height: 1.2rem;
3811
+ padding: 0 0.3rem;
3812
+ border-radius: 999px;
3813
+ background: rgba(139, 148, 158, 0.18);
3814
+ color: var(--text-secondary);
3815
+ font-size: 0.7rem;
3816
+ font-weight: 700;
3817
+ }
3818
+
3819
+ .history-item-details {
3820
+ display: flex;
3821
+ flex-wrap: wrap;
3822
+ gap: 0.4rem;
3823
+ width: 100%;
3824
+ margin-top: 0.45rem;
3825
+ }
3826
+
3827
+ .history-item-detail {
3828
+ display: inline-flex;
3829
+ align-items: center;
3830
+ gap: 0.35rem;
3831
+ font-size: 0.72rem;
3832
+ color: var(--text-muted);
3833
+ font-family: var(--font-mono);
3834
+ padding: 0.18rem 0.3rem 0.18rem 0.45rem;
3835
+ border-radius: 999px;
3836
+ background: rgba(139, 148, 158, 0.12);
3837
+ border: 1px solid rgba(139, 148, 158, 0.18);
3838
+ }
3839
+
3840
+ .history-item-detail-text {
3841
+ min-width: 0;
3842
+ }
3843
+
3844
+ .history-item-filter-chip {
3845
+ border: none;
3846
+ background: transparent;
3847
+ color: inherit;
3848
+ font: inherit;
3849
+ padding: 0;
3850
+ cursor: pointer;
3851
+ text-align: left;
3852
+ }
3853
+
3854
+ .history-item-filter-chip:hover {
3855
+ color: #93c5fd;
3856
+ }
3857
+
3858
+
3859
+ /* Deploy Results Modal */
3860
+ .deploy-results-summary {
3861
+ display: flex;
3862
+ flex-wrap: wrap;
3863
+ gap: 0.75rem;
3864
+ margin-bottom: 1rem;
3865
+ padding: 0.8rem 0.9rem;
3866
+ border: 1px solid var(--border);
3867
+ border-radius: 10px;
3868
+ background: var(--bg-secondary);
3869
+ color: var(--text-secondary);
3870
+ font-size: 0.9rem;
3871
+ }
3872
+
3873
+ .deploy-results-list {
3874
+ max-height: 420px;
3875
+ overflow-y: auto;
3876
+ display: flex;
3877
+ flex-direction: column;
3878
+ gap: 0.75rem;
3879
+ }
3880
+
3881
+ .deploy-result-item {
3882
+ border: 1px solid var(--border);
3883
+ border-radius: 10px;
3884
+ background: var(--bg-secondary);
3885
+ padding: 0.85rem 0.95rem;
3886
+ }
3887
+
3888
+ .deploy-result-item.ok {
3889
+ border-color: rgba(34, 197, 94, 0.35);
3890
+ }
3891
+
3892
+ .deploy-result-item.skipped {
3893
+ border-color: rgba(245, 158, 11, 0.35);
3894
+ }
3895
+
3896
+ .deploy-result-item.failed {
3897
+ border-color: rgba(239, 68, 68, 0.35);
3898
+ }
3899
+
3900
+ .deploy-result-item.running {
3901
+ border-color: rgba(59, 130, 246, 0.35);
3902
+ }
3903
+
3904
+ .deploy-result-item.pending {
3905
+ border-color: rgba(139, 148, 158, 0.35);
3906
+ }
3907
+
3908
+ .deploy-result-head {
3909
+ display: flex;
3910
+ align-items: center;
3911
+ justify-content: space-between;
3912
+ gap: 0.75rem;
3913
+ margin-bottom: 0.5rem;
3914
+ }
3915
+
3916
+ .deploy-result-head-right {
3917
+ display: flex;
3918
+ align-items: center;
3919
+ gap: 0.6rem;
3920
+ }
3921
+
3922
+ .deploy-result-name {
3923
+ font-weight: 700;
3924
+ color: var(--text-primary);
3925
+ }
3926
+
3927
+ .deploy-result-status {
3928
+ font-size: 0.75rem;
3929
+ font-weight: 700;
3930
+ padding: 0.22rem 0.55rem;
3931
+ border-radius: 999px;
3932
+ text-transform: uppercase;
3933
+ }
3934
+
3935
+ .deploy-result-status.ok {
3936
+ background: rgba(34, 197, 94, 0.15);
3937
+ color: #22c55e;
3938
+ }
3939
+
3940
+ .deploy-result-status.skipped {
3941
+ background: rgba(245, 158, 11, 0.15);
3942
+ color: #f59e0b;
3943
+ }
3944
+
3945
+ .deploy-result-status.failed {
3946
+ background: rgba(239, 68, 68, 0.15);
3947
+ color: #ef4444;
3948
+ }
3949
+
3950
+ .deploy-result-status.running {
3951
+ background: rgba(59, 130, 246, 0.15);
3952
+ color: #3b82f6;
3953
+ }
3954
+
3955
+ .deploy-result-status.pending {
3956
+ background: rgba(139, 148, 158, 0.15);
3957
+ color: #8b949e;
3958
+ }
3959
+
3960
+ .deploy-result-meta {
3961
+ display: flex;
3962
+ flex-wrap: wrap;
3963
+ gap: 0.5rem 1rem;
3964
+ margin-bottom: 0.55rem;
3965
+ color: var(--text-muted);
3966
+ font-size: 0.82rem;
3967
+ }
3968
+
3969
+ .deploy-result-reason {
3970
+ color: var(--text-secondary);
3971
+ font-size: 0.9rem;
3972
+ margin-bottom: 0.5rem;
3973
+ }
3974
+
3975
+ .deploy-result-details summary {
3976
+ cursor: pointer;
3977
+ color: var(--text-accent);
3978
+ font-size: 0.85rem;
3979
+ margin-bottom: 0.45rem;
3980
+ }
3981
+
3982
+ .deploy-result-details pre {
3983
+ margin: 0;
3984
+ padding: 0.75rem;
3985
+ white-space: pre-wrap;
3986
+ word-break: break-word;
3987
+ border-radius: 8px;
3988
+ background: rgba(0, 0, 0, 0.22);
3989
+ color: var(--text-secondary);
3990
+ font-size: 0.8rem;
3991
+ font-family: var(--font-mono);
3992
+ }
3993
+
3994
+ .deploy-history-btn,
3995
+ .deploy-retry-btn {
3996
+ min-width: 78px;
3997
+ }
3998
+
3999
+ .deploy-retry-btn[disabled] {
4000
+ opacity: 0.6;
4001
+ cursor: wait;
4002
+ }
4003
+
4004
+ /* ─── Dependencies Graph ─── */
4005
+
4006
+ .deps-controls {
4007
+ display: flex;
4008
+ align-items: center;
4009
+ gap: 0.75rem;
4010
+ margin-bottom: 1.25rem;
4011
+ flex-wrap: wrap;
4012
+ }
4013
+
4014
+ .deps-arrow {
4015
+ color: var(--text-secondary);
4016
+ font-size: 0.85rem;
4017
+ white-space: nowrap;
4018
+ }
4019
+
4020
+ .deps-graph-container {
4021
+ background: rgba(0, 0, 0, 0.15);
4022
+ border-radius: 12px;
4023
+ border: 1px solid var(--border);
4024
+ margin-bottom: 1.25rem;
4025
+ overflow: hidden;
4026
+ min-height: 300px;
4027
+ position: relative;
4028
+ }
4029
+
4030
+ .deps-graph-container svg {
4031
+ display: block;
4032
+ }
4033
+
4034
+ .deps-node {
4035
+ cursor: pointer;
4036
+ }
4037
+
4038
+ .deps-node rect {
4039
+ rx: 8;
4040
+ ry: 8;
4041
+ stroke-width: 2;
4042
+ transition: filter 0.15s;
4043
+ }
4044
+
4045
+ .deps-node:hover rect {
4046
+ filter: brightness(1.3);
4047
+ }
4048
+
4049
+ .deps-node text {
4050
+ font-family: var(--font-mono);
4051
+ font-size: 12px;
4052
+ fill: var(--text-primary);
4053
+ pointer-events: none;
4054
+ }
4055
+
4056
+ .deps-edge {
4057
+ stroke: var(--text-secondary);
4058
+ stroke-width: 1.5;
4059
+ fill: none;
4060
+ opacity: 0.6;
4061
+ marker-end: url(#deps-arrowhead);
4062
+ }
4063
+
4064
+ .deps-edge-highlight {
4065
+ stroke: var(--accent);
4066
+ opacity: 1;
4067
+ stroke-width: 2;
4068
+ }
4069
+
4070
+ .deps-list {
4071
+ margin-bottom: 1rem;
4072
+ }
4073
+
4074
+ .deps-list-item {
4075
+ display: flex;
4076
+ align-items: center;
4077
+ gap: 0.5rem;
4078
+ padding: 0.5rem 0.75rem;
4079
+ border-bottom: 1px solid var(--border);
4080
+ font-size: 0.85rem;
4081
+ }
4082
+
4083
+ .deps-list-item:last-child {
4084
+ border-bottom: none;
4085
+ }
4086
+
4087
+ .deps-list-item .deps-item-process {
4088
+ font-weight: 600;
4089
+ color: var(--accent);
4090
+ font-family: var(--font-mono);
4091
+ }
4092
+
4093
+ .deps-list-item .deps-item-arrow {
4094
+ color: var(--text-secondary);
4095
+ }
4096
+
4097
+ .deps-list-item .deps-item-target {
4098
+ font-family: var(--font-mono);
4099
+ color: var(--text-primary);
4100
+ }
4101
+
4102
+ .deps-list-item .deps-remove-btn {
4103
+ margin-left: auto;
4104
+ background: none;
4105
+ border: none;
4106
+ color: var(--red);
4107
+ cursor: pointer;
4108
+ font-size: 1rem;
4109
+ padding: 0 0.25rem;
4110
+ opacity: 0.6;
4111
+ transition: opacity 0.15s;
4112
+ }
4113
+
4114
+ .deps-list-item .deps-remove-btn:hover {
4115
+ opacity: 1;
4116
+ }
4117
+
4118
+ .deps-start-order {
4119
+ padding: 0.75rem;
4120
+ background: rgba(0, 0, 0, 0.1);
4121
+ border-radius: 8px;
4122
+ font-size: 0.8rem;
4123
+ color: var(--text-secondary);
4124
+ }
4125
+
4126
+ .deps-start-order .deps-order-title {
4127
+ font-weight: 600;
4128
+ color: var(--text-primary);
4129
+ margin-bottom: 0.35rem;
4130
+ }
4131
+
4132
+ .deps-start-order .deps-order-list {
4133
+ display: flex;
4134
+ flex-wrap: wrap;
4135
+ gap: 0.35rem;
4136
+ }
4137
+
4138
+ .deps-order-badge {
4139
+ display: inline-flex;
4140
+ align-items: center;
4141
+ gap: 0.3rem;
4142
+ padding: 0.2rem 0.5rem;
4143
+ background: rgba(var(--accent-rgb, 99, 102, 241), 0.15);
4144
+ border-radius: 6px;
4145
+ font-family: var(--font-mono);
4146
+ font-size: 0.75rem;
4147
+ }
4148
+
4149
+ .deps-order-badge .deps-order-num {
4150
+ color: var(--accent);
4151
+ font-weight: 700;
4152
+ font-size: 0.7rem;
4153
+ }
4154
+
4155
+ .deps-empty {
4156
+ text-align: center;
4157
+ padding: 2rem;
4158
+ color: var(--text-secondary);
4159
+ font-size: 0.9rem;
4160
+ }
4161
+
4162
+ @media (max-width: 768px) {
4163
+ .deps-controls {
4164
+ flex-direction: column;
4165
+ align-items: stretch;
4166
+ }
4167
+ .deps-arrow {
4168
+ text-align: center;
4169
+ }
2965
4170
  }