gitmodelmujtaba commited on
Commit
e5063e0
·
verified ·
1 Parent(s): b105398

Deploy ReguAI: Neuro-Symbolic AI GRC & Automated Conformity Assessment Engine

Browse files
Files changed (2) hide show
  1. app.py +219 -174
  2. data/active_learning_triplets.jsonl +1 -0
app.py CHANGED
@@ -381,14 +381,26 @@ def record_triage(claim_id: str, new_status: str, new_category: str, notes: str,
381
 
382
  # Custom Theme and CSS for Modern, Uncluttered Executive UI
383
  CUSTOM_CSS = """
384
- @import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');
 
 
 
 
 
 
 
 
 
 
385
 
386
- /* Main Container */
387
  .gradio-container {
388
  max-width: 1440px !important;
389
  margin: 0 auto !important;
390
- font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
391
  color: #1e293b;
 
 
 
392
  }
393
 
394
  .dark .gradio-container {
@@ -423,9 +435,11 @@ CUSTOM_CSS = """
423
  }
424
 
425
  .hero-title-group h1 {
426
- font-size: 24px !important;
 
427
  font-weight: 800 !important;
428
  margin: 0 !important;
 
429
  background: linear-gradient(135deg, #1e293b 0%, #2563eb 100%);
430
  -webkit-background-clip: text;
431
  -webkit-text-fill-color: transparent;
@@ -441,10 +455,12 @@ CUSTOM_CSS = """
441
  }
442
 
443
  .hero-subtitle {
 
444
  font-size: 13px !important;
445
  color: #64748b !important;
446
  margin-top: 4px !important;
447
  font-weight: 500 !important;
 
448
  }
449
 
450
  .dark .hero-subtitle {
@@ -458,14 +474,15 @@ CUSTOM_CSS = """
458
  }
459
 
460
  .hero-pill {
461
- font-size: 11px;
462
- font-weight: 700;
 
463
  padding: 5px 12px;
464
  border-radius: 9999px;
465
  background: rgba(255, 255, 255, 0.85);
466
  border: 1px solid #cbd5e1;
467
  color: #334155;
468
- letter-spacing: 0.3px;
469
  display: inline-flex;
470
  align-items: center;
471
  gap: 5px;
@@ -477,108 +494,115 @@ CUSTOM_CSS = """
477
  color: #cbd5e1;
478
  }
479
 
480
- .workflow-strip {
481
- display: flex;
482
- align-items: center;
483
- justify-content: space-between;
484
- margin-top: 14px;
485
- padding-top: 14px;
486
- border-top: 1px solid rgba(226, 232, 240, 0.8);
487
- gap: 10px;
488
- flex-wrap: wrap;
489
- }
490
-
491
- .dark .workflow-strip {
492
- border-top-color: rgba(51, 65, 85, 0.8);
493
- }
494
-
495
- .wf-item {
496
- display: flex;
497
- align-items: center;
498
- gap: 8px;
499
- font-size: 12px;
500
- color: #475569;
501
- font-weight: 500;
502
  }
503
 
504
- .dark .wf-item {
505
- color: #94a3b8;
506
  }
507
 
508
- .wf-num {
509
- width: 20px;
510
- height: 20px;
511
- border-radius: 50%;
512
- background: #2563eb;
513
- color: #ffffff;
514
- font-weight: 700;
515
- display: flex;
516
- align-items: center;
517
- justify-content: center;
518
- font-size: 11px;
519
  }
520
 
521
- .wf-arrow {
522
- color: #cbd5e1;
523
- font-size: 12px;
524
  }
525
 
526
- .dark .wf-arrow {
527
- color: #475569;
 
 
 
 
528
  }
529
 
530
  /* -------------------------------------------------------------
531
- PRESET SCENARIO BUTTONS (Sleek & Segmented)
532
  ------------------------------------------------------------- */
533
- .section-label {
534
- font-size: 12px;
535
- font-weight: 700;
536
- text-transform: uppercase;
537
- color: #64748b;
538
- letter-spacing: 0.6px;
539
- margin-bottom: 8px;
540
- display: flex;
541
- align-items: center;
542
- gap: 6px;
543
  }
544
 
545
- .dark .section-label {
546
- color: #94a3b8;
 
 
547
  }
548
 
549
- .preset-btn {
550
- font-size: 12px !important;
 
 
 
551
  font-weight: 600 !important;
552
- padding: 7px 10px !important;
553
  border-radius: 8px !important;
554
- border: 1px solid #e2e8f0 !important;
555
- background: #ffffff !important;
556
- color: #334155 !important;
 
 
557
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
558
  }
559
 
560
- .preset-btn:hover {
561
- transform: translateY(-1px) !important;
562
- border-color: #3b82f6 !important;
563
- color: #2563eb !important;
564
- box-shadow: 0 4px 12px rgba(59, 130, 246, 0.12) !important;
565
  }
566
 
567
- .dark .preset-btn {
568
- background: #1e293b !important;
569
- border-color: #334155 !important;
570
- color: #e2e8f0 !important;
571
  }
572
 
573
- .dark .preset-btn:hover {
574
- background: #334155 !important;
575
- border-color: #60a5fa !important;
576
- color: #ffffff !important;
577
  }
578
 
579
- /* -------------------------------------------------------------
580
- TAB NAVIGATION (High-Contrast & Clean Indicator)
581
- ------------------------------------------------------------- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
582
  div[role="tablist"] {
583
  gap: 6px !important;
584
  border-bottom: 2px solid #e2e8f0 !important;
@@ -591,12 +615,14 @@ div[role="tablist"] {
591
  }
592
 
593
  button[role="tab"] {
 
594
  font-size: 13px !important;
595
  font-weight: 600 !important;
596
  padding: 8px 16px !important;
597
  border-radius: 8px 8px 0 0 !important;
598
  color: #64748b !important;
599
  border: none !important;
 
600
  transition: all 0.15s ease !important;
601
  }
602
 
@@ -629,28 +655,106 @@ button[role="tab"].selected {
629
  }
630
 
631
  /* -------------------------------------------------------------
632
- PRIMARY ACTION BUTTON
633
  ------------------------------------------------------------- */
 
 
 
 
 
 
 
 
 
 
634
  button.primary,
635
  button[variant="primary"] {
636
  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%) !important;
637
  color: #ffffff !important;
638
  font-weight: 700 !important;
639
- font-size: 14px !important;
640
- border-radius: 10px !important;
641
- padding: 12px 24px !important;
642
  border: none !important;
643
- box-shadow: 0 4px 14px rgba(37, 99, 235, 0.3) !important;
644
- transition: all 0.2s ease !important;
645
  }
646
 
647
  button.primary:hover,
648
  button[variant="primary"]:hover {
649
  background: linear-gradient(135deg, #1d4ed8 0%, #1e40af 100%) !important;
650
- box-shadow: 0 6px 20px rgba(37, 99, 235, 0.4) !important;
651
  transform: translateY(-1px) !important;
652
  }
653
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
654
  /* -------------------------------------------------------------
655
  EXECUTIVE SUMMARY & METRIC CARDS
656
  ------------------------------------------------------------- */
@@ -681,8 +785,10 @@ button[variant="primary"]:hover {
681
  .summary-title {
682
  margin: 0;
683
  color: #0f172a;
684
- font-size: 20px;
 
685
  font-weight: 700;
 
686
  }
687
 
688
  .dark .summary-title {
@@ -691,16 +797,18 @@ button[variant="primary"]:hover {
691
 
692
  .status-pill {
693
  color: #ffffff !important;
 
694
  padding: 6px 14px;
695
  border-radius: 9999px;
696
  font-weight: 700;
697
- font-size: 13px;
698
- letter-spacing: 0.5px;
699
  }
700
 
701
  .summary-meta {
702
  margin: 4px 0;
703
  color: #475569;
 
704
  font-size: 13px;
705
  }
706
 
@@ -715,7 +823,8 @@ button[variant="primary"]:hover {
715
  .summary-desc {
716
  margin: 10px 0;
717
  color: #334155;
718
- font-size: 14px;
 
719
  line-height: 1.6;
720
  }
721
 
@@ -745,11 +854,12 @@ button[variant="primary"]:hover {
745
  }
746
 
747
  .metric-label {
 
748
  font-size: 11px;
749
  text-transform: uppercase;
750
  color: #64748b;
751
  font-weight: 700;
752
- letter-spacing: 0.6px;
753
  }
754
 
755
  .dark .metric-label {
@@ -757,9 +867,11 @@ button[variant="primary"]:hover {
757
  }
758
 
759
  .metric-val {
760
- font-size: 24px;
 
761
  font-weight: 800;
762
  margin-top: 4px;
 
763
  }
764
 
765
  .metric-val-main {
@@ -785,7 +897,12 @@ button[variant="primary"]:hover {
785
  background: #0f172a !important;
786
  }
787
 
788
- /* Fine Exposure Dark Mode */
 
 
 
 
 
789
  .dark .fine-liability-card {
790
  background: #1e293b !important;
791
  border-color: #334155 !important;
@@ -797,77 +914,14 @@ button[variant="primary"]:hover {
797
  border-color: #334155 !important;
798
  }
799
 
800
- /* -------------------------------------------------------------
801
- WORKFLOW TABS (Top-Level)
802
- ------------------------------------------------------------- */
803
- #main-tabs > div[role="tablist"],
804
- .main-workflow-tabs > div[role="tablist"] {
805
- display: flex !important;
806
- gap: 8px !important;
807
- background: #f1f5f9 !important;
808
- padding: 6px !important;
809
- border-radius: 12px !important;
810
- border: 1px solid #e2e8f0 !important;
811
- margin-bottom: 20px !important;
812
- }
813
-
814
- .dark #main-tabs > div[role="tablist"],
815
- .dark .main-workflow-tabs > div[role="tablist"] {
816
- background: #0f172a !important;
817
- border-color: #334155 !important;
818
- }
819
-
820
- #main-tabs > div[role="tablist"] > button[role="tab"],
821
- .main-workflow-tabs > div[role="tablist"] > button[role="tab"] {
822
- flex: 1 !important;
823
- font-size: 14px !important;
824
- font-weight: 700 !important;
825
- padding: 12px 18px !important;
826
- border-radius: 8px !important;
827
- color: #475569 !important;
828
- border: none !important;
829
- text-align: center !important;
830
- background: transparent !important;
831
- transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
832
- }
833
-
834
- .dark #main-tabs > div[role="tablist"] > button[role="tab"],
835
- .dark .main-workflow-tabs > div[role="tablist"] > button[role="tab"] {
836
- color: #94a3b8 !important;
837
  }
838
 
839
- #main-tabs > div[role="tablist"] > button[role="tab"]:hover,
840
- .main-workflow-tabs > div[role="tablist"] > button[role="tab"]:hover {
841
- color: #0f172a !important;
842
- background: rgba(255, 255, 255, 0.6) !important;
843
- }
844
-
845
- .dark #main-tabs > div[role="tablist"] > button[role="tab"]:hover,
846
- .dark .main-workflow-tabs > div[role="tablist"] > button[role="tab"]:hover {
847
- color: #f8fafc !important;
848
- background: rgba(30, 41, 59, 0.8) !important;
849
- }
850
-
851
- #main-tabs > div[role="tablist"] > button[role="tab"][aria-selected="true"],
852
- #main-tabs > div[role="tablist"] > button[role="tab"].selected,
853
- .main-workflow-tabs > div[role="tablist"] > button[role="tab"][aria-selected="true"],
854
- .main-workflow-tabs > div[role="tablist"] > button[role="tab"].selected {
855
- background: #ffffff !important;
856
- color: #2563eb !important;
857
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
858
- border-bottom: none !important;
859
- }
860
-
861
- .dark #main-tabs > div[role="tablist"] > button[role="tab"][aria-selected="true"],
862
- .dark #main-tabs > div[role="tablist"] > button[role="tab"].selected,
863
- .dark .main-workflow-tabs > div[role="tablist"] > button[role="tab"][aria-selected="true"],
864
- .dark .main-workflow-tabs > div[role="tablist"] > button[role="tab"].selected {
865
- background: #1e293b !important;
866
- color: #60a5fa !important;
867
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4) !important;
868
- }
869
-
870
- /* Workflow Step Navigation Buttons */
871
  .tab-nav-footer {
872
  margin-top: 24px !important;
873
  padding-top: 16px !important;
@@ -901,15 +955,6 @@ with gr.Blocks(title="ReguAI: Neuro-Symbolic AI GRC Engine") as demo:
901
  <span class="hero-pill">🛡️ OASIS SARIF 2.1.0</span>
902
  </div>
903
  </div>
904
- <div class="workflow-strip">
905
- <div class="wf-item"><span class="wf-num">1</span><span>Select Scenario</span></div>
906
- <span class="wf-arrow">➔</span>
907
- <div class="wf-item"><span class="wf-num">2</span><span>Review Grounding</span></div>
908
- <span class="wf-arrow">➔</span>
909
- <div class="wf-item"><span class="wf-num">3</span><span>Run SHACL Proofs</span></div>
910
- <span class="wf-arrow">➔</span>
911
- <div class="wf-item"><span class="wf-num">4</span><span>Export Annex IV Package</span></div>
912
- </div>
913
  </div>
914
  """
915
  )
 
381
 
382
  # Custom Theme and CSS for Modern, Uncluttered Executive UI
383
  CUSTOM_CSS = """
384
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');
385
+
386
+ /* -------------------------------------------------------------
387
+ UNIVERSAL TYPOGRAPHY & ANTI-ALIASING
388
+ Crafted with 'Inter' for optimal screen legibility & eye comfort
389
+ ------------------------------------------------------------- */
390
+ *, *::before, *::after {
391
+ -webkit-font-smoothing: antialiased !important;
392
+ -moz-osx-font-smoothing: grayscale !important;
393
+ text-rendering: optimizeLegibility !important;
394
+ }
395
 
 
396
  .gradio-container {
397
  max-width: 1440px !important;
398
  margin: 0 auto !important;
399
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
400
  color: #1e293b;
401
+ font-size: 13.5px !important;
402
+ line-height: 1.6 !important;
403
+ letter-spacing: -0.01em !important;
404
  }
405
 
406
  .dark .gradio-container {
 
435
  }
436
 
437
  .hero-title-group h1 {
438
+ font-family: 'Inter', sans-serif !important;
439
+ font-size: 22px !important;
440
  font-weight: 800 !important;
441
  margin: 0 !important;
442
+ letter-spacing: -0.02em !important;
443
  background: linear-gradient(135deg, #1e293b 0%, #2563eb 100%);
444
  -webkit-background-clip: text;
445
  -webkit-text-fill-color: transparent;
 
455
  }
456
 
457
  .hero-subtitle {
458
+ font-family: 'Inter', sans-serif !important;
459
  font-size: 13px !important;
460
  color: #64748b !important;
461
  margin-top: 4px !important;
462
  font-weight: 500 !important;
463
+ letter-spacing: -0.01em !important;
464
  }
465
 
466
  .dark .hero-subtitle {
 
474
  }
475
 
476
  .hero-pill {
477
+ font-family: 'Inter', sans-serif !important;
478
+ font-size: 11.5px;
479
+ font-weight: 600;
480
  padding: 5px 12px;
481
  border-radius: 9999px;
482
  background: rgba(255, 255, 255, 0.85);
483
  border: 1px solid #cbd5e1;
484
  color: #334155;
485
+ letter-spacing: 0.2px;
486
  display: inline-flex;
487
  align-items: center;
488
  gap: 5px;
 
494
  color: #cbd5e1;
495
  }
496
 
497
+ /* -------------------------------------------------------------
498
+ SYMMETRIC FORM CONTROLS, LABELS & INPUTS
499
+ ------------------------------------------------------------- */
500
+ label, .gr-form label, .block label, .gr-input-label, span.text-sm {
501
+ font-family: 'Inter', sans-serif !important;
502
+ font-size: 13px !important;
503
+ font-weight: 600 !important;
504
+ color: #334155 !important;
505
+ line-height: 1.4 !important;
506
+ letter-spacing: -0.01em !important;
507
+ margin-bottom: 5px !important;
 
 
 
 
 
 
 
 
 
 
 
508
  }
509
 
510
+ .dark label, .dark .gr-form label, .dark .block label, .dark .gr-input-label, .dark span.text-sm {
511
+ color: #cbd5e1 !important;
512
  }
513
 
514
+ input, select, .gr-input, .gr-dropdown input {
515
+ font-family: 'Inter', sans-serif !important;
516
+ font-size: 13.5px !important;
517
+ line-height: 1.5 !important;
518
+ color: #0f172a !important;
 
 
 
 
 
 
519
  }
520
 
521
+ .dark input, .dark select, .dark .gr-input, .dark .gr-dropdown input {
522
+ color: #f8fafc !important;
 
523
  }
524
 
525
+ /* Technical Specification Editor with Clean JetBrains Mono */
526
+ textarea[placeholder*="system architecture"], textarea[placeholder*="model card"] {
527
+ font-family: 'JetBrains Mono', monospace !important;
528
+ font-size: 13px !important;
529
+ line-height: 1.6 !important;
530
+ letter-spacing: 0px !important;
531
  }
532
 
533
  /* -------------------------------------------------------------
534
+ WORKFLOW TABS (Top-Level & Sub-Tabs)
535
  ------------------------------------------------------------- */
536
+ #main-tabs > div[role="tablist"],
537
+ .main-workflow-tabs > div[role="tablist"] {
538
+ display: flex !important;
539
+ gap: 8px !important;
540
+ background: #f1f5f9 !important;
541
+ padding: 6px !important;
542
+ border-radius: 12px !important;
543
+ border: 1px solid #e2e8f0 !important;
544
+ margin-bottom: 20px !important;
 
545
  }
546
 
547
+ .dark #main-tabs > div[role="tablist"],
548
+ .dark .main-workflow-tabs > div[role="tablist"] {
549
+ background: #0f172a !important;
550
+ border-color: #334155 !important;
551
  }
552
 
553
+ #main-tabs > div[role="tablist"] > button[role="tab"],
554
+ .main-workflow-tabs > div[role="tablist"] > button[role="tab"] {
555
+ flex: 1 !important;
556
+ font-family: 'Inter', sans-serif !important;
557
+ font-size: 13.5px !important;
558
  font-weight: 600 !important;
559
+ padding: 11px 16px !important;
560
  border-radius: 8px !important;
561
+ color: #475569 !important;
562
+ border: none !important;
563
+ text-align: center !important;
564
+ background: transparent !important;
565
+ letter-spacing: -0.01em !important;
566
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
567
  }
568
 
569
+ .dark #main-tabs > div[role="tablist"] > button[role="tab"],
570
+ .dark .main-workflow-tabs > div[role="tablist"] > button[role="tab"] {
571
+ color: #94a3b8 !important;
 
 
572
  }
573
 
574
+ #main-tabs > div[role="tablist"] > button[role="tab"]:hover,
575
+ .main-workflow-tabs > div[role="tablist"] > button[role="tab"]:hover {
576
+ color: #0f172a !important;
577
+ background: rgba(255, 255, 255, 0.7) !important;
578
  }
579
 
580
+ .dark #main-tabs > div[role="tablist"] > button[role="tab"]:hover,
581
+ .dark .main-workflow-tabs > div[role="tablist"] > button[role="tab"]:hover {
582
+ color: #f8fafc !important;
583
+ background: rgba(30, 41, 59, 0.8) !important;
584
  }
585
 
586
+ #main-tabs > div[role="tablist"] > button[role="tab"][aria-selected="true"],
587
+ #main-tabs > div[role="tablist"] > button[role="tab"].selected,
588
+ .main-workflow-tabs > div[role="tablist"] > button[role="tab"][aria-selected="true"],
589
+ .main-workflow-tabs > div[role="tablist"] > button[role="tab"].selected {
590
+ background: #ffffff !important;
591
+ color: #2563eb !important;
592
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
593
+ border-bottom: none !important;
594
+ }
595
+
596
+ .dark #main-tabs > div[role="tablist"] > button[role="tab"][aria-selected="true"],
597
+ .dark #main-tabs > div[role="tablist"] > button[role="tab"].selected,
598
+ .dark .main-workflow-tabs > div[role="tablist"] > button[role="tab"][aria-selected="true"],
599
+ .dark .main-workflow-tabs > div[role="tablist"] > button[role="tab"].selected {
600
+ background: #1e293b !important;
601
+ color: #60a5fa !important;
602
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4) !important;
603
+ }
604
+
605
+ /* Sub-Tab Navigation */
606
  div[role="tablist"] {
607
  gap: 6px !important;
608
  border-bottom: 2px solid #e2e8f0 !important;
 
615
  }
616
 
617
  button[role="tab"] {
618
+ font-family: 'Inter', sans-serif !important;
619
  font-size: 13px !important;
620
  font-weight: 600 !important;
621
  padding: 8px 16px !important;
622
  border-radius: 8px 8px 0 0 !important;
623
  color: #64748b !important;
624
  border: none !important;
625
+ letter-spacing: -0.01em !important;
626
  transition: all 0.15s ease !important;
627
  }
628
 
 
655
  }
656
 
657
  /* -------------------------------------------------------------
658
+ BUTTONS (Symmetric Typography & Proportions)
659
  ------------------------------------------------------------- */
660
+ button, .gr-button {
661
+ font-family: 'Inter', sans-serif !important;
662
+ font-size: 13.5px !important;
663
+ font-weight: 600 !important;
664
+ letter-spacing: -0.01em !important;
665
+ line-height: 1.4 !important;
666
+ border-radius: 8px !important;
667
+ transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
668
+ }
669
+
670
  button.primary,
671
  button[variant="primary"] {
672
  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%) !important;
673
  color: #ffffff !important;
674
  font-weight: 700 !important;
675
+ border-radius: 9px !important;
676
+ padding: 11px 20px !important;
 
677
  border: none !important;
678
+ box-shadow: 0 4px 14px rgba(37, 99, 235, 0.25) !important;
 
679
  }
680
 
681
  button.primary:hover,
682
  button[variant="primary"]:hover {
683
  background: linear-gradient(135deg, #1d4ed8 0%, #1e40af 100%) !important;
684
+ box-shadow: 0 6px 20px rgba(37, 99, 235, 0.35) !important;
685
  transform: translateY(-1px) !important;
686
  }
687
 
688
+ button.secondary,
689
+ button[variant="secondary"] {
690
+ border: 1px solid #cbd5e1 !important;
691
+ background: #ffffff !important;
692
+ color: #334155 !important;
693
+ }
694
+
695
+ .dark button.secondary,
696
+ .dark button[variant="secondary"] {
697
+ background: #1e293b !important;
698
+ border-color: #334155 !important;
699
+ color: #e2e8f0 !important;
700
+ }
701
+
702
+ button.secondary:hover,
703
+ button[variant="secondary"]:hover {
704
+ border-color: #94a3b8 !important;
705
+ color: #0f172a !important;
706
+ }
707
+
708
+ .dark button.secondary:hover,
709
+ .dark button[variant="secondary"]:hover {
710
+ border-color: #60a5fa !important;
711
+ color: #ffffff !important;
712
+ }
713
+
714
+ /* -------------------------------------------------------------
715
+ SYMMETRIC DATA TABLES ACROSS ALL TABS
716
+ ------------------------------------------------------------- */
717
+ table, .gr-dataframe table {
718
+ font-family: 'Inter', sans-serif !important;
719
+ font-size: 13px !important;
720
+ line-height: 1.5 !important;
721
+ border-collapse: separate !important;
722
+ border-spacing: 0 !important;
723
+ width: 100% !important;
724
+ }
725
+
726
+ table th, .gr-dataframe th {
727
+ font-family: 'Inter', sans-serif !important;
728
+ font-size: 12px !important;
729
+ font-weight: 700 !important;
730
+ letter-spacing: 0.04em !important;
731
+ text-transform: uppercase !important;
732
+ color: #475569 !important;
733
+ background: #f8fafc !important;
734
+ padding: 10px 14px !important;
735
+ border-bottom: 1.5px solid #e2e8f0 !important;
736
+ }
737
+
738
+ .dark table th, .dark .gr-dataframe th {
739
+ background: #0f172a !important;
740
+ color: #94a3b8 !important;
741
+ border-bottom-color: #334155 !important;
742
+ }
743
+
744
+ table td, .gr-dataframe td {
745
+ font-family: 'Inter', sans-serif !important;
746
+ font-size: 13px !important;
747
+ line-height: 1.5 !important;
748
+ padding: 10px 14px !important;
749
+ color: #334155 !important;
750
+ border-bottom: 1px solid #f1f5f9 !important;
751
+ }
752
+
753
+ .dark table td, .dark .gr-dataframe td {
754
+ color: #cbd5e1 !important;
755
+ border-bottom-color: #1e293b !important;
756
+ }
757
+
758
  /* -------------------------------------------------------------
759
  EXECUTIVE SUMMARY & METRIC CARDS
760
  ------------------------------------------------------------- */
 
785
  .summary-title {
786
  margin: 0;
787
  color: #0f172a;
788
+ font-family: 'Inter', sans-serif !important;
789
+ font-size: 19px;
790
  font-weight: 700;
791
+ letter-spacing: -0.01em;
792
  }
793
 
794
  .dark .summary-title {
 
797
 
798
  .status-pill {
799
  color: #ffffff !important;
800
+ font-family: 'Inter', sans-serif !important;
801
  padding: 6px 14px;
802
  border-radius: 9999px;
803
  font-weight: 700;
804
+ font-size: 12.5px;
805
+ letter-spacing: 0.3px;
806
  }
807
 
808
  .summary-meta {
809
  margin: 4px 0;
810
  color: #475569;
811
+ font-family: 'Inter', sans-serif !important;
812
  font-size: 13px;
813
  }
814
 
 
823
  .summary-desc {
824
  margin: 10px 0;
825
  color: #334155;
826
+ font-family: 'Inter', sans-serif !important;
827
+ font-size: 13.5px;
828
  line-height: 1.6;
829
  }
830
 
 
854
  }
855
 
856
  .metric-label {
857
+ font-family: 'Inter', sans-serif !important;
858
  font-size: 11px;
859
  text-transform: uppercase;
860
  color: #64748b;
861
  font-weight: 700;
862
+ letter-spacing: 0.5px;
863
  }
864
 
865
  .dark .metric-label {
 
867
  }
868
 
869
  .metric-val {
870
+ font-family: 'Inter', sans-serif !important;
871
+ font-size: 22px;
872
  font-weight: 800;
873
  margin-top: 4px;
874
+ letter-spacing: -0.02em;
875
  }
876
 
877
  .metric-val-main {
 
897
  background: #0f172a !important;
898
  }
899
 
900
+ /* Fine Exposure Card */
901
+ .fine-liability-card {
902
+ border-radius: 10px !important;
903
+ font-family: 'Inter', sans-serif !important;
904
+ }
905
+
906
  .dark .fine-liability-card {
907
  background: #1e293b !important;
908
  border-color: #334155 !important;
 
914
  border-color: #334155 !important;
915
  }
916
 
917
+ /* Code & Pre Blocks */
918
+ pre, code, .gr-code pre, .gr-code code {
919
+ font-family: 'JetBrains Mono', monospace !important;
920
+ font-size: 12.5px !important;
921
+ line-height: 1.55 !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
922
  }
923
 
924
+ /* Workflow Step Navigation Footers */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
925
  .tab-nav-footer {
926
  margin-top: 24px !important;
927
  padding-top: 16px !important;
 
955
  <span class="hero-pill">🛡️ OASIS SARIF 2.1.0</span>
956
  </div>
957
  </div>
 
 
 
 
 
 
 
 
 
958
  </div>
959
  """
960
  )
data/active_learning_triplets.jsonl CHANGED
@@ -23,3 +23,4 @@
23
  {"timestamp": "2026-09-21T15:05:44.655438+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
24
  {"timestamp": "2026-09-21T16:35:03.024528+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
25
  {"timestamp": "2026-09-21T16:44:05.202261+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
 
 
23
  {"timestamp": "2026-09-21T15:05:44.655438+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
24
  {"timestamp": "2026-09-21T16:35:03.024528+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
25
  {"timestamp": "2026-09-21T16:44:05.202261+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}
26
+ {"timestamp": "2026-09-21T16:49:24.911620+00:00", "auditor_id": "compliance_lead_01", "claim_id": "clm_test_99", "anchor_text": "Verified operational override in production dashboard.", "positive_label": "HUMAN_OVERSIGHT", "negative_label": "IRRELEVANT_TEXT", "verified_assertion_status": "IMPLEMENTED", "auditor_notes": "Verified operational override in production dashboard."}