Spaces:
Running
Running
Commit ·
3773031
1
Parent(s): 7cbea93
fix: align dashboard card grid to 3-column layout with spanning headlines card
Browse files- static/style.css +46 -70
- templates/index.html +32 -21
static/style.css
CHANGED
|
@@ -450,44 +450,52 @@ header {
|
|
| 450 |
|
| 451 |
.dashboard-3col {
|
| 452 |
display: grid;
|
| 453 |
-
grid-template-columns: 1fr 1fr
|
| 454 |
-
|
|
|
|
| 455 |
align-items: stretch;
|
| 456 |
margin-bottom: 2rem;
|
| 457 |
}
|
| 458 |
|
| 459 |
-
|
|
|
|
|
|
|
|
|
|
| 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 |
-
|
| 468 |
-
|
| 469 |
-
|
| 470 |
-
min-height: 0;
|
| 471 |
}
|
| 472 |
|
| 473 |
-
|
| 474 |
-
|
| 475 |
-
|
|
|
|
| 476 |
display: flex;
|
| 477 |
flex-direction: column;
|
|
|
|
| 478 |
}
|
| 479 |
|
| 480 |
-
|
| 481 |
-
|
| 482 |
-
|
| 483 |
display: flex;
|
| 484 |
flex-direction: column;
|
| 485 |
-
align-items: center;
|
| 486 |
-
justify-content: center;
|
| 487 |
}
|
| 488 |
|
| 489 |
-
|
| 490 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 491 |
flex: 1;
|
| 492 |
display: flex;
|
| 493 |
flex-direction: column;
|
|
@@ -495,51 +503,32 @@ header {
|
|
| 495 |
justify-content: center;
|
| 496 |
}
|
| 497 |
|
| 498 |
-
/*
|
| 499 |
-
.
|
| 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 |
-
|
|
|
|
| 514 |
}
|
| 515 |
|
| 516 |
-
|
|
|
|
| 517 |
flex: 1;
|
| 518 |
min-height: 0;
|
| 519 |
overflow-y: auto;
|
| 520 |
}
|
| 521 |
|
| 522 |
-
/*
|
| 523 |
-
.
|
| 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 |
-
.
|
| 541 |
-
|
|
|
|
| 542 |
padding-right: 0.25rem;
|
|
|
|
| 543 |
}
|
| 544 |
|
| 545 |
/* Predicted price: RED for uptrend, GREEN for downtrend (contrarian risk signal) */
|
|
@@ -1165,38 +1154,25 @@ footer p {
|
|
| 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 |
-
|
| 1193 |
-
|
| 1194 |
-
height: auto;
|
| 1195 |
-
}
|
| 1196 |
-
|
| 1197 |
-
.dashboard-3col .card,
|
| 1198 |
-
.dashboard-3col .glass-panel {
|
| 1199 |
-
height: auto;
|
| 1200 |
}
|
| 1201 |
|
| 1202 |
.headlines-list {
|
|
|
|
| 450 |
|
| 451 |
.dashboard-3col {
|
| 452 |
display: grid;
|
| 453 |
+
grid-template-columns: 1fr 1fr 1fr;
|
| 454 |
+
grid-template-rows: auto auto;
|
| 455 |
+
gap: 1.25rem;
|
| 456 |
align-items: stretch;
|
| 457 |
margin-bottom: 2rem;
|
| 458 |
}
|
| 459 |
|
| 460 |
+
/* ── Explicit grid placement for each dashboard card ── */
|
| 461 |
+
.engine-light-card {
|
| 462 |
+
grid-column: 1;
|
| 463 |
+
grid-row: 1;
|
| 464 |
display: flex;
|
| 465 |
flex-direction: column;
|
|
|
|
|
|
|
|
|
|
| 466 |
}
|
| 467 |
|
| 468 |
+
.price-card {
|
| 469 |
+
grid-column: 2;
|
| 470 |
+
grid-row: 1;
|
|
|
|
| 471 |
}
|
| 472 |
|
| 473 |
+
/* Headlines spans both rows in the third column */
|
| 474 |
+
.headlines-card {
|
| 475 |
+
grid-column: 3;
|
| 476 |
+
grid-row: 1 / span 2;
|
| 477 |
display: flex;
|
| 478 |
flex-direction: column;
|
| 479 |
+
overflow: hidden;
|
| 480 |
}
|
| 481 |
|
| 482 |
+
.sentiment-card {
|
| 483 |
+
grid-column: 1;
|
| 484 |
+
grid-row: 2;
|
| 485 |
display: flex;
|
| 486 |
flex-direction: column;
|
|
|
|
|
|
|
| 487 |
}
|
| 488 |
|
| 489 |
+
.llm-card {
|
| 490 |
+
grid-column: 2;
|
| 491 |
+
grid-row: 2;
|
| 492 |
+
display: flex;
|
| 493 |
+
flex-direction: column;
|
| 494 |
+
overflow: hidden;
|
| 495 |
+
}
|
| 496 |
+
|
| 497 |
+
/* Engine indicator centred vertically inside Risk card */
|
| 498 |
+
.engine-light-card .engine-indicator {
|
| 499 |
flex: 1;
|
| 500 |
display: flex;
|
| 501 |
flex-direction: column;
|
|
|
|
| 503 |
justify-content: center;
|
| 504 |
}
|
| 505 |
|
| 506 |
+
/* Sentiment meter centred vertically inside Sentiment card */
|
| 507 |
+
.sentiment-card .sentiment-meter {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 508 |
flex: 1;
|
|
|
|
| 509 |
display: flex;
|
| 510 |
flex-direction: column;
|
| 511 |
+
align-items: center;
|
| 512 |
+
justify-content: center;
|
| 513 |
}
|
| 514 |
|
| 515 |
+
/* LLM Insights: scrollable content area */
|
| 516 |
+
.llm-card .llm-info {
|
| 517 |
flex: 1;
|
| 518 |
min-height: 0;
|
| 519 |
overflow-y: auto;
|
| 520 |
}
|
| 521 |
|
| 522 |
+
/* Headlines: fixed title, scrollable list */
|
| 523 |
+
.headlines-card h3 {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 524 |
flex-shrink: 0;
|
| 525 |
}
|
| 526 |
|
| 527 |
+
.headlines-card .headlines-list {
|
| 528 |
+
flex: 1;
|
| 529 |
+
overflow-y: auto;
|
| 530 |
padding-right: 0.25rem;
|
| 531 |
+
max-height: 460px;
|
| 532 |
}
|
| 533 |
|
| 534 |
/* Predicted price: RED for uptrend, GREEN for downtrend (contrarian risk signal) */
|
|
|
|
| 1154 |
width: 100%; /* Full width tap-target for thumbs */
|
| 1155 |
}
|
| 1156 |
|
| 1157 |
+
/* Layout Grid — single column on mobile */
|
| 1158 |
.dashboard-3col {
|
| 1159 |
grid-template-columns: 1fr;
|
| 1160 |
grid-template-rows: none;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1161 |
}
|
| 1162 |
|
| 1163 |
+
/* Reset explicit placements so cards stack naturally */
|
| 1164 |
.engine-light-card,
|
|
|
|
| 1165 |
.price-card,
|
| 1166 |
+
.headlines-card,
|
| 1167 |
+
.sentiment-card,
|
| 1168 |
.llm-card {
|
| 1169 |
grid-column: auto;
|
| 1170 |
grid-row: auto;
|
| 1171 |
}
|
| 1172 |
|
| 1173 |
.headlines-card {
|
| 1174 |
+
max-height: none;
|
| 1175 |
+
overflow: visible;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1176 |
}
|
| 1177 |
|
| 1178 |
.headlines-list {
|
templates/index.html
CHANGED
|
@@ -113,7 +113,7 @@
|
|
| 113 |
|
| 114 |
<div class="cards-grid dashboard-3col">
|
| 115 |
|
| 116 |
-
<!--
|
| 117 |
<div class="card glass-panel engine-light-card">
|
| 118 |
<h3>Risk Indicator</h3>
|
| 119 |
<div class="engine-indicator" id="engine-light">
|
|
@@ -122,36 +122,47 @@
|
|
| 122 |
</div>
|
| 123 |
</div>
|
| 124 |
|
| 125 |
-
<!--
|
| 126 |
-
<div class="card glass-panel sentiment-card">
|
| 127 |
-
<h3>Sentiment Analysis</h3>
|
| 128 |
-
<div class="sentiment-meter">
|
| 129 |
-
<div class="score-display"><span id="sentiment-score">0.00</span></div>
|
| 130 |
-
<p class="sentiment-desc" id="sentiment-desc">Neutral Sentiment</p>
|
| 131 |
-
</div>
|
| 132 |
-
</div>
|
| 133 |
-
|
| 134 |
-
<!-- col 2, row 1 -->
|
| 135 |
<div class="card glass-panel price-card">
|
| 136 |
<h3>Market Prediction</h3>
|
| 137 |
<div class="price-info">
|
| 138 |
-
<div class="price-row">
|
| 139 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
</div>
|
| 141 |
<div class="trend-badge" id="trend-label">UNKNOWN TREND</div>
|
| 142 |
</div>
|
| 143 |
|
| 144 |
-
<!--
|
| 145 |
-
<div class="card glass-panel llm-card">
|
| 146 |
-
<h3>LLM Insights</h3>
|
| 147 |
-
<div id="llm-insights-container"><p class="text-muted">No LLM insights available.</p></div>
|
| 148 |
-
</div>
|
| 149 |
-
|
| 150 |
-
<!-- col 3, row 1–2 -->
|
| 151 |
<div class="card glass-panel headlines-card">
|
| 152 |
<h3>Recent Headlines Analyzed</h3>
|
| 153 |
<ul id="headlines-list" class="headlines-list"></ul>
|
| 154 |
-
<div class="headlines-scroll-hint"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 155 |
</div>
|
| 156 |
|
| 157 |
</div>
|
|
|
|
| 113 |
|
| 114 |
<div class="cards-grid dashboard-3col">
|
| 115 |
|
| 116 |
+
<!-- Row 1, Col 1: Risk Indicator -->
|
| 117 |
<div class="card glass-panel engine-light-card">
|
| 118 |
<h3>Risk Indicator</h3>
|
| 119 |
<div class="engine-indicator" id="engine-light">
|
|
|
|
| 122 |
</div>
|
| 123 |
</div>
|
| 124 |
|
| 125 |
+
<!-- Row 1, Col 2: Market Prediction -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 126 |
<div class="card glass-panel price-card">
|
| 127 |
<h3>Market Prediction</h3>
|
| 128 |
<div class="price-info">
|
| 129 |
+
<div class="price-row">
|
| 130 |
+
<span class="label">Current</span>
|
| 131 |
+
<span class="value" id="current-price">$0.00</span>
|
| 132 |
+
</div>
|
| 133 |
+
<div class="price-row highlight">
|
| 134 |
+
<span class="label">Predicted (Next Session)</span>
|
| 135 |
+
<span class="value" id="predicted-price">$0.00</span>
|
| 136 |
+
</div>
|
| 137 |
</div>
|
| 138 |
<div class="trend-badge" id="trend-label">UNKNOWN TREND</div>
|
| 139 |
</div>
|
| 140 |
|
| 141 |
+
<!-- Col 3, spans rows 1–2: Recent Headlines -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 142 |
<div class="card glass-panel headlines-card">
|
| 143 |
<h3>Recent Headlines Analyzed</h3>
|
| 144 |
<ul id="headlines-list" class="headlines-list"></ul>
|
| 145 |
+
<div class="headlines-scroll-hint">scroll for more</div>
|
| 146 |
+
</div>
|
| 147 |
+
|
| 148 |
+
<!-- Row 2, Col 1: Sentiment Analysis -->
|
| 149 |
+
<div class="card glass-panel sentiment-card">
|
| 150 |
+
<h3>Sentiment Analysis</h3>
|
| 151 |
+
<div class="sentiment-meter">
|
| 152 |
+
<div class="score-display">
|
| 153 |
+
<span id="sentiment-score">0.00</span>
|
| 154 |
+
</div>
|
| 155 |
+
<p class="sentiment-desc" id="sentiment-desc">Neutral Sentiment</p>
|
| 156 |
+
</div>
|
| 157 |
+
</div>
|
| 158 |
+
|
| 159 |
+
<!-- Row 2, Col 2: LLM Insights -->
|
| 160 |
+
<div class="card glass-panel llm-card">
|
| 161 |
+
<h3>LLM Insights</h3>
|
| 162 |
+
<div class="llm-info" id="llm-insights-container"
|
| 163 |
+
style="display:flex;flex-direction:column;gap:8px;margin-top:8px;">
|
| 164 |
+
<p class="text-muted">No LLM insights available.</p>
|
| 165 |
+
</div>
|
| 166 |
</div>
|
| 167 |
|
| 168 |
</div>
|