diff --git a/static/score.js b/static/score.js
index 3b7a3a7..8ad3d3a 100644
--- a/static/score.js
+++ b/static/score.js
@@ -122,19 +122,17 @@ function render(data) {
const cards = METRIC_ORDER.map((k) => metricCard(annual.metrics[k])).join("");
const wbNote = wetbulbNote(annual.metrics.wetbulb, baseYrs);
- // ---- by-season rows ----
+ // ---- by-season table (seasons × metrics, columns aligned) ----
+ const seasonHead = `
| Overall | ${METRIC_ORDER.map((k) =>
+ `${shortLabel(k)} | `).join("")}
`;
const seasonRows = SEASON_ORDER.map((sk) => {
const sl = s.slices[sk];
- const chips = METRIC_ORDER.map((k) => seasonChip(sl.metrics[k])).join("");
const oc = sl.overall;
- const overallChip = oc
- ? `${oc.score}`
- : `—`;
- return `
- ${SEASON_NAMES[sk]}
- ${overallChip}
- ${chips}
-
`;
+ const overallCell = oc
+ ? `${oc.score} | `
+ : `— | `;
+ const cells = METRIC_ORDER.map((k) => seasonCell(sl.metrics[k])).join("");
+ return `| ${SEASON_NAMES[sk]} | ${overallCell}${cells}
`;
}).join("");
scoreBody.innerHTML = `
@@ -142,8 +140,8 @@ function render(data) {
${wbNote}
By season
- ${METRIC_ORDER.map((k) => shortLabel(k)).join(" · ")}
- ${seasonRows}
+
+ ${seasonHead}${seasonRows}
@@ -192,9 +190,9 @@ function scoreDirection(m) {
return `~${pts} pts ${esc(m.direction)}`;
}
-function seasonChip(m) {
- if (!m || m.score == null) return `—`;
- return `${m.score}`;
+function seasonCell(m) {
+ if (!m || m.score == null) return `— | `;
+ return `${m.score} | `;
}
const shortLabel = (k) => ({ precip: "Precip", tmax: "High", tmin: "Low", feels: "Feels",
diff --git a/static/style.css b/static/style.css
index 4700ffe..0d77568 100644
--- a/static/style.css
+++ b/static/style.css
@@ -1730,7 +1730,6 @@ td.rec-date { color: var(--muted); font-size: 13px; }
.score-note { font-size: 12px; color: var(--muted); margin: 12px 0 0; line-height: 1.4; }
.score-section { margin: 20px 0; }
-.score-legend { font-size: 12px; color: var(--muted); margin: -6px 0 10px; }
/* Wet-bulb explainer + heat-stress-day share. */
.score-callout {
@@ -1738,19 +1737,8 @@ td.rec-date { color: var(--muted); font-size: 13px; }
padding: 12px 14px; margin: 14px 0 4px; font-size: 13px; line-height: 1.5; color: var(--text);
}
-/* One row per season: name · overall · a chip per metric. */
-.season-scores {
- display: grid; grid-template-columns: 64px 40px 1fr; align-items: center;
- gap: 10px; padding: 7px 0; border-top: 1px solid var(--border);
-}
-.season-scores-name { font-size: 13px; font-weight: 600; color: var(--text); }
-.season-scores-chips { display: flex; flex-wrap: wrap; gap: 5px; }
-.score-chip {
- display: inline-flex; align-items: center; justify-content: center;
- min-width: 30px; padding: 3px 6px; border-radius: 7px;
- font-size: 12px; font-weight: 700; color: var(--text);
-}
-.season-scores-overall .score-chip { min-width: 34px; font-weight: 800; }
+/* By-season scores: seasons as rows, one aligned column per metric. */
+.season-table th:first-child, .season-table td:first-child { text-align: left; }
/* Summary reveal — pill button + caret, mirrors the season-expand pattern. */
.summary-toggle {
@@ -1787,7 +1775,6 @@ td.rec-date { color: var(--muted); font-size: 13px; }
@media (max-width: 640px) {
.score-num { font-size: 40px; }
.score-hero { padding: 14px 15px; }
- .season-scores { grid-template-columns: 56px 36px 1fr; gap: 8px; }
}
/* Monthly temperature-range strip: one gradient bar per month, low→high on a shared