Index: src/assets/css/style.css
===================================================================
--- src/assets/css/style.css	(revision 86fa2d2795c9ba37e01a9f0c0315a1ca031b645d)
+++ src/assets/css/style.css	(revision 38120c7ecacf8fe6e6b22191e9bbcad5017b94c4)
@@ -1937,7 +1937,8 @@
         color-mix(in srgb, var(--accent, #888) 6%, var(--paper-2, var(--paper))) 100%);
 }
-.post-list-cover img {
+.post-list-cover img, .post-list-cover video {
     width: 100%; height: 100%;
-    object-fit: cover;
+    object-fit: cover;                 /* fill the square, keep aspect, crop the overflow, centered */
+    object-position: center;
     display: block;
     background-color: #fff;            /* transparent logos sit on white once loaded */
@@ -2401,7 +2402,4 @@
 .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; }
-/* A video cover keeps its own aspect ratio inside the square tile (centered, letterboxed) instead
-   of zoom-cropping a wide video to fill. Images stay object-fit:cover. */
-video.grid-tile-img { object-fit: contain; background: var(--paper-2, #0a0e1a); }
 .grid-tile:hover { transform: scale(0.98); }
 .grid-tile-overlay {
