diff --git a/cards/templates/cards/printable.html b/cards/templates/cards/printable.html
index bb27b54..9a33ef8 100644
--- a/cards/templates/cards/printable.html
+++ b/cards/templates/cards/printable.html
@@ -23,6 +23,15 @@
/* Ensure hero images scale inside print cards */
.print-card .hero-image{height:auto; min-height:40mm;}
.print-card img.card-hero-img{max-width:100%; height:auto; object-fit:contain}
+ /* Print fallback: show actual
![]()
fallbacks (added into fragments) during printing
+ because some browsers do not print CSS background-images by default. */
+ .print-card .print-hero-bg{display:none}
+ @media print{
+ .print-card .hero-image{background-image:none !important}
+ .print-card .print-hero-bg{display:block; position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0}
+ .print-card .toptrump-card{position:relative; z-index:1}
+ .print-card img.card-hero-img{position:relative; z-index:2}
+ }
/* Small caption */
.caption{font-size:12px; color:#333; margin-top:6px}
@media print{
diff --git a/cards/views.py b/cards/views.py
index 1876ff8..ab00de1 100644
--- a/cards/views.py
+++ b/cards/views.py
@@ -451,7 +451,11 @@ def print_preview(request):
for i in range(0, len(ordered), per_page):
pages.append(ordered[i:i+per_page])
- return render(request, 'cards/printable.html', {'pages': pages, 'design': design, 'scale': scale})
+ # Include the active background (if any) so fragments that fall back to
+ # a global `background` variable can render correctly in the printable view.
+ background = BackgroundImage.get_active() if BackgroundImage.objects.exists() else None
+
+ return render(request, 'cards/printable.html', {'pages': pages, 'design': design, 'scale': scale, 'background': background})
def _parse_pasted_input(text):