// Fonts: Cinzel, EB Garamond (Google Fonts) // Available at typst.app; for local CLI install both fonts on your system. // ─── Palette ───────────────────────────────────────────────────────────────── #let parchment = rgb("#F2E8CB") #let ink = rgb("#1E0F06") #let ink-muted = rgb("#6B4226") #let nigredo-col = rgb("#3D3228") #let albedo-col = rgb("#9B9B8E") #let citrinitas-col = rgb("#B8860B") #let rubedo-col = rgb("#962B1A") // ─── Phase section header ───────────────────────────────────────────────────── // name: phase name in caps, subtitle: English subtitle, col: phase colour, // mode: italic descriptor line, body: section content #let phase(name, subtitle, col, mode, body) = { v(1.6em) block(breakable: false)[ #text(font: "Cinzel", size: 13pt, fill: col, weight: "bold")[#name] #text(font: "Cinzel", size: 13pt, fill: col)[ — #subtitle] #v(3pt) #line(length: 100%, stroke: 0.5pt + col) #v(5pt) #text(style: "italic", fill: ink-muted, size: 10.5pt)[#mode] ] v(0.7em) body } // ─── Failure-mode callout ───────────────────────────────────────────────────── #let skip(body) = pad(left: 2em, top: 0.15em, bottom: 0.55em)[ #text(style: "italic", fill: ink-muted, size: 10.5pt)[#body] ] // ─── Symbol renderer (alchemical + geometric Unicode blocks) ───────────────── #let sym(it) = text( font: ("Noto Sans Symbols 2", "Symbola", "Apple Symbols", "Segoe UI Symbol"), it, ) // ─── Document wrapper ───────────────────────────────────────────────────────── #let adoc(title: "", author: "", date: "", tagline: none, body) = { set page( paper: "a4", fill: parchment, margin: (top: 28mm, bottom: 30mm, left: 36mm, right: 24mm), numbering: "i", number-align: center, ) set text( font: "EB Garamond", size: 11pt, fill: ink, lang: "en", ) set par( leading: 0.75em, justify: true, ) show heading.where(level: 1): it => { v(2em, weak: true) block(sticky: true)[ #text(font: "Cinzel", size: 15pt, fill: ink, weight: "bold")[#it.body] #v(4pt) #line(length: 100%, stroke: 0.4pt + citrinitas-col) #v(0.7em) ] } show heading.where(level: 2): it => { v(1.4em, weak: true) text(font: "Cinzel", size: 11pt, fill: ink, tracking: 0.04em)[#it.body] v(0.5em, weak: true) } // ── Title block ── v(3em) align(center)[ #text(font: "Cinzel", size: 24pt, fill: ink, weight: "bold")[#title] ] v(9pt) if tagline != none { align(center)[#tagline] v(9pt) } if author != "" or date != "" { let sig = if author != "" and date != "" { author + " · " + date } else if author != "" { author } else { date } pad(right: 2em)[ #align(right)[ #text(font: "EB Garamond", size: 9pt, fill: ink-muted, style: "italic")[#sig] ] ] } v(2.5em) body }