{
  "generated": "2026-10-07T19:23:02.085Z",
  "base": "https://media.trainmap.app",
  "about": "Images and videos for trainmap.app social posts. Not indexed by search engines. Each file has a .json sidecar with the same fields as its entry here.",
  "layout": {
    "videos/<series>/": "clips; file name <id>_<width>x<height>_<seconds>s.mp4, cover <id>_cover_<w>x<h>.jpg",
    "images/route-maps/<route>/": "landscape route maps (the route pages' link previews), ready to post",
    "images/route-posters/<route>/": "portrait posters from the collection; hold until printing opens",
    "images/brand/": "profile pictures and banners"
  },
  "statuses": {
    "ready": "Approved by the owner. OK to post.",
    "awaiting-approval": "Not approved by the owner yet. Do not post.",
    "hold-until-printing": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
    "on-hold": "Paused by the owner. Do not post."
  },
  "rules": [
    "Prints are not for sale yet: post the map versions; never say or imply posters can be bought.",
    "Never put \"Orient Express\" text on screen or in captions of clips.",
    "Use only the captions in post_captions or write plain ones; no AI-style slogans."
  ],
  "counts": {
    "ready": 0,
    "awaiting-approval": 17,
    "hold-until-printing": 13,
    "on-hold": 6
  },
  "assets": [
    {
      "id": "night-trains-map",
      "kind": "video",
      "url": "https://media.trainmap.app/videos/night-trains/night-trains-map_1080x1920_18s.mp4",
      "path": "videos/night-trains/night-trains-map_1080x1920_18s.mp4",
      "series": "night-trains",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "How many night trains does Europe run this year? (map version)",
      "summary": "Over a night map of Europe, 162 night-train lines light up one after another, longest first and faster and faster, while a counter climbs to 162. After a held beat of near silence, every line dims except the Caledonian Sleeper, and the camera dives onto Britain as the Night map turns into the Live map. The real dawn of 7 Oct 2026 comes up over London and the Highlands, and the film ends on the daylit line with the invitation to draw your night train at trainmap.app.",
      "basemaps": [
        "Night",
        "Live"
      ],
      "routes": [
        "162 European night-train lines (origin–destination pairs) in 2026, from Back-on-Track's Open Night Train Database: scheduled overnight passenger trains with sleeping and/or couchette cars, each pair counted once; Russia and Belarus excluded; Ukraine only where current service is verified (26 Ukrainian lines left out); Türkiye's 10 lines included; seasonal 2026 lines included. 155 drawn end to end, 7 with gaps where Trainmap's rail data has no track (Sicily pairs, the two Łeba pairs, Helsinki – Kolari)",
        "Hero line: London Euston – Fort William (Caledonian Sleeper, via Edinburgh, Crianlarich and Rannoch), the first line lit and the target of the dive"
      ],
      "on_screen_text": [
        {
          "t": "0:00–0:04.8",
          "text": "How many night trains / does Europe run this year?"
        },
        {
          "t": "0:00.4–0:09.8",
          "text": "1 line on our map … 162 lines on our map",
          "note": "counter; reaches '162 lines on our map' at 7.43 s"
        },
        {
          "t": "0:14.3–0:18.0",
          "text": "Draw your night train at / trainmap.app"
        },
        {
          "t": "throughout",
          "text": "map labels from the Night style (country names)",
          "note": "map content, not overlay text"
        }
      ],
      "music": "Synthesised in code by us (sound.py: no samples, no downloads). Room tone, a D minor night drone that resolves to D major at dawn, a glass note per line, a shimmer during the fast build, near silence at 8.3–8.9 s, J-cuts to wheels over rail joints (9.35 s) and a dawn pad with birds (10.6 s). Normalised to −14 LUFS.",
      "post_captions": [],
      "call_to_action": {
        "on_screen": "Draw your night train at trainmap.app",
        "link": "trainmap.app",
        "campaign_links_note": "Platform campaign paths from launch-marketing.md: trainmap.app/x, /ig, /th, /tt, /yt, /rd, /hn, /bs, /pin"
      },
      "cover_shows": "Europe at night with all 162 lines lit, the hook at the top and the counter '162 lines on our map' at the bottom",
      "notes": [
        "Launch version: no poster, and the word 'poster' never appears on screen.",
        "The count of 162 is the owner's decision (2026-10-07). Back-on-Track's own headline figure is 205 regular sleeper lines. The difference is the owner's definition plus 26 unconfirmed Ukrainian lines, with each origin–destination pair counted once. If a caption gives a number, use '162 lines on our map'. Never say 'Europe runs 162 night trains' as a published fact.",
        "The hook says 'this year' (2026). It goes stale in 2027.",
        "The Live sky is the dawn of 7 Oct 2026, 05:22 → 06:40 UTC. No time is shown on screen.",
        "Rule from social-strategy.md: never show 'Orient Express' on screen or in hashtags.",
        "OpenStreetMap credit: the sources don't say whether a credit is visible in this cut. The feed rule asks for OSM credit, so add '© OpenStreetMap contributors' to the caption if it isn't on screen (suggestion, uncertain).",
        "Nobody has listened to the synthesised sound on speakers (not recorded as reviewed by the owner); uncertain."
      ],
      "wiki_sources": [
        "wiki/raw/2026-10-04-launch-six/v-night/README.md",
        "wiki/raw/2026-10-04-launch-six/v-night/treatment.md",
        "wiki/raw/2026-10-04-launch-six/v-night/map/night.mjs",
        "wiki/raw/2026-10-04-launch-six/v-night/map/sound.py",
        "wiki/pages/social-strategy.md",
        "wiki/pages/launch-marketing.md"
      ],
      "loudness_lufs": -14,
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1080,
        "height": 1920,
        "duration_s": 18,
        "fps": 30,
        "audio": true,
        "codec": "h264",
        "size_mb": 11.2,
        "aspect": "9:16",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/videos/night-trains/night-trains-map_1080x1920_18s.mp4.json",
      "source": "marketing/social/trainmap-night-trains-map.mp4",
      "cover": {
        "url": "https://media.trainmap.app/videos/night-trains/night-trains-map_cover_1080x1920.jpg",
        "path": "videos/night-trains/night-trains-map_cover_1080x1920.jpg",
        "width": 1080,
        "height": 1920,
        "source": "marketing/social/trainmap-night-trains-map-cover.jpg"
      }
    },
    {
      "id": "night-trains-poster",
      "kind": "video",
      "url": "https://media.trainmap.app/videos/night-trains/night-trains-poster_1080x1920_18s.mp4",
      "path": "videos/night-trains/night-trains-poster_1080x1920_18s.mp4",
      "series": "night-trains",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "How many night trains does Europe run this year? (poster version)",
      "summary": "Over a night map of Europe, 162 night-train lines light up one after another, longest first and faster and faster, while a counter climbs to 162. After a held beat of near silence, the whole lit network settles into a 50 × 70 poster in the Night poster theme, and its glow cools from light to ink as it prints. The poster reads 'Europe by night train / 162 lines', and the film ends on the invitation to draw your night trains on a poster at trainmap.app.",
      "basemaps": [
        "Night"
      ],
      "routes": [
        "162 European night-train lines (origin–destination pairs) in 2026, from Back-on-Track's Open Night Train Database: scheduled overnight passenger trains with sleeping and/or couchette cars, each pair counted once; Russia and Belarus excluded; Ukraine only where current service is verified (26 Ukrainian lines left out); Türkiye's 10 lines included; seasonal 2026 lines included. 155 drawn end to end, 7 with gaps where Trainmap's rail data has no track"
      ],
      "on_screen_text": [
        {
          "t": "0:00–0:04.8",
          "text": "How many night trains / does Europe run this year?"
        },
        {
          "t": "0:00.4–~0:09",
          "text": "1 line on our map … 162 lines on our map",
          "note": "counter; reaches '162 lines on our map' at 7.43 s. When it leaves in this cut isn't documented (uncertain)"
        },
        {
          "t": "0:11.1",
          "text": "Europe by night train / 162 lines",
          "note": "the poster's own lettering (Gallery layout, Night theme); no year on the poster"
        },
        {
          "t": "0:11.1",
          "text": "© OpenStreetMap contributors · trainmap.app",
          "note": "the poster's credit line, small print"
        },
        {
          "t": "0:12.6–0:17.5",
          "text": "Draw your night trains on a poster / trainmap.app"
        }
      ],
      "music": "Synthesised in code by us (sound.py: no samples, no downloads). Room tone, a D minor drone, a glass note per line, a shimmer during the build, near silence at 8.3–9.0 s, a J-cut to paper at 8.9 s, and D major resolving as the poster prints. Measured at −13.8 LUFS after the poster re-render.",
      "post_captions": [],
      "call_to_action": {
        "on_screen": "Draw your night trains on a poster / trainmap.app",
        "link": "trainmap.app",
        "campaign_links_note": "Platform campaign paths from launch-marketing.md: trainmap.app/x, /ig, /th, /tt, /yt, /rd, /hn, /bs, /pin"
      },
      "cover_shows": "Europe at night with all 162 lines lit, the hook at the top and the counter '162 lines on our map' at the bottom",
      "notes": [
        "Hold until printing opens: posters weren't available at the start of v2. Don't post this at launch.",
        "Prints aren't for sale yet (owner, 2026-10-07). Copy must not promise that printing will open, and must not give prices, delivery times or a printing date.",
        "The count of 162 stands (owner, 2026-10-07). Use '162 lines on our map', not a published-fact claim. Back-on-Track counts 205.",
        "The hook says 'this year' (2026). It goes stale in 2027.",
        "This is the v3 cut: Mercator projection throughout, no dive and no Live dawn. The older v2 notes describe a dive to London – Fort William, a Relief poster and 'Turn your night train into a poster', but that is not this file.",
        "Rule: never show 'Orient Express' on screen or in hashtags.",
        "Nobody has listened to the synthesised sound on speakers (not recorded as reviewed); uncertain."
      ],
      "wiki_sources": [
        "wiki/raw/2026-10-04-launch-six/v-night/README.md",
        "wiki/raw/2026-10-04-launch-six/v-night/treatment.md",
        "wiki/raw/2026-10-04-launch-six/v-night/night.mjs",
        "wiki/raw/2026-10-04-launch-six/v-night/sound.py",
        "wiki/pages/social-strategy.md",
        "wiki/pages/posters.md",
        "wiki/log.md"
      ],
      "loudness_lufs": -13.8,
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 1080,
        "height": 1920,
        "duration_s": 17.5,
        "fps": 30,
        "audio": true,
        "codec": "h264",
        "size_mb": 10.2,
        "aspect": "9:16",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/videos/night-trains/night-trains-poster_1080x1920_18s.mp4.json",
      "source": "marketing/social/trainmap-night-trains-poster.mp4",
      "cover": {
        "url": "https://media.trainmap.app/videos/night-trains/night-trains-poster_cover_1080x1920.jpg",
        "path": "videos/night-trains/night-trains-poster_cover_1080x1920.jpg",
        "width": 1080,
        "height": 1920,
        "source": "marketing/social/trainmap-night-trains-poster-cover.jpg"
      }
    },
    {
      "id": "off-the-press-map",
      "kind": "video",
      "url": "https://media.trainmap.app/videos/off-the-press/off-the-press-map_1080x1920_18s.mp4",
      "path": "videos/off-the-press/off-the-press-map_1080x1920_18s.mp4",
      "series": "off-the-press",
      "variant": "map",
      "status": "on-hold",
      "title": "London to Edinburgh, in four colours: the map built from its layers (map version)",
      "summary": "On a plain cream ground, the four colour layers of a London–Edinburgh map in the LMS 1925 look (water, land, the black names and coastline, then the red route) slide in out of register and lock into place one after another, each with a small jolt. The red route hangs out over the North Sea in near silence before it locks onto the tracks at 9 s. The four layers fan apart once and lock together again, then 'Draw a train trip, free / trainmap.app' appears.",
      "basemaps": [
        "LMS 1925"
      ],
      "routes": [
        "London Kings Cross to Edinburgh Waverley (East Coast Main Line), drawn in the LMS 1925 look; distance not shown on screen"
      ],
      "on_screen_text": [
        {
          "t": "0:00–~0:04.55",
          "text": "London to Edinburgh, / in four colours",
          "note": "already half in on frame 0"
        },
        {
          "t": "throughout",
          "text": "© OpenStreetMap contributors · trainmap.app",
          "note": "the map's credit line, under the map"
        },
        {
          "t": "from ~0:05.4",
          "text": "map labels in the LMS 1925 look (place names such as LEEDS, MANCHESTER, BIRMINGHAM)",
          "note": "map content"
        },
        {
          "t": "0:13.2–0:18.0",
          "text": "Draw a train trip, free"
        },
        {
          "t": "0:13.8–0:18.0",
          "text": "trainmap.app"
        }
      ],
      "music": "Synthesised in code by us (sound.py: no samples, no downloads). A quiet print-room tone, foley for every move (whooshes, a latch click over a soft thud at each lock) and music at 100 BPM in D that adds one layer per colour (pad, bass, mallet ticks). The music cuts at 7.8 s into near silence, a ratchet J-cut comes in from 8.58 s, and everything returns with a bell at the 9.0 s lock. Normalised to −14 LUFS.",
      "post_captions": [],
      "call_to_action": {
        "on_screen": "Draw a train trip, free / trainmap.app",
        "link": "trainmap.app"
      },
      "cover_shows": null,
      "notes": [
        "ON HOLD (owner, 2026-10-07): Off the press is on hold, both versions. Do not post.",
        "Map version: no press, stone, sheet, registration marks, title or trim, and no 'print' or 'poster' on screen.",
        "The East Coast line is drawn in the LMS 1925 look, although the LMS ran the West Coast line. Nothing on screen says LMS.",
        "At this zoom the red line crosses the LEEDS, MANCHESTER and BIRMINGHAM labels, as the app draws it.",
        "Weak points noted by the maker: frame 0 is pale; 12.6–13.2 s has nothing new on screen; the fan's coloured fringes (11.5–11.9 s) could read as a glitch.",
        "Nobody has listened to the sound on speakers. The README says: 'Please listen before posting.'"
      ],
      "wiki_sources": [
        "wiki/raw/2026-10-04-launch-six/v-press/README.md",
        "wiki/raw/2026-10-04-launch-six/v-press/treatment.md",
        "wiki/raw/2026-10-04-launch-six/v-press/assets.mjs",
        "wiki/raw/2026-10-04-launch-six/v-press/press.py",
        "wiki/raw/2026-10-04-launch-six/v-press/timeline-map.json",
        "wiki/raw/2026-10-04-launch-six/v-press/sync-map.txt",
        "wiki/raw/2026-10-04-launch-six/v-press/verify-map.txt",
        "wiki/pages/social-strategy.md"
      ],
      "loudness_lufs": -14,
      "status_note": "Paused by the owner. Do not post.",
      "file": {
        "width": 1080,
        "height": 1920,
        "duration_s": 18,
        "fps": 30,
        "audio": true,
        "codec": "h264",
        "size_mb": 7.5,
        "aspect": "9:16",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/videos/off-the-press/off-the-press-map_1080x1920_18s.mp4.json",
      "source": "marketing/social/trainmap-off-the-press-map.mp4",
      "cover": {
        "url": "https://media.trainmap.app/videos/off-the-press/off-the-press-map_cover_1080x1920.jpg",
        "path": "videos/off-the-press/off-the-press-map_cover_1080x1920.jpg",
        "width": 1080,
        "height": 1920,
        "source": "marketing/social/trainmap-off-the-press-map-cover.jpg"
      }
    },
    {
      "id": "off-the-press-poster",
      "kind": "video",
      "url": "https://media.trainmap.app/videos/off-the-press/off-the-press-poster_1080x1920_18s.mp4",
      "path": "videos/off-the-press/off-the-press-poster_1080x1920_18s.mp4",
      "series": "off-the-press",
      "variant": "poster",
      "status": "on-hold",
      "title": "Off the press: a London–Edinburgh LMS 1925 poster printed plate by plate (poster version)",
      "summary": "A blank sheet drops onto a litho stone, and four colour films (water, land, the black key with names and the poster title, then the red route) hover out of register and snap into place with a press thump. The red route plate hangs over the North Sea in near silence before it lands on the tracks at 9 s. The sheet is trimmed so the margin and its registration marks fall away, the poster lifts off the stone, and 'Draw a train trip and make it a poster / trainmap.app' appears.",
      "basemaps": [
        "LMS 1925"
      ],
      "routes": [
        "London Kings Cross to Edinburgh Waverley (East Coast Main Line), drawn in the LMS 1925 look; distance not shown on screen"
      ],
      "on_screen_text": [
        {
          "t": "0:00–~0:04.55",
          "text": "London to Edinburgh, / in four colours",
          "note": "already half in on frame 0"
        },
        {
          "t": "0:05.4–0:18.0",
          "text": "LONDON – EDINBURGH",
          "note": "the poster's own title, printed with the black plate (Jost Bold capitals)"
        },
        {
          "t": "from 0:05.4",
          "text": "poster fine print: © OpenStreetMap contributors · trainmap.app, plus the ticket signature",
          "note": "printed as on a real poster"
        },
        {
          "t": "0:13.2–0:18.0",
          "text": "Draw a train trip and / make it a poster"
        },
        {
          "t": "0:13.8–0:18.0",
          "text": "trainmap.app"
        }
      ],
      "music": "Synthesised in code by us (sound.py: no samples, no downloads). Print-room tone, foley (paper slide and tap, an inking-roller hiss before each film, a press thump per impression, a lever ratchet, the trimming blade, offcut flutter) and 100 BPM music in D, one layer per plate. The music cuts at 7.8 s and comes back at 9.0 s with a bell. Normalised to −14 LUFS.",
      "post_captions": [],
      "call_to_action": {
        "on_screen": "Draw a train trip and make it a poster / trainmap.app",
        "link": "trainmap.app"
      },
      "cover_shows": null,
      "notes": [
        "ON HOLD (owner, 2026-10-07): Off the press is on hold, both versions. Do not post. It is also a poster version, so it would wait for printing anyway.",
        "The film shows lithography, but Trainmap prints won't be lithographs. The copy never says they are, but the picture implies a press (owner to judge).",
        "Prints aren't for sale yet (owner, 2026-10-07). Copy must not promise that printing will open.",
        "LMS 1925 look on the East Coast line, although the LMS ran the West Coast. 'LMS' is never shown on screen.",
        "The stone texture is procedural and can read as marble.",
        "Nobody has listened to the sound on speakers ('Please listen before posting')."
      ],
      "wiki_sources": [
        "wiki/raw/2026-10-04-launch-six/v-press/README.md",
        "wiki/raw/2026-10-04-launch-six/v-press/treatment.md",
        "wiki/raw/2026-10-04-launch-six/v-press/assets.mjs",
        "wiki/raw/2026-10-04-launch-six/v-press/timeline-poster.json",
        "wiki/raw/2026-10-04-launch-six/v-press/sync-poster.txt",
        "wiki/raw/2026-10-04-launch-six/v-press/verify-poster.txt",
        "wiki/pages/social-strategy.md",
        "wiki/pages/posters.md"
      ],
      "loudness_lufs": -14,
      "status_note": "Paused by the owner. Do not post.",
      "file": {
        "width": 1080,
        "height": 1920,
        "duration_s": 18,
        "fps": 30,
        "audio": true,
        "codec": "h264",
        "size_mb": 7.5,
        "aspect": "9:16",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/videos/off-the-press/off-the-press-poster_1080x1920_18s.mp4.json",
      "source": "marketing/social/trainmap-off-the-press-poster.mp4",
      "cover": {
        "url": "https://media.trainmap.app/videos/off-the-press/off-the-press-poster_cover_1080x1920.jpg",
        "path": "videos/off-the-press/off-the-press-poster_cover_1080x1920.jpg",
        "width": 1080,
        "height": 1920,
        "source": "marketing/social/trainmap-off-the-press-poster-cover.jpg"
      }
    },
    {
      "id": "one-line-map",
      "kind": "video",
      "url": "https://media.trainmap.app/videos/one-line/one-line-map_1080x1920_15s.mp4",
      "path": "videos/one-line/one-line-map_1080x1920_15s.mp4",
      "series": "one-line",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "London to Edinburgh by train: one line that never cuts (map version)",
      "summary": "A claret dot over London opens like an iris onto the Atlas map, and the line draws north from London to Edinburgh on the real tracks as the camera follows, then rests at Edinburgh. The map drops out of the frame, and the line stays in the air and folds into the Trainmap ticket, which floods claret and is punched. The punched-out piece becomes the full stop of 'trainmap.app' under 'Draw a train trip, free'.",
      "basemaps": [
        "Atlas"
      ],
      "routes": [
        "London Kings Cross to Edinburgh Waverley (East Coast Main Line), on Trainmap's baked track; no distance shown in this version"
      ],
      "on_screen_text": [
        {
          "t": "0:00–~0:04.1",
          "text": "London to Edinburgh / by train",
          "note": "hook; slides out from 3.75 s"
        },
        {
          "t": "0:00–0:08.4",
          "text": "London, York, Newcastle, Edinburgh",
          "note": "map labels; London from frame 0, the others as the line passes"
        },
        {
          "t": "~0:09–0:10.65",
          "text": "Trainmap",
          "note": "the wordmark on the ticket (brand logo), uncertain whether readable"
        },
        {
          "t": "0:11.82–0:14.9",
          "text": "trainmap.app",
          "note": "the letters appear outward from the full stop"
        },
        {
          "t": "0:12.05–0:14.9",
          "text": "Draw a train trip, free",
          "note": "above trainmap.app"
        }
      ],
      "music": "Synthesised in code by us (score.py: no samples). A 92 BPM felt-piano arpeggio in F major with FM bells and pen-on-paper foley that follows the pen's speed, near silence at Edinburgh, a short groove from 0.35 s before the map drops (J-cut), the punch's ratchet and click, and a final chord. Normalised to −14.0 LUFS, true peak −1.1 dBFS.",
      "post_captions": [],
      "call_to_action": {
        "on_screen": "Draw a train trip, free / trainmap.app",
        "link": "trainmap.app",
        "campaign_links_note": "Platform campaign paths from launch-marketing.md: trainmap.app/x, /ig, /th, /tt, /yt, /rd, /hn, /bs, /pin"
      },
      "cover_shows": "Atlas map of England with the claret line drawing north from London; hook 'London to Edinburgh / by train' at the top",
      "notes": [
        "Launch version: no poster, and the word 'poster' never appears on screen.",
        "Hook is exactly 'London to Edinburgh by train' (owner). The old hook 'Straight lines are for aeroplanes' was dropped as too clichéd. social-strategy.md still quotes the old hook.",
        "If a caption gives a distance, use 632 km (393 miles), the owner's accurate figure (2026-10-07). Older notes say 629 km, which is out of date.",
        "The line stays claret (owner confirmed). In the editor, Atlas draws routes in #d6203a by default.",
        "Rule: never show 'Orient Express' on screen or in hashtags.",
        "The maker's notes say the music is a plain synthesised felt piano, bells and brushes, and nobody has listened to it. Not recorded as reviewed by the owner."
      ],
      "wiki_sources": [
        "wiki/raw/2026-10-04-launch-six/v-line/README.md",
        "wiki/raw/2026-10-04-launch-six/v-line/treatment.md",
        "wiki/raw/2026-10-04-launch-six/v-line/scene.js",
        "wiki/raw/2026-10-04-launch-six/v-line/score.py",
        "wiki/raw/2026-10-04-launch-six/v-line/make.sh",
        "wiki/pages/social-strategy.md"
      ],
      "loudness_lufs": -14,
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1080,
        "height": 1920,
        "duration_s": 14.9,
        "fps": 30,
        "audio": true,
        "codec": "h264",
        "size_mb": 3.8,
        "aspect": "9:16",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/videos/one-line/one-line-map_1080x1920_15s.mp4.json",
      "source": "marketing/social/trainmap-one-line-map.mp4",
      "cover": {
        "url": "https://media.trainmap.app/videos/one-line/one-line-map_cover_1080x1920.jpg",
        "path": "videos/one-line/one-line-map_cover_1080x1920.jpg",
        "width": 1080,
        "height": 1920,
        "source": "marketing/social/trainmap-one-line-map-cover.jpg"
      }
    },
    {
      "id": "one-line-poster",
      "kind": "video",
      "url": "https://media.trainmap.app/videos/one-line/one-line-poster_1080x1920_22s.mp4",
      "path": "videos/one-line/one-line-poster_1080x1920_22s.mp4",
      "series": "one-line",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "London to Edinburgh by train: one line that never cuts (poster version)",
      "summary": "A claret dot over London opens onto the Atlas map, and the line draws north to Edinburgh on the real tracks. The pen then runs round the poster's map window and cuts it out, and the cut line swells into the edge of a 50 × 70 sheet on the wall, where the poster's lettering sets. The sheet drops away and the line folds into the Trainmap ticket, which is punched, and the punched-out piece becomes the full stop of 'trainmap.app' under 'Draw a train trip, free'.",
      "basemaps": [
        "Atlas"
      ],
      "routes": [
        "London Kings Cross to Edinburgh Waverley (East Coast Main Line), on Trainmap's baked track; 632 km as printed on the poster"
      ],
      "on_screen_text": [
        {
          "t": "0:00–~0:04.1",
          "text": "London to Edinburgh / by train",
          "note": "hook; slides out from 3.75 s"
        },
        {
          "t": "0:00–0:08.4",
          "text": "London, York, Newcastle, Edinburgh",
          "note": "map labels as the line passes"
        },
        {
          "t": "0:10.95–0:14.85",
          "text": "London to Edinburgh / London · Edinburgh / 632 KM",
          "note": "the poster's own lettering (Gallery layout, Atlas theme); no year"
        },
        {
          "t": "~0:16.2–0:17.8",
          "text": "Trainmap",
          "note": "the wordmark on the claret ticket (brand logo)"
        },
        {
          "t": "0:18.62–0:21.7",
          "text": "trainmap.app"
        },
        {
          "t": "0:18.85–0:21.7",
          "text": "Draw a train trip, free",
          "note": "above trainmap.app"
        }
      ],
      "music": "Synthesised in code by us (score.py: no samples). A 92 BPM felt-piano arpeggio in F major with pen foley, two near silences (7.8 s and 17.5 s), a J-cut into the poster's groove 0.4 s before the loop closes, foley on every change (snip, paper, type taps, card snap, punch) and a final F major add9 chord. Normalised to −14.1 LUFS, true peak −2.6 dBFS.",
      "post_captions": [],
      "call_to_action": {
        "on_screen": "Draw a train trip, free / trainmap.app",
        "link": "trainmap.app"
      },
      "cover_shows": "a 50 × 70 Atlas poster of London to Edinburgh on the wall (title 'London to Edinburgh', 'London · Edinburgh', '632 KM')",
      "notes": [
        "Hold until printing opens. Don't post at launch.",
        "Prints aren't for sale yet (owner, 2026-10-07). Copy must not promise that printing will open, and must not give prices or delivery times.",
        "The poster meta reads '632 KM', with no year (owner). Older notes give '629 KM · 2026', which is superseded. The cover shows 632 KM.",
        "The line stays claret (owner confirmed), so a customer would get this route colour only by picking it. The editor's Atlas default is #d6203a.",
        "Weak points noted by the maker: the claret cut line round the map window (8.4–10.6 s) could read as a border, and the fold briefly passes through a loop shape.",
        "Rule: never show 'Orient Express' on screen or in hashtags.",
        "Nobody has listened to the music (maker's note)."
      ],
      "wiki_sources": [
        "wiki/raw/2026-10-04-launch-six/v-line/README.md",
        "wiki/raw/2026-10-04-launch-six/v-line/treatment.md",
        "wiki/raw/2026-10-04-launch-six/v-line/scene.js",
        "wiki/raw/2026-10-04-launch-six/v-line/score.py",
        "wiki/pages/social-strategy.md",
        "wiki/pages/brand-identity.md",
        "wiki/pages/posters.md"
      ],
      "loudness_lufs": -14.1,
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 1080,
        "height": 1920,
        "duration_s": 21.7,
        "fps": 30,
        "audio": true,
        "codec": "h264",
        "size_mb": 6.7,
        "aspect": "9:16",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/videos/one-line/one-line-poster_1080x1920_22s.mp4.json",
      "source": "marketing/social/trainmap-one-line-poster.mp4",
      "cover": {
        "url": "https://media.trainmap.app/videos/one-line/one-line-poster_cover_1080x1920.jpg",
        "path": "videos/one-line/one-line-poster_cover_1080x1920.jpg",
        "width": 1080,
        "height": 1920,
        "source": "marketing/social/trainmap-one-line-poster-cover.jpg"
      }
    },
    {
      "id": "promo-2026-map",
      "kind": "video",
      "url": "https://media.trainmap.app/videos/promo/promo-2026-map_1080x1920_17s.mp4",
      "path": "videos/promo/promo-2026-map_1080x1920_17s.mp4",
      "series": "promo",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "Every train you took this year (map version)",
      "summary": "A claret line draws four real 2026 train trips on Trainmap's track: Barcelona → Paris, Paris → Berlin and Berlin → Praha, then Venezia → Wien, while the camera eases back over Europe. The trips hold on the map, then the Trainmap ticket rises in on its own and is punched, and 'Draw yours at / trainmap.app' closes the film.",
      "basemaps": [
        "Clean"
      ],
      "routes": [
        "Barcelona → Paris (1,078 km on our map)",
        "Paris → Berlin (1,166 km)",
        "Berlin → Praha (378 km, cut from Amsterdam–Prague at Berlin Hbf)",
        "Venezia → Wien (625 km)"
      ],
      "on_screen_text": [
        {
          "t": "0:00–~0:05.1",
          "text": "Every train you took / this year",
          "note": "hook in Source Serif 4; out at 4.5–5.1 s"
        },
        {
          "t": "0:00–0:09.65",
          "text": "Barcelona, Paris, Berlin, Praha, Venezia, Wien",
          "note": "station labels as each leg arrives (Paris ~2.85 s, Berlin ~5.85 s, Praha ~7.35 s, Venezia ~7.55 s, Wien ~9.65 s)"
        },
        {
          "t": "~0:11.1–0:12.55",
          "text": "Trainmap",
          "note": "wordmark on the ticket (brand logo); uncertain"
        },
        {
          "t": "0:12.9–0:16.6",
          "text": "Draw yours at / trainmap.app"
        }
      ],
      "music": "None: the file has no audio stream (ffprobe). The README doesn't mention sound. uncertain whether it was meant to be silent.",
      "post_captions": [],
      "call_to_action": {
        "on_screen": "Draw yours at trainmap.app",
        "link": "trainmap.app",
        "campaign_links_note": "Platform campaign paths from launch-marketing.md: trainmap.app/x, /ig, /th, /tt, /yt, /rd, /hn, /bs, /pin"
      },
      "cover_shows": "Clean-palette map of western and central Europe with the claret trips Barcelona → Paris → Berlin → Praha and Venezia → Wien (the Wien label is not visible on the cover)",
      "notes": [
        "Launch version: no poster.",
        "The video is SILENT, with no audio track. On TikTok or Reels, post it silent or add sound in-app. Using platform library music is the posting agent's or owner's choice; nothing in the sources says which.",
        "The map is not a live app render. It is the Clean palette re-drawn in three.js from Trainmap's own z6 vector tiles.",
        "The hook says 'this year' (2026). It goes stale in 2027.",
        "The trips are an example set of four real 2026 trips. The sources don't say whose trips they are, so don't caption them as the owner's own.",
        "Rule: never show 'Orient Express' on screen or in hashtags."
      ],
      "wiki_sources": [
        "wiki/raw/2026-10-04-launch-six/promo-threejs/README.md",
        "wiki/raw/2026-10-04-launch-six/promo-threejs/scene.js",
        "wiki/raw/2026-10-04-launch-six/promo-threejs/render.mjs",
        "wiki/pages/social-strategy.md",
        "wiki/pages/brand-identity.md"
      ],
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1080,
        "height": 1920,
        "duration_s": 16.6,
        "fps": 30,
        "audio": false,
        "codec": "h264",
        "size_mb": 8.9,
        "aspect": "9:16",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/videos/promo/promo-2026-map_1080x1920_17s.mp4.json",
      "source": "marketing/social/trainmap-promo-2026-map.mp4",
      "cover": {
        "url": "https://media.trainmap.app/videos/promo/promo-2026-map_cover_1080x1920.jpg",
        "path": "videos/promo/promo-2026-map_cover_1080x1920.jpg",
        "width": 1080,
        "height": 1920,
        "source": "marketing/social/trainmap-promo-2026-map-cover.jpg"
      }
    },
    {
      "id": "promo-2026-poster",
      "kind": "video",
      "url": "https://media.trainmap.app/videos/promo/promo-2026-poster_1080x1920_22s.mp4",
      "path": "videos/promo/promo-2026-poster_1080x1920_22s.mp4",
      "series": "promo",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "Every train you took this year (poster version)",
      "summary": "A claret line draws four real 2026 train trips on Trainmap's track: Barcelona → Paris → Berlin → Praha, then Venezia → Wien. The frame then closes in around them and a 50 × 70 poster grows round the map on the wall, with the lettering '2026 by train'. The poster's signature ticket grows into a claret ticket that is punched, and the chad drops out of frame, before 'Draw yours at / trainmap.app'.",
      "basemaps": [
        "Clean"
      ],
      "routes": [
        "Barcelona → Paris (1,078 km on our map)",
        "Paris → Berlin (1,166 km)",
        "Berlin → Praha (378 km, cut from Amsterdam–Prague at Berlin Hbf)",
        "Venezia → Wien (625 km)",
        "Total printed on the poster: 3,247 KM"
      ],
      "on_screen_text": [
        {
          "t": "0:00–~0:05.1",
          "text": "Every train you took / this year",
          "note": "hook in Source Serif 4; out at 4.5–5.1 s"
        },
        {
          "t": "0:00–0:09.65",
          "text": "Barcelona, Paris, Berlin, Praha, Venezia, Wien",
          "note": "station labels as each leg arrives"
        },
        {
          "t": "0:12.2–~0:16",
          "text": "2026 by train / Barcelona · Paris · Berlin · Praha · Venezia · Wien / 3,247 KM",
          "note": "the poster's own lettering (Gallery layout)"
        },
        {
          "t": "0:16–0:17.6",
          "text": "Trainmap",
          "note": "wordmark on the claret ticket (brand logo)"
        },
        {
          "t": "0:17.95–0:21.5",
          "text": "Draw yours at / trainmap.app"
        }
      ],
      "music": "None: the file has no audio stream (ffprobe). The README doesn't mention sound. uncertain whether it was meant to be silent.",
      "post_captions": [],
      "call_to_action": {
        "on_screen": "Draw yours at trainmap.app",
        "link": "trainmap.app"
      },
      "cover_shows": "a 50 × 70 Clean-palette poster on the wall titled '2026 by train', with 'Barcelona · Paris · Berlin · Praha · Venezia · Wien', '3,247 KM' and the Trainmap ticket signature",
      "notes": [
        "Hold until printing opens. Don't post at launch.",
        "Prints aren't for sale yet (owner, 2026-10-07). Copy must not promise that printing will open, and must not give prices or delivery times.",
        "The video is SILENT, with no audio track.",
        "The poster title '2026 by train' carries a year. The owner's 'no year on posters' rule (2026-10-06, 'skip 2026') was applied to the editor's small print and the night-trains and one-line posters. Whether it applies to this title isn't recorded, so check with the owner before posting (uncertain).",
        "The cover JPG (6 Oct 10:23) is older than this MP4 (6 Oct 21:02). The cover may come from an earlier render; it looks consistent with the documented poster (uncertain).",
        "The hook says 'this year' (2026).",
        "Rule: never show 'Orient Express' on screen or in hashtags."
      ],
      "wiki_sources": [
        "wiki/raw/2026-10-04-launch-six/promo-threejs/README.md",
        "wiki/raw/2026-10-04-launch-six/promo-threejs/scene.js",
        "wiki/pages/social-strategy.md",
        "wiki/pages/brand-identity.md",
        "wiki/pages/route-lines.md",
        "wiki/pages/posters.md"
      ],
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 1080,
        "height": 1920,
        "duration_s": 21.5,
        "fps": 30,
        "audio": false,
        "codec": "h264",
        "size_mb": 11.1,
        "aspect": "9:16",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/videos/promo/promo-2026-poster_1080x1920_22s.mp4.json",
      "source": "marketing/social/trainmap-promo-2026-poster.mp4",
      "cover": {
        "url": "https://media.trainmap.app/videos/promo/promo-2026-poster_cover_1080x1920.jpg",
        "path": "videos/promo/promo-2026-poster_cover_1080x1920.jpg",
        "width": 1080,
        "height": 1920,
        "source": "marketing/social/trainmap-promo-2026-poster-cover.jpg"
      }
    },
    {
      "id": "styles-2026-map",
      "kind": "video",
      "url": "https://media.trainmap.app/videos/styles-showcase/styles-2026-map_1080x1920_21s.mp4",
      "path": "videos/styles-showcase/styles-2026-map_1080x1920_21s.mp4",
      "series": "styles-showcase",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "12 ways to map Zermatt → St. Moritz (map version)",
      "summary": "The Glacier Express line from Zermatt to St. Moritz, on its real route page, is shown in all twelve Trainmap map styles. The styles cut on the beat at 120 BPM under one continuous camera, with a different reveal at each cut, and a numbered chip names each style. Live runs as a time-lapse of the real dusk on 20 Feb 2026, then the Trainmap ticket rises, is punched, and 'Draw yours at / trainmap.app' closes the film.",
      "basemaps": [
        "Clean",
        "Detailed",
        "Dark",
        "Relief",
        "Atlas",
        "Signal",
        "LMS 1925",
        "Sverige 1931",
        "Rhein 1928",
        "Satellite (February imagery, snow)",
        "Night",
        "Live"
      ],
      "routes": [
        "Zermatt to St. Moritz (the Glacier Express line, via Brig, Andermatt, Chur and Filisur), from its route page; 291 km on Trainmap's route (not shown in this version)"
      ],
      "on_screen_text": [
        {
          "t": "0:00–0:03.3",
          "text": "12 ways to map / Zermatt → St. Moritz",
          "note": "hook; out at beat 6.6"
        },
        {
          "t": "0:00",
          "text": "01 Clean",
          "note": "style chip, top left"
        },
        {
          "t": "0:02.0",
          "text": "02 Detailed"
        },
        {
          "t": "0:03.5",
          "text": "03 Dark"
        },
        {
          "t": "0:04.5",
          "text": "04 Relief"
        },
        {
          "t": "0:05.5",
          "text": "05 Atlas"
        },
        {
          "t": "0:06.5",
          "text": "06 Signal"
        },
        {
          "t": "0:07.5",
          "text": "07 LMS 1925"
        },
        {
          "t": "0:08.0",
          "text": "08 Sverige 1931"
        },
        {
          "t": "0:08.5",
          "text": "09 Rhein 1928"
        },
        {
          "t": "0:09.5",
          "text": "10 Satellite"
        },
        {
          "t": "0:11.0",
          "text": "11 Night"
        },
        {
          "t": "0:12.5–0:15.0",
          "text": "Live 17:12 … Live 18:14",
          "note": "Live chip with a red dot; the clock shows the moment of the time-lapse in CET (20 Feb 2026)"
        },
        {
          "t": "throughout",
          "text": "map labels from each style (Zermatt, Brig, Andermatt, Chur, Filisur, St. Moritz, and others)",
          "note": "map content"
        },
        {
          "t": "~0:15.2–0:16.0",
          "text": "Trainmap",
          "note": "wordmark on the ticket (brand logo); uncertain"
        },
        {
          "t": "0:16.25–0:21.0",
          "text": "Draw yours at / trainmap.app"
        }
      ],
      "music": "Placeholder track written in code by us (music.py, 'ours, no licence needed'): 120 BPM in D major (I–V–vi–IV), four-on-the-floor kick from the first cut, claps on 2 and 4, plucked chord stabs, octave bass, a bell on every style change, then bell and pad in the outro and a click and thump on the ticket punch. Normalised to −14 LUFS. The README says it is 'To be replaced by a real track if the cut is liked.'",
      "post_captions": [],
      "call_to_action": {
        "on_screen": "Draw yours at trainmap.app",
        "link": "trainmap.app",
        "campaign_links_note": "Platform campaign paths from launch-marketing.md: trainmap.app/x, /ig, /th, /tt, /yt, /rd, /hn, /bs, /pin"
      },
      "cover_shows": "the Glacier Express line from Zermatt to St. Moritz on the Satellite style (snowy Alps), chip '10 Satellite'",
      "notes": [
        "Launch version: ends on the punched ticket, with no poster.",
        "The owner called this showcase 'such a boring video' (2026-10-06). The three newer films were made because of that, and no later owner approval of this cut is recorded. Confirm it is wanted before posting (uncertain).",
        "The soundtrack is a placeholder, meant to be replaced by a real track if the cut is liked.",
        "'Glacier Express' does not appear on screen. If a caption names the train, that is referential use; social-strategy.md suggests a no-affiliation note in captions for train brand names.",
        "Historic style names on screen are the public names LMS 1925, Sverige 1931 and Rhein 1928. Don't call them SJ or Rheingold in copy.",
        "The cover JPG (6 Oct 11:03) is older than this MP4 (6 Oct 21:02). The cover may come from the earlier unsuffixed render (uncertain).",
        "launch-marketing.md says '9 map styles'. That is out of date: the release has twelve.",
        "Rule: never show 'Orient Express' on screen or in hashtags."
      ],
      "wiki_sources": [
        "wiki/raw/2026-10-04-launch-six/styles-showcase/README.md",
        "wiki/raw/2026-10-04-launch-six/styles-showcase/showcase.mjs",
        "wiki/raw/2026-10-04-launch-six/styles-showcase/music.py",
        "wiki/pages/social-strategy.md",
        "wiki/pages/basemap-styles.md",
        "wiki/pages/launch-marketing.md"
      ],
      "loudness_lufs": -14,
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1080,
        "height": 1920,
        "duration_s": 21,
        "fps": 30,
        "audio": true,
        "codec": "h264",
        "size_mb": 17,
        "aspect": "9:16",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/videos/styles-showcase/styles-2026-map_1080x1920_21s.mp4.json",
      "source": "marketing/social/trainmap-styles-2026-map.mp4",
      "cover": {
        "url": "https://media.trainmap.app/videos/styles-showcase/styles-2026-map_cover_1080x1920.jpg",
        "path": "videos/styles-showcase/styles-2026-map_cover_1080x1920.jpg",
        "width": 1080,
        "height": 1920,
        "source": "marketing/social/trainmap-styles-2026-map-cover.jpg"
      }
    },
    {
      "id": "styles-2026-poster",
      "kind": "video",
      "url": "https://media.trainmap.app/videos/styles-showcase/styles-2026-poster_1080x1920_21s.mp4",
      "path": "videos/styles-showcase/styles-2026-poster_1080x1920_21s.mp4",
      "series": "styles-showcase",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "12 ways to map Zermatt → St. Moritz (poster version)",
      "summary": "The Glacier Express line from Zermatt to St. Moritz is shown in all twelve Trainmap map styles, cut on the beat at 120 BPM, with a numbered chip naming each style and Live as a time-lapse of the real dusk on 20 Feb 2026. After Live, the map settles into a 50 × 70 poster on the wall in the editor's Gallery layout (dark theme) and the poster's lettering sets. The film ends on 'Turn your trip into a poster / trainmap.app'.",
      "basemaps": [
        "Clean",
        "Detailed",
        "Dark",
        "Relief",
        "Atlas",
        "Signal",
        "LMS 1925",
        "Sverige 1931",
        "Rhein 1928",
        "Satellite (February imagery, snow)",
        "Night",
        "Live"
      ],
      "routes": [
        "Zermatt to St. Moritz (the Glacier Express line, via Brig, Andermatt, Chur and Filisur), from its route page; 291 km as printed on the poster"
      ],
      "on_screen_text": [
        {
          "t": "0:00–0:03.3",
          "text": "12 ways to map / Zermatt → St. Moritz",
          "note": "hook"
        },
        {
          "t": "0:00–0:12.5",
          "text": "01 Clean, 02 Detailed (2.0 s), 03 Dark (3.5), 04 Relief (4.5), 05 Atlas (5.5), 06 Signal (6.5), 07 LMS 1925 (7.5), 08 Sverige 1931 (8.0), 09 Rhein 1928 (8.5), 10 Satellite (9.5), 11 Night (11.0)",
          "note": "style chips, same as the map version"
        },
        {
          "t": "0:12.5–0:15.0",
          "text": "Live 17:12 … Live 18:14",
          "note": "Live chip with the time-lapse clock in CET"
        },
        {
          "t": "throughout",
          "text": "map labels from each style",
          "note": "map content"
        },
        {
          "t": "~0:16.5",
          "text": "Zermatt to St. Moritz / Zermatt · Brig · Andermatt · Chur · Filisur · St. Moritz / 291 KM",
          "note": "the poster's lettering; the meta is set as '291 km' and uppercased by CSS; no year"
        },
        {
          "t": "~0:16.8",
          "text": "Trainmap",
          "note": "the poster's signature ticket"
        },
        {
          "t": "~0:17.5–0:21.0",
          "text": "Turn your trip into a poster / trainmap.app"
        }
      ],
      "music": "The same placeholder track written in code by us (music.py, no licence needed): 120 BPM in D major, kick, claps, plucked stabs, octave bass and a bell on every cut. Normalised to −14 LUFS. To be replaced by a real track if the cut is liked.",
      "post_captions": [],
      "call_to_action": {
        "on_screen": "Turn your trip into a poster / trainmap.app",
        "link": "trainmap.app"
      },
      "cover_shows": "a dark-theme 50 × 70 poster of the Live dusk map, titled 'Zermatt to St. Moritz', with 'Zermatt · Brig · Andermatt · Chur · Filisur · St. Moritz' and '291 KM', and below it 'Turn your trip into a poster / trainmap.app'",
      "notes": [
        "Hold until printing opens. Don't post at launch.",
        "Prints aren't for sale yet (owner, 2026-10-07). Copy must not promise that printing will open.",
        "The poster ending exists only in code (showcase.mjs VARIANT=poster). The README and social-strategy.md describe only the ticket ending, so the text timings for the poster ending come from the code (approximate).",
        "The owner called the styles showcase 'such a boring video' (2026-10-06). Confirm the cut is still wanted.",
        "The soundtrack is a placeholder.",
        "'Glacier Express' is not on screen; brand names in captions are referential use only.",
        "Rule: never show 'Orient Express' on screen or in hashtags."
      ],
      "wiki_sources": [
        "wiki/raw/2026-10-04-launch-six/styles-showcase/README.md",
        "wiki/raw/2026-10-04-launch-six/styles-showcase/showcase.mjs",
        "wiki/raw/2026-10-04-launch-six/styles-showcase/music.py",
        "wiki/pages/social-strategy.md",
        "wiki/pages/posters.md"
      ],
      "loudness_lufs": -14,
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 1080,
        "height": 1920,
        "duration_s": 21,
        "fps": 30,
        "audio": true,
        "codec": "h264",
        "size_mb": 18.7,
        "aspect": "9:16",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/videos/styles-showcase/styles-2026-poster_1080x1920_21s.mp4.json",
      "source": "marketing/social/trainmap-styles-2026-poster.mp4",
      "cover": {
        "url": "https://media.trainmap.app/videos/styles-showcase/styles-2026-poster_cover_1080x1920.jpg",
        "path": "videos/styles-showcase/styles-2026-poster_cover_1080x1920.jpg",
        "width": 1080,
        "height": 1920,
        "source": "marketing/social/trainmap-styles-2026-poster-cover.jpg"
      }
    },
    {
      "id": "glacier-express-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/glacier-express/glacier-express_map_clean_1200x630.jpg",
      "path": "images/route-maps/glacier-express/glacier-express_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "Glacier Express route map",
      "summary": "The Glacier Express line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"Glacier Express Route\", Zermatt → St. Moritz through the Swiss Alps) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "Glacier Express Route",
        "Zermatt – St. Moritz through the Swiss Alps",
        "Trainmap"
      ],
      "alt": "Map of the Glacier Express train route, Zermatt to St. Moritz",
      "routes": [
        {
          "name": "Glacier Express",
          "slug": "glacier-express",
          "description": "Zermatt → St. Moritz through the Swiss Alps",
          "stations": [
            "Zermatt",
            "Brig",
            "Andermatt",
            "Chur",
            "Filisur",
            "St. Moritz"
          ],
          "km": 291,
          "page": "https://trainmap.app/routes/glacier-express"
        }
      ],
      "link": "https://trainmap.app/routes/glacier-express",
      "page_description": "Map of the Glacier Express from Zermatt to St. Moritz via Andermatt, the Oberalp Pass and Chur, with times, fares and the side to sit on.",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0.1,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/glacier-express/glacier-express_map_clean_1200x630.jpg.json",
      "source": "site/og/glacier-express.jpg"
    },
    {
      "id": "glacier-express-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/glacier-express/glacier-express_poster_relief_960x1345.jpg",
      "path": "images/route-posters/glacier-express/glacier-express_poster_relief_960x1345.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "Glacier Express poster",
      "summary": "The Glacier Express as a 50 × 70 cm poster on the Relief map: the line in claret, the title \"Glacier Express\", \"Zermatt → St. Moritz through the Swiss Alps\" and the distance.",
      "basemaps": [
        "Relief"
      ],
      "on_screen_text": [
        "Glacier Express",
        "Zermatt → St. Moritz through the Swiss Alps",
        "291 km"
      ],
      "alt": "Poster of the Glacier Express on the Relief map",
      "routes": [
        {
          "name": "Glacier Express",
          "slug": "glacier-express",
          "description": "Zermatt → St. Moritz through the Swiss Alps",
          "stations": [
            "Zermatt",
            "Brig",
            "Andermatt",
            "Chur",
            "Filisur",
            "St. Moritz"
          ],
          "km": 291,
          "page": "https://trainmap.app/routes/glacier-express"
        }
      ],
      "link": "https://trainmap.app/routes/glacier-express",
      "page_description": "Map of the Glacier Express from Zermatt to St. Moritz via Andermatt, the Oberalp Pass and Chur, with times, fares and the side to sit on.",
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 960,
        "height": 1345,
        "size_mb": 0.2,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/glacier-express/glacier-express_poster_relief_960x1345.jpg.json",
      "source": "site/routes/posters/glacier-express@2x.jpg"
    },
    {
      "id": "bernina-express-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/bernina-express/bernina-express_map_clean_1200x630.jpg",
      "path": "images/route-maps/bernina-express/bernina-express_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "Bernina Express route map",
      "summary": "The Bernina Express line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"Bernina Express Route\", Chur → Tirano via the Albula Line and Bernina Pass) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "Bernina Express Route",
        "Chur – Tirano via the Albula Line and Bernina Pass",
        "Trainmap"
      ],
      "alt": "Map of the Bernina Express train route, Chur to Tirano RhB",
      "routes": [
        {
          "name": "Bernina Express",
          "slug": "bernina-express",
          "description": "Chur → Tirano via the Albula Line and Bernina Pass",
          "stations": [
            "Chur",
            "Filisur",
            "Samedan",
            "Pontresina",
            "Tirano RhB"
          ],
          "km": 148,
          "page": "https://trainmap.app/routes/bernina-express"
        }
      ],
      "link": "https://trainmap.app/routes/bernina-express",
      "page_description": "Map of the Bernina Express from Chur to Tirano over the Albula line and the 2,253 m Bernina Pass, with times, fares, reservations and the side to sit on.",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0.1,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/bernina-express/bernina-express_map_clean_1200x630.jpg.json",
      "source": "site/og/bernina-express.jpg"
    },
    {
      "id": "bernina-express-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/bernina-express/bernina-express_poster_atlas_960x1345.jpg",
      "path": "images/route-posters/bernina-express/bernina-express_poster_atlas_960x1345.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "Bernina Express poster",
      "summary": "The Bernina Express as a 50 × 70 cm poster on the Atlas map: the line in claret, the title \"Bernina Express\", \"Chur → Tirano via the Albula Line and Bernina Pass\" and the distance.",
      "basemaps": [
        "Atlas"
      ],
      "on_screen_text": [
        "Bernina Express",
        "Chur → Tirano via the Albula Line and Bernina Pass",
        "148 km"
      ],
      "alt": "Poster of the Bernina Express on the Atlas map",
      "routes": [
        {
          "name": "Bernina Express",
          "slug": "bernina-express",
          "description": "Chur → Tirano via the Albula Line and Bernina Pass",
          "stations": [
            "Chur",
            "Filisur",
            "Samedan",
            "Pontresina",
            "Tirano RhB"
          ],
          "km": 148,
          "page": "https://trainmap.app/routes/bernina-express"
        }
      ],
      "link": "https://trainmap.app/routes/bernina-express",
      "page_description": "Map of the Bernina Express from Chur to Tirano over the Albula line and the 2,253 m Bernina Pass, with times, fares, reservations and the side to sit on.",
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 960,
        "height": 1345,
        "size_mb": 0.1,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/bernina-express/bernina-express_poster_atlas_960x1345.jpg.json",
      "source": "site/routes/posters/bernina-express@2x.jpg"
    },
    {
      "id": "orient-express-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/orient-express/orient-express_map_clean_1200x630.jpg",
      "path": "images/route-maps/orient-express/orient-express_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "on-hold",
      "title": "Orient Express route map",
      "summary": "The Orient Express line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"Orient Express Route\", Paris → Istanbul across Europe) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "Orient Express Route",
        "Paris – Istanbul across Europe",
        "Trainmap"
      ],
      "alt": "Map of the Orient Express train route, Paris Gare de Lyon to Istanbul",
      "routes": [
        {
          "name": "Orient Express",
          "slug": "orient-express",
          "description": "Paris → Istanbul across Europe",
          "stations": [
            "Paris Gare de Lyon",
            "Stuttgart Hbf",
            "München Hbf",
            "Wien Hbf",
            "Budapest-Keleti",
            "Bucharest",
            "Istanbul"
          ],
          "km": 3175,
          "page": "https://trainmap.app/routes/orient-express"
        }
      ],
      "link": "https://trainmap.app/routes/orient-express",
      "page_description": "Map of the Orient Express from Paris to Istanbul via Munich, Vienna, Budapest and Bucharest, with its history from 1883 to 2009 and its successors today.",
      "notes": [
        "Shows the name \"Orient Express\"; keep it off social posts."
      ],
      "status_note": "Paused by the owner. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0.1,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/orient-express/orient-express_map_clean_1200x630.jpg.json",
      "source": "site/og/orient-express.jpg"
    },
    {
      "id": "orient-express-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/orient-express/orient-express_poster_rhein-1928_960x1345.jpg",
      "path": "images/route-posters/orient-express/orient-express_poster_rhein-1928_960x1345.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "on-hold",
      "title": "Orient Express poster",
      "summary": "The Orient Express as a 50 × 70 cm poster on the Rhein 1928 map: the line in claret, the title \"Orient Express\", \"Paris → Istanbul across Europe\" and the distance.",
      "basemaps": [
        "Rhein 1928"
      ],
      "on_screen_text": [
        "Orient Express",
        "Paris → Istanbul across Europe",
        "3,175 km"
      ],
      "alt": "Poster of the Orient Express on the Rhein 1928 map",
      "routes": [
        {
          "name": "Orient Express",
          "slug": "orient-express",
          "description": "Paris → Istanbul across Europe",
          "stations": [
            "Paris Gare de Lyon",
            "Stuttgart Hbf",
            "München Hbf",
            "Wien Hbf",
            "Budapest-Keleti",
            "Bucharest",
            "Istanbul"
          ],
          "km": 3175,
          "page": "https://trainmap.app/routes/orient-express"
        }
      ],
      "link": "https://trainmap.app/routes/orient-express",
      "page_description": "Map of the Orient Express from Paris to Istanbul via Munich, Vienna, Budapest and Bucharest, with its history from 1883 to 2009 and its successors today.",
      "notes": [
        "Shows the name \"Orient Express\"; keep it off social posts."
      ],
      "status_note": "Paused by the owner. Do not post.",
      "file": {
        "width": 960,
        "height": 1345,
        "size_mb": 0.1,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/orient-express/orient-express_poster_rhein-1928_960x1345.jpg.json",
      "source": "site/routes/posters/orient-express@2x.jpg"
    },
    {
      "id": "bergen-line-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/bergen-line/bergen-line_map_clean_1200x630.jpg",
      "path": "images/route-maps/bergen-line/bergen-line_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "Bergen Line route map",
      "summary": "The Bergen Line line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"Bergen Line Route\", Oslo → Bergen through Norwegian highlands) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "Bergen Line Route",
        "Oslo – Bergen through Norwegian highlands",
        "Trainmap"
      ],
      "alt": "Map of the Bergen Line train route, Oslo S to Bergen stasjon",
      "routes": [
        {
          "name": "Bergen Line",
          "slug": "bergen-line",
          "description": "Oslo → Bergen through Norwegian highlands",
          "stations": [
            "Oslo S",
            "Drammen stasjon",
            "Bergen stasjon"
          ],
          "km": 479,
          "page": "https://trainmap.app/routes/bergen-line"
        }
      ],
      "link": "https://trainmap.app/routes/bergen-line",
      "page_description": "Map of the Bergen Line from Oslo to Bergen across the Hardangervidda plateau, up to 1,237 m near Finse, with times, fares and the side to sit on.",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0.1,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/bergen-line/bergen-line_map_clean_1200x630.jpg.json",
      "source": "site/og/bergen-line.jpg"
    },
    {
      "id": "bergen-line-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/bergen-line/bergen-line_poster_signal_960x1344.jpg",
      "path": "images/route-posters/bergen-line/bergen-line_poster_signal_960x1344.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "Bergen Line poster",
      "summary": "The Bergen Line as a 50 × 70 cm poster on the Signal map: the line in claret, the title \"Bergen Line\", \"Oslo → Bergen through Norwegian highlands\" and the distance.",
      "basemaps": [
        "Signal"
      ],
      "on_screen_text": [
        "Bergen Line",
        "Oslo → Bergen through Norwegian highlands",
        "479 km"
      ],
      "alt": "Poster of the Bergen Line on the Signal map",
      "routes": [
        {
          "name": "Bergen Line",
          "slug": "bergen-line",
          "description": "Oslo → Bergen through Norwegian highlands",
          "stations": [
            "Oslo S",
            "Drammen stasjon",
            "Bergen stasjon"
          ],
          "km": 479,
          "page": "https://trainmap.app/routes/bergen-line"
        }
      ],
      "link": "https://trainmap.app/routes/bergen-line",
      "page_description": "Map of the Bergen Line from Oslo to Bergen across the Hardangervidda plateau, up to 1,237 m near Finse, with times, fares and the side to sit on.",
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 960,
        "height": 1344,
        "size_mb": 0.1,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/bergen-line/bergen-line_poster_signal_960x1344.jpg.json",
      "source": "site/routes/posters/bergen-line@2x.jpg"
    },
    {
      "id": "london-to-edinburgh-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/london-to-edinburgh/london-to-edinburgh_map_clean_1200x630.jpg",
      "path": "images/route-maps/london-to-edinburgh/london-to-edinburgh_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "London to Edinburgh route map",
      "summary": "The London to Edinburgh line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"London to Edinburgh Route\", East Coast Main Line) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "London to Edinburgh Route",
        "East Coast Main Line",
        "Trainmap"
      ],
      "alt": "Map of the London to Edinburgh train route, London Kings Cross to Edinburgh Waverley",
      "routes": [
        {
          "name": "London to Edinburgh",
          "slug": "london-to-edinburgh",
          "description": "East Coast Main Line",
          "stations": [
            "London Kings Cross",
            "Edinburgh Waverley"
          ],
          "km": 632,
          "page": "https://trainmap.app/routes/london-to-edinburgh"
        }
      ],
      "link": "https://trainmap.app/routes/london-to-edinburgh",
      "page_description": "Map of the East Coast Main Line from London King's Cross to Edinburgh Waverley, 4 hours by LNER or Lumo, with fares and the side to sit on for the sea.",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/london-to-edinburgh/london-to-edinburgh_map_clean_1200x630.jpg.json",
      "source": "site/og/london-to-edinburgh.jpg"
    },
    {
      "id": "london-to-edinburgh-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/london-to-edinburgh/london-to-edinburgh_poster_lms-1925_960x1345.jpg",
      "path": "images/route-posters/london-to-edinburgh/london-to-edinburgh_poster_lms-1925_960x1345.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "London to Edinburgh poster",
      "summary": "The London to Edinburgh as a 50 × 70 cm poster on the LMS 1925 map: the line in claret, the title \"London to Edinburgh\", \"East Coast Main Line\" and the distance.",
      "basemaps": [
        "LMS 1925"
      ],
      "on_screen_text": [
        "London to Edinburgh",
        "East Coast Main Line",
        "632 km"
      ],
      "alt": "Poster of the London to Edinburgh on the LMS 1925 map",
      "routes": [
        {
          "name": "London to Edinburgh",
          "slug": "london-to-edinburgh",
          "description": "East Coast Main Line",
          "stations": [
            "London Kings Cross",
            "Edinburgh Waverley"
          ],
          "km": 632,
          "page": "https://trainmap.app/routes/london-to-edinburgh"
        }
      ],
      "link": "https://trainmap.app/routes/london-to-edinburgh",
      "page_description": "Map of the East Coast Main Line from London King's Cross to Edinburgh Waverley, 4 hours by LNER or Lumo, with fares and the side to sit on for the sea.",
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 960,
        "height": 1345,
        "size_mb": 0.1,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/london-to-edinburgh/london-to-edinburgh_poster_lms-1925_960x1345.jpg.json",
      "source": "site/routes/posters/london-to-edinburgh@2x.jpg"
    },
    {
      "id": "paris-to-berlin-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/paris-to-berlin/paris-to-berlin_map_clean_1200x630.jpg",
      "path": "images/route-maps/paris-to-berlin/paris-to-berlin_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "Paris to Berlin route map",
      "summary": "The Paris to Berlin line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"Paris to Berlin Route\", France to Germany by rail) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "Paris to Berlin Route",
        "France to Germany by rail",
        "Trainmap"
      ],
      "alt": "Map of the Paris to Berlin train route, Paris Gare de l’Est to Berlin Hbf",
      "routes": [
        {
          "name": "Paris to Berlin",
          "slug": "paris-to-berlin",
          "description": "France to Germany by rail",
          "stations": [
            "Paris Gare de l’Est",
            "Strasbourg",
            "Kehl",
            "Karlsruhe Hbf",
            "Frankfurt (Main) Süd",
            "Erfurt Hbf",
            "Halle (Saale) Hbf",
            "Berlin Hbf"
          ],
          "km": 1166,
          "page": "https://trainmap.app/routes/paris-to-berlin"
        }
      ],
      "link": "https://trainmap.app/routes/paris-to-berlin",
      "page_description": "Map of the train from Paris to Berlin via Strasbourg, Frankfurt and Erfurt, with the direct ICE (about 7 h 46), the European Sleeper night train and fares.",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0.1,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/paris-to-berlin/paris-to-berlin_map_clean_1200x630.jpg.json",
      "source": "site/og/paris-to-berlin.jpg"
    },
    {
      "id": "paris-to-berlin-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/paris-to-berlin/paris-to-berlin_poster_satellite_960x1345.jpg",
      "path": "images/route-posters/paris-to-berlin/paris-to-berlin_poster_satellite_960x1345.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "Paris to Berlin poster",
      "summary": "The Paris to Berlin as a 50 × 70 cm poster on the Satellite map: the line in claret, the title \"Paris to Berlin\", \"France to Germany by rail\" and the distance.",
      "basemaps": [
        "Satellite"
      ],
      "on_screen_text": [
        "Paris to Berlin",
        "France to Germany by rail",
        "1,166 km"
      ],
      "alt": "Poster of the Paris to Berlin on the Satellite map",
      "routes": [
        {
          "name": "Paris to Berlin",
          "slug": "paris-to-berlin",
          "description": "France to Germany by rail",
          "stations": [
            "Paris Gare de l’Est",
            "Strasbourg",
            "Kehl",
            "Karlsruhe Hbf",
            "Frankfurt (Main) Süd",
            "Erfurt Hbf",
            "Halle (Saale) Hbf",
            "Berlin Hbf"
          ],
          "km": 1166,
          "page": "https://trainmap.app/routes/paris-to-berlin"
        }
      ],
      "link": "https://trainmap.app/routes/paris-to-berlin",
      "page_description": "Map of the train from Paris to Berlin via Strasbourg, Frankfurt and Erfurt, with the direct ICE (about 7 h 46), the European Sleeper night train and fares.",
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 960,
        "height": 1345,
        "size_mb": 0.2,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/paris-to-berlin/paris-to-berlin_poster_satellite_960x1345.jpg.json",
      "source": "site/routes/posters/paris-to-berlin@2x.jpg"
    },
    {
      "id": "amsterdam-to-prague-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/amsterdam-to-prague/amsterdam-to-prague_map_clean_1200x630.jpg",
      "path": "images/route-maps/amsterdam-to-prague/amsterdam-to-prague_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "Amsterdam to Prague route map",
      "summary": "The Amsterdam to Prague line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"Amsterdam to Prague Route\", Netherlands to Czech Republic by rail) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "Amsterdam to Prague Route",
        "Netherlands to Czech Republic by rail",
        "Trainmap"
      ],
      "alt": "Map of the Amsterdam to Prague train route, Amsterdam to Praha hl.n.",
      "routes": [
        {
          "name": "Amsterdam to Prague",
          "slug": "amsterdam-to-prague",
          "description": "Netherlands to Czech Republic by rail",
          "stations": [
            "Amsterdam",
            "Berlin Hbf",
            "Dresden Hbf",
            "Praha hl.n."
          ],
          "km": 1017,
          "page": "https://trainmap.app/routes/amsterdam-to-prague"
        }
      ],
      "link": "https://trainmap.app/routes/amsterdam-to-prague",
      "page_description": "Map of the train from Amsterdam to Prague via Berlin and Dresden, by day with a change in Berlin or overnight on the European Sleeper, with times and fares.",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0.1,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/amsterdam-to-prague/amsterdam-to-prague_map_clean_1200x630.jpg.json",
      "source": "site/og/amsterdam-to-prague.jpg"
    },
    {
      "id": "amsterdam-to-prague-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/amsterdam-to-prague/amsterdam-to-prague_poster_detailed_960x1345.jpg",
      "path": "images/route-posters/amsterdam-to-prague/amsterdam-to-prague_poster_detailed_960x1345.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "Amsterdam to Prague poster",
      "summary": "The Amsterdam to Prague as a 50 × 70 cm poster on the Detailed map: the line in claret, the title \"Amsterdam to Prague\", \"Netherlands to Czech Republic by rail\" and the distance.",
      "basemaps": [
        "Detailed"
      ],
      "on_screen_text": [
        "Amsterdam to Prague",
        "Netherlands to Czech Republic by rail",
        "1,017 km"
      ],
      "alt": "Poster of the Amsterdam to Prague on the Detailed map",
      "routes": [
        {
          "name": "Amsterdam to Prague",
          "slug": "amsterdam-to-prague",
          "description": "Netherlands to Czech Republic by rail",
          "stations": [
            "Amsterdam",
            "Berlin Hbf",
            "Dresden Hbf",
            "Praha hl.n."
          ],
          "km": 1017,
          "page": "https://trainmap.app/routes/amsterdam-to-prague"
        }
      ],
      "link": "https://trainmap.app/routes/amsterdam-to-prague",
      "page_description": "Map of the train from Amsterdam to Prague via Berlin and Dresden, by day with a change in Berlin or overnight on the European Sleeper, with times and fares.",
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 960,
        "height": 1345,
        "size_mb": 0.1,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/amsterdam-to-prague/amsterdam-to-prague_poster_detailed_960x1345.jpg.json",
      "source": "site/routes/posters/amsterdam-to-prague@2x.jpg"
    },
    {
      "id": "barcelona-to-paris-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/barcelona-to-paris/barcelona-to-paris_map_clean_1200x630.jpg",
      "path": "images/route-maps/barcelona-to-paris/barcelona-to-paris_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "Barcelona to Paris route map",
      "summary": "The Barcelona to Paris line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"Barcelona to Paris Route\", Spain to France by high-speed rail) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "Barcelona to Paris Route",
        "Spain to France by high-speed rail",
        "Trainmap"
      ],
      "alt": "Map of the Barcelona to Paris train route, Barcelona Sants to Paris Gare de Lyon",
      "routes": [
        {
          "name": "Barcelona to Paris",
          "slug": "barcelona-to-paris",
          "description": "Spain to France by high-speed rail",
          "stations": [
            "Barcelona Sants",
            "Paris Gare de Lyon"
          ],
          "km": 1078,
          "page": "https://trainmap.app/routes/barcelona-to-paris"
        }
      ],
      "link": "https://trainmap.app/routes/barcelona-to-paris",
      "page_description": "Map of the direct TGV from Barcelona to Paris through the Perthus Tunnel and the Rhône valley, about 6 h 40, with fares and the side to sit on.",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0.1,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/barcelona-to-paris/barcelona-to-paris_map_clean_1200x630.jpg.json",
      "source": "site/og/barcelona-to-paris.jpg"
    },
    {
      "id": "barcelona-to-paris-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/barcelona-to-paris/barcelona-to-paris_poster_sverige-1931_960x1345.jpg",
      "path": "images/route-posters/barcelona-to-paris/barcelona-to-paris_poster_sverige-1931_960x1345.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "Barcelona to Paris poster",
      "summary": "The Barcelona to Paris as a 50 × 70 cm poster on the Sverige 1931 map: the line in claret, the title \"Barcelona to Paris\", \"Spain to France by high-speed rail\" and the distance.",
      "basemaps": [
        "Sverige 1931"
      ],
      "on_screen_text": [
        "Barcelona to Paris",
        "Spain to France by high-speed rail",
        "1,078 km"
      ],
      "alt": "Poster of the Barcelona to Paris on the Sverige 1931 map",
      "routes": [
        {
          "name": "Barcelona to Paris",
          "slug": "barcelona-to-paris",
          "description": "Spain to France by high-speed rail",
          "stations": [
            "Barcelona Sants",
            "Paris Gare de Lyon"
          ],
          "km": 1078,
          "page": "https://trainmap.app/routes/barcelona-to-paris"
        }
      ],
      "link": "https://trainmap.app/routes/barcelona-to-paris",
      "page_description": "Map of the direct TGV from Barcelona to Paris through the Perthus Tunnel and the Rhône valley, about 6 h 40, with fares and the side to sit on.",
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 960,
        "height": 1345,
        "size_mb": 0.1,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/barcelona-to-paris/barcelona-to-paris_poster_sverige-1931_960x1345.jpg.json",
      "source": "site/routes/posters/barcelona-to-paris@2x.jpg"
    },
    {
      "id": "venice-to-vienna-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/venice-to-vienna/venice-to-vienna_map_clean_1200x630.jpg",
      "path": "images/route-maps/venice-to-vienna/venice-to-vienna_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "Venice to Vienna route map",
      "summary": "The Venice to Vienna line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"Venice to Vienna Route\", Italy to Austria through the Alps) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "Venice to Vienna Route",
        "Italy to Austria through the Alps",
        "Trainmap"
      ],
      "alt": "Map of the Venice to Vienna train route, Venezia Santa Lucia to Wien Hbf",
      "routes": [
        {
          "name": "Venice to Vienna",
          "slug": "venice-to-vienna",
          "description": "Italy to Austria through the Alps",
          "stations": [
            "Venezia Santa Lucia",
            "Klagenfurt Hbf",
            "Graz Hbf",
            "Wien Hbf"
          ],
          "km": 625,
          "page": "https://trainmap.app/routes/venice-to-vienna"
        }
      ],
      "link": "https://trainmap.app/routes/venice-to-vienna",
      "page_description": "Map of the direct Railjet from Venice to Vienna over the Semmering Railway, about 7 h 15, with the Nightjet sleeper, fares and the views.",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0.1,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/venice-to-vienna/venice-to-vienna_map_clean_1200x630.jpg.json",
      "source": "site/og/venice-to-vienna.jpg"
    },
    {
      "id": "venice-to-vienna-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/venice-to-vienna/venice-to-vienna_poster_atlas_960x1344.jpg",
      "path": "images/route-posters/venice-to-vienna/venice-to-vienna_poster_atlas_960x1344.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "Venice to Vienna poster",
      "summary": "The Venice to Vienna as a 50 × 70 cm poster on the Atlas map: the line in claret, the title \"Venice to Vienna\", \"Italy to Austria through the Alps\" and the distance.",
      "basemaps": [
        "Atlas"
      ],
      "on_screen_text": [
        "Venice to Vienna",
        "Italy to Austria through the Alps",
        "625 km"
      ],
      "alt": "Poster of the Venice to Vienna on the Atlas map",
      "routes": [
        {
          "name": "Venice to Vienna",
          "slug": "venice-to-vienna",
          "description": "Italy to Austria through the Alps",
          "stations": [
            "Venezia Santa Lucia",
            "Klagenfurt Hbf",
            "Graz Hbf",
            "Wien Hbf"
          ],
          "km": 625,
          "page": "https://trainmap.app/routes/venice-to-vienna"
        }
      ],
      "link": "https://trainmap.app/routes/venice-to-vienna",
      "page_description": "Map of the direct Railjet from Venice to Vienna over the Semmering Railway, about 7 h 15, with the Nightjet sleeper, fares and the views.",
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 960,
        "height": 1344,
        "size_mb": 0.1,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/venice-to-vienna/venice-to-vienna_poster_atlas_960x1344.jpg.json",
      "source": "site/routes/posters/venice-to-vienna@2x.jpg"
    },
    {
      "id": "milan-to-zurich-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/milan-to-zurich/milan-to-zurich_map_clean_1200x630.jpg",
      "path": "images/route-maps/milan-to-zurich/milan-to-zurich_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "awaiting-approval",
      "title": "Milan to Zurich route map",
      "summary": "The Milan to Zurich line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"Milan to Zurich Route\", Italy to Switzerland via the Gotthard) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "Milan to Zurich Route",
        "Italy to Switzerland via the Gotthard",
        "Trainmap"
      ],
      "alt": "Map of the Milan to Zurich train route, Milano Centrale to Zürich HB",
      "routes": [
        {
          "name": "Milan to Zurich",
          "slug": "milan-to-zurich",
          "description": "Italy to Switzerland via the Gotthard",
          "stations": [
            "Milano Centrale",
            "Lugano",
            "Zürich HB"
          ],
          "km": 254,
          "page": "https://trainmap.app/routes/milan-to-zurich"
        }
      ],
      "link": "https://trainmap.app/routes/milan-to-zurich",
      "page_description": "Map of the train from Milan to Zurich past Lake Como and Lake Lugano and through the 57 km Gotthard Base Tunnel, from 3 h 17, with fares.",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0.1,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/milan-to-zurich/milan-to-zurich_map_clean_1200x630.jpg.json",
      "source": "site/og/milan-to-zurich.jpg"
    },
    {
      "id": "milan-to-zurich-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/milan-to-zurich/milan-to-zurich_poster_atlas_960x1345.jpg",
      "path": "images/route-posters/milan-to-zurich/milan-to-zurich_poster_atlas_960x1345.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "hold-until-printing",
      "title": "Milan to Zurich poster",
      "summary": "The Milan to Zurich as a 50 × 70 cm poster on the Atlas map: the line in claret, the title \"Milan to Zurich\", \"Italy to Switzerland via the Gotthard\" and the distance.",
      "basemaps": [
        "Atlas"
      ],
      "on_screen_text": [
        "Milan to Zurich",
        "Italy to Switzerland via the Gotthard",
        "254 km"
      ],
      "alt": "Poster of the Milan to Zurich on the Atlas map",
      "routes": [
        {
          "name": "Milan to Zurich",
          "slug": "milan-to-zurich",
          "description": "Italy to Switzerland via the Gotthard",
          "stations": [
            "Milano Centrale",
            "Lugano",
            "Zürich HB"
          ],
          "km": 254,
          "page": "https://trainmap.app/routes/milan-to-zurich"
        }
      ],
      "link": "https://trainmap.app/routes/milan-to-zurich",
      "page_description": "Map of the train from Milan to Zurich past Lake Como and Lake Lugano and through the 57 km Gotthard Base Tunnel, from 3 h 17, with fares.",
      "status_note": "Shows a printed poster. Do not post until printing opens (prints are not for sale yet).",
      "file": {
        "width": 960,
        "height": 1345,
        "size_mb": 0.1,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/milan-to-zurich/milan-to-zurich_poster_atlas_960x1345.jpg.json",
      "source": "site/routes/posters/milan-to-zurich@2x.jpg"
    },
    {
      "id": "venice-simplon-orient-express-share",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-maps/venice-simplon-orient-express/venice-simplon-orient-express_map_clean_1200x630.jpg",
      "path": "images/route-maps/venice-simplon-orient-express/venice-simplon-orient-express_map_clean_1200x630.jpg",
      "series": "route-maps",
      "variant": "map",
      "status": "on-hold",
      "title": "Venice Simplon-Orient-Express route map",
      "summary": "The Venice Simplon-Orient-Express line drawn in claret on trainmap.app's Clean map, stations marked, with a title panel (\"Venice Simplon-Orient-Express Route\", London → Istanbul via the Simplon Pass) and the Trainmap ticket.",
      "basemaps": [
        "Clean"
      ],
      "on_screen_text": [
        "Venice Simplon-Orient-Express Route",
        "London – Istanbul via the Simplon Pass",
        "Trainmap"
      ],
      "alt": "Map of the Venice Simplon-Orient-Express train route, London St Pancras International to Istanbul",
      "routes": [
        {
          "name": "Venice Simplon-Orient-Express",
          "slug": "venice-simplon-orient-express",
          "description": "London → Istanbul via the Simplon Pass",
          "stations": [
            "London St Pancras International",
            "Paris Gare de Lyon",
            "Lausanne",
            "Brig",
            "Domodossola",
            "Milano Centrale",
            "Venezia Santa Lucia",
            "Ljubljana",
            "Zagreb",
            "Beograd",
            "Sofia",
            "Istanbul"
          ],
          "km": 3443,
          "page": "https://trainmap.app/routes/venice-simplon-orient-express"
        }
      ],
      "link": "https://trainmap.app/routes/venice-simplon-orient-express",
      "page_description": "Map of the Venice Simplon-Orient-Express, Belmond's train of restored 1920s carriages, from London to Istanbul via Paris and Venice, with fares and history.",
      "notes": [
        "Shows the name \"Orient Express\"; keep it off social posts."
      ],
      "status_note": "Paused by the owner. Do not post.",
      "file": {
        "width": 1200,
        "height": 630,
        "size_mb": 0.1,
        "aspect": "1.91:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/route-maps/venice-simplon-orient-express/venice-simplon-orient-express_map_clean_1200x630.jpg.json",
      "source": "site/og/venice-simplon-orient-express.jpg"
    },
    {
      "id": "venice-simplon-orient-express-poster",
      "kind": "image",
      "url": "https://media.trainmap.app/images/route-posters/venice-simplon-orient-express/venice-simplon-orient-express_poster_dark_960x1345.jpg",
      "path": "images/route-posters/venice-simplon-orient-express/venice-simplon-orient-express_poster_dark_960x1345.jpg",
      "series": "route-posters",
      "variant": "poster",
      "status": "on-hold",
      "title": "Venice Simplon-Orient-Express poster",
      "summary": "The Venice Simplon-Orient-Express as a 50 × 70 cm poster on the Dark map: the line in claret, the title \"Venice Simplon-Orient-Express\", \"London → Istanbul via the Simplon Pass\" and the distance.",
      "basemaps": [
        "Dark"
      ],
      "on_screen_text": [
        "Venice Simplon-Orient-Express",
        "London → Istanbul via the Simplon Pass",
        "3,443 km"
      ],
      "alt": "Poster of the Venice Simplon-Orient-Express on the Dark map",
      "routes": [
        {
          "name": "Venice Simplon-Orient-Express",
          "slug": "venice-simplon-orient-express",
          "description": "London → Istanbul via the Simplon Pass",
          "stations": [
            "London St Pancras International",
            "Paris Gare de Lyon",
            "Lausanne",
            "Brig",
            "Domodossola",
            "Milano Centrale",
            "Venezia Santa Lucia",
            "Ljubljana",
            "Zagreb",
            "Beograd",
            "Sofia",
            "Istanbul"
          ],
          "km": 3443,
          "page": "https://trainmap.app/routes/venice-simplon-orient-express"
        }
      ],
      "link": "https://trainmap.app/routes/venice-simplon-orient-express",
      "page_description": "Map of the Venice Simplon-Orient-Express, Belmond's train of restored 1920s carriages, from London to Istanbul via Paris and Venice, with fares and history.",
      "notes": [
        "Shows the name \"Orient Express\"; keep it off social posts."
      ],
      "status_note": "Paused by the owner. Do not post.",
      "file": {
        "width": 960,
        "height": 1345,
        "size_mb": 0.1,
        "aspect": "5:7",
        "orientation": "portrait"
      },
      "metadata_url": "https://media.trainmap.app/images/route-posters/venice-simplon-orient-express/venice-simplon-orient-express_poster_dark_960x1345.jpg.json",
      "source": "site/routes/posters/venice-simplon-orient-express@2x.jpg"
    },
    {
      "id": "avatar-claret",
      "kind": "image",
      "url": "https://media.trainmap.app/images/brand/avatar-claret_1080x1080.png",
      "path": "images/brand/avatar-claret_1080x1080.png",
      "series": "brand",
      "variant": "brand",
      "status": "awaiting-approval",
      "title": "Profile picture: paper ticket mark on claret",
      "summary": "Profile picture: paper ticket mark on claret",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1080,
        "height": 1080,
        "size_mb": 0,
        "aspect": "1:1",
        "orientation": "square"
      },
      "metadata_url": "https://media.trainmap.app/images/brand/avatar-claret_1080x1080.png.json",
      "source": "marketing/social/avatar-claret.png"
    },
    {
      "id": "avatar-paper",
      "kind": "image",
      "url": "https://media.trainmap.app/images/brand/avatar-paper_1080x1080.png",
      "path": "images/brand/avatar-paper_1080x1080.png",
      "series": "brand",
      "variant": "brand",
      "status": "awaiting-approval",
      "title": "Profile picture: claret ticket mark on paper",
      "summary": "Profile picture: claret ticket mark on paper",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1080,
        "height": 1080,
        "size_mb": 0,
        "aspect": "1:1",
        "orientation": "square"
      },
      "metadata_url": "https://media.trainmap.app/images/brand/avatar-paper_1080x1080.png.json",
      "source": "marketing/social/avatar-paper.png"
    },
    {
      "id": "avatar-transparent",
      "kind": "image",
      "url": "https://media.trainmap.app/images/brand/avatar-transparent_1080x1080.png",
      "path": "images/brand/avatar-transparent_1080x1080.png",
      "series": "brand",
      "variant": "brand",
      "status": "awaiting-approval",
      "title": "Profile picture: claret ticket mark, transparent background",
      "summary": "Profile picture: claret ticket mark, transparent background",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 1080,
        "height": 1080,
        "size_mb": 0,
        "aspect": "1:1",
        "orientation": "square"
      },
      "metadata_url": "https://media.trainmap.app/images/brand/avatar-transparent_1080x1080.png.json",
      "source": "marketing/social/avatar-transparent.png"
    },
    {
      "id": "x-banner",
      "kind": "image",
      "url": "https://media.trainmap.app/images/brand/x-banner_3000x1000.jpg",
      "path": "images/brand/x-banner_3000x1000.jpg",
      "series": "brand",
      "variant": "brand",
      "status": "awaiting-approval",
      "title": "X header banner: our map with four classic routes, the ticket wordmark and trainmap.app",
      "summary": "X header banner: our map with four classic routes, the ticket wordmark and trainmap.app",
      "status_note": "Not approved by the owner yet. Do not post.",
      "file": {
        "width": 3000,
        "height": 1000,
        "size_mb": 0.2,
        "aspect": "3:1",
        "orientation": "landscape"
      },
      "metadata_url": "https://media.trainmap.app/images/brand/x-banner_3000x1000.jpg.json",
      "source": "marketing/social/x-banner@2x.jpg"
    }
  ]
}