Index: src/routes/download.js
===================================================================
--- src/routes/download.js	(revision 91094a44a78eaba7694534a039a5d0843f451e10)
+++ src/routes/download.js	(revision d68bcf1c74cf63523a4b33e162bb4046119e2cc3)
@@ -20,6 +20,20 @@
 import { premiumUnlocked } from '../services/PatreonService.js';
 import { addSubscriber } from '../services/SubscriberService.js';
+import { postNeighbors } from './posts.js';
 
 const router = express.Router();
+
+// Als er een echte (gepinde) post met slug 'downloads' bestaat, hangt de
+// downloads-lijst feitelijk aan die post. Dan tonen we óók de Newer/Older-postnav,
+// zodat de bezoeker net als bij een post verder kan bladeren.
+function downloadsPostNav(req, res) {
+  const site = res.locals.site;
+  if (!site) return {};
+  const post = db.prepare(
+    "SELECT id, slug, pinned FROM posts WHERE site_id = ? AND slug = 'downloads' AND status = 'published'"
+  ).get(site.id);
+  if (!post) return {};
+  try { return postNeighbors(site, post, res.locals.tenancy === 'hub'); } catch (e) { return {}; }
+}
 const __dirname = path.dirname(fileURLToPath(import.meta.url));
 const AUDIO_DIR = path.resolve(process.env.AUDIO_PATH || path.join(__dirname, '..', '..', 'storage', 'audio'));
@@ -50,8 +64,11 @@
       WHERE site_id = ? AND downloadable = 1 ORDER BY position ASC, created_at ASC`
   ).all(site.id);
+  const nav = downloadsPostNav(req, res);
   renderPage(req, res, 'pages/downloads', {
     pageTitle: 'Downloads — ' + (site.title || ''),
     bodyClass: 'on-downloads',
     dlTracks: tracks,
+    newerPost: nav.newerPost || null,
+    olderPost: nav.olderPost || null,
   });
 });
