@unity-china/codely-cli 1.0.0-alpha.1 → 1.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -143,6 +143,20 @@ textarea {
143
143
  margin-bottom: 12px;
144
144
  }
145
145
 
146
+ .session-notice {
147
+ position: sticky;
148
+ top: 0;
149
+ z-index: 4;
150
+ padding: 10px 12px;
151
+ border: 1px solid rgba(224, 175, 104, 0.3);
152
+ border-radius: var(--radius-md);
153
+ background: rgba(224, 175, 104, 0.08);
154
+ color: var(--warn);
155
+ white-space: pre-wrap;
156
+ line-height: 1.45;
157
+ backdrop-filter: blur(18px);
158
+ }
159
+
146
160
  .user-message {
147
161
  padding: 4px 0;
148
162
  color: var(--text);
@@ -782,6 +796,69 @@ textarea {
782
796
  gap: 10px;
783
797
  }
784
798
 
799
+ .ask-user-countdown {
800
+ display: grid;
801
+ grid-template-columns: 1fr auto;
802
+ gap: 4px 12px;
803
+ align-items: center;
804
+ padding: 10px 12px;
805
+ border: 1px solid rgba(224, 175, 104, 0.58);
806
+ border-radius: 12px;
807
+ background: rgba(224, 175, 104, 0.12);
808
+ box-shadow: inset 0 0 0 1px rgba(224, 175, 104, 0.08);
809
+ }
810
+ .ask-user-countdown-label {
811
+ color: var(--warn);
812
+ font-size: 12px;
813
+ font-weight: 700;
814
+ text-transform: uppercase;
815
+ letter-spacing: 0.06em;
816
+ }
817
+ .ask-user-countdown-time {
818
+ grid-row: span 2;
819
+ min-width: 56px;
820
+ padding: 6px 10px;
821
+ border: 1px solid rgba(224, 175, 104, 0.6);
822
+ border-radius: 999px;
823
+ color: #ffd089;
824
+ background: rgba(224, 175, 104, 0.16);
825
+ font-family: var(--mono);
826
+ font-size: 16px;
827
+ font-weight: 800;
828
+ text-align: center;
829
+ }
830
+ .ask-user-countdown-message {
831
+ color: var(--muted);
832
+ font-size: 12px;
833
+ }
834
+ .ask-user-option {
835
+ position: relative;
836
+ gap: 8px;
837
+ }
838
+ .ask-user-option-default {
839
+ border-color: rgba(224, 175, 104, 0.85) !important;
840
+ background: rgba(224, 175, 104, 0.12) !important;
841
+ box-shadow: inset 0 0 0 1px rgba(224, 175, 104, 0.25);
842
+ }
843
+ .ask-user-option-checkbox {
844
+ display: flex;
845
+ align-items: center;
846
+ gap: 8px;
847
+ padding: 8px 10px;
848
+ border: 1px solid var(--border);
849
+ border-radius: var(--radius-sm);
850
+ }
851
+ .ask-user-default-badge {
852
+ padding: 2px 6px;
853
+ border: 1px solid rgba(224, 175, 104, 0.68);
854
+ border-radius: 999px;
855
+ color: var(--warn);
856
+ background: rgba(224, 175, 104, 0.1);
857
+ font-size: 11px;
858
+ font-weight: 700;
859
+ line-height: 1;
860
+ }
861
+
785
862
  /* Subagent card styles */
786
863
  .subagent-card {
787
864
  background: linear-gradient(
@@ -1322,6 +1399,16 @@ textarea {
1322
1399
  text-transform: uppercase;
1323
1400
  letter-spacing: 0.08em;
1324
1401
  flex-shrink: 0;
1402
+ display: flex;
1403
+ align-items: center;
1404
+ justify-content: space-between;
1405
+ }
1406
+
1407
+ .cp-workers-header .btn {
1408
+ text-transform: none;
1409
+ letter-spacing: normal;
1410
+ font-size: 11px;
1411
+ padding: 2px 8px;
1325
1412
  }
1326
1413
 
1327
1414
  .cp-worker-grid {
@@ -1345,7 +1432,8 @@ textarea {
1345
1432
  flex-direction: column;
1346
1433
  cursor: pointer;
1347
1434
  transition: border-color 0.15s ease;
1348
- min-height: 360px;
1435
+ max-height: 30vh;
1436
+ min-height: 180px;
1349
1437
  }
1350
1438
 
1351
1439
  .cp-task-card:hover {
@@ -1366,31 +1454,67 @@ textarea {
1366
1454
 
1367
1455
  .cp-task-header {
1368
1456
  display: flex;
1369
- align-items: flex-start;
1370
- justify-content: space-between;
1371
- gap: 12px;
1372
- padding: 10px 12px;
1457
+ flex-direction: column;
1458
+ gap: 6px;
1459
+ padding: 8px 10px;
1373
1460
  border-bottom: 1px solid var(--border);
1374
1461
  flex-shrink: 0;
1375
1462
  }
1376
1463
 
1464
+ .cp-task-header-top {
1465
+ display: flex;
1466
+ align-items: flex-start;
1467
+ justify-content: space-between;
1468
+ gap: 8px;
1469
+ }
1470
+
1471
+ .cp-task-header-left {
1472
+ display: flex;
1473
+ align-items: flex-start;
1474
+ gap: 8px;
1475
+ min-width: 0;
1476
+ flex: 1;
1477
+ }
1478
+
1479
+ .cp-task-header-info {
1480
+ min-width: 0;
1481
+ flex: 1;
1482
+ display: flex;
1483
+ flex-direction: column;
1484
+ gap: 2px;
1485
+ /* Keep title + URL as two explicit lines; do not clip the link row away */
1486
+ overflow: visible;
1487
+ }
1488
+
1377
1489
  .cp-task-name {
1378
1490
  font-weight: 600;
1379
- font-size: 14px;
1491
+ font-size: 13px;
1492
+ line-height: 1.35;
1493
+ /* Line 1: title only; URL is always the next sibling on line 2 */
1494
+ overflow: hidden;
1495
+ text-overflow: ellipsis;
1496
+ white-space: nowrap;
1380
1497
  }
1381
1498
 
1382
1499
  .cp-task-url {
1383
1500
  font-size: 11px;
1384
1501
  color: var(--muted);
1502
+ display: block;
1503
+ line-height: 1.35;
1385
1504
  word-break: break-all;
1505
+ /* Second line dedicated to link; wrap instead of single-line ellipsis */
1506
+ overflow-wrap: anywhere;
1386
1507
  }
1387
1508
 
1388
1509
  .cp-task-meta {
1389
1510
  display: flex;
1390
- flex-direction: column;
1391
- gap: 4px;
1511
+ flex-direction: row;
1512
+ align-items: center;
1513
+ gap: 6px;
1392
1514
  font-size: 11px;
1393
1515
  color: var(--muted);
1516
+ flex-shrink: 0;
1517
+ margin-left: auto;
1394
1518
  }
1395
1519
 
1396
1520
  .cp-conn {
@@ -1417,10 +1541,30 @@ textarea {
1417
1541
  font-size: 11px;
1418
1542
  }
1419
1543
 
1544
+ /* One row: Cancel / Refresh / Retry + idle activity timestamp */
1545
+ .cp-task-actions-row {
1546
+ display: flex;
1547
+ flex-direction: row;
1548
+ flex-wrap: wrap;
1549
+ align-items: center;
1550
+ gap: 8px;
1551
+ }
1552
+
1420
1553
  .cp-task-actions {
1421
1554
  display: flex;
1422
- flex-direction: column;
1555
+ flex-direction: row;
1423
1556
  gap: 6px;
1557
+ flex-shrink: 0;
1558
+ flex-wrap: wrap;
1559
+ }
1560
+
1561
+ .cp-task-actions-time {
1562
+ flex-shrink: 0;
1563
+ }
1564
+
1565
+ .cp-task-actions .btn {
1566
+ padding: 2px 8px;
1567
+ font-size: 11px;
1424
1568
  }
1425
1569
 
1426
1570
  .cp-task-error {
@@ -1431,11 +1575,21 @@ textarea {
1431
1575
  flex-shrink: 0;
1432
1576
  }
1433
1577
 
1578
+ .cp-task-notice {
1579
+ padding: 6px 12px;
1580
+ font-size: 12px;
1581
+ color: var(--warn);
1582
+ border-bottom: 1px solid var(--border);
1583
+ background: rgba(224, 175, 104, 0.06);
1584
+ white-space: pre-wrap;
1585
+ flex-shrink: 0;
1586
+ }
1587
+
1434
1588
  .cp-task-body {
1435
1589
  padding: 10px 12px;
1436
1590
  overflow: auto;
1437
1591
  flex: 1;
1438
- min-height: 120px;
1592
+ min-height: 60px;
1439
1593
  }
1440
1594
 
1441
1595
  .cp-task-message,
@@ -2186,3 +2340,584 @@ textarea {
2186
2340
  display: none !important;
2187
2341
  }
2188
2342
  }
2343
+
2344
+ /* ─── Rollout Page ──────────────────────────────────────────────────────────── */
2345
+
2346
+ .rollout-app {
2347
+ display: flex;
2348
+ flex-direction: column;
2349
+ height: 100%;
2350
+ background: var(--bg);
2351
+ }
2352
+
2353
+ .rollout-stats {
2354
+ display: flex;
2355
+ gap: 20px;
2356
+ padding: 14px 24px;
2357
+ border-bottom: 1px solid var(--border);
2358
+ background: var(--panel);
2359
+ }
2360
+ .rollout-stat {
2361
+ text-align: center;
2362
+ min-width: 72px;
2363
+ }
2364
+ .rollout-stat-value {
2365
+ font-size: 22px;
2366
+ font-weight: 700;
2367
+ font-variant-numeric: tabular-nums;
2368
+ color: var(--text);
2369
+ }
2370
+ .rollout-stat-label {
2371
+ font-size: 11px;
2372
+ color: var(--muted);
2373
+ text-transform: uppercase;
2374
+ letter-spacing: 0.5px;
2375
+ margin-top: 2px;
2376
+ }
2377
+ .rollout-running {
2378
+ color: var(--accent);
2379
+ }
2380
+ .rollout-queued {
2381
+ color: var(--warn);
2382
+ }
2383
+ .rollout-completed {
2384
+ color: var(--ok);
2385
+ }
2386
+ .rollout-failed {
2387
+ color: var(--err);
2388
+ }
2389
+
2390
+ .rollout-body {
2391
+ display: flex;
2392
+ flex: 1;
2393
+ min-height: 0;
2394
+ overflow: hidden;
2395
+ }
2396
+
2397
+ .rollout-sidebar {
2398
+ width: 320px;
2399
+ border-right: 1px solid var(--border);
2400
+ background: var(--panel);
2401
+ display: flex;
2402
+ flex-direction: column;
2403
+ overflow-y: auto;
2404
+ }
2405
+ .rollout-sidebar-section {
2406
+ padding: 14px 16px;
2407
+ border-bottom: 1px solid var(--border);
2408
+ }
2409
+ .rollout-sidebar-queue {
2410
+ flex: 1;
2411
+ min-height: 0;
2412
+ display: flex;
2413
+ flex-direction: column;
2414
+ padding: 10px 16px;
2415
+ }
2416
+ .rollout-label {
2417
+ display: block;
2418
+ font-size: 12px;
2419
+ color: var(--muted);
2420
+ margin-bottom: 8px;
2421
+ text-transform: uppercase;
2422
+ letter-spacing: 0.5px;
2423
+ }
2424
+ .rollout-row {
2425
+ display: flex;
2426
+ gap: 8px;
2427
+ align-items: center;
2428
+ }
2429
+ .rollout-input,
2430
+ .rollout-textarea,
2431
+ .rollout-select {
2432
+ background: var(--panel-2);
2433
+ border: 1px solid var(--border);
2434
+ color: var(--text);
2435
+ padding: 7px 10px;
2436
+ border-radius: var(--radius-sm);
2437
+ font-size: 13px;
2438
+ font-family: var(--sans);
2439
+ outline: none;
2440
+ width: 100%;
2441
+ }
2442
+ .rollout-input:focus,
2443
+ .rollout-textarea:focus {
2444
+ border-color: var(--accent);
2445
+ }
2446
+ .rollout-input-sm {
2447
+ width: 70px;
2448
+ flex: 0 0 auto;
2449
+ }
2450
+ .rollout-textarea {
2451
+ resize: vertical;
2452
+ min-height: 80px;
2453
+ }
2454
+ .rollout-select {
2455
+ cursor: pointer;
2456
+ }
2457
+ .rollout-add-form {
2458
+ display: flex;
2459
+ flex-direction: column;
2460
+ gap: 8px;
2461
+ }
2462
+ .rollout-badge {
2463
+ background: var(--subtle);
2464
+ padding: 1px 7px;
2465
+ border-radius: 10px;
2466
+ font-size: 11px;
2467
+ font-weight: 600;
2468
+ }
2469
+ .rollout-queue-list {
2470
+ flex: 1;
2471
+ overflow-y: auto;
2472
+ display: flex;
2473
+ flex-direction: column;
2474
+ gap: 6px;
2475
+ }
2476
+ .rollout-queue-empty {
2477
+ color: var(--muted);
2478
+ font-size: 12px;
2479
+ padding: 8px 0;
2480
+ }
2481
+ .rollout-queue-item {
2482
+ background: var(--panel-2);
2483
+ border: 1px solid var(--border);
2484
+ border-radius: var(--radius-sm);
2485
+ padding: 8px 10px;
2486
+ }
2487
+ .rollout-queue-item-header {
2488
+ display: flex;
2489
+ justify-content: space-between;
2490
+ align-items: center;
2491
+ }
2492
+ .rollout-queue-item-prompt {
2493
+ font-size: 12px;
2494
+ color: var(--muted);
2495
+ margin-top: 4px;
2496
+ overflow: hidden;
2497
+ text-overflow: ellipsis;
2498
+ white-space: nowrap;
2499
+ }
2500
+
2501
+ .rollout-main {
2502
+ flex: 1;
2503
+ display: flex;
2504
+ flex-direction: column;
2505
+ min-width: 0;
2506
+ overflow: hidden;
2507
+ }
2508
+ .rollout-main-header {
2509
+ display: flex;
2510
+ align-items: center;
2511
+ justify-content: space-between;
2512
+ padding: 12px 20px;
2513
+ border-bottom: 1px solid var(--border);
2514
+ }
2515
+ .rollout-main-title {
2516
+ font-size: 15px;
2517
+ font-weight: 600;
2518
+ }
2519
+ .rollout-main-controls {
2520
+ display: flex;
2521
+ gap: 8px;
2522
+ align-items: center;
2523
+ }
2524
+ .rollout-main-controls .rollout-select {
2525
+ width: auto;
2526
+ min-width: 100px;
2527
+ }
2528
+ .rollout-task-list {
2529
+ flex: 1;
2530
+ overflow-y: auto;
2531
+ padding: 16px 20px;
2532
+ display: flex;
2533
+ flex-direction: column;
2534
+ gap: 12px;
2535
+ }
2536
+ .rollout-empty {
2537
+ text-align: center;
2538
+ padding: 40px;
2539
+ color: var(--muted);
2540
+ }
2541
+ .rollout-task-card {
2542
+ background: var(--panel);
2543
+ border: 1px solid var(--border);
2544
+ border-radius: var(--radius);
2545
+ padding: 14px 16px;
2546
+ transition: border-color 0.15s;
2547
+ }
2548
+ .rollout-task-card:hover {
2549
+ border-color: var(--muted);
2550
+ }
2551
+ .rollout-task-card-header {
2552
+ display: flex;
2553
+ align-items: center;
2554
+ justify-content: space-between;
2555
+ margin-bottom: 8px;
2556
+ }
2557
+ .rollout-task-card-left {
2558
+ display: flex;
2559
+ gap: 8px;
2560
+ align-items: center;
2561
+ flex-wrap: wrap;
2562
+ }
2563
+ .rollout-task-id {
2564
+ font-family: var(--mono);
2565
+ font-size: 12px;
2566
+ color: var(--muted);
2567
+ }
2568
+ .rollout-task-model {
2569
+ font-size: 11px;
2570
+ padding: 2px 8px;
2571
+ border-radius: 10px;
2572
+ background: var(--subtle);
2573
+ color: var(--muted);
2574
+ }
2575
+ .rollout-task-tags {
2576
+ font-size: 11px;
2577
+ color: var(--accent-2);
2578
+ }
2579
+ .rollout-task-status {
2580
+ font-size: 12px;
2581
+ font-weight: 600;
2582
+ padding: 2px 10px;
2583
+ border-radius: 10px;
2584
+ }
2585
+ .rollout-task-status.queued {
2586
+ background: rgba(224, 175, 104, 0.15);
2587
+ color: var(--warn);
2588
+ }
2589
+ .rollout-task-status.running {
2590
+ background: rgba(122, 162, 247, 0.15);
2591
+ color: var(--accent);
2592
+ }
2593
+ .rollout-task-status.completed {
2594
+ background: rgba(158, 206, 106, 0.15);
2595
+ color: var(--ok);
2596
+ }
2597
+ .rollout-task-status.failed,
2598
+ .rollout-task-status.stopped {
2599
+ background: rgba(247, 118, 142, 0.15);
2600
+ color: var(--err);
2601
+ }
2602
+ .rollout-task-status.cancelled {
2603
+ background: var(--subtle);
2604
+ color: var(--muted);
2605
+ }
2606
+
2607
+ .rollout-task-prompt {
2608
+ font-size: 13px;
2609
+ line-height: 1.5;
2610
+ color: var(--text);
2611
+ margin-bottom: 4px;
2612
+ word-break: break-word;
2613
+ }
2614
+ .rollout-task-command {
2615
+ font-family: var(--mono);
2616
+ font-size: 11px;
2617
+ line-height: 1.4;
2618
+ color: var(--muted);
2619
+ background: var(--subtle);
2620
+ padding: 3px 8px;
2621
+ border-radius: 4px;
2622
+ margin-bottom: 8px;
2623
+ word-break: break-all;
2624
+ white-space: nowrap;
2625
+ overflow: hidden;
2626
+ text-overflow: ellipsis;
2627
+ }
2628
+ .rollout-task-meta {
2629
+ display: flex;
2630
+ gap: 12px;
2631
+ align-items: center;
2632
+ font-size: 11px;
2633
+ color: var(--muted);
2634
+ }
2635
+ .rollout-task-actions {
2636
+ display: flex;
2637
+ gap: 6px;
2638
+ margin-top: 10px;
2639
+ }
2640
+ .rollout-btn-sm {
2641
+ font-size: 12px !important;
2642
+ padding: 4px 10px !important;
2643
+ }
2644
+ .rollout-btn-xs {
2645
+ font-size: 11px !important;
2646
+ padding: 2px 8px !important;
2647
+ }
2648
+
2649
+ /* Tabs */
2650
+ .rollout-tabs {
2651
+ display: flex;
2652
+ gap: 0;
2653
+ align-items: center;
2654
+ padding: 0 20px;
2655
+ border-bottom: 1px solid var(--border);
2656
+ background: var(--panel);
2657
+ }
2658
+ .rollout-tab {
2659
+ background: none;
2660
+ border: none;
2661
+ border-bottom: 2px solid transparent;
2662
+ padding: 10px 18px;
2663
+ font-size: 13px;
2664
+ font-weight: 500;
2665
+ color: var(--muted);
2666
+ cursor: pointer;
2667
+ transition: all 0.15s;
2668
+ }
2669
+ .rollout-tab:hover {
2670
+ color: var(--text);
2671
+ }
2672
+ .rollout-tab.active {
2673
+ color: var(--accent);
2674
+ border-bottom-color: var(--accent);
2675
+ }
2676
+ .rollout-hint {
2677
+ font-size: 12px;
2678
+ color: var(--muted);
2679
+ font-weight: 400;
2680
+ }
2681
+ .rollout-task-card.is-running {
2682
+ border-left: 3px solid var(--accent);
2683
+ }
2684
+
2685
+ /* Detail / Log panel */
2686
+ .rollout-log-backdrop {
2687
+ position: fixed;
2688
+ inset: 0;
2689
+ background: rgba(0, 0, 0, 0.5);
2690
+ z-index: 99;
2691
+ }
2692
+ .rollout-log-panel {
2693
+ position: fixed;
2694
+ right: 0;
2695
+ top: 0;
2696
+ width: 55vw;
2697
+ min-width: 500px;
2698
+ height: 100vh;
2699
+ background: var(--panel);
2700
+ border-left: 1px solid var(--border);
2701
+ display: flex;
2702
+ flex-direction: column;
2703
+ z-index: 100;
2704
+ animation: rollout-slide-in 0.2s ease;
2705
+ }
2706
+ @keyframes rollout-slide-in {
2707
+ from {
2708
+ transform: translateX(100%);
2709
+ }
2710
+ to {
2711
+ transform: translateX(0);
2712
+ }
2713
+ }
2714
+ .rollout-log-header {
2715
+ display: flex;
2716
+ align-items: center;
2717
+ justify-content: space-between;
2718
+ padding: 14px 16px;
2719
+ border-bottom: 1px solid var(--border);
2720
+ }
2721
+ .rollout-log-header h3 {
2722
+ font-size: 14px;
2723
+ margin: 0;
2724
+ white-space: nowrap;
2725
+ overflow: hidden;
2726
+ text-overflow: ellipsis;
2727
+ max-width: 60%;
2728
+ }
2729
+ .rollout-detail-tabs {
2730
+ display: flex;
2731
+ border-bottom: 1px solid var(--border);
2732
+ padding: 0 16px;
2733
+ }
2734
+ .rollout-detail-tab {
2735
+ background: none;
2736
+ border: none;
2737
+ border-bottom: 2px solid transparent;
2738
+ padding: 8px 14px;
2739
+ font-size: 12px;
2740
+ font-weight: 500;
2741
+ color: var(--muted);
2742
+ cursor: pointer;
2743
+ }
2744
+ .rollout-detail-tab:hover {
2745
+ color: var(--text);
2746
+ }
2747
+ .rollout-detail-tab.active {
2748
+ color: var(--accent);
2749
+ border-bottom-color: var(--accent);
2750
+ }
2751
+ .rollout-log-content {
2752
+ flex: 1;
2753
+ overflow-y: auto;
2754
+ padding: 16px;
2755
+ margin: 0;
2756
+ font-family: var(--mono);
2757
+ font-size: 12px;
2758
+ line-height: 1.6;
2759
+ white-space: pre-wrap;
2760
+ color: var(--muted);
2761
+ }
2762
+ .rollout-log-content.loading {
2763
+ opacity: 0.5;
2764
+ }
2765
+ .rollout-live-dot {
2766
+ color: var(--ok);
2767
+ font-size: 11px;
2768
+ font-weight: 600;
2769
+ animation: rollout-blink 1s infinite;
2770
+ }
2771
+ @keyframes rollout-blink {
2772
+ 0%,
2773
+ 100% {
2774
+ opacity: 1;
2775
+ }
2776
+ 50% {
2777
+ opacity: 0.3;
2778
+ }
2779
+ }
2780
+
2781
+ /* Artifacts list */
2782
+ .rollout-artifact-list {
2783
+ flex: 1;
2784
+ overflow-y: auto;
2785
+ padding: 12px 16px;
2786
+ display: flex;
2787
+ flex-direction: column;
2788
+ gap: 4px;
2789
+ }
2790
+ .rollout-artifact-item {
2791
+ display: flex;
2792
+ align-items: center;
2793
+ gap: 8px;
2794
+ padding: 8px 12px;
2795
+ background: var(--subtle);
2796
+ border-radius: var(--radius);
2797
+ color: var(--text);
2798
+ text-decoration: none;
2799
+ font-family: var(--mono);
2800
+ font-size: 12px;
2801
+ transition: background 0.15s;
2802
+ }
2803
+ .rollout-artifact-item:hover {
2804
+ background: var(--border);
2805
+ }
2806
+ .rollout-artifact-icon {
2807
+ font-size: 14px;
2808
+ }
2809
+
2810
+ /* Resolution badge */
2811
+ .rollout-task-resolution {
2812
+ font-size: 10px;
2813
+ padding: 1px 6px;
2814
+ border-radius: 8px;
2815
+ background: rgba(187, 154, 247, 0.15);
2816
+ color: #bb9af7;
2817
+ font-weight: 600;
2818
+ }
2819
+
2820
+ /* Config info */
2821
+ .rollout-config-info {
2822
+ font-size: 12px;
2823
+ line-height: 1.8;
2824
+ color: var(--muted);
2825
+ }
2826
+ .rollout-config-info code {
2827
+ font-family: var(--mono);
2828
+ font-size: 11px;
2829
+ background: var(--subtle);
2830
+ padding: 1px 5px;
2831
+ border-radius: 3px;
2832
+ }
2833
+
2834
+ /* New Task Dialog */
2835
+ .rollout-dialog {
2836
+ position: fixed;
2837
+ top: 50%;
2838
+ left: 50%;
2839
+ transform: translate(-50%, -50%);
2840
+ width: 680px;
2841
+ max-width: 90vw;
2842
+ max-height: 85vh;
2843
+ background: var(--panel);
2844
+ border: 1px solid var(--border);
2845
+ border-radius: 12px;
2846
+ display: flex;
2847
+ flex-direction: column;
2848
+ z-index: 100;
2849
+ animation: rollout-dialog-in 0.2s ease;
2850
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
2851
+ }
2852
+ @keyframes rollout-dialog-in {
2853
+ from {
2854
+ opacity: 0;
2855
+ transform: translate(-50%, -48%);
2856
+ }
2857
+ to {
2858
+ opacity: 1;
2859
+ transform: translate(-50%, -50%);
2860
+ }
2861
+ }
2862
+ .rollout-dialog-header {
2863
+ display: flex;
2864
+ align-items: center;
2865
+ justify-content: space-between;
2866
+ padding: 16px 20px 12px;
2867
+ border-bottom: 1px solid var(--border);
2868
+ }
2869
+ .rollout-dialog-header h3 {
2870
+ font-size: 16px;
2871
+ margin: 0;
2872
+ }
2873
+ .rollout-dialog-body {
2874
+ flex: 1;
2875
+ overflow-y: auto;
2876
+ padding: 16px 20px;
2877
+ display: flex;
2878
+ flex-direction: column;
2879
+ gap: 12px;
2880
+ }
2881
+ .rollout-dialog-footer {
2882
+ display: flex;
2883
+ align-items: center;
2884
+ justify-content: space-between;
2885
+ padding-top: 12px;
2886
+ border-top: 1px solid var(--border);
2887
+ margin-top: 4px;
2888
+ }
2889
+
2890
+ /* Form groups */
2891
+ .rollout-form-group {
2892
+ display: flex;
2893
+ flex-direction: column;
2894
+ gap: 4px;
2895
+ }
2896
+ .rollout-form-row {
2897
+ display: flex;
2898
+ gap: 12px;
2899
+ align-items: flex-end;
2900
+ }
2901
+ .rollout-form-details {
2902
+ border: 1px solid var(--border);
2903
+ border-radius: var(--radius);
2904
+ padding: 8px 12px;
2905
+ }
2906
+ .rollout-form-details[open] {
2907
+ padding-bottom: 4px;
2908
+ }
2909
+
2910
+ /* JSON editor */
2911
+ .rollout-json-editor {
2912
+ font-family: var(--mono) !important;
2913
+ font-size: 13px !important;
2914
+ line-height: 1.5 !important;
2915
+ min-height: 300px;
2916
+ resize: vertical;
2917
+ tab-size: 2;
2918
+ }
2919
+ .rollout-json-error {
2920
+ color: var(--err);
2921
+ font-size: 12px;
2922
+ padding: 4px 0;
2923
+ }