NorthernTribe-Research commited on
Commit
1ed1d4f
·
verified ·
1 Parent(s): 9a4f619

UI restyle: strict monochrome tactical palette (black/gray/white) for all trainer surfaces

Browse files
Files changed (1) hide show
  1. app.py +170 -0
app.py CHANGED
@@ -820,6 +820,176 @@ button.stop {
820
  transition: transform 120ms ease, border-color 120ms ease, box-shadow 120ms ease, background 120ms ease;
821
  }
822
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
823
  """
824
 
825
  UI_HEAD = """
 
820
  transition: transform 120ms ease, border-color 120ms ease, box-shadow 120ms ease, background 120ms ease;
821
  }
822
  }
823
+
824
+ /* Monochrome tactical overrides: black/gray/white only. */
825
+ :root {
826
+ --ops-bg: #060606;
827
+ --ops-bg-2: #121212;
828
+ --ops-panel: #171717;
829
+ --ops-panel-2: #1f1f1f;
830
+ --ops-panel-3: #242424;
831
+ --ops-border: rgba(220, 220, 220, 0.28);
832
+ --ops-border-strong: rgba(240, 240, 240, 0.38);
833
+ --ops-text: #f1f1f1;
834
+ --ops-muted: #b1b1b1;
835
+ --ops-dim: #8e8e8e;
836
+ --ops-green: #d4d4d4;
837
+ --ops-green-soft: rgba(255, 255, 255, 0.1);
838
+ --ops-cyan: #d4d4d4;
839
+ --ops-cyan-soft: rgba(255, 255, 255, 0.1);
840
+ --ops-amber: #a7a7a7;
841
+ --ops-amber-soft: rgba(255, 255, 255, 0.08);
842
+ --ops-red: #a0a0a0;
843
+ --ops-red-soft: rgba(255, 255, 255, 0.08);
844
+ }
845
+
846
+ .gradio-container {
847
+ --color-accent: #d0d0d0 !important;
848
+ --color-accent-soft: rgba(255, 255, 255, 0.12) !important;
849
+ --color-accent-emphasis: #8a8a8a !important;
850
+ --button-primary-background-fill: #2b2b2b !important;
851
+ --button-primary-background-fill-hover: #3b3b3b !important;
852
+ --button-primary-border-color: rgba(238, 238, 238, 0.4) !important;
853
+ --button-primary-text-color: #f1f1f1 !important;
854
+ }
855
+
856
+ .gradio-container,
857
+ body {
858
+ background:
859
+ radial-gradient(circle at 10% 12%, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0) 32%),
860
+ radial-gradient(circle at 86% 4%, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0) 28%),
861
+ linear-gradient(145deg, #060606 0%, #121212 100%) !important;
862
+ }
863
+
864
+ .block {
865
+ background: linear-gradient(180deg, rgba(27, 27, 27, 0.96) 0%, rgba(18, 18, 18, 0.97) 100%) !important;
866
+ }
867
+
868
+ .mono-hero {
869
+ border-color: rgba(235, 235, 235, 0.3);
870
+ background:
871
+ radial-gradient(circle at 100% 0%, rgba(255, 255, 255, 0.07) 0%, rgba(255, 255, 255, 0) 24%),
872
+ radial-gradient(circle at 0% 0%, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0) 26%),
873
+ linear-gradient(145deg, rgba(30, 30, 30, 0.98) 0%, rgba(15, 15, 15, 0.98) 100%);
874
+ }
875
+
876
+ .mono-hero::before {
877
+ background: linear-gradient(90deg, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.05) 44%, rgba(255, 255, 255, 0) 72%);
878
+ }
879
+
880
+ .mono-hero::after {
881
+ background: linear-gradient(90deg, transparent, rgba(230, 230, 230, 0.45), transparent);
882
+ }
883
+
884
+ .mono-hero-kicker,
885
+ .mono-hero-panel-label,
886
+ .ops-head h3 {
887
+ color: #d7d7d7 !important;
888
+ }
889
+
890
+ .mono-link-row a {
891
+ border-color: rgba(220, 220, 220, 0.34);
892
+ background: rgba(30, 30, 30, 0.96);
893
+ }
894
+
895
+ .mono-link-row a:hover {
896
+ border-color: rgba(245, 245, 245, 0.44);
897
+ background: rgba(42, 42, 42, 0.98);
898
+ }
899
+
900
+ .mono-chip-row span,
901
+ .ops-chip {
902
+ border-color: rgba(214, 214, 214, 0.28);
903
+ background: rgba(28, 28, 28, 0.94);
904
+ }
905
+
906
+ input:focus,
907
+ textarea:focus,
908
+ select:focus,
909
+ .gradio-container textarea:focus,
910
+ .gradio-container input:focus {
911
+ border-color: rgba(238, 238, 238, 0.62) !important;
912
+ box-shadow: 0 0 0 1px rgba(245, 245, 245, 0.24), 0 0 0 4px rgba(245, 245, 245, 0.08) !important;
913
+ }
914
+
915
+ button {
916
+ border-color: rgba(220, 220, 220, 0.38) !important;
917
+ background: linear-gradient(180deg, rgba(48, 48, 48, 0.98) 0%, rgba(30, 30, 30, 0.98) 100%) !important;
918
+ }
919
+
920
+ button:hover {
921
+ border-color: rgba(240, 240, 240, 0.48) !important;
922
+ }
923
+
924
+ button.primary,
925
+ button.stop {
926
+ border-color: rgba(240, 240, 240, 0.48) !important;
927
+ background: linear-gradient(180deg, rgba(60, 60, 60, 0.98) 0%, rgba(36, 36, 36, 0.98) 100%) !important;
928
+ color: #f1f1f1 !important;
929
+ }
930
+
931
+ .ops-visual {
932
+ border-color: rgba(215, 215, 215, 0.32);
933
+ background:
934
+ radial-gradient(circle at 100% 0%, rgba(255, 255, 255, 0.06), transparent 24%),
935
+ radial-gradient(circle at 0% 0%, rgba(255, 255, 255, 0.04), transparent 26%),
936
+ linear-gradient(180deg, rgba(20, 20, 20, 0.98) 0%, rgba(13, 13, 13, 0.98) 100%);
937
+ }
938
+
939
+ .ops-card {
940
+ border-color: rgba(210, 210, 210, 0.24);
941
+ background:
942
+ radial-gradient(circle at 0% 0%, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0) 34%),
943
+ linear-gradient(180deg, rgba(32, 32, 32, 0.98) 0%, rgba(19, 19, 19, 0.98) 100%);
944
+ }
945
+
946
+ .ops-card.metric-neutral,
947
+ .ops-card.metric-cyan,
948
+ .ops-card.metric-green,
949
+ .ops-card.metric-warning,
950
+ .ops-card.metric-danger {
951
+ --ops-card-accent: #d0d0d0;
952
+ --ops-card-glow: rgba(255, 255, 255, 0.06);
953
+ }
954
+
955
+ .ops-meter-fill {
956
+ background: linear-gradient(90deg, #a8a8a8 0%, #d4d4d4 100%);
957
+ box-shadow: 0 0 12px rgba(255, 255, 255, 0.2);
958
+ }
959
+
960
+ .ops-chip.on {
961
+ color: #ececec;
962
+ border-color: rgba(235, 235, 235, 0.48);
963
+ background: rgba(58, 58, 58, 0.94);
964
+ }
965
+
966
+ .ops-chip.off {
967
+ color: #9d9d9d;
968
+ border-color: rgba(210, 210, 210, 0.22);
969
+ }
970
+
971
+ .ops-stage-item.done .ops-stage-dot,
972
+ .ops-stage-item.active .ops-stage-dot {
973
+ color: #e7e7e7;
974
+ border-color: rgba(235, 235, 235, 0.5);
975
+ background: rgba(55, 55, 55, 0.95);
976
+ }
977
+
978
+ .ops-stage-item.pending .ops-stage-dot {
979
+ color: #8e8e8e;
980
+ }
981
+
982
+ .ops-run-badge.ok,
983
+ .ops-run-badge.fail,
984
+ .ops-run-badge.cancel {
985
+ color: #d6d6d6;
986
+ border-color: rgba(225, 225, 225, 0.36);
987
+ }
988
+
989
+ .ops-spark-line {
990
+ stroke: #d8d8d8;
991
+ filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.18));
992
+ }
993
  """
994
 
995
  UI_HEAD = """