+
+${escPre(meta.title)}
+${escPre(meta.desc)}
+${noscriptOf(meta.title, screen)}
+recorded ${meta.recorded}real ${meta.real_s} sshown ${meta.shown_s} sexit codes ${meta.exit_codes.join(' ')}
+${meta.commands.map((c) => `$ ${esc(c)}`).join('\n')}
+Staged: the prompt and the typing. Real: every byte the commands printed, at the time they printed it. Any silence longer than 2 s is shown for 2 s, and the title bar says so while it happens. ${edited} No GIF: this recording has none.
+
+
+
+
+
+`
+}
+
+// ------------------------------------------------------------------ the card
+
+export function cardHtml(meta, screen) {
+ const fonts = pathToFileURL(join(PUBLIC, 'fonts')).href
+ const logo = pathToFileURL(join(PUBLIC, 'favicon.svg')).href
+ const rows = screen.runs().slice(-CARD.rows)
+ const body = rows.map((runs) => `