yipengsun Claude Opus 4.5 commited on
Commit
1e1793e
·
1 Parent(s): c55630b

Lock gradio version and add dark mode support

Browse files

- Lock gradio==6.4.0 for consistent behavior across environments
- Add comprehensive dark mode CSS for HF Spaces compatibility
- Cover all UI elements: case cards, agent blocks, voice section, etc.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Files changed (2) hide show
  1. requirements.txt +1 -1
  2. ui/css.py +240 -0
requirements.txt CHANGED
@@ -4,7 +4,7 @@ accelerate>=0.26.0
4
  bitsandbytes>=0.42.0
5
  huggingface_hub>=0.20.0
6
  langgraph>=0.2.0
7
- gradio>=6.4.0
8
  Pillow>=10.0.0
9
  numpy>=1.24.0
10
  scipy>=1.10.0
 
4
  bitsandbytes>=0.42.0
5
  huggingface_hub>=0.20.0
6
  langgraph>=0.2.0
7
+ gradio==6.4.0
8
  Pillow>=10.0.0
9
  numpy>=1.24.0
10
  scipy>=1.10.0
ui/css.py CHANGED
@@ -723,4 +723,244 @@ div.agent-block .agent-header {
723
  .hero-banner h1 { font-size: 1.5rem; }
724
  .case-cards-overlay { grid-template-columns: 1fr; }
725
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
726
  """
 
723
  .hero-banner h1 { font-size: 1.5rem; }
724
  .case-cards-overlay { grid-template-columns: 1fr; }
725
  }
726
+
727
+ /* ===== Dark Mode ===== */
728
+ .dark .section-label {
729
+ color: #94a3b8;
730
+ }
731
+
732
+ /* Case Cards */
733
+ .dark .case-card {
734
+ background: #1e293b;
735
+ border-color: #334155;
736
+ }
737
+ .dark .case-card:hover {
738
+ border-color: #60a5fa;
739
+ box-shadow: 0 6px 24px rgba(59, 130, 246, 0.2);
740
+ }
741
+ .dark .case-title {
742
+ color: #f1f5f9;
743
+ }
744
+ .dark .case-meta {
745
+ color: #94a3b8;
746
+ }
747
+ .dark .case-desc {
748
+ color: #64748b;
749
+ }
750
+ .dark .case-misdiag {
751
+ border-top-color: #334155;
752
+ }
753
+ .dark .misdiag-label {
754
+ color: #64748b;
755
+ }
756
+ .dark .misdiag-value {
757
+ color: #f87171;
758
+ }
759
+
760
+ /* Tags in dark mode */
761
+ .dark .tag-blue { background: #1e3a5f; color: #60a5fa; }
762
+ .dark .tag-red { background: #450a0a; color: #fca5a5; }
763
+ .dark .tag-purple { background: #2e1065; color: #c4b5fd; }
764
+
765
+ /* Voice Section */
766
+ .dark .voice-section {
767
+ background: linear-gradient(135deg, #1e293b 0%, #1e3a5f 100%);
768
+ border-color: #334155;
769
+ }
770
+ .dark .voice-title {
771
+ color: #f1f5f9;
772
+ }
773
+ .dark .voice-badge {
774
+ background: #1e3a5f;
775
+ color: #60a5fa;
776
+ }
777
+ .dark .voice-hint {
778
+ color: #64748b;
779
+ }
780
+ .dark .transcribe-btn {
781
+ background: #1e3a5f !important;
782
+ border-color: #3b82f6 !important;
783
+ color: #60a5fa !important;
784
+ }
785
+ .dark .transcribe-btn:hover {
786
+ background: #1d4ed8 !important;
787
+ color: #fff !important;
788
+ }
789
+
790
+ /* Voice status indicators */
791
+ .dark .voice-idle {
792
+ background: #1e293b;
793
+ color: #64748b;
794
+ border-color: #334155;
795
+ }
796
+ .dark .voice-processing {
797
+ background: #1e3a5f;
798
+ color: #60a5fa;
799
+ border-color: #3b82f6;
800
+ }
801
+ .dark .voice-success {
802
+ background: #14532d;
803
+ color: #4ade80;
804
+ border-color: #22c55e;
805
+ }
806
+ .dark .voice-error {
807
+ background: #450a0a;
808
+ color: #fca5a5;
809
+ border-color: #ef4444;
810
+ }
811
+
812
+ /* Progress Bar */
813
+ .dark .progress-bar-track {
814
+ background: #1e293b;
815
+ border-color: #334155;
816
+ }
817
+
818
+ /* Agent Blocks */
819
+ .dark .step-done {
820
+ background: #14532d;
821
+ border-color: #22c55e;
822
+ }
823
+ .dark .step-done .step-name { color: #4ade80; }
824
+ .dark .step-done .step-status { color: #22c55e; }
825
+
826
+ .dark .step-active {
827
+ background: #1e3a5f;
828
+ border-color: #3b82f6;
829
+ }
830
+ .dark .step-active .step-name { color: #60a5fa; }
831
+ .dark .step-active .step-status { color: #3b82f6; }
832
+
833
+ .dark .step-waiting {
834
+ background: #1e293b;
835
+ border-color: #334155;
836
+ }
837
+ .dark .step-waiting .step-icon {
838
+ background: #334155;
839
+ color: #64748b;
840
+ }
841
+ .dark .step-waiting .step-name { color: #64748b; }
842
+ .dark .step-waiting .step-status { color: #475569; }
843
+
844
+ .dark .step-error {
845
+ background: #450a0a;
846
+ border-color: #ef4444;
847
+ }
848
+ .dark .step-error .step-name { color: #fca5a5; }
849
+ .dark .step-error .step-status { color: #ef4444; }
850
+
851
+ /* Agent Output */
852
+ .dark .agent-output {
853
+ color: #cbd5e1;
854
+ border-top-color: rgba(255,255,255,0.08);
855
+ }
856
+ .dark .agent-output details summary {
857
+ color: #94a3b8;
858
+ }
859
+ .dark .findings-section strong,
860
+ .dark .differentials-section strong {
861
+ color: #f1f5f9;
862
+ }
863
+
864
+ /* Bias Detector */
865
+ .dark .discrepancy-summary {
866
+ background: #431407;
867
+ border-color: #c2410c;
868
+ color: #fed7aa;
869
+ }
870
+ .dark .bias-item {
871
+ background: #422006;
872
+ border-left-color: #f59e0b;
873
+ }
874
+ .dark .bias-title {
875
+ color: #fcd34d;
876
+ }
877
+ .dark .bias-evidence {
878
+ color: #a8a29e;
879
+ }
880
+ .dark .missed-findings {
881
+ background: #450a0a;
882
+ }
883
+ .dark .missed-findings strong {
884
+ color: #fca5a5;
885
+ }
886
+
887
+ /* Severity tags */
888
+ .dark .severity-high { background: #450a0a; color: #fca5a5; }
889
+ .dark .severity-medium { background: #431407; color: #fdba74; }
890
+ .dark .severity-low { background: #422006; color: #fde047; }
891
+
892
+ /* Source tags */
893
+ .dark .source-doctor { background: #1e3a5f; color: #60a5fa; }
894
+ .dark .source-ai { background: #2e1065; color: #c4b5fd; }
895
+ .dark .source-both { background: #312e81; color: #a5b4fc; }
896
+ .dark .source-imaging { background: #1e3a5f; color: #60a5fa; }
897
+ .dark .source-clinical { background: #422006; color: #fcd34d; }
898
+
899
+ /* SigLIP */
900
+ .dark .siglip-section {
901
+ background: #0c4a6e;
902
+ }
903
+ .dark .siglip-section strong {
904
+ color: #7dd3fc;
905
+ }
906
+ .dark .sign-present {
907
+ color: #4ade80;
908
+ }
909
+ .dark .sign-absent {
910
+ color: #64748b;
911
+ }
912
+
913
+ /* Devil's Advocate */
914
+ .dark .mnm-item {
915
+ background: #450a0a;
916
+ border-left-color: #ef4444;
917
+ }
918
+ .dark .mnm-title {
919
+ color: #fca5a5;
920
+ }
921
+ .dark .challenge-item {
922
+ background: #2e1065;
923
+ border-left-color: #8b5cf6;
924
+ }
925
+ .dark .challenge-claim {
926
+ color: #c4b5fd;
927
+ }
928
+ .dark .challenge-counter {
929
+ color: #9ca3af;
930
+ }
931
+
932
+ /* Consultant */
933
+ .dark .consultation-note {
934
+ background: linear-gradient(135deg, #1e293b, #0c4a6e);
935
+ border-color: #334155;
936
+ color: #e2e8f0;
937
+ }
938
+ .dark .urgency-critical { background: #450a0a; color: #fca5a5; }
939
+ .dark .urgency-high { background: #431407; color: #fdba74; }
940
+ .dark .urgency-moderate { background: #422006; color: #fde047; }
941
+ .dark .urgency-unknown { background: #334155; color: #94a3b8; }
942
+ .dark .confidence-note {
943
+ background: #1e293b;
944
+ color: #94a3b8;
945
+ }
946
+
947
+ /* Pipeline error */
948
+ .dark .pipeline-error {
949
+ background: #450a0a;
950
+ border-color: #ef4444;
951
+ color: #fca5a5;
952
+ }
953
+
954
+ /* Footer */
955
+ .dark .footer-text {
956
+ color: #64748b;
957
+ border-top-color: #334155;
958
+ }
959
+ .dark .footer-chip {
960
+ background: #334155;
961
+ color: #94a3b8;
962
+ }
963
+ .dark .footer-sep {
964
+ color: #475569;
965
+ }
966
  """