vibesurf 0.1.0__py3-none-any.whl

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.

Potentially problematic release.


This version of vibesurf might be problematic. Click here for more details.

Files changed (70) hide show
  1. vibe_surf/__init__.py +12 -0
  2. vibe_surf/_version.py +34 -0
  3. vibe_surf/agents/__init__.py +0 -0
  4. vibe_surf/agents/browser_use_agent.py +1106 -0
  5. vibe_surf/agents/prompts/__init__.py +1 -0
  6. vibe_surf/agents/prompts/vibe_surf_prompt.py +176 -0
  7. vibe_surf/agents/report_writer_agent.py +360 -0
  8. vibe_surf/agents/vibe_surf_agent.py +1632 -0
  9. vibe_surf/backend/__init__.py +0 -0
  10. vibe_surf/backend/api/__init__.py +3 -0
  11. vibe_surf/backend/api/activity.py +243 -0
  12. vibe_surf/backend/api/config.py +740 -0
  13. vibe_surf/backend/api/files.py +322 -0
  14. vibe_surf/backend/api/models.py +257 -0
  15. vibe_surf/backend/api/task.py +300 -0
  16. vibe_surf/backend/database/__init__.py +13 -0
  17. vibe_surf/backend/database/manager.py +129 -0
  18. vibe_surf/backend/database/models.py +164 -0
  19. vibe_surf/backend/database/queries.py +922 -0
  20. vibe_surf/backend/database/schemas.py +100 -0
  21. vibe_surf/backend/llm_config.py +182 -0
  22. vibe_surf/backend/main.py +137 -0
  23. vibe_surf/backend/migrations/__init__.py +16 -0
  24. vibe_surf/backend/migrations/init_db.py +303 -0
  25. vibe_surf/backend/migrations/seed_data.py +236 -0
  26. vibe_surf/backend/shared_state.py +601 -0
  27. vibe_surf/backend/utils/__init__.py +7 -0
  28. vibe_surf/backend/utils/encryption.py +164 -0
  29. vibe_surf/backend/utils/llm_factory.py +225 -0
  30. vibe_surf/browser/__init__.py +8 -0
  31. vibe_surf/browser/agen_browser_profile.py +130 -0
  32. vibe_surf/browser/agent_browser_session.py +416 -0
  33. vibe_surf/browser/browser_manager.py +296 -0
  34. vibe_surf/browser/utils.py +790 -0
  35. vibe_surf/browser/watchdogs/__init__.py +0 -0
  36. vibe_surf/browser/watchdogs/action_watchdog.py +291 -0
  37. vibe_surf/browser/watchdogs/dom_watchdog.py +954 -0
  38. vibe_surf/chrome_extension/background.js +558 -0
  39. vibe_surf/chrome_extension/config.js +48 -0
  40. vibe_surf/chrome_extension/content.js +284 -0
  41. vibe_surf/chrome_extension/dev-reload.js +47 -0
  42. vibe_surf/chrome_extension/icons/convert-svg.js +33 -0
  43. vibe_surf/chrome_extension/icons/logo-preview.html +187 -0
  44. vibe_surf/chrome_extension/icons/logo.png +0 -0
  45. vibe_surf/chrome_extension/manifest.json +53 -0
  46. vibe_surf/chrome_extension/popup.html +134 -0
  47. vibe_surf/chrome_extension/scripts/api-client.js +473 -0
  48. vibe_surf/chrome_extension/scripts/main.js +491 -0
  49. vibe_surf/chrome_extension/scripts/markdown-it.min.js +3 -0
  50. vibe_surf/chrome_extension/scripts/session-manager.js +599 -0
  51. vibe_surf/chrome_extension/scripts/ui-manager.js +3687 -0
  52. vibe_surf/chrome_extension/sidepanel.html +347 -0
  53. vibe_surf/chrome_extension/styles/animations.css +471 -0
  54. vibe_surf/chrome_extension/styles/components.css +670 -0
  55. vibe_surf/chrome_extension/styles/main.css +2307 -0
  56. vibe_surf/chrome_extension/styles/settings.css +1100 -0
  57. vibe_surf/cli.py +357 -0
  58. vibe_surf/controller/__init__.py +0 -0
  59. vibe_surf/controller/file_system.py +53 -0
  60. vibe_surf/controller/mcp_client.py +68 -0
  61. vibe_surf/controller/vibesurf_controller.py +616 -0
  62. vibe_surf/controller/views.py +37 -0
  63. vibe_surf/llm/__init__.py +21 -0
  64. vibe_surf/llm/openai_compatible.py +237 -0
  65. vibesurf-0.1.0.dist-info/METADATA +97 -0
  66. vibesurf-0.1.0.dist-info/RECORD +70 -0
  67. vibesurf-0.1.0.dist-info/WHEEL +5 -0
  68. vibesurf-0.1.0.dist-info/entry_points.txt +2 -0
  69. vibesurf-0.1.0.dist-info/licenses/LICENSE +201 -0
  70. vibesurf-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,2307 @@
1
+ /* Main CSS - VibeSurf Extension */
2
+
3
+ :root {
4
+ /* Colors */
5
+ --primary-color: #007acc;
6
+ --primary-hover: #005a9b;
7
+ --secondary-color: #f0f2f5;
8
+ --accent-color: #28a745;
9
+ --danger-color: #dc3545;
10
+ --warning-color: #ffc107;
11
+ --text-primary: #1a1a1a;
12
+ --text-secondary: #6c757d;
13
+ --text-muted: #9ca3af;
14
+ --border-color: #e5e7eb;
15
+ --border-hover: #d1d5db;
16
+ --bg-primary: #ffffff;
17
+ --bg-secondary: #f8f9fa;
18
+ --bg-tertiary: #f1f3f4;
19
+ --bg-hover: #f5f5f5;
20
+ --bg-active: #e8f4fd;
21
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
22
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
23
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
24
+
25
+ /* Typography */
26
+ --font-size-xs: 0.75rem;
27
+ --font-size-sm: 0.875rem;
28
+ --font-size-base: 0.875rem;
29
+ --font-size-lg: 1rem;
30
+ --font-size-xl: 1.125rem;
31
+ --font-weight-normal: 400;
32
+ --font-weight-medium: 500;
33
+ --font-weight-semibold: 600;
34
+ --font-weight-bold: 700;
35
+
36
+ /* Spacing */
37
+ --spacing-xs: 0.25rem;
38
+ --spacing-sm: 0.5rem;
39
+ --spacing-md: 0.75rem;
40
+ --spacing-lg: 1rem;
41
+ --spacing-xl: 1.5rem;
42
+ --spacing-2xl: 2rem;
43
+
44
+ /* Border Radius */
45
+ --radius-sm: 0.25rem;
46
+ --radius-md: 0.375rem;
47
+ --radius-lg: 0.5rem;
48
+ --radius-xl: 0.75rem;
49
+
50
+ /* Transitions */
51
+ --transition-fast: 150ms ease-in-out;
52
+ --transition-normal: 200ms ease-in-out;
53
+ --transition-slow: 300ms ease-in-out;
54
+ }
55
+
56
+ /* Reset and Base Styles */
57
+ * {
58
+ margin: 0;
59
+ padding: 0;
60
+ box-sizing: border-box;
61
+ }
62
+
63
+ body {
64
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
65
+ font-size: var(--font-size-base);
66
+ line-height: 1.5;
67
+ color: var(--text-primary);
68
+ background-color: var(--bg-primary);
69
+ overflow: hidden;
70
+ }
71
+
72
+ /* Container */
73
+ .vibesurf-container {
74
+ display: flex;
75
+ flex-direction: column;
76
+ height: 100vh;
77
+ width: 100%;
78
+ min-width: 320px;
79
+ background-color: var(--bg-primary);
80
+ resize: horizontal;
81
+ overflow: auto;
82
+ }
83
+
84
+ /* Utility Classes */
85
+ .hidden {
86
+ display: none !important;
87
+ }
88
+
89
+ .sr-only {
90
+ position: absolute;
91
+ width: 1px;
92
+ height: 1px;
93
+ padding: 0;
94
+ margin: -1px;
95
+ overflow: hidden;
96
+ clip: rect(0, 0, 0, 0);
97
+ white-space: nowrap;
98
+ border: 0;
99
+ }
100
+
101
+ /* Header */
102
+ .header {
103
+ display: flex;
104
+ align-items: center;
105
+ justify-content: space-between;
106
+ padding: var(--spacing-lg);
107
+ background-color: var(--bg-primary);
108
+ border-bottom: 1px solid var(--border-color);
109
+ min-height: 56px;
110
+ }
111
+
112
+ .header-left {
113
+ display: flex;
114
+ align-items: center;
115
+ }
116
+
117
+ .logo {
118
+ display: flex;
119
+ align-items: center;
120
+ color: var(--primary-color);
121
+ font-weight: var(--font-weight-semibold);
122
+ }
123
+
124
+ .logo-brand {
125
+ display: flex;
126
+ align-items: center;
127
+ gap: var(--spacing-sm);
128
+ color: var(--primary-color);
129
+ font-weight: var(--font-weight-semibold);
130
+ }
131
+
132
+ .logo-image {
133
+ width: 24px;
134
+ height: 24px;
135
+ border-radius: var(--radius-sm);
136
+ object-fit: contain;
137
+ flex-shrink: 0;
138
+ }
139
+
140
+ .logo-content {
141
+ display: flex;
142
+ flex-direction: column;
143
+ gap: var(--spacing-xs);
144
+ }
145
+
146
+ .logo-text {
147
+ font-size: var(--font-size-lg);
148
+ line-height: 1.2;
149
+ }
150
+
151
+ .session-info {
152
+ display: flex;
153
+ align-items: center;
154
+ gap: var(--spacing-xs);
155
+ font-size: var(--font-size-xs);
156
+ color: var(--text-secondary);
157
+ }
158
+
159
+ .session-label {
160
+ font-weight: var(--font-weight-medium);
161
+ }
162
+
163
+ #session-id {
164
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
165
+ background-color: var(--bg-tertiary);
166
+ padding: 2px 4px;
167
+ border-radius: var(--radius-sm);
168
+ max-width: 120px;
169
+ overflow: hidden;
170
+ text-overflow: ellipsis;
171
+ white-space: nowrap;
172
+ }
173
+
174
+ .copy-btn {
175
+ display: flex;
176
+ align-items: center;
177
+ justify-content: center;
178
+ width: 20px;
179
+ height: 20px;
180
+ border: none;
181
+ border-radius: var(--radius-sm);
182
+ background-color: transparent;
183
+ color: var(--text-muted);
184
+ cursor: pointer;
185
+ transition: all var(--transition-fast);
186
+ }
187
+
188
+ .copy-btn:hover {
189
+ background-color: var(--bg-hover);
190
+ color: var(--text-secondary);
191
+ }
192
+
193
+ .copy-btn:active {
194
+ background-color: var(--bg-active);
195
+ transform: scale(0.95);
196
+ }
197
+
198
+ .header-right {
199
+ display: flex;
200
+ align-items: center;
201
+ gap: var(--spacing-xs);
202
+ }
203
+
204
+ .icon-btn {
205
+ display: flex;
206
+ align-items: center;
207
+ justify-content: center;
208
+ width: 32px;
209
+ height: 32px;
210
+ border: none;
211
+ border-radius: var(--radius-md);
212
+ background-color: transparent;
213
+ color: var(--text-secondary);
214
+ cursor: pointer;
215
+ transition: all var(--transition-fast);
216
+ }
217
+
218
+ .icon-btn:hover {
219
+ background-color: var(--bg-hover);
220
+ color: var(--text-primary);
221
+ }
222
+
223
+ .icon-btn:active {
224
+ background-color: var(--bg-active);
225
+ transform: scale(0.95);
226
+ }
227
+
228
+ /* Main Content */
229
+ .main-content {
230
+ flex: 1;
231
+ display: flex;
232
+ flex-direction: column;
233
+ overflow: hidden;
234
+ background-color: var(--bg-primary);
235
+ }
236
+
237
+ /* Activity Section */
238
+ .activity-section {
239
+ flex: 1;
240
+ display: flex;
241
+ flex-direction: column;
242
+ overflow: hidden;
243
+ }
244
+
245
+ .activity-log {
246
+ flex: 1;
247
+ overflow-y: auto;
248
+ padding: var(--spacing-lg);
249
+ background-color: var(--bg-primary);
250
+ min-height: 0; /* Allow proper flexbox sizing */
251
+ display: flex;
252
+ flex-direction: column;
253
+ }
254
+
255
+ .activity-log::-webkit-scrollbar {
256
+ width: 6px;
257
+ }
258
+
259
+ .activity-log::-webkit-scrollbar-track {
260
+ background: var(--bg-secondary);
261
+ }
262
+
263
+ .activity-log::-webkit-scrollbar-thumb {
264
+ background: var(--border-color);
265
+ border-radius: 3px;
266
+ }
267
+
268
+ .activity-log::-webkit-scrollbar-thumb:hover {
269
+ background: var(--border-hover);
270
+ }
271
+
272
+ .welcome-message {
273
+ display: flex;
274
+ flex-direction: column;
275
+ align-items: center;
276
+ justify-content: flex-start;
277
+ text-align: center;
278
+ padding: var(--spacing-lg) var(--spacing-2xl);
279
+ color: var(--text-muted);
280
+ min-height: 0; /* Allow shrinking */
281
+ max-height: none; /* Remove any height constraints */
282
+ overflow: visible; /* Ensure content is not clipped */
283
+ }
284
+
285
+ .welcome-text h4 {
286
+ font-size: var(--font-size-lg);
287
+ font-weight: var(--font-weight-medium);
288
+ color: var(--text-primary);
289
+ margin-bottom: var(--spacing-sm);
290
+ }
291
+
292
+ .welcome-text p {
293
+ font-size: var(--font-size-sm);
294
+ line-height: 1.6;
295
+ margin-bottom: var(--spacing-xl);
296
+ }
297
+
298
+ .quick-tasks {
299
+ display: grid;
300
+ grid-template-columns: 1fr;
301
+ gap: var(--spacing-md);
302
+ width: 100%;
303
+ max-width: 400px;
304
+ min-height: 0; /* Ensure all items are visible */
305
+ overflow: visible; /* Ensure content is not clipped */
306
+ grid-auto-rows: auto; /* Let rows size automatically */
307
+ }
308
+
309
+ .task-suggestion {
310
+ display: flex;
311
+ align-items: flex-start;
312
+ gap: var(--spacing-md);
313
+ padding: var(--spacing-lg);
314
+ background: var(--bg-secondary);
315
+ border: 1px solid var(--border-color);
316
+ border-radius: var(--radius-lg);
317
+ cursor: pointer;
318
+ transition: all var(--transition-fast);
319
+ text-align: left;
320
+ }
321
+
322
+ .task-suggestion:hover {
323
+ border-color: var(--primary-color);
324
+ background: var(--bg-hover);
325
+ transform: translateY(-2px);
326
+ box-shadow: var(--shadow-md);
327
+ }
328
+
329
+ .task-icon {
330
+ font-size: 24px;
331
+ flex-shrink: 0;
332
+ width: 40px;
333
+ height: 40px;
334
+ display: flex;
335
+ align-items: center;
336
+ justify-content: center;
337
+ background: var(--primary-color);
338
+ border-radius: var(--radius-md);
339
+ color: white;
340
+ }
341
+
342
+ .task-content {
343
+ flex: 1;
344
+ }
345
+
346
+ .task-title {
347
+ font-weight: var(--font-weight-semibold);
348
+ color: var(--text-primary);
349
+ margin-bottom: var(--spacing-xs);
350
+ font-size: var(--font-size-base);
351
+ }
352
+
353
+ .task-description {
354
+ font-size: var(--font-size-sm);
355
+ color: var(--text-secondary);
356
+ line-height: 1.4;
357
+ }
358
+
359
+ /* Control Panel */
360
+ .control-panel {
361
+ padding: var(--spacing-md);
362
+ background-color: var(--bg-secondary);
363
+ border-bottom: 1px solid var(--border-color);
364
+ display: flex;
365
+ gap: var(--spacing-sm);
366
+ align-items: center;
367
+ }
368
+
369
+ .control-btn {
370
+ display: flex;
371
+ align-items: center;
372
+ gap: var(--spacing-xs);
373
+ padding: var(--spacing-sm) var(--spacing-md);
374
+ border: 1px solid var(--border-color);
375
+ border-radius: var(--radius-md);
376
+ background-color: var(--bg-primary);
377
+ color: var(--text-primary);
378
+ font-size: var(--font-size-sm);
379
+ font-weight: var(--font-weight-medium);
380
+ cursor: pointer;
381
+ transition: all var(--transition-fast);
382
+ }
383
+
384
+ .control-btn:hover {
385
+ border-color: var(--border-hover);
386
+ background-color: var(--bg-hover);
387
+ }
388
+
389
+ .control-btn:active {
390
+ transform: scale(0.98);
391
+ }
392
+
393
+ .cancel-btn {
394
+ color: var(--danger-color);
395
+ border-color: var(--danger-color);
396
+ }
397
+
398
+ .cancel-btn:hover {
399
+ background-color: rgba(220, 53, 69, 0.1);
400
+ }
401
+
402
+ .resume-btn {
403
+ color: var(--accent-color);
404
+ border-color: var(--accent-color);
405
+ }
406
+
407
+ .resume-btn:hover {
408
+ background-color: rgba(40, 167, 69, 0.1);
409
+ }
410
+
411
+ .terminate-btn {
412
+ color: var(--danger-color);
413
+ border-color: var(--danger-color);
414
+ }
415
+
416
+ .terminate-btn:hover {
417
+ background-color: rgba(220, 53, 69, 0.1);
418
+ }
419
+
420
+ /* Input Section */
421
+ .input-section {
422
+ background-color: var(--bg-primary);
423
+ border-top: 1px solid var(--border-color);
424
+ padding: var(--spacing-md);
425
+ }
426
+
427
+ .input-container {
428
+ display: flex;
429
+ flex-direction: column;
430
+ gap: var(--spacing-sm);
431
+ }
432
+
433
+ .input-main {
434
+ display: flex;
435
+ flex-direction: column;
436
+ }
437
+
438
+ .textarea-container {
439
+ position: relative;
440
+ display: flex;
441
+ flex-direction: column;
442
+ }
443
+
444
+ .input-footer {
445
+ display: flex;
446
+ align-items: center;
447
+ justify-content: flex-start;
448
+ margin-top: calc(var(--spacing-xs) / 2);
449
+ }
450
+
451
+ .llm-select {
452
+ padding: var(--spacing-sm) var(--spacing-md);
453
+ border: 1px solid var(--border-color);
454
+ border-radius: var(--radius-md);
455
+ background-color: var(--bg-primary);
456
+ font-size: var(--font-size-sm);
457
+ color: var(--text-primary);
458
+ cursor: pointer;
459
+ transition: border-color var(--transition-fast);
460
+ min-width: 120px;
461
+ }
462
+
463
+ .llm-select.compact {
464
+ max-width: 100px;
465
+ font-size: var(--font-size-xs);
466
+ padding: var(--spacing-xs) var(--spacing-sm);
467
+ }
468
+
469
+ .llm-select:focus {
470
+ outline: none;
471
+ border-color: var(--primary-color);
472
+ box-shadow: 0 0 0 3px rgba(0, 122, 204, 0.1);
473
+ }
474
+
475
+ .task-input {
476
+ width: 100%;
477
+ padding: var(--spacing-md);
478
+ padding-right: 80px; /* Make space for buttons */
479
+ border: 1px solid var(--border-color);
480
+ border-radius: var(--radius-lg);
481
+ background-color: var(--bg-primary);
482
+ font-size: var(--font-size-sm);
483
+ font-family: inherit;
484
+ line-height: 1.5;
485
+ resize: vertical;
486
+ transition: all var(--transition-fast);
487
+ min-height: 44px;
488
+ max-height: 200px;
489
+ overflow-y: auto;
490
+ }
491
+
492
+ .task-input:focus {
493
+ outline: none;
494
+ border-color: var(--primary-color);
495
+ box-shadow: 0 0 0 3px rgba(0, 122, 204, 0.1);
496
+ }
497
+
498
+ .task-input::placeholder {
499
+ color: var(--text-muted);
500
+ }
501
+
502
+ .input-actions {
503
+ position: absolute;
504
+ right: var(--spacing-sm);
505
+ bottom: var(--spacing-sm);
506
+ display: flex;
507
+ gap: var(--spacing-xs);
508
+ z-index: 1;
509
+ }
510
+
511
+ .action-btn {
512
+ display: flex;
513
+ align-items: center;
514
+ justify-content: center;
515
+ width: 32px;
516
+ height: 32px;
517
+ border: 1px solid var(--border-color);
518
+ border-radius: var(--radius-md);
519
+ background-color: var(--bg-secondary);
520
+ color: var(--text-secondary);
521
+ cursor: pointer;
522
+ transition: all var(--transition-fast);
523
+ opacity: 0.8;
524
+ }
525
+
526
+ .action-btn:hover {
527
+ border-color: var(--border-hover);
528
+ background-color: var(--bg-hover);
529
+ color: var(--text-primary);
530
+ opacity: 1;
531
+ transform: scale(1.05);
532
+ }
533
+
534
+ .action-btn:active {
535
+ transform: scale(0.95);
536
+ }
537
+
538
+ .send-btn {
539
+ background-color: var(--primary-color);
540
+ border-color: var(--primary-color);
541
+ color: white;
542
+ }
543
+
544
+ .send-btn:hover {
545
+ background-color: var(--primary-hover);
546
+ border-color: var(--primary-hover);
547
+ }
548
+
549
+ .send-btn:disabled {
550
+ background-color: var(--border-color);
551
+ border-color: var(--border-color);
552
+ color: var(--text-muted);
553
+ cursor: not-allowed;
554
+ transform: none;
555
+ opacity: 0.5;
556
+ }
557
+
558
+ /* Activity Log Items - Chat Style */
559
+ .activity-item {
560
+ margin-bottom: var(--spacing-lg);
561
+ width: 100%;
562
+ display: flex;
563
+ flex-direction: column;
564
+ }
565
+
566
+ .message-container {
567
+ display: flex;
568
+ flex-direction: column;
569
+ max-width: 80%;
570
+ animation: fadeIn 0.3s ease-out;
571
+ }
572
+
573
+ .user-container {
574
+ align-self: flex-end;
575
+ align-items: flex-end;
576
+ }
577
+
578
+ .agent-container {
579
+ align-self: flex-start;
580
+ align-items: flex-start;
581
+ }
582
+
583
+ .message-header {
584
+ display: flex;
585
+ align-items: center;
586
+ gap: var(--spacing-sm);
587
+ margin-bottom: var(--spacing-xs);
588
+ font-size: var(--font-size-xs);
589
+ color: var(--text-muted);
590
+ }
591
+
592
+ .user-container .message-header {
593
+ justify-content: flex-end;
594
+ }
595
+
596
+ .agent-container .message-header {
597
+ justify-content: flex-start;
598
+ }
599
+
600
+ .agent-name {
601
+ font-weight: var(--font-weight-medium);
602
+ color: var(--text-secondary);
603
+ }
604
+
605
+ .user-container .agent-name {
606
+ color: var(--primary-color);
607
+ }
608
+
609
+ .message-time {
610
+ font-size: var(--font-size-xs);
611
+ color: var(--text-muted);
612
+ }
613
+
614
+ .message-bubble {
615
+ padding: var(--spacing-md);
616
+ border-radius: var(--radius-lg);
617
+ position: relative;
618
+ word-wrap: break-word;
619
+ box-shadow: var(--shadow-sm);
620
+ }
621
+
622
+ .user-bubble {
623
+ background-color: var(--primary-color);
624
+ color: white;
625
+ border-bottom-right-radius: var(--radius-sm);
626
+ }
627
+
628
+ .agent-bubble {
629
+ background-color: var(--bg-secondary);
630
+ color: var(--text-primary);
631
+ border: 1px solid var(--border-color);
632
+ border-bottom-left-radius: var(--radius-sm);
633
+ }
634
+
635
+ .message-bubble.working {
636
+ border-left: 3px solid var(--warning-color);
637
+ background-color: rgba(255, 193, 7, 0.05);
638
+ }
639
+
640
+ .message-bubble.result,
641
+ .message-bubble.done {
642
+ border-left: 3px solid var(--accent-color);
643
+ background-color: rgba(40, 167, 69, 0.05);
644
+ }
645
+
646
+ .message-bubble.error {
647
+ border-left: 3px solid var(--danger-color);
648
+ background-color: rgba(220, 53, 69, 0.05);
649
+ }
650
+
651
+ .message-status {
652
+ display: flex;
653
+ align-items: center;
654
+ gap: var(--spacing-xs);
655
+ margin-bottom: var(--spacing-sm);
656
+ font-size: var(--font-size-xs);
657
+ font-weight: var(--font-weight-medium);
658
+ }
659
+
660
+ .user-bubble .message-status {
661
+ color: rgba(255, 255, 255, 0.9);
662
+ }
663
+
664
+ .agent-bubble .message-status {
665
+ color: var(--text-secondary);
666
+ }
667
+
668
+ .status-indicator {
669
+ font-size: 12px;
670
+ }
671
+
672
+ .status-text {
673
+ text-transform: capitalize;
674
+ }
675
+
676
+ .message-content {
677
+ line-height: 1.6;
678
+ font-size: var(--font-size-sm);
679
+ }
680
+
681
+ .user-bubble .message-content {
682
+ color: white;
683
+ }
684
+
685
+ .agent-bubble .message-content {
686
+ color: var(--text-primary);
687
+ }
688
+
689
+ /* Content formatting */
690
+ .message-content h1,
691
+ .message-content h2,
692
+ .message-content h3 {
693
+ margin: var(--spacing-sm) 0;
694
+ font-weight: var(--font-weight-semibold);
695
+ }
696
+
697
+ .message-content h1 {
698
+ font-size: var(--font-size-lg);
699
+ }
700
+
701
+ .message-content h2 {
702
+ font-size: var(--font-size-base);
703
+ }
704
+
705
+ .message-content h3 {
706
+ font-size: var(--font-size-sm);
707
+ }
708
+
709
+ .message-content ul {
710
+ margin: var(--spacing-sm) 0;
711
+ padding-left: var(--spacing-lg);
712
+ }
713
+
714
+ .message-content li {
715
+ margin-bottom: var(--spacing-xs);
716
+ }
717
+
718
+ .message-content .code-block {
719
+ background-color: var(--bg-tertiary);
720
+ padding: var(--spacing-sm);
721
+ border-radius: var(--radius-sm);
722
+ overflow-x: auto;
723
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
724
+ font-size: var(--font-size-xs);
725
+ margin: var(--spacing-sm) 0;
726
+ border: 1px solid var(--border-color);
727
+ }
728
+
729
+ .user-bubble .code-block {
730
+ background-color: rgba(255, 255, 255, 0.1);
731
+ border-color: rgba(255, 255, 255, 0.2);
732
+ }
733
+
734
+ .message-content .inline-code {
735
+ background-color: var(--bg-tertiary);
736
+ padding: 2px 4px;
737
+ border-radius: var(--radius-sm);
738
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
739
+ font-size: var(--font-size-xs);
740
+ }
741
+
742
+ .user-bubble .inline-code {
743
+ background-color: rgba(255, 255, 255, 0.2);
744
+ }
745
+
746
+ .message-content .json-content {
747
+ background-color: var(--bg-tertiary);
748
+ padding: var(--spacing-sm);
749
+ border-radius: var(--radius-sm);
750
+ overflow-x: auto;
751
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
752
+ font-size: var(--font-size-xs);
753
+ margin: var(--spacing-sm) 0;
754
+ border: 1px solid var(--border-color);
755
+ }
756
+
757
+ .user-bubble .json-content {
758
+ background-color: rgba(255, 255, 255, 0.1);
759
+ border-color: rgba(255, 255, 255, 0.2);
760
+ }
761
+
762
+ .message-content a {
763
+ color: inherit;
764
+ text-decoration: underline;
765
+ }
766
+
767
+ .user-bubble .message-content a {
768
+ color: rgba(255, 255, 255, 0.9);
769
+ }
770
+
771
+ .agent-bubble .message-content a {
772
+ color: var(--primary-color);
773
+ }
774
+
775
+ .message-content a:hover {
776
+ opacity: 0.8;
777
+ }
778
+
779
+ /* Status indicators */
780
+ .status-indicator {
781
+ display: inline-flex;
782
+ align-items: center;
783
+ gap: var(--spacing-xs);
784
+ font-size: var(--font-size-xs);
785
+ font-weight: var(--font-weight-medium);
786
+ }
787
+
788
+ .status-dot {
789
+ width: 6px;
790
+ height: 6px;
791
+ border-radius: 50%;
792
+ background-color: var(--border-color);
793
+ }
794
+
795
+ .status-dot.active {
796
+ background-color: var(--accent-color);
797
+ animation: pulse 2s infinite;
798
+ }
799
+
800
+ .status-dot.error {
801
+ background-color: var(--danger-color);
802
+ }
803
+
804
+ @keyframes pulse {
805
+ 0%, 100% {
806
+ opacity: 1;
807
+ }
808
+ 50% {
809
+ opacity: 0.5;
810
+ }
811
+ }
812
+
813
+ /* Enhanced Markdown Styles */
814
+ .message-content .task-item {
815
+ display: flex;
816
+ align-items: center;
817
+ gap: var(--spacing-sm);
818
+ margin: var(--spacing-xs) 0;
819
+ padding: var(--spacing-xs) 0;
820
+ line-height: 1.4;
821
+ }
822
+
823
+ .message-content .task-item input[type="checkbox"] {
824
+ margin: 0;
825
+ cursor: default;
826
+ accent-color: var(--primary-color);
827
+ }
828
+
829
+ .message-content .markdown-table {
830
+ border-collapse: collapse;
831
+ width: 100%;
832
+ margin: var(--spacing-md) 0;
833
+ border: 1px solid var(--border-color);
834
+ border-radius: var(--radius-md);
835
+ overflow: hidden;
836
+ font-size: var(--font-size-sm);
837
+ }
838
+
839
+ .message-content .markdown-table th,
840
+ .message-content .markdown-table td {
841
+ padding: var(--spacing-sm) var(--spacing-md);
842
+ text-align: left;
843
+ border-bottom: 1px solid var(--border-color);
844
+ }
845
+
846
+ .message-content .markdown-table th {
847
+ background-color: var(--bg-tertiary);
848
+ font-weight: var(--font-weight-semibold);
849
+ color: var(--text-primary);
850
+ }
851
+
852
+ .user-bubble .markdown-table th {
853
+ background-color: rgba(255, 255, 255, 0.1);
854
+ color: white;
855
+ }
856
+
857
+ .message-content .markdown-table tr:hover {
858
+ background-color: var(--bg-hover);
859
+ }
860
+
861
+ .user-bubble .markdown-table tr:hover {
862
+ background-color: rgba(255, 255, 255, 0.05);
863
+ }
864
+
865
+ .message-content .markdown-quote {
866
+ border-left: 4px solid var(--primary-color);
867
+ padding-left: var(--spacing-md);
868
+ margin: var(--spacing-md) 0;
869
+ color: var(--text-secondary);
870
+ font-style: italic;
871
+ background-color: var(--bg-secondary);
872
+ padding: var(--spacing-md);
873
+ border-radius: var(--radius-md);
874
+ }
875
+
876
+ .user-bubble .markdown-quote {
877
+ border-left-color: rgba(255, 255, 255, 0.8);
878
+ background-color: rgba(255, 255, 255, 0.1);
879
+ color: rgba(255, 255, 255, 0.9);
880
+ }
881
+
882
+ .message-content h1,
883
+ .message-content h2,
884
+ .message-content h3,
885
+ .message-content h4,
886
+ .message-content h5,
887
+ .message-content h6 {
888
+ margin: var(--spacing-md) 0 var(--spacing-sm) 0;
889
+ color: var(--text-primary);
890
+ line-height: 1.3;
891
+ }
892
+
893
+ .user-bubble .message-content h1,
894
+ .user-bubble .message-content h2,
895
+ .user-bubble .message-content h3,
896
+ .user-bubble .message-content h4,
897
+ .user-bubble .message-content h5,
898
+ .user-bubble .message-content h6 {
899
+ color: white;
900
+ }
901
+
902
+ .message-content h1 { font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); }
903
+ .message-content h2 { font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); }
904
+ .message-content h3 { font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); }
905
+ .message-content h4 { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); }
906
+
907
+ .message-content ul,
908
+ .message-content ol {
909
+ margin: var(--spacing-sm) 0;
910
+ padding-left: var(--spacing-xl);
911
+ }
912
+
913
+ .message-content li {
914
+ margin: var(--spacing-xs) 0;
915
+ line-height: 1.5;
916
+ }
917
+
918
+ .message-content p {
919
+ margin: var(--spacing-sm) 0;
920
+ line-height: 1.6;
921
+ }
922
+
923
+ .message-content a {
924
+ color: var(--primary-color);
925
+ text-decoration: none;
926
+ border-bottom: 1px solid transparent;
927
+ transition: border-color var(--transition-fast);
928
+ }
929
+
930
+ .message-content a:hover {
931
+ border-bottom-color: var(--primary-color);
932
+ }
933
+
934
+ .user-bubble .message-content a {
935
+ color: rgba(255, 255, 255, 0.9);
936
+ border-bottom-color: transparent;
937
+ }
938
+
939
+ /* Task Running Disabled State */
940
+ .task-running-disabled {
941
+ opacity: 0.5 !important;
942
+ cursor: not-allowed !important;
943
+ pointer-events: none !important;
944
+ position: relative;
945
+ }
946
+
947
+ .task-running-disabled::after {
948
+ content: '🔒';
949
+ position: absolute;
950
+ top: 50%;
951
+ right: 8px;
952
+ transform: translateY(-50%);
953
+ font-size: 12px;
954
+ opacity: 0.7;
955
+ pointer-events: none;
956
+ }
957
+
958
+ /* Specific styles for different elements when disabled */
959
+ button.task-running-disabled {
960
+ background-color: #f0f0f0 !important;
961
+ border-color: #ddd !important;
962
+ color: #999 !important;
963
+ }
964
+
965
+ input.task-running-disabled,
966
+ textarea.task-running-disabled,
967
+ select.task-running-disabled {
968
+ background-color: #f9f9f9 !important;
969
+ border-color: #ddd !important;
970
+ color: #999 !important;
971
+ }
972
+
973
+ /* Task status indicator in control panel */
974
+ .control-panel .task-status-indicator {
975
+ display: flex;
976
+ align-items: center;
977
+ gap: 8px;
978
+ padding: 8px 12px;
979
+ background: rgba(255, 193, 7, 0.1);
980
+ border: 1px solid rgba(255, 193, 7, 0.3);
981
+ border-radius: 6px;
982
+ font-size: 12px;
983
+ color: #856404;
984
+ margin-bottom: 8px;
985
+ }
986
+
987
+ .control-panel .task-status-indicator::before {
988
+ content: '⚠️';
989
+ font-size: 14px;
990
+ }
991
+
992
+ /* Enhanced warning modal styles */
993
+ .modal-overlay.warning-modal {
994
+ z-index: 15000;
995
+ }
996
+
997
+ .warning-modal .modal-content {
998
+ max-width: 500px;
999
+ background: white;
1000
+ border-radius: 12px;
1001
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
1002
+ }
1003
+
1004
+ .warning-header {
1005
+ display: flex;
1006
+ align-items: center;
1007
+ gap: 12px;
1008
+ padding: 20px 20px 0;
1009
+ border-bottom: 1px solid #eee;
1010
+ margin-bottom: 16px;
1011
+ }
1012
+
1013
+ .warning-icon {
1014
+ font-size: 24px;
1015
+ }
1016
+
1017
+ .warning-header h3 {
1018
+ margin: 0;
1019
+ color: #dc3545;
1020
+ font-size: 18px;
1021
+ }
1022
+
1023
+ .warning-body {
1024
+ padding: 0 20px 16px;
1025
+ }
1026
+
1027
+ .warning-body p {
1028
+ margin: 0 0 12px;
1029
+ color: #666;
1030
+ line-height: 1.5;
1031
+ }
1032
+
1033
+ .warning-details {
1034
+ background: #f8f9fa;
1035
+ border: 1px solid #e9ecef;
1036
+ border-radius: 4px;
1037
+ padding: 12px;
1038
+ font-family: monospace;
1039
+ font-size: 12px;
1040
+ color: #495057;
1041
+ white-space: pre-wrap;
1042
+ margin: 0;
1043
+ }
1044
+
1045
+ .warning-actions {
1046
+ display: flex;
1047
+ gap: 8px;
1048
+ padding: 16px 20px 20px;
1049
+ justify-content: flex-end;
1050
+ }
1051
+
1052
+ .warning-actions .btn {
1053
+ padding: 8px 16px;
1054
+ border: none;
1055
+ border-radius: 6px;
1056
+ font-size: 14px;
1057
+ cursor: pointer;
1058
+ transition: all 0.2s ease;
1059
+ }
1060
+
1061
+ .warning-actions .btn-danger {
1062
+ background: #dc3545;
1063
+ color: white;
1064
+ }
1065
+
1066
+ .warning-actions .btn-danger:hover {
1067
+ background: #c82333;
1068
+ }
1069
+
1070
+ .warning-actions .btn-secondary {
1071
+ background: #6c757d;
1072
+ color: white;
1073
+ }
1074
+
1075
+ .warning-actions .btn-secondary:hover {
1076
+ background: #545b62;
1077
+ }
1078
+
1079
+ .warning-actions .btn-primary {
1080
+ background: #007bff;
1081
+ color: white;
1082
+ }
1083
+
1084
+ .warning-actions .btn-primary:hover {
1085
+ background: #0056b3;
1086
+ }
1087
+
1088
+ .user-bubble .message-content a:hover {
1089
+ border-bottom-color: rgba(255, 255, 255, 0.9);
1090
+ }
1091
+
1092
+ .message-content hr {
1093
+ border: none;
1094
+ border-top: 1px solid var(--border-color);
1095
+ margin: var(--spacing-lg) 0;
1096
+ }
1097
+
1098
+ .user-bubble .message-content hr {
1099
+ border-top-color: rgba(255, 255, 255, 0.3);
1100
+ }
1101
+
1102
+ .message-content strong {
1103
+ font-weight: var(--font-weight-semibold);
1104
+ }
1105
+
1106
+ .message-content em {
1107
+ font-style: italic;
1108
+ }
1109
+
1110
+ /* Animation for new content */
1111
+ @keyframes fadeIn {
1112
+ from {
1113
+ opacity: 0;
1114
+ transform: translateY(10px);
1115
+ }
1116
+ to {
1117
+ opacity: 1;
1118
+ transform: translateY(0);
1119
+ }
1120
+ }
1121
+
1122
+ .fade-in {
1123
+ animation: fadeIn 0.3s ease-out;
1124
+ }
1125
+
1126
+ /* Responsive adjustments */
1127
+ @media (max-width: 320px) {
1128
+ .header {
1129
+ padding: var(--spacing-md);
1130
+ }
1131
+
1132
+ .activity-log {
1133
+ padding: var(--spacing-md);
1134
+ }
1135
+
1136
+ .input-section {
1137
+ padding: var(--spacing-md);
1138
+ }
1139
+ }
1140
+
1141
+ /* History Modal Styles - Modern Design */
1142
+ .history-modal-content {
1143
+ width: 92vw;
1144
+ max-width: 900px;
1145
+ min-height: 70vh;
1146
+ max-height: 85vh;
1147
+ display: flex;
1148
+ flex-direction: column;
1149
+ border-radius: 16px;
1150
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
1151
+ background: var(--bg-primary);
1152
+ border: 1px solid var(--border-color);
1153
+ overflow: hidden;
1154
+ }
1155
+
1156
+ .history-content {
1157
+ flex: 1;
1158
+ overflow: auto;
1159
+ display: flex;
1160
+ flex-direction: column;
1161
+ padding: 32px;
1162
+ padding-top: 24px;
1163
+ }
1164
+
1165
+ .history-section {
1166
+ flex: 1;
1167
+ display: flex;
1168
+ flex-direction: column;
1169
+ overflow: visible;
1170
+ min-height: 0;
1171
+ }
1172
+
1173
+ .section-header {
1174
+ display: flex;
1175
+ align-items: center;
1176
+ justify-content: space-between;
1177
+ padding: 0 0 24px 0;
1178
+ border-bottom: 2px solid var(--border-color);
1179
+ margin-bottom: 28px;
1180
+ }
1181
+
1182
+ .section-header h4 {
1183
+ font-size: 24px;
1184
+ font-weight: 700;
1185
+ color: var(--text-primary);
1186
+ margin: 0;
1187
+ letter-spacing: -0.5px;
1188
+ }
1189
+
1190
+ .section-subtitle {
1191
+ font-size: var(--font-size-sm);
1192
+ color: var(--text-muted);
1193
+ margin-top: 4px;
1194
+ font-weight: 500;
1195
+ }
1196
+
1197
+ .back-btn {
1198
+ display: flex;
1199
+ align-items: center;
1200
+ gap: 8px;
1201
+ padding: 10px 20px;
1202
+ border: 2px solid var(--primary-color);
1203
+ border-radius: 12px;
1204
+ background-color: transparent;
1205
+ color: var(--primary-color);
1206
+ font-size: var(--font-size-sm);
1207
+ font-weight: 600;
1208
+ cursor: pointer;
1209
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1210
+ }
1211
+
1212
+ .back-btn:hover {
1213
+ background-color: var(--primary-color);
1214
+ color: white;
1215
+ transform: translateY(-1px);
1216
+ box-shadow: 0 4px 16px rgba(0, 122, 204, 0.2);
1217
+ }
1218
+
1219
+ /* Recent Tasks List */
1220
+ .recent-tasks-list {
1221
+ flex: 1;
1222
+ overflow-y: auto;
1223
+ margin-bottom: 28px;
1224
+ padding-right: 8px;
1225
+ }
1226
+
1227
+ .recent-tasks-list::-webkit-scrollbar {
1228
+ width: 6px;
1229
+ }
1230
+
1231
+ .recent-tasks-list::-webkit-scrollbar-track {
1232
+ background: var(--bg-tertiary);
1233
+ border-radius: 3px;
1234
+ }
1235
+
1236
+ .recent-tasks-list::-webkit-scrollbar-thumb {
1237
+ background: var(--border-color);
1238
+ border-radius: 3px;
1239
+ }
1240
+
1241
+ .recent-tasks-list::-webkit-scrollbar-thumb:hover {
1242
+ background: var(--text-secondary);
1243
+ }
1244
+
1245
+ .recent-task-item {
1246
+ display: flex;
1247
+ align-items: flex-start;
1248
+ gap: 20px;
1249
+ padding: 24px;
1250
+ border: 1px solid var(--border-color);
1251
+ border-radius: 16px;
1252
+ background-color: var(--bg-secondary);
1253
+ margin-bottom: 20px;
1254
+ cursor: pointer;
1255
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1256
+ position: relative;
1257
+ overflow: hidden;
1258
+ }
1259
+
1260
+ .recent-task-item::before {
1261
+ content: '';
1262
+ position: absolute;
1263
+ top: 0;
1264
+ left: 0;
1265
+ right: 0;
1266
+ height: 4px;
1267
+ background: linear-gradient(90deg, var(--primary-color), var(--accent-color));
1268
+ transform: scaleX(0);
1269
+ transition: transform 0.3s ease;
1270
+ }
1271
+
1272
+ .recent-task-item:hover {
1273
+ border-color: var(--primary-color);
1274
+ background-color: var(--bg-hover);
1275
+ transform: translateY(-3px);
1276
+ box-shadow: 0 12px 32px rgba(0, 122, 204, 0.15);
1277
+ }
1278
+
1279
+ .recent-task-item:hover::before {
1280
+ transform: scaleX(1);
1281
+ }
1282
+
1283
+ .task-status-icon {
1284
+ width: 48px;
1285
+ height: 48px;
1286
+ border-radius: 12px;
1287
+ display: flex;
1288
+ align-items: center;
1289
+ justify-content: center;
1290
+ font-size: 20px;
1291
+ flex-shrink: 0;
1292
+ position: relative;
1293
+ }
1294
+
1295
+ .task-status-icon::before {
1296
+ content: '';
1297
+ position: absolute;
1298
+ inset: -2px;
1299
+ border-radius: 14px;
1300
+ padding: 2px;
1301
+ background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.3) 50%, transparent 70%);
1302
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1303
+ mask-composite: exclude;
1304
+ opacity: 0;
1305
+ transition: opacity 0.3s ease;
1306
+ }
1307
+
1308
+ .task-status-icon:hover::before {
1309
+ opacity: 1;
1310
+ }
1311
+
1312
+ .task-status-icon.completed {
1313
+ background: linear-gradient(135deg, rgba(40, 167, 69, 0.1), rgba(40, 167, 69, 0.2));
1314
+ color: var(--accent-color);
1315
+ border: 1px solid rgba(40, 167, 69, 0.3);
1316
+ }
1317
+
1318
+ .task-status-icon.running {
1319
+ background: linear-gradient(135deg, rgba(255, 193, 7, 0.1), rgba(255, 193, 7, 0.2));
1320
+ color: var(--warning-color);
1321
+ border: 1px solid rgba(255, 193, 7, 0.3);
1322
+ }
1323
+
1324
+ .task-status-icon.error {
1325
+ background: linear-gradient(135deg, rgba(220, 53, 69, 0.1), rgba(220, 53, 69, 0.2));
1326
+ color: var(--danger-color);
1327
+ border: 1px solid rgba(220, 53, 69, 0.3);
1328
+ }
1329
+
1330
+ .task-status-icon.pending {
1331
+ background: linear-gradient(135deg, rgba(108, 117, 125, 0.1), rgba(108, 117, 125, 0.2));
1332
+ color: var(--text-muted);
1333
+ border: 1px solid rgba(108, 117, 125, 0.3);
1334
+ }
1335
+
1336
+ .task-item-content {
1337
+ flex: 1;
1338
+ min-width: 0;
1339
+ }
1340
+
1341
+ .task-header {
1342
+ display: flex;
1343
+ align-items: center;
1344
+ justify-content: space-between;
1345
+ margin-bottom: 12px;
1346
+ }
1347
+
1348
+ .session-id-badge {
1349
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
1350
+ font-size: 11px;
1351
+ background: var(--bg-tertiary);
1352
+ color: var(--text-secondary);
1353
+ padding: 6px 12px;
1354
+ border-radius: 8px;
1355
+ border: 1px solid var(--border-color);
1356
+ font-weight: 600;
1357
+ letter-spacing: 0.5px;
1358
+ }
1359
+
1360
+ .task-timestamp {
1361
+ font-size: 12px;
1362
+ color: var(--text-muted);
1363
+ font-weight: 500;
1364
+ }
1365
+
1366
+ .task-description {
1367
+ font-size: 15px;
1368
+ color: var(--text-primary);
1369
+ margin-bottom: 16px;
1370
+ line-height: 1.5;
1371
+ overflow: hidden;
1372
+ display: -webkit-box;
1373
+ -webkit-line-clamp: 2;
1374
+ -webkit-box-orient: vertical;
1375
+ font-weight: 400;
1376
+ }
1377
+
1378
+ .task-meta {
1379
+ display: flex;
1380
+ align-items: center;
1381
+ gap: 12px;
1382
+ font-size: 13px;
1383
+ color: var(--text-muted);
1384
+ }
1385
+
1386
+ .task-status-text {
1387
+ display: flex;
1388
+ align-items: center;
1389
+ gap: 8px;
1390
+ padding: 4px 10px;
1391
+ border-radius: 8px;
1392
+ font-weight: 600;
1393
+ font-size: 12px;
1394
+ }
1395
+
1396
+ .task-status-text.completed {
1397
+ background: linear-gradient(135deg, rgba(40, 167, 69, 0.1), rgba(40, 167, 69, 0.15));
1398
+ color: var(--accent-color);
1399
+ border: 1px solid rgba(40, 167, 69, 0.2);
1400
+ }
1401
+
1402
+ .task-status-text.running {
1403
+ background: linear-gradient(135deg, rgba(255, 193, 7, 0.1), rgba(255, 193, 7, 0.15));
1404
+ color: var(--warning-color);
1405
+ border: 1px solid rgba(255, 193, 7, 0.2);
1406
+ }
1407
+
1408
+ .task-status-text.error {
1409
+ background: linear-gradient(135deg, rgba(220, 53, 69, 0.1), rgba(220, 53, 69, 0.15));
1410
+ color: var(--danger-color);
1411
+ border: 1px solid rgba(220, 53, 69, 0.2);
1412
+ }
1413
+
1414
+ .task-status-text.pending {
1415
+ background: linear-gradient(135deg, rgba(108, 117, 125, 0.1), rgba(108, 117, 125, 0.15));
1416
+ color: var(--text-muted);
1417
+ border: 1px solid rgba(108, 117, 125, 0.2);
1418
+ }
1419
+
1420
+ .view-more-btn {
1421
+ display: flex;
1422
+ align-items: center;
1423
+ justify-content: center;
1424
+ gap: 12px;
1425
+ width: 100%;
1426
+ padding: 20px;
1427
+ border: 2px dashed var(--border-color);
1428
+ border-radius: 16px;
1429
+ background: linear-gradient(135deg, var(--bg-secondary), var(--bg-tertiary));
1430
+ color: var(--text-secondary);
1431
+ font-size: 15px;
1432
+ font-weight: 600;
1433
+ cursor: pointer;
1434
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1435
+ position: relative;
1436
+ overflow: hidden;
1437
+ }
1438
+
1439
+ .view-more-btn::before {
1440
+ content: '';
1441
+ position: absolute;
1442
+ top: 0;
1443
+ left: -100%;
1444
+ width: 100%;
1445
+ height: 100%;
1446
+ background: linear-gradient(90deg, transparent, rgba(0, 122, 204, 0.1), transparent);
1447
+ transition: left 0.5s;
1448
+ }
1449
+
1450
+ .view-more-btn:hover {
1451
+ border-color: var(--primary-color);
1452
+ background: linear-gradient(135deg, var(--bg-hover), var(--bg-secondary));
1453
+ color: var(--primary-color);
1454
+ transform: translateY(-2px);
1455
+ box-shadow: 0 8px 24px rgba(0, 122, 204, 0.15);
1456
+ }
1457
+
1458
+ .view-more-btn:hover::before {
1459
+ left: 100%;
1460
+ }
1461
+
1462
+ /* Search and Filter Bar */
1463
+ .search-filter-bar {
1464
+ display: flex;
1465
+ gap: 20px;
1466
+ margin-bottom: 28px;
1467
+ }
1468
+
1469
+ .search-input {
1470
+ flex: 1;
1471
+ padding: 14px 20px;
1472
+ border: 2px solid var(--border-color);
1473
+ border-radius: 12px;
1474
+ background-color: var(--bg-primary);
1475
+ font-size: 15px;
1476
+ color: var(--text-primary);
1477
+ font-weight: 500;
1478
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1479
+ }
1480
+
1481
+ .search-input::placeholder {
1482
+ color: var(--text-muted);
1483
+ font-weight: 400;
1484
+ }
1485
+
1486
+ .search-input:focus {
1487
+ outline: none;
1488
+ border-color: var(--primary-color);
1489
+ box-shadow: 0 0 0 4px rgba(0, 122, 204, 0.1);
1490
+ transform: translateY(-1px);
1491
+ }
1492
+
1493
+ .filter-select {
1494
+ padding: 14px 18px;
1495
+ border: 2px solid var(--border-color);
1496
+ border-radius: 12px;
1497
+ background-color: var(--bg-primary);
1498
+ font-size: 15px;
1499
+ color: var(--text-primary);
1500
+ font-weight: 500;
1501
+ cursor: pointer;
1502
+ min-width: 140px;
1503
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1504
+ }
1505
+
1506
+ .filter-select:focus {
1507
+ outline: none;
1508
+ border-color: var(--primary-color);
1509
+ box-shadow: 0 0 0 4px rgba(0, 122, 204, 0.1);
1510
+ transform: translateY(-1px);
1511
+ }
1512
+
1513
+ /* All Sessions List */
1514
+ .sessions-list {
1515
+ flex: 1;
1516
+ overflow-y: auto;
1517
+ margin-bottom: 28px;
1518
+ padding-right: 8px;
1519
+ }
1520
+
1521
+ .sessions-list::-webkit-scrollbar {
1522
+ width: 6px;
1523
+ }
1524
+
1525
+ .sessions-list::-webkit-scrollbar-track {
1526
+ background: var(--bg-tertiary);
1527
+ border-radius: 3px;
1528
+ }
1529
+
1530
+ .sessions-list::-webkit-scrollbar-thumb {
1531
+ background: var(--border-color);
1532
+ border-radius: 3px;
1533
+ }
1534
+
1535
+ .sessions-list::-webkit-scrollbar-thumb:hover {
1536
+ background: var(--text-secondary);
1537
+ }
1538
+
1539
+ .session-item {
1540
+ display: flex;
1541
+ align-items: center;
1542
+ gap: 20px;
1543
+ padding: 20px;
1544
+ border: 1px solid var(--border-color);
1545
+ border-radius: 12px;
1546
+ background-color: var(--bg-primary);
1547
+ margin-bottom: 16px;
1548
+ cursor: pointer;
1549
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1550
+ position: relative;
1551
+ overflow: hidden;
1552
+ }
1553
+
1554
+ .session-item::before {
1555
+ content: '';
1556
+ position: absolute;
1557
+ top: 0;
1558
+ left: 0;
1559
+ right: 0;
1560
+ height: 3px;
1561
+ background: linear-gradient(90deg, var(--primary-color), var(--accent-color));
1562
+ transform: scaleX(0);
1563
+ transition: transform 0.3s ease;
1564
+ }
1565
+
1566
+ .session-item:hover {
1567
+ border-color: var(--primary-color);
1568
+ background-color: var(--bg-hover);
1569
+ transform: translateY(-2px);
1570
+ box-shadow: 0 8px 24px rgba(0, 122, 204, 0.15);
1571
+ }
1572
+
1573
+ .session-item:hover::before {
1574
+ transform: scaleX(1);
1575
+ }
1576
+
1577
+ .session-info {
1578
+ flex: 1;
1579
+ min-width: 0;
1580
+ }
1581
+
1582
+ .session-header {
1583
+ display: flex;
1584
+ align-items: center;
1585
+ justify-content: space-between;
1586
+ margin-bottom: 8px;
1587
+ }
1588
+
1589
+ .session-id {
1590
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
1591
+ font-size: 14px;
1592
+ font-weight: 600;
1593
+ color: var(--text-primary);
1594
+ letter-spacing: 0.3px;
1595
+ }
1596
+
1597
+ .session-time {
1598
+ font-size: 12px;
1599
+ color: var(--text-muted);
1600
+ font-weight: 500;
1601
+ }
1602
+
1603
+ .session-details {
1604
+ display: flex;
1605
+ align-items: center;
1606
+ gap: 16px;
1607
+ font-size: 13px;
1608
+ color: var(--text-secondary);
1609
+ }
1610
+
1611
+ .task-count {
1612
+ display: flex;
1613
+ align-items: center;
1614
+ gap: 6px;
1615
+ font-weight: 600;
1616
+ }
1617
+
1618
+ .session-status {
1619
+ display: flex;
1620
+ align-items: center;
1621
+ gap: 8px;
1622
+ font-weight: 500;
1623
+ }
1624
+
1625
+ /* Pagination Controls */
1626
+ .pagination-controls {
1627
+ display: flex;
1628
+ align-items: center;
1629
+ justify-content: center;
1630
+ gap: 16px;
1631
+ padding: 24px 0;
1632
+ border-top: 2px solid var(--border-color);
1633
+ margin-top: auto;
1634
+ }
1635
+
1636
+ .page-btn {
1637
+ padding: 12px 20px;
1638
+ border: 2px solid var(--border-color);
1639
+ border-radius: 10px;
1640
+ background-color: var(--bg-primary);
1641
+ color: var(--text-primary);
1642
+ font-size: 14px;
1643
+ font-weight: 600;
1644
+ cursor: pointer;
1645
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1646
+ }
1647
+
1648
+ .page-btn:hover:not(:disabled) {
1649
+ border-color: var(--primary-color);
1650
+ background-color: var(--primary-color);
1651
+ color: white;
1652
+ transform: translateY(-1px);
1653
+ box-shadow: 0 4px 16px rgba(0, 122, 204, 0.2);
1654
+ }
1655
+
1656
+ .page-btn:disabled {
1657
+ background-color: var(--bg-tertiary);
1658
+ color: var(--text-muted);
1659
+ cursor: not-allowed;
1660
+ opacity: 0.4;
1661
+ }
1662
+
1663
+ .page-btn:disabled:hover {
1664
+ transform: none;
1665
+ box-shadow: none;
1666
+ }
1667
+
1668
+ .page-info {
1669
+ font-size: 14px;
1670
+ color: var(--text-secondary);
1671
+ font-weight: 600;
1672
+ }
1673
+
1674
+ /* Empty State - Enhanced */
1675
+ .empty-state {
1676
+ display: flex;
1677
+ flex-direction: column;
1678
+ align-items: center;
1679
+ justify-content: center;
1680
+ padding: 60px 40px;
1681
+ text-align: center;
1682
+ color: var(--text-muted);
1683
+ min-height: 300px;
1684
+ background: linear-gradient(135deg, var(--bg-secondary), var(--bg-tertiary));
1685
+ border-radius: 16px;
1686
+ border: 2px dashed var(--border-color);
1687
+ margin: 20px 0;
1688
+ }
1689
+
1690
+ .empty-state-icon {
1691
+ font-size: 72px;
1692
+ margin-bottom: 24px;
1693
+ opacity: 0.6;
1694
+ filter: grayscale(0.3);
1695
+ }
1696
+
1697
+ .empty-state-title {
1698
+ font-size: 20px;
1699
+ font-weight: 600;
1700
+ color: var(--text-secondary);
1701
+ margin-bottom: 16px;
1702
+ letter-spacing: -0.3px;
1703
+ }
1704
+
1705
+ .empty-state-description {
1706
+ font-size: 15px;
1707
+ line-height: 1.6;
1708
+ opacity: 0.8;
1709
+ max-width: 320px;
1710
+ }
1711
+
1712
+ /* Loading States */
1713
+ .loading-skeleton {
1714
+ background: linear-gradient(90deg, var(--bg-tertiary) 25%, var(--bg-secondary) 50%, var(--bg-tertiary) 75%);
1715
+ background-size: 200% 100%;
1716
+ animation: loading 1.5s infinite;
1717
+ }
1718
+
1719
+ @keyframes loading {
1720
+ 0% {
1721
+ background-position: 200% 0;
1722
+ }
1723
+ 100% {
1724
+ background-position: -200% 0;
1725
+ }
1726
+ }
1727
+
1728
+ .skeleton-task-item {
1729
+ height: 80px;
1730
+ border-radius: var(--radius-lg);
1731
+ margin-bottom: var(--spacing-md);
1732
+ }
1733
+
1734
+ .skeleton-session-item {
1735
+ height: 60px;
1736
+ border-radius: var(--radius-md);
1737
+ margin-bottom: var(--spacing-sm);
1738
+ }
1739
+
1740
+ /* Responsive adjustments for history modal */
1741
+ @media (max-width: 768px) {
1742
+ .history-modal-content {
1743
+ width: 95vw;
1744
+ max-height: 90vh;
1745
+ }
1746
+
1747
+ .search-filter-bar {
1748
+ flex-direction: column;
1749
+ }
1750
+
1751
+ .task-header {
1752
+ flex-direction: column;
1753
+ align-items: flex-start;
1754
+ gap: var(--spacing-xs);
1755
+ }
1756
+
1757
+ .session-header {
1758
+ flex-direction: column;
1759
+ align-items: flex-start;
1760
+ gap: var(--spacing-xs);
1761
+ }
1762
+ }
1763
+
1764
+ @media (max-width: 480px) {
1765
+ .recent-task-item {
1766
+ padding: var(--spacing-md);
1767
+ }
1768
+
1769
+ .task-item-content {
1770
+ min-width: 0;
1771
+ }
1772
+
1773
+ .task-description {
1774
+ -webkit-line-clamp: 3;
1775
+ }
1776
+ }
1777
+
1778
+ /* Enhanced History Modal Styles */
1779
+
1780
+ /* Loading States - Enhanced */
1781
+ .loading-skeleton {
1782
+ background: linear-gradient(90deg,
1783
+ var(--bg-tertiary) 25%,
1784
+ rgba(0, 122, 204, 0.1) 50%,
1785
+ var(--bg-tertiary) 75%);
1786
+ background-size: 200% 100%;
1787
+ animation: shimmer 2s infinite ease-in-out;
1788
+ border-radius: 12px;
1789
+ }
1790
+
1791
+ @keyframes shimmer {
1792
+ 0% {
1793
+ background-position: 200% 0;
1794
+ }
1795
+ 100% {
1796
+ background-position: -200% 0;
1797
+ }
1798
+ }
1799
+
1800
+ .skeleton-task-item {
1801
+ height: 96px;
1802
+ border-radius: 16px;
1803
+ margin-bottom: 20px;
1804
+ position: relative;
1805
+ overflow: hidden;
1806
+ }
1807
+
1808
+ .skeleton-task-item::before {
1809
+ content: '';
1810
+ position: absolute;
1811
+ top: 0;
1812
+ left: 0;
1813
+ right: 0;
1814
+ height: 4px;
1815
+ background: linear-gradient(90deg, var(--primary-color), var(--accent-color));
1816
+ opacity: 0.3;
1817
+ }
1818
+
1819
+ .skeleton-session-item {
1820
+ height: 76px;
1821
+ border-radius: 12px;
1822
+ margin-bottom: 16px;
1823
+ position: relative;
1824
+ overflow: hidden;
1825
+ }
1826
+
1827
+ .skeleton-session-item::before {
1828
+ content: '';
1829
+ position: absolute;
1830
+ top: 0;
1831
+ left: 0;
1832
+ right: 0;
1833
+ height: 3px;
1834
+ background: linear-gradient(90deg, var(--primary-color), var(--accent-color));
1835
+ opacity: 0.3;
1836
+ }
1837
+
1838
+ /* Enhanced Status Dots */
1839
+ .history-modal .status-dot {
1840
+ width: 10px;
1841
+ height: 10px;
1842
+ border-radius: 50%;
1843
+ display: inline-block;
1844
+ position: relative;
1845
+ margin-right: 4px;
1846
+ }
1847
+
1848
+ .history-modal .status-dot::before {
1849
+ content: '';
1850
+ position: absolute;
1851
+ top: -3px;
1852
+ left: -3px;
1853
+ right: -3px;
1854
+ bottom: -3px;
1855
+ border-radius: 50%;
1856
+ opacity: 0.3;
1857
+ }
1858
+
1859
+ .history-modal .status-dot.completed,
1860
+ .history-modal .status-dot.done {
1861
+ background: var(--accent-color);
1862
+ }
1863
+
1864
+ .history-modal .status-dot.completed::before,
1865
+ .history-modal .status-dot.done::before {
1866
+ background: var(--accent-color);
1867
+ }
1868
+
1869
+ .history-modal .status-dot.running {
1870
+ background: var(--warning-color);
1871
+ animation: pulse-dot 2s infinite;
1872
+ }
1873
+
1874
+ .history-modal .status-dot.running::before {
1875
+ background: var(--warning-color);
1876
+ animation: pulse-ring 2s infinite;
1877
+ }
1878
+
1879
+ .history-modal .status-dot.failed,
1880
+ .history-modal .status-dot.error {
1881
+ background: var(--danger-color);
1882
+ }
1883
+
1884
+ .history-modal .status-dot.failed::before,
1885
+ .history-modal .status-dot.error::before {
1886
+ background: var(--danger-color);
1887
+ }
1888
+
1889
+ .history-modal .status-dot.paused {
1890
+ background: var(--text-muted);
1891
+ }
1892
+
1893
+ .history-modal .status-dot.paused::before {
1894
+ background: var(--text-muted);
1895
+ }
1896
+
1897
+ .history-modal .status-dot.active {
1898
+ background: var(--accent-color);
1899
+ animation: pulse-dot 2s infinite;
1900
+ }
1901
+
1902
+ .history-modal .status-dot.active::before {
1903
+ background: var(--accent-color);
1904
+ animation: pulse-ring 2s infinite;
1905
+ }
1906
+
1907
+ @keyframes pulse-dot {
1908
+ 0%, 100% {
1909
+ opacity: 1;
1910
+ transform: scale(1);
1911
+ }
1912
+ 50% {
1913
+ opacity: 0.7;
1914
+ transform: scale(0.9);
1915
+ }
1916
+ }
1917
+
1918
+ @keyframes pulse-ring {
1919
+ 0% {
1920
+ transform: scale(0.8);
1921
+ opacity: 0.8;
1922
+ }
1923
+ 50% {
1924
+ transform: scale(1.2);
1925
+ opacity: 0.3;
1926
+ }
1927
+ 100% {
1928
+ transform: scale(1.6);
1929
+ opacity: 0;
1930
+ }
1931
+ }
1932
+
1933
+ /* Enhanced Scrollbar Styles for History Modal */
1934
+ .recent-tasks-list::-webkit-scrollbar,
1935
+ .sessions-list::-webkit-scrollbar {
1936
+ width: 8px;
1937
+ }
1938
+
1939
+ .recent-tasks-list::-webkit-scrollbar-track,
1940
+ .sessions-list::-webkit-scrollbar-track {
1941
+ background: var(--bg-tertiary);
1942
+ border-radius: 4px;
1943
+ margin: 8px 0;
1944
+ }
1945
+
1946
+ .recent-tasks-list::-webkit-scrollbar-thumb,
1947
+ .sessions-list::-webkit-scrollbar-thumb {
1948
+ background: linear-gradient(135deg, var(--border-color), var(--text-muted));
1949
+ border-radius: 4px;
1950
+ border: 1px solid var(--bg-tertiary);
1951
+ }
1952
+
1953
+ .recent-tasks-list::-webkit-scrollbar-thumb:hover,
1954
+ .sessions-list::-webkit-scrollbar-thumb:hover {
1955
+ background: linear-gradient(135deg, var(--text-secondary), var(--primary-color));
1956
+ }
1957
+
1958
+ /* Enhanced Mobile Responsive Design */
1959
+ @media (max-width: 768px) {
1960
+ .history-modal-content {
1961
+ width: 96vw !important;
1962
+ max-height: 92vh !important;
1963
+ border-radius: 12px !important;
1964
+ margin: 16px !important;
1965
+ }
1966
+
1967
+ .history-content {
1968
+ padding: 24px !important;
1969
+ padding-top: 20px !important;
1970
+ }
1971
+
1972
+ .section-header {
1973
+ padding-bottom: 20px !important;
1974
+ margin-bottom: 24px !important;
1975
+ }
1976
+
1977
+ .section-header h4 {
1978
+ font-size: 20px !important;
1979
+ }
1980
+
1981
+ .search-filter-bar {
1982
+ flex-direction: column !important;
1983
+ gap: 16px !important;
1984
+ }
1985
+
1986
+ .search-input, .filter-select {
1987
+ padding: 12px 16px !important;
1988
+ font-size: 14px !important;
1989
+ }
1990
+
1991
+ .recent-task-item {
1992
+ padding: 20px !important;
1993
+ gap: 16px !important;
1994
+ margin-bottom: 16px !important;
1995
+ }
1996
+
1997
+ .task-status-icon {
1998
+ width: 40px !important;
1999
+ height: 40px !important;
2000
+ font-size: 18px !important;
2001
+ }
2002
+
2003
+ .task-header {
2004
+ flex-direction: column !important;
2005
+ align-items: flex-start !important;
2006
+ gap: 8px !important;
2007
+ }
2008
+
2009
+ .session-item {
2010
+ padding: 16px !important;
2011
+ gap: 16px !important;
2012
+ margin-bottom: 12px !important;
2013
+ }
2014
+
2015
+ .session-header {
2016
+ flex-direction: column !important;
2017
+ align-items: flex-start !important;
2018
+ gap: 6px !important;
2019
+ }
2020
+
2021
+ .pagination-controls {
2022
+ flex-direction: column !important;
2023
+ gap: 16px !important;
2024
+ text-align: center !important;
2025
+ padding: 20px 0 !important;
2026
+ }
2027
+
2028
+ .page-btn {
2029
+ padding: 10px 16px !important;
2030
+ font-size: 13px !important;
2031
+ }
2032
+
2033
+ .view-more-btn {
2034
+ padding: 16px !important;
2035
+ font-size: 14px !important;
2036
+ }
2037
+ }
2038
+
2039
+ @media (max-width: 480px) {
2040
+ .history-modal-content {
2041
+ width: 98vw !important;
2042
+ max-height: 95vh !important;
2043
+ border-radius: 8px !important;
2044
+ margin: 8px !important;
2045
+ }
2046
+
2047
+ .history-content {
2048
+ padding: 20px !important;
2049
+ padding-top: 16px !important;
2050
+ }
2051
+
2052
+ .section-header h4 {
2053
+ font-size: 18px !important;
2054
+ }
2055
+
2056
+ .back-btn {
2057
+ padding: 8px 16px !important;
2058
+ font-size: 13px !important;
2059
+ }
2060
+
2061
+ .recent-task-item {
2062
+ padding: 16px !important;
2063
+ gap: 12px !important;
2064
+ border-radius: 12px !important;
2065
+ }
2066
+
2067
+ .task-status-icon {
2068
+ width: 36px !important;
2069
+ height: 36px !important;
2070
+ font-size: 16px !important;
2071
+ border-radius: 10px !important;
2072
+ }
2073
+
2074
+ .session-id-badge {
2075
+ font-size: 10px !important;
2076
+ padding: 4px 8px !important;
2077
+ }
2078
+
2079
+ .task-timestamp, .session-time {
2080
+ font-size: 11px !important;
2081
+ }
2082
+
2083
+ .task-description {
2084
+ font-size: 14px !important;
2085
+ -webkit-line-clamp: 3 !important;
2086
+ margin-bottom: 12px !important;
2087
+ }
2088
+
2089
+ .task-meta, .session-details {
2090
+ font-size: 12px !important;
2091
+ gap: 8px !important;
2092
+ }
2093
+
2094
+ .task-status-text {
2095
+ padding: 3px 8px !important;
2096
+ font-size: 11px !important;
2097
+ }
2098
+
2099
+ .session-item {
2100
+ padding: 14px !important;
2101
+ gap: 12px !important;
2102
+ border-radius: 10px !important;
2103
+ }
2104
+
2105
+ .session-id {
2106
+ font-size: 13px !important;
2107
+ }
2108
+
2109
+ .empty-state {
2110
+ padding: 40px 20px !important;
2111
+ min-height: 240px !important;
2112
+ }
2113
+
2114
+ .empty-state-icon {
2115
+ font-size: 56px !important;
2116
+ margin-bottom: 20px !important;
2117
+ }
2118
+
2119
+ .empty-state-title {
2120
+ font-size: 18px !important;
2121
+ margin-bottom: 12px !important;
2122
+ }
2123
+
2124
+ .empty-state-description {
2125
+ font-size: 14px !important;
2126
+ max-width: 280px !important;
2127
+ }
2128
+ }
2129
+
2130
+ @media (max-width: 360px) {
2131
+ .history-content {
2132
+ padding: 16px !important;
2133
+ }
2134
+
2135
+ .recent-task-item {
2136
+ flex-direction: column !important;
2137
+ align-items: flex-start !important;
2138
+ text-align: left !important;
2139
+ }
2140
+
2141
+ .task-status-icon {
2142
+ align-self: flex-end !important;
2143
+ margin-bottom: 8px !important;
2144
+ }
2145
+
2146
+ .task-header {
2147
+ width: 100% !important;
2148
+ }
2149
+
2150
+ .session-item {
2151
+ flex-direction: column !important;
2152
+ align-items: flex-start !important;
2153
+ }
2154
+
2155
+ .session-header {
2156
+ width: 100% !important;
2157
+ }
2158
+ }
2159
+
2160
+ /* Accessibility Enhancements for History Modal */
2161
+ @media (prefers-reduced-motion: reduce) {
2162
+ .recent-task-item,
2163
+ .session-item,
2164
+ .view-more-btn,
2165
+ .back-btn,
2166
+ .page-btn {
2167
+ transition: none !important;
2168
+ }
2169
+
2170
+ .recent-task-item:hover,
2171
+ .session-item:hover {
2172
+ transform: none !important;
2173
+ }
2174
+
2175
+ .loading-skeleton {
2176
+ animation: none !important;
2177
+ background: var(--bg-tertiary) !important;
2178
+ }
2179
+
2180
+ .history-modal .status-dot.running,
2181
+ .history-modal .status-dot.active {
2182
+ animation: none !important;
2183
+ }
2184
+
2185
+ .history-modal .status-dot.running::before,
2186
+ .history-modal .status-dot.active::before {
2187
+ animation: none !important;
2188
+ opacity: 0 !important;
2189
+ }
2190
+ }
2191
+
2192
+ /* Focus Styles for Keyboard Navigation */
2193
+ .recent-task-item:focus,
2194
+ .session-item:focus,
2195
+ .view-more-btn:focus,
2196
+ .back-btn:focus {
2197
+ outline: 3px solid var(--primary-color) !important;
2198
+ outline-offset: 2px !important;
2199
+ }
2200
+
2201
+ /* High Contrast Mode Support */
2202
+ @media (prefers-contrast: high) {
2203
+ .recent-task-item,
2204
+ .session-item {
2205
+ border-width: 2px !important;
2206
+ }
2207
+
2208
+ .task-status-icon,
2209
+ .task-status-text {
2210
+ border-width: 2px !important;
2211
+ }
2212
+
2213
+ .history-modal .status-dot {
2214
+ border: 2px solid currentColor !important;
2215
+ }
2216
+ }
2217
+
2218
+ /* Dark Mode Support (Future Enhancement) */
2219
+ @media (prefers-color-scheme: dark) {
2220
+ .loading-skeleton {
2221
+ background: linear-gradient(90deg,
2222
+ rgba(255, 255, 255, 0.1) 25%,
2223
+ rgba(0, 122, 204, 0.2) 50%,
2224
+ rgba(255, 255, 255, 0.1) 75%) !important;
2225
+ }
2226
+
2227
+ .recent-tasks-list::-webkit-scrollbar-thumb,
2228
+ .sessions-list::-webkit-scrollbar-thumb {
2229
+ background: linear-gradient(135deg, rgba(255, 255, 255, 0.2), rgba(0, 122, 204, 0.4)) !important;
2230
+ }
2231
+ }
2232
+
2233
+ /* File Upload Styles */
2234
+ .uploaded-files-container {
2235
+ margin-top: var(--spacing-sm);
2236
+ margin-bottom: var(--spacing-sm);
2237
+ padding: var(--spacing-sm);
2238
+ background-color: var(--bg-secondary);
2239
+ border: 1px solid var(--border-color);
2240
+ border-radius: var(--radius-md);
2241
+ max-height: 120px;
2242
+ overflow-y: auto;
2243
+ display: none; /* Hidden by default */
2244
+ }
2245
+
2246
+ .uploaded-files-container .files-items {
2247
+ display: flex;
2248
+ flex-direction: column;
2249
+ gap: var(--spacing-xs);
2250
+ }
2251
+
2252
+ .uploaded-files-container .file-item {
2253
+ display: flex;
2254
+ align-items: center;
2255
+ justify-content: space-between;
2256
+ padding: var(--spacing-xs) var(--spacing-sm);
2257
+ background-color: var(--bg-primary);
2258
+ border: 1px solid var(--border-color);
2259
+ border-radius: var(--radius-sm);
2260
+ font-size: var(--font-size-sm);
2261
+ }
2262
+
2263
+ .uploaded-files-container .file-name {
2264
+ flex: 1;
2265
+ color: var(--text-primary);
2266
+ font-weight: var(--font-weight-medium);
2267
+ overflow: hidden;
2268
+ text-overflow: ellipsis;
2269
+ white-space: nowrap;
2270
+ margin-right: var(--spacing-sm);
2271
+ }
2272
+
2273
+ .uploaded-files-container .file-remove-btn {
2274
+ display: flex;
2275
+ align-items: center;
2276
+ justify-content: center;
2277
+ width: 20px;
2278
+ height: 20px;
2279
+ border: none;
2280
+ border-radius: var(--radius-sm);
2281
+ background-color: var(--danger-color);
2282
+ color: white;
2283
+ font-size: 14px;
2284
+ font-weight: bold;
2285
+ cursor: pointer;
2286
+ transition: all var(--transition-fast);
2287
+ flex-shrink: 0;
2288
+ }
2289
+
2290
+ .uploaded-files-container .file-remove-btn:hover {
2291
+ background-color: #c82333;
2292
+ transform: scale(1.1);
2293
+ }
2294
+
2295
+ .uploaded-files-container .file-remove-btn:active {
2296
+ transform: scale(0.95);
2297
+ }
2298
+
2299
+ .uploaded-files-container .error-message {
2300
+ padding: var(--spacing-sm);
2301
+ background-color: rgba(220, 53, 69, 0.1);
2302
+ border: 1px solid var(--danger-color);
2303
+ border-radius: var(--radius-sm);
2304
+ color: var(--danger-color);
2305
+ font-size: var(--font-size-sm);
2306
+ text-align: center;
2307
+ }