Brajmovech commited on
Commit
a207429
·
1 Parent(s): 1666fd8

Sync mobile responsive CSS from IRIS-AI

Browse files
Files changed (1) hide show
  1. static/style.css +216 -109
static/style.css CHANGED
@@ -450,51 +450,97 @@ header {
450
 
451
  .dashboard-3col {
452
  display: grid;
453
- grid-template-columns: 325px 325px 1fr;
454
- grid-template-rows: 325px 325px;
455
- gap: 12px;
456
  margin-bottom: 2rem;
457
  }
458
 
459
- /* Card placement */
460
- .engine-light-card { grid-column: 1; grid-row: 1; }
461
- .sentiment-card { grid-column: 1; grid-row: 2; }
462
- .price-card { grid-column: 2; grid-row: 1; }
463
- .llm-card { grid-column: 2; grid-row: 2; display: flex; flex-direction: column; overflow: hidden; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
464
 
465
- .headlines-card {
466
- grid-column: 3;
467
- grid-row: 1 / span 2;
468
- height: calc(325px + 12px + 325px);
469
- min-height: calc(325px + 12px + 325px);
470
- max-height: calc(325px + 12px + 325px);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
471
  display: flex;
472
  flex-direction: column;
473
  overflow: hidden;
474
  }
475
 
476
- /* Engine & sentiment fill their card vertically */
477
- .engine-light-card .engine-indicator {
478
- flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
 
479
  }
480
- .sentiment-card .sentiment-meter {
481
- flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
 
 
 
482
  }
483
 
484
- /* LLM insights scrollable area */
485
- #llm-insights-container {
486
- flex: 1; min-height: 0; overflow-y: auto;
487
- display: flex; flex-direction: column; gap: 6px;
488
- scrollbar-width: thin;
 
489
  }
490
- .llm-item, .llm-report-item { flex-shrink: 0; min-height: 60px; }
491
 
492
- /* Headlines list fills remaining height */
493
- #headlines-list {
494
- flex: 1; min-height: 0; overflow-y: auto; overflow-x: hidden;
495
  }
496
 
497
- /* .headlines-scroll-hint — defined in full below near .headline-item */
 
 
 
498
 
499
  /* Predicted price: RED for uptrend, GREEN for downtrend (contrarian risk signal) */
500
  #predicted-price.price-up {
@@ -703,137 +749,159 @@ header {
703
  font-weight: 600;
704
  }
705
 
706
- /* ── Headlines list container ─────────────────────────────────────── */
707
  .headlines-list {
708
  list-style: none;
709
  padding: 0;
710
- margin: 0;
711
  display: flex;
712
  flex-direction: column;
713
  gap: 0;
 
 
 
714
  scrollbar-width: thin;
715
- scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
716
  }
717
 
718
- .headlines-list::-webkit-scrollbar { width: 6px; }
719
- .headlines-list::-webkit-scrollbar-track { background: var(--scrollbar-track); border-radius: 999px; }
720
- .headlines-list::-webkit-scrollbar-thumb { background: var(--scrollbar-thumb); border-radius: 999px; }
721
- .headlines-list::-webkit-scrollbar-thumb:hover { background: var(--scrollbar-thumb-hover); }
 
 
722
 
723
- /* ── Headline item ────────────────────────────────────────────────── */
724
  .headline-item {
725
- padding: 10px 14px;
726
  background: var(--headline-bg);
727
- border-left: 3px solid var(--accent-blue);
728
  border-radius: 0 6px 6px 0;
729
- margin-bottom: 8px;
730
  display: flex;
731
  flex-direction: column;
732
- gap: 4px;
733
- transition: background 0.15s ease, border-color 0.15s ease;
734
  }
 
735
  .headline-item:hover {
736
- background: rgba(107, 138, 176, 0.10);
737
- border-left-color: var(--accent-blue);
738
  }
739
- .headline-item:last-child { margin-bottom: 0; }
740
 
741
  .headline-item--no-url {
742
- border-left-color: rgba(107, 138, 176, 0.25);
743
- opacity: 0.68;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
744
  }
745
- .headline-item--no-url .headline-title { cursor: default; }
746
 
747
  .headline-item--empty {
748
  font-style: italic;
749
  color: var(--text-muted);
750
  border-left-color: transparent;
751
- opacity: 0.65;
752
- text-align: center;
753
- padding: 20px 14px;
754
  }
755
 
756
- .headline-item--geo { border-left-color: var(--status-amber); }
757
- .headline-item--macro { border-left-color: var(--status-amber); opacity: 0.92; }
758
-
759
- /* ── Title ────────────────────────────────────────────────────────── */
760
  .headline-title {
761
- font-size: 0.9rem;
762
  font-weight: 500;
763
- line-height: 1.5;
764
  color: var(--text-main);
765
  text-decoration: none;
766
  display: block;
767
  }
 
768
  a.headline-title:hover {
769
  color: var(--accent-blue);
770
- text-decoration: underline;
771
- text-underline-offset: 2px;
772
  }
773
 
774
- /* ── Meta row ─────────────────────────────────────────────────────── */
775
  .headline-meta {
776
  display: flex;
777
  align-items: center;
778
  gap: 6px;
779
  flex-wrap: wrap;
780
  }
 
781
  .headline-date {
782
- font-size: 0.75rem;
783
  color: var(--text-muted);
784
  flex-shrink: 0;
785
  }
 
786
  .headline-dot {
787
- width: 3px; height: 3px;
 
788
  border-radius: 50%;
789
  background: var(--text-muted);
790
- opacity: 0.45;
791
  flex-shrink: 0;
792
  }
 
793
  .headline-source {
794
- font-size: 0.75rem;
795
  color: var(--accent-blue);
796
- opacity: 0.75;
797
  overflow: hidden;
798
  text-overflow: ellipsis;
799
  white-space: nowrap;
800
  }
 
801
  .headline-source--none {
802
  color: var(--text-muted);
803
  font-style: italic;
804
  }
805
 
806
- /* ── Category tag pill ────────────────────────────────────────────── */
807
- .headline-tag {
808
- display: inline-block;
809
- font-size: 0.65rem;
810
- font-weight: 600;
811
- text-transform: uppercase;
812
- letter-spacing: 0.05em;
813
- padding: 2px 7px;
814
- border-radius: 3px;
815
- background: rgba(186,117,23,0.12);
816
- color: var(--status-amber);
817
- margin-left: 6px;
818
- vertical-align: middle;
819
- line-height: 1;
820
  }
821
 
822
- /* ── Scroll hint ──────────────────────────────────────────────────── */
823
- .headlines-scroll-hint {
824
- flex-shrink: 0;
825
- text-align: center;
826
- font-size: 0.72rem;
827
- color: var(--text-muted);
828
- opacity: 0;
829
- padding: 6px 0 2px;
830
- transition: opacity 0.2s ease;
831
- pointer-events: none;
832
  }
833
- .headlines-scroll-hint.visible { opacity: 0.55; }
834
 
835
- /* ── Card h3 spacing ──────────────────────────────────────────────── */
836
- .headlines-card h3 { flex-shrink: 0; margin-bottom: 10px; }
 
837
 
838
  footer {
839
  text-align: center;
@@ -1053,50 +1121,89 @@ footer p {
1053
  border-color: var(--accent-blue-hover);
1054
  }
1055
 
 
1056
  @media (max-width: 768px) {
 
1057
  .top-nav {
1058
  padding: 0.7rem 0.8rem 0.4rem;
1059
  }
1060
-
1061
  .top-nav-inner {
1062
  flex-direction: column;
1063
  align-items: stretch;
1064
  gap: 0.75rem;
1065
  }
1066
-
1067
  .nav-actions {
1068
- justify-content: flex-start;
1069
  flex-wrap: wrap;
1070
  }
1071
 
1072
- .search-box {
1073
- flex-direction: column;
 
 
 
 
1074
  }
1075
-
1076
  .dashboard-header {
1077
  flex-direction: column;
1078
  align-items: flex-start;
1079
  gap: 0.5rem;
 
1080
  }
1081
-
1082
- .feedback-fab {
1083
- right: 0.85rem;
1084
- bottom: 0.85rem;
1085
  }
1086
 
1087
- .feedback-modal {
1088
- padding: 0.9rem;
 
 
 
 
 
 
 
1089
  }
1090
 
 
1091
  .dashboard-3col {
1092
  grid-template-columns: 1fr;
1093
  grid-template-rows: none;
1094
  height: auto;
1095
  }
1096
 
1097
- .engine-light-card, .sentiment-card, .price-card, .llm-card, .headlines-card {
1098
- width: 100%; height: auto; min-height: unset; max-height: unset;
1099
- grid-column: unset; grid-row: unset;
 
 
 
1100
  }
1101
- .headlines-card { max-height: 400px; }
1102
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
450
 
451
  .dashboard-3col {
452
  display: grid;
453
+ grid-template-columns: 1fr 1fr 1.45fr;
454
+ gap: 1.5rem;
455
+ align-items: stretch;
456
  margin-bottom: 2rem;
457
  }
458
 
459
+ .dash-col {
460
+ display: flex;
461
+ flex-direction: column;
462
+ gap: 1.5rem;
463
+ height: 100%;
464
+ min-height: 0; /* lets flex children shrink below content size */
465
+ }
466
+
467
+ /* Left column: two cards share the full column height equally */
468
+ .dash-col--left {
469
+ height: 100%;
470
+ min-height: 0;
471
+ }
472
+
473
+ .dash-col--left .card {
474
+ flex: 1;
475
+ min-height: 0;
476
+ display: flex;
477
+ flex-direction: column;
478
+ }
479
+
480
+ /* Engine indicator fills leftover vertical space inside Risk card */
481
+ .dash-col--left .engine-indicator {
482
+ flex: 1;
483
+ display: flex;
484
+ flex-direction: column;
485
+ align-items: center;
486
+ justify-content: center;
487
+ }
488
 
489
+ /* Sentiment body fills leftover space inside Sentiment card */
490
+ .dash-col--left .sentiment-meter {
491
+ flex: 1;
492
+ display: flex;
493
+ flex-direction: column;
494
+ align-items: center;
495
+ justify-content: center;
496
+ }
497
+
498
+ /* Middle column */
499
+ .dash-col--mid {
500
+ height: 100%;
501
+ min-height: 0;
502
+ }
503
+
504
+ .dash-col--mid .price-card {
505
+ flex-shrink: 0;
506
+ }
507
+
508
+ .dash-col--mid .llm-card {
509
+ flex: 1;
510
+ min-height: 0;
511
  display: flex;
512
  flex-direction: column;
513
  overflow: hidden;
514
  }
515
 
516
+ .dash-col--mid .llm-card .llm-info {
517
+ flex: 1;
518
+ min-height: 0;
519
+ overflow-y: auto;
520
  }
521
+
522
+ /* Right column: headlines card fills full height and scrolls internally */
523
+ .dash-col--right {
524
+ height: 100%;
525
+ min-height: 0;
526
  }
527
 
528
+ .dash-col--right .headlines-card {
529
+ flex: 1;
530
+ min-height: 0;
531
+ display: flex;
532
+ flex-direction: column;
533
+ overflow: hidden;
534
  }
 
535
 
536
+ .dash-col--right .headlines-card h3 {
537
+ flex-shrink: 0;
 
538
  }
539
 
540
+ .dash-col--right .headlines-card .headlines-list {
541
+ height: 80%;
542
+ padding-right: 0.25rem;
543
+ }
544
 
545
  /* Predicted price: RED for uptrend, GREEN for downtrend (contrarian risk signal) */
546
  #predicted-price.price-up {
 
749
  font-weight: 600;
750
  }
751
 
 
752
  .headlines-list {
753
  list-style: none;
754
  padding: 0;
 
755
  display: flex;
756
  flex-direction: column;
757
  gap: 0;
758
+ overflow-y: auto;
759
+ overflow-x: hidden;
760
+ scroll-behavior: smooth;
761
  scrollbar-width: thin;
762
+ scrollbar-color: rgba(209,212,220,0.2) transparent;
763
  }
764
 
765
+ .headlines-list::-webkit-scrollbar { width: 4px; }
766
+ .headlines-list::-webkit-scrollbar-track { background: transparent; }
767
+ .headlines-list::-webkit-scrollbar-thumb {
768
+ background: rgba(209,212,220,0.2);
769
+ border-radius: 99px;
770
+ }
771
 
 
772
  .headline-item {
773
+ padding: 10px 12px;
774
  background: var(--headline-bg);
775
+ border-left: 2px solid var(--accent-blue);
776
  border-radius: 0 6px 6px 0;
777
+ margin-bottom: 7px;
778
  display: flex;
779
  flex-direction: column;
780
+ gap: 5px;
781
+ transition: background 0.15s ease;
782
  }
783
+
784
  .headline-item:hover {
785
+ background: rgba(107, 138, 176, 0.08);
 
786
  }
 
787
 
788
  .headline-item--no-url {
789
+ border-left-color: rgba(107, 138, 176, 0.3);
790
+ opacity: 0.72;
791
+ }
792
+
793
+ .headline-item--geo {
794
+ border-left-color: var(--status-amber, #ba7517);
795
+ }
796
+
797
+ .headline-item--macro {
798
+ border-left-color: var(--status-amber, #ba7517);
799
+ opacity: 0.92;
800
+ }
801
+
802
+ .headline-tag {
803
+ display: inline-block;
804
+ font-size: 9px;
805
+ line-height: 1;
806
+ padding: 2px 5px;
807
+ border-radius: 3px;
808
+ background: rgba(186, 117, 23, 0.18);
809
+ color: #ba7517;
810
+ white-space: nowrap;
811
+ margin-left: auto;
812
+ flex-shrink: 0;
813
+ align-self: center;
814
+ }
815
+
816
+ .headlines-scroll-hint {
817
+ font-size: 10px;
818
+ color: var(--text-muted);
819
+ text-align: center;
820
+ padding-top: 6px;
821
+ border-top: 1px solid rgba(209,212,220,0.08);
822
+ margin-top: 4px;
823
+ opacity: 0;
824
+ transition: opacity 0.2s;
825
+ pointer-events: none;
826
+ }
827
+
828
+ .headlines-scroll-hint.visible {
829
+ opacity: 1;
830
  }
 
831
 
832
  .headline-item--empty {
833
  font-style: italic;
834
  color: var(--text-muted);
835
  border-left-color: transparent;
836
+ opacity: 0.7;
 
 
837
  }
838
 
 
 
 
 
839
  .headline-title {
840
+ font-size: 0.925rem;
841
  font-weight: 500;
842
+ line-height: 1.45;
843
  color: var(--text-main);
844
  text-decoration: none;
845
  display: block;
846
  }
847
+
848
  a.headline-title:hover {
849
  color: var(--accent-blue);
 
 
850
  }
851
 
 
852
  .headline-meta {
853
  display: flex;
854
  align-items: center;
855
  gap: 6px;
856
  flex-wrap: wrap;
857
  }
858
+
859
  .headline-date {
860
+ font-size: 0.78rem;
861
  color: var(--text-muted);
862
  flex-shrink: 0;
863
  }
864
+
865
  .headline-dot {
866
+ width: 3px;
867
+ height: 3px;
868
  border-radius: 50%;
869
  background: var(--text-muted);
870
+ opacity: 0.5;
871
  flex-shrink: 0;
872
  }
873
+
874
  .headline-source {
875
+ font-size: 0.78rem;
876
  color: var(--accent-blue);
877
+ opacity: 0.8;
878
  overflow: hidden;
879
  text-overflow: ellipsis;
880
  white-space: nowrap;
881
  }
882
+
883
  .headline-source--none {
884
  color: var(--text-muted);
885
  font-style: italic;
886
  }
887
 
888
+ .headlines-list::-webkit-scrollbar {
889
+ width: 6px;
 
 
 
 
 
 
 
 
 
 
 
 
890
  }
891
 
892
+ .headlines-list::-webkit-scrollbar-track {
893
+ background: var(--scrollbar-track);
894
+ border-radius: 999px;
895
+ }
896
+
897
+ .headlines-list::-webkit-scrollbar-thumb {
898
+ background: var(--scrollbar-thumb);
899
+ border-radius: 999px;
 
 
900
  }
 
901
 
902
+ .headlines-list::-webkit-scrollbar-thumb:hover {
903
+ background: var(--scrollbar-thumb-hover);
904
+ }
905
 
906
  footer {
907
  text-align: center;
 
1121
  border-color: var(--accent-blue-hover);
1122
  }
1123
 
1124
+ /* --- ENHANCED MOBILE RESPONSIVE DESIGN --- */
1125
  @media (max-width: 768px) {
1126
+ /* Navbar adjustments */
1127
  .top-nav {
1128
  padding: 0.7rem 0.8rem 0.4rem;
1129
  }
 
1130
  .top-nav-inner {
1131
  flex-direction: column;
1132
  align-items: stretch;
1133
  gap: 0.75rem;
1134
  }
 
1135
  .nav-actions {
1136
+ justify-content: space-between; /* Spread evenly on mobile */
1137
  flex-wrap: wrap;
1138
  }
1139
 
1140
+ /* Typography & Header scaling */
1141
+ header {
1142
+ padding: 1.5rem 1rem; /* Reduce vertical padding */
1143
+ }
1144
+ .logo {
1145
+ font-size: 2.5rem; /* Scale down from 3.5rem */
1146
  }
 
1147
  .dashboard-header {
1148
  flex-direction: column;
1149
  align-items: flex-start;
1150
  gap: 0.5rem;
1151
+ margin-bottom: 1.5rem;
1152
  }
1153
+ .dashboard-header h2 {
1154
+ font-size: 2rem; /* Scale down ticker text */
 
 
1155
  }
1156
 
1157
+ /* Search Box */
1158
+ .search-section {
1159
+ padding: 1.5rem 1rem;
1160
+ }
1161
+ .search-box {
1162
+ flex-direction: column;
1163
+ }
1164
+ .search-box button {
1165
+ width: 100%; /* Full width tap-target for thumbs */
1166
  }
1167
 
1168
+ /* Layout Grid */
1169
  .dashboard-3col {
1170
  grid-template-columns: 1fr;
1171
  grid-template-rows: none;
1172
  height: auto;
1173
  }
1174
 
1175
+ /* Dashboard columns reset */
1176
+ .dash-col,
1177
+ .dash-col--left,
1178
+ .dash-col--mid,
1179
+ .dash-col--right {
1180
+ display: block;
1181
  }
1182
+
1183
+ .engine-light-card,
1184
+ .sentiment-card,
1185
+ .price-card,
1186
+ .llm-card {
1187
+ grid-column: auto;
1188
+ grid-row: auto;
1189
+ }
1190
+
1191
+ .headlines-card {
1192
+ grid-column: auto;
1193
+ grid-row: auto;
1194
+ height: auto;
1195
+ }
1196
+
1197
+ .dashboard-3col .card,
1198
+ .dashboard-3col .glass-panel {
1199
+ height: auto;
1200
+ }
1201
+
1202
+ .headlines-list {
1203
+ max-height: 360px;
1204
+ flex: none;
1205
+ }
1206
+ .search-box button {
1207
+ padding: 0.8rem 1.5rem;
1208
+ }
1209
+ }