Jatin Mehra commited on
Commit
3399b78
ยท
1 Parent(s): c4a2100

Enhance dark theme: Update styles for improved readability and aesthetics, including background colors, text colors, and button styles across the application.

Browse files
Files changed (3) hide show
  1. frontend/index.html +4 -3
  2. frontend/script.js +50 -16
  3. frontend/style.css +463 -115
frontend/index.html CHANGED
@@ -3,7 +3,7 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Agentic RAG Chat Application</title>
7
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
8
  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
9
  <link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css" rel="stylesheet">
@@ -13,7 +13,7 @@
13
  <div class="container-fluid h-100">
14
  <div class="row h-100">
15
  <!-- Sidebar -->
16
- <div class="col-md-3 sidebar bg-light">
17
  <div class="sidebar-content p-3">
18
  <!-- Mobile Close Button -->
19
  <button class="mobile-close-btn d-md-none" id="mobileCloseBtn">
@@ -116,7 +116,8 @@
116
  </button>
117
 
118
  <div class="header text-center py-4">
119
- <h1 class="main-title">๐Ÿ“š RAG Chat Application</h1>
 
120
  </div>
121
 
122
  <!-- Chat Container -->
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>RAG Chat - Intelligent Document Q&A System</title>
7
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
8
  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
9
  <link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css" rel="stylesheet">
 
13
  <div class="container-fluid h-100">
14
  <div class="row h-100">
15
  <!-- Sidebar -->
16
+ <div class="col-md-3 sidebar">
17
  <div class="sidebar-content p-3">
18
  <!-- Mobile Close Button -->
19
  <button class="mobile-close-btn d-md-none" id="mobileCloseBtn">
 
116
  </button>
117
 
118
  <div class="header text-center py-4">
119
+ <h1 class="main-title">๐Ÿ“š RAG Chat</h1>
120
+ <p class="tagline">Intelligent Document Q&A System with citation tracking</p>
121
  </div>
122
 
123
  <!-- Chat Container -->
frontend/script.js CHANGED
@@ -556,13 +556,17 @@ function updateFileTypesChart() {
556
  datasets: [{
557
  data: data,
558
  backgroundColor: [
559
- '#FF6384',
560
- '#36A2EB',
561
- '#FFCE56',
562
- '#4BC0C0',
563
- '#9966FF',
564
- '#FF9F40'
565
- ]
 
 
 
 
566
  }]
567
  },
568
  options: {
@@ -570,7 +574,20 @@ function updateFileTypesChart() {
570
  maintainAspectRatio: false,
571
  plugins: {
572
  legend: {
573
- position: 'bottom'
 
 
 
 
 
 
 
 
 
 
 
 
 
574
  }
575
  }
576
  }
@@ -621,13 +638,17 @@ function showProcessingSummary(stats) {
621
  datasets: [{
622
  data: data,
623
  backgroundColor: [
624
- '#FF6384',
625
- '#36A2EB',
626
- '#FFCE56',
627
- '#4BC0C0',
628
- '#9966FF',
629
- '#FF9F40'
630
- ]
 
 
 
 
631
  }]
632
  },
633
  options: {
@@ -635,7 +656,20 @@ function showProcessingSummary(stats) {
635
  maintainAspectRatio: false,
636
  plugins: {
637
  legend: {
638
- position: 'bottom'
 
 
 
 
 
 
 
 
 
 
 
 
 
639
  }
640
  }
641
  }
 
556
  datasets: [{
557
  data: data,
558
  backgroundColor: [
559
+ '#4fc3f7',
560
+ '#66bb6a',
561
+ '#ff9800',
562
+ '#f44336',
563
+ '#9c27b0',
564
+ '#3f51b5',
565
+ '#00bcd4',
566
+ '#8bc34a'
567
+ ],
568
+ borderColor: '#555',
569
+ borderWidth: 2
570
  }]
571
  },
572
  options: {
 
574
  maintainAspectRatio: false,
575
  plugins: {
576
  legend: {
577
+ position: 'bottom',
578
+ labels: {
579
+ color: '#e0e0e0',
580
+ font: {
581
+ size: 12
582
+ }
583
+ }
584
+ },
585
+ tooltip: {
586
+ backgroundColor: '#2d2d2d',
587
+ titleColor: '#e0e0e0',
588
+ bodyColor: '#e0e0e0',
589
+ borderColor: '#555',
590
+ borderWidth: 1
591
  }
592
  }
593
  }
 
638
  datasets: [{
639
  data: data,
640
  backgroundColor: [
641
+ '#4fc3f7',
642
+ '#66bb6a',
643
+ '#ff9800',
644
+ '#f44336',
645
+ '#9c27b0',
646
+ '#3f51b5',
647
+ '#00bcd4',
648
+ '#8bc34a'
649
+ ],
650
+ borderColor: '#555',
651
+ borderWidth: 2
652
  }]
653
  },
654
  options: {
 
656
  maintainAspectRatio: false,
657
  plugins: {
658
  legend: {
659
+ position: 'bottom',
660
+ labels: {
661
+ color: '#e0e0e0',
662
+ font: {
663
+ size: 12
664
+ }
665
+ }
666
+ },
667
+ tooltip: {
668
+ backgroundColor: '#2d2d2d',
669
+ titleColor: '#e0e0e0',
670
+ bodyColor: '#e0e0e0',
671
+ borderColor: '#555',
672
+ borderWidth: 1
673
  }
674
  }
675
  }
frontend/style.css CHANGED
@@ -4,7 +4,8 @@ body, html {
4
  margin: 0;
5
  padding: 0;
6
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
7
- background-color: #f8f9fa;
 
8
  }
9
 
10
  .container-fluid {
@@ -20,9 +21,9 @@ body, html {
20
  .sidebar {
21
  height: 100vh;
22
  overflow-y: auto;
23
- border-right: 1px solid #dee2e6;
24
- background-color: #ffffff !important;
25
- box-shadow: 2px 0 4px rgba(0,0,0,0.1);
26
  position: relative;
27
  }
28
 
@@ -38,14 +39,14 @@ body, html {
38
  }
39
 
40
  .sidebar h4 {
41
- color: #1f77b4;
42
  font-weight: bold;
43
  text-align: center;
44
  margin-bottom: 1.5rem;
45
  }
46
 
47
  .sidebar h5 {
48
- color: #495057;
49
  font-weight: 600;
50
  margin-bottom: 1rem;
51
  }
@@ -59,16 +60,23 @@ body, html {
59
  }
60
 
61
  .header {
62
- background: linear-gradient(135deg, #1f77b4, #17a2b8);
63
  color: white;
64
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
65
  }
66
 
67
  .main-title {
68
  font-size: 2.5rem;
69
  font-weight: bold;
70
  margin: 0;
71
- text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
 
 
 
 
 
 
 
72
  }
73
 
74
  /* Chat Container */
@@ -84,25 +92,25 @@ body, html {
84
  flex: 1;
85
  overflow-y: auto;
86
  padding: 1rem;
87
- background-color: #ffffff;
88
  border-radius: 8px;
89
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
90
  margin-bottom: 1rem;
91
  }
92
 
93
  .chat-input-container {
94
  padding: 0.5rem;
95
- background-color: #ffffff;
96
  border-radius: 8px;
97
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
98
  margin-top: 0.5rem;
99
  }
100
 
101
  /* Enhanced Chat Input Styles */
102
  .chat-input-wrapper {
103
- background: white;
104
  border-radius: 8px;
105
- border: 1px solid #dee2e6;
106
  padding: 0.75rem;
107
  margin: 0;
108
  }
@@ -118,7 +126,7 @@ body, html {
118
 
119
  .input-controls small {
120
  font-size: 0.75em;
121
- color: #6c757d;
122
  }
123
 
124
  .input-section {
@@ -135,31 +143,34 @@ body, html {
135
  .input-area textarea {
136
  resize: vertical;
137
  min-height: 60px;
138
- border: 1px solid #dee2e6;
139
  border-radius: 6px;
140
  padding: 0.5rem 0.75rem;
141
  font-family: inherit;
142
  width: 100%;
 
 
143
  }
144
 
145
  .input-area textarea:focus {
146
- border-color: #1f77b4;
147
- box-shadow: 0 0 0 0.2rem rgba(31, 119, 180, 0.25);
148
  }
149
 
150
  .markdown-preview {
151
- border: 1px solid #dee2e6;
152
  border-radius: 6px;
153
  padding: 0.75rem;
154
- background-color: #f8f9fa;
155
  min-height: 60px;
156
  max-height: 200px;
157
  overflow-y: auto;
 
158
  }
159
 
160
  .markdown-preview:empty:before {
161
  content: "Preview will appear here...";
162
- color: #6c757d;
163
  font-style: italic;
164
  }
165
 
@@ -209,14 +220,14 @@ body, html {
209
  }
210
 
211
  .message.user .message-bubble {
212
- background: linear-gradient(135deg, #007bff, #0056b3);
213
  color: white;
214
  }
215
 
216
  .message.assistant .message-bubble {
217
- background-color: #f8f9fa;
218
- border: 1px solid #dee2e6;
219
- color: #495057;
220
  }
221
 
222
  .message-bubble h1,
@@ -227,7 +238,7 @@ body, html {
227
  .message-bubble h6 {
228
  margin-top: 1rem;
229
  margin-bottom: 0.5rem;
230
- color: #2c3e50;
231
  font-weight: 600;
232
  }
233
 
@@ -255,16 +266,16 @@ body, html {
255
  }
256
 
257
  .message-bubble blockquote {
258
- border-left: 4px solid #1f77b4;
259
  margin: 1rem 0;
260
  padding: 0.5rem 1rem;
261
- background-color: rgba(31, 119, 180, 0.1);
262
  font-style: italic;
263
  }
264
 
265
  .message-bubble pre {
266
- background-color: #f8f9fa;
267
- border: 1px solid #e9ecef;
268
  border-radius: 4px;
269
  padding: 1rem;
270
  margin: 1rem 0;
@@ -274,8 +285,8 @@ body, html {
274
  }
275
 
276
  .message-bubble code {
277
- background-color: #f8f9fa;
278
- border: 1px solid #e9ecef;
279
  border-radius: 3px;
280
  padding: 0.2rem 0.4rem;
281
  font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
@@ -296,18 +307,18 @@ body, html {
296
 
297
  .message-bubble th,
298
  .message-bubble td {
299
- border: 1px solid #dee2e6;
300
  padding: 0.5rem;
301
  text-align: left;
302
  }
303
 
304
  .message-bubble th {
305
- background-color: #f8f9fa;
306
  font-weight: 600;
307
  }
308
 
309
  .message-bubble a {
310
- color: #1f77b4;
311
  text-decoration: none;
312
  }
313
 
@@ -317,7 +328,7 @@ body, html {
317
 
318
  .message-bubble hr {
319
  border: none;
320
- border-top: 1px solid #dee2e6;
321
  margin: 1.5rem 0;
322
  }
323
 
@@ -330,8 +341,8 @@ body, html {
330
 
331
  /* Enhanced Code Syntax Highlighting */
332
  .message-bubble pre[class*="language-"] {
333
- background-color: #f8f9fa;
334
- border: 1px solid #e9ecef;
335
  border-radius: 6px;
336
  padding: 1rem;
337
  margin: 1rem 0;
@@ -349,7 +360,7 @@ body, html {
349
  top: 0.5rem;
350
  right: 0.5rem;
351
  font-size: 0.7em;
352
- color: #6c757d;
353
  text-transform: uppercase;
354
  font-weight: 600;
355
  }
@@ -367,12 +378,12 @@ body, html {
367
  .token.prolog,
368
  .token.doctype,
369
  .token.cdata {
370
- color: #6c757d;
371
  font-style: italic;
372
  }
373
 
374
  .token.punctuation {
375
- color: #495057;
376
  }
377
 
378
  .token.property,
@@ -501,20 +512,20 @@ body, html {
501
  .stat-item {
502
  text-align: center;
503
  padding: 1rem;
504
- background-color: #f8f9fa;
505
  border-radius: 8px;
506
- border: 1px solid #dee2e6;
507
  }
508
 
509
  .stat-value {
510
  font-size: 1.5rem;
511
  font-weight: bold;
512
- color: #1f77b4;
513
  }
514
 
515
  .stat-label {
516
  font-size: 0.9rem;
517
- color: #6c757d;
518
  margin-top: 0.25rem;
519
  }
520
 
@@ -522,21 +533,21 @@ body, html {
522
  .metric-card {
523
  text-align: center;
524
  padding: 1.5rem;
525
- background-color: #f8f9fa;
526
  border-radius: 8px;
527
- border: 1px solid #dee2e6;
528
  height: 100%;
529
  }
530
 
531
  .metric-value {
532
  font-size: 2rem;
533
  font-weight: bold;
534
- color: #1f77b4;
535
  }
536
 
537
  .metric-label {
538
  font-size: 0.9rem;
539
- color: #6c757d;
540
  margin-top: 0.5rem;
541
  }
542
 
@@ -552,7 +563,7 @@ body, html {
552
 
553
  .loading-text {
554
  margin-top: 1rem;
555
- color: #495057;
556
  font-weight: 500;
557
  }
558
 
@@ -583,77 +594,154 @@ body, html {
583
  }
584
 
585
  .btn-primary {
586
- background: linear-gradient(135deg, #007bff, #0056b3);
587
  border: none;
 
588
  }
589
 
590
  .btn-success {
591
- background: linear-gradient(135deg, #28a745, #1e7e34);
592
  border: none;
 
593
  }
594
 
595
  .btn-info {
596
- background: linear-gradient(135deg, #17a2b8, #117a8b);
597
  border: none;
 
598
  }
599
 
600
- /* Form Controls */
601
- .form-control {
602
- border-radius: 6px;
603
- border: 1px solid #ced4da;
604
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
605
  }
606
 
607
- .form-control:focus {
608
- border-color: #1f77b4;
609
- box-shadow: 0 0 0 0.2rem rgba(31, 119, 180, 0.25);
610
  }
611
 
612
- /* Modal Styles */
613
- .modal-content {
614
- border-radius: 12px;
615
- border: none;
616
- box-shadow: 0 10px 30px rgba(0,0,0,0.3);
617
  }
618
 
619
- .modal-header {
620
- background: linear-gradient(135deg, #1f77b4, #17a2b8);
621
- color: white;
622
- border-top-left-radius: 12px;
623
- border-top-right-radius: 12px;
624
  }
625
 
626
- /* Control Groups */
627
- .control-group {
628
- display: flex;
629
- gap: 0.5rem;
630
- align-items: center;
631
  }
632
 
633
- /* Keyboard shortcut styling */
634
- kbd {
635
- background-color: #f8f9fa;
636
- border: 1px solid #dee2e6;
637
- border-radius: 3px;
638
- padding: 0.1em 0.3em;
639
- font-size: 0.875em;
640
- font-family: monospace;
641
  }
642
 
643
- /* Modal code examples */
644
- .modal-body code {
645
- background-color: #f8f9fa;
646
- padding: 0.2em 0.4em;
647
- border-radius: 3px;
648
- font-size: 0.9em;
649
  }
650
 
651
- .modal-body pre {
652
- background-color: #f8f9fa;
653
- border: 1px solid #e9ecef;
654
- border-radius: 4px;
655
- padding: 0.5rem;
656
- font-size: 0.8em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
657
  }
658
 
659
  /* Responsive Design */
@@ -726,24 +814,24 @@ kbd {
726
  top: 1rem;
727
  left: 1rem;
728
  z-index: 1001;
729
- background: #1f77b4;
730
  color: white;
731
  border: none;
732
  border-radius: 8px;
733
  padding: 0.75rem;
734
  font-size: 1.2rem;
735
- box-shadow: 0 2px 8px rgba(0,0,0,0.2);
736
  transition: all 0.3s ease;
737
  }
738
 
739
  .mobile-menu-btn:hover {
740
- background: #1565c0;
741
  transform: scale(1.05);
742
  }
743
 
744
  .mobile-menu-btn:focus {
745
  outline: none;
746
- box-shadow: 0 0 0 3px rgba(31, 119, 180, 0.3);
747
  }
748
 
749
  /* Mobile Close Button */
@@ -800,17 +888,17 @@ kbd {
800
  }
801
 
802
  ::-webkit-scrollbar-track {
803
- background: #f1f1f1;
804
  border-radius: 4px;
805
  }
806
 
807
  ::-webkit-scrollbar-thumb {
808
- background: #c1c1c1;
809
  border-radius: 4px;
810
  }
811
 
812
  ::-webkit-scrollbar-thumb:hover {
813
- background: #a1a1a1;
814
  }
815
 
816
  /* Animation for processing */
@@ -832,22 +920,24 @@ kbd {
832
 
833
  /* File upload area */
834
  .file-upload-area {
835
- border: 2px dashed #ced4da;
836
  border-radius: 8px;
837
  padding: 2rem;
838
  text-align: center;
839
  transition: border-color 0.3s ease;
840
  cursor: pointer;
 
 
841
  }
842
 
843
  .file-upload-area:hover {
844
- border-color: #1f77b4;
845
- background-color: #f8f9fa;
846
  }
847
 
848
  .file-upload-area.dragover {
849
- border-color: #1f77b4;
850
- background-color: #e3f2fd;
851
  }
852
 
853
  /* Alert Styles */
@@ -857,16 +947,274 @@ kbd {
857
  }
858
 
859
  .alert-success {
860
- background: linear-gradient(135deg, #d4edda, #c3e6cb);
861
- color: #155724;
862
  }
863
 
864
  .alert-danger {
865
- background: linear-gradient(135deg, #f8d7da, #f5c6cb);
866
- color: #721c24;
867
  }
868
 
869
  .alert-info {
870
- background: linear-gradient(135deg, #d1ecf1, #bee5eb);
871
- color: #0c5460;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
872
  }
 
4
  margin: 0;
5
  padding: 0;
6
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
7
+ background-color: #1a1a1a;
8
+ color: #e0e0e0;
9
  }
10
 
11
  .container-fluid {
 
21
  .sidebar {
22
  height: 100vh;
23
  overflow-y: auto;
24
+ border-right: 1px solid #444;
25
+ background-color: #2d2d2d !important;
26
+ box-shadow: 2px 0 4px rgba(0,0,0,0.3);
27
  position: relative;
28
  }
29
 
 
39
  }
40
 
41
  .sidebar h4 {
42
+ color: #4fc3f7;
43
  font-weight: bold;
44
  text-align: center;
45
  margin-bottom: 1.5rem;
46
  }
47
 
48
  .sidebar h5 {
49
+ color: #b0b0b0;
50
  font-weight: 600;
51
  margin-bottom: 1rem;
52
  }
 
60
  }
61
 
62
  .header {
63
+ background: linear-gradient(135deg, #2c3e50, #34495e);
64
  color: white;
65
+ box-shadow: 0 2px 4px rgba(0,0,0,0.3);
66
  }
67
 
68
  .main-title {
69
  font-size: 2.5rem;
70
  font-weight: bold;
71
  margin: 0;
72
+ text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
73
+ }
74
+
75
+ .tagline {
76
+ font-size: 1.1rem;
77
+ margin: 0.5rem 0 0 0;
78
+ color: #bdc3c7;
79
+ font-weight: 300;
80
  }
81
 
82
  /* Chat Container */
 
92
  flex: 1;
93
  overflow-y: auto;
94
  padding: 1rem;
95
+ background-color: #2d2d2d;
96
  border-radius: 8px;
97
+ box-shadow: 0 2px 4px rgba(0,0,0,0.3);
98
  margin-bottom: 1rem;
99
  }
100
 
101
  .chat-input-container {
102
  padding: 0.5rem;
103
+ background-color: #2d2d2d;
104
  border-radius: 8px;
105
+ box-shadow: 0 2px 4px rgba(0,0,0,0.3);
106
  margin-top: 0.5rem;
107
  }
108
 
109
  /* Enhanced Chat Input Styles */
110
  .chat-input-wrapper {
111
+ background: #3a3a3a;
112
  border-radius: 8px;
113
+ border: 1px solid #555;
114
  padding: 0.75rem;
115
  margin: 0;
116
  }
 
126
 
127
  .input-controls small {
128
  font-size: 0.75em;
129
+ color: #999;
130
  }
131
 
132
  .input-section {
 
143
  .input-area textarea {
144
  resize: vertical;
145
  min-height: 60px;
146
+ border: 1px solid #555;
147
  border-radius: 6px;
148
  padding: 0.5rem 0.75rem;
149
  font-family: inherit;
150
  width: 100%;
151
+ background-color: #404040;
152
+ color: #e0e0e0;
153
  }
154
 
155
  .input-area textarea:focus {
156
+ border-color: #4fc3f7;
157
+ box-shadow: 0 0 0 0.2rem rgba(79, 195, 247, 0.25);
158
  }
159
 
160
  .markdown-preview {
161
+ border: 1px solid #555;
162
  border-radius: 6px;
163
  padding: 0.75rem;
164
+ background-color: #404040;
165
  min-height: 60px;
166
  max-height: 200px;
167
  overflow-y: auto;
168
+ color: #e0e0e0;
169
  }
170
 
171
  .markdown-preview:empty:before {
172
  content: "Preview will appear here...";
173
+ color: #999;
174
  font-style: italic;
175
  }
176
 
 
220
  }
221
 
222
  .message.user .message-bubble {
223
+ background: linear-gradient(135deg, #4fc3f7, #29b6f6);
224
  color: white;
225
  }
226
 
227
  .message.assistant .message-bubble {
228
+ background-color: #404040;
229
+ border: 1px solid #555;
230
+ color: #e0e0e0;
231
  }
232
 
233
  .message-bubble h1,
 
238
  .message-bubble h6 {
239
  margin-top: 1rem;
240
  margin-bottom: 0.5rem;
241
+ color: #bdc3c7;
242
  font-weight: 600;
243
  }
244
 
 
266
  }
267
 
268
  .message-bubble blockquote {
269
+ border-left: 4px solid #4fc3f7;
270
  margin: 1rem 0;
271
  padding: 0.5rem 1rem;
272
+ background-color: rgba(79, 195, 247, 0.1);
273
  font-style: italic;
274
  }
275
 
276
  .message-bubble pre {
277
+ background-color: #2d2d2d;
278
+ border: 1px solid #555;
279
  border-radius: 4px;
280
  padding: 1rem;
281
  margin: 1rem 0;
 
285
  }
286
 
287
  .message-bubble code {
288
+ background-color: #2d2d2d;
289
+ border: 1px solid #555;
290
  border-radius: 3px;
291
  padding: 0.2rem 0.4rem;
292
  font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
 
307
 
308
  .message-bubble th,
309
  .message-bubble td {
310
+ border: 1px solid #555;
311
  padding: 0.5rem;
312
  text-align: left;
313
  }
314
 
315
  .message-bubble th {
316
+ background-color: #2d2d2d;
317
  font-weight: 600;
318
  }
319
 
320
  .message-bubble a {
321
+ color: #4fc3f7;
322
  text-decoration: none;
323
  }
324
 
 
328
 
329
  .message-bubble hr {
330
  border: none;
331
+ border-top: 1px solid #555;
332
  margin: 1.5rem 0;
333
  }
334
 
 
341
 
342
  /* Enhanced Code Syntax Highlighting */
343
  .message-bubble pre[class*="language-"] {
344
+ background-color: #2d2d2d;
345
+ border: 1px solid #555;
346
  border-radius: 6px;
347
  padding: 1rem;
348
  margin: 1rem 0;
 
360
  top: 0.5rem;
361
  right: 0.5rem;
362
  font-size: 0.7em;
363
+ color: #999;
364
  text-transform: uppercase;
365
  font-weight: 600;
366
  }
 
378
  .token.prolog,
379
  .token.doctype,
380
  .token.cdata {
381
+ color: #999;
382
  font-style: italic;
383
  }
384
 
385
  .token.punctuation {
386
+ color: #e0e0e0;
387
  }
388
 
389
  .token.property,
 
512
  .stat-item {
513
  text-align: center;
514
  padding: 1rem;
515
+ background-color: #404040;
516
  border-radius: 8px;
517
+ border: 1px solid #555;
518
  }
519
 
520
  .stat-value {
521
  font-size: 1.5rem;
522
  font-weight: bold;
523
+ color: #4fc3f7;
524
  }
525
 
526
  .stat-label {
527
  font-size: 0.9rem;
528
+ color: #b0b0b0;
529
  margin-top: 0.25rem;
530
  }
531
 
 
533
  .metric-card {
534
  text-align: center;
535
  padding: 1.5rem;
536
+ background-color: #404040;
537
  border-radius: 8px;
538
+ border: 1px solid #555;
539
  height: 100%;
540
  }
541
 
542
  .metric-value {
543
  font-size: 2rem;
544
  font-weight: bold;
545
+ color: #4fc3f7;
546
  }
547
 
548
  .metric-label {
549
  font-size: 0.9rem;
550
+ color: #b0b0b0;
551
  margin-top: 0.5rem;
552
  }
553
 
 
563
 
564
  .loading-text {
565
  margin-top: 1rem;
566
+ color: #e0e0e0;
567
  font-weight: 500;
568
  }
569
 
 
594
  }
595
 
596
  .btn-primary {
597
+ background: linear-gradient(135deg, #4fc3f7, #29b6f6);
598
  border: none;
599
+ color: white;
600
  }
601
 
602
  .btn-success {
603
+ background: linear-gradient(135deg, #66bb6a, #4caf50);
604
  border: none;
605
+ color: white;
606
  }
607
 
608
  .btn-info {
609
+ background: linear-gradient(135deg, #42a5f5, #2196f3);
610
  border: none;
611
+ color: white;
612
  }
613
 
614
+ /* Additional Dark Theme Styles */
615
+ .form-text {
616
+ color: #999 !important;
 
 
617
  }
618
 
619
+ .text-muted {
620
+ color: #999 !important;
 
621
  }
622
 
623
+ .btn-outline-secondary {
624
+ color: #b0b0b0;
625
+ border-color: #555;
626
+ background-color: transparent;
 
627
  }
628
 
629
+ .btn-outline-secondary:hover {
630
+ color: #fff;
631
+ background-color: #555;
632
+ border-color: #555;
 
633
  }
634
 
635
+ .btn-outline-info {
636
+ color: #4fc3f7;
637
+ border-color: #4fc3f7;
638
+ background-color: transparent;
 
639
  }
640
 
641
+ .btn-outline-info:hover {
642
+ color: #fff;
643
+ background-color: #4fc3f7;
644
+ border-color: #4fc3f7;
 
 
 
 
645
  }
646
 
647
+ .btn-outline-warning {
648
+ color: #ff9800;
649
+ border-color: #ff9800;
650
+ background-color: transparent;
 
 
651
  }
652
 
653
+ .btn-outline-warning:hover {
654
+ color: #fff;
655
+ background-color: #ff9800;
656
+ border-color: #ff9800;
657
+ }
658
+
659
+ .btn-outline-primary {
660
+ color: #4fc3f7;
661
+ border-color: #4fc3f7;
662
+ background-color: transparent;
663
+ }
664
+
665
+ .btn-outline-primary:hover {
666
+ color: #fff;
667
+ background-color: #4fc3f7;
668
+ border-color: #4fc3f7;
669
+ }
670
+
671
+ .input-group-text {
672
+ background-color: #404040;
673
+ border-color: #555;
674
+ color: #e0e0e0;
675
+ }
676
+
677
+ .spinner-border {
678
+ border-color: #4fc3f7 transparent #4fc3f7 transparent;
679
+ }
680
+
681
+ /* Welcome message styling */
682
+ .welcome-message .alert-info {
683
+ background: linear-gradient(135deg, #1976d2, #1e88e5);
684
+ color: #e3f2fd;
685
+ border: 1px solid #555;
686
+ }
687
+
688
+ /* Citation content styling */
689
+ .citation-content {
690
+ background-color: #404040;
691
+ border: 1px solid #555;
692
+ color: #e0e0e0;
693
+ }
694
+
695
+ .citation-content h1,
696
+ .citation-content h2,
697
+ .citation-content h3,
698
+ .citation-content h4,
699
+ .citation-content h5,
700
+ .citation-content h6 {
701
+ color: #bdc3c7;
702
+ }
703
+
704
+ .citation-content code {
705
+ background-color: #2d2d2d;
706
+ border: 1px solid #555;
707
+ color: #e0e0e0;
708
+ }
709
+
710
+ /* Copy button styling */
711
+ .code-copy-btn {
712
+ background: rgba(45, 45, 45, 0.9);
713
+ border: 1px solid #555;
714
+ color: #e0e0e0;
715
+ }
716
+
717
+ .code-copy-btn:hover {
718
+ background: rgba(45, 45, 45, 0.95);
719
+ }
720
+
721
+ /* Processing modal styling */
722
+ .modal .spinner-border {
723
+ border-color: #4fc3f7;
724
+ border-right-color: transparent;
725
+ }
726
+
727
+ /* Dropdown and select styling */
728
+ .dropdown-menu {
729
+ background-color: #2d2d2d;
730
+ border: 1px solid #555;
731
+ }
732
+
733
+ .dropdown-item {
734
+ color: #e0e0e0;
735
+ }
736
+
737
+ .dropdown-item:hover {
738
+ background-color: #404040;
739
+ color: #fff;
740
+ }
741
+
742
+ /* Close button styling */
743
+ .btn-close {
744
+ filter: invert(1) grayscale(100%) brightness(200%);
745
  }
746
 
747
  /* Responsive Design */
 
814
  top: 1rem;
815
  left: 1rem;
816
  z-index: 1001;
817
+ background: #4fc3f7;
818
  color: white;
819
  border: none;
820
  border-radius: 8px;
821
  padding: 0.75rem;
822
  font-size: 1.2rem;
823
+ box-shadow: 0 2px 8px rgba(0,0,0,0.3);
824
  transition: all 0.3s ease;
825
  }
826
 
827
  .mobile-menu-btn:hover {
828
+ background: #29b6f6;
829
  transform: scale(1.05);
830
  }
831
 
832
  .mobile-menu-btn:focus {
833
  outline: none;
834
+ box-shadow: 0 0 0 3px rgba(79, 195, 247, 0.3);
835
  }
836
 
837
  /* Mobile Close Button */
 
888
  }
889
 
890
  ::-webkit-scrollbar-track {
891
+ background: #2d2d2d;
892
  border-radius: 4px;
893
  }
894
 
895
  ::-webkit-scrollbar-thumb {
896
+ background: #555;
897
  border-radius: 4px;
898
  }
899
 
900
  ::-webkit-scrollbar-thumb:hover {
901
+ background: #666;
902
  }
903
 
904
  /* Animation for processing */
 
920
 
921
  /* File upload area */
922
  .file-upload-area {
923
+ border: 2px dashed #555;
924
  border-radius: 8px;
925
  padding: 2rem;
926
  text-align: center;
927
  transition: border-color 0.3s ease;
928
  cursor: pointer;
929
+ background-color: #404040;
930
+ color: #e0e0e0;
931
  }
932
 
933
  .file-upload-area:hover {
934
+ border-color: #4fc3f7;
935
+ background-color: #4a4a4a;
936
  }
937
 
938
  .file-upload-area.dragover {
939
+ border-color: #4fc3f7;
940
+ background-color: rgba(79, 195, 247, 0.1);
941
  }
942
 
943
  /* Alert Styles */
 
947
  }
948
 
949
  .alert-success {
950
+ background: linear-gradient(135deg, #2e7d32, #388e3c);
951
+ color: #e8f5e8;
952
  }
953
 
954
  .alert-danger {
955
+ background: linear-gradient(135deg, #c62828, #d32f2f);
956
+ color: #ffebee;
957
  }
958
 
959
  .alert-info {
960
+ background: linear-gradient(135deg, #1976d2, #1e88e5);
961
+ color: #e3f2fd;
962
+ }
963
+
964
+ /* Bootstrap Component Overrides for Dark Theme */
965
+ .modal-backdrop {
966
+ background-color: rgba(0, 0, 0, 0.8);
967
+ }
968
+
969
+ /* Bootstrap Labels */
970
+ .form-label {
971
+ color: #e0e0e0;
972
+ }
973
+
974
+ /* Bootstrap HR elements */
975
+ hr {
976
+ border-color: #555;
977
+ opacity: 0.3;
978
+ }
979
+
980
+ /* Bootstrap Headers in Modal */
981
+ .modal h5, .modal h6 {
982
+ color: #e0e0e0;
983
+ }
984
+
985
+ .modal-body h6 {
986
+ color: #bdc3c7;
987
+ margin-bottom: 0.75rem;
988
+ }
989
+
990
+ /* Bootstrap Row and Column elements in modals */
991
+ .modal .row {
992
+ margin: 0;
993
+ }
994
+
995
+ /* Bootstrap Strong elements */
996
+ .modal strong {
997
+ color: #e0e0e0;
998
+ }
999
+
1000
+ /* Bootstrap List elements */
1001
+ .modal ul, .modal ol {
1002
+ color: #e0e0e0;
1003
+ }
1004
+
1005
+ .modal li {
1006
+ color: #e0e0e0;
1007
+ }
1008
+
1009
+ /* Bootstrap Text elements */
1010
+ .text-center {
1011
+ color: inherit;
1012
+ }
1013
+
1014
+ /* Modal body paragraph elements */
1015
+ .modal-body p {
1016
+ color: #e0e0e0;
1017
+ }
1018
+
1019
+ /* Chart container styling */
1020
+ .chart-container {
1021
+ background-color: #2d2d2d;
1022
+ border-radius: 8px;
1023
+ padding: 1rem;
1024
+ border: 1px solid #555;
1025
+ }
1026
+
1027
+ /* Processing message styling */
1028
+ #processingMessage {
1029
+ color: #e0e0e0;
1030
+ }
1031
+
1032
+ /* Visually hidden elements */
1033
+ .visually-hidden {
1034
+ color: inherit;
1035
+ }
1036
+
1037
+ /* Bootstrap Row margin fix for dark theme */
1038
+ .row.mb-3 {
1039
+ margin-bottom: 1rem !important;
1040
+ }
1041
+
1042
+ /* Table styling in modals */
1043
+ .modal table {
1044
+ color: #e0e0e0;
1045
+ }
1046
+
1047
+ /* Bootstrap utility classes override */
1048
+ .mb-3 {
1049
+ margin-bottom: 1rem !important;
1050
+ }
1051
+
1052
+ .mt-3 {
1053
+ margin-top: 1rem !important;
1054
+ }
1055
+
1056
+ /* File input styling */
1057
+ input[type="file"] {
1058
+ background-color: #404040;
1059
+ border: 1px solid #555;
1060
+ color: #e0e0e0;
1061
+ }
1062
+
1063
+ input[type="file"]::-webkit-file-upload-button {
1064
+ background-color: #555;
1065
+ color: #e0e0e0;
1066
+ border: none;
1067
+ padding: 0.375rem 0.75rem;
1068
+ border-radius: 4px;
1069
+ margin-right: 0.5rem;
1070
+ }
1071
+
1072
+ /* Chart.js tooltip styling override */
1073
+ .chartjs-tooltip {
1074
+ background-color: #2d2d2d !important;
1075
+ border: 1px solid #555 !important;
1076
+ color: #e0e0e0 !important;
1077
+ }
1078
+
1079
+ /* Loading spinner text color */
1080
+ .spinner-border.text-primary {
1081
+ border-color: #4fc3f7 transparent #4fc3f7 transparent;
1082
+ }
1083
+
1084
+ /* Bootstrap fade show classes */
1085
+ .fade.show {
1086
+ opacity: 1;
1087
+ }
1088
+
1089
+ /* Alert dismissible button styling */
1090
+ .alert .btn-close {
1091
+ filter: invert(1) grayscale(100%) brightness(200%);
1092
+ }
1093
+
1094
+ /* Bootstrap responsive utilities */
1095
+ @media (max-width: 768px) {
1096
+ .col-3 {
1097
+ margin-bottom: 1rem;
1098
+ }
1099
+ }
1100
+
1101
+ /* Chart.js Dark Theme Styling */
1102
+ .chart-container canvas {
1103
+ background-color: transparent;
1104
+ }
1105
+
1106
+ /* Override Chart.js default colors for dark theme */
1107
+ .modal .chart-container {
1108
+ background-color: #404040;
1109
+ border: 1px solid #555;
1110
+ border-radius: 8px;
1111
+ padding: 1rem;
1112
+ margin-top: 1rem;
1113
+ }
1114
+
1115
+ /* Ensure chart legends are visible in dark theme */
1116
+ .chartjs-legend {
1117
+ color: #e0e0e0 !important;
1118
+ }
1119
+
1120
+ .chartjs-legend-item {
1121
+ color: #e0e0e0 !important;
1122
+ }
1123
+
1124
+ /* Summary modal specific styling */
1125
+ #summaryModal .modal-content {
1126
+ background-color: #2d2d2d;
1127
+ border: 1px solid #555;
1128
+ }
1129
+
1130
+ #summaryModal .modal-header {
1131
+ background: linear-gradient(135deg, #2c3e50, #34495e);
1132
+ border-bottom: 1px solid #555;
1133
+ }
1134
+
1135
+ #summaryModal .modal-body {
1136
+ background-color: #2d2d2d;
1137
+ color: #e0e0e0;
1138
+ }
1139
+
1140
+ /* Processing modal specific styling */
1141
+ #processingModal .modal-content {
1142
+ background-color: #2d2d2d;
1143
+ border: 1px solid #555;
1144
+ }
1145
+
1146
+ #processingModal .modal-header {
1147
+ background: linear-gradient(135deg, #2c3e50, #34495e);
1148
+ border-bottom: 1px solid #555;
1149
+ }
1150
+
1151
+ #processingModal .modal-body {
1152
+ background-color: #2d2d2d;
1153
+ color: #e0e0e0;
1154
+ }
1155
+
1156
+ /* Markdown Help modal specific styling */
1157
+ #markdownHelpModal .modal-content {
1158
+ background-color: #2d2d2d;
1159
+ border: 1px solid #555;
1160
+ }
1161
+
1162
+ #markdownHelpModal .modal-header {
1163
+ background: linear-gradient(135deg, #2c3e50, #34495e);
1164
+ border-bottom: 1px solid #555;
1165
+ }
1166
+
1167
+ #markdownHelpModal .modal-body {
1168
+ background-color: #2d2d2d;
1169
+ color: #e0e0e0;
1170
+ }
1171
+
1172
+ /* Ensure all modal text is properly colored */
1173
+ .modal-body br + br {
1174
+ line-height: 1.5;
1175
+ }
1176
+
1177
+ /* Code examples in markdown help modal */
1178
+ #markdownHelpModal code {
1179
+ background-color: #404040;
1180
+ border: 1px solid #555;
1181
+ color: #4fc3f7;
1182
+ padding: 0.2em 0.4em;
1183
+ border-radius: 3px;
1184
+ }
1185
+
1186
+ #markdownHelpModal pre {
1187
+ background-color: #404040;
1188
+ border: 1px solid #555;
1189
+ color: #e0e0e0;
1190
+ padding: 0.75rem;
1191
+ border-radius: 4px;
1192
+ }
1193
+
1194
+ /* Arrow symbols in markdown help */
1195
+ #markdownHelpModal .modal-body {
1196
+ color: #e0e0e0;
1197
+ }
1198
+
1199
+ #markdownHelpModal .modal-body โ†’ {
1200
+ color: #4fc3f7;
1201
+ }
1202
+
1203
+ /* Strong and em elements in modals */
1204
+ #markdownHelpModal strong {
1205
+ color: #e0e0e0;
1206
+ }
1207
+
1208
+ #markdownHelpModal em {
1209
+ color: #bdc3c7;
1210
+ }
1211
+
1212
+ /* Ensure proper spacing for modal content */
1213
+ .modal-body .row .col-md-6 {
1214
+ margin-bottom: 1rem;
1215
+ }
1216
+
1217
+ /* Fix for any remaining white backgrounds */
1218
+ .bg-light {
1219
+ background-color: #2d2d2d !important;
1220
  }