diff --git a/public/admin/assets/css/layout.css b/public/admin/assets/css/layout.css index 13b07d8..a878bcc 100644 --- a/public/admin/assets/css/layout.css +++ b/public/admin/assets/css/layout.css @@ -95,27 +95,28 @@ header.app-header h1 span { /* ── stats bar ── */ +/* each .stat owns its own horizontal padding so the vertical separator + renders edge-to-edge; no margin gap between cells. */ .stats-bar { display: flex; - gap: 0; background: var(--bg-card); border-bottom: 1px solid var(--border); - padding: 0 24px; flex-wrap: wrap; } .stat { display: flex; flex-direction: column; - gap: 3px; - padding: 14px 28px 14px 0; - margin-right: 28px; + justify-content: center; + gap: 4px; + padding: 16px 32px; border-right: 1px solid var(--border); - padding-right: 28px; + flex: 0 0 auto; } -.stat:last-child { border-right: none; } +.stat:first-child { padding-left: 24px; } +.stat:last-child { border-right: none; } .stat .label { color: var(--muted-dark); diff --git a/public/admin/pages/articles.html b/public/admin/pages/articles.html index 3b33f15..16e9230 100644 --- a/public/admin/pages/articles.html +++ b/public/admin/pages/articles.html @@ -44,7 +44,7 @@ - +
diff --git a/public/admin/pages/events.html b/public/admin/pages/events.html index d8e7a6f..ef32aab 100644 --- a/public/admin/pages/events.html +++ b/public/admin/pages/events.html @@ -43,7 +43,7 @@ - +
diff --git a/public/admin/pages/intelligence/knowledge.html b/public/admin/pages/intelligence/knowledge.html index 1a9aaeb..8fb0373 100644 --- a/public/admin/pages/intelligence/knowledge.html +++ b/public/admin/pages/intelligence/knowledge.html @@ -56,7 +56,7 @@ - +
diff --git a/public/admin/pages/intelligence/predictions.html b/public/admin/pages/intelligence/predictions.html index 21dfa20..7c9be4e 100644 --- a/public/admin/pages/intelligence/predictions.html +++ b/public/admin/pages/intelligence/predictions.html @@ -48,7 +48,7 @@ - +
diff --git a/src/routes/admin.js b/src/routes/admin.js index d1b9cee..6da8032 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -78,11 +78,14 @@ async function adminRoutes(fastify) { }); // static assets (css + js) under /admin/assets/* + // use must-revalidate so the browser always checks for a newer copy; + // prevents the admin getting stuck on old js after a deploy. fastify.register(fastifyStatic, { root: assetsDir, prefix: '/admin/assets/', decorateReply: false, - cacheControl: false, + cacheControl: true, + maxAge: 0, }); // top-level entry — redirect to articles