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