Index: src/views/pages/news.ejs
===================================================================
--- src/views/pages/news.ejs	(revision d2b7247f5942df285d4b4ff6d5104c5e8df5772e)
+++ src/views/pages/news.ejs	(revision 907a0138f163e70412c6913f498da27fcb1bf1a1)
@@ -31,5 +31,7 @@
             var vids = media.filter(function(m){ return m && m.url && m.type && /^video\//.test(m.type); });
             var auds = media.filter(function(m){ return m && m.url && m.type && /^audio\//.test(m.type); });
+            var _nsfwVisual = !!p.nsfw && (imgs.length || vids.length || auds.length);
           %>
+          <% if (_nsfwVisual) { %><div class="nsfw-media"><% } %>
           <% if (imgs.length) { %>
             <div class="tl-media">
@@ -41,4 +43,5 @@
           <% vids.forEach(function(m){ %><video class="tl-media-video" src="<%= m.url %>" controls preload="metadata" playsinline></video><% }); %>
           <% auds.forEach(function(m){ %><audio class="tl-media-audio" src="<%= m.url %>" controls preload="none"></audio><% }); %>
+          <% if (_nsfwVisual) { %><div class="nsfw-veil"><span class="nsfw-veil-label">🔞 <%= p.cw || t('post.nsfw_warning') %></span><span class="nsfw-veil-btn"><%= t('post.nsfw_show') %></span></div></div><% } %>
 
           <% if (p.embedHtml) { %><div class="tl-embed"><%- p.embedHtml %></div><% } %>
