From 407e7bc378062490aa6ac4b06b4c33b99662855e Mon Sep 17 00:00:00 2001
From: Jonathan Hvid
Date: Tue, 12 May 2026 15:29:13 +0200
Subject: [PATCH] refactor(roadmap): move legend above the route + breathe room
before banner
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Legend swaps position with the route. Old order: header → route →
legend → banner. New order: header → legend → route → banner.
The legend now reads as a key the eye picks up before walking the
path, instead of an after-the-fact reveal of what the colours meant.
Spacing tuned to match the new rhythm:
header → legend: 28px (header.margin-bottom)
legend → route: 32px (legend.margin-bottom; was 28px top margin)
route → banner: 112px (banner.margin-top; was 64px)
The 112px before the dispatch banner gives the route room to land
visually before the editorial block at the foot starts. Mobile gets
72px instead of 112px since the page is more compressed there.
Co-Authored-By: Claude Opus 4.7 (1M context)
---
src/pages/roadmap.astro | 28 +++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/src/pages/roadmap.astro b/src/pages/roadmap.astro
index 17b57f8..ff463bb 100644
--- a/src/pages/roadmap.astro
+++ b/src/pages/roadmap.astro
@@ -23,9 +23,8 @@ const items = getAllRoadmapItems()
-
-
-
+
Shipping
In beta
@@ -33,9 +32,11 @@ const items = getAllRoadmapItems()
Considering
-
+
+
+
@@ -52,7 +53,7 @@ const items = getAllRoadmapItems()
.roadmap-header {
text-align: center;
max-width: 640px;
- margin: 0 auto 48px;
+ margin: 0 auto 28px; /* tightened — legend sits right under */
padding-top: 32px;
}
.roadmap-title {
@@ -72,12 +73,12 @@ const items = getAllRoadmapItems()
max-width: 520px;
}
- /* ── Legend ───────────────────────────────────────────────────── */
+ /* ── Legend (above the route, key-style) ─────────────────────── */
.roadmap-legend {
display: flex;
justify-content: center;
gap: 24px;
- margin-top: 28px;
+ margin: 0 auto 32px; /* legend → route */
flex-wrap: wrap;
}
.roadmap-legend span {
@@ -97,13 +98,14 @@ const items = getAllRoadmapItems()
flex-shrink: 0;
}
- /* ── Dispatch banner (now below the route) ───────────────────── */
- .roadmap-page :global(.rr-dispatch) { margin-top: 64px; }
+ /* ── Dispatch banner (foot of page, generous breathing room) ── */
+ .roadmap-page :global(.rr-dispatch) { margin-top: 112px; }
@media (max-width: 767px) {
.roadmap-page { padding: 0 24px 64px; }
- .roadmap-header { padding-top: 24px; margin-bottom: 32px; }
+ .roadmap-header { padding-top: 24px; margin-bottom: 20px; }
.roadmap-title { font-size: 36px; }
- .roadmap-page :global(.rr-dispatch) { margin-top: 48px; }
+ .roadmap-legend { margin-bottom: 24px; }
+ .roadmap-page :global(.rr-dispatch) { margin-top: 72px; }
}