diff --git a/pyproject.toml b/pyproject.toml
index 77c5b8d..ffb56d9 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "central"
-version = "0.14.7"
+version = "0.14.8"
requires-python = ">=3.12,<3.13"
description = "Data hub spine — adapters, bus, archive."
readme = "README.md"
diff --git a/src/central/gui/static/css/central.css b/src/central/gui/static/css/central.css
index 735ec39..2387a5c 100644
--- a/src/central/gui/static/css/central.css
+++ b/src/central/gui/static/css/central.css
@@ -194,6 +194,15 @@ button:disabled, .btn:disabled { opacity: 0.5; cursor: not-allowed; }
.cols { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
+/* ─── consumers page: full-width stacked stream blocks ──────────────────── */
+/* Unlike .cols (multi-column grid used by streams/dashboard), these stream
+ blocks need the full page width because each table has 7 columns. */
+.consumer-streams { display: flex; flex-direction: column; gap: 16px; }
+.consumer-streams > article { margin-bottom: 0; width: 100%; }
+/* Safety net: scroll horizontally on very narrow viewports instead of
+ overflowing the card border. Default desktop view shows the full table. */
+.consumer-table-wrap { overflow-x: auto; }
+
/* cards (formerly the framework's
({{ stream.error }})
{% elif stream.consumers %} +(no consumers)
{% endif %}