AlBaraa63 commited on
Commit
ec19198
Β·
1 Parent(s): 04926a9

Enhance mobile responsiveness and improve UI styling across Gradio components

Browse files
Files changed (1) hide show
  1. app.py +185 -127
app.py CHANGED
@@ -305,48 +305,62 @@ def load_sample_json():
305
  # GRADIO INTERFACE
306
  # ============================================================================
307
 
308
- # Custom CSS for beautiful UI with mobile responsiveness
309
  custom_css = """
310
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
311
 
 
 
 
 
 
 
 
 
 
 
312
  .gradio-container {
313
  font-family: 'Inter', sans-serif !important;
314
  max-width: 1400px !important;
315
  margin: 0 auto !important;
316
  padding: 10px !important;
 
 
317
  }
318
 
319
- /* Header styling - Responsive */
320
  .gradio-container h1 {
321
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
322
  -webkit-background-clip: text;
323
  -webkit-text-fill-color: transparent;
324
  background-clip: text;
325
- font-size: clamp(1.8em, 5vw, 3em) !important;
326
  font-weight: 700 !important;
327
  text-align: center;
328
  margin-bottom: 0.5em;
329
- padding: 0 10px !important;
330
- }
331
-
332
- /* Mobile-friendly header text */
333
- .gradio-container h3 {
334
- font-size: clamp(1em, 3vw, 1.5em) !important;
335
- line-height: 1.4 !important;
336
  }
337
 
338
- .gradio-container h2 {
339
- font-size: clamp(1.2em, 3.5vw, 2em) !important;
 
 
 
 
 
 
 
 
 
 
 
340
  }
341
 
342
- /* Tab styling - Mobile optimized */
343
  .tab-nav {
344
  border-radius: 12px !important;
345
  background: linear-gradient(to right, #f8f9fa, #e9ecef) !important;
346
  padding: 8px !important;
347
  margin-bottom: 20px !important;
348
- overflow-x: auto !important;
349
- -webkit-overflow-scrolling: touch !important;
350
  }
351
 
352
  button.selected {
@@ -355,25 +369,27 @@ button.selected {
355
  border-radius: 8px !important;
356
  font-weight: 600 !important;
357
  box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4) !important;
358
- min-width: 120px !important;
359
- white-space: nowrap !important;
360
  }
361
 
362
- /* Button styling - Touch-friendly */
 
 
 
 
 
 
 
 
363
  .primary-btn {
364
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
365
  border: none !important;
366
  color: white !important;
367
  font-weight: 600 !important;
368
  border-radius: 10px !important;
369
- padding: 14px 24px !important;
370
  font-size: 16px !important;
371
  transition: all 0.3s ease !important;
372
  box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4) !important;
373
- width: 100% !important;
374
- min-height: 48px !important;
375
- cursor: pointer !important;
376
- -webkit-tap-highlight-color: rgba(102, 126, 234, 0.3) !important;
377
  }
378
 
379
  .primary-btn:hover {
@@ -381,35 +397,43 @@ button.selected {
381
  box-shadow: 0 6px 20px rgba(102, 126, 234, 0.6) !important;
382
  }
383
 
384
- .primary-btn:active {
385
- transform: translateY(0) !important;
 
 
 
 
 
386
  }
387
 
388
- /* Input fields - Mobile optimized */
389
  textarea, input[type="text"] {
390
  border-radius: 10px !important;
391
  border: 2px solid #e9ecef !important;
392
  padding: 12px !important;
393
- font-size: 16px !important;
394
  transition: border-color 0.3s ease !important;
395
- width: 100% !important;
396
- box-sizing: border-box !important;
397
  }
398
 
399
  textarea:focus, input[type="text"]:focus {
400
  border-color: #667eea !important;
401
  box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1) !important;
402
- outline: none !important;
403
  }
404
 
405
- /* Output boxes - Scrollable on mobile */
 
 
 
 
 
 
 
 
406
  .output-class {
407
  background: linear-gradient(to bottom, #ffffff, #f8f9fa) !important;
408
  border-radius: 12px !important;
409
- padding: 15px !important;
410
  border: 2px solid #e9ecef !important;
411
- overflow-x: auto !important;
412
- -webkit-overflow-scrolling: touch !important;
413
  }
414
 
415
  /* Cards and containers */
@@ -419,60 +443,48 @@ textarea:focus, input[type="text"]:focus {
419
  box-shadow: 0 2px 8px rgba(0,0,0,0.05) !important;
420
  }
421
 
422
- /* Labels - Larger for readability */
423
  label {
424
  font-weight: 600 !important;
425
  color: #495057 !important;
426
- font-size: 15px !important;
427
  margin-bottom: 8px !important;
428
- display: block !important;
429
  }
430
 
431
- /* Examples - Mobile scrollable */
432
  .gr-samples-table {
433
  border-radius: 10px !important;
434
- overflow-x: auto !important;
435
- -webkit-overflow-scrolling: touch !important;
436
  }
437
 
438
- /* Footer - Responsive */
439
  .footer {
440
  text-align: center;
441
- padding: 20px 15px !important;
442
  background: linear-gradient(to right, #f8f9fa, #e9ecef);
443
  border-radius: 12px;
444
  margin-top: 30px;
445
  }
446
 
447
- /* Image display - Responsive */
448
  .gr-image {
449
  border-radius: 12px !important;
450
  border: 2px solid #e9ecef !important;
451
  box-shadow: 0 4px 15px rgba(0,0,0,0.1) !important;
452
- max-width: 100% !important;
453
- height: auto !important;
454
  }
455
 
456
- /* Radio buttons and checkboxes - Touch-friendly */
457
  .gr-radio, .gr-checkbox {
458
- padding: 12px !important;
459
  border-radius: 8px !important;
460
  }
461
 
462
- .gr-radio label, .gr-checkbox label {
463
- padding: 8px 12px !important;
464
- min-height: 44px !important;
465
- display: flex !important;
466
- align-items: center !important;
467
- }
468
-
469
- /* File upload - Mobile optimized */
470
  .gr-file {
471
  border: 2px dashed #667eea !important;
472
  border-radius: 12px !important;
473
  background: linear-gradient(to bottom, #ffffff, #f8f9fa) !important;
474
- padding: 20px 15px !important;
475
- min-height: 100px !important;
476
  }
477
 
478
  .gr-file:hover {
@@ -480,95 +492,141 @@ label {
480
  background: #f8f9fa !important;
481
  }
482
 
483
- /* Mobile-specific styles */
484
  @media (max-width: 768px) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
  .gradio-container {
486
- padding: 8px !important;
 
487
  }
488
 
489
- .tab-nav button {
490
- font-size: 14px !important;
491
- padding: 10px 12px !important;
492
  }
493
 
494
- .primary-btn {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
495
  font-size: 15px !important;
496
- padding: 16px 20px !important;
497
  }
498
 
499
- .output-class {
 
500
  padding: 12px !important;
501
- font-size: 14px !important;
 
 
502
  }
503
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504
  .footer {
505
- padding: 15px 10px !important;
506
  }
507
 
508
  .footer h2 {
509
  font-size: 1.5em !important;
510
- margin-bottom: 15px !important;
511
  }
512
 
513
  .footer p {
514
- font-size: 14px !important;
515
  }
516
  }
517
 
518
- /* Small mobile devices */
519
  @media (max-width: 480px) {
520
  .gradio-container h1 {
521
  font-size: 1.5em !important;
522
  }
523
 
524
- .tab-nav {
525
- padding: 5px !important;
526
- }
527
-
528
  .tab-nav button {
529
- font-size: 12px !important;
530
- padding: 8px 10px !important;
531
- min-width: 100px !important;
532
  }
533
 
534
- textarea, input[type="text"] {
535
- font-size: 16px !important;
536
- padding: 10px !important;
537
  }
538
 
539
- .output-class {
540
- font-size: 13px !important;
541
- padding: 10px !important;
542
  }
543
  }
544
 
545
  /* Landscape mobile */
546
  @media (max-width: 768px) and (orientation: landscape) {
547
  .gradio-container h1 {
548
- font-size: 2em !important;
549
  margin-bottom: 0.3em !important;
550
  }
551
  }
552
-
553
- /* Touch target improvements */
554
- @media (hover: none) and (pointer: coarse) {
555
- button, a, input, select, textarea {
556
- min-height: 44px !important;
557
- min-width: 44px !important;
558
- }
559
- }
560
  """
561
 
562
  # Create Gradio interface
563
  with gr.Blocks(theme=gr.themes.Soft(), css=custom_css, title="MissionControlMCP Demo") as demo:
564
 
 
 
 
565
  gr.Markdown("# πŸš€ MissionControlMCP")
566
  gr.Markdown("### Enterprise Automation Tools - Powered by AI")
567
 
568
  gr.HTML("""
569
- <div style="text-align: center; padding: 15px 10px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 15px; color: white; margin-bottom: 20px;">
570
- <h3 style="color: white; margin: 0; font-size: clamp(1em, 3vw, 1.3em); line-height: 1.4;">✨ Try all 8 powerful tools in your browser - No installation needed! ✨</h3>
571
- <p style="margin: 10px 0 0 0; opacity: 0.9; font-size: clamp(0.8em, 2.5vw, 1em);">Built for HuggingFace Gradio Hackathon | Claude MCP Integration</p>
572
  </div>
573
  """)
574
 
@@ -949,55 +1007,55 @@ with gr.Blocks(theme=gr.themes.Soft(), css=custom_css, title="MissionControlMCP
949
  # Footer
950
  gr.HTML("""
951
  <div class="footer">
952
- <h2 style="margin-bottom: 15px; font-size: clamp(1.2em, 4vw, 1.8em);">🎯 About MissionControlMCP</h2>
953
 
954
- <p style="font-size: clamp(0.9em, 3vw, 1.1em); margin-bottom: 20px; padding: 0 10px;">
955
  <strong>8 enterprise-grade automation tools</strong> integrated with Claude Desktop via Model Context Protocol (MCP)
956
  </p>
957
 
958
- <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin: 20px 0; padding: 0 10px;">
959
- <div style="padding: 12px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
960
- <strong style="font-size: clamp(0.9em, 2.5vw, 1em);">πŸ“„ PDF Reader</strong><br/>
961
- <small style="font-size: clamp(0.75em, 2vw, 0.85em);">Extract text from documents</small>
962
  </div>
963
- <div style="padding: 12px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
964
- <strong style="font-size: clamp(0.9em, 2.5vw, 1em);">πŸ“ Text Extractor</strong><br/>
965
- <small style="font-size: clamp(0.75em, 2vw, 0.85em);">Keywords & summaries</small>
966
  </div>
967
- <div style="padding: 12px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
968
- <strong style="font-size: clamp(0.9em, 2.5vw, 1em);">🌐 Web Fetcher</strong><br/>
969
- <small style="font-size: clamp(0.75em, 2vw, 0.85em);">Scrape websites</small>
970
  </div>
971
- <div style="padding: 12px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
972
- <strong style="font-size: clamp(0.9em, 2.5vw, 1em);">πŸ” RAG Search</strong><br/>
973
- <small style="font-size: clamp(0.75em, 2vw, 0.85em);">Semantic search</small>
974
  </div>
975
- <div style="padding: 12px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
976
- <strong style="font-size: clamp(0.9em, 2.5vw, 1em);">πŸ“Š Data Visualizer</strong><br/>
977
- <small style="font-size: clamp(0.75em, 2vw, 0.85em);">Create charts</small>
978
  </div>
979
- <div style="padding: 12px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
980
- <strong style="font-size: clamp(0.9em, 2.5vw, 1em);">πŸ”„ File Converter</strong><br/>
981
- <small style="font-size: clamp(0.75em, 2vw, 0.85em);">Format conversions</small>
982
  </div>
983
- <div style="padding: 12px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
984
- <strong style="font-size: clamp(0.9em, 2.5vw, 1em);">πŸ“§ Email Classifier</strong><br/>
985
- <small style="font-size: clamp(0.75em, 2vw, 0.85em);">Intent detection</small>
986
  </div>
987
- <div style="padding: 12px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
988
- <strong style="font-size: clamp(0.9em, 2.5vw, 1em);">πŸ“ˆ KPI Generator</strong><br/>
989
- <small style="font-size: clamp(0.75em, 2vw, 0.85em);">Business analytics</small>
990
  </div>
991
  </div>
992
 
993
- <div style="margin-top: 20px; padding-top: 15px; border-top: 2px solid #e9ecef;">
994
- <p style="font-size: clamp(0.9em, 2.5vw, 1em); margin: 10px 0; padding: 0 10px;">
995
- πŸ”— <a href="https://github.com/AlBaraa-1/CleanEye-Hackathon" target="_blank" style="color: #667eea; text-decoration: none; font-weight: 600; word-break: break-word;">View on GitHub</a>
996
  </p>
997
- <p style="margin: 10px 0; color: #6c757d; font-size: clamp(0.8em, 2.2vw, 0.95em); padding: 0 10px;">
998
  πŸ† Built for HuggingFace Gradio x BuildWithMCP Hackathon
999
  </p>
1000
- <p style="margin: 10px 0; color: #6c757d; font-size: clamp(0.8em, 2.2vw, 0.95em); padding: 0 10px;">
1001
  Made with ❀️ using Python, Gradio, Claude MCP, FAISS, and Sentence Transformers
1002
  </p>
1003
  </div>
 
305
  # GRADIO INTERFACE
306
  # ============================================================================
307
 
308
+ # Custom CSS for beautiful UI
309
  custom_css = """
310
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
311
 
312
+ /* Global mobile-first settings */
313
+ * {
314
+ box-sizing: border-box !important;
315
+ }
316
+
317
+ html, body {
318
+ overflow-x: hidden !important;
319
+ width: 100% !important;
320
+ }
321
+
322
  .gradio-container {
323
  font-family: 'Inter', sans-serif !important;
324
  max-width: 1400px !important;
325
  margin: 0 auto !important;
326
  padding: 10px !important;
327
+ width: 100% !important;
328
+ overflow-x: hidden !important;
329
  }
330
 
331
+ /* Header styling */
332
  .gradio-container h1 {
333
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
334
  -webkit-background-clip: text;
335
  -webkit-text-fill-color: transparent;
336
  background-clip: text;
337
+ font-size: 3em !important;
338
  font-weight: 700 !important;
339
  text-align: center;
340
  margin-bottom: 0.5em;
 
 
 
 
 
 
 
341
  }
342
 
343
+ /* Mobile responsive header */
344
+ @media (max-width: 768px) {
345
+ .gradio-container h1 {
346
+ font-size: 2em !important;
347
+ }
348
+
349
+ .gradio-container h3 {
350
+ font-size: 1.2em !important;
351
+ }
352
+
353
+ .gradio-container p {
354
+ font-size: 0.9em !important;
355
+ }
356
  }
357
 
358
+ /* Tab styling */
359
  .tab-nav {
360
  border-radius: 12px !important;
361
  background: linear-gradient(to right, #f8f9fa, #e9ecef) !important;
362
  padding: 8px !important;
363
  margin-bottom: 20px !important;
 
 
364
  }
365
 
366
  button.selected {
 
369
  border-radius: 8px !important;
370
  font-weight: 600 !important;
371
  box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4) !important;
 
 
372
  }
373
 
374
+ /* Mobile tab styling */
375
+ @media (max-width: 768px) {
376
+ .tab-nav button {
377
+ font-size: 0.85em !important;
378
+ padding: 8px 12px !important;
379
+ }
380
+ }
381
+
382
+ /* Button styling */
383
  .primary-btn {
384
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
385
  border: none !important;
386
  color: white !important;
387
  font-weight: 600 !important;
388
  border-radius: 10px !important;
389
+ padding: 12px 24px !important;
390
  font-size: 16px !important;
391
  transition: all 0.3s ease !important;
392
  box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4) !important;
 
 
 
 
393
  }
394
 
395
  .primary-btn:hover {
 
397
  box-shadow: 0 6px 20px rgba(102, 126, 234, 0.6) !important;
398
  }
399
 
400
+ /* Mobile button styling */
401
+ @media (max-width: 768px) {
402
+ .primary-btn {
403
+ width: 100% !important;
404
+ padding: 14px 20px !important;
405
+ font-size: 15px !important;
406
+ }
407
  }
408
 
409
+ /* Input fields */
410
  textarea, input[type="text"] {
411
  border-radius: 10px !important;
412
  border: 2px solid #e9ecef !important;
413
  padding: 12px !important;
414
+ font-size: 15px !important;
415
  transition: border-color 0.3s ease !important;
 
 
416
  }
417
 
418
  textarea:focus, input[type="text"]:focus {
419
  border-color: #667eea !important;
420
  box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1) !important;
 
421
  }
422
 
423
+ /* Mobile input fields */
424
+ @media (max-width: 768px) {
425
+ textarea, input[type="text"] {
426
+ font-size: 16px !important;
427
+ padding: 10px !important;
428
+ }
429
+ }
430
+
431
+ /* Output boxes */
432
  .output-class {
433
  background: linear-gradient(to bottom, #ffffff, #f8f9fa) !important;
434
  border-radius: 12px !important;
435
+ padding: 20px !important;
436
  border: 2px solid #e9ecef !important;
 
 
437
  }
438
 
439
  /* Cards and containers */
 
443
  box-shadow: 0 2px 8px rgba(0,0,0,0.05) !important;
444
  }
445
 
446
+ /* Labels */
447
  label {
448
  font-weight: 600 !important;
449
  color: #495057 !important;
450
+ font-size: 14px !important;
451
  margin-bottom: 8px !important;
 
452
  }
453
 
454
+ /* Examples */
455
  .gr-samples-table {
456
  border-radius: 10px !important;
457
+ overflow: hidden !important;
 
458
  }
459
 
460
+ /* Footer */
461
  .footer {
462
  text-align: center;
463
+ padding: 30px;
464
  background: linear-gradient(to right, #f8f9fa, #e9ecef);
465
  border-radius: 12px;
466
  margin-top: 30px;
467
  }
468
 
469
+ /* Image display */
470
  .gr-image {
471
  border-radius: 12px !important;
472
  border: 2px solid #e9ecef !important;
473
  box-shadow: 0 4px 15px rgba(0,0,0,0.1) !important;
 
 
474
  }
475
 
476
+ /* Radio buttons and checkboxes */
477
  .gr-radio, .gr-checkbox {
478
+ padding: 10px !important;
479
  border-radius: 8px !important;
480
  }
481
 
482
+ /* File upload */
 
 
 
 
 
 
 
483
  .gr-file {
484
  border: 2px dashed #667eea !important;
485
  border-radius: 12px !important;
486
  background: linear-gradient(to bottom, #ffffff, #f8f9fa) !important;
487
+ padding: 30px !important;
 
488
  }
489
 
490
  .gr-file:hover {
 
492
  background: #f8f9fa !important;
493
  }
494
 
495
+ /* Mobile responsive layout */
496
  @media (max-width: 768px) {
497
+ .gr-row {
498
+ flex-direction: column !important;
499
+ gap: 15px !important;
500
+ }
501
+
502
+ .gr-column {
503
+ width: 100% !important;
504
+ max-width: 100% !important;
505
+ min-width: 0 !important;
506
+ flex: 0 0 100% !important;
507
+ }
508
+
509
+ .gr-file {
510
+ padding: 20px !important;
511
+ }
512
+
513
+ /* Stack columns vertically on mobile */
514
+ .gradio-container .gr-form {
515
+ display: flex !important;
516
+ flex-direction: column !important;
517
+ }
518
+
519
+ /* Prevent text overflow */
520
  .gradio-container {
521
+ word-wrap: break-word !important;
522
+ overflow-wrap: break-word !important;
523
  }
524
 
525
+ /* Better spacing on mobile */
526
+ .gr-box {
527
+ margin: 10px 0 !important;
528
  }
529
 
530
+ /* Tabs scrollable on mobile */
531
+ .tab-nav {
532
+ overflow-x: auto !important;
533
+ -webkit-overflow-scrolling: touch !important;
534
+ white-space: nowrap !important;
535
+ }
536
+ }
537
+
538
+ /* Improve touch targets for mobile */
539
+ @media (max-width: 768px) {
540
+ button, a, input, textarea, select {
541
+ min-height: 44px !important;
542
+ -webkit-tap-highlight-color: rgba(102, 126, 234, 0.2) !important;
543
+ }
544
+
545
+ label {
546
  font-size: 15px !important;
547
+ margin-bottom: 10px !important;
548
  }
549
 
550
+ /* Better radio and checkbox sizing */
551
+ .gr-radio label, .gr-checkbox label {
552
  padding: 12px !important;
553
+ min-height: 44px !important;
554
+ display: flex !important;
555
+ align-items: center !important;
556
  }
557
 
558
+ /* Mobile-friendly sliders */
559
+ input[type="range"] {
560
+ height: 44px !important;
561
+ padding: 10px 0 !important;
562
+ }
563
+
564
+ /* Examples section */
565
+ .gr-samples-table {
566
+ overflow-x: auto !important;
567
+ -webkit-overflow-scrolling: touch !important;
568
+ }
569
+ }
570
+
571
+ /* Footer responsive */
572
+ @media (max-width: 768px) {
573
  .footer {
574
+ padding: 20px 10px !important;
575
  }
576
 
577
  .footer h2 {
578
  font-size: 1.5em !important;
 
579
  }
580
 
581
  .footer p {
582
+ font-size: 0.9em !important;
583
  }
584
  }
585
 
586
+ /* Smaller screens (phones in portrait) */
587
  @media (max-width: 480px) {
588
  .gradio-container h1 {
589
  font-size: 1.5em !important;
590
  }
591
 
 
 
 
 
592
  .tab-nav button {
593
+ font-size: 0.75em !important;
594
+ padding: 6px 10px !important;
 
595
  }
596
 
597
+ .primary-btn {
598
+ font-size: 14px !important;
599
+ padding: 12px 16px !important;
600
  }
601
 
602
+ /* Reduce line count for better mobile UX */
603
+ textarea {
604
+ min-height: 100px !important;
605
  }
606
  }
607
 
608
  /* Landscape mobile */
609
  @media (max-width: 768px) and (orientation: landscape) {
610
  .gradio-container h1 {
611
+ font-size: 1.8em !important;
612
  margin-bottom: 0.3em !important;
613
  }
614
  }
 
 
 
 
 
 
 
 
615
  """
616
 
617
  # Create Gradio interface
618
  with gr.Blocks(theme=gr.themes.Soft(), css=custom_css, title="MissionControlMCP Demo") as demo:
619
 
620
+ # Add viewport meta tag for proper mobile rendering
621
+ gr.HTML("""<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=yes">""")
622
+
623
  gr.Markdown("# πŸš€ MissionControlMCP")
624
  gr.Markdown("### Enterprise Automation Tools - Powered by AI")
625
 
626
  gr.HTML("""
627
+ <div style="text-align: center; padding: 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 15px; color: white; margin-bottom: 30px;">
628
+ <h3 style="color: white; margin: 0; font-size: clamp(1rem, 4vw, 1.5rem);">✨ Try all 8 powerful tools in your browser - No installation needed! ✨</h3>
629
+ <p style="margin: 10px 0 0 0; opacity: 0.9; font-size: clamp(0.8rem, 3vw, 1rem);">Built for HuggingFace Gradio Hackathon | Claude MCP Integration</p>
630
  </div>
631
  """)
632
 
 
1007
  # Footer
1008
  gr.HTML("""
1009
  <div class="footer">
1010
+ <h2 style="margin-bottom: 20px; font-size: clamp(1.2rem, 5vw, 2rem);">🎯 About MissionControlMCP</h2>
1011
 
1012
+ <p style="font-size: clamp(0.9rem, 3vw, 1.125rem); margin-bottom: 20px;">
1013
  <strong>8 enterprise-grade automation tools</strong> integrated with Claude Desktop via Model Context Protocol (MCP)
1014
  </p>
1015
 
1016
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 15px; margin: 30px 0;">
1017
+ <div style="padding: 15px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
1018
+ <strong style="font-size: clamp(0.85rem, 2.5vw, 1rem);">πŸ“„ PDF Reader</strong><br/>
1019
+ <small style="font-size: clamp(0.7rem, 2vw, 0.875rem);">Extract text from documents</small>
1020
  </div>
1021
+ <div style="padding: 15px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
1022
+ <strong style="font-size: clamp(0.85rem, 2.5vw, 1rem);">πŸ“ Text Extractor</strong><br/>
1023
+ <small style="font-size: clamp(0.7rem, 2vw, 0.875rem);">Keywords & summaries</small>
1024
  </div>
1025
+ <div style="padding: 15px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
1026
+ <strong style="font-size: clamp(0.85rem, 2.5vw, 1rem);">🌐 Web Fetcher</strong><br/>
1027
+ <small style="font-size: clamp(0.7rem, 2vw, 0.875rem);">Scrape websites</small>
1028
  </div>
1029
+ <div style="padding: 15px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
1030
+ <strong style="font-size: clamp(0.85rem, 2.5vw, 1rem);">πŸ” RAG Search</strong><br/>
1031
+ <small style="font-size: clamp(0.7rem, 2vw, 0.875rem);">Semantic search</small>
1032
  </div>
1033
+ <div style="padding: 15px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
1034
+ <strong style="font-size: clamp(0.85rem, 2.5vw, 1rem);">πŸ“Š Data Visualizer</strong><br/>
1035
+ <small style="font-size: clamp(0.7rem, 2vw, 0.875rem);">Create charts</small>
1036
  </div>
1037
+ <div style="padding: 15px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
1038
+ <strong style="font-size: clamp(0.85rem, 2.5vw, 1rem);">πŸ”„ File Converter</strong><br/>
1039
+ <small style="font-size: clamp(0.7rem, 2vw, 0.875rem);">Format conversions</small>
1040
  </div>
1041
+ <div style="padding: 15px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
1042
+ <strong style="font-size: clamp(0.85rem, 2.5vw, 1rem);">πŸ“§ Email Classifier</strong><br/>
1043
+ <small style="font-size: clamp(0.7rem, 2vw, 0.875rem);">Intent detection</small>
1044
  </div>
1045
+ <div style="padding: 15px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
1046
+ <strong style="font-size: clamp(0.85rem, 2.5vw, 1rem);">πŸ“ˆ KPI Generator</strong><br/>
1047
+ <small style="font-size: clamp(0.7rem, 2vw, 0.875rem);">Business analytics</small>
1048
  </div>
1049
  </div>
1050
 
1051
+ <div style="margin-top: 30px; padding-top: 20px; border-top: 2px solid #e9ecef;">
1052
+ <p style="font-size: clamp(0.85rem, 2.5vw, 1rem); margin: 10px 0;">
1053
+ πŸ”— <a href="https://github.com/AlBaraa-1/CleanEye-Hackathon" target="_blank" style="color: #667eea; text-decoration: none; font-weight: 600;">View on GitHub</a>
1054
  </p>
1055
+ <p style="margin: 10px 0; color: #6c757d; font-size: clamp(0.75rem, 2vw, 0.875rem);">
1056
  πŸ† Built for HuggingFace Gradio x BuildWithMCP Hackathon
1057
  </p>
1058
+ <p style="margin: 10px 0; color: #6c757d; font-size: clamp(0.75rem, 2vw, 0.875rem);">
1059
  Made with ❀️ using Python, Gradio, Claude MCP, FAISS, and Sentence Transformers
1060
  </p>
1061
  </div>