// ---- Live personalized journal cover -------------------------------- // Square hardcover. A giant J-mark sits cropped in the background like a // watermark; the personalized title sits over it. A chosen theme defines // the background colour, the watermark tone and the text colour. function JournalCover({ data, flat = false, scale = 1 }) { const name = (data.name || "").trim(); const themes = window.COVER_THEMES || []; const theme = themes.find(t => t.id === (data.theme || "creme")) || themes[0]; const et = window.formatDateDE(data.et); const year = window.yearFromDate(data.et); // muted ink for sub-text, derived from whether the theme text is light or dark const ink = theme.light ? "rgba(255,247,229," : "rgba(58,7,0,"; return (