{# noir override — popular-posts; preserves posts provider loop, heading, showRank/showThumbnail, forloop.Counter, post.featured_image_url/.url/.title/.published_at. {% img %} kept verbatim. #}
<section data-block-override="noir:popular-posts" class="bg-background text-foreground{% if class %} {{ class }}{% endif %}">
{% if heading %}<h2 class="noir-label mb-5" style="color:hsl(var(--primary));">{{ heading }}</h2>{% endif %}
<ol class="space-y-4">
{% for post in posts %}
<li class="noir-rule flex items-start gap-3 pt-4">
{% if showRank %}<span class="noir-heading mt-0.5 text-lg tabular-nums" style="color:hsl(var(--primary));">{{ forloop.Counter }}</span>{% endif %}
{% if showThumbnail and post.featured_image_url %}<a href="{{ post.url }}" class="h-12 w-12 flex-shrink-0 overflow-hidden bg-muted grayscale">{% img post.featured_image_url alt=post.title class="h-full w-full object-cover" %}</a>{% endif %}
<div class="min-w-0">
<h3 class="noir-heading text-sm leading-snug" style="color:hsl(var(--foreground));"><a href="{{ post.url }}" class="transition-colors hover:text-primary">{{ post.title }}</a></h3>
{% if post.published_at %}<p class="noir-label mt-1" style="color:hsl(var(--muted-foreground));">{{ post.published_at|date:"M j, Y" }}</p>{% endif %}
</div>
</li>
{% endfor %}
</ol>
</section>
