Index: src/assets/css/style.css
===================================================================
--- src/assets/css/style.css	(revision 2a58d761b4f5175f328218b73895dfbc2210389f)
+++ src/assets/css/style.css	(revision b31c119f550d2891a319fb2dc32de54376ff864e)
@@ -2402,4 +2402,10 @@
 .grid-tile-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; transition: opacity .4s ease; }
 .grid-tile-img.is-loading { opacity: 0; }
+/* Cover videos are decorative, not players: let clicks + right-click pass through to the
+   tile link so you get the normal link menu (not the browser's <video> menu/controls).
+   Autoplay is independent of pointer-events, so the video still plays. */
+video.grid-tile-img,
+.post-list-cover video,
+.post-cover video { pointer-events: none; }
 .grid-tile:hover { transform: scale(0.98); }
 .grid-tile-overlay {
Index: src/views/shell.ejs
===================================================================
--- src/views/shell.ejs	(revision 2a58d761b4f5175f328218b73895dfbc2210389f)
+++ src/views/shell.ejs	(revision b31c119f550d2891a319fb2dc32de54376ff864e)
@@ -216,5 +216,5 @@
 
 <!-- v9 stylesheet (full palette system) -->
-<link rel="stylesheet" href="/assets/css/style.css?v=66">
+<link rel="stylesheet" href="/assets/css/style.css?v=67">
 <script>
 /* iOS safe-area, built by hand. env(safe-area-inset-top) resolves to 0 on this iOS in
