@unity-china/codely-cli 1.0.0-beta.52 → 1.0.0-rc.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.
@@ -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);
@@ -1322,6 +1336,16 @@ textarea {
1322
1336
  text-transform: uppercase;
1323
1337
  letter-spacing: 0.08em;
1324
1338
  flex-shrink: 0;
1339
+ display: flex;
1340
+ align-items: center;
1341
+ justify-content: space-between;
1342
+ }
1343
+
1344
+ .cp-workers-header .btn {
1345
+ text-transform: none;
1346
+ letter-spacing: normal;
1347
+ font-size: 11px;
1348
+ padding: 2px 8px;
1325
1349
  }
1326
1350
 
1327
1351
  .cp-worker-grid {
@@ -1345,7 +1369,8 @@ textarea {
1345
1369
  flex-direction: column;
1346
1370
  cursor: pointer;
1347
1371
  transition: border-color 0.15s ease;
1348
- min-height: 360px;
1372
+ max-height: 30vh;
1373
+ min-height: 180px;
1349
1374
  }
1350
1375
 
1351
1376
  .cp-task-card:hover {
@@ -1366,31 +1391,67 @@ textarea {
1366
1391
 
1367
1392
  .cp-task-header {
1368
1393
  display: flex;
1369
- align-items: flex-start;
1370
- justify-content: space-between;
1371
- gap: 12px;
1372
- padding: 10px 12px;
1394
+ flex-direction: column;
1395
+ gap: 6px;
1396
+ padding: 8px 10px;
1373
1397
  border-bottom: 1px solid var(--border);
1374
1398
  flex-shrink: 0;
1375
1399
  }
1376
1400
 
1401
+ .cp-task-header-top {
1402
+ display: flex;
1403
+ align-items: flex-start;
1404
+ justify-content: space-between;
1405
+ gap: 8px;
1406
+ }
1407
+
1408
+ .cp-task-header-left {
1409
+ display: flex;
1410
+ align-items: flex-start;
1411
+ gap: 8px;
1412
+ min-width: 0;
1413
+ flex: 1;
1414
+ }
1415
+
1416
+ .cp-task-header-info {
1417
+ min-width: 0;
1418
+ flex: 1;
1419
+ display: flex;
1420
+ flex-direction: column;
1421
+ gap: 2px;
1422
+ /* Keep title + URL as two explicit lines; do not clip the link row away */
1423
+ overflow: visible;
1424
+ }
1425
+
1377
1426
  .cp-task-name {
1378
1427
  font-weight: 600;
1379
- font-size: 14px;
1428
+ font-size: 13px;
1429
+ line-height: 1.35;
1430
+ /* Line 1: title only; URL is always the next sibling on line 2 */
1431
+ overflow: hidden;
1432
+ text-overflow: ellipsis;
1433
+ white-space: nowrap;
1380
1434
  }
1381
1435
 
1382
1436
  .cp-task-url {
1383
1437
  font-size: 11px;
1384
1438
  color: var(--muted);
1439
+ display: block;
1440
+ line-height: 1.35;
1385
1441
  word-break: break-all;
1442
+ /* Second line dedicated to link; wrap instead of single-line ellipsis */
1443
+ overflow-wrap: anywhere;
1386
1444
  }
1387
1445
 
1388
1446
  .cp-task-meta {
1389
1447
  display: flex;
1390
- flex-direction: column;
1391
- gap: 4px;
1448
+ flex-direction: row;
1449
+ align-items: center;
1450
+ gap: 6px;
1392
1451
  font-size: 11px;
1393
1452
  color: var(--muted);
1453
+ flex-shrink: 0;
1454
+ margin-left: auto;
1394
1455
  }
1395
1456
 
1396
1457
  .cp-conn {
@@ -1417,10 +1478,30 @@ textarea {
1417
1478
  font-size: 11px;
1418
1479
  }
1419
1480
 
1481
+ /* One row: Cancel / Refresh / Retry + idle activity timestamp */
1482
+ .cp-task-actions-row {
1483
+ display: flex;
1484
+ flex-direction: row;
1485
+ flex-wrap: wrap;
1486
+ align-items: center;
1487
+ gap: 8px;
1488
+ }
1489
+
1420
1490
  .cp-task-actions {
1421
1491
  display: flex;
1422
- flex-direction: column;
1492
+ flex-direction: row;
1423
1493
  gap: 6px;
1494
+ flex-shrink: 0;
1495
+ flex-wrap: wrap;
1496
+ }
1497
+
1498
+ .cp-task-actions-time {
1499
+ flex-shrink: 0;
1500
+ }
1501
+
1502
+ .cp-task-actions .btn {
1503
+ padding: 2px 8px;
1504
+ font-size: 11px;
1424
1505
  }
1425
1506
 
1426
1507
  .cp-task-error {
@@ -1431,11 +1512,21 @@ textarea {
1431
1512
  flex-shrink: 0;
1432
1513
  }
1433
1514
 
1515
+ .cp-task-notice {
1516
+ padding: 6px 12px;
1517
+ font-size: 12px;
1518
+ color: var(--warn);
1519
+ border-bottom: 1px solid var(--border);
1520
+ background: rgba(224, 175, 104, 0.06);
1521
+ white-space: pre-wrap;
1522
+ flex-shrink: 0;
1523
+ }
1524
+
1434
1525
  .cp-task-body {
1435
1526
  padding: 10px 12px;
1436
1527
  overflow: auto;
1437
1528
  flex: 1;
1438
- min-height: 120px;
1529
+ min-height: 60px;
1439
1530
  }
1440
1531
 
1441
1532
  .cp-task-message,
@@ -2186,3 +2277,584 @@ textarea {
2186
2277
  display: none !important;
2187
2278
  }
2188
2279
  }
2280
+
2281
+ /* ─── Rollout Page ──────────────────────────────────────────────────────────── */
2282
+
2283
+ .rollout-app {
2284
+ display: flex;
2285
+ flex-direction: column;
2286
+ height: 100%;
2287
+ background: var(--bg);
2288
+ }
2289
+
2290
+ .rollout-stats {
2291
+ display: flex;
2292
+ gap: 20px;
2293
+ padding: 14px 24px;
2294
+ border-bottom: 1px solid var(--border);
2295
+ background: var(--panel);
2296
+ }
2297
+ .rollout-stat {
2298
+ text-align: center;
2299
+ min-width: 72px;
2300
+ }
2301
+ .rollout-stat-value {
2302
+ font-size: 22px;
2303
+ font-weight: 700;
2304
+ font-variant-numeric: tabular-nums;
2305
+ color: var(--text);
2306
+ }
2307
+ .rollout-stat-label {
2308
+ font-size: 11px;
2309
+ color: var(--muted);
2310
+ text-transform: uppercase;
2311
+ letter-spacing: 0.5px;
2312
+ margin-top: 2px;
2313
+ }
2314
+ .rollout-running {
2315
+ color: var(--accent);
2316
+ }
2317
+ .rollout-queued {
2318
+ color: var(--warn);
2319
+ }
2320
+ .rollout-completed {
2321
+ color: var(--ok);
2322
+ }
2323
+ .rollout-failed {
2324
+ color: var(--err);
2325
+ }
2326
+
2327
+ .rollout-body {
2328
+ display: flex;
2329
+ flex: 1;
2330
+ min-height: 0;
2331
+ overflow: hidden;
2332
+ }
2333
+
2334
+ .rollout-sidebar {
2335
+ width: 320px;
2336
+ border-right: 1px solid var(--border);
2337
+ background: var(--panel);
2338
+ display: flex;
2339
+ flex-direction: column;
2340
+ overflow-y: auto;
2341
+ }
2342
+ .rollout-sidebar-section {
2343
+ padding: 14px 16px;
2344
+ border-bottom: 1px solid var(--border);
2345
+ }
2346
+ .rollout-sidebar-queue {
2347
+ flex: 1;
2348
+ min-height: 0;
2349
+ display: flex;
2350
+ flex-direction: column;
2351
+ padding: 10px 16px;
2352
+ }
2353
+ .rollout-label {
2354
+ display: block;
2355
+ font-size: 12px;
2356
+ color: var(--muted);
2357
+ margin-bottom: 8px;
2358
+ text-transform: uppercase;
2359
+ letter-spacing: 0.5px;
2360
+ }
2361
+ .rollout-row {
2362
+ display: flex;
2363
+ gap: 8px;
2364
+ align-items: center;
2365
+ }
2366
+ .rollout-input,
2367
+ .rollout-textarea,
2368
+ .rollout-select {
2369
+ background: var(--panel-2);
2370
+ border: 1px solid var(--border);
2371
+ color: var(--text);
2372
+ padding: 7px 10px;
2373
+ border-radius: var(--radius-sm);
2374
+ font-size: 13px;
2375
+ font-family: var(--sans);
2376
+ outline: none;
2377
+ width: 100%;
2378
+ }
2379
+ .rollout-input:focus,
2380
+ .rollout-textarea:focus {
2381
+ border-color: var(--accent);
2382
+ }
2383
+ .rollout-input-sm {
2384
+ width: 70px;
2385
+ flex: 0 0 auto;
2386
+ }
2387
+ .rollout-textarea {
2388
+ resize: vertical;
2389
+ min-height: 80px;
2390
+ }
2391
+ .rollout-select {
2392
+ cursor: pointer;
2393
+ }
2394
+ .rollout-add-form {
2395
+ display: flex;
2396
+ flex-direction: column;
2397
+ gap: 8px;
2398
+ }
2399
+ .rollout-badge {
2400
+ background: var(--subtle);
2401
+ padding: 1px 7px;
2402
+ border-radius: 10px;
2403
+ font-size: 11px;
2404
+ font-weight: 600;
2405
+ }
2406
+ .rollout-queue-list {
2407
+ flex: 1;
2408
+ overflow-y: auto;
2409
+ display: flex;
2410
+ flex-direction: column;
2411
+ gap: 6px;
2412
+ }
2413
+ .rollout-queue-empty {
2414
+ color: var(--muted);
2415
+ font-size: 12px;
2416
+ padding: 8px 0;
2417
+ }
2418
+ .rollout-queue-item {
2419
+ background: var(--panel-2);
2420
+ border: 1px solid var(--border);
2421
+ border-radius: var(--radius-sm);
2422
+ padding: 8px 10px;
2423
+ }
2424
+ .rollout-queue-item-header {
2425
+ display: flex;
2426
+ justify-content: space-between;
2427
+ align-items: center;
2428
+ }
2429
+ .rollout-queue-item-prompt {
2430
+ font-size: 12px;
2431
+ color: var(--muted);
2432
+ margin-top: 4px;
2433
+ overflow: hidden;
2434
+ text-overflow: ellipsis;
2435
+ white-space: nowrap;
2436
+ }
2437
+
2438
+ .rollout-main {
2439
+ flex: 1;
2440
+ display: flex;
2441
+ flex-direction: column;
2442
+ min-width: 0;
2443
+ overflow: hidden;
2444
+ }
2445
+ .rollout-main-header {
2446
+ display: flex;
2447
+ align-items: center;
2448
+ justify-content: space-between;
2449
+ padding: 12px 20px;
2450
+ border-bottom: 1px solid var(--border);
2451
+ }
2452
+ .rollout-main-title {
2453
+ font-size: 15px;
2454
+ font-weight: 600;
2455
+ }
2456
+ .rollout-main-controls {
2457
+ display: flex;
2458
+ gap: 8px;
2459
+ align-items: center;
2460
+ }
2461
+ .rollout-main-controls .rollout-select {
2462
+ width: auto;
2463
+ min-width: 100px;
2464
+ }
2465
+ .rollout-task-list {
2466
+ flex: 1;
2467
+ overflow-y: auto;
2468
+ padding: 16px 20px;
2469
+ display: flex;
2470
+ flex-direction: column;
2471
+ gap: 12px;
2472
+ }
2473
+ .rollout-empty {
2474
+ text-align: center;
2475
+ padding: 40px;
2476
+ color: var(--muted);
2477
+ }
2478
+ .rollout-task-card {
2479
+ background: var(--panel);
2480
+ border: 1px solid var(--border);
2481
+ border-radius: var(--radius);
2482
+ padding: 14px 16px;
2483
+ transition: border-color 0.15s;
2484
+ }
2485
+ .rollout-task-card:hover {
2486
+ border-color: var(--muted);
2487
+ }
2488
+ .rollout-task-card-header {
2489
+ display: flex;
2490
+ align-items: center;
2491
+ justify-content: space-between;
2492
+ margin-bottom: 8px;
2493
+ }
2494
+ .rollout-task-card-left {
2495
+ display: flex;
2496
+ gap: 8px;
2497
+ align-items: center;
2498
+ flex-wrap: wrap;
2499
+ }
2500
+ .rollout-task-id {
2501
+ font-family: var(--mono);
2502
+ font-size: 12px;
2503
+ color: var(--muted);
2504
+ }
2505
+ .rollout-task-model {
2506
+ font-size: 11px;
2507
+ padding: 2px 8px;
2508
+ border-radius: 10px;
2509
+ background: var(--subtle);
2510
+ color: var(--muted);
2511
+ }
2512
+ .rollout-task-tags {
2513
+ font-size: 11px;
2514
+ color: var(--accent-2);
2515
+ }
2516
+ .rollout-task-status {
2517
+ font-size: 12px;
2518
+ font-weight: 600;
2519
+ padding: 2px 10px;
2520
+ border-radius: 10px;
2521
+ }
2522
+ .rollout-task-status.queued {
2523
+ background: rgba(224, 175, 104, 0.15);
2524
+ color: var(--warn);
2525
+ }
2526
+ .rollout-task-status.running {
2527
+ background: rgba(122, 162, 247, 0.15);
2528
+ color: var(--accent);
2529
+ }
2530
+ .rollout-task-status.completed {
2531
+ background: rgba(158, 206, 106, 0.15);
2532
+ color: var(--ok);
2533
+ }
2534
+ .rollout-task-status.failed,
2535
+ .rollout-task-status.stopped {
2536
+ background: rgba(247, 118, 142, 0.15);
2537
+ color: var(--err);
2538
+ }
2539
+ .rollout-task-status.cancelled {
2540
+ background: var(--subtle);
2541
+ color: var(--muted);
2542
+ }
2543
+
2544
+ .rollout-task-prompt {
2545
+ font-size: 13px;
2546
+ line-height: 1.5;
2547
+ color: var(--text);
2548
+ margin-bottom: 4px;
2549
+ word-break: break-word;
2550
+ }
2551
+ .rollout-task-command {
2552
+ font-family: var(--mono);
2553
+ font-size: 11px;
2554
+ line-height: 1.4;
2555
+ color: var(--muted);
2556
+ background: var(--subtle);
2557
+ padding: 3px 8px;
2558
+ border-radius: 4px;
2559
+ margin-bottom: 8px;
2560
+ word-break: break-all;
2561
+ white-space: nowrap;
2562
+ overflow: hidden;
2563
+ text-overflow: ellipsis;
2564
+ }
2565
+ .rollout-task-meta {
2566
+ display: flex;
2567
+ gap: 12px;
2568
+ align-items: center;
2569
+ font-size: 11px;
2570
+ color: var(--muted);
2571
+ }
2572
+ .rollout-task-actions {
2573
+ display: flex;
2574
+ gap: 6px;
2575
+ margin-top: 10px;
2576
+ }
2577
+ .rollout-btn-sm {
2578
+ font-size: 12px !important;
2579
+ padding: 4px 10px !important;
2580
+ }
2581
+ .rollout-btn-xs {
2582
+ font-size: 11px !important;
2583
+ padding: 2px 8px !important;
2584
+ }
2585
+
2586
+ /* Tabs */
2587
+ .rollout-tabs {
2588
+ display: flex;
2589
+ gap: 0;
2590
+ align-items: center;
2591
+ padding: 0 20px;
2592
+ border-bottom: 1px solid var(--border);
2593
+ background: var(--panel);
2594
+ }
2595
+ .rollout-tab {
2596
+ background: none;
2597
+ border: none;
2598
+ border-bottom: 2px solid transparent;
2599
+ padding: 10px 18px;
2600
+ font-size: 13px;
2601
+ font-weight: 500;
2602
+ color: var(--muted);
2603
+ cursor: pointer;
2604
+ transition: all 0.15s;
2605
+ }
2606
+ .rollout-tab:hover {
2607
+ color: var(--text);
2608
+ }
2609
+ .rollout-tab.active {
2610
+ color: var(--accent);
2611
+ border-bottom-color: var(--accent);
2612
+ }
2613
+ .rollout-hint {
2614
+ font-size: 12px;
2615
+ color: var(--muted);
2616
+ font-weight: 400;
2617
+ }
2618
+ .rollout-task-card.is-running {
2619
+ border-left: 3px solid var(--accent);
2620
+ }
2621
+
2622
+ /* Detail / Log panel */
2623
+ .rollout-log-backdrop {
2624
+ position: fixed;
2625
+ inset: 0;
2626
+ background: rgba(0, 0, 0, 0.5);
2627
+ z-index: 99;
2628
+ }
2629
+ .rollout-log-panel {
2630
+ position: fixed;
2631
+ right: 0;
2632
+ top: 0;
2633
+ width: 55vw;
2634
+ min-width: 500px;
2635
+ height: 100vh;
2636
+ background: var(--panel);
2637
+ border-left: 1px solid var(--border);
2638
+ display: flex;
2639
+ flex-direction: column;
2640
+ z-index: 100;
2641
+ animation: rollout-slide-in 0.2s ease;
2642
+ }
2643
+ @keyframes rollout-slide-in {
2644
+ from {
2645
+ transform: translateX(100%);
2646
+ }
2647
+ to {
2648
+ transform: translateX(0);
2649
+ }
2650
+ }
2651
+ .rollout-log-header {
2652
+ display: flex;
2653
+ align-items: center;
2654
+ justify-content: space-between;
2655
+ padding: 14px 16px;
2656
+ border-bottom: 1px solid var(--border);
2657
+ }
2658
+ .rollout-log-header h3 {
2659
+ font-size: 14px;
2660
+ margin: 0;
2661
+ white-space: nowrap;
2662
+ overflow: hidden;
2663
+ text-overflow: ellipsis;
2664
+ max-width: 60%;
2665
+ }
2666
+ .rollout-detail-tabs {
2667
+ display: flex;
2668
+ border-bottom: 1px solid var(--border);
2669
+ padding: 0 16px;
2670
+ }
2671
+ .rollout-detail-tab {
2672
+ background: none;
2673
+ border: none;
2674
+ border-bottom: 2px solid transparent;
2675
+ padding: 8px 14px;
2676
+ font-size: 12px;
2677
+ font-weight: 500;
2678
+ color: var(--muted);
2679
+ cursor: pointer;
2680
+ }
2681
+ .rollout-detail-tab:hover {
2682
+ color: var(--text);
2683
+ }
2684
+ .rollout-detail-tab.active {
2685
+ color: var(--accent);
2686
+ border-bottom-color: var(--accent);
2687
+ }
2688
+ .rollout-log-content {
2689
+ flex: 1;
2690
+ overflow-y: auto;
2691
+ padding: 16px;
2692
+ margin: 0;
2693
+ font-family: var(--mono);
2694
+ font-size: 12px;
2695
+ line-height: 1.6;
2696
+ white-space: pre-wrap;
2697
+ color: var(--muted);
2698
+ }
2699
+ .rollout-log-content.loading {
2700
+ opacity: 0.5;
2701
+ }
2702
+ .rollout-live-dot {
2703
+ color: var(--ok);
2704
+ font-size: 11px;
2705
+ font-weight: 600;
2706
+ animation: rollout-blink 1s infinite;
2707
+ }
2708
+ @keyframes rollout-blink {
2709
+ 0%,
2710
+ 100% {
2711
+ opacity: 1;
2712
+ }
2713
+ 50% {
2714
+ opacity: 0.3;
2715
+ }
2716
+ }
2717
+
2718
+ /* Artifacts list */
2719
+ .rollout-artifact-list {
2720
+ flex: 1;
2721
+ overflow-y: auto;
2722
+ padding: 12px 16px;
2723
+ display: flex;
2724
+ flex-direction: column;
2725
+ gap: 4px;
2726
+ }
2727
+ .rollout-artifact-item {
2728
+ display: flex;
2729
+ align-items: center;
2730
+ gap: 8px;
2731
+ padding: 8px 12px;
2732
+ background: var(--subtle);
2733
+ border-radius: var(--radius);
2734
+ color: var(--text);
2735
+ text-decoration: none;
2736
+ font-family: var(--mono);
2737
+ font-size: 12px;
2738
+ transition: background 0.15s;
2739
+ }
2740
+ .rollout-artifact-item:hover {
2741
+ background: var(--border);
2742
+ }
2743
+ .rollout-artifact-icon {
2744
+ font-size: 14px;
2745
+ }
2746
+
2747
+ /* Resolution badge */
2748
+ .rollout-task-resolution {
2749
+ font-size: 10px;
2750
+ padding: 1px 6px;
2751
+ border-radius: 8px;
2752
+ background: rgba(187, 154, 247, 0.15);
2753
+ color: #bb9af7;
2754
+ font-weight: 600;
2755
+ }
2756
+
2757
+ /* Config info */
2758
+ .rollout-config-info {
2759
+ font-size: 12px;
2760
+ line-height: 1.8;
2761
+ color: var(--muted);
2762
+ }
2763
+ .rollout-config-info code {
2764
+ font-family: var(--mono);
2765
+ font-size: 11px;
2766
+ background: var(--subtle);
2767
+ padding: 1px 5px;
2768
+ border-radius: 3px;
2769
+ }
2770
+
2771
+ /* New Task Dialog */
2772
+ .rollout-dialog {
2773
+ position: fixed;
2774
+ top: 50%;
2775
+ left: 50%;
2776
+ transform: translate(-50%, -50%);
2777
+ width: 680px;
2778
+ max-width: 90vw;
2779
+ max-height: 85vh;
2780
+ background: var(--panel);
2781
+ border: 1px solid var(--border);
2782
+ border-radius: 12px;
2783
+ display: flex;
2784
+ flex-direction: column;
2785
+ z-index: 100;
2786
+ animation: rollout-dialog-in 0.2s ease;
2787
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
2788
+ }
2789
+ @keyframes rollout-dialog-in {
2790
+ from {
2791
+ opacity: 0;
2792
+ transform: translate(-50%, -48%);
2793
+ }
2794
+ to {
2795
+ opacity: 1;
2796
+ transform: translate(-50%, -50%);
2797
+ }
2798
+ }
2799
+ .rollout-dialog-header {
2800
+ display: flex;
2801
+ align-items: center;
2802
+ justify-content: space-between;
2803
+ padding: 16px 20px 12px;
2804
+ border-bottom: 1px solid var(--border);
2805
+ }
2806
+ .rollout-dialog-header h3 {
2807
+ font-size: 16px;
2808
+ margin: 0;
2809
+ }
2810
+ .rollout-dialog-body {
2811
+ flex: 1;
2812
+ overflow-y: auto;
2813
+ padding: 16px 20px;
2814
+ display: flex;
2815
+ flex-direction: column;
2816
+ gap: 12px;
2817
+ }
2818
+ .rollout-dialog-footer {
2819
+ display: flex;
2820
+ align-items: center;
2821
+ justify-content: space-between;
2822
+ padding-top: 12px;
2823
+ border-top: 1px solid var(--border);
2824
+ margin-top: 4px;
2825
+ }
2826
+
2827
+ /* Form groups */
2828
+ .rollout-form-group {
2829
+ display: flex;
2830
+ flex-direction: column;
2831
+ gap: 4px;
2832
+ }
2833
+ .rollout-form-row {
2834
+ display: flex;
2835
+ gap: 12px;
2836
+ align-items: flex-end;
2837
+ }
2838
+ .rollout-form-details {
2839
+ border: 1px solid var(--border);
2840
+ border-radius: var(--radius);
2841
+ padding: 8px 12px;
2842
+ }
2843
+ .rollout-form-details[open] {
2844
+ padding-bottom: 4px;
2845
+ }
2846
+
2847
+ /* JSON editor */
2848
+ .rollout-json-editor {
2849
+ font-family: var(--mono) !important;
2850
+ font-size: 13px !important;
2851
+ line-height: 1.5 !important;
2852
+ min-height: 300px;
2853
+ resize: vertical;
2854
+ tab-size: 2;
2855
+ }
2856
+ .rollout-json-error {
2857
+ color: var(--err);
2858
+ font-size: 12px;
2859
+ padding: 4px 0;
2860
+ }