Nischal Subedi commited on
Commit
229dc0f
·
1 Parent(s): d894193
Files changed (1) hide show
  1. app.py +368 -116
app.py CHANGED
@@ -291,242 +291,494 @@ Answer:"""
291
  else: # Fallback if states list is problematic
292
  example_queries.append(["What basic rights do tenants have?", "California"])
293
 
294
- # Improved Custom CSS for better UI design and HuggingFace compatibility
295
  custom_css = """
296
- /* Import legible fonts */
297
- @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Poppins:wght@600;700;800&display=swap');
298
 
299
- /* Root variables for consistent theming */
300
  :root {
301
- --primary-color: #2563eb;
302
- --primary-hover: #1d4ed8;
303
- --background-primary: #ffffff;
304
- --background-secondary: #f8fafc;
305
- --text-primary: #1e293b;
306
- --text-secondary: #64748b;
307
- --border-color: #e2e8f0;
308
- --border-focus: #2563eb;
309
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
310
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
311
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
312
- --error-bg: #fef2f2;
313
- --error-border: #fecaca;
314
- --error-text: #dc2626;
 
 
 
 
 
 
 
 
315
  }
316
 
317
- /* Dark mode variables */
318
  @media (prefers-color-scheme: dark) {
319
  :root {
320
- --background-primary: #0f172a;
321
- --background-secondary: #1e293b;
322
- --text-primary: #f1f5f9;
323
- --text-secondary: #94a3b8;
324
- --border-color: #334155;
325
- --error-bg: #1e1b1b;
326
- --error-border: #451a1a;
327
- --error-text: #f87171;
328
  }
329
  }
330
 
331
- /* Base container improvements */
332
  .gradio-container {
333
- max-width: 1000px !important;
334
  margin: 0 auto !important;
335
- padding: 1rem !important;
336
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
 
 
337
  }
338
 
339
- /* Header styling */
340
  .app-header-wrapper {
341
- background: linear-gradient(135deg, var(--background-primary) 0%, var(--background-secondary) 100%) !important;
342
- border: 2px solid var(--border-color) !important;
343
- border-radius: 16px !important;
344
- padding: 2rem !important;
345
- margin-bottom: 1.5rem !important;
 
346
  text-align: center !important;
347
- box-shadow: var(--shadow-md) !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
348
  }
349
 
350
  .app-header-logo {
351
- font-size: 3rem !important;
352
- margin-bottom: 0.5rem !important;
353
  display: block !important;
 
 
 
 
 
 
 
354
  }
355
 
356
  .app-header-title {
357
  font-family: 'Poppins', sans-serif !important;
358
- font-size: 2.5rem !important;
359
- font-weight: 700 !important;
360
- color: var(--text-primary) !important;
361
- margin: 0 0 0.5rem 0 !important;
362
- line-height: 1.2 !important;
 
 
363
  }
364
 
365
  .app-header-tagline {
366
- font-size: 1.1rem !important;
367
- color: var(--text-secondary) !important;
368
  font-weight: 400 !important;
369
  margin: 0 !important;
 
370
  }
371
 
372
- /* Main container with compact spacing */
373
  .main-dashboard-container {
374
  display: flex !important;
375
  flex-direction: column !important;
376
- gap: 1rem !important; /* Reduced gap for more compact look */
377
  }
378
 
379
- /* Card sections with better boundaries */
380
  .dashboard-card-section {
381
- background: var(--background-primary) !important;
382
- border: 2px solid var(--border-color) !important;
383
- border-radius: 12px !important;
384
- padding: 1.5rem !important; /* Reduced padding for compactness */
385
- box-shadow: var(--shadow-sm) !important;
386
- transition: all 0.2s ease !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
387
  }
388
 
389
  .dashboard-card-section:hover {
390
- box-shadow: var(--shadow-md) !important;
 
 
 
 
 
 
391
  }
392
 
393
- /* Centered section titles with better typography */
394
  .sub-section-title {
395
  font-family: 'Poppins', sans-serif !important;
396
- font-size: 1.5rem !important;
397
- font-weight: 600 !important;
398
- color: var(--text-primary) !important;
399
  text-align: center !important;
400
- margin: 0 0 1rem 0 !important;
401
- padding-bottom: 0.5rem !important;
402
- border-bottom: 2px solid var(--border-color) !important;
 
 
 
 
 
403
  display: block !important;
404
  }
405
 
406
- /* Improved input styling with clear boundaries */
 
 
 
 
 
 
 
 
 
 
 
 
407
  .gradio-textbox, .gradio-dropdown {
408
- margin-bottom: 0.75rem !important; /* Reduced margin for compactness */
409
  }
410
 
411
  .gradio-textbox textarea,
412
  .gradio-textbox input,
413
  .gradio-dropdown select {
414
- background: var(--background-primary) !important;
415
- border: 2px solid var(--border-color) !important;
416
- border-radius: 8px !important;
417
- padding: 0.75rem !important;
418
  font-size: 0.95rem !important;
419
  font-family: 'Inter', sans-serif !important;
420
- color: var(--text-primary) !important;
421
- transition: all 0.2s ease !important;
422
- box-shadow: var(--shadow-sm) !important;
 
423
  }
424
 
425
  .gradio-textbox textarea:focus,
426
  .gradio-textbox input:focus,
427
  .gradio-dropdown select:focus {
428
  outline: none !important;
429
- border-color: var(--border-focus) !important;
430
- box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1) !important;
 
 
 
 
 
 
 
 
431
  }
432
 
433
- /* Placeholder text styling */
434
  .gradio-textbox textarea::placeholder,
435
  .gradio-textbox input::placeholder {
436
- color: var(--text-secondary) !important;
437
- opacity: 0.7 !important;
 
438
  }
439
 
440
- /* Label styling for better readability */
441
  .gradio-textbox label,
442
  .gradio-dropdown label {
443
- font-weight: 500 !important;
444
- color: var(--text-primary) !important;
445
  font-size: 0.9rem !important;
446
- margin-bottom: 0.5rem !important;
447
  display: block !important;
 
 
448
  }
449
 
450
- /* Info text styling */
451
  .gradio-textbox .gr-form,
452
  .gradio-dropdown .gr-form {
453
  font-size: 0.85rem !important;
454
- color: var(--text-secondary) !important;
455
- margin-top: 0.25rem !important;
 
456
  }
457
 
458
- /* Input row layout improvements */
459
  .input-row {
460
  display: flex !important;
461
- gap: 1rem !important;
462
- margin-bottom: 0.5rem !important; /* Reduced margin */
 
463
  }
464
 
465
  .input-field {
466
  flex: 1 !important;
 
467
  }
468
 
469
- /* Button styling improvements */
470
  .button-row {
471
  display: flex !important;
472
- gap: 1rem !important;
473
  justify-content: flex-end !important;
474
- margin-top: 1rem !important;
 
475
  }
476
 
477
  .gradio-button {
478
- padding: 0.75rem 1.5rem !important;
479
- border-radius: 8px !important;
480
- font-weight: 500 !important;
481
  font-size: 0.9rem !important;
482
- transition: all 0.2s ease !important;
 
 
483
  cursor: pointer !important;
484
  border: 2px solid transparent !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
  }
486
 
487
  .gr-button-primary {
488
- background: var(--primary-color) !important;
489
  color: white !important;
490
- box-shadow: var(--shadow-sm) !important;
 
491
  }
492
 
493
  .gr-button-primary:hover {
494
- background: var(--primary-hover) !important;
495
- box-shadow: var(--shadow-md) !important;
496
- transform: translateY(-1px) !important;
 
 
 
497
  }
498
 
499
  .gr-button-secondary {
500
  background: transparent !important;
501
- color: var(--text-primary) !important;
502
- border-color: var(--border-color) !important;
 
503
  }
504
 
505
  .gr-button-secondary:hover {
506
- background: var(--background-secondary) !important;
507
- border-color: var(--primary-color) !important;
 
 
508
  }
509
 
510
- /* Output styling with clear boundaries */
511
  .output-content-wrapper {
512
- background: var(--background-primary) !important;
513
- border: 2px solid var(--border-color) !important;
514
- border-radius: 8px !important;
515
- padding: 1rem !important;
516
- min-height: 100px !important;
517
  font-size: 0.95rem !important;
518
  line-height: 1.6 !important;
519
- color: var(--text-primary) !important;
 
 
520
  }
521
 
522
  .response-header {
523
- font-size: 1.2rem !important;
524
- font-weight: 600 !important;
525
- color: var(--text-primary) !important;
526
- margin-bottom: 0.75rem !important;
527
  display: flex !important;
528
  align-items: center !important;
529
- gap: 0.5rem !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
530
  }
531
 
532
  .response-icon {
 
291
  else: # Fallback if states list is problematic
292
  example_queries.append(["What basic rights do tenants have?", "California"])
293
 
294
+ # Enhanced Custom CSS optimized for Paris theme
295
  custom_css = """
296
+ /* Import premium fonts for better readability */
297
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Poppins:wght@500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap');
298
 
299
+ /* Enhanced root variables optimized for Paris theme */
300
  :root {
301
+ --primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
302
+ --secondary-gradient: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
303
+ --accent-color: #6366f1;
304
+ --accent-hover: #4f46e5;
305
+ --text-contrast: #1a202c;
306
+ --text-muted: #718096;
307
+ --border-strong: #e2e8f0;
308
+ --border-subtle: #f1f5f9;
309
+ --surface-primary: #ffffff;
310
+ --surface-secondary: #f7fafc;
311
+ --surface-accent: #edf2f7;
312
+ --shadow-soft: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
313
+ --shadow-medium: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
314
+ --shadow-strong: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
315
+ --border-radius-sm: 8px;
316
+ --border-radius-md: 12px;
317
+ --border-radius-lg: 16px;
318
+ --spacing-xs: 0.5rem;
319
+ --spacing-sm: 0.75rem;
320
+ --spacing-md: 1rem;
321
+ --spacing-lg: 1.5rem;
322
+ --spacing-xl: 2rem;
323
  }
324
 
325
+ /* Dark mode enhancements for Paris theme */
326
  @media (prefers-color-scheme: dark) {
327
  :root {
328
+ --surface-primary: #1a202c;
329
+ --surface-secondary: #2d3748;
330
+ --surface-accent: #4a5568;
331
+ --text-contrast: #f7fafc;
332
+ --text-muted: #a0aec0;
333
+ --border-strong: #4a5568;
334
+ --border-subtle: #2d3748;
 
335
  }
336
  }
337
 
338
+ /* Enhanced base container for Paris theme */
339
  .gradio-container {
340
+ max-width: 1100px !important;
341
  margin: 0 auto !important;
342
+ padding: var(--spacing-md) !important;
343
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
344
+ background: var(--surface-secondary) !important;
345
+ min-height: 100vh !important;
346
  }
347
 
348
+ /* Stunning header with Paris theme integration */
349
  .app-header-wrapper {
350
+ background: var(--primary-gradient) !important;
351
+ border: 3px solid transparent !important;
352
+ background-clip: padding-box !important;
353
+ border-radius: var(--border-radius-lg) !important;
354
+ padding: var(--spacing-xl) !important;
355
+ margin-bottom: var(--spacing-lg) !important;
356
  text-align: center !important;
357
+ box-shadow: var(--shadow-strong) !important;
358
+ position: relative !important;
359
+ overflow: hidden !important;
360
+ }
361
+
362
+ .app-header-wrapper::before {
363
+ content: '';
364
+ position: absolute;
365
+ top: 0;
366
+ left: 0;
367
+ right: 0;
368
+ bottom: 0;
369
+ background: linear-gradient(45deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%);
370
+ pointer-events: none;
371
  }
372
 
373
  .app-header-logo {
374
+ font-size: 3.5rem !important;
375
+ margin-bottom: var(--spacing-sm) !important;
376
  display: block !important;
377
+ filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3)) !important;
378
+ animation: float 3s ease-in-out infinite !important;
379
+ }
380
+
381
+ @keyframes float {
382
+ 0%, 100% { transform: translateY(0px); }
383
+ 50% { transform: translateY(-10px); }
384
  }
385
 
386
  .app-header-title {
387
  font-family: 'Poppins', sans-serif !important;
388
+ font-size: 2.75rem !important;
389
+ font-weight: 800 !important;
390
+ color: white !important;
391
+ margin: 0 0 var(--spacing-sm) 0 !important;
392
+ line-height: 1.1 !important;
393
+ text-shadow: 0 4px 8px rgba(0,0,0,0.3) !important;
394
+ letter-spacing: -0.02em !important;
395
  }
396
 
397
  .app-header-tagline {
398
+ font-size: 1.2rem !important;
399
+ color: rgba(255,255,255,0.9) !important;
400
  font-weight: 400 !important;
401
  margin: 0 !important;
402
+ text-shadow: 0 2px 4px rgba(0,0,0,0.2) !important;
403
  }
404
 
405
+ /* Compact and elegant main container */
406
  .main-dashboard-container {
407
  display: flex !important;
408
  flex-direction: column !important;
409
+ gap: var(--spacing-md) !important;
410
  }
411
 
412
+ /* Premium card design with superior boundaries */
413
  .dashboard-card-section {
414
+ background: var(--surface-primary) !important;
415
+ border: 2px solid var(--border-strong) !important;
416
+ border-radius: var(--border-radius-md) !important;
417
+ padding: var(--spacing-lg) !important;
418
+ box-shadow: var(--shadow-soft) !important;
419
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
420
+ position: relative !important;
421
+ overflow: hidden !important;
422
+ }
423
+
424
+ .dashboard-card-section::before {
425
+ content: '';
426
+ position: absolute;
427
+ top: 0;
428
+ left: 0;
429
+ width: 100%;
430
+ height: 3px;
431
+ background: var(--secondary-gradient);
432
+ transform: translateX(-100%);
433
+ transition: transform 0.3s ease;
434
  }
435
 
436
  .dashboard-card-section:hover {
437
+ box-shadow: var(--shadow-medium) !important;
438
+ transform: translateY(-2px) !important;
439
+ border-color: var(--accent-color) !important;
440
+ }
441
+
442
+ .dashboard-card-section:hover::before {
443
+ transform: translateX(0);
444
  }
445
 
446
+ /* Perfectly centered and styled section titles */
447
  .sub-section-title {
448
  font-family: 'Poppins', sans-serif !important;
449
+ font-size: 1.6rem !important;
450
+ font-weight: 700 !important;
451
+ color: var(--text-contrast) !important;
452
  text-align: center !important;
453
+ margin: 0 0 var(--spacing-lg) 0 !important;
454
+ padding-bottom: var(--spacing-sm) !important;
455
+ border-bottom: 3px solid transparent !important;
456
+ background: var(--primary-gradient) !important;
457
+ background-clip: text !important;
458
+ -webkit-background-clip: text !important;
459
+ -webkit-text-fill-color: transparent !important;
460
+ position: relative !important;
461
  display: block !important;
462
  }
463
 
464
+ .sub-section-title::after {
465
+ content: '';
466
+ position: absolute;
467
+ bottom: 0;
468
+ left: 50%;
469
+ transform: translateX(-50%);
470
+ width: 60px;
471
+ height: 3px;
472
+ background: var(--primary-gradient);
473
+ border-radius: 2px;
474
+ }
475
+
476
+ /* Superior input styling with crystal clear boundaries */
477
  .gradio-textbox, .gradio-dropdown {
478
+ margin-bottom: var(--spacing-sm) !important;
479
  }
480
 
481
  .gradio-textbox textarea,
482
  .gradio-textbox input,
483
  .gradio-dropdown select {
484
+ background: var(--surface-primary) !important;
485
+ border: 2px solid var(--border-strong) !important;
486
+ border-radius: var(--border-radius-sm) !important;
487
+ padding: var(--spacing-md) !important;
488
  font-size: 0.95rem !important;
489
  font-family: 'Inter', sans-serif !important;
490
+ color: var(--text-contrast) !important;
491
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
492
+ box-shadow: inset 0 1px 3px rgba(0,0,0,0.1) !important;
493
+ line-height: 1.5 !important;
494
  }
495
 
496
  .gradio-textbox textarea:focus,
497
  .gradio-textbox input:focus,
498
  .gradio-dropdown select:focus {
499
  outline: none !important;
500
+ border-color: var(--accent-color) !important;
501
+ box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.1), inset 0 1px 3px rgba(0,0,0,0.1) !important;
502
+ transform: translateY(-1px) !important;
503
+ }
504
+
505
+ .gradio-textbox textarea:hover,
506
+ .gradio-textbox input:hover,
507
+ .gradio-dropdown select:hover {
508
+ border-color: var(--accent-color) !important;
509
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1), inset 0 1px 3px rgba(0,0,0,0.1) !important;
510
  }
511
 
512
+ /* Enhanced placeholder and label styling */
513
  .gradio-textbox textarea::placeholder,
514
  .gradio-textbox input::placeholder {
515
+ color: var(--text-muted) !important;
516
+ opacity: 0.8 !important;
517
+ font-style: italic !important;
518
  }
519
 
 
520
  .gradio-textbox label,
521
  .gradio-dropdown label {
522
+ font-weight: 600 !important;
523
+ color: var(--text-contrast) !important;
524
  font-size: 0.9rem !important;
525
+ margin-bottom: var(--spacing-xs) !important;
526
  display: block !important;
527
+ text-transform: uppercase !important;
528
+ letter-spacing: 0.5px !important;
529
  }
530
 
531
+ /* Refined info text */
532
  .gradio-textbox .gr-form,
533
  .gradio-dropdown .gr-form {
534
  font-size: 0.85rem !important;
535
+ color: var(--text-muted) !important;
536
+ margin-top: var(--spacing-xs) !important;
537
+ font-style: italic !important;
538
  }
539
 
540
+ /* Optimized input layout */
541
  .input-row {
542
  display: flex !important;
543
+ gap: var(--spacing-md) !important;
544
+ margin-bottom: var(--spacing-sm) !important;
545
+ align-items: flex-end !important;
546
  }
547
 
548
  .input-field {
549
  flex: 1 !important;
550
+ min-width: 0 !important;
551
  }
552
 
553
+ /* Premium button design */
554
  .button-row {
555
  display: flex !important;
556
+ gap: var(--spacing-md) !important;
557
  justify-content: flex-end !important;
558
+ margin-top: var(--spacing-lg) !important;
559
+ flex-wrap: wrap !important;
560
  }
561
 
562
  .gradio-button {
563
+ padding: var(--spacing-md) var(--spacing-xl) !important;
564
+ border-radius: var(--border-radius-sm) !important;
565
+ font-weight: 600 !important;
566
  font-size: 0.9rem !important;
567
+ text-transform: uppercase !important;
568
+ letter-spacing: 0.5px !important;
569
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
570
  cursor: pointer !important;
571
  border: 2px solid transparent !important;
572
+ position: relative !important;
573
+ overflow: hidden !important;
574
+ }
575
+
576
+ .gradio-button::before {
577
+ content: '';
578
+ position: absolute;
579
+ top: 0;
580
+ left: -100%;
581
+ width: 100%;
582
+ height: 100%;
583
+ background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
584
+ transition: left 0.5s;
585
+ }
586
+
587
+ .gradio-button:hover::before {
588
+ left: 100%;
589
  }
590
 
591
  .gr-button-primary {
592
+ background: var(--primary-gradient) !important;
593
  color: white !important;
594
+ box-shadow: var(--shadow-soft) !important;
595
+ border: 2px solid transparent !important;
596
  }
597
 
598
  .gr-button-primary:hover {
599
+ box-shadow: var(--shadow-medium) !important;
600
+ transform: translateY(-2px) scale(1.02) !important;
601
+ }
602
+
603
+ .gr-button-primary:active {
604
+ transform: translateY(0) scale(0.98) !important;
605
  }
606
 
607
  .gr-button-secondary {
608
  background: transparent !important;
609
+ color: var(--text-contrast) !important;
610
+ border: 2px solid var(--border-strong) !important;
611
+ backdrop-filter: blur(10px) !important;
612
  }
613
 
614
  .gr-button-secondary:hover {
615
+ background: var(--surface-accent) !important;
616
+ border-color: var(--accent-color) !important;
617
+ transform: translateY(-1px) !important;
618
+ box-shadow: var(--shadow-soft) !important;
619
  }
620
 
621
+ /* Exceptional output styling */
622
  .output-content-wrapper {
623
+ background: var(--surface-primary) !important;
624
+ border: 2px solid var(--border-strong) !important;
625
+ border-radius: var(--border-radius-sm) !important;
626
+ padding: var(--spacing-lg) !important;
627
+ min-height: 120px !important;
628
  font-size: 0.95rem !important;
629
  line-height: 1.6 !important;
630
+ color: var(--text-contrast) !important;
631
+ box-shadow: inset 0 2px 4px rgba(0,0,0,0.05) !important;
632
+ font-family: 'Inter', sans-serif !important;
633
  }
634
 
635
  .response-header {
636
+ font-size: 1.3rem !important;
637
+ font-weight: 700 !important;
638
+ color: var(--text-contrast) !important;
639
+ margin-bottom: var(--spacing-md) !important;
640
  display: flex !important;
641
  align-items: center !important;
642
+ gap: var(--spacing-sm) !important;
643
+ background: var(--primary-gradient) !important;
644
+ background-clip: text !important;
645
+ -webkit-background-clip: text !important;
646
+ -webkit-text-fill-color: transparent !important;
647
+ }
648
+
649
+ .response-icon {
650
+ font-size: 1.4rem !important;
651
+ background: var(--primary-gradient) !important;
652
+ background-clip: text !important;
653
+ -webkit-background-clip: text !important;
654
+ -webkit-text-fill-color: transparent !important;
655
+ }
656
+
657
+ .divider {
658
+ border: none !important;
659
+ border-top: 2px solid var(--border-strong) !important;
660
+ margin: var(--spacing-md) 0 !important;
661
+ background: var(--primary-gradient) !important;
662
+ height: 2px !important;
663
+ border: none !important;
664
+ border-radius: 1px !important;
665
+ }
666
+
667
+ /* Enhanced error styling */
668
+ .error-message {
669
+ background: linear-gradient(135deg, #fef2f2 0%, #fde8e8 100%) !important;
670
+ border: 2px solid #fecaca !important;
671
+ color: #dc2626 !important;
672
+ padding: var(--spacing-lg) !important;
673
+ border-radius: var(--border-radius-sm) !important;
674
+ display: flex !important;
675
+ align-items: flex-start !important;
676
+ gap: var(--spacing-md) !important;
677
+ font-size: 0.9rem !important;
678
+ box-shadow: var(--shadow-soft) !important;
679
+ }
680
+
681
+ .error-icon {
682
+ font-size: 1.3rem !important;
683
+ line-height: 1 !important;
684
+ margin-top: 0.1rem !important;
685
+ animation: pulse 2s infinite !important;
686
+ }
687
+
688
+ @keyframes pulse {
689
+ 0%, 100% { opacity: 1; }
690
+ 50% { opacity: 0.7; }
691
+ }
692
+
693
+ /* Elegant placeholder */
694
+ .placeholder {
695
+ background: linear-gradient(135deg, var(--surface-secondary) 0%, var(--surface-accent) 100%) !important;
696
+ border: 2px dashed var(--border-strong) !important;
697
+ border-radius: var(--border-radius-sm) !important;
698
+ padding: var(--spacing-xl) var(--spacing-lg) !important;
699
+ text-align: center !important;
700
+ color: var(--text-muted) !important;
701
+ font-style: italic !important;
702
+ font-size: 1rem !important;
703
+ transition: all 0.3s ease !important;
704
+ }
705
+
706
+ .placeholder:hover {
707
+ border-color: var(--accent-color) !important;
708
+ background: linear-gradient(135deg, var(--surface-accent) 0%, var(--surface-secondary) 100%) !important;
709
+ }
710
+
711
+ /* Premium examples table */
712
+ .examples-section .gr-samples-table {
713
+ border: 2px solid var(--border-strong) !important;
714
+ border-radius: var(--border-radius-sm) !important;
715
+ overflow: hidden !important;
716
+ margin-top: var(--spacing-lg) !important;
717
+ box-shadow: var(--shadow-soft) !important;
718
+ }
719
+
720
+ .examples-section .gr-samples-table th,
721
+ .examples-section .gr-samples-table td {
722
+ padding: var(--spacing-md) !important;
723
+ border: none !important;
724
+ font-size: 0.9rem !important;
725
+ transition: all 0.2s ease !important;
726
+ }
727
+
728
+ .examples-section .gr-samples-table th {
729
+ background: var(--primary-gradient) !important;
730
+ color: white !important;
731
+ font-weight: 600 !important;
732
+ text-transform: uppercase !important;
733
+ letter-spacing: 0.5px !important;
734
+ font-size: 0.8rem !important;
735
+ }
736
+
737
+ .examples-section .gr-samples-table td {
738
+ background: var(--surface-primary) !important;
739
+ color: var(--text-contrast) !important;
740
+ border-top: 1px solid var(--border-subtle) !important;
741
+ cursor: pointer !important;
742
+ }
743
+
744
+ .examples-section .gr-samples-table tr:hover td {
745
+ background: var(--surface-accent) !important;
746
+ transform: scale(1.01) !important;
747
+ }
748
+
749
+ /* Sophisticated footer */
750
+ .app-footer-wrapper {
751
+ background: linear-gradient(135deg, var(--surface-secondary) 0%, var(--surface-accent) 100%) !important;
752
+ border: 2px solid var(--border-strong) !important;
753
+ border-radius: var(--border-radius-md) !important;
754
+ padding: var(--spacing-lg) !important;
755
+ margin-top: var(--spacing-lg) !important;
756
+ text-align: center !important;
757
+ box-shadow: var(--shadow-soft) !important;
758
+ }
759
+
760
+ .app-footer p {
761
+ margin: var(--spacing-sm) 0 !important;
762
+ font-size: 0.9rem !important;
763
+ color: var(--text-muted) !important;
764
+ line-height: 1.6 !important;
765
+ }
766
+
767
+ .app-footer a {
768
+ background: var(--primary-gradient) !important;
769
+ background-clip: text !important;
770
+ -webkit-background-clip: text !important;
771
+ -webkit-text-fill-color: transparent !important;
772
+ text-decoration: none !important;
773
+ font-weight: 600 !important;
774
+ transition: all 0.3s ease !important;
775
+ }
776
+
777
+ .app-footer a:hover {
778
+ text-decoration: underline !important;
779
+ transform: scale(1.05) !important;
780
+ display: inline-block !important;
781
+ } 0.5rem !important;
782
  }
783
 
784
  .response-icon {