web: single-screen redesign with the literature levers

The dashboard is now a single-screen app shell:
- app-bar page tabs (Model + placeholder Explainer/Findings/Guides) via
  lightweight hash routing (usePage); the wordmark links home
- a 2x2 graph grid that fills the viewport, rows sized to half its height so
  the four cells always show; a + Add tile is the 4th cell, a 5th scenario
  scrolls (with a reserved scrollbar gutter)
- a left settings sidebar exposing the forwarding composite as grouped levers
  (novelty, harm awareness, program strength, plus baseline forwarding and
  education budget); the card is a CSS container so the sliders stack to width
- a full-width dock (legend, full-width player, Export / Reach over time /
  Data table); the reach chart and data table open as overlays
- the illustrative note moved under the hero

ScenarioToolbar is removed (the + tile and the dock Export replace it).
Deviates from the original ui-spec, which is amended with a pointer.
This commit is contained in:
Justin Visser 2026-06-18 22:01:30 +02:00
parent 430d59a2e8
commit 4ac7ba1624
15 changed files with 832 additions and 280 deletions

View file

@ -348,6 +348,33 @@ const dimmed = computed(() => store.state.runState === 'running' && result.value
}
}
/* Desktop: the panel is a flex column so the network area grows to fill the
2x2 grid cell; the graph scales with it (NetworkView height 100%). Mobile
keeps the natural width-based scaling (a flex-fill with no definite cell
height would collapse the SVG). */
@media (min-width: 761px) {
.panel {
display: flex;
flex-direction: column;
}
.netbtn {
flex: 1;
min-height: 0;
}
.skeleton {
flex: 1;
display: flex;
flex-direction: column;
}
.net-bone {
flex: 1;
aspect-ratio: auto;
}
}
@media (max-width: 760px) {
/* 44 px touch target for the kebab (spec section 8). */
.kebab {