diff --git a/docs/weerscherm-spec.md b/docs/weerscherm-spec.md
index 6596e45..d781375 100644
--- a/docs/weerscherm-spec.md
+++ b/docs/weerscherm-spec.md
@@ -251,6 +251,11 @@ De iconen `sun`, `partly`, `rain` en `showers` staan in de mockup. Maak `cloud`,
- De temperatuur staat groot, met 1 decimaal ("16,4°"). Het label heeft een trend-aanduiding: `up` → "↗ stijgend", `down` → "↘ dalend", `stable` → "→ stabiel".
- Daaronder de gradiëntbalk van `--cold` naar `--warm`. De marker staat op `(temp − min) / (max − min)`, begrensd op 0–100%. Bij `max == min` staat hij op 50%.
- Onder de balk: "9,2° laagst om 06:10" en "19,8° hoogst om 13:05".
+ - Daaronder de luchtdruk: "Luchtdruk 1014 hPa ↗ stijgend" met een grafiek van de afgelopen 24 uur.
+ _Assen toegevoegd 2026-09-13: links de hoogste en laagste waarde van het venster in hele hPa, onder de
+ lijn vijf tijdlabels op 0/25/50/75/100% met "nu" rechts, plus drie lichte verticale hulplijnen. De losse
+ tekst "1009 – 1015 hPa in 24 u" in de kopregel is daarmee vervallen. Zie `axisMarks()` in
+ `public/format.js`._
- **Binnen (rechts):** 3 rijen met naam, temperatuur (1 decimaal) en "↓ min° ↑ max°". Een onbereikbare module toont "–" in `--muted`.
_Toegevoegd 2026-09-13: een module is tikbaar. Een tik zet die module bovenaan de lijst (de overige twee
behouden hun onderlinge volgorde) en vergroot alleen het temperatuurgetal van 50 naar 92px. Nogmaals tikken
diff --git a/public/app.js b/public/app.js
index c075186..41c6c84 100644
--- a/public/app.js
+++ b/public/app.js
@@ -2,7 +2,7 @@ import {
f1, fInt, fmm, markerPos, barHeights, wmoIcon, trendLabel,
formatDate, formatTime, dayAbbr, monthName, isOlderThan, msUntil,
co2Level, fPct, fHpa, seriesRange, sparklinePath,
- windArrowDeg, fKmh, formatHour, formatFullDate, pinRoom,
+ windArrowDeg, fKmh, formatHour, formatFullDate, pinRoom, axisMarks,
} from './format.js';
import { icon, windArrow } from './icons.js';
@@ -104,10 +104,21 @@ function renderRain(rain, now) {
function renderPressure(p) {
setText('press', fHpa(p.current));
setText('press-trend', trendLabel(p.trend));
+
const values = p.history.map((h) => h.hpa);
const range = seriesRange(values);
- setText('press-range', range ? `${Math.round(range.min)} – ${Math.round(range.max)} hPa in 24 u` : '');
+ setText('press-max', range ? String(Math.round(range.max)) : '–');
+ setText('press-min', range ? String(Math.round(range.min)) : '–');
$('press-path').setAttribute('d', sparklinePath(values, 560, 56));
+
+ // Tijdlabels op dezelfde posities als de punten waar ze bij horen; de laatste is "nu".
+ const marks = axisMarks(p.history.length);
+ $('press-hours').innerHTML = marks.map((m, i) => {
+ const last = i === marks.length - 1;
+ const label = last ? 'nu' : formatTime(p.history[m.index].at, state.tz);
+ const style = i === 0 ? 'left:0' : last ? 'right:0' : `left:${m.percent}%;transform:translateX(-50%)`;
+ return `${label}`;
+ }).join('');
}
function renderForecast(days) {
diff --git a/public/format.js b/public/format.js
index d2c1e11..be1673a 100644
--- a/public/format.js
+++ b/public/format.js
@@ -219,3 +219,13 @@ export function pinRoom(rooms, pinnedId) {
copy.unshift(pinned);
return copy;
}
+
+/**
+ * Posities voor labels langs een as. Geeft per fractie de bijbehorende index in een reeks van
+ * `length` punten, plus het percentage waarop dat label hoort te staan. Onder de 2 punten valt er
+ * niets zinnigs te labelen.
+ */
+export function axisMarks(length, fractions = [0, 0.25, 0.5, 0.75, 1]) {
+ if (length < 2) return [];
+ return fractions.map((f) => ({ index: Math.round(f * (length - 1)), percent: f * 100 }));
+}
diff --git a/public/index.html b/public/index.html
index abe5712..f6e98b7 100644
--- a/public/index.html
+++ b/public/index.html
@@ -36,11 +36,19 @@