orquesta-agent 0.2.53 → 0.2.55

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.
@@ -1,308 +1,514 @@
1
- /* Reset and base styles */
2
- * {
3
- margin: 0;
4
- padding: 0;
5
- box-sizing: border-box;
6
- }
1
+ /* Orquesta Agent Manager Dark Theme */
2
+ :root {
3
+ --bg-primary: #09090b;
4
+ --bg-secondary: #18181b;
5
+ --bg-card: #1c1c21;
6
+ --bg-card-hover: #222228;
7
+ --bg-input: #27272a;
8
+ --border: #2e2e33;
9
+ --border-hover: #3f3f46;
10
+ --text-primary: #fafafa;
11
+ --text-secondary: #a1a1aa;
12
+ --text-muted: #71717a;
13
+ --accent: #8b5cf6;
14
+ --accent-hover: #7c3aed;
15
+ --accent-glow: rgba(139, 92, 246, 0.15);
16
+ --green: #22c55e;
17
+ --green-glow: rgba(34, 197, 94, 0.2);
18
+ --red: #ef4444;
19
+ --red-glow: rgba(239, 68, 68, 0.2);
20
+ --yellow: #eab308;
21
+ --yellow-glow: rgba(234, 179, 8, 0.15);
22
+ --radius: 10px;
23
+ --radius-sm: 6px;
24
+ --shadow: 0 1px 3px rgba(0,0,0,0.4);
25
+ --shadow-lg: 0 4px 20px rgba(0,0,0,0.5);
26
+ }
27
+
28
+ * { margin: 0; padding: 0; box-sizing: border-box; }
7
29
 
8
30
  body {
9
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif;
10
- background: #f5f7fa;
11
- color: #2c3e50;
12
- line-height: 1.6;
31
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
32
+ background: var(--bg-primary);
33
+ color: var(--text-primary);
34
+ line-height: 1.5;
35
+ min-height: 100vh;
13
36
  }
14
37
 
15
38
  .container {
16
- max-width: 1200px;
39
+ max-width: 1280px;
17
40
  margin: 0 auto;
18
- padding: 20px;
41
+ padding: 24px;
19
42
  }
20
43
 
21
- /* Header */
44
+ /* ── Header ─────────────────────────────────────────── */
22
45
  .header {
23
- background: white;
24
- border-radius: 12px;
25
- padding: 24px;
26
- margin-bottom: 24px;
27
- box-shadow: 0 2px 8px rgba(0,0,0,0.08);
46
+ display: flex;
47
+ justify-content: space-between;
48
+ align-items: center;
49
+ padding: 20px 0;
50
+ margin-bottom: 28px;
51
+ border-bottom: 1px solid var(--border);
28
52
  }
29
53
 
30
- .header-content {
54
+ .header-left {
31
55
  display: flex;
32
- justify-content: space-between;
33
56
  align-items: center;
57
+ gap: 14px;
58
+ }
59
+
60
+ .logo-svg {
61
+ flex-shrink: 0;
34
62
  }
35
63
 
36
64
  .header h1 {
37
- font-size: 28px;
38
- color: #2c3e50;
65
+ font-size: 22px;
66
+ font-weight: 700;
67
+ color: var(--text-primary);
68
+ letter-spacing: -0.03em;
69
+ line-height: 1;
70
+ }
71
+
72
+ .brand-dot {
73
+ color: var(--accent);
39
74
  }
40
75
 
41
- .header-info {
76
+ .header-subtitle {
77
+ font-size: 12px;
78
+ color: var(--text-muted);
79
+ font-weight: 400;
80
+ margin-top: 2px;
81
+ }
82
+
83
+ .header-right {
42
84
  display: flex;
43
- gap: 12px;
85
+ gap: 10px;
44
86
  align-items: center;
45
87
  }
46
88
 
47
- /* System Info */
48
- .system-info {
49
- background: #f8f9fa;
50
- border-radius: 8px;
89
+ /* ── System Health ──────────────────────────────────── */
90
+ .health-grid {
91
+ display: grid;
92
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
93
+ gap: 12px;
94
+ margin-bottom: 28px;
95
+ }
96
+
97
+ .health-card {
98
+ background: var(--bg-card);
99
+ border: 1px solid var(--border);
100
+ border-radius: var(--radius);
51
101
  padding: 16px;
52
- margin-bottom: 24px;
53
- display: flex;
54
- gap: 24px;
55
- flex-wrap: wrap;
56
102
  }
57
103
 
58
- .system-item {
59
- display: flex;
60
- gap: 8px;
61
- font-size: 14px;
104
+ .health-label {
105
+ font-size: 12px;
106
+ font-weight: 500;
107
+ color: var(--text-muted);
108
+ text-transform: uppercase;
109
+ letter-spacing: 0.05em;
110
+ margin-bottom: 8px;
62
111
  }
63
112
 
64
- .system-item .label {
113
+ .health-value {
114
+ font-size: 24px;
65
115
  font-weight: 600;
66
- color: #6c757d;
116
+ color: var(--text-primary);
117
+ margin-bottom: 8px;
67
118
  }
68
119
 
69
- /* Badge */
70
- .badge {
71
- display: inline-block;
72
- padding: 4px 12px;
73
- border-radius: 12px;
120
+ .health-value small {
121
+ font-size: 13px;
122
+ font-weight: 400;
123
+ color: var(--text-secondary);
124
+ }
125
+
126
+ .health-bar {
127
+ width: 100%;
128
+ height: 4px;
129
+ background: var(--bg-input);
130
+ border-radius: 2px;
131
+ overflow: hidden;
132
+ }
133
+
134
+ .health-bar-fill {
135
+ height: 100%;
136
+ border-radius: 2px;
137
+ transition: width 0.6s ease;
138
+ }
139
+
140
+ .health-bar-fill.green { background: var(--green); }
141
+ .health-bar-fill.yellow { background: var(--yellow); }
142
+ .health-bar-fill.red { background: var(--red); }
143
+
144
+ .health-detail {
145
+ font-size: 11px;
146
+ color: var(--text-muted);
147
+ margin-top: 6px;
148
+ }
149
+
150
+ /* ── Execution Modes ────────────────────────────────── */
151
+ .modes-section {
152
+ margin-bottom: 28px;
153
+ }
154
+
155
+ .modes-title {
74
156
  font-size: 12px;
75
157
  font-weight: 600;
76
- background: #e3f2fd;
77
- color: #1976d2;
158
+ color: var(--text-muted);
159
+ text-transform: uppercase;
160
+ letter-spacing: 0.05em;
161
+ margin-bottom: 10px;
78
162
  }
79
163
 
80
- .badge.success {
81
- background: #e8f5e9;
82
- color: #2e7d32;
164
+ .status-row {
165
+ display: grid;
166
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
167
+ gap: 12px;
83
168
  }
84
169
 
85
- .badge.danger {
86
- background: #ffebee;
87
- color: #c62828;
170
+ .mode-card {
171
+ background: var(--bg-card);
172
+ border: 1px solid var(--border);
173
+ border-radius: var(--radius);
174
+ padding: 14px 16px;
175
+ transition: border-color 0.2s;
88
176
  }
89
177
 
90
- .badge.warning {
91
- background: #fff3e0;
92
- color: #ef6c00;
178
+ .mode-card.active {
179
+ border-color: var(--accent);
180
+ background: var(--accent-glow);
93
181
  }
94
182
 
95
- /* Buttons */
183
+ .mode-header {
184
+ display: flex;
185
+ align-items: center;
186
+ gap: 8px;
187
+ margin-bottom: 4px;
188
+ font-size: 14px;
189
+ color: var(--text-primary);
190
+ }
191
+
192
+ .mode-header .dot {
193
+ width: 8px;
194
+ height: 8px;
195
+ border-radius: 50%;
196
+ flex-shrink: 0;
197
+ }
198
+
199
+ .mode-header .dot.on { background: var(--green); box-shadow: 0 0 6px var(--green-glow); }
200
+ .mode-header .dot.off { background: #52525b; }
201
+ .mode-header .dot.warn { background: var(--yellow); }
202
+
203
+ .mode-desc {
204
+ font-size: 11px;
205
+ color: var(--text-muted);
206
+ margin-bottom: 6px;
207
+ }
208
+
209
+ .mode-status {
210
+ font-size: 12px;
211
+ color: var(--text-secondary);
212
+ font-family: 'SF Mono', 'Fira Code', monospace;
213
+ }
214
+
215
+ /* ── Actions Bar ────────────────────────────────────── */
216
+ .actions-bar {
217
+ display: flex;
218
+ justify-content: space-between;
219
+ align-items: center;
220
+ margin-bottom: 20px;
221
+ }
222
+
223
+ .actions-bar h2 {
224
+ font-size: 16px;
225
+ font-weight: 600;
226
+ color: var(--text-primary);
227
+ }
228
+
229
+ /* ── Buttons ────────────────────────────────────────── */
96
230
  .btn {
97
231
  display: inline-flex;
98
232
  align-items: center;
99
233
  gap: 6px;
100
- padding: 10px 20px;
101
- border: none;
102
- border-radius: 8px;
103
- font-size: 14px;
234
+ padding: 8px 16px;
235
+ border: 1px solid var(--border);
236
+ border-radius: var(--radius-sm);
237
+ font-size: 13px;
104
238
  font-weight: 500;
105
239
  cursor: pointer;
106
- transition: all 0.2s;
240
+ transition: all 0.15s;
241
+ background: var(--bg-card);
242
+ color: var(--text-primary);
243
+ font-family: inherit;
107
244
  }
108
245
 
109
246
  .btn:hover {
110
- transform: translateY(-1px);
111
- box-shadow: 0 4px 12px rgba(0,0,0,0.15);
247
+ background: var(--bg-card-hover);
248
+ border-color: var(--border-hover);
112
249
  }
113
250
 
114
251
  .btn-primary {
115
- background: #1976d2;
252
+ background: var(--accent);
253
+ border-color: var(--accent);
116
254
  color: white;
117
255
  }
118
256
 
119
257
  .btn-primary:hover {
120
- background: #1565c0;
121
- }
122
-
123
- .btn-secondary {
124
- background: #e0e0e0;
125
- color: #424242;
126
- }
127
-
128
- .btn-secondary:hover {
129
- background: #bdbdbd;
258
+ background: var(--accent-hover);
259
+ border-color: var(--accent-hover);
130
260
  }
131
261
 
132
262
  .btn-success {
133
- background: #2e7d32;
134
- color: white;
263
+ background: rgba(34, 197, 94, 0.1);
264
+ border-color: rgba(34, 197, 94, 0.3);
265
+ color: var(--green);
135
266
  }
136
267
 
137
268
  .btn-success:hover {
138
- background: #1b5e20;
269
+ background: rgba(34, 197, 94, 0.2);
139
270
  }
140
271
 
141
272
  .btn-danger {
142
- background: #c62828;
143
- color: white;
273
+ background: rgba(239, 68, 68, 0.1);
274
+ border-color: rgba(239, 68, 68, 0.3);
275
+ color: var(--red);
144
276
  }
145
277
 
146
278
  .btn-danger:hover {
147
- background: #b71c1c;
279
+ background: rgba(239, 68, 68, 0.2);
148
280
  }
149
281
 
150
282
  .btn-sm {
151
- padding: 6px 12px;
283
+ padding: 5px 10px;
152
284
  font-size: 12px;
153
285
  }
154
286
 
155
- .btn .icon {
156
- font-size: 16px;
287
+ .btn svg {
288
+ width: 14px;
289
+ height: 14px;
290
+ flex-shrink: 0;
157
291
  }
158
292
 
159
- /* Actions */
160
- .actions {
161
- margin-bottom: 24px;
293
+ /* ── Agent Cards ────────────────────────────────────── */
294
+ .agents-grid {
295
+ display: grid;
296
+ gap: 14px;
162
297
  }
163
298
 
164
- /* Empty State */
165
- .empty-state {
166
- text-align: center;
167
- padding: 60px 20px;
168
- background: white;
169
- border-radius: 12px;
170
- box-shadow: 0 2px 8px rgba(0,0,0,0.08);
299
+ .agent-card {
300
+ background: var(--bg-card);
301
+ border: 1px solid var(--border);
302
+ border-radius: var(--radius);
303
+ overflow: hidden;
304
+ transition: border-color 0.2s;
171
305
  }
172
306
 
173
- .empty-icon {
174
- font-size: 64px;
175
- margin-bottom: 16px;
176
- opacity: 0.5;
307
+ .agent-card:hover {
308
+ border-color: var(--border-hover);
177
309
  }
178
310
 
179
- .empty-state h3 {
180
- font-size: 20px;
181
- margin-bottom: 8px;
182
- color: #2c3e50;
311
+ .agent-card.running {
312
+ border-left: 3px solid var(--green);
183
313
  }
184
314
 
185
- .empty-state p {
186
- color: #6c757d;
315
+ .agent-card.stopped {
316
+ border-left: 3px solid var(--text-muted);
187
317
  }
188
318
 
189
- /* Agents Container */
190
- .agents-container {
191
- display: grid;
192
- gap: 16px;
193
- grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
319
+ .agent-card.error {
320
+ border-left: 3px solid var(--red);
194
321
  }
195
322
 
196
- /* Agent Card */
197
- .agent-card {
198
- background: white;
199
- border-radius: 12px;
200
- padding: 20px;
201
- box-shadow: 0 2px 8px rgba(0,0,0,0.08);
202
- transition: all 0.2s;
323
+ .agent-card-header {
324
+ display: flex;
325
+ justify-content: space-between;
326
+ align-items: center;
327
+ padding: 16px 20px;
203
328
  }
204
329
 
205
- .agent-card:hover {
206
- box-shadow: 0 4px 16px rgba(0,0,0,0.12);
330
+ .agent-card-left {
331
+ display: flex;
332
+ align-items: center;
333
+ gap: 12px;
334
+ min-width: 0;
207
335
  }
208
336
 
209
- .agent-header {
210
- display: flex;
211
- justify-content: space-between;
212
- align-items: flex-start;
213
- margin-bottom: 16px;
337
+ .agent-status-dot {
338
+ width: 10px;
339
+ height: 10px;
340
+ border-radius: 50%;
341
+ flex-shrink: 0;
342
+ }
343
+
344
+ .agent-status-dot.running {
345
+ background: var(--green);
346
+ box-shadow: 0 0 8px var(--green-glow);
347
+ animation: pulse 2s infinite;
348
+ }
349
+
350
+ .agent-status-dot.stopped { background: var(--text-muted); }
351
+ .agent-status-dot.error { background: var(--red); box-shadow: 0 0 8px var(--red-glow); }
352
+
353
+ @keyframes pulse {
354
+ 0%, 100% { opacity: 1; }
355
+ 50% { opacity: 0.5; }
214
356
  }
215
357
 
216
- .agent-title {
358
+ .agent-name {
359
+ font-size: 15px;
360
+ font-weight: 600;
361
+ color: var(--text-primary);
362
+ white-space: nowrap;
363
+ overflow: hidden;
364
+ text-overflow: ellipsis;
365
+ }
366
+
367
+ .agent-project-link {
368
+ font-size: 12px;
369
+ color: var(--accent);
370
+ text-decoration: none;
217
371
  display: flex;
218
372
  align-items: center;
219
- gap: 10px;
373
+ gap: 4px;
220
374
  }
221
375
 
222
- .agent-title h3 {
223
- font-size: 18px;
224
- color: #2c3e50;
376
+ .agent-project-link:hover {
377
+ text-decoration: underline;
225
378
  }
226
379
 
227
- .status-dot {
228
- width: 12px;
229
- height: 12px;
230
- border-radius: 50%;
231
- display: inline-block;
380
+ .agent-card-right {
381
+ display: flex;
382
+ gap: 6px;
383
+ flex-shrink: 0;
232
384
  }
233
385
 
234
- .status-dot.running {
235
- background: #2e7d32;
236
- box-shadow: 0 0 8px #2e7d32;
386
+ .agent-card-meta {
387
+ display: flex;
388
+ gap: 24px;
389
+ padding: 0 20px 14px;
390
+ flex-wrap: wrap;
237
391
  }
238
392
 
239
- .status-dot.stopped {
240
- background: #9e9e9e;
393
+ .meta-item {
394
+ font-size: 12px;
241
395
  }
242
396
 
243
- .status-dot.error {
244
- background: #c62828;
245
- box-shadow: 0 0 8px #c62828;
397
+ .meta-item .meta-label {
398
+ color: var(--text-muted);
399
+ margin-right: 6px;
246
400
  }
247
401
 
248
- .agent-info {
249
- margin-bottom: 16px;
402
+ .meta-item .meta-value {
403
+ color: var(--text-secondary);
404
+ font-family: 'SF Mono', 'Fira Code', monospace;
405
+ }
406
+
407
+ /* ── Inline Logs ────────────────────────────────────── */
408
+ .agent-logs {
409
+ border-top: 1px solid var(--border);
410
+ max-height: 0;
411
+ overflow: hidden;
412
+ transition: max-height 0.3s ease;
250
413
  }
251
414
 
252
- .info-row {
415
+ .agent-logs.open {
416
+ max-height: 400px;
417
+ }
418
+
419
+ .agent-logs-header {
253
420
  display: flex;
254
- gap: 8px;
255
- margin-bottom: 8px;
256
- font-size: 13px;
421
+ justify-content: space-between;
422
+ align-items: center;
423
+ padding: 10px 20px;
424
+ background: rgba(0,0,0,0.2);
257
425
  }
258
426
 
259
- .info-row .label {
427
+ .agent-logs-header span {
428
+ font-size: 12px;
260
429
  font-weight: 600;
261
- color: #6c757d;
262
- min-width: 100px;
430
+ color: var(--text-muted);
431
+ text-transform: uppercase;
432
+ letter-spacing: 0.05em;
263
433
  }
264
434
 
265
- .info-row .value {
266
- color: #2c3e50;
267
- word-break: break-all;
435
+ .logs-content {
436
+ background: #0a0a0c;
437
+ color: #d4d4d8;
438
+ padding: 12px 20px;
439
+ font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
440
+ font-size: 12px;
441
+ line-height: 1.6;
442
+ max-height: 320px;
443
+ overflow-y: auto;
444
+ white-space: pre-wrap;
445
+ word-wrap: break-word;
268
446
  }
269
447
 
270
- .agent-actions {
271
- display: flex;
272
- gap: 8px;
273
- flex-wrap: wrap;
448
+ .logs-content::-webkit-scrollbar {
449
+ width: 6px;
450
+ }
451
+
452
+ .logs-content::-webkit-scrollbar-track {
453
+ background: transparent;
454
+ }
455
+
456
+ .logs-content::-webkit-scrollbar-thumb {
457
+ background: var(--border);
458
+ border-radius: 3px;
274
459
  }
275
460
 
276
- /* Modal */
461
+ /* ── Empty State ────────────────────────────────────── */
462
+ .empty-state {
463
+ text-align: center;
464
+ padding: 80px 20px;
465
+ border: 1px dashed var(--border);
466
+ border-radius: var(--radius);
467
+ }
468
+
469
+ .empty-state svg {
470
+ width: 48px;
471
+ height: 48px;
472
+ color: var(--text-muted);
473
+ margin-bottom: 16px;
474
+ }
475
+
476
+ .empty-state h3 {
477
+ font-size: 16px;
478
+ font-weight: 600;
479
+ color: var(--text-secondary);
480
+ margin-bottom: 6px;
481
+ }
482
+
483
+ .empty-state p {
484
+ font-size: 13px;
485
+ color: var(--text-muted);
486
+ margin-bottom: 20px;
487
+ }
488
+
489
+ /* ── Modal ──────────────────────────────────────────── */
277
490
  .modal {
278
491
  display: none;
279
492
  position: fixed;
280
- top: 0;
281
- left: 0;
282
- width: 100%;
283
- height: 100%;
284
- background: rgba(0,0,0,0.5);
493
+ inset: 0;
494
+ background: rgba(0,0,0,0.7);
495
+ backdrop-filter: blur(4px);
285
496
  z-index: 1000;
286
497
  align-items: center;
287
498
  justify-content: center;
288
499
  }
289
500
 
290
- .modal.active {
291
- display: flex;
292
- }
501
+ .modal.active { display: flex; }
293
502
 
294
503
  .modal-content {
295
- background: white;
504
+ background: var(--bg-secondary);
505
+ border: 1px solid var(--border);
296
506
  border-radius: 12px;
297
507
  width: 90%;
298
- max-width: 600px;
508
+ max-width: 520px;
299
509
  max-height: 90vh;
300
510
  overflow-y: auto;
301
- box-shadow: 0 8px 32px rgba(0,0,0,0.2);
302
- }
303
-
304
- .modal-large {
305
- max-width: 900px;
511
+ box-shadow: var(--shadow-lg);
306
512
  }
307
513
 
308
514
  .modal-header {
@@ -310,77 +516,75 @@ body {
310
516
  justify-content: space-between;
311
517
  align-items: center;
312
518
  padding: 20px 24px;
313
- border-bottom: 1px solid #e0e0e0;
519
+ border-bottom: 1px solid var(--border);
314
520
  }
315
521
 
316
522
  .modal-header h2 {
317
- font-size: 20px;
318
- color: #2c3e50;
523
+ font-size: 17px;
524
+ font-weight: 600;
319
525
  }
320
526
 
321
527
  .modal-close {
322
528
  background: none;
323
529
  border: none;
324
- font-size: 28px;
325
- color: #9e9e9e;
530
+ font-size: 20px;
531
+ color: var(--text-muted);
326
532
  cursor: pointer;
327
- line-height: 1;
328
- padding: 0;
329
533
  width: 32px;
330
534
  height: 32px;
331
535
  display: flex;
332
536
  align-items: center;
333
537
  justify-content: center;
334
- border-radius: 4px;
335
- transition: all 0.2s;
538
+ border-radius: var(--radius-sm);
539
+ transition: all 0.15s;
336
540
  }
337
541
 
338
542
  .modal-close:hover {
339
- background: #f5f5f5;
340
- color: #424242;
543
+ background: var(--bg-input);
544
+ color: var(--text-primary);
341
545
  }
342
546
 
343
- .modal-body {
344
- padding: 24px;
345
- }
547
+ .modal-body { padding: 24px; }
346
548
 
347
- /* Form */
549
+ /* ── Form ───────────────────────────────────────────── */
348
550
  .form-group {
349
- margin-bottom: 20px;
551
+ margin-bottom: 18px;
350
552
  }
351
553
 
352
554
  .form-group label {
353
555
  display: block;
354
556
  margin-bottom: 6px;
355
- font-weight: 600;
356
- color: #2c3e50;
357
- font-size: 14px;
557
+ font-weight: 500;
558
+ color: var(--text-secondary);
559
+ font-size: 13px;
358
560
  }
359
561
 
360
562
  .form-group input[type="text"],
361
563
  .form-group input[type="password"],
362
564
  .form-group select {
363
565
  width: 100%;
364
- padding: 10px 12px;
365
- border: 1px solid #e0e0e0;
366
- border-radius: 6px;
367
- font-size: 14px;
566
+ padding: 9px 12px;
567
+ background: var(--bg-input);
568
+ border: 1px solid var(--border);
569
+ border-radius: var(--radius-sm);
570
+ color: var(--text-primary);
571
+ font-size: 13px;
368
572
  font-family: inherit;
369
- transition: all 0.2s;
573
+ transition: all 0.15s;
370
574
  }
371
575
 
372
576
  .form-group input:focus,
373
577
  .form-group select:focus {
374
578
  outline: none;
375
- border-color: #1976d2;
376
- box-shadow: 0 0 0 3px rgba(25,118,210,0.1);
579
+ border-color: var(--accent);
580
+ box-shadow: 0 0 0 3px var(--accent-glow);
377
581
  }
378
582
 
379
583
  .form-group small {
380
584
  display: block;
381
585
  margin-top: 4px;
382
- font-size: 12px;
383
- color: #6c757d;
586
+ font-size: 11px;
587
+ color: var(--text-muted);
384
588
  }
385
589
 
386
590
  .checkbox-label {
@@ -389,83 +593,82 @@ body {
389
593
  gap: 8px;
390
594
  cursor: pointer;
391
595
  font-weight: normal;
596
+ font-size: 13px;
597
+ color: var(--text-secondary);
392
598
  }
393
599
 
394
600
  .checkbox-label input[type="checkbox"] {
395
- width: 18px;
396
- height: 18px;
601
+ width: 16px;
602
+ height: 16px;
603
+ accent-color: var(--accent);
397
604
  cursor: pointer;
398
605
  }
399
606
 
400
607
  .form-actions {
401
608
  display: flex;
402
- gap: 12px;
609
+ gap: 10px;
403
610
  justify-content: flex-end;
404
611
  margin-top: 24px;
405
- padding-top: 24px;
406
- border-top: 1px solid #e0e0e0;
612
+ padding-top: 20px;
613
+ border-top: 1px solid var(--border);
407
614
  }
408
615
 
409
- /* Logs */
410
- .logs-controls {
411
- display: flex;
412
- gap: 12px;
413
- margin-bottom: 16px;
414
- align-items: center;
415
- }
416
-
417
- .logs-content {
418
- background: #1e1e1e;
419
- color: #d4d4d4;
420
- padding: 16px;
421
- border-radius: 6px;
422
- font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
423
- font-size: 13px;
424
- line-height: 1.5;
425
- max-height: 500px;
426
- overflow-y: auto;
427
- white-space: pre-wrap;
428
- word-wrap: break-word;
616
+ /* ── Badge ──────────────────────────────────────────── */
617
+ .badge {
618
+ display: inline-block;
619
+ padding: 3px 10px;
620
+ border-radius: 12px;
621
+ font-size: 11px;
622
+ font-weight: 600;
623
+ text-transform: uppercase;
624
+ letter-spacing: 0.03em;
429
625
  }
430
626
 
431
- .logs-content:empty::before {
432
- content: 'No logs available';
433
- color: #6c757d;
434
- font-style: italic;
435
- }
627
+ .badge-running { background: var(--green-glow); color: var(--green); }
628
+ .badge-stopped { background: rgba(113,113,122,0.15); color: var(--text-muted); }
629
+ .badge-error { background: var(--red-glow); color: var(--red); }
436
630
 
437
- /* Responsive */
631
+ /* ── Responsive ─────────────────────────────────────── */
438
632
  @media (max-width: 768px) {
439
- .agents-container {
440
- grid-template-columns: 1fr;
441
- }
442
-
443
- .header-content {
444
- flex-direction: column;
445
- gap: 16px;
446
- align-items: flex-start;
447
- }
633
+ .container { padding: 16px; }
634
+ .header { flex-direction: column; gap: 12px; align-items: flex-start; }
635
+ .health-grid { grid-template-columns: repeat(2, 1fr); }
636
+ .agent-card-meta { gap: 12px; }
637
+ .agent-card-right .btn span.btn-label { display: none; }
638
+ }
448
639
 
449
- .system-info {
450
- flex-direction: column;
451
- gap: 8px;
452
- }
640
+ @media (max-width: 480px) {
641
+ .health-grid { grid-template-columns: 1fr; }
642
+ }
453
643
 
454
- .agent-actions {
455
- flex-direction: column;
456
- }
644
+ /* ── Footer ─────────────────────────────────────────── */
645
+ .footer {
646
+ text-align: center;
647
+ padding: 32px 0 16px;
648
+ font-size: 12px;
649
+ color: var(--text-muted);
650
+ display: flex;
651
+ justify-content: center;
652
+ gap: 8px;
653
+ }
457
654
 
458
- .agent-actions .btn {
459
- width: 100%;
460
- }
655
+ .footer a {
656
+ color: var(--text-secondary);
657
+ text-decoration: none;
658
+ transition: color 0.15s;
461
659
  }
462
660
 
463
- /* Loading spinner */
464
- @keyframes spin {
465
- to { transform: rotate(360deg); }
661
+ .footer a:hover {
662
+ color: var(--accent);
466
663
  }
467
664
 
468
- .loading {
469
- animation: spin 1s linear infinite;
470
- display: inline-block;
665
+ /* ── Animations ─────────────────────────────────────── */
666
+ @keyframes spin { to { transform: rotate(360deg); } }
667
+ .spinning { animation: spin 1s linear infinite; }
668
+
669
+ @keyframes fadeIn {
670
+ from { opacity: 0; transform: translateY(4px); }
671
+ to { opacity: 1; transform: translateY(0); }
471
672
  }
673
+
674
+ .agent-card { animation: fadeIn 0.2s ease; }