Maximofn commited on
Commit
948fa66
·
1 Parent(s): add0b3f

Carga el CSS desde un archivo externo para mejorar la organización del código y facilitar la gestión de estilos.

Browse files
Files changed (2) hide show
  1. app.py +7 -393
  2. style.css +395 -0
app.py CHANGED
@@ -4,6 +4,7 @@ import asyncio
4
  import inspect
5
  import base64
6
  import mimetypes
 
7
  import gradio as gr
8
  from openai import OpenAI
9
  from dotenv import load_dotenv
@@ -84,399 +85,12 @@ Comienza preguntando si ya tiene cuenta y acceso al portal adecuado:
84
  - Para OneDrive: cuenta de Microsoft y acceso a Microsoft Entra ID (Azure AD) en Azure Portal.
85
  """
86
 
87
- style = """
88
- /* ============================================
89
- COLOR PALETTE FOR LIGHT AND DARK THEMES
90
- ============================================ */
91
- :root {
92
- /* Primary Purple Colors */
93
- --primary-purple: #7C3AED;
94
- --primary-purple-light: #8B5CF6;
95
- --primary-purple-lighter: #A78BFA;
96
- --primary-purple-dark: #6D28D9;
97
-
98
- /* Secondary Purple/Pink Colors */
99
- --secondary-purple: #9333EA;
100
- --secondary-pink: #EC4899;
101
- --secondary-pink-light: #F472B6;
102
-
103
- /* Accent Colors */
104
- --accent-coral: #FF7B7B;
105
- --accent-salmon: #FF8F8F;
106
- --accent-green: #10B981;
107
- --accent-teal: #14B8A6;
108
- --accent-yellow: #FBBF24;
109
- --accent-orange: #FB923C;
110
-
111
- /* Background Colors - Light Theme */
112
- --bg-light-primary: #FFFFFF;
113
- --bg-light-secondary: #F9FAFB;
114
- --bg-light-tertiary: #F3F4F6;
115
- --bg-light-card: #FFFFFF;
116
-
117
- /* Background Colors - Dark Theme */
118
- --bg-dark-primary: #0F172A;
119
- --bg-dark-secondary: #1E293B;
120
- --bg-dark-tertiary: #334155;
121
- --bg-dark-card: #1E293B;
122
-
123
- /* Text Colors - Light Theme */
124
- --text-light-primary: #111827;
125
- --text-light-secondary: #4B5563;
126
- --text-light-tertiary: #9CA3AF;
127
-
128
- /* Text Colors - Dark Theme */
129
- --text-dark-primary: #F9FAFB;
130
- --text-dark-secondary: #E5E7EB;
131
- --text-dark-tertiary: #9CA3AF;
132
-
133
- /* Gradient Backgrounds */
134
- --gradient-purple: linear-gradient(135deg, #7C3AED 0%, #9333EA 100%);
135
- --gradient-purple-pink: linear-gradient(135deg, #8B5CF6 0%, #EC4899 100%);
136
- --gradient-blue-purple: linear-gradient(135deg, #667EEA 0%, #764BA2 100%);
137
- --gradient-coral: linear-gradient(135deg, #FF8F8F 0%, #FF7B7B 100%);
138
-
139
- /* Border & Shadow Colors */
140
- --border-light: #E5E7EB;
141
- --border-dark: #374151;
142
- --shadow-light: rgba(0, 0, 0, 0.1);
143
- --shadow-purple: rgba(124, 58, 237, 0.3);
144
-
145
- /* Card & Surface */
146
- --card-radius: 20px;
147
- --card-shadow-light: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
148
- --card-shadow-dark: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.2);
149
- }
150
-
151
- /* Modern title styling - Purple with subtle shadow */
152
- .prose h1 {
153
- font-size: 2.5rem !important;
154
- font-weight: 800 !important;
155
- text-align: center !important;
156
- margin: 1.5rem 0 0.5rem 0 !important;
157
- padding: 0 !important;
158
- letter-spacing: -0.04em !important;
159
- text-transform: none !important;
160
- line-height: 1.2 !important;
161
-
162
- /* Deep purple with subtle shadow for depth */
163
- color: var(--primary-purple-dark) !important;
164
- text-shadow: 0 2px 8px rgba(109, 40, 217, 0.15) !important;
165
- }
166
-
167
- /* Dark theme title - Lighter purple with glow */
168
- .dark .prose h1 {
169
- color: var(--primary-purple-lighter) !important;
170
- text-shadow: 0 2px 12px rgba(167, 139, 250, 0.25) !important;
171
- }
172
-
173
- /* Description styling - Target markdown div (not paragraphs which are used in chat) */
174
- /* The description is rendered as: .prose > .md > div */
175
- .prose .md > div {
176
- font-size: 1rem !important;
177
- font-weight: 400 !important;
178
- line-height: 1.6 !important;
179
- text-align: center !important;
180
- margin: 0.75rem auto 1.5rem auto !important;
181
- padding: 1.25rem 1.5rem !important;
182
- max-width: 700px !important;
183
- color: var(--text-light-secondary) !important;
184
- background: var(--bg-light-secondary) !important;
185
- border-radius: 16px !important;
186
- box-shadow: var(--card-shadow-light) !important;
187
- display: block !important;
188
- position: relative !important;
189
-
190
- /* Multi-color gradient border */
191
- border: 1px solid transparent !important;
192
- background-image:
193
- linear-gradient(var(--bg-light-secondary), var(--bg-light-secondary)),
194
- linear-gradient(
195
- 90deg,
196
- var(--primary-purple) 0%,
197
- var(--secondary-pink) 14%,
198
- var(--accent-salmon) 28%,
199
- var(--accent-orange) 42%,
200
- var(--accent-yellow) 57%,
201
- var(--accent-green) 71%,
202
- var(--accent-teal) 85%,
203
- var(--primary-purple-light) 100%
204
- ) !important;
205
- background-origin: border-box !important;
206
- background-clip: padding-box, border-box !important;
207
- }
208
-
209
- /* Bold text styling within description */
210
- .prose .md > div strong {
211
- color: var(--primary-purple) !important;
212
- font-weight: 600 !important;
213
- }
214
-
215
- /* Dark theme description */
216
- .dark .prose .md > div {
217
- color: var(--text-dark-secondary) !important;
218
- box-shadow: var(--card-shadow-dark) !important;
219
-
220
- /* Multi-color gradient border for dark theme */
221
- background-image:
222
- linear-gradient(var(--bg-dark-card), var(--bg-dark-card)),
223
- linear-gradient(
224
- 90deg,
225
- var(--primary-purple) 0%,
226
- var(--secondary-pink) 14%,
227
- var(--accent-salmon) 28%,
228
- var(--accent-orange) 42%,
229
- var(--accent-yellow) 57%,
230
- var(--accent-green) 71%,
231
- var(--accent-teal) 85%,
232
- var(--primary-purple-light) 100%
233
- ) !important;
234
- }
235
-
236
- /* Dark theme bold text in description */
237
- .dark .prose .md > div strong {
238
- color: var(--primary-purple-light) !important;
239
- }
240
-
241
- /* ============================================
242
- CHATBOT STYLING - Modern and Clean
243
- ============================================ */
244
-
245
- /* Chat container */
246
- .chatbot, [data-testid="chatbot"] {
247
- border-radius: var(--card-radius) !important;
248
- box-shadow: var(--card-shadow-light) !important;
249
- }
250
-
251
- /* User messages - Purple accent */
252
- .message.user,
253
- .user-message,
254
- [data-testid="user-message"] {
255
- background: linear-gradient(135deg, var(--primary-purple-light) 0%, var(--primary-purple) 100%) !important;
256
- color: white !important;
257
- border-radius: 18px 18px 4px 18px !important;
258
- padding: 0.875rem 1.125rem !important;
259
- margin: 0.5rem 0 !important;
260
- box-shadow: 0 2px 8px rgba(124, 58, 237, 0.25) !important;
261
- margin-left: auto !important;
262
- }
263
-
264
- /* Force white text for all content inside user messages */
265
- .message.user *,
266
- .user-message *,
267
- [data-testid="user-message"] *,
268
- .user-row *,
269
- .message.user p,
270
- .message.user span,
271
- .message.user div {
272
- color: white !important;
273
- }
274
-
275
- /* Assistant messages - Light background */
276
- .message.bot,
277
- .bot-message,
278
- [data-testid="bot-message"] {
279
- background: var(--bg-light-card) !important;
280
- color: var(--text-light-primary) !important;
281
- border-radius: 18px 18px 18px 4px !important;
282
- padding: 0.875rem 1.125rem !important;
283
- margin: 0.5rem 0 !important;
284
- border: 1px solid var(--border-light) !important;
285
- box-shadow: var(--card-shadow-light) !important;
286
- max-width: 80% !important;
287
- margin-right: auto !important;
288
- }
289
-
290
- /* Input textarea */
291
- textarea,
292
- .gr-textbox textarea,
293
- [data-testid="textbox"] {
294
- background: var(--bg-light-card) !important;
295
- color: var(--text-light-primary) !important;
296
- border: 2px solid var(--border-light) !important;
297
- border-radius: 12px !important;
298
- padding: 0.75rem 1rem !important;
299
- font-size: 1rem !important;
300
- transition: all 0.2s ease !important;
301
- }
302
-
303
- textarea:focus,
304
- .gr-textbox textarea:focus {
305
- border-color: var(--primary-purple) !important;
306
- box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.1) !important;
307
- outline: none !important;
308
- }
309
-
310
- /* Submit button and action buttons */
311
- button[type="submit"],
312
- .submit-button,
313
- button.primary {
314
- background: var(--gradient-purple) !important;
315
- color: white !important;
316
- border: none !important;
317
- border-radius: 12px !important;
318
- padding: 0.625rem 1.5rem !important;
319
- font-weight: 600 !important;
320
- transition: all 0.2s ease !important;
321
- box-shadow: 0 2px 8px rgba(124, 58, 237, 0.25) !important;
322
- }
323
-
324
- button[type="submit"]:hover,
325
- .submit-button:hover,
326
- button.primary:hover {
327
- background: var(--primary-purple-dark) !important;
328
- box-shadow: 0 4px 12px rgba(124, 58, 237, 0.35) !important;
329
- transform: translateY(-1px) !important;
330
- }
331
-
332
- /* Example buttons */
333
- .example,
334
- button.example {
335
- background: var(--bg-light-secondary) !important;
336
- color: var(--text-light-primary) !important;
337
- border: 1px solid var(--border-light) !important;
338
- border-radius: 12px !important;
339
- padding: 0.75rem 1rem !important;
340
- transition: all 0.2s ease !important;
341
- }
342
-
343
- .example:hover,
344
- button.example:hover {
345
- background: var(--bg-light-tertiary) !important;
346
- border-color: var(--primary-purple-light) !important;
347
- transform: translateY(-2px) !important;
348
- box-shadow: 0 4px 12px rgba(124, 58, 237, 0.15) !important;
349
- }
350
-
351
- /* Scrollbar styling */
352
- .chatbot::-webkit-scrollbar,
353
- [data-testid="chatbot"]::-webkit-scrollbar {
354
- width: 8px;
355
- }
356
-
357
- .chatbot::-webkit-scrollbar-track,
358
- [data-testid="chatbot"]::-webkit-scrollbar-track {
359
- background: var(--bg-light-secondary);
360
- border-radius: 10px;
361
- }
362
-
363
- .chatbot::-webkit-scrollbar-thumb,
364
- [data-testid="chatbot"]::-webkit-scrollbar-thumb {
365
- background: var(--primary-purple-light);
366
- border-radius: 10px;
367
- }
368
-
369
- .chatbot::-webkit-scrollbar-thumb:hover,
370
- [data-testid="chatbot"]::-webkit-scrollbar-thumb:hover {
371
- background: var(--primary-purple);
372
- }
373
-
374
- /* ============================================
375
- DARK THEME STYLES
376
- ============================================ */
377
-
378
- .dark :root, .dark .gradio-container { color-scheme: dark; }
379
- .dark body, .dark .gradio-container { background: var(--bg-dark-primary); }
380
- .dark .prose, .dark .gr-text, .dark .gr-form { color: var(--text-dark-secondary); }
381
-
382
- /* Dark theme - Chat container */
383
- .dark .chatbot,
384
- .dark [data-testid="chatbot"] {
385
- border-color: var(--border-dark) !important;
386
- box-shadow: var(--card-shadow-dark) !important;
387
- }
388
-
389
- /* Dark theme - User messages */
390
- .dark .message.user,
391
- .dark .user-message,
392
- .dark [data-testid="user-message"] {
393
- background: linear-gradient(135deg, var(--primary-purple) 0%, var(--primary-purple-dark) 100%) !important;
394
- color: white !important;
395
- box-shadow: 0 2px 8px rgba(124, 58, 237, 0.4) !important;
396
- }
397
-
398
- /* Dark theme - Force white text in user messages */
399
- .dark .message.user *,
400
- .dark .user-message *,
401
- .dark [data-testid="user-message"] *,
402
- .dark .user-row *,
403
- .dark .message.user p,
404
- .dark .message.user span,
405
- .dark .message.user div {
406
- color: white !important;
407
- }
408
-
409
- /* Dark theme - Assistant messages */
410
- .dark .message.bot,
411
- .dark .bot-message,
412
- .dark [data-testid="bot-message"] {
413
- background: var(--bg-dark-card) !important;
414
- color: var(--text-dark-primary) !important;
415
- border-color: var(--border-dark) !important;
416
- box-shadow: var(--card-shadow-dark) !important;
417
- }
418
-
419
- /* Dark theme - Input */
420
- .dark textarea,
421
- .dark .gr-textbox textarea,
422
- .dark [data-testid="textbox"] {
423
- background: var(--bg-dark-secondary) !important;
424
- color: var(--text-dark-primary) !important;
425
- border-color: var(--border-dark) !important;
426
- }
427
-
428
- .dark textarea:focus,
429
- .dark .gr-textbox textarea:focus {
430
- border-color: var(--primary-purple-light) !important;
431
- box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.2) !important;
432
- }
433
-
434
- /* Dark theme - Buttons */
435
- .dark button[type="submit"],
436
- .dark .submit-button,
437
- .dark button.primary {
438
- background: var(--gradient-purple) !important;
439
- box-shadow: 0 2px 8px rgba(124, 58, 237, 0.4) !important;
440
- }
441
-
442
- .dark button[type="submit"]:hover,
443
- .dark .submit-button:hover,
444
- .dark button.primary:hover {
445
- background: var(--primary-purple-light) !important;
446
- box-shadow: 0 4px 12px rgba(167, 139, 250, 0.5) !important;
447
- }
448
-
449
- /* Dark theme - Example buttons */
450
- .dark .example,
451
- .dark button.example {
452
- background: var(--bg-dark-card) !important;
453
- color: var(--text-dark-primary) !important;
454
- border-color: var(--border-dark) !important;
455
- }
456
-
457
- .dark .example:hover,
458
- .dark button.example:hover {
459
- background: var(--bg-dark-secondary) !important;
460
- border-color: var(--primary-purple-light) !important;
461
- box-shadow: 0 4px 12px rgba(124, 58, 237, 0.25) !important;
462
- }
463
-
464
- /* Dark theme - Scrollbar */
465
- .dark .chatbot::-webkit-scrollbar-track,
466
- .dark [data-testid="chatbot"]::-webkit-scrollbar-track {
467
- background: var(--bg-dark-secondary);
468
- }
469
-
470
- .dark .chatbot::-webkit-scrollbar-thumb,
471
- .dark [data-testid="chatbot"]::-webkit-scrollbar-thumb {
472
- background: var(--primary-purple);
473
- }
474
-
475
- .dark .chatbot::-webkit-scrollbar-thumb:hover,
476
- .dark [data-testid="chatbot"]::-webkit-scrollbar-thumb:hover {
477
- background: var(--primary-purple-light);
478
- }
479
- """
480
 
481
 
482
  def _extract_text_and_files(message):
 
4
  import inspect
5
  import base64
6
  import mimetypes
7
+ from pathlib import Path
8
  import gradio as gr
9
  from openai import OpenAI
10
  from dotenv import load_dotenv
 
85
  - Para OneDrive: cuenta de Microsoft y acceso a Microsoft Entra ID (Azure AD) en Azure Portal.
86
  """
87
 
88
+ # Load CSS from external file
89
+ css_file = Path(__file__).parent / "style.css"
90
+ with open(css_file, "r") as f:
91
+ style = f.read()
92
+
93
+ # CSS is now loaded from style.css file
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
 
95
 
96
  def _extract_text_and_files(message):
style.css ADDED
@@ -0,0 +1,395 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ============================================
2
+ COLOR PALETTE FOR LIGHT AND DARK THEMES
3
+ ============================================ */
4
+ :root {
5
+ /* Primary Purple Colors */
6
+ --primary-purple: #7C3AED;
7
+ --primary-purple-light: #8B5CF6;
8
+ --primary-purple-lighter: #A78BFA;
9
+ --primary-purple-dark: #6D28D9;
10
+
11
+ /* Secondary Purple/Pink Colors */
12
+ --secondary-purple: #9333EA;
13
+ --secondary-pink: #EC4899;
14
+ --secondary-pink-light: #F472B6;
15
+
16
+ /* Accent Colors */
17
+ --accent-coral: #FF7B7B;
18
+ --accent-salmon: #FF8F8F;
19
+ --accent-green: #10B981;
20
+ --accent-teal: #14B8A6;
21
+ --accent-yellow: #FBBF24;
22
+ --accent-orange: #FB923C;
23
+
24
+ /* Background Colors - Light Theme */
25
+ --bg-light-primary: #FFFFFF;
26
+ --bg-light-secondary: #F9FAFB;
27
+ --bg-light-tertiary: #F3F4F6;
28
+ --bg-light-card: #FFFFFF;
29
+
30
+ /* Background Colors - Dark Theme */
31
+ --bg-dark-primary: #0F172A;
32
+ --bg-dark-secondary: #1E293B;
33
+ --bg-dark-tertiary: #334155;
34
+ --bg-dark-card: #1E293B;
35
+
36
+ /* Text Colors - Light Theme */
37
+ --text-light-primary: #111827;
38
+ --text-light-secondary: #4B5563;
39
+ --text-light-tertiary: #9CA3AF;
40
+
41
+ /* Text Colors - Dark Theme */
42
+ --text-dark-primary: #F9FAFB;
43
+ --text-dark-secondary: #E5E7EB;
44
+ --text-dark-tertiary: #9CA3AF;
45
+
46
+ /* Gradient Backgrounds */
47
+ --gradient-purple: linear-gradient(135deg, #7C3AED 0%, #9333EA 100%);
48
+ --gradient-purple-pink: linear-gradient(135deg, #8B5CF6 0%, #EC4899 100%);
49
+ --gradient-blue-purple: linear-gradient(135deg, #667EEA 0%, #764BA2 100%);
50
+ --gradient-coral: linear-gradient(135deg, #FF8F8F 0%, #FF7B7B 100%);
51
+
52
+ /* Border & Shadow Colors */
53
+ --border-light: #E5E7EB;
54
+ --border-dark: #374151;
55
+ --shadow-light: rgba(0, 0, 0, 0.1);
56
+ --shadow-purple: rgba(124, 58, 237, 0.3);
57
+
58
+ /* Card & Surface */
59
+ --card-radius: 20px;
60
+ --card-shadow-light: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
61
+ --card-shadow-dark: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.2);
62
+ }
63
+
64
+ /* Modern title styling - Purple with subtle shadow */
65
+ .prose h1 {
66
+ font-size: 2.5rem !important;
67
+ font-weight: 800 !important;
68
+ text-align: center !important;
69
+ margin: 1.5rem 0 0.5rem 0 !important;
70
+ padding: 0 !important;
71
+ letter-spacing: -0.04em !important;
72
+ text-transform: none !important;
73
+ line-height: 1.2 !important;
74
+
75
+ /* Deep purple with subtle shadow for depth */
76
+ color: var(--primary-purple-dark) !important;
77
+ text-shadow: 0 2px 8px rgba(109, 40, 217, 0.15) !important;
78
+ }
79
+
80
+ /* Dark theme title - Lighter purple with glow */
81
+ .dark .prose h1 {
82
+ color: var(--primary-purple-lighter) !important;
83
+ text-shadow: 0 2px 12px rgba(167, 139, 250, 0.25) !important;
84
+ }
85
+
86
+ /* Description styling - Target markdown div (not paragraphs which are used in chat) */
87
+ /* The description is rendered as: .prose > .md > div */
88
+ .prose .md > div {
89
+ font-size: 1rem !important;
90
+ font-weight: 400 !important;
91
+ line-height: 1.6 !important;
92
+ text-align: center !important;
93
+ margin: 0.75rem auto 1.5rem auto !important;
94
+ padding: 1.25rem 1.5rem !important;
95
+ max-width: 700px !important;
96
+ color: var(--text-light-secondary) !important;
97
+ background: var(--bg-light-secondary) !important;
98
+ border-radius: 16px !important;
99
+ box-shadow: var(--card-shadow-light) !important;
100
+ display: block !important;
101
+ position: relative !important;
102
+
103
+ /* Multi-color gradient border */
104
+ border: 3px solid transparent !important;
105
+ background-image:
106
+ linear-gradient(var(--bg-light-secondary), var(--bg-light-secondary)),
107
+ linear-gradient(
108
+ 90deg,
109
+ var(--primary-purple) 0%,
110
+ var(--secondary-pink) 14%,
111
+ var(--accent-salmon) 28%,
112
+ var(--accent-orange) 42%,
113
+ var(--accent-yellow) 57%,
114
+ var(--accent-green) 71%,
115
+ var(--accent-teal) 85%,
116
+ var(--primary-purple-light) 100%
117
+ ) !important;
118
+ background-origin: border-box !important;
119
+ background-clip: padding-box, border-box !important;
120
+ }
121
+
122
+ /* Bold text styling within description */
123
+ .prose .md > div strong {
124
+ color: var(--primary-purple) !important;
125
+ font-weight: 600 !important;
126
+ }
127
+
128
+ /* Dark theme description */
129
+ .dark .prose .md > div {
130
+ color: var(--text-dark-secondary) !important;
131
+ box-shadow: var(--card-shadow-dark) !important;
132
+
133
+ /* Multi-color gradient border for dark theme */
134
+ background-image:
135
+ linear-gradient(var(--bg-dark-card), var(--bg-dark-card)),
136
+ linear-gradient(
137
+ 90deg,
138
+ var(--primary-purple) 0%,
139
+ var(--secondary-pink) 14%,
140
+ var(--accent-salmon) 28%,
141
+ var(--accent-orange) 42%,
142
+ var(--accent-yellow) 57%,
143
+ var(--accent-green) 71%,
144
+ var(--accent-teal) 85%,
145
+ var(--primary-purple-light) 100%
146
+ ) !important;
147
+ }
148
+
149
+ /* Dark theme bold text in description */
150
+ .dark .prose .md > div strong {
151
+ color: var(--primary-purple-light) !important;
152
+ }
153
+
154
+ /* ============================================
155
+ CHATBOT STYLING - Modern and Clean
156
+ ============================================ */
157
+
158
+ /* Chat container */
159
+ .chatbot, [data-testid="chatbot"] {
160
+ border-radius: var(--card-radius) !important;
161
+ border: 1px solid var(--border-light) !important;
162
+ box-shadow: var(--card-shadow-light) !important;
163
+ }
164
+
165
+ /* User messages - Purple accent */
166
+ .message.user,
167
+ .user-message,
168
+ [data-testid="user-message"],
169
+ .user-row {
170
+ background: linear-gradient(135deg, var(--primary-purple-light) 0%, var(--primary-purple) 100%) !important;
171
+ color: white !important;
172
+ border-radius: 18px 18px 4px 18px !important;
173
+ padding: 0.875rem 1.125rem !important;
174
+ margin: 0.5rem 0 !important;
175
+ box-shadow: 0 2px 8px rgba(124, 58, 237, 0.25) !important;
176
+ max-width: 80% !important;
177
+ margin-left: auto !important;
178
+ }
179
+
180
+ /* Force white text for all content inside user messages */
181
+ .message.user *,
182
+ .user-message *,
183
+ [data-testid="user-message"] *,
184
+ .user-row *,
185
+ .message.user p,
186
+ .message.user span,
187
+ .message.user div {
188
+ color: white !important;
189
+ }
190
+
191
+ /* Assistant messages - Light background */
192
+ .message.bot,
193
+ .bot-message,
194
+ [data-testid="bot-message"] {
195
+ background: var(--bg-light-card) !important;
196
+ color: var(--text-light-primary) !important;
197
+ border-radius: 18px 18px 18px 4px !important;
198
+ padding: 0.875rem 1.125rem !important;
199
+ margin: 0.5rem 0 !important;
200
+ border: 1px solid var(--border-light) !important;
201
+ box-shadow: var(--card-shadow-light) !important;
202
+ max-width: 80% !important;
203
+ margin-right: auto !important;
204
+ }
205
+
206
+ /* Input textarea */
207
+ textarea,
208
+ .gr-textbox textarea,
209
+ [data-testid="textbox"] {
210
+ background: var(--bg-light-card) !important;
211
+ color: var(--text-light-primary) !important;
212
+ border: 2px solid var(--border-light) !important;
213
+ border-radius: 12px !important;
214
+ padding: 0.75rem 1rem !important;
215
+ font-size: 1rem !important;
216
+ transition: all 0.2s ease !important;
217
+ }
218
+
219
+ textarea:focus,
220
+ .gr-textbox textarea:focus {
221
+ border-color: var(--primary-purple) !important;
222
+ box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.1) !important;
223
+ outline: none !important;
224
+ }
225
+
226
+ /* Submit button and action buttons */
227
+ button[type="submit"],
228
+ .submit-button,
229
+ button.primary {
230
+ background: var(--gradient-purple) !important;
231
+ color: white !important;
232
+ border: none !important;
233
+ border-radius: 12px !important;
234
+ padding: 0.625rem 1.5rem !important;
235
+ font-weight: 600 !important;
236
+ transition: all 0.2s ease !important;
237
+ box-shadow: 0 2px 8px rgba(124, 58, 237, 0.25) !important;
238
+ }
239
+
240
+ button[type="submit"]:hover,
241
+ .submit-button:hover,
242
+ button.primary:hover {
243
+ background: var(--primary-purple-dark) !important;
244
+ box-shadow: 0 4px 12px rgba(124, 58, 237, 0.35) !important;
245
+ transform: translateY(-1px) !important;
246
+ }
247
+
248
+ /* Example buttons */
249
+ .example,
250
+ button.example {
251
+ background: var(--bg-light-secondary) !important;
252
+ color: var(--text-light-primary) !important;
253
+ border: 1px solid var(--border-light) !important;
254
+ border-radius: 12px !important;
255
+ padding: 0.75rem 1rem !important;
256
+ transition: all 0.2s ease !important;
257
+ }
258
+
259
+ .example:hover,
260
+ button.example:hover {
261
+ background: var(--bg-light-tertiary) !important;
262
+ border-color: var(--primary-purple-light) !important;
263
+ transform: translateY(-2px) !important;
264
+ box-shadow: 0 4px 12px rgba(124, 58, 237, 0.15) !important;
265
+ }
266
+
267
+ /* Scrollbar styling */
268
+ .chatbot::-webkit-scrollbar,
269
+ [data-testid="chatbot"]::-webkit-scrollbar {
270
+ width: 8px;
271
+ }
272
+
273
+ .chatbot::-webkit-scrollbar-track,
274
+ [data-testid="chatbot"]::-webkit-scrollbar-track {
275
+ background: var(--bg-light-secondary);
276
+ border-radius: 10px;
277
+ }
278
+
279
+ .chatbot::-webkit-scrollbar-thumb,
280
+ [data-testid="chatbot"]::-webkit-scrollbar-thumb {
281
+ background: var(--primary-purple-light);
282
+ border-radius: 10px;
283
+ }
284
+
285
+ .chatbot::-webkit-scrollbar-thumb:hover,
286
+ [data-testid="chatbot"]::-webkit-scrollbar-thumb:hover {
287
+ background: var(--primary-purple);
288
+ }
289
+
290
+ /* ============================================
291
+ DARK THEME STYLES
292
+ ============================================ */
293
+
294
+ .dark :root, .dark .gradio-container { color-scheme: dark; }
295
+ .dark body, .dark .gradio-container { background: var(--bg-dark-primary); }
296
+ .dark .prose, .dark .gr-text, .dark .gr-form { color: var(--text-dark-secondary); }
297
+
298
+ /* Dark theme - Chat container */
299
+ .dark .chatbot,
300
+ .dark [data-testid="chatbot"] {
301
+ border-color: var(--border-dark) !important;
302
+ box-shadow: var(--card-shadow-dark) !important;
303
+ }
304
+
305
+ /* Dark theme - User messages */
306
+ .dark .message.user,
307
+ .dark .user-message,
308
+ .dark [data-testid="user-message"],
309
+ .dark .user-row {
310
+ background: linear-gradient(135deg, var(--primary-purple) 0%, var(--primary-purple-dark) 100%) !important;
311
+ color: white !important;
312
+ box-shadow: 0 2px 8px rgba(124, 58, 237, 0.4) !important;
313
+ }
314
+
315
+ /* Dark theme - Force white text in user messages */
316
+ .dark .message.user *,
317
+ .dark .user-message *,
318
+ .dark [data-testid="user-message"] *,
319
+ .dark .user-row *,
320
+ .dark .message.user p,
321
+ .dark .message.user span,
322
+ .dark .message.user div {
323
+ color: white !important;
324
+ }
325
+
326
+ /* Dark theme - Assistant messages */
327
+ .dark .message.bot,
328
+ .dark .bot-message,
329
+ .dark [data-testid="bot-message"] {
330
+ background: var(--bg-dark-card) !important;
331
+ color: var(--text-dark-primary) !important;
332
+ border-color: var(--border-dark) !important;
333
+ box-shadow: var(--card-shadow-dark) !important;
334
+ }
335
+
336
+ /* Dark theme - Input */
337
+ .dark textarea,
338
+ .dark .gr-textbox textarea,
339
+ .dark [data-testid="textbox"] {
340
+ background: var(--bg-dark-secondary) !important;
341
+ color: var(--text-dark-primary) !important;
342
+ border-color: var(--border-dark) !important;
343
+ }
344
+
345
+ .dark textarea:focus,
346
+ .dark .gr-textbox textarea:focus {
347
+ border-color: var(--primary-purple-light) !important;
348
+ box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.2) !important;
349
+ }
350
+
351
+ /* Dark theme - Buttons */
352
+ .dark button[type="submit"],
353
+ .dark .submit-button,
354
+ .dark button.primary {
355
+ background: var(--gradient-purple) !important;
356
+ box-shadow: 0 2px 8px rgba(124, 58, 237, 0.4) !important;
357
+ }
358
+
359
+ .dark button[type="submit"]:hover,
360
+ .dark .submit-button:hover,
361
+ .dark button.primary:hover {
362
+ background: var(--primary-purple-light) !important;
363
+ box-shadow: 0 4px 12px rgba(167, 139, 250, 0.5) !important;
364
+ }
365
+
366
+ /* Dark theme - Example buttons */
367
+ .dark .example,
368
+ .dark button.example {
369
+ background: var(--bg-dark-card) !important;
370
+ color: var(--text-dark-primary) !important;
371
+ border-color: var(--border-dark) !important;
372
+ }
373
+
374
+ .dark .example:hover,
375
+ .dark button.example:hover {
376
+ background: var(--bg-dark-secondary) !important;
377
+ border-color: var(--primary-purple-light) !important;
378
+ box-shadow: 0 4px 12px rgba(124, 58, 237, 0.25) !important;
379
+ }
380
+
381
+ /* Dark theme - Scrollbar */
382
+ .dark .chatbot::-webkit-scrollbar-track,
383
+ .dark [data-testid="chatbot"]::-webkit-scrollbar-track {
384
+ background: var(--bg-dark-secondary);
385
+ }
386
+
387
+ .dark .chatbot::-webkit-scrollbar-thumb,
388
+ .dark [data-testid="chatbot"]::-webkit-scrollbar-thumb {
389
+ background: var(--primary-purple);
390
+ }
391
+
392
+ .dark .chatbot::-webkit-scrollbar-thumb:hover,
393
+ .dark [data-testid="chatbot"]::-webkit-scrollbar-thumb:hover {
394
+ background: var(--primary-purple-light);
395
+ }