diff --git a/docs/demo/trips/no-photos-demo/dailies/2027-01-10-1000-first-light.entry/entry.md b/docs/demo/trips/no-photos-demo/dailies/2027-01-10-1000-first-light.entry/entry.md
deleted file mode 100644
index 6f91a16..0000000
--- a/docs/demo/trips/no-photos-demo/dailies/2027-01-10-1000-first-light.entry/entry.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: 'First Light on the Road'
-date: '2027-01-10 10:00'
-template: entry
-published: true
-hero_image: ''
-lat: 60.17
-lng: 24.94
-location_city: Helsinki
-location_country: Finland
-weather_temp_c: -6
-weather_desc: Clear
----
-
-The bus left before dawn and the city was still under snow. I wrote most of
-this by the window with a cold coffee, watching the harbour lights slide past.
-No photographs today — the light was flat and grey and would not have kept
-anyway. Some mornings the notebook is the only camera worth carrying.
diff --git a/docs/demo/trips/no-photos-demo/dailies/dailies.md b/docs/demo/trips/no-photos-demo/dailies/dailies.md
deleted file mode 100644
index 8c68fe3..0000000
--- a/docs/demo/trips/no-photos-demo/dailies/dailies.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Journal
-template: default
-routable: false
-visible: false
-content:
- items: '@self.children'
- order:
- by: date
- dir: desc
- filter:
- published: true
----
diff --git a/docs/demo/trips/no-photos-demo/stories.md b/docs/demo/trips/no-photos-demo/stories.md
deleted file mode 100644
index 08fbb6e..0000000
--- a/docs/demo/trips/no-photos-demo/stories.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Stories
-template: default
-routable: false
-visible: false
-content:
- items: '@self.children'
- order:
- by: date
- dir: desc
- filter:
- published: true
----
diff --git a/docs/demo/trips/no-photos-demo/trip.md b/docs/demo/trips/no-photos-demo/trip.md
deleted file mode 100644
index a0f02c8..0000000
--- a/docs/demo/trips/no-photos-demo/trip.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: 'Notes from the Road 2027'
-template: trip
-date: '2027-01-10'
-date_start: '2027-01-10'
-date_end: '2027-01-14'
-cover_image: ''
-tagline: 'A text-only journal, written before the photos catch up'
----
-
-A short winter trip recorded in words only — no camera this time, just a
-notebook and whatever the road turned up. The entries stand on their own until
-the film comes back from the lab, so this one is a deliberate test of how the
-trip page reads with nothing but text to show.
diff --git a/themes/intotheeast/templates/macros/cover.html.twig b/themes/intotheeast/templates/macros/cover.html.twig
index 8b7b3e3..7da1d74 100644
--- a/themes/intotheeast/templates/macros/cover.html.twig
+++ b/themes/intotheeast/templates/macros/cover.html.twig
@@ -20,8 +20,17 @@
wrapper + retina when a cover exists, and nothing at all when none
does (which gives R9/AE4 a clean text-only header for free).
- Retina (R6 / R14): two explicit cropResize derivatives (1x at w×h, 2x at
- 2w×2h) as an explicit `srcset` with w-descriptors; `alt` is the trip title.
+ Rendering (R6 / R14): cropZoom crops-to-fill (cover), so the 1x derivative is
+ an actual w×h strip matching the banner/card aspect — NOT cropResize, which
+ fits-inside and would hand a portrait source back as a narrow sliver that the
+ wrapper's object-fit:cover then upscales into a blur. `alt` is the trip title.
+
+ Retina, all-or-nothing: a 2x derivative (2w×2h) is added to the `srcset` only
+ when the source is genuinely wide enough to supply it without upscaling
+ (`cover.width >= 2w`); otherwise the srcset is 1x only — no blurry, re-encoded
+ upscale, and no odd intermediate widths. Note most imported phone photos are
+ ≤1440px wide, so an auto-picked fallback cover is usually 1x-only; the 2x
+ kicks in mainly for an explicitly-set wide landscape `cover_image`.
#}
{% macro render(trip_page, alt, w, h, wrapper_class, sizes) %}
{%- set cover = null -%}
@@ -38,8 +47,8 @@
{%- endif -%}
{%- if cover -%}