@hef2024/llmasaservice-ui 0.16.8

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.
@@ -0,0 +1,1093 @@
1
+ /* --------------------------------------------------------
2
+ LLM PANEL CSS
3
+ Version: 1.2.0
4
+ -------------------------------------------------------- */
5
+
6
+ *,
7
+ *::before,
8
+ *::after {
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ /* Root Variables */
13
+ :root {
14
+ /* Spacing Variables */
15
+ --spacing-small: 0.3rem;
16
+ --spacing-medium: 0.5rem;
17
+ --spacing-large: 1rem;
18
+
19
+ --border-radius: 10px;
20
+ --icon-size-large: 1rem;
21
+ --icon-button-size-large: 2.5rem;
22
+ --icon-size-small: 1.5rem;
23
+ --icon-button-size-small: 1.7rem;
24
+ --button-send-size: 40px;
25
+ --input-height: 40px;
26
+
27
+ /* Light Theme Colors */
28
+ --background-color: #fff;
29
+
30
+ --title-text-color: #555;
31
+ --title-background-color: #fff;
32
+ --title-divider-color: #eee;
33
+
34
+ --input-background-color: #eee;
35
+ --input-border-color: #ddd;
36
+ --input-text-color: #555;
37
+
38
+ --button-background-color: #eee;
39
+ --button-border-color: #ddd;
40
+ --button-text-color: #555;
41
+ --button-background-color-hover: #777;
42
+ --button-text-color-hover: #fff;
43
+ --button-drop-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15);
44
+ --button-disabled-color: #ccc;
45
+ --button-disabled-background-color: #eee;
46
+
47
+ --button-action-background-color: transparent;
48
+ --button-action-text-color: #999;
49
+
50
+ --prompt-background-color: #eeeeee;
51
+ --prompt-text-color: #000;
52
+
53
+ --response-background-color: #ffffff;
54
+ --response-text-color: #000;
55
+
56
+ --button-scroll-background-color: #777;
57
+ --button-scroll-text-color: #fff;
58
+ --button-scroll-background-color-hover: #999;
59
+
60
+ --table-border-color: #777;
61
+ --powered-by-text-color: #999;
62
+
63
+ --background-color-mandatory: #ffcccc;
64
+ --border-color-mandatory: #ff5555;
65
+ --text-color-manadatory: #ff5555;
66
+ }
67
+
68
+ /* Dark Theme Overrides */
69
+ .dark-theme {
70
+ --background-color: #171717;
71
+
72
+ --title-text-color: #e0e0e0;
73
+ --title-background-color: #171717;
74
+ --title-divider-color: #333;
75
+
76
+ --input-background-color: #2c2c2c;
77
+ --input-border-color: #444;
78
+ --input-text-color: #e0e0e0;
79
+
80
+ --button-background-color: #3a3a3a;
81
+ --button-border-color: #555;
82
+ --button-text-color: #e0e0e0;
83
+ --button-background-color-hover: #505050;
84
+ --button-text-color-hover: #fff;
85
+ --button-drop-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
86
+ --button-disabled-color: #808080;
87
+ --button-disabled-background-color: #505050;
88
+
89
+ --button-action-background-color: transparent;
90
+ --button-action-text-color: #bbb;
91
+
92
+ --prompt-background-color: #333333;
93
+ --prompt-text-color: #ffffff;
94
+
95
+ --response-background-color: #171717;
96
+ --response-text-color: #e0e0e0;
97
+
98
+ --button-scroll-background-color: #505050;
99
+ --button-scroll-text-color: #fff;
100
+ --button-scroll-background-color-hover: #606060;
101
+
102
+ --table-border-color: #444;
103
+
104
+ --background-color-mandatory: #2c2c2c;
105
+ --border-color-mandatory: #ff5555;
106
+ --text-color-manadatory: #e0e0e0;
107
+ }
108
+
109
+ /* --------------------------------------------------------
110
+ LLM PANEL Styles
111
+ -------------------------------------------------------- */
112
+ .llm-panel {
113
+ font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
114
+ font-size: 0.875rem;
115
+ background-color: var(--background-color);
116
+ display: flex;
117
+ flex-direction: column;
118
+ position: relative;
119
+ padding: var(--spacing-medium);
120
+ }
121
+
122
+ /* Title Panel */
123
+ .llm-panel .title {
124
+ font-size: 1rem;
125
+ padding: var(--spacing-medium);
126
+ border-bottom: 0.5px solid var(--title-divider-color);
127
+ text-align: center;
128
+ color: var(--title-text-color);
129
+ background-color: var(--title-background-color);
130
+ }
131
+
132
+ /* Input Container */
133
+ .llm-panel .input-container {
134
+ display: flex;
135
+ flex-direction: row;
136
+ align-items: center;
137
+ margin-top: var(--spacing-small);
138
+ }
139
+
140
+ .llm-panel .email-input-container {
141
+ display: flex;
142
+ flex-direction: row;
143
+ width: 100%;
144
+ gap: var(--spacing-small);
145
+ margin-top: var(--spacing-small);
146
+ margin-bottom: var(--spacing-small);
147
+ padding-right: var(--spacing-small);
148
+ }
149
+
150
+ .llm-panel .email-input {
151
+ flex: 1;
152
+ color: var(--input-text-color);
153
+ padding: var(--spacing-small);
154
+ background-color: var(--input-background-color);
155
+ border: 1px solid var(--input-border-color);
156
+ }
157
+
158
+ .llm-panel .email-input-invalid {
159
+ flex: 1;
160
+ color: var(--input-text-color);
161
+ padding: var(--spacing-small);
162
+ background-color: var(--background-color-mandatory);
163
+ border: 1px solid var(--border-color-mandatory);
164
+ }
165
+
166
+ .llm-panel .email-input-message {
167
+ color: var(--text-color-manadatory);
168
+ font-size: 0.8em;
169
+ margin-top: var(--spacing-small);
170
+ }
171
+
172
+ .llm-panel .email-input-invalid::placeholder {
173
+ color: var(--text-color-manadatory);
174
+ }
175
+
176
+ .llm-panel .email-input-set {
177
+ flex: 1;
178
+ color: var(--input-text-color);
179
+ padding: var(--spacing-small);
180
+ background-color: var(--background-color);
181
+ border: 0px solid var(--background-color);
182
+ opacity: 0.7;
183
+ user-select: none;
184
+ }
185
+
186
+ .llm-panel .email-input-button:hover {
187
+ background-color: var(--button-background-color-hover);
188
+ color: var(--button-text-color-hover);
189
+ }
190
+
191
+ .llm-panel .email-input-button {
192
+ padding: var(--spacing-small);
193
+ background-color: var(--button-background-color);
194
+ color: var(--button-text-color);
195
+ border-radius: var(--border-radius);
196
+ border: 1px solid var(--button-border-color);
197
+ cursor: pointer;
198
+ transition: background-color 0.3s ease;
199
+ white-space: nowrap;
200
+ }
201
+
202
+ /* Textarea Styling */
203
+ .llm-panel .chat-input {
204
+ flex: 1;
205
+ color: var(--input-text-color);
206
+ margin: 0 var(--spacing-small);
207
+ padding: var(--spacing-small);
208
+ border-radius: var(--border-radius);
209
+ min-height: var(--input-height);
210
+ max-height: 120px; /* About 4 lines */
211
+ resize: vertical; /* Allow vertical resize only */
212
+ overflow-y: auto; /* Allow scrolling if content exceeds max-height */
213
+ background-color: var(--input-background-color);
214
+ border: 1px solid var(--input-border-color);
215
+ transition: height 0.1s ease; /* Smooth height transitions */
216
+ }
217
+
218
+ /* When user has manually resized, remove max-height constraint */
219
+ .llm-panel .chat-input.user-resized {
220
+ max-height: none;
221
+ }
222
+
223
+ .llm-panel .chat-input:focus,
224
+ .llm-panel input:focus {
225
+ outline: none;
226
+ border: 2px solid var(--button-background-color-hover);
227
+ box-shadow: 0 0 5px var(--button-background-color-hover);
228
+ }
229
+
230
+ .llm-panel .chat-input:disabled {
231
+ background-color: var(--button-disabled-background-color);
232
+ cursor: not-allowed;
233
+ }
234
+
235
+ .llm-panel .chat-input:disabled::placeholder {
236
+ color: var(--button-disabled-color);
237
+ }
238
+
239
+ /* Send Button */
240
+ .llm-panel .send-button {
241
+ margin-right: var(--spacing-small);
242
+ padding: var(--spacing-small);
243
+ background-color: var(--button-background-color);
244
+ color: var(--button-text-color);
245
+ background-color: var(--input-background-color);
246
+ border: 1px solid var(--input-border-color);
247
+ border-radius: var(--border-radius);
248
+ cursor: pointer;
249
+ height: var(--button-send-size);
250
+ width: var(--button-send-size);
251
+ transition: background-color 0.3s ease;
252
+ }
253
+
254
+ .llm-panel .send-button:hover {
255
+ background-color: var(--button-background-color-hover);
256
+ color: var(--button-text-color-hover);
257
+ }
258
+
259
+ .llm-panel .send-button:disabled {
260
+ cursor: not-allowed;
261
+ color: var(--button-disabled-color);
262
+ background-color: var(--button-disabled-background-color);
263
+ }
264
+
265
+ /* History Entry Container */
266
+ .llm-panel .history-entry {
267
+ background-color: var(--background-color);
268
+ padding-bottom: var(--spacing-medium);
269
+ border-radius: var(--border-radius);
270
+ margin-bottom: var(--spacing-medium);
271
+ }
272
+
273
+ /* Response Area (Scrollable) */
274
+ .llm-panel .responseArea {
275
+ flex: 1;
276
+ background-color: var(--background-color);
277
+ border-radius: var(--border-radius);
278
+ overflow-y: auto;
279
+ padding: var(--spacing-medium);
280
+ margin-top: var(--spacing-medium);
281
+ }
282
+
283
+ /* Chat Prompt Bubble */
284
+ .llm-panel .prompt {
285
+ align-self: flex-start;
286
+ padding: var(--spacing-medium);
287
+ border-radius: 25px;
288
+ margin-left: 5%;
289
+ max-width: 100%;
290
+ white-space: pre-wrap;
291
+ background-color: var(--prompt-background-color);
292
+ color: var(--prompt-text-color);
293
+ margin-top: var(--spacing-small);
294
+ }
295
+
296
+ /* Chat Response Bubble */
297
+ .llm-panel .response {
298
+ align-self: flex-end;
299
+ padding: var(--spacing-small);
300
+ background-color: var(--response-background-color);
301
+ color: var(--response-text-color);
302
+ margin-top: var(--spacing-small);
303
+ }
304
+
305
+ /* Copy & Thumbs Buttons */
306
+ .llm-panel .copy-button,
307
+ .llm-panel .thumbs-button {
308
+ font-size: var(--icon-size-small);
309
+ border: none;
310
+ background-color: var(--button-action-background-color);
311
+ color: var(--button-action-text-color);
312
+ cursor: pointer;
313
+ width: var(--icon-button-size-small);
314
+ height: var(--icon-button-size-small);
315
+ display: flex;
316
+ justify-content: center;
317
+ align-items: center;
318
+ }
319
+
320
+ .llm-panel .copy-button:hover,
321
+ .llm-panel .thumbs-button:hover {
322
+ color: var(--button-text-color-hover);
323
+ background-color: var(--button-background-color-hover);
324
+ box-shadow: 0 0 5px var(--button-background-color-hover);
325
+ }
326
+
327
+ .llm-panel .copy-button:disabled,
328
+ .llm-panel .thumbs-button:disabled {
329
+ cursor: not-allowed;
330
+ color: var(--button-disabled-color);
331
+ background-color: var(--button-disabled-background-color);
332
+ }
333
+
334
+ /* SVG Icons */
335
+ .llm-panel .icon-svg {
336
+ width: var(--icon-size-small);
337
+ height: var(--icon-size-small);
338
+ margin: 0;
339
+ }
340
+
341
+ .llm-panel .icon-svg-large {
342
+ width: var(--icon-size-large);
343
+ height: var(--icon-size-large);
344
+ margin: 0;
345
+ }
346
+
347
+ /* Button Container */
348
+ .llm-panel .button-container {
349
+ display: flex;
350
+ margin-top: var(--spacing-medium);
351
+ }
352
+
353
+ /* Button Container (Actions) */
354
+ .llm-panel .button-container-actions {
355
+ display: flex;
356
+ justify-content: space-between;
357
+ gap: 0;
358
+ }
359
+
360
+ /* Scroll Button (Fixed at Bottom Center) */
361
+ .llm-panel .scroll-button {
362
+ position: absolute;
363
+ left: 50%;
364
+ transform: translateX(-50%);
365
+ bottom: 5%;
366
+ background-color: var(--button-scroll-background-color);
367
+ color: var(--button-scroll-text-color);
368
+ border: none;
369
+ border-radius: 50%;
370
+ height: 2.5rem;
371
+ width: 2.5rem;
372
+ display: flex;
373
+ align-items: center;
374
+ justify-content: center;
375
+ cursor: pointer;
376
+ z-index: 10;
377
+ }
378
+
379
+ .llm-panel .scroll-button:hover {
380
+ background-color: var(--button-scroll-background-color-hover);
381
+ }
382
+
383
+ /* Table Styling */
384
+ .llm-panel table {
385
+ border-collapse: collapse;
386
+ margin-bottom: 1em;
387
+ border: 1px solid var(--table-border-color);
388
+ }
389
+
390
+ .llm-panel th,
391
+ .llm-panel td {
392
+ border: 1px solid var(--table-border-color);
393
+ padding: 8px;
394
+ }
395
+
396
+ /* Save, Email & CTA Button */
397
+ .llm-panel .save-button {
398
+ flex: 1;
399
+ background-color: var(--button-background-color);
400
+ color: var(--button-text-color);
401
+ border: 1px solid var(--button-border-color);
402
+ border-radius: var(--border-radius);
403
+ cursor: pointer;
404
+ padding: 5px 10px;
405
+ font-size: 0.8em;
406
+ margin: var(--spacing-small);
407
+ transition: background-color 0.3s ease, transform 0.3s ease;
408
+ box-shadow: var(--button-drop-shadow);
409
+ }
410
+
411
+ .llm-panel .save-button:disabled {
412
+ cursor: not-allowed;
413
+ color: var(--button-disabled-color);
414
+ background-color: var(--button-disabled-background-color);
415
+ }
416
+
417
+ .llm-panel .save-button:hover {
418
+ background-color: var(--button-background-color-hover);
419
+ color: var(--button-text-color-hover);
420
+ }
421
+
422
+ /* New Conversation Button - distinct styling */
423
+ .llm-panel .new-conversation-button {
424
+ background-color: var(--prompt-background-color);
425
+ border-color: var(--button-border-color);
426
+ font-weight: 500;
427
+ }
428
+
429
+ .llm-panel .new-conversation-button:hover {
430
+ background-color: var(--button-background-color-hover);
431
+ color: var(--button-text-color-hover);
432
+ transform: translateY(-1px);
433
+ }
434
+
435
+ /* Confirmation state styling */
436
+ .llm-panel .new-conversation-button.confirm-state {
437
+ background-color: #ff6b35;
438
+ color: white;
439
+ border-color: #e55a2b;
440
+ animation: pulse-confirm 1s infinite;
441
+ }
442
+
443
+ .llm-panel .new-conversation-button.confirm-state:hover {
444
+ background-color: #e55a2b;
445
+ color: white;
446
+ }
447
+
448
+ @keyframes pulse-confirm {
449
+ 0% { opacity: 1; }
450
+ 50% { opacity: 0.7; }
451
+ 100% { opacity: 1; }
452
+ }
453
+
454
+ /* Suggestion Buttons */
455
+ .llm-panel .suggestion-button {
456
+ background-color: var(--button-background-color);
457
+ color: var(--button-text-color);
458
+ border: 1px solid var(--button-border-color);
459
+ border-radius: var(--border-radius);
460
+ padding: 5px 10px;
461
+ font-size: 0.8em;
462
+ cursor: pointer;
463
+ margin: var(--spacing-small);
464
+ box-shadow: var(--button-drop-shadow);
465
+ }
466
+
467
+ .llm-panel .suggestion-button:hover {
468
+ background-color: var(--button-background-color-hover);
469
+ color: var(--button-text-color-hover);
470
+ }
471
+
472
+ .llm-panel .suggestion-button:disabled {
473
+ background-color: var(--button-disabled-color);
474
+ color: var(--button-disabled-background-color);
475
+ cursor: not-allowed;
476
+ }
477
+
478
+ /* --------------------------------------------------------
479
+ Powered By / Footer
480
+ -------------------------------------------------------- */
481
+ .footer-container {
482
+ display: flex;
483
+ align-items: center;
484
+ min-height: 24px;
485
+ }
486
+
487
+ .footer-container.no-tools {
488
+ justify-content: center;
489
+ }
490
+
491
+ .footer-container.with-tools {
492
+ justify-content: space-between;
493
+ }
494
+
495
+ .footer-left {
496
+ flex: 1;
497
+ display: flex;
498
+ justify-content: center;
499
+ }
500
+
501
+ .footer-right {
502
+ flex: 1;
503
+ display: flex;
504
+ justify-content: center;
505
+ }
506
+
507
+ .footer-center {
508
+ flex: none;
509
+ width: 100%;
510
+ }
511
+
512
+ .powered-by {
513
+ display: flex;
514
+ justify-content: center;
515
+ align-items: center;
516
+ color: var(--powered-by-text-color);
517
+ font-size: 0.8em;
518
+ height: 100%;
519
+ text-align: center;
520
+ }
521
+
522
+ .powered-by a {
523
+ color: var(--powered-by-text-color);
524
+ text-decoration: underline;
525
+ }
526
+
527
+ /* Tool status indicator styles */
528
+ .tool-status {
529
+ display: flex;
530
+ align-items: center;
531
+ justify-content: center;
532
+ margin-top: 4px;
533
+ font-size: 10px;
534
+ color: #666;
535
+ opacity: 0.7;
536
+ cursor: help;
537
+ }
538
+
539
+ .tool-status-dot {
540
+ width: 6px;
541
+ height: 6px;
542
+ border-radius: 50%;
543
+ margin-right: 4px;
544
+ display: inline-block;
545
+ cursor: help;
546
+ }
547
+
548
+ .tool-status-dot.loading {
549
+ background-color: #ffa500;
550
+ animation: pulse 1.5s ease-in-out infinite;
551
+ }
552
+
553
+ .tool-status-dot.ready {
554
+ background-color: #28a745;
555
+ }
556
+
557
+ .tool-status-dot.ready:hover {
558
+ background-color: #34ce57;
559
+ transform: scale(1.2);
560
+ transition: all 0.2s ease;
561
+ }
562
+
563
+ .tool-status-dot.error {
564
+ background-color: #dc3545;
565
+ }
566
+
567
+ .tool-status-text {
568
+ font-size: 9px;
569
+ font-weight: 300;
570
+ cursor: help;
571
+ }
572
+
573
+ .tool-status-text:hover {
574
+ opacity: 1;
575
+ transition: opacity 0.2s ease;
576
+ }
577
+
578
+ /* --------------------------------------------------------
579
+ Modal Dialog
580
+ -------------------------------------------------------- */
581
+ /* Modal Overlay */
582
+ .modal-overlay {
583
+ position: fixed;
584
+ top: 0;
585
+ left: 0;
586
+ right: 0;
587
+ bottom: 0;
588
+ background: rgba(0, 0, 0, 0.5);
589
+ display: flex;
590
+ justify-content: center;
591
+ align-items: center;
592
+ }
593
+
594
+ /* Modal Content */
595
+ .modal-content {
596
+ background: white;
597
+ padding: 5px;
598
+ border-radius: 8px;
599
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
600
+ text-align: center;
601
+ color: #333;
602
+ }
603
+
604
+ /* Modal Text */
605
+ .modal-text {
606
+ color: black;
607
+ }
608
+
609
+ /* Modal Buttons Container */
610
+ .modal-buttons {
611
+ padding: 5px 10px;
612
+ display: flex;
613
+ justify-content: space-between;
614
+ }
615
+
616
+ /* Modal Button Styling */
617
+ .modal-buttons button {
618
+ padding: 5px 10px;
619
+ border: none;
620
+ border-radius: 5px;
621
+ cursor: pointer;
622
+ }
623
+
624
+ .modal-buttons button:first-child {
625
+ background: #ccc;
626
+ }
627
+
628
+ .modal-buttons button:last-child {
629
+ background: #007bff;
630
+ color: white;
631
+ }
632
+
633
+ .approve-tools-panel {
634
+ display: flex;
635
+ flex-direction: column;
636
+ gap: var(--spacing-small);
637
+ margin-top: var(--spacing-small);
638
+ padding: var(--spacing-small);
639
+ background-color: #FFFFE0;
640
+ border: 1px solid var(--button-border-color);
641
+ box-shadow: var(--button-drop-shadow);
642
+ margin-left: calc(-1 * var(--spacing-medium));
643
+ margin-right: calc(-1 * var(--spacing-medium));
644
+ color: black;
645
+ }
646
+
647
+ .approve-tools-header {
648
+ font-size: 0.75em;
649
+ text-align: center;
650
+ }
651
+
652
+ .approve-tools-buttons {
653
+ display: flex;
654
+ justify-content: center;
655
+ flex-wrap: wrap;
656
+ gap: var(--spacing-small);
657
+ margin: var(--spacing-small) 0;
658
+ }
659
+
660
+ .approve-tools-button {
661
+ background-color: var(--button-background-color);
662
+ color: var(--button-text-color);
663
+ border: 1px solid var(--button-border-color);
664
+ border-radius: var(--border-radius);
665
+ padding: 5px 5px;
666
+ font-size: 0.8em;
667
+ cursor: pointer;
668
+ margin: var(--spacing-small);
669
+ box-shadow: var(--button-drop-shadow);
670
+ }
671
+
672
+ .approve-tools-description {
673
+ text-align: center;
674
+ font-size: 0.75em;
675
+ color: var(--button-action-text-color);
676
+ padding: 0 var(--spacing-small) var(--spacing-small);
677
+ }
678
+
679
+ /* --------------------------------------------------------
680
+ Form Error Styling
681
+ -------------------------------------------------------- */
682
+ .invalid {
683
+ border-color: red;
684
+ }
685
+
686
+ .error-message {
687
+ color: red;
688
+ font-size: 0.8em;
689
+ margin-top: var(--spacing-small);
690
+ }
691
+
692
+ /* --------------------------------------------------------
693
+ Thinking Animation
694
+ -------------------------------------------------------- */
695
+
696
+ .loading-text {
697
+ display: flex;
698
+ align-items: flex-start;
699
+ justify-content: flex-start;
700
+ margin: 10px 0;
701
+ height: auto;
702
+ min-height: 30px;
703
+ padding: 8px 12px;
704
+ background: linear-gradient(135deg, rgba(0, 123, 255, 0.05) 0%, rgba(0, 123, 255, 0.1) 100%);
705
+ border-left: 3px solid rgba(0, 123, 255, 0.3);
706
+ border-radius: 6px;
707
+ font-size: 0.9rem;
708
+ font-style: italic;
709
+ color: var(--button-text-color);
710
+ opacity: 0.8;
711
+ transition: all 0.3s ease;
712
+ word-wrap: break-word;
713
+ overflow-wrap: break-word;
714
+ line-height: 1.4;
715
+ }
716
+
717
+ .dark-theme .loading-text {
718
+ background: linear-gradient(135deg, rgba(100, 200, 255, 0.08) 0%, rgba(100, 200, 255, 0.15) 100%);
719
+ border-left-color: rgba(100, 200, 255, 0.4);
720
+ color: var(--button-text-color);
721
+ }
722
+
723
+ .loading-text:hover {
724
+ opacity: 1;
725
+ transform: translateX(2px);
726
+ }
727
+
728
+ .loading-text .dot {
729
+ background-color: var(--button-text-color);
730
+ border-radius: 50%;
731
+ width: 6px;
732
+ height: 6px;
733
+ margin: 0 2px 0 8px;
734
+ display: inline-block;
735
+ animation: jump 1.2s infinite ease-in-out;
736
+ flex-shrink: 0;
737
+ align-self: center;
738
+ }
739
+
740
+ .dark-theme .loading-text .dot {
741
+ background-color: rgba(100, 200, 255, 0.7);
742
+ }
743
+
744
+ .loading-text .dot:nth-child(2) {
745
+ animation-delay: 0s;
746
+ }
747
+
748
+ .loading-text .dot:nth-child(3) {
749
+ animation-delay: 0.2s;
750
+ }
751
+
752
+ .loading-text .dot:nth-child(4) {
753
+ animation-delay: 0.4s;
754
+ }
755
+
756
+ @keyframes jump {
757
+ 0%, 80%, 100% {
758
+ transform: translateY(0);
759
+ opacity: 0.6;
760
+ }
761
+ 40% {
762
+ transform: translateY(-6px);
763
+ opacity: 1;
764
+ }
765
+ }
766
+
767
+ /* --------------------------------------------------------
768
+ Approve All tools panel
769
+ -------------------------------------------------------- */
770
+
771
+ .llm-panel .approve-all-button {
772
+ background-color: var(--button-background-color-hover);
773
+ color: var(--button-text-color-hover);
774
+ border: 1px solid var(--button-border-color);
775
+ border-radius: var(--border-radius);
776
+ padding: 8px 15px;
777
+ font-size: 0.9em;
778
+ font-weight: bold;
779
+ cursor: pointer;
780
+ margin: var(--spacing-medium) 0;
781
+ box-shadow: var(--button-drop-shadow);
782
+ display: inline-block;
783
+ }
784
+
785
+ .llm-panel .approve-all-button:hover {
786
+ filter: brightness(1.1);
787
+ transform: translateY(-1px);
788
+ }
789
+
790
+ /* --------------------------------------------------------
791
+ Tool Info Modal
792
+ -------------------------------------------------------- */
793
+ /* Modal overlay - already covered */
794
+ .modal-overlay {
795
+ position: fixed;
796
+ top: 0;
797
+ left: 0;
798
+ width: 100vw;
799
+ height: 100vh;
800
+ background-color: rgba(0, 0, 0, 0.5);
801
+ display: flex;
802
+ justify-content: center;
803
+ align-items: center;
804
+ z-index: 1000;
805
+ }
806
+
807
+ /* Tool info modal content - exact match for inline styles */
808
+ .tool-info-modal-content {
809
+ width: 90vw;
810
+ height: 90vh;
811
+ max-width: 90vw;
812
+ max-height: 90vh;
813
+ display: flex;
814
+ flex-direction: column;
815
+ background-color: white;
816
+ padding: 20px;
817
+ border-radius: 8px;
818
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
819
+ position: relative;
820
+ color: #333;
821
+ }
822
+
823
+ /* Content container for the two panels */
824
+ .tool-info-container {
825
+ display: flex;
826
+ flex-grow: 1;
827
+ flex-direction: row;
828
+ gap: 0;
829
+ margin: 0;
830
+ padding: 0;
831
+ }
832
+
833
+ /* Tool info section */
834
+ .tool-info-section {
835
+ flex: 1;
836
+ display: flex;
837
+ flex-direction: column;
838
+ padding: 10px;
839
+ background-color: white;
840
+ }
841
+
842
+ /* Tool info JSON textarea */
843
+ .tool-info-json {
844
+ width: 100%;
845
+ height: 100%;
846
+ overflow: auto;
847
+ resize: none;
848
+ background-color: #f5f5f5;
849
+ border: 1px solid #ccc;
850
+ border-radius: 4px;
851
+ padding: 8px;
852
+ font-family: monospace;
853
+ flex-grow: 1;
854
+ }
855
+
856
+ /* Modal buttons container */
857
+ .modal-buttons {
858
+ display: flex;
859
+ justify-content: flex-end;
860
+ margin-top: 10px;
861
+ }
862
+
863
+ /* Button styling */
864
+ .modal-buttons button {
865
+ padding: 8px 16px;
866
+ margin-left: 8px;
867
+ border: none;
868
+ border-radius: 4px;
869
+ background-color: #007bff;
870
+ color: white;
871
+ cursor: pointer;
872
+ }
873
+
874
+ /* Tool status indicator styles */
875
+ .tool-status {
876
+ display: flex;
877
+ align-items: center;
878
+ justify-content: center;
879
+ margin-top: 4px;
880
+ font-size: 10px;
881
+ color: #666;
882
+ opacity: 0.7;
883
+ cursor: help;
884
+ }
885
+
886
+ .tool-status-dot {
887
+ width: 6px;
888
+ height: 6px;
889
+ border-radius: 50%;
890
+ margin-right: 4px;
891
+ display: inline-block;
892
+ cursor: help;
893
+ }
894
+
895
+ .tool-status-dot.loading {
896
+ background-color: #ffa500;
897
+ animation: pulse 1.5s ease-in-out infinite;
898
+ }
899
+
900
+ .tool-status-dot.ready {
901
+ background-color: #28a745;
902
+ }
903
+
904
+ .tool-status-dot.ready:hover {
905
+ background-color: #34ce57;
906
+ transform: scale(1.2);
907
+ transition: all 0.2s ease;
908
+ }
909
+
910
+ .tool-status-dot.error {
911
+ background-color: #dc3545;
912
+ }
913
+
914
+ .tool-status-text {
915
+ font-size: 9px;
916
+ font-weight: 300;
917
+ cursor: help;
918
+ }
919
+
920
+ .tool-status-text:hover {
921
+ opacity: 1;
922
+ transition: opacity 0.2s ease;
923
+ }
924
+
925
+ /* Dark theme support */
926
+ .dark-theme .tool-status {
927
+ color: #999;
928
+ }
929
+
930
+ /* Reasoning and Searching Sections */
931
+ .reasoning-section, .searching-section {
932
+ margin: 1rem 0;
933
+ padding: 0.75rem;
934
+ border-radius: var(--border-radius);
935
+ border-left: 4px solid;
936
+ background-color: var(--reasoning-background-color, #f8f9fa);
937
+ }
938
+
939
+ .reasoning-section {
940
+ border-left-color: var(--reasoning-border-color, #007bff);
941
+ background-color: var(--reasoning-background-color, #f0f8ff);
942
+ }
943
+
944
+ .searching-section {
945
+ border-left-color: var(--searching-border-color, #28a745);
946
+ background-color: var(--searching-background-color, #f0fff0);
947
+ }
948
+
949
+ .reasoning-header, .searching-header {
950
+ font-weight: 600;
951
+ font-size: 0.9rem;
952
+ margin-bottom: 0.5rem;
953
+ color: var(--prompt-text-color);
954
+ opacity: 0.8;
955
+ }
956
+
957
+ .reasoning-content, .searching-content {
958
+ font-size: 0.85rem;
959
+ line-height: 1.4;
960
+ color: var(--prompt-text-color);
961
+ opacity: 0.9;
962
+ font-style: italic;
963
+ }
964
+
965
+ /* Dark theme support for reasoning/searching */
966
+ .dark-theme .reasoning-section {
967
+ background-color: var(--reasoning-background-color-dark, #1a1a2e);
968
+ border-left-color: var(--reasoning-border-color-dark, #4a9eff);
969
+ }
970
+
971
+ .dark-theme .searching-section {
972
+ background-color: var(--searching-background-color-dark, #1a2e1a);
973
+ border-left-color: var(--searching-border-color-dark, #4ade80);
974
+ }
975
+
976
+ .dark-theme .reasoning-header,
977
+ .dark-theme .searching-header,
978
+ .dark-theme .reasoning-content,
979
+ .dark-theme .searching-content {
980
+ color: var(--response-text-color);
981
+ }
982
+
983
+ /* Streaming response styling */
984
+ .streaming-response {
985
+ /* Add a subtle animation to indicate streaming */
986
+ animation: fadeIn 0.3s ease-in-out;
987
+ }
988
+
989
+ @keyframes fadeIn {
990
+ from {
991
+ opacity: 0;
992
+ }
993
+ to {
994
+ opacity: 1;
995
+ }
996
+ }
997
+
998
+ /* Thinking Block Styles */
999
+ .thinking-block-container {
1000
+ margin-bottom: var(--spacing-medium);
1001
+ }
1002
+
1003
+ .thinking-section {
1004
+ border: 1px solid var(--input-border-color);
1005
+ border-radius: var(--border-radius);
1006
+ padding: var(--spacing-medium);
1007
+ background-color: var(--input-background-color);
1008
+ margin-bottom: var(--spacing-small);
1009
+ }
1010
+
1011
+ .thinking-header {
1012
+ display: flex;
1013
+ justify-content: space-between;
1014
+ align-items: center;
1015
+ font-weight: bold;
1016
+ color: var(--title-text-color);
1017
+ margin-bottom: var(--spacing-small);
1018
+ font-size: 0.9rem;
1019
+ white-space: nowrap;
1020
+ overflow: hidden;
1021
+ text-overflow: ellipsis;
1022
+ }
1023
+
1024
+ .thinking-navigation {
1025
+ display: flex;
1026
+ align-items: center;
1027
+ gap: var(--spacing-small);
1028
+ }
1029
+
1030
+ .thinking-nav-btn {
1031
+ background: var(--button-background-color);
1032
+ border: 1px solid var(--button-border-color);
1033
+ border-radius: 4px;
1034
+ padding: 2px 6px;
1035
+ cursor: pointer;
1036
+ font-size: 12px;
1037
+ line-height: 1;
1038
+ min-width: 20px;
1039
+ height: 20px;
1040
+ display: flex;
1041
+ align-items: center;
1042
+ justify-content: center;
1043
+ }
1044
+
1045
+ .thinking-nav-btn:hover:not(:disabled) {
1046
+ background: var(--button-background-color-hover);
1047
+ color: var(--button-text-color-hover);
1048
+ }
1049
+
1050
+ .thinking-nav-btn:disabled {
1051
+ background: var(--button-disabled-background-color);
1052
+ color: var(--button-disabled-color);
1053
+ cursor: not-allowed;
1054
+ }
1055
+
1056
+ .thinking-counter {
1057
+ font-size: 11px;
1058
+ color: var(--title-text-color);
1059
+ font-weight: normal;
1060
+ min-width: 30px;
1061
+ text-align: center;
1062
+ }
1063
+
1064
+ .thinking-content {
1065
+ color: var(--input-text-color);
1066
+ font-size: 0.85rem;
1067
+ line-height: 1.4;
1068
+ white-space: pre-wrap;
1069
+ }
1070
+
1071
+ /* Progressive action placeholder buttons */
1072
+ button[data-pending="true"] {
1073
+ opacity: 0.55;
1074
+ pointer-events: none;
1075
+ position: relative;
1076
+ }
1077
+ button[data-pending="true"]::after {
1078
+ content: '…';
1079
+ position: absolute;
1080
+ top: 2px;
1081
+ right: 6px;
1082
+ font-weight: bold;
1083
+ opacity: 0.6;
1084
+ font-size: 0.8em;
1085
+ }
1086
+
1087
+ .reasoning-section {
1088
+ border-left: 3px solid #4a90e2;
1089
+ }
1090
+
1091
+ .searching-section {
1092
+ border-left: 3px solid #7b68ee;
1093
+ }