diff --git a/public/proto/home-v5.html b/public/proto/home-v5.html
index 269252df8..231671f5e 100644
--- a/public/proto/home-v5.html
+++ b/public/proto/home-v5.html
@@ -164,6 +164,14 @@
/* ─── Main (single column) ─── */
.m { max-width: 720px; margin: 0 auto; padding: 24px calc(20px + var(--safe-right)) calc(80px + var(--safe-bot)) calc(20px + var(--safe-left)); }
@media (min-width: 900px) { .m { max-width: 760px; } }
+/* Cohesive first-paint entrance — the event room "settles" up instead of popping
+ into final position. TRANSFORM-ONLY (no opacity) so content is NEVER hidden:
+ if the animation is throttled (background tab) or unsupported, the content is
+ fully visible, merely offset a few px. The feed's per-row feedRowIn plays on
+ top for a composed, layered reveal. Landing mode has its own entrance. */
+@keyframes pageEnter { from { transform: translateY(10px); } to { transform: none; } }
+body:not([data-page-mode="landing"]) main.m { animation: pageEnter var(--motion-slow) var(--ease-out) both; }
+@media (prefers-reduced-motion: reduce) { main.m { animation: none; } }
/* ─── Hero (small, scannable) ─── */
.hero { margin-bottom: 20px; }